From 00328965e79b1faa6a9b9c441fb1669ba8f38d12 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 21 Oct 2014 15:04:18 +0200 Subject: [PATCH] Background areas can now be draw in a specific group or spread over the whole Timeline. --- dist/vis.js | 9027 +++++++++-------- dist/vis.map | 2 +- dist/vis.min.js | 24 +- examples/timeline/25_background_areas.html | 11 +- .../31_background_areas_with_groups.html | 56 + examples/timeline/index.html | 1 + index.js | 1 + lib/timeline/component/BackgroundGroup.js | 57 + lib/timeline/component/Group.js | 61 +- lib/timeline/component/ItemSet.js | 78 +- 10 files changed, 4811 insertions(+), 4507 deletions(-) create mode 100644 examples/timeline/31_background_areas_with_groups.html create mode 100644 lib/timeline/component/BackgroundGroup.js diff --git a/dist/vis.js b/dist/vis.js index d5aeed03..5d27fc6b 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -100,46 +100,47 @@ return /******/ (function(modules) { // webpackBootstrap // Timeline exports.Timeline = __webpack_require__(17); - exports.Graph2d = __webpack_require__(33); + exports.Graph2d = __webpack_require__(41); exports.timeline = { DateUtil: __webpack_require__(23), - DataStep: __webpack_require__(36), + DataStep: __webpack_require__(44), Range: __webpack_require__(20), - stack: __webpack_require__(39), + stack: __webpack_require__(32), TimeStep: __webpack_require__(26), components: { items: { - Item: __webpack_require__(40), - BackgroundItem: __webpack_require__(41), - BoxItem: __webpack_require__(43), - PointItem: __webpack_require__(44), - RangeItem: __webpack_require__(42) + Item: __webpack_require__(34), + BackgroundItem: __webpack_require__(38), + BoxItem: __webpack_require__(36), + PointItem: __webpack_require__(37), + RangeItem: __webpack_require__(33) }, Component: __webpack_require__(22), CurrentTime: __webpack_require__(27), CustomTime: __webpack_require__(29), - DataAxis: __webpack_require__(35), - GraphGroup: __webpack_require__(37), - Group: __webpack_require__(45), + DataAxis: __webpack_require__(43), + GraphGroup: __webpack_require__(45), + Group: __webpack_require__(31), + BackgroundGroup: __webpack_require__(35), ItemSet: __webpack_require__(30), - Legend: __webpack_require__(38), - LineGraph: __webpack_require__(34), + Legend: __webpack_require__(46), + LineGraph: __webpack_require__(42), TimeAxis: __webpack_require__(25) } }; // Network - exports.Network = __webpack_require__(46); + exports.Network = __webpack_require__(47); exports.network = { - Edge: __webpack_require__(52), - Groups: __webpack_require__(49), - Images: __webpack_require__(50), - Node: __webpack_require__(51), - Popup: __webpack_require__(53), - dotparser: __webpack_require__(47), - gephiParser: __webpack_require__(48) + Edge: __webpack_require__(53), + Groups: __webpack_require__(50), + Images: __webpack_require__(51), + Node: __webpack_require__(52), + Popup: __webpack_require__(54), + dotparser: __webpack_require__(48), + gephiParser: __webpack_require__(49) }; // Deprecated since v3.0.0 @@ -13056,7 +13057,7 @@ return /******/ (function(modules) { // webpackBootstrap var CurrentTime = __webpack_require__(27); var CustomTime = __webpack_require__(29); var ItemSet = __webpack_require__(30); - var Activator = __webpack_require__(31); + var Activator = __webpack_require__(39); var DateUtil = __webpack_require__(23); /** @@ -15230,15 +15231,16 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(7); var DataView = __webpack_require__(8); var Component = __webpack_require__(22); - var Group = __webpack_require__(45); - var BoxItem = __webpack_require__(43); - var PointItem = __webpack_require__(44); - var RangeItem = __webpack_require__(42); - var BackgroundItem = __webpack_require__(41); - var DateUtil = __webpack_require__(23); + var Group = __webpack_require__(31); + var BackgroundGroup = __webpack_require__(35); + var BoxItem = __webpack_require__(36); + var PointItem = __webpack_require__(37); + var RangeItem = __webpack_require__(33); + var BackgroundItem = __webpack_require__(38); - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + 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 @@ -15398,6 +15400,11 @@ return /******/ (function(modules) { // webpackBootstrap // 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 @@ -15724,7 +15731,10 @@ return /******/ (function(modules) { // webpackBootstrap this.lastVisibleInterval = visibleInterval; this.props.lastWidth = this.props.width; - // redraw all groups + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + + // redraw all regular groups var restack = this.stackDirty, firstGroup = this._firstGroup(), firstMargin = { @@ -15787,12 +15797,24 @@ return /******/ (function(modules) { // webpackBootstrap */ 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]; + + // var background = this.groups[BACKGROUND]; + // for (itemId in this.items) { + // if (this.items.hasOwnProperty(itemId)) { + // item = this.items[itemId]; + // if ((item instanceof BackgroundItem)) { + // background.add(item); + // } + // } + // } } } else { @@ -15803,9 +15825,15 @@ return /******/ (function(modules) { // webpackBootstrap ungrouped = new Group(id, data, this); this.groups[UNGROUPED] = ungrouped; - for (var itemId in this.items) { + for (itemId in this.items) { if (this.items.hasOwnProperty(itemId)) { - ungrouped.add(this.items[itemId]); + item = this.items[itemId]; + if (item instanceof BackgroundItem) { + background.add(item); + } + else { + ungrouped.add(item); + } } } @@ -15957,6 +15985,33 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * 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'); + }; + + + /** + * 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') { + return itemData.group != undefined ? itemData.group : BACKGROUND; + } + else { + return this.groupsData ? itemData.group : UNGROUPED; + } + }; + /** * Handle updated items * @param {Number[]} ids @@ -15966,9 +16021,9 @@ return /******/ (function(modules) { // webpackBootstrap var me = this; ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions), - item = me.items[id], - type = itemData.type || me.options.type || (itemData.end ? 'range' : 'box'); + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); var constructor = ItemSet.types[type]; @@ -16073,7 +16128,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!group) { // check for reserved ids - if (id == UNGROUPED) { + if (id == UNGROUPED || id == BACKGROUND) { throw new Error('Illegal group id. ' + id + ' is a reserved id.'); } @@ -16172,7 +16227,7 @@ return /******/ (function(modules) { // webpackBootstrap this.items[item.id] = item; // add to group - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.add(item); }; @@ -16194,7 +16249,7 @@ return /******/ (function(modules) { // webpackBootstrap var oldGroup = this.groups[oldGroupId]; if (oldGroup) oldGroup.remove(item); - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.add(item); } @@ -16218,7 +16273,7 @@ return /******/ (function(modules) { // webpackBootstrap if (index != -1) this.selection.splice(index, 1); // remove from group - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.remove(item); }; @@ -16650,3302 +16705,3259 @@ return /******/ (function(modules) { // webpackBootstrap /* 31 */ /***/ function(module, exports, __webpack_require__) { - var mousetrap = __webpack_require__(32); - var Emitter = __webpack_require__(10); - var Hammer = __webpack_require__(18); var util = __webpack_require__(1); + var stack = __webpack_require__(32); + var RangeItem = __webpack_require__(33); + var DateUtil = __webpack_require__(23); /** - * 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 + * @constructor Group + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - function Activator(container) { - this.active = false; + function Group (groupId, data, itemSet) { + this.groupId = groupId; + this.subgroups = {}; + this.visibleSubgroups = 0; + this.itemSet = itemSet; - this.dom = { - container: container + this.dom = {}; + this.props = { + label: { + width: 0, + height: 0 + } }; + this.className = null; - this.dom.overlay = document.createElement('div'); - this.dom.overlay.className = 'overlay'; + this.items = {}; // items filtered by groupId of this group + this.visibleItems = []; // items currently visible in window + this.orderedItems = { // items sorted by start and by end + byStart: [], + byEnd: [] + }; - this.dom.container.appendChild(this.dom.overlay); + this._create(); - this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); - this.hammer.on('tap', this._onTapOverlay.bind(this)); + this.setData(data); + } - // 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(); + /** + * 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; + }; + + + /** + * 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; + + 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(); }); - }); - // 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(); + 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); + } + + // 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); + } + + return resized; + }; + + /** + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the heigh + * @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); - // mousetrap listener only bounded when active) - this.escListener = this.deactivate.bind(this); - } + return height; + }; - // turn into an event emitter - Emitter(Activator.prototype); + /** + * Show this group: attach to the DOM + */ + Group.prototype.show = function() { + if (!this.dom.label.parentNode) { + this.itemSet.dom.labelSet.appendChild(this.dom.label); + } - // The currently active activator - Activator.current = null; + 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); + } + }; /** - * Destroy the activator. Cleans up all created DOM and event listeners + * Hide this group: remove from the DOM */ - Activator.prototype.destroy = function () { - this.deactivate(); + Group.prototype.hide = function() { + var label = this.dom.label; + if (label.parentNode) { + label.parentNode.removeChild(label); + } - // remove dom - this.dom.overlay.parentNode.removeChild(this.dom.overlay); + var foreground = this.dom.foreground; + if (foreground.parentNode) { + foreground.parentNode.removeChild(foreground); + } - // cleanup hammer instances - this.hammer = null; - this.windowHammer = null; - // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) + var background = this.dom.background; + if (background.parentNode) { + background.parentNode.removeChild(background); + } + + var axis = this.dom.axis; + if (axis.parentNode) { + axis.parentNode.removeChild(axis); + } }; /** - * Activate the element - * Overlay is hidden, element is decorated with a blue shadow border + * Add an item to the group + * @param {Item} item */ - Activator.prototype.activate = function () { - // we allow only one active activator at a time - if (Activator.current) { - Activator.current.deactivate(); + Group.prototype.add = function(item) { + this.items[item.id] = item; + item.setParent(this); + + // add to + var index = 0; + if (item.data.subgroup !== undefined) { + if (this.subgroups[item.data.subgroup] === undefined) { + this.subgroups[item.data.subgroup] = {height:0, visible: false, index:index}; + index++; + } } - Activator.current = this; - this.active = true; - this.dom.overlay.style.display = 'none'; - util.addClassName(this.dom.container, 'vis-active'); + 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.emit('change'); - this.emit('activate'); + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; + } + } + }; - // ugly hack: bind ESC after emitting the events, as the Network rebinds all - // keyboard events on a 'change' event - mousetrap.bind('esc', this.escListener); + /** + * Remove an item from the group + * @param {Item} item + */ + Group.prototype.remove = function(item) { + delete this.items[item.id]; + item.setParent(this.itemSet); + + // remove from visible items + var index = this.visibleItems.indexOf(item); + if (index != -1) this.visibleItems.splice(index, 1); + + // TODO: also remove from ordered items? }; /** - * Deactivate the element - * Overlay is displayed on top of the element + * Remove an item from the corresponding DataSet + * @param {Item} item */ - Activator.prototype.deactivate = function () { - this.active = false; - this.dom.overlay.style.display = ''; - util.removeClassName(this.dom.container, 'vis-active'); - mousetrap.unbind('esc', this.escListener); + Group.prototype.removeFromDataSet = function(item) { + this.itemSet.removeItem(item.id); + }; - this.emit('change'); - this.emit('deactivate'); + /** + * Reorder the items + */ + Group.prototype.order = function() { + var array = util.toArray(this.items); + this.orderedItems.byStart = array; + this.orderedItems.byEnd = this._constructByEndArray(array); + + stack.orderByStart(this.orderedItems.byStart); + stack.orderByEnd(this.orderedItems.byEnd); }; /** - * Handle a tap event: activate the container - * @param event + * Create an array containing all items being a range (having an end date) + * @param {Item[]} array + * @returns {RangeItem[]} * @private */ - Activator.prototype._onTapOverlay = function (event) { - // activate the container - this.activate(); - event.stopPropagation(); + Group.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; }; /** - * 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. + * 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 */ - function _hasParent(element, parent) { - while (element) { - if (element === parent) { - return true + Group.prototype._updateVisibleItems = function(orderedItems, visibleItems, range) { + var initialPosByStart, + newVisibleItems = [], + i; + + // first check if the items that were in view previously are still in view. + // this handles the case for the RangeItem that is both before and after the current one. + if (visibleItems.length > 0) { + for (i = 0; i < visibleItems.length; i++) { + this._checkIfVisible(visibleItems[i], newVisibleItems, range); } - element = element.parentNode; } - return false; - } - module.exports = Activator; + // If there were no visible items previously, use binarySearch to find a visible PointItem or RangeItem (based on startTime) + if (newVisibleItems.length == 0) { + initialPosByStart = util.binarySearch(orderedItems.byStart, range, 'data','start'); + } + else { + initialPosByStart = orderedItems.byStart.indexOf(newVisibleItems[0]); + } + + // use visible search to find a visible RangeItem (only based on endTime) + var initialPosByEnd = util.binarySearch(orderedItems.byEnd, range, 'data','end'); + + // if we found a initial ID to use, trace it up and down until we meet an invisible item. + if (initialPosByStart != -1) { + for (i = initialPosByStart; i >= 0; i--) { + if (this._checkIfInvisible(orderedItems.byStart[i], newVisibleItems, range)) {break;} + } + for (i = initialPosByStart + 1; i < orderedItems.byStart.length; i++) { + if (this._checkIfInvisible(orderedItems.byStart[i], newVisibleItems, range)) {break;} + } + } + + // if we found a initial ID to use, trace it up and down until we meet an invisible item. + if (initialPosByEnd != -1) { + for (i = initialPosByEnd; i >= 0; i--) { + if (this._checkIfInvisible(orderedItems.byEnd[i], newVisibleItems, range)) {break;} + } + for (i = initialPosByEnd + 1; i < orderedItems.byEnd.length; i++) { + if (this._checkIfInvisible(orderedItems.byEnd[i], newVisibleItems, range)) {break;} + } + } + + return newVisibleItems; + }; -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { /** - * Copyright 2012 Craig Campbell - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * this function checks if an item is invisible. If it is NOT we make it visible + * and add it to the global visible items. If it is, return true. * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Mousetrap is a simple keyboard shortcut library for Javascript with - * no external dependencies - * - * @version 1.1.2 - * @url craig.is/killing/mice + * @param {Item} item + * @param {Item[]} visibleItems + * @param {{start:number, end:number}} range + * @returns {boolean} + * @private */ - - /** - * mapping of special keycodes to their corresponding keys - * - * everything in this dictionary cannot use keypress events - * so it has to be here to map to the correct keycodes for - * keyup/keydown events - * - * @type {Object} - */ - var _MAP = { - 8: 'backspace', - 9: 'tab', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 20: 'capslock', - 27: 'esc', - 32: 'space', - 33: 'pageup', - 34: 'pagedown', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 45: 'ins', - 46: 'del', - 91: 'meta', - 93: 'meta', - 224: 'meta' - }, - - /** - * mapping for special characters so they can support - * - * this dictionary is only used incase you want to bind a - * keyup or keydown event to one of these keys - * - * @type {Object} - */ - _KEYCODE_MAP = { - 106: '*', - 107: '+', - 109: '-', - 110: '.', - 111 : '/', - 186: ';', - 187: '=', - 188: ',', - 189: '-', - 190: '.', - 191: '/', - 192: '`', - 219: '[', - 220: '\\', - 221: ']', - 222: '\'' - }, - - /** - * this is a mapping of keys that require shift on a US keypad - * back to the non shift equivelents - * - * this is so you can use keyup events with these keys - * - * note that this will only work reliably on US keyboards - * - * @type {Object} - */ - _SHIFT_MAP = { - '~': '`', - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0', - '_': '-', - '+': '=', - ':': ';', - '\"': '\'', - '<': ',', - '>': '.', - '?': '/', - '|': '\\' - }, - - /** - * this is a list of special strings you can use to map - * to modifier keys when you specify your keyboard shortcuts - * - * @type {Object} - */ - _SPECIAL_ALIASES = { - 'option': 'alt', - 'command': 'meta', - 'return': 'enter', - 'escape': 'esc' - }, - - /** - * variable to store the flipped version of _MAP from above - * needed to check if we should use keypress or not when no action - * is specified - * - * @type {Object|undefined} - */ - _REVERSE_MAP, - - /** - * a list of all the callbacks setup via Mousetrap.bind() - * - * @type {Object} - */ - _callbacks = {}, - - /** - * direct map of string combinations to callbacks used for trigger() - * - * @type {Object} - */ - _direct_map = {}, - - /** - * keeps track of what level each sequence is at since multiple - * sequences can start out with the same sequence - * - * @type {Object} - */ - _sequence_levels = {}, - - /** - * variable to store the setTimeout call - * - * @type {null|number} - */ - _reset_timer, - - /** - * temporary state where we will ignore the next keyup - * - * @type {boolean|string} - */ - _ignore_next_keyup = false, - - /** - * are we currently inside of a sequence? - * type of action ("keyup" or "keydown" or "keypress") or false - * - * @type {boolean|string} - */ - _inside_sequence = false; - - /** - * loop through the f keys, f1 to f19 and add them to the map - * programatically - */ - for (var i = 1; i < 20; ++i) { - _MAP[111 + i] = 'f' + i; - } - - /** - * loop through to map numbers on the numeric keypad - */ - for (i = 0; i <= 9; ++i) { - _MAP[i + 96] = i; - } - - /** - * cross browser add event method - * - * @param {Element|HTMLDocument} object - * @param {string} type - * @param {Function} callback - * @returns void - */ - function _addEvent(object, type, callback) { - if (object.addEventListener) { - return object.addEventListener(type, callback, false); - } - - object.attachEvent('on' + type, callback); - } - - /** - * takes the event and returns the key character - * - * @param {Event} e - * @return {string} - */ - function _characterFromEvent(e) { - - // for keypress events we should return the character as is - if (e.type == 'keypress') { - return String.fromCharCode(e.which); - } - - // for non keypress events the special maps are needed - if (_MAP[e.which]) { - return _MAP[e.which]; - } - - if (_KEYCODE_MAP[e.which]) { - return _KEYCODE_MAP[e.which]; - } - - // if it is not in the special map - return String.fromCharCode(e.which).toLowerCase(); - } - - /** - * should we stop this event before firing off callbacks - * - * @param {Event} e - * @return {boolean} - */ - function _stop(e) { - var element = e.target || e.srcElement, - tag_name = element.tagName; - - // if the element has the class "mousetrap" then no need to stop - if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { - return false; - } - - // stop for input, select, and textarea - return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); - } - - /** - * checks if two arrays are equal - * - * @param {Array} modifiers1 - * @param {Array} modifiers2 - * @returns {boolean} - */ - function _modifiersMatch(modifiers1, modifiers2) { - return modifiers1.sort().join(',') === modifiers2.sort().join(','); - } - - /** - * resets all sequence counters except for the ones passed in - * - * @param {Object} do_not_reset - * @returns void - */ - function _resetSequences(do_not_reset) { - do_not_reset = do_not_reset || {}; - - var active_sequences = false, - key; - - for (key in _sequence_levels) { - if (do_not_reset[key]) { - active_sequences = true; - continue; - } - _sequence_levels[key] = 0; - } - - if (!active_sequences) { - _inside_sequence = false; - } - } - - /** - * finds all callbacks that match based on the keycode, modifiers, - * and action - * - * @param {string} character - * @param {Array} modifiers - * @param {string} action - * @param {boolean=} remove - should we remove any matches - * @param {string=} combination - * @returns {Array} - */ - function _getMatches(character, modifiers, action, remove, combination) { - var i, - callback, - matches = []; - - // if there are no events related to this keycode - if (!_callbacks[character]) { - return []; - } - - // if a modifier key is coming up on its own we should allow it - if (action == 'keyup' && _isModifier(character)) { - modifiers = [character]; + Group.prototype._checkIfInvisible = function(item, visibleItems, range) { + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + item.repositionX(); + if (visibleItems.indexOf(item) == -1) { + visibleItems.push(item); } + return false; + } + else { + if (item.displayed) item.hide(); + return true; + } + }; - // loop through all callbacks for the key that was pressed - // and see if any of them match - for (i = 0; i < _callbacks[character].length; ++i) { - callback = _callbacks[character][i]; - - // if this is a sequence but it is not at the right level - // then move onto the next match - if (callback.seq && _sequence_levels[callback.seq] != callback.level) { - continue; - } - - // if the action we are looking for doesn't match the action we got - // then we should keep going - if (action != callback.action) { - continue; - } - - // if this is a keypress event that means that we need to only - // look at the character, otherwise check the modifiers as - // well - if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { + /** + * 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(); + } + }; - // remove is used so if you change your mind and call bind a - // second time with a new function the first one is overwritten - if (remove && callback.combo == combination) { - _callbacks[character].splice(i, 1); - } + module.exports = Group; - matches.push(callback); - } - } - return matches; - } +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { - /** - * takes a key event and figures out what the modifiers are - * - * @param {Event} e - * @returns {Array} - */ - function _eventModifiers(e) { - var modifiers = []; + // Utility functions for ordering and stacking of items + var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors - if (e.shiftKey) { - modifiers.push('shift'); - } + /** + * 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; + }); + }; - if (e.altKey) { - modifiers.push('alt'); - } + /** + * 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; - if (e.ctrlKey) { - modifiers.push('ctrl'); - } + return aTime - bTime; + }); + }; - if (e.metaKey) { - modifiers.push('meta'); - } + /** + * 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; - return modifiers; + if (force) { + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + items[i].top = null; + } } - /** - * actually calls the callback function - * - * if your callback function returns false this will use the jquery - * convention - prevent default and stop propogation on the event - * - * @param {Function} callback - * @param {Event} e - * @returns void - */ - function _fireCallback(callback, e) { - if (callback(e) === false) { - if (e.preventDefault) { - e.preventDefault(); - } + // calculate new, non-overlapping positions + for (i = 0, iMax = items.length; i < iMax; i++) { + var item = items[i]; + if (item.top === null) { + // initialize top position + item.top = margin.axis; - if (e.stopPropagation) { - e.stopPropagation(); + 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.ignoreStacking == false && exports.collision(item, other, margin.item)) { + collidingItem = other; + break; } + } - e.returnValue = false; - e.cancelBubble = 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); + } } + }; - /** - * handles a character key event - * - * @param {string} character - * @param {Event} e - * @returns void - */ - function _handleCharacter(character, e) { - - // if this event should not happen stop here - if (_stop(e)) { - return; - } - - var callbacks = _getMatches(character, _eventModifiers(e), e.type), - i, - do_not_reset = {}, - processed_sequence_callback = false; - - // loop through matching callbacks for this key event - for (i = 0; i < callbacks.length; ++i) { - - // fire for all sequence callbacks - // this is because if for example you have multiple sequences - // bound such as "g i" and "g t" they both need to fire the - // callback for matching g cause otherwise you can only ever - // match the first one - if (callbacks[i].seq) { - processed_sequence_callback = true; - // keep a list of which sequences were matches for later - do_not_reset[callbacks[i].seq] = 1; - _fireCallback(callbacks[i].callback, e); - continue; - } + /** + * 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; - // if there were no sequence matches but we are still here - // that means this is a regular match so we should fire that - if (!processed_sequence_callback && !_inside_sequence) { - _fireCallback(callbacks[i].callback, e); + // 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; } + } } - - // if you are inside of a sequence and the key you are pressing - // is not a modifier key then we should reset all sequences - // that were not matched by this key event - if (e.type == _inside_sequence && !_isModifier(character)) { - _resetSequences(do_not_reset); - } - } - - /** - * handles a keydown event - * - * @param {Event} e - * @returns void - */ - function _handleKey(e) { - - // normalize e.which for key events - // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion - e.which = typeof e.which == "number" ? e.which : e.keyCode; - - var character = _characterFromEvent(e); - - // no character found then stop - if (!character) { - return; - } - - if (e.type == 'keyup' && _ignore_next_keyup == character) { - _ignore_next_keyup = false; - return; - } - - _handleCharacter(character, e); - } - - /** - * determines if the keycode specified is a modifier key or not - * - * @param {string} key - * @returns {boolean} - */ - function _isModifier(key) { - return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; - } - - /** - * called to set a 1 second timeout on the specified sequence - * - * this is so after each key press in the sequence you have 1 second - * to press the next key before you have to start over - * - * @returns void - */ - function _resetSequenceTimer() { - clearTimeout(_reset_timer); - _reset_timer = setTimeout(_resetSequences, 1000); + items[i].top = newTop; + } + else { + items[i].top = margin.axis; + } } + }; - /** - * reverses the map lookup so that we can look for specific keys - * to see what can and can't use keypress - * - * @return {Object} - */ - function _getReverseMap() { - if (!_REVERSE_MAP) { - _REVERSE_MAP = {}; - for (var key in _MAP) { - - // pull out the numeric keypad from here cause keypress should - // be able to detect the keys from the character - if (key > 95 && key < 112) { - continue; - } + /** + * 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); + }; - if (_MAP.hasOwnProperty(key)) { - _REVERSE_MAP[_MAP[key]] = key; - } - } - } - return _REVERSE_MAP; - } - /** - * picks the best action based on the key combination - * - * @param {string} key - character for key - * @param {Array} modifiers - * @param {string=} action passed in - */ - function _pickBestAction(key, modifiers, action) { +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { - // if no action was picked in we should try to pick the one - // that we think would work best for this key - if (!action) { - action = _getReverseMap()[key] ? 'keydown' : 'keypress'; - } + var Hammer = __webpack_require__(18); + var Item = __webpack_require__(34); - // modifier keys don't work as expected with keypress, - // switch to keydown - if (action == 'keypress' && modifiers.length) { - action = 'keydown'; - } + /** + * @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 - return action; + // 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); + } } - /** - * binds a key sequence to an event - * - * @param {string} combo - combo specified in bind call - * @param {Array} keys - * @param {Function} callback - * @param {string=} action - * @returns void - */ - function _bindSequence(combo, keys, callback, action) { + Item.call(this, data, conversion, options); + } - // start off by adding a sequence level record for this combination - // and setting the level to 0 - _sequence_levels[combo] = 0; + RangeItem.prototype = new Item (null, null, null); - // if there is no action pick the best one for the first key - // in the sequence - if (!action) { - action = _pickBestAction(keys[0], []); - } + RangeItem.prototype.baseClassName = 'item range'; - /** - * callback to increase the sequence level for this sequence and reset - * all other sequences that were active - * - * @param {Event} e - * @returns void - */ - var _increaseSequence = function(e) { - _inside_sequence = action; - ++_sequence_levels[combo]; - _resetSequenceTimer(); - }, + /** + * 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); + }; - /** - * wraps the specified callback inside of another function in order - * to reset all sequence counters as soon as this sequence is done - * - * @param {Event} e - * @returns void - */ - _callbackAndReset = function(e) { - _fireCallback(callback, e); + /** + * Repaint the item + */ + RangeItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // we should ignore the next key up if the action is key down - // or keypress. this is so if you finish a sequence and - // release the key the final key will not trigger a keyup - if (action !== 'keyup') { - _ignore_next_keyup = _characterFromEvent(e); - } + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - // weird race condition if a sequence ends with the key - // another sequence begins with - setTimeout(_resetSequences, 10); - }, - i; + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - // loop through keys one at a time and bind the appropriate callback - // function. for any key leading up to the final one it should - // increase the sequence. after the final, it should reset all sequences - for (i = 0; i < keys.length; ++i) { - _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); - } - } + // attach this item as attribute + dom.box['timeline-item'] = this; - /** - * binds a single keyboard combination - * - * @param {string} combination - * @param {Function} callback - * @param {string=} action - * @param {string=} sequence_name - name of sequence if part of sequence - * @param {number=} level - what part of the sequence the command is - * @returns void - */ - function _bindSingle(combination, callback, action, sequence_name, level) { + this.dirty = true; + } - // make sure multiple spaces in a row become a single space - combination = combination.replace(/\s+/g, ' '); + // 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 sequence = combination.split(' '), - i, - key, - keys, - modifiers = []; + // 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 this pattern is a sequence of keys then run through this method - // to reprocess each pattern one key at a time - if (sequence.length > 1) { - return _bindSequence(combination, sequence, callback, action); - } + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; - // take the keys from this pattern and figure out what the actual - // pattern is all about - keys = combination === '+' ? ['+'] : combination.split('+'); + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; + // recalculate size + this.props.content.width = this.dom.content.offsetWidth; + this.height = this.dom.box.offsetHeight; - // normalize key names - if (_SPECIAL_ALIASES[key]) { - key = _SPECIAL_ALIASES[key]; - } + this.dirty = false; + } - // if this is not a keypress event then we should - // be smart about using shift keys - // this will only work for US keyboards however - if (action && action != 'keypress' && _SHIFT_MAP[key]) { - key = _SHIFT_MAP[key]; - modifiers.push('shift'); - } + this._repaintDeleteButton(dom.box); + this._repaintDragLeft(); + this._repaintDragRight(); + }; - // if this key is a modifier then add it to the list of modifiers - if (_isModifier(key)) { - modifiers.push(key); - } - } + /** + * 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(); + } + }; - // depending on what the key combination is - // we will try to pick the best event for it - action = _pickBestAction(key, modifiers, action); + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + RangeItem.prototype.hide = function() { + if (this.displayed) { + var box = this.dom.box; - // make sure to initialize array if this is the first time - // a callback is added for this key - if (!_callbacks[key]) { - _callbacks[key] = []; - } + if (box.parentNode) { + box.parentNode.removeChild(box); + } - // remove an existing match if there is one - _getMatches(key, modifiers, action, !sequence_name, combination); + this.top = null; + this.left = null; - // add this call back to the array - // if it is a sequence put it at the beginning - // if not put it at the end - // - // this is important because the way these are processed expects - // the sequence ones to come first - _callbacks[key][sequence_name ? 'unshift' : 'push']({ - callback: callback, - modifiers: modifiers, - action: action, - seq: sequence_name, - level: level, - combo: combination - }); + this.displayed = false; } + }; - /** - * binds multiple combinations to the same callback - * - * @param {Array} combinations - * @param {Function} callback - * @param {string|undefined} action - * @returns void - */ - function _bindMultiple(combinations, callback, action) { - for (var i = 0; i < combinations.length; ++i) { - _bindSingle(combinations[i], callback, action); - } + /** + * 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; + } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; } + var boxWidth = Math.max(end - start, 1); - // start! - _addEvent(document, 'keypress', _handleKey); - _addEvent(document, 'keydown', _handleKey); - _addEvent(document, 'keyup', _handleKey); + if (this.overflow) { + this.left = start; + this.width = boxWidth + this.props.content.width; + contentWidth = this.props.content.width; - var mousetrap = { + // 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, this.props.content.width); + } - /** - * binds an event to mousetrap - * - * can be a single key, a combination of keys separated with +, - * a comma separated list of keys, an array of keys, or - * a sequence of keys separated by spaces - * - * be sure to list the modifier keys first to make sure that the - * correct key ends up getting bound (the last key in the pattern) - * - * @param {string|Array} keys - * @param {Function} callback - * @param {string=} action - 'keypress', 'keydown', or 'keyup' - * @returns void - */ - bind: function(keys, callback, action) { - _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); - _direct_map[keys + ':' + action] = callback; - return this; - }, + this.dom.box.style.left = this.left + 'px'; + this.dom.box.style.width = boxWidth + 'px'; - /** - * unbinds an event to mousetrap - * - * the unbinding sets the callback function of the specified key combo - * to an empty function and deletes the corresponding key in the - * _direct_map dict. - * - * the keycombo+action has to be exactly the same as - * it was defined in the bind method - * - * TODO: actually remove this from the _callbacks dictionary instead - * of binding an empty function - * - * @param {string|Array} keys - * @param {string} action - * @returns void - */ - unbind: function(keys, action) { - if (_direct_map[keys + ':' + action]) { - delete _direct_map[keys + ':' + action]; - this.bind(keys, function() {}, action); - } - return this; - }, + switch (this.options.align) { + case 'left': + this.dom.content.style.left = '0'; + break; - /** - * triggers an event that has already been bound - * - * @param {string} keys - * @param {string=} action - * @returns void - */ - trigger: function(keys, action) { - _direct_map[keys + ':' + action](); - return this; - }, + case 'right': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; + break; - /** - * resets the library back to its initial state. this is useful - * if you want to clear out the current keyboard shortcuts and bind - * new ones - for example if you switch to another page - * - * @returns void - */ - reset: function() { - _callbacks = {}; - _direct_map = {}; - return this; + case 'center': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; + break; + + default: // 'auto' + if (this.overflow) { + // when range exceeds left of the window, position the contents at the left of the visible area + contentLeft = Math.max(-start, 0); } - }; + else { + // when range exceeds left of the window, position the contents at the left of the visible area + if (start < 0) { + contentLeft = Math.min(-start, + (end - start - this.props.content.width - 2 * this.options.padding)); + // TODO: remove the need for options.padding. it's terrible. + } + else { + contentLeft = 0; + } + } + this.dom.content.style.left = contentLeft + 'px'; + } + }; - module.exports = mousetrap; + /** + * Reposition the item vertically + * @Override + */ + 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'; + } + }; + /** + * 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; -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { + // TODO: this should be redundant? + Hammer(dragLeft, { + preventDefault: true + }).on('drag', function () { + //console.log('drag left') + }); - var Emitter = __webpack_require__(10); - var Hammer = __webpack_require__(18); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(8); - var Range = __webpack_require__(20); - var Core = __webpack_require__(24); - var TimeAxis = __webpack_require__(25); - var CurrentTime = __webpack_require__(27); - var CustomTime = __webpack_require__(29); - var LineGraph = __webpack_require__(34); + 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; + } + }; /** - * 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 + * Repaint a drag area on the right side of the range when the range is selected + * @protected */ - 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; - } - - var me = this; - this.defaultOptions = { - start: null, - end: 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; - autoResize: true, + // TODO: this should be redundant? + Hammer(dragRight, { + preventDefault: true + }).on('drag', function () { + //console.log('drag right') + }); - orientation: 'bottom', - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); + 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; + } + }; - // Create the DOM, props, and emitter - this._create(container); + module.exports = RangeItem; - // 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) - }, - util: { - snap: null, // will be specified after TimeAxis is created - 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) - } - }; +/***/ }, +/* 34 */ +/***/ function(module, exports, __webpack_require__) { - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; + var Hammer = __webpack_require__(18); + var util = __webpack_require__(1); - // time axis - this.timeAxis = new TimeAxis(this.body); - this.components.push(this.timeAxis); - this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); + /** + * @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 || {}; - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); + this.selected = false; + this.displayed = false; + this.dirty = true; - // 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.top = null; + this.left = null; + this.width = null; + this.height = null; - // item set - this.linegraph = new LineGraph(this.body); - this.components.push(this.linegraph); + this.ignoreStacking = false; + } - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + /** + * Select current item + */ + Item.prototype.select = function() { + this.selected = true; + this.dirty = true; + if (this.displayed) this.redraw(); + }; - // apply options - if (options) { - this.setOptions(options); - } + /** + * Unselect current item + */ + Item.prototype.unselect = function() { + this.selected = false; + this.dirty = true; + if (this.displayed) this.redraw(); + }; - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); - } + /** + * 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(); + }; - // create itemset - if (items) { - this.setItems(items); + /** + * 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.redraw(); + this.parent = parent; } - } + }; - // Extend the functionality from Core - Graph2d.prototype = new Core(); + /** + * 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; + }; /** - * Set items - * @param {vis.DataSet | Array | google.visualization.DataTable | null} items + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed */ - Graph2d.prototype.setItems = function(items) { - var initialLoad = (this.itemsData == null); + Item.prototype.show = function() { + return false; + }; - // 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' - } - }); - } + /** + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed + */ + Item.prototype.hide = function() { + return false; + }; - // set items - this.itemsData = newDataSet; - this.linegraph && this.linegraph.setItems(newDataSet); + /** + * Repaint the item + */ + Item.prototype.redraw = function() { + // should be implemented by the item + }; - 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; + /** + * Reposition the Item horizontally + */ + Item.prototype.repositionX = function() { + // should be implemented by the item + }; - this.setWindow(start, end, {animate: false}); - } - else { - this.fit({animate: false}); - } - } + /** + * Reposition the Item vertically + */ + Item.prototype.repositionY = function() { + // should be implemented by the item }; /** - * Set groups - * @param {vis.DataSet | Array | google.visualization.DataTable} groups + * Repaint a delete button on the top right of the item when the item is selected + * @param {HTMLElement} anchor + * @protected */ - 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; + 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'; + + Hammer(deleteButton, { + preventDefault: true + }).on('tap', function (event) { + me.parent.removeFromDataSet(me); + event.stopPropagation(); + }); + + anchor.appendChild(deleteButton); + this.dom.deleteButton = deleteButton; } - else { - // turn an array into a dataset - newDataSet = new DataSet(groups); + 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; } - - 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 + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - 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); + 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 { - return "cannot find group:" + groupId; + content = this.data.content; } - } + + 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; + } + }; /** - * This checks if the visible option of the supplied group (by ID) is true or false. - * @param groupId - * @returns {*} + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - 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)); + Item.prototype._updateTitle = function (element) { + if (this.data.title != null) { + element.title = this.data.title || ''; } else { - return false; + element.removeAttribute('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 + * 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 */ - Graph2d.prototype.getItemRange = function() { - var min = null; - var max = null; + Item.prototype._updateDataAttributes = function(element) { + if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { + var attributes = []; - // 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; - } + 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); } } } - - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; }; + /** + * 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; + } + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } + }; - module.exports = Graph2d; + module.exports = Item; /***/ }, -/* 34 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(8); - var Component = __webpack_require__(22); - var DataAxis = __webpack_require__(35); - var GraphGroup = __webpack_require__(37); - var Legend = __webpack_require__(38); - - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var Group = __webpack_require__(31); /** - * This is the constructor of the LineGraph. It requires a Timeline body and options. - * - * @param body - * @param options - * @constructor + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - 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, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - } - }, - 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: {} - } - }; - - // 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; - - 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); - } - }; + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); - // 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.body.emitter.on("rangechanged", function() { - me.lastStart = me.body.range.start; - me.svg.style.left = util.option.asSize(-me.width); - me._updateGraph.apply(me); - }); - - // create the HTML DOM - this._create(); - this.body.emitter.emit("change"); + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; } - LineGraph.prototype = new Component(); + BackgroundGroup.prototype = Object.create(Group.prototype); /** - * Create the HTML DOM for the ItemSet + * 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 */ - LineGraph.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'LineGraph'; - this.dom.frame = frame; + BackgroundGroup.prototype.redraw = function(range, margin, restack) { + var resized = false; - // 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); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - // data axis - this.options.dataAxis.orientation = 'left'; - this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + // calculate actual size + this.width = this.dom.background.offsetWidth; - this.options.dataAxis.orientation = 'right'; - this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - delete this.options.dataAxis.orientation; + // apply new height (just always zero for BackgroundGroup + this.dom.background.style.height = '0'; - // 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); + // 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.show(); + return resized; }; /** - * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. - * @param options + * Show this group: attach to the DOM */ - LineGraph.prototype.setOptions = function(options) { - if (options) { - var fields = ['sampling','defaultGroup','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; - 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'); + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } + }; - 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; - } - } - } - } + module.exports = BackgroundGroup; - 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); - } +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(34); + 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 } + }; - if (this.groups.hasOwnProperty(UNGROUPED)) { - this.groups[UNGROUPED].setOptions(options); + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); } } - if (this.dom.frame) { - this._updateGraph(); - } - }; + + Item.call(this, data, conversion, options); + } + + BoxItem.prototype = new Item (null, null, null); /** - * Hide the component from the DOM + * 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 */ - LineGraph.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } + 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); }; /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Repaint the item */ - LineGraph.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } - }; + 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'); - /** - * Set items - * @param {vis.DataSet | null} items - */ - LineGraph.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - // replace the dataset - if (!items) { - this.itemsData = null; + // 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; } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + 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; - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); + // 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); - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); + // 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; } - 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._repaintDeleteButton(dom.box); + }; - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + /** + * 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(); } - this._updateUngrouped(); - this._updateGraph(); - this.redraw(); }; /** - * Set groups - * @param {vis.DataSet} groups + * Hide the item from the DOM (when visible) */ - LineGraph.prototype.setGroups = function(groups) { - var me = this, - ids; + BoxItem.prototype.hide = function() { + if (this.displayed) { + var dom = this.dom; - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + 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); - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw + this.top = null; + this.left = null; + + this.displayed = false; } + }; - // replace the dataset - if (!groups) { - this.groupsData = null; + /** + * 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; + + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; + else if (align == 'left') { + this.left = start; } else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + // default or 'center' + this.left = start - this.width / 2; } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); + // reposition box + box.style.left = this.left + 'px'; - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); - } - this._onUpdate(); - }; + // reposition line + line.style.left = (start - this.props.line.width / 2) + 'px'; + // reposition dot + dot.style.left = (start - this.props.dot.width / 2) + 'px'; + }; /** - * Update the datapoints - * @param [ids] - * @private + * Reposition the item vertically + * @Override */ - LineGraph.prototype._onUpdate = function(ids) { - this._updateUngrouped(); - this._updateAllGroupData(); - this._updateGraph(); - this.redraw(); - }; - 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]); + 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; + + box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; + line.style.top = (itemSetHeight - lineHeight) + 'px'; + line.style.bottom = '0'; } - this._updateGraph(); - this.redraw(); + dot.style.top = (-this.props.dot.height / 2) + 'px'; }; - LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; - 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]]; + module.exports = BoxItem; + + +/***/ }, +/* 37 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(34); + + /** + * @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 + } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); } } - this._updateUngrouped(); - this._updateGraph(); - this.redraw(); + + 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 + */ + 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); }; /** - * update a group object - * - * @param group - * @param groupId - * @private + * Repaint the item */ - 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]); - } + 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; } - 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]); + + // 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; + + // 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.legendLeft.redraw(); - this.legendRight.redraw(); + + this._repaintDeleteButton(dom.point); }; - 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]; - 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]); - } - } + /** + * 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(); } }; /** - * 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 + * Hide the item from the DOM (when visible) */ - 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; - } - } + PointItem.prototype.hide = function() { + if (this.displayed) { + if (this.dom.point.parentNode) { + this.dom.point.parentNode.removeChild(this.dom.point); } - 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.top = null; + this.left = null; - this.legendLeft.redraw(); - this.legendRight.redraw(); + this.displayed = false; + } }; - /** - * Redraw the component, mandatory function - * @return {boolean} Returns true if the component is resized + * Reposition the item horizontally + * @Override */ - LineGraph.prototype.redraw = function() { - var resized = false; + PointItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - if (this.lastWidth === undefined && this.width || this.lastWidth != this.width) { - resized = 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.width != this.lastWidth); - this.lastVisibleInterval = visibleInterval; - this.lastWidth = this.width; + this.left = start - this.props.dot.width; - // calculate actual size and position - this.width = this.dom.frame.offsetWidth; + // reposition point + this.dom.point.style.left = this.left + 'px'; + }; - // 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.width); - this.svg.style.left = util.option.asSize(-this.width); - } + /** + * Reposition the item vertically + * @Override + */ + PointItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + point = this.dom.point; - if (zoomed == true || this.abortedGraphUpdate == true) { - this._updateGraph(); + if (orientation == 'top') { + point.style.top = this.top + 'px'; } 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.width != 0) { - var rangePerPixelInv = this.width/range; - var xOffset = offset * rangePerPixelInv; - this.svg.style.left = (-this.width - xOffset) + "px"; - } - } - + point.style.top = (this.parent.height - this.top - this.height) + 'px'; } + }; - this.legendLeft.redraw(); - this.legendRight.redraw(); + module.exports = PointItem; - return resized; - }; + +/***/ }, +/* 38 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(18); + var Item = __webpack_require__(34); + var RangeItem = __webpack_require__(33); /** - * Update and redraw the graph. - * + * @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 */ - LineGraph.prototype._updateGraph = function () { - // reset the svg elements - DOMutil.prepareElements(this.svgElements); - if (this.width != 0 && this.itemsData != null) { - var group, i; - var preprocessedGroupData = {}; - var processedGroupData = {}; - var groupRanges = {}; - var changeCalled = false; + // 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 - // 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); - } - } + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); } - 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._getRelevantData(groupIds, groupsData, minDate, maxDate); - // 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); + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); + } + } - // 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); - if (changeCalled == true) { - DOMutil.cleanupElements(this.svgElements); - this.abortedGraphUpdate = true; - this.body.emitter.emit("change"); - return; - } - this.abortedGraphUpdate = false; + Item.call(this, data, conversion, options); - // 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); - } + this.ignoreStacking = true; // this is not used when stacking + this.emptyContent = false; + } + BackgroundItem.prototype = new Item (null, null, null); - // draw the groups - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.style == 'line') { - this._drawLineGraph(processedGroupData[groupIds[i]], group); - } - } - this._drawBarGraphs(groupIds, processedGroupData); - } - } + BackgroundItem.prototype.baseClassName = 'item background'; - // cleanup unused svg elements - DOMutil.cleanupElements(this.svgElements); + /** + * 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; - LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { - // 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. - 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.binarySearchGeneric(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); - } - } - } - } + // 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 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; - this._applySampling(groupIds, groupsData); - }; + // 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); - 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; + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; - // 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))); + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; - var sampledData = []; - for (var j = 0; j < amountOfPoints; j += increment) { - sampledData.push(dataContainer[j]); + // 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 - } - groupsData[groupIds[i]] = sampledData; - } - } - } + this.dirty = false; } }; - LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { - var groupData, group, i,j; - var barCombinedDataLeft = []; - var barCombinedDataRight = []; - var barCombinedData; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - groupData = groupsData[groupIds[i]]; - if (groupData.length > 0) { - group = this.groups[groupIds[i]]; - if (group.options.style == 'line' || group.options.barChart.handleOverlap != "stack") { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - groupRanges[groupIds[i]] = {min: yMin, max: yMax, yAxisOrientation: group.options.yAxisOrientation}; - } - else if (group.options.style == 'bar') { - if (group.options.yAxisOrientation == 'left') { - barCombinedData = barCombinedDataLeft; - } - else { - barCombinedData = barCombinedDataRight; - } + /** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + */ + BackgroundItem.prototype.show = RangeItem.prototype.show; - groupRanges[groupIds[i]] = {min: 0, max: 0, yAxisOrientation: group.options.yAxisOrientation, ignore: true}; + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + BackgroundItem.prototype.hide = RangeItem.prototype.hide; - // combine data - for (j = 0; j < groupData.length; j++) { - barCombinedData.push({ - x: groupData[j].x, - y: groupData[j].y, - groupId: groupIds[i] - }); + /** + * 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; } } } - } - - var intersections; - if (barCombinedDataLeft.length > 0) { - // sort by time and by group - barCombinedDataLeft.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); - intersections = {}; - this._getDataIntersections(intersections, barCombinedDataLeft); - groupRanges["__barchartLeft"] = this._getStackedBarYRange(intersections, barCombinedDataLeft); - groupRanges["__barchartLeft"].yAxisOrientation = "left"; - groupIds.push("__barchartLeft"); - } - if (barCombinedDataRight.length > 0) { - // sort by time and by group - barCombinedDataRight.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); - intersections = {}; - this._getDataIntersections(intersections, barCombinedDataRight); - groupRanges["__barchartRight"] = this._getStackedBarYRange(intersections, barCombinedDataRight); - groupRanges["__barchartRight"].yAxisOrientation = "right"; - groupIds.push("__barchartRight"); - } - } - }; - LineGraph.prototype._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; + // 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 { - intersections[key].accumulated += combinedData[i].y; + 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 = ''; } } - 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; + // and in the case of no subgroups: + else { + // we want backgrounds with groups to only show in groups. + if (this.data.group !== undefined) { + 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 = ''; + } + else { + // if the item is not in a group: + height = Math.max(this.parent.height, this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.top = onTop ? '0' : ''; + this.dom.box.style.bottom = onTop ? '' : '0'; } } - - return {min: yMin, max: yMax}; + this.dom.box.style.height = height + 'px'; }; + module.exports = BackgroundItem; + + +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + + var mousetrap = __webpack_require__(40); + var Emitter = __webpack_require__(10); + var Hammer = __webpack_require__(18); + var util = __webpack_require__(1); /** - * 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 + * 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 */ - LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { - var changeCalled = 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) { - 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; + function Activator(container) { + this.active = false; - if (groupRanges[groupIds[i]].yAxisOrientation == 'left') { - 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; - } - } - } - } + this.dom = { + container: container + }; - if (yAxisLeftUsed == true) { - this.yAxisLeft.setRange(minLeft, maxLeft); - } - if (yAxisRightUsed == true) { - this.yAxisRight.setRange(minRight, maxRight); - } - } + this.dom.overlay = document.createElement('div'); + this.dom.overlay.className = 'overlay'; - changeCalled = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || changeCalled; - changeCalled = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || changeCalled; + this.dom.container.appendChild(this.dom.overlay); - if (yAxisRightUsed == true && yAxisLeftUsed == true) { - this.yAxisLeft.drawIcons = true; - this.yAxisRight.drawIcons = true; - } - else { - this.yAxisLeft.drawIcons = false; - this.yAxisRight.drawIcons = false; - } + this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); + this.hammer.on('tap', this._onTapOverlay.bind(this)); - this.yAxisRight.master = !yAxisLeftUsed; + // 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(); + }); + }); - if (this.yAxisRight.master == false) { - if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} - else {this.yAxisLeft.lineOffset = 0;} + // 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(); + } + }); - changeCalled = this.yAxisLeft.redraw() || changeCalled; - this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; - changeCalled = this.yAxisRight.redraw() || changeCalled; - } - else { - changeCalled = this.yAxisRight.redraw() || changeCalled; - } + // mousetrap listener only bounded when active) + this.escListener = this.deactivate.bind(this); + } - // 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); - } + // turn into an event emitter + Emitter(Activator.prototype); - return changeCalled; - }; + // The currently active activator + Activator.current = null; /** - * 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 + * Destroy the activator. Cleans up all created DOM and event listeners */ - LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { - var changed = false; - if (axisUsed == false) { - if (axis.dom.frame.parentNode) { - axis.hide(); - changed = true; - } - } - else { - if (!axis.dom.frame.parentNode) { - axis.show(); - changed = true; - } - } - return changed; - }; + 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) + }; /** - * draw a bar graph - * - * @param groupIds - * @param processedGroupData + * Activate the element + * Overlay is hidden, element is decorated with a blue shadow border */ - LineGraph.prototype._drawBarGraphs = function (groupIds, processedGroupData) { - 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 = this.groups[groupIds[i]]; - if (group.options.style == 'bar') { - if (group.visible == true && (this.options.groups.visibility[groupIds[i]] === undefined || this.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; - } - } - } + Activator.prototype.activate = function () { + // we allow only one active activator at a time + if (Activator.current) { + Activator.current.deactivate(); } + Activator.current = this; - if (barPoints == 0) {return;} + this.active = true; + this.dom.overlay.style.display = 'none'; + util.addClassName(this.dom.container, 'vis-active'); - // 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; - } - }); + this.emit('change'); + this.emit('activate'); - // get intersections - this._getDataIntersections(intersections, combinedData); + // ugly hack: bind ESC after emitting the events, as the Network rebinds all + // keyboard events on a 'change' event + mousetrap.bind('esc', this.escListener); + }; - // plot barchart - for (i = 0; i < combinedData.length; i++) { - group = this.groups[combinedData[i].groupId]; - var minWidth = 0.1 * group.options.barChart.width; + /** + * 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'); + mousetrap.unbind('esc', this.escListener); - 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 = this._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 = this._getSafeDrawData(coreDistance, group, minWidth); - intersections[key].resolved += 1; + this.emit('change'); + this.emit('deactivate'); + }; - 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', this.svgElements, this.svg); - // draw points - if (group.options.drawPoints.enabled == true) { - DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, group, this.svgElements, this.svg); - } - } + /** + * Handle a tap event: activate the container + * @param event + * @private + */ + Activator.prototype._onTapOverlay = function (event) { + // activate the container + this.activate(); + event.stopPropagation(); }; /** - * Fill the intersections object with counters of how many datapoints share the same x coordinates - * @param intersections - * @param combinedData + * 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 */ - LineGraph.prototype._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; + function _hasParent(element, parent) { + while (element) { + if (element === parent) { + return true } + element = element.parentNode; } - }; + return false; + } + + module.exports = Activator; + + +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { /** - * Get the width and offset for bargraphs based on the coredistance between datapoints + * Copyright 2012 Craig Campbell * - * @param coreDistance - * @param group - * @param minWidth - * @returns {{width: Number, offset: Number}} - * @private + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Mousetrap is a simple keyboard shortcut library for Javascript with + * no external dependencies + * + * @version 1.1.2 + * @url craig.is/killing/mice */ - LineGraph.prototype._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; - } + /** + * mapping of special keycodes to their corresponding keys + * + * everything in this dictionary cannot use keypress events + * so it has to be here to map to the correct keycodes for + * keyup/keydown events + * + * @type {Object} + */ + var _MAP = { + 8: 'backspace', + 9: 'tab', + 13: 'enter', + 16: 'shift', + 17: 'ctrl', + 18: 'alt', + 20: 'capslock', + 27: 'esc', + 32: 'space', + 33: 'pageup', + 34: 'pagedown', + 35: 'end', + 36: 'home', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + 45: 'ins', + 46: 'del', + 91: 'meta', + 93: 'meta', + 224: 'meta' + }, + + /** + * mapping for special characters so they can support + * + * this dictionary is only used incase you want to bind a + * keyup or keydown event to one of these keys + * + * @type {Object} + */ + _KEYCODE_MAP = { + 106: '*', + 107: '+', + 109: '-', + 110: '.', + 111 : '/', + 186: ';', + 187: '=', + 188: ',', + 189: '-', + 190: '.', + 191: '/', + 192: '`', + 219: '[', + 220: '\\', + 221: ']', + 222: '\'' + }, + + /** + * this is a mapping of keys that require shift on a US keypad + * back to the non shift equivelents + * + * this is so you can use keyup events with these keys + * + * note that this will only work reliably on US keyboards + * + * @type {Object} + */ + _SHIFT_MAP = { + '~': '`', + '!': '1', + '@': '2', + '#': '3', + '$': '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0', + '_': '-', + '+': '=', + ':': ';', + '\"': '\'', + '<': ',', + '>': '.', + '?': '/', + '|': '\\' + }, + + /** + * this is a list of special strings you can use to map + * to modifier keys when you specify your keyboard shortcuts + * + * @type {Object} + */ + _SPECIAL_ALIASES = { + 'option': 'alt', + 'command': 'meta', + 'return': 'enter', + 'escape': 'esc' + }, + + /** + * variable to store the flipped version of _MAP from above + * needed to check if we should use keypress or not when no action + * is specified + * + * @type {Object|undefined} + */ + _REVERSE_MAP, + + /** + * a list of all the callbacks setup via Mousetrap.bind() + * + * @type {Object} + */ + _callbacks = {}, + + /** + * direct map of string combinations to callbacks used for trigger() + * + * @type {Object} + */ + _direct_map = {}, + + /** + * keeps track of what level each sequence is at since multiple + * sequences can start out with the same sequence + * + * @type {Object} + */ + _sequence_levels = {}, + + /** + * variable to store the setTimeout call + * + * @type {null|number} + */ + _reset_timer, + + /** + * temporary state where we will ignore the next keyup + * + * @type {boolean|string} + */ + _ignore_next_keyup = false, + + /** + * are we currently inside of a sequence? + * type of action ("keyup" or "keydown" or "keypress") or false + * + * @type {boolean|string} + */ + _inside_sequence = false; + + /** + * loop through the f keys, f1 to f19 and add them to the map + * programatically + */ + for (var i = 1; i < 20; ++i) { + _MAP[111 + i] = 'f' + i; } - 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; - } + + /** + * loop through to map numbers on the numeric keypad + */ + for (i = 0; i <= 9; ++i) { + _MAP[i + 96] = i; } - return {width: width, offset: offset}; - }; + /** + * cross browser add event method + * + * @param {Element|HTMLDocument} object + * @param {string} type + * @param {Function} callback + * @returns void + */ + function _addEvent(object, type, callback) { + if (object.addEventListener) { + return object.addEventListener(type, callback, false); + } + object.attachEvent('on' + type, callback); + } - /** - * draw a line graph - * - * @param dataset - * @param group - */ - LineGraph.prototype._drawLineGraph = function (dataset, group) { - if (dataset != null) { - if (dataset.length > 0) { - var path, d; - var svgHeight = Number(this.svg.style.height.replace("px","")); - path = DOMutil.getSVGElement('path', this.svgElements, this.svg); - path.setAttributeNS(null, "class", group.className); + /** + * takes the event and returns the key character + * + * @param {Event} e + * @return {string} + */ + function _characterFromEvent(e) { - // construct path from dataset - if (group.options.catmullRom.enabled == true) { - d = this._catmullRom(dataset, group); - } - else { - d = this._linear(dataset); + // for keypress events we should return the character as is + if (e.type == 'keypress') { + return String.fromCharCode(e.which); } - // append with points for fill and finalize the path - if (group.options.shaded.enabled == true) { - var fillPath = DOMutil.getSVGElement('path',this.svgElements, this.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"); - fillPath.setAttributeNS(null, "d", dFill); + // for non keypress events the special maps are needed + if (_MAP[e.which]) { + return _MAP[e.which]; } - // copy properties to path for drawing. - path.setAttributeNS(null, "d", "M" + d); - // draw points - if (group.options.drawPoints.enabled == true) { - this._drawPoints(dataset, group, this.svgElements, this.svg); + if (_KEYCODE_MAP[e.which]) { + return _KEYCODE_MAP[e.which]; } - } - } - }; - /** - * draw the data points - * - * @param {Array} dataset - * @param {Object} JSONcontainer - * @param {Object} svg | SVG DOM element - * @param {GraphGroup} group - * @param {Number} [offset] - */ - LineGraph.prototype._drawPoints = function (dataset, group, JSONcontainer, svg, offset) { - if (offset === undefined) {offset = 0;} - for (var i = 0; i < dataset.length; i++) { - DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, JSONcontainer, svg); + // if it is not in the special map + return String.fromCharCode(e.which).toLowerCase(); } - }; - + /** + * should we stop this event before firing off callbacks + * + * @param {Event} e + * @return {boolean} + */ + function _stop(e) { + var element = e.target || e.srcElement, + tag_name = element.tagName; - /** - * 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 - */ - LineGraph.prototype._convertXcoordinates = function (datapoints) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; + // if the element has the class "mousetrap" then no need to stop + if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) { + return false; + } - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.width; - yValue = datapoints[i].y; - extractedData.push({x: xValue, y: yValue}); + // stop for input, select, and textarea + return tag_name == 'INPUT' || tag_name == 'SELECT' || tag_name == 'TEXTAREA' || (element.contentEditable && element.contentEditable == 'true'); } - return extractedData; - }; + /** + * checks if two arrays are equal + * + * @param {Array} modifiers1 + * @param {Array} modifiers2 + * @returns {boolean} + */ + function _modifiersMatch(modifiers1, modifiers2) { + return modifiers1.sort().join(',') === modifiers2.sort().join(','); + } + /** + * resets all sequence counters except for the ones passed in + * + * @param {Object} do_not_reset + * @returns void + */ + function _resetSequences(do_not_reset) { + do_not_reset = do_not_reset || {}; + var active_sequences = false, + key; - /** - * 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 - */ - 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; - } + for (key in _sequence_levels) { + if (do_not_reset[key]) { + active_sequences = true; + continue; + } + _sequence_levels[key] = 0; + } - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.width; - yValue = Math.round(axis.convertValue(datapoints[i].y)); - extractedData.push({x: xValue, y: yValue}); + if (!active_sequences) { + _inside_sequence = false; + } } - group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); + /** + * finds all callbacks that match based on the keycode, modifiers, + * and action + * + * @param {string} character + * @param {Array} modifiers + * @param {string} action + * @param {boolean=} remove - should we remove any matches + * @param {string=} combination + * @returns {Array} + */ + function _getMatches(character, modifiers, action, remove, combination) { + var i, + callback, + matches = []; - return extractedData; - }; + // if there are no events related to this keycode + if (!_callbacks[character]) { + return []; + } - /** - * 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 - */ - LineGraph.prototype._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 a modifier key is coming up on its own we should allow it + if (action == 'keyup' && _isModifier(character)) { + modifiers = [character]; + } - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + // loop through all callbacks for the key that was pressed + // and see if any of them match + for (i = 0; i < _callbacks[character].length; ++i) { + callback = _callbacks[character][i]; + // if this is a sequence but it is not at the right level + // then move onto the next match + if (callback.seq && _sequence_levels[callback.seq] != callback.level) { + continue; + } - // 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 + // if the action we are looking for doesn't match the action we got + // then we should keep going + if (action != callback.action) { + continue; + } - // 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 }; + // if this is a keypress event that means that we need to only + // look at the character, otherwise check the modifiers as + // well + if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) { - d += "C" + - bp1.x + "," + - bp1.y + " " + - bp2.x + "," + - bp2.y + " " + - p2.x + "," + - p2.y + " "; - } + // remove is used so if you change your mind and call bind a + // second time with a new function the first one is overwritten + if (remove && callback.combo == combination) { + _callbacks[character].splice(i, 1); + } - return d; - }; + matches.push(callback); + } + } - /** - * 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 - * @returns {string} - * @private - */ - LineGraph.prototype._catmullRom = function(data, group) { - var alpha = group.options.catmullRom.alpha; - if (alpha == 0 || alpha === undefined) { - return this._catmullRomUniform(data); + return matches; } - 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)); + /** + * takes a key event and figures out what the modifiers are + * + * @param {Event} e + * @returns {Array} + */ + function _eventModifiers(e) { + var modifiers = []; - // 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 ] + if (e.shiftKey) { + modifiers.push('shift'); + } - // [ 0 1 0 0 ] - // [ -d2pow2a/N A/N d1pow2a/N 0 ] - // [ 0 d3pow2a/M B/M -d2pow2a/M ] - // [ 0 0 1 0 ] + if (e.altKey) { + modifiers.push('alt'); + } - 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); + if (e.ctrlKey) { + modifiers.push('ctrl'); + } - 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;} + if (e.metaKey) { + modifiers.push('meta'); + } - bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), - y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; + return modifiers; + } - bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), - y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + /** + * actually calls the callback function + * + * if your callback function returns false this will use the jquery + * convention - prevent default and stop propogation on the event + * + * @param {Function} callback + * @param {Event} e + * @returns void + */ + function _fireCallback(callback, e) { + if (callback(e) === false) { + if (e.preventDefault) { + e.preventDefault(); + } - 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 (e.stopPropagation) { + e.stopPropagation(); + } - return d; + e.returnValue = false; + e.cancelBubble = true; + } } - }; - /** - * this generates the SVG path for a linear drawing between datapoints. - * @param data - * @returns {string} - * @private - */ - LineGraph.prototype._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; - }; + /** + * handles a character key event + * + * @param {string} character + * @param {Event} e + * @returns void + */ + function _handleCharacter(character, e) { - module.exports = LineGraph; + // if this event should not happen stop here + if (_stop(e)) { + return; + } + var callbacks = _getMatches(character, _eventModifiers(e), e.type), + i, + do_not_reset = {}, + processed_sequence_callback = false; -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { + // loop through matching callbacks for this key event + for (i = 0; i < callbacks.length; ++i) { - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Component = __webpack_require__(22); - var DataStep = __webpack_require__(36); + // fire for all sequence callbacks + // this is because if for example you have multiple sequences + // bound such as "g i" and "g t" they both need to fire the + // callback for matching g cause otherwise you can only ever + // match the first one + if (callbacks[i].seq) { + processed_sequence_callback = true; - /** - * 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; + // keep a list of which sequences were matches for later + do_not_reset[callbacks[i].seq] = 1; + _fireCallback(callbacks[i].callback, e); + continue; + } - 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, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - } - }; + // if there were no sequence matches but we are still here + // that means this is a regular match so we should fire that + if (!processed_sequence_callback && !_inside_sequence) { + _fireCallback(callbacks[i].callback, e); + } + } + + // if you are inside of a sequence and the key you are pressing + // is not a modifier key then we should reset all sequences + // that were not matched by this key event + if (e.type == _inside_sequence && !_isModifier(character)) { + _resetSequences(do_not_reset); + } + } + + /** + * handles a keydown event + * + * @param {Event} e + * @returns void + */ + function _handleKey(e) { - this.linegraphOptions = linegraphOptions; - this.linegraphSVG = svg; - this.props = {}; - this.DOMelements = { // dynamic elements - lines: {}, - labels: {} - }; + // normalize e.which for key events + // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion + e.which = typeof e.which == "number" ? e.which : e.keyCode; - this.dom = {}; + var character = _characterFromEvent(e); - this.range = {start:0, end:0}; + // no character found then stop + if (!character) { + return; + } - this.options = util.extend({}, this.defaultOptions); - this.conversionFactor = 1; + if (e.type == 'keyup' && _ignore_next_keyup == character) { + _ignore_next_keyup = false; + return; + } - this.setOptions(options); - this.width = Number(('' + this.options.width).replace("px","")); - this.minWidth = this.width; - this.height = this.linegraphSVG.offsetHeight; + _handleCharacter(character, e); + } - this.stepPixels = 25; - this.stepPixelsForced = 25; - this.lineOffset = 0; - this.master = true; - this.svgElements = {}; + /** + * determines if the keycode specified is a modifier key or not + * + * @param {string} key + * @returns {boolean} + */ + function _isModifier(key) { + return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta'; + } + /** + * called to set a 1 second timeout on the specified sequence + * + * this is so after each key press in the sequence you have 1 second + * to press the next key before you have to start over + * + * @returns void + */ + function _resetSequenceTimer() { + clearTimeout(_reset_timer); + _reset_timer = setTimeout(_resetSequences, 1000); + } - this.groups = {}; - this.amountOfGroups = 0; + /** + * reverses the map lookup so that we can look for specific keys + * to see what can and can't use keypress + * + * @return {Object} + */ + function _getReverseMap() { + if (!_REVERSE_MAP) { + _REVERSE_MAP = {}; + for (var key in _MAP) { - // create the HTML DOM - this._create(); - } + // pull out the numeric keypad from here cause keypress should + // be able to detect the keys from the character + if (key > 95 && key < 112) { + continue; + } - DataAxis.prototype = new Component(); + if (_MAP.hasOwnProperty(key)) { + _REVERSE_MAP[_MAP[key]] = key; + } + } + } + return _REVERSE_MAP; + } + + /** + * picks the best action based on the key combination + * + * @param {string} key - character for key + * @param {Array} modifiers + * @param {string=} action passed in + */ + function _pickBestAction(key, modifiers, action) { + // if no action was picked in we should try to pick the one + // that we think would work best for this key + if (!action) { + action = _getReverseMap()[key] ? 'keydown' : 'keypress'; + } + // modifier keys don't work as expected with keypress, + // switch to keydown + if (action == 'keypress' && modifiers.length) { + action = 'keydown'; + } - DataAxis.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + return action; } - this.amountOfGroups += 1; - }; - DataAxis.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; + /** + * binds a key sequence to an event + * + * @param {string} combo - combo specified in bind call + * @param {Array} keys + * @param {Function} callback + * @param {string=} action + * @returns void + */ + function _bindSequence(combo, keys, callback, action) { - DataAxis.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; - } - }; + // start off by adding a sequence level record for this combination + // and setting the level to 0 + _sequence_levels[combo] = 0; + // if there is no action pick the best one for the first key + // in the sequence + if (!action) { + action = _pickBestAction(keys[0], []); + } - 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' - ]; - util.selectiveExtend(fields, this.options, options); + /** + * callback to increase the sequence level for this sequence and reset + * all other sequences that were active + * + * @param {Event} e + * @returns void + */ + var _increaseSequence = function(e) { + _inside_sequence = action; + ++_sequence_levels[combo]; + _resetSequenceTimer(); + }, - this.minWidth = Number(('' + this.options.width).replace("px","")); + /** + * wraps the specified callback inside of another function in order + * to reset all sequence counters as soon as this sequence is done + * + * @param {Event} e + * @returns void + */ + _callbackAndReset = function(e) { + _fireCallback(callback, e); - if (redraw == true && this.dom.frame) { - this.hide(); - this.show(); - } + // we should ignore the next key up if the action is key down + // or keypress. this is so if you finish a sequence and + // release the key the final key will not trigger a keyup + if (action !== 'keyup') { + _ignore_next_keyup = _characterFromEvent(e); + } + + // weird race condition if a sequence ends with the key + // another sequence begins with + setTimeout(_resetSequences, 10); + }, + i; + + // loop through keys one at a time and bind the appropriate callback + // function. for any key leading up to the final one it should + // increase the sequence. after the final, it should reset all sequences + for (i = 0; i < keys.length; ++i) { + _bindSingle(keys[i], i < keys.length - 1 ? _increaseSequence : _callbackAndReset, action, combo, i); + } } - }; + /** + * binds a single keyboard combination + * + * @param {string} combination + * @param {Function} callback + * @param {string=} action + * @param {string=} sequence_name - name of sequence if part of sequence + * @param {number=} level - what part of the sequence the command is + * @returns void + */ + function _bindSingle(combination, callback, action, sequence_name, level) { - /** - * 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; + // make sure multiple spaces in a row become a single space + combination = combination.replace(/\s+/g, ' '); - this.dom.lineContainer = document.createElement('div'); - this.dom.lineContainer.style.width = '100%'; - this.dom.lineContainer.style.height = this.height; + var sequence = combination.split(' '), + i, + key, + keys, + modifiers = []; - // 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 this pattern is a sequence of keys then run through this method + // to reprocess each pattern one key at a time + if (sequence.length > 1) { + return _bindSequence(combination, sequence, callback, action); + } - DataAxis.prototype._redrawGroupIcons = function () { - DOMutil.prepareElements(this.svgElements); + // take the keys from this pattern and figure out what the actual + // pattern is all about + keys = combination === '+' ? ['+'] : combination.split('+'); - var x; - var iconWidth = this.options.iconWidth; - var iconHeight = 15; - var iconOffset = 4; - var y = iconOffset + 0.5 * iconHeight; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; - if (this.options.orientation == 'left') { - x = iconOffset; - } - else { - x = this.width - iconWidth - iconOffset; - } + // normalize key names + if (_SPECIAL_ALIASES[key]) { + key = _SPECIAL_ALIASES[key]; + } - 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; + // if this is not a keypress event then we should + // be smart about using shift keys + // this will only work for US keyboards however + if (action && action != 'keypress' && _SHIFT_MAP[key]) { + key = _SHIFT_MAP[key]; + modifiers.push('shift'); + } + + // if this key is a modifier then add it to the list of modifiers + if (_isModifier(key)) { + modifiers.push(key); + } } - } - } - DOMutil.cleanupElements(this.svgElements); - }; + // depending on what the key combination is + // we will try to pick the best event for it + action = _pickBestAction(key, modifiers, action); - /** - * Create the HTML DOM for the DataAxis - */ - DataAxis.prototype.show = function() { - 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); - } - } + // make sure to initialize array if this is the first time + // a callback is added for this key + if (!_callbacks[key]) { + _callbacks[key] = []; + } - if (!this.dom.lineContainer.parentNode) { - this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); - } - }; + // remove an existing match if there is one + _getMatches(key, modifiers, action, !sequence_name, combination); - /** - * Create the HTML DOM for the DataAxis - */ - DataAxis.prototype.hide = function() { - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + // add this call back to the array + // if it is a sequence put it at the beginning + // if not put it at the end + // + // this is important because the way these are processed expects + // the sequence ones to come first + _callbacks[key][sequence_name ? 'unshift' : 'push']({ + callback: callback, + modifiers: modifiers, + action: action, + seq: sequence_name, + level: level, + combo: combination + }); } - if (this.dom.lineContainer.parentNode) { - this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + /** + * binds multiple combinations to the same callback + * + * @param {Array} combinations + * @param {Function} callback + * @param {string|undefined} action + * @returns void + */ + function _bindMultiple(combinations, callback, action) { + for (var i = 0; i < combinations.length; ++i) { + _bindSingle(combinations[i], callback, action); + } } - }; - /** - * Set a range (start and end) - * @param end - * @param start - * @param end - */ - DataAxis.prototype.setRange = function (start, end) { - this.range.start = start; - this.range.end = end; - }; + // start! + _addEvent(document, 'keypress', _handleKey); + _addEvent(document, 'keydown', _handleKey); + _addEvent(document, 'keyup', _handleKey); - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - DataAxis.prototype.redraw = function () { - var changeCalled = false; - 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.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... + var mousetrap = { - this.dom.lineContainer.style.height = this.height + 'px'; - this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; + /** + * binds an event to mousetrap + * + * can be a single key, a combination of keys separated with +, + * a comma separated list of keys, an array of keys, or + * a sequence of keys separated by spaces + * + * be sure to list the modifier keys first to make sure that the + * correct key ends up getting bound (the last key in the pattern) + * + * @param {string|Array} keys + * @param {Function} callback + * @param {string=} action - 'keypress', 'keydown', or 'keyup' + * @returns void + */ + bind: function(keys, callback, action) { + _bindMultiple(keys instanceof Array ? keys : [keys], callback, action); + _direct_map[keys + ':' + action] = callback; + return this; + }, - var props = this.props; - var frame = this.dom.frame; + /** + * unbinds an event to mousetrap + * + * the unbinding sets the callback function of the specified key combo + * to an empty function and deletes the corresponding key in the + * _direct_map dict. + * + * the keycombo+action has to be exactly the same as + * it was defined in the bind method + * + * TODO: actually remove this from the _callbacks dictionary instead + * of binding an empty function + * + * @param {string|Array} keys + * @param {string} action + * @returns void + */ + unbind: function(keys, action) { + if (_direct_map[keys + ':' + action]) { + delete _direct_map[keys + ':' + action]; + this.bind(keys, function() {}, action); + } + return this; + }, - // update classname - frame.className = 'dataaxis'; + /** + * triggers an event that has already been bound + * + * @param {string} keys + * @param {string=} action + * @returns void + */ + trigger: function(keys, action) { + _direct_map[keys + ':' + action](); + return this; + }, - // calculate character width and height - this._calculateCharSize(); + /** + * resets the library back to its initial state. this is useful + * if you want to clear out the current keyboard shortcuts and bind + * new ones - for example if you switch to another page + * + * @returns void + */ + reset: function() { + _callbacks = {}; + _direct_map = {}; + return this; + } + }; - var orientation = this.options.orientation; - var showMinorLabels = this.options.showMinorLabels; - var showMajorLabels = this.options.showMajorLabels; + module.exports = mousetrap; - // determine the width and height of the elemens 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"; - } - 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"; - } - changeCalled = this._redrawLabels(); - if (this.options.icons == true) { - this._redrawGroupIcons(); - } +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { + + var Emitter = __webpack_require__(10); + var Hammer = __webpack_require__(18); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(8); + var Range = __webpack_require__(20); + var Core = __webpack_require__(24); + var TimeAxis = __webpack_require__(25); + var CurrentTime = __webpack_require__(27); + var CustomTime = __webpack_require__(29); + var LineGraph = __webpack_require__(42); + + /** + * 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; } - return changeCalled; - }; - /** - * Repaint major and minor text labels and vertical grid lines - * @private - */ - DataAxis.prototype._redrawLabels = function () { - DOMutil.prepareElements(this.DOMelements.lines); - DOMutil.prepareElements(this.DOMelements.labels); + var me = this; + this.defaultOptions = { + start: null, + end: null, - var orientation = this.options['orientation']; + autoResize: 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; + orientation: 'bottom', + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - var step = new DataStep(this.range.start, this.range.end, minimumStep, this.dom.frame.offsetHeight, this.options.customRange[this.options.orientation]); - 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; + // Create the DOM, props, and emitter + this._create(container); - var amountOfSteps = this.height / stepPixels; - var stepDifference = 0; + // all components listed here will be repainted automatically + this.components = []; - 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(); + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + util: { + snap: null, // will be specified after TimeAxis is created + 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) } - amountOfSteps = this.height / stepPixels; - } - else { - amountOfSteps += 0.25; - } + }; + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; - this.valueAtZero = step.marginEnd; - var marginStartPos = 0; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.components.push(this.timeAxis); + this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); - // do not draw the first label - var max = 1; + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); - 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(); + // 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.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { - this._redrawLabel(y - 2, step.getCurrent(), orientation, 'yAxis minor', this.props.minorCharHeight); - } + // item set + this.linegraph = new LineGraph(this.body); + this.components.push(this.linegraph); - 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(), 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); - } + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - max++; + // apply options + if (options) { + this.setOptions(options); } - if (this.master == false) { - this.conversionFactor = y / (this.valueAtZero - step.current); - } - else { - this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - var offset = this.options.icons == true ? this.options.iconWidth + this.options.labelOffsetX + 15 : this.options.labelOffsetX + 15; - // this will resize the yAxis to accomodate 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(); - return 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(); - return true; + // create itemset + if (items) { + this.setItems(items); } else { - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - return false; + this.redraw(); } - }; + } - DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtZero - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; - }; + // Extend the functionality from Core + Graph2d.prototype = new Core(); /** - * Create a label for the axis at position x - * @private - * @param y - * @param text - * @param orientation - * @param className - * @param characterHeight + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items */ - 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"; + 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 { - label.style.right = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "left"; + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' + } + }); } - 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; - } - }; + // set items + this.itemsData = newDataSet; + this.linegraph && this.linegraph.setItems(newDataSet); - /** - * 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 (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; - if (orientation == 'left') { - line.style.left = (this.width - offset) + 'px'; + this.setWindow(start, end, {animate: false}); } else { - line.style.right = (this.width - offset) + 'px'; + this.fit({animate: false}); } - - line.style.width = width + 'px'; - line.style.top = y + 'px'; } }; - - - - /** - * 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 + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups */ - 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); + Graph2d.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; } - - 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); + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; } + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); + } + + this.groupsData = newDataSet; + this.linegraph.setGroups(newDataSet); }; /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * @param {Date} date the date to be snapped. - * @return {Date} snappedDate + * 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 */ - DataAxis.prototype.snap = function(date) { - return this.step.snap(date); - }; - - module.exports = DataAxis; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { + 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; + } + } /** - * @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 + * This checks if the visible option of the supplied group (by ID) is true or false. + * @param groupId + * @returns {*} */ - function DataStep(start, end, minimumStep, containerHeight, customRange) { - // 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.setRange(start, end, minimumStep, containerHeight, customRange); + 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; + } } - /** - * 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 + * 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 */ - 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; + Graph2d.prototype.getItemRange = function() { + var min = null; + var max = null; - if (this._start == this._end) { - this._start -= 0.75; - this._end += 1; + // 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; + } + } + } } - if (this.autoScale) { - this.setMinimumStep(minimumStep, containerHeight); - } - this.setFirst(customRange); + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; }; - /** - * 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; - } + module.exports = Graph2d; - 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]; - }; +/***/ }, +/* 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__(8); + var Component = __webpack_require__(22); + var DataAxis = __webpack_require__(43); + var GraphGroup = __webpack_require__(45); + var Legend = __webpack_require__(46); + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date + * This is the constructor of the LineGraph. It requires a Timeline body and options. + * + * @param body + * @param options + * @constructor */ - 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; - this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; - this.marginRange = this.marginEnd - this.marginStart; + function LineGraph(body, options) { + this.id = util.randomUUID(); + this.body = body; - this.current = this.marginEnd; + 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, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + } + }, + 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: {} + } + }; - }; + // 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; - 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; - } - } + 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); + } + }; - /** - * 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); - }; + // 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); + } + }; - /** - * Do the next step - */ - DataStep.prototype.next = function() { - var prev = this.current; - this.current -= this.step; + 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 - // safety mechanism: if current time is still unchanged, move to the end - if (this.current == prev) { - this.current = this._end; - } - }; + this.svgElements = {}; + this.setOptions(options); + this.groupsUsingDefaultStyles = [0]; - /** - * Do the next step - */ - DataStep.prototype.previous = function() { - this.current += this.step; - this.marginEnd += this.step; - this.marginRange = this.marginEnd - this.marginStart; - }; + this.body.emitter.on("rangechanged", function() { + me.lastStart = me.body.range.start; + me.svg.style.left = util.option.asSize(-me.width); + me._updateGraph.apply(me); + }); + // create the HTML DOM + this._create(); + this.body.emitter.emit("change"); + } + LineGraph.prototype = new Component(); /** - * Get the current datetime - * @return {String} current The current date + * Create the HTML DOM for the ItemSet */ - DataStep.prototype.getCurrent = function() { - var toPrecision = '' + Number(this.current).toPrecision(5); - if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { - 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; - }; + 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); - /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * @param {Date} date the date to be snapped. - * @return {Date} snappedDate - */ - DataStep.prototype.snap = function(date) { + 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); - /** - * 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.show(); }; - module.exports = DataStep; - - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet + * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. + * @param options */ - 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; - } - - 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 = []; - } - }; - - GraphGroup.prototype.setZeroPosition = function(pos) { - this.zeroPosition = pos; - }; - - GraphGroup.prototype.setOptions = function(options) { - if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + LineGraph.prototype.setOptions = function(options) { + if (options) { + var fields = ['sampling','defaultGroup','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; 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') { @@ -19963,2099 +19975,2218 @@ return /******/ (function(modules) { // webpackBootstrap } } } - } - }; - - 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.setOptions(group.options); - }; - - 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); - 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)); + if (this.yAxisLeft) { + if (options.dataAxis !== undefined) { + this.yAxisLeft.setOptions(this.options.dataAxis); + this.yAxisRight.setOptions(this.options.dataAxis); } - else { - fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + - "L"+x+"," + (y + fillHeight) + " " + - "L"+ (x + iconWidth) + "," + (y + fillHeight) + - "L"+ (x + iconWidth) + ","+y); + } + + if (this.legendLeft) { + if (options.legend !== undefined) { + this.legendLeft.setOptions(this.options.legend); + this.legendRight.setOptions(this.options.legend); } - fillPath.setAttributeNS(null, "class", this.className + " iconFill"); } - if (this.options.drawPoints.enabled == true) { - DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); + if (this.groups.hasOwnProperty(UNGROUPED)) { + this.groups[UNGROUPED].setOptions(options); } } - 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.dom.frame) { + this._updateGraph(); } }; /** - * - * @param iconWidth - * @param iconHeight - * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} + * Hide the component from the DOM */ - 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}; - } - - module.exports = GraphGroup; - - -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Component = __webpack_require__(22); + LineGraph.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } + }; /** - * Legend for Graph2d + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - 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 - } + LineGraph.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); } - this.side = side; - this.options = util.extend({},this.defaultOptions); - this.linegraphOptions = linegraphOptions; + }; - this.svgElements = {}; - this.dom = {}; - this.groups = {}; - this.amountOfGroups = 0; - this._create(); - this.setOptions(options); - } + /** + * Set items + * @param {vis.DataSet | null} items + */ + LineGraph.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; - Legend.prototype = new Component(); + // 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); + }); - Legend.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); } - this.amountOfGroups += 1; - }; - Legend.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); - Legend.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); } + this._updateUngrouped(); + this._updateGraph(); + this.redraw(); }; - 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"; + /** + * Set groups + * @param {vis.DataSet} groups + */ + LineGraph.prototype.setGroups = function(groups) { + var me = this, + ids; - this.dom.textArea = document.createElement('div'); - this.dom.textArea.className = 'legendText'; - this.dom.textArea.style.position = "relative"; - this.dom.textArea.style.top = "0px"; + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); - 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%'; + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw + } - this.dom.frame.appendChild(this.svg); - this.dom.frame.appendChild(this.dom.textArea); - }; + // 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'); + } - /** - * 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); + 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(); }; + /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Update the datapoints + * @param [ids] + * @private */ - Legend.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } + LineGraph.prototype._onUpdate = function(ids) { + this._updateUngrouped(); + this._updateAllGroupData(); + this._updateGraph(); + this.redraw(); }; + 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]); + } - Legend.prototype.setOptions = function(options) { - var fields = ['enabled','orientation','icons','left','right']; - util.selectiveDeepExtend(fields, this.options, options); + this._updateGraph(); + this.redraw(); }; + LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; - 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++; + 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]]; } - } - - 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 = ''; - } + } + this._updateUngrouped(); + this._updateGraph(); + this.redraw(); + }; - 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 = ''; + /** + * update a group object + * + * @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.dom.frame.style.bottom = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.top = ''; + this.yAxisLeft.addGroup(groupId, this.groups[groupId]); + this.legendLeft.addGroup(groupId, this.groups[groupId]); } - - 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.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.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' - this.drawLegendIcons(); + this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); + this.legendLeft.updateGroup(groupId, this.groups[groupId]); } + } + this.legendLeft.redraw(); + this.legendRight.redraw(); + }; - var content = ''; - for (var groupId in this.groups) { + LineGraph.prototype._updateAllGroupData = function () { + if (this.itemsData != null) { + var groupsContent = {}; + var groupId; + for (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 + '
'; - } + groupsContent[groupId] = []; + } + } + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + 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]); } } - 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'; - - 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; + /** + * 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; } } } - DOMutil.cleanupElements(this.svgElements); + 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(); }; - module.exports = Legend; + /** + * Redraw the component, mandatory function + * @return {boolean} Returns true if the component is resized + */ + LineGraph.prototype.redraw = function() { + var resized = false; -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + if (this.lastWidth === undefined && this.width || this.lastWidth != this.width) { + resized = 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.width != this.lastWidth); + this.lastVisibleInterval = visibleInterval; + this.lastWidth = this.width; - // Utility functions for ordering and stacking of items - var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors + // calculate actual size and position + this.width = this.dom.frame.offsetWidth; - /** - * 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; - }); - }; + // 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.width); + this.svg.style.left = util.option.asSize(-this.width); + } - /** - * 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; + if (zoomed == true || this.abortedGraphUpdate == true) { + this._updateGraph(); + } + 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.width != 0) { + var rangePerPixelInv = this.width/range; + var xOffset = offset * rangePerPixelInv; + this.svg.style.left = (-this.width - xOffset) + "px"; + } + } - return aTime - bTime; - }); + } + + this.legendLeft.redraw(); + this.legendRight.redraw(); + + return resized; }; /** - * 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 + * Update and redraw the graph. + * */ - exports.stack = function(items, margin, force) { - var i, iMax; + LineGraph.prototype._updateGraph = function () { + // reset the svg elements + DOMutil.prepareElements(this.svgElements); + if (this.width != 0 && this.itemsData != null) { + var group, i; + var preprocessedGroupData = {}; + var processedGroupData = {}; + var groupRanges = {}; + var changeCalled = false; - if (force) { - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - items[i].top = null; + // 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._getRelevantData(groupIds, groupsData, minDate, maxDate); + // 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); - // calculate new, non-overlapping positions - for (i = 0, iMax = items.length; i < iMax; i++) { - var item = items[i]; - if (item.top === null) { - // initialize top position - item.top = margin.axis; + // 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); + if (changeCalled == true) { + DOMutil.cleanupElements(this.svgElements); + this.abortedGraphUpdate = true; + this.body.emitter.emit("change"); + return; + } + this.abortedGraphUpdate = false; - 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.ignoreStacking == false && exports.collision(item, other, margin.item)) { - collidingItem = other; - break; - } - } + // 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 (collidingItem != null) { - // There is a collision. Reposition the items above the colliding element - item.top = collidingItem.top + collidingItem.height + margin.item.vertical; + + // draw the groups + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style == 'line') { + this._drawLineGraph(processedGroupData[groupIds[i]], group); } - } while (collidingItem); + } + this._drawBarGraphs(groupIds, processedGroupData); } } - }; + // cleanup unused svg elements + DOMutil.cleanupElements(this.svgElements); + }; - /** - * 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; + LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { + // 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. + 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.binarySearchGeneric(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); + } } } } - items[i].top = newTop; - } - else { - items[i].top = margin.axis; } } - }; - /** - * 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); + this._applySampling(groupIds, groupsData); }; + 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; -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(18); - 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 || {}; + // 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))); - this.selected = false; - this.displayed = false; - this.dirty = true; + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); - this.top = null; - this.left = null; - this.width = null; - this.height = null; + } + groupsData[groupIds[i]] = sampledData; + } + } + } + } + }; - this.ignoreStacking = false; - } + LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { + var groupData, group, i,j; + var barCombinedDataLeft = []; + var barCombinedDataRight = []; + var barCombinedData; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + groupData = groupsData[groupIds[i]]; + if (groupData.length > 0) { + group = this.groups[groupIds[i]]; + if (group.options.style == 'line' || group.options.barChart.handleOverlap != "stack") { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + groupRanges[groupIds[i]] = {min: yMin, max: yMax, yAxisOrientation: group.options.yAxisOrientation}; + } + else if (group.options.style == 'bar') { + if (group.options.yAxisOrientation == 'left') { + barCombinedData = barCombinedDataLeft; + } + else { + barCombinedData = barCombinedDataRight; + } - /** - * Select current item - */ - Item.prototype.select = function() { - this.selected = true; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + groupRanges[groupIds[i]] = {min: 0, max: 0, yAxisOrientation: group.options.yAxisOrientation, ignore: true}; - /** - * Unselect current item - */ - Item.prototype.unselect = function() { - this.selected = false; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + // combine data + for (j = 0; j < groupData.length; j++) { + barCombinedData.push({ + x: groupData[j].x, + y: groupData[j].y, + groupId: groupIds[i] + }); + } + } + } + } - /** - * 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(); + var intersections; + if (barCombinedDataLeft.length > 0) { + // sort by time and by group + barCombinedDataLeft.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }); + intersections = {}; + this._getDataIntersections(intersections, barCombinedDataLeft); + groupRanges["__barchartLeft"] = this._getStackedBarYRange(intersections, barCombinedDataLeft); + groupRanges["__barchartLeft"].yAxisOrientation = "left"; + groupIds.push("__barchartLeft"); + } + if (barCombinedDataRight.length > 0) { + // sort by time and by group + barCombinedDataRight.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }); + intersections = {}; + this._getDataIntersections(intersections, barCombinedDataRight); + groupRanges["__barchartRight"] = this._getStackedBarYRange(intersections, barCombinedDataRight); + groupRanges["__barchartRight"].yAxisOrientation = "right"; + groupIds.push("__barchartRight"); + } + } }; - /** - * 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(); + LineGraph.prototype._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; } } - else { - this.parent = parent; + 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; + } } - }; - /** - * 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; + return {min: yMin, max: yMax}; }; - /** - * 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 + * 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 */ - Item.prototype.hide = function() { - return false; - }; + LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { + var changeCalled = 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) { + 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; - /** - * Repaint the item - */ - Item.prototype.redraw = function() { - // should be implemented by the item - }; + if (groupRanges[groupIds[i]].yAxisOrientation == 'left') { + 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; + } + } + } + } - /** - * Reposition the Item horizontally - */ - Item.prototype.repositionX = function() { - // should be implemented by the item - }; + if (yAxisLeftUsed == true) { + this.yAxisLeft.setRange(minLeft, maxLeft); + } + if (yAxisRightUsed == true) { + this.yAxisRight.setRange(minRight, maxRight); + } + } - /** - * Reposition the Item vertically - */ - Item.prototype.repositionY = function() { - // should be implemented by the item - }; + changeCalled = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || changeCalled; + changeCalled = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || changeCalled; - /** - * 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; + if (yAxisRightUsed == true && yAxisLeftUsed == true) { + this.yAxisLeft.drawIcons = true; + this.yAxisRight.drawIcons = true; + } + else { + this.yAxisLeft.drawIcons = false; + this.yAxisRight.drawIcons = false; + } - var deleteButton = document.createElement('div'); - deleteButton.className = 'delete'; - deleteButton.title = 'Delete this item'; + this.yAxisRight.master = !yAxisLeftUsed; - Hammer(deleteButton, { - preventDefault: true - }).on('tap', function (event) { - me.parent.removeFromDataSet(me); - event.stopPropagation(); - }); + if (this.yAxisRight.master == false) { + if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} + else {this.yAxisLeft.lineOffset = 0;} - anchor.appendChild(deleteButton); - this.dom.deleteButton = deleteButton; + changeCalled = this.yAxisLeft.redraw() || changeCalled; + this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; + changeCalled = this.yAxisRight.redraw() || changeCalled; } - 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 { + changeCalled = this.yAxisRight.redraw() || changeCalled; } - }; - /** - * 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); + // clean the accumulated lists + if (groupIds.indexOf("__barchartLeft") != -1) { + groupIds.splice(groupIds.indexOf("__barchartLeft"),1); } - else { - content = this.data.content; + if (groupIds.indexOf("__barchartRight") != -1) { + groupIds.splice(groupIds.indexOf("__barchartRight"),1); } - 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; - } + return changeCalled; }; /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents + * 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 */ - Item.prototype._updateTitle = function (element) { - if (this.data.title != null) { - element.title = this.data.title || ''; + LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { + var changed = false; + if (axisUsed == false) { + if (axis.dom.frame.parentNode) { + axis.hide(); + changed = true; + } } else { - element.removeAttribute('title'); + if (!axis.dom.frame.parentNode) { + axis.show(); + changed = true; + } } + return changed; }; + /** - * 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 + * draw a bar graph + * + * @param groupIds + * @param processedGroupData */ - Item.prototype._updateDataAttributes = function(element) { - if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { - var attributes = []; + LineGraph.prototype._drawBarGraphs = function (groupIds, processedGroupData) { + var combinedData = []; + var intersections = {}; + var coreDistance; + var key, drawData; + var group; + var i,j; + var barPoints = 0; - if (Array.isArray(this.options.dataAttributes)) { - attributes = this.options.dataAttributes; - } - else if (this.options.dataAttributes == 'all') { - attributes = Object.keys(this.data); + // combine all barchart data + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style == 'bar') { + if (group.visible == true && (this.options.groups.visibility[groupIds[i]] === undefined || this.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 { - return; + } + + 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; } + }); - for (var i = 0; i < attributes.length; i++) { - var name = attributes[i]; - var value = this.data[name]; + // get intersections + this._getDataIntersections(intersections, combinedData); - if (value != null) { - element.setAttribute('data-' + name, value); + // plot barchart + for (i = 0; i < combinedData.length; i++) { + group = this.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 = this._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 = this._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 { - element.removeAttribute('data-' + name); + 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', this.svgElements, this.svg); + // draw points + if (group.options.drawPoints.enabled == true) { + DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, group, this.svgElements, this.svg); + } } }; /** - * Update custom styles of the element - * @param element + * Fill the intersections object with counters of how many datapoints share the same x coordinates + * @param intersections + * @param combinedData * @private */ - 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; - } - }; - - module.exports = Item; - - -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(18); - var Item = __webpack_require__(40); - var RangeItem = __webpack_require__(42); - - /** - * @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 + LineGraph.prototype._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); } - }; - 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 (i > 0) { + coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); + 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; } } - - Item.call(this, data, conversion, options); - - this.ignoreStacking = true; // this is not used when stacking - this.emptyContent = false; - } - - BackgroundItem.prototype = new Item (null, null, null); - - BackgroundItem.prototype.baseClassName = 'item background'; - - /** - * 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 + * 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 */ - 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); - - // attach this item as attribute - dom.box['timeline-item'] = this; - - this.dirty = true; - } + LineGraph.prototype._getSafeDrawData = function (coreDistance, group, minWidth) { + var width, offset; + if (coreDistance < group.options.barChart.width && coreDistance > 0) { + width = coreDistance < minWidth ? minWidth : coreDistance; - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + 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; + } } - if (!dom.box.parentNode) { - var background = this.parent.dom.background; - if (!background) { - throw new Error('Cannot redraw item: parent has no background container element'); + 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; } - 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); + return {width: width, offset: offset}; + }; - // 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'; + /** + * draw a line graph + * + * @param dataset + * @param group + */ + LineGraph.prototype._drawLineGraph = function (dataset, group) { + if (dataset != null) { + if (dataset.length > 0) { + var path, d; + var svgHeight = Number(this.svg.style.height.replace("px","")); + path = DOMutil.getSVGElement('path', this.svgElements, this.svg); + path.setAttributeNS(null, "class", group.className); - // 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 + // construct path from dataset + if (group.options.catmullRom.enabled == true) { + d = this._catmullRom(dataset, group); + } + else { + d = this._linear(dataset); + } + + // append with points for fill and finalize the path + if (group.options.shaded.enabled == true) { + var fillPath = DOMutil.getSVGElement('path',this.svgElements, this.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"); + fillPath.setAttributeNS(null, "d", dFill); + } + // copy properties to path for drawing. + path.setAttributeNS(null, "d", "M" + d); - this.dirty = false; + // draw points + if (group.options.drawPoints.enabled == true) { + this._drawPoints(dataset, group, this.svgElements, this.svg); + } + } } }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * draw the data points + * + * @param {Array} dataset + * @param {Object} JSONcontainer + * @param {Object} svg | SVG DOM element + * @param {GraphGroup} group + * @param {Number} [offset] */ - BackgroundItem.prototype.show = RangeItem.prototype.show; + LineGraph.prototype._drawPoints = function (dataset, group, JSONcontainer, svg, offset) { + if (offset === undefined) {offset = 0;} + for (var i = 0; i < dataset.length; i++) { + DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, JSONcontainer, svg); + } + }; - /** - * 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 + * 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 */ - 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; - } - } - } + LineGraph.prototype._convertXcoordinates = function (datapoints) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; - // 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.data.group !== undefined) { - 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 = ''; - } - else { - // if the item is not in a group: - height = Math.max(this.parent.height, this.parent.itemSet.body.domProps.centerContainer.height); - this.dom.box.style.top = onTop ? '0' : ''; - this.dom.box.style.bottom = onTop ? '' : '0'; - } + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.width; + yValue = datapoints[i].y; + extractedData.push({x: xValue, y: yValue}); } - this.dom.box.style.height = height + 'px'; - }; - - module.exports = BackgroundItem; + return extractedData; + }; -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(18); - var Item = __webpack_require__(40); /** - * @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 + * 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 RangeItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - 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); - } + 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; } - Item.call(this, data, conversion, options); - } + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.width; + yValue = Math.round(axis.convertValue(datapoints[i].y)); + extractedData.push({x: xValue, y: yValue}); + } - RangeItem.prototype = new Item (null, null, null); + group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - RangeItem.prototype.baseClassName = 'item range'; + return extractedData; + }; /** - * 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 + * 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 */ - RangeItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + LineGraph.prototype._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; }; /** - * Repaint the item + * 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 + * @returns {string} + * @private */ - RangeItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + LineGraph.prototype._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++) { - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + 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)); - // attach this item as attribute - dom.box['timeline-item'] = this; + // 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 ] - this.dirty = true; - } + // [ 0 1 0 0 ] + // [ -d2pow2a/N A/N d1pow2a/N 0 ] + // [ 0 d3pow2a/M B/M -d2pow2a/M ] + // [ 0 0 1 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; + 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); - // 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); + 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;} - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), + y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), + y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; - // recalculate size - this.props.content.width = this.dom.content.offsetWidth; - this.height = this.dom.box.offsetHeight; + 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.dirty = false; + return d; } - - 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. + * this generates the SVG path for a linear drawing between datapoints. + * @param data + * @returns {string} + * @private */ - RangeItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + LineGraph.prototype._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 = LineGraph; + + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); + var Component = __webpack_require__(22); + var DataStep = __webpack_require__(44); + /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * A horizontal time axis + * @param {Object} [options] See DataAxis.setOptions for the available + * options. + * @constructor DataAxis + * @extends Component + * @param body */ - RangeItem.prototype.hide = function() { - if (this.displayed) { - var box = this.dom.box; + function DataAxis (body, options, svg, linegraphOptions) { + this.id = util.randomUUID(); + this.body = body; - if (box.parentNode) { - box.parentNode.removeChild(box); + 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, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} } + }; - this.top = null; - this.left = null; + this.linegraphOptions = linegraphOptions; + this.linegraphSVG = svg; + this.props = {}; + this.DOMelements = { // dynamic elements + lines: {}, + labels: {} + }; - this.displayed = false; - } - }; + this.dom = {}; - /** - * 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; + this.range = {start:0, end:0}; - // 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); + this.options = util.extend({}, this.defaultOptions); + this.conversionFactor = 1; - if (this.overflow) { - this.left = start; - this.width = boxWidth + this.props.content.width; - contentWidth = this.props.content.width; + this.setOptions(options); + this.width = Number(('' + this.options.width).replace("px","")); + this.minWidth = this.width; + this.height = this.linegraphSVG.offsetHeight; - // 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, this.props.content.width); - } + this.stepPixels = 25; + this.stepPixelsForced = 25; + this.lineOffset = 0; + this.master = true; + this.svgElements = {}; - 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; + this.groups = {}; + this.amountOfGroups = 0; - case 'right': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; - break; + // create the HTML DOM + this._create(); + } - case 'center': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; - break; + DataAxis.prototype = new Component(); - default: // 'auto' - if (this.overflow) { - // when range exceeds left of the window, position the contents at the left of the visible area - contentLeft = Math.max(-start, 0); - } - else { - // when range exceeds left of the window, position the contents at the left of the visible area - if (start < 0) { - contentLeft = Math.min(-start, - (end - start - this.props.content.width - 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 - */ - RangeItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - box = this.dom.box; - if (orientation == 'top') { - box.style.top = this.top + 'px'; + DataAxis.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; } - else { - box.style.top = (this.parent.height - this.top - this.height) + 'px'; + 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; } }; - /** - * 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') - }); + 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' + ]; + util.selectiveExtend(fields, this.options, options); - 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.minWidth = Number(('' + this.options.width).replace("px","")); + + if (redraw == true && this.dom.frame) { + this.hide(); + this.show(); } - this.dom.dragLeft = null; } }; + /** - * Repaint a drag area on the right side of the range when the range is selected - * @protected + * Create the HTML DOM for the DataAxis */ - 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; + 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; - // TODO: this should be redundant? - Hammer(dragRight, { - preventDefault: true - }).on('drag', function () { - //console.log('drag right') - }); + this.dom.lineContainer = document.createElement('div'); + this.dom.lineContainer.style.width = '100%'; + this.dom.lineContainer.style.height = this.height; - 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; - } + // 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); }; - module.exports = RangeItem; + 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; -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { + if (this.options.orientation == 'left') { + x = iconOffset; + } + else { + x = this.width - iconWidth - iconOffset; + } - var Item = __webpack_require__(40); - var util = __webpack_require__(1); + 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); + }; /** - * @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 + * Create the HTML DOM for the DataAxis */ - function BoxItem (data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 - }, - line: { - width: 0, - height: 0 + DataAxis.prototype.show = function() { + if (!this.dom.frame.parentNode) { + if (this.options.orientation == 'left') { + this.body.dom.left.appendChild(this.dom.frame); } - }; - - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); + else { + this.body.dom.right.appendChild(this.dom.frame); } } - Item.call(this, data, conversion, options); - } - - BoxItem.prototype = new Item (null, null, null); + if (!this.dom.lineContainer.parentNode) { + this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); + } + }; /** - * 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 + * Create the HTML DOM for the DataAxis */ - 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); + DataAxis.prototype.hide = function() { + 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); + } }; /** - * Repaint the item + * Set a range (start and end) + * @param end + * @param start + * @param end */ - 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'); - - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); - - // 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; - } + DataAxis.prototype.setRange = function (start, end) { + this.range.start = start; + this.range.end = end; + }; - // 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); + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + DataAxis.prototype.redraw = function () { + var changeCalled = false; + 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 (!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); + if (this.amountOfGroups == 0 || activeGroups == 0) { + this.hide(); } - this.displayed = true; + else { + this.show(); + this.height = Number(this.linegraphSVG.style.height.replace("px","")); + // svg offsetheight did not work in firefox and explorer... - // 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); + this.dom.lineContainer.style.height = this.height + 'px'; + this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; - // 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; + var props = this.props; + var frame = this.dom.frame; - // 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; + // update classname + frame.className = 'dataaxis'; - this.dirty = false; - } + // calculate character width and height + this._calculateCharSize(); - this._repaintDeleteButton(dom.box); - }; + var orientation = this.options.orientation; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; - /** - * 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(); + // determine the width and height of the elemens 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"; + } + 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"; + } + changeCalled = this._redrawLabels(); + if (this.options.icons == true) { + this._redrawGroupIcons(); + } } + return changeCalled; }; /** - * Hide the item from the DOM (when visible) + * Repaint major and minor text labels and vertical grid lines + * @private */ - BoxItem.prototype.hide = function() { - if (this.displayed) { - var dom = this.dom; + DataAxis.prototype._redrawLabels = function () { + DOMutil.prepareElements(this.DOMelements.lines); + DOMutil.prepareElements(this.DOMelements.labels); - 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); + var orientation = this.options['orientation']; - this.top = null; - this.left = 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.displayed = false; - } - }; + var step = new DataStep(this.range.start, this.range.end, minimumStep, this.dom.frame.offsetHeight, this.options.customRange[this.options.orientation]); + 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; - /** - * 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; + var amountOfSteps = this.height / stepPixels; + var stepDifference = 0; - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; - } - else if (align == 'left') { - this.left = start; + 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; } else { - // default or 'center' - this.left = start - this.width / 2; + amountOfSteps += 0.25; } - // reposition box - box.style.left = this.left + 'px'; - // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; + this.valueAtZero = step.marginEnd; + var marginStartPos = 0; - // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; - }; + // do not draw the first label + var max = 1; - /** - * Reposition the item vertically - * @Override - */ - BoxItem.prototype.repositionY = function() { - var orientation = this.options.orientation; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + 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 (orientation == 'top') { - box.style.top = (this.top || 0) + 'px'; + if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { + this._redrawLabel(y - 2, step.getCurrent(), orientation, 'yAxis minor', this.props.minorCharHeight); + } - line.style.top = '0'; - line.style.height = (this.parent.top + this.top + 1) + 'px'; - line.style.bottom = ''; + 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(), 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); + } + + max++; } - 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'; + if (this.master == false) { + this.conversionFactor = y / (this.valueAtZero - step.current); + } + else { + this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; } - dot.style.top = (-this.props.dot.height / 2) + 'px'; + var offset = this.options.icons == true ? this.options.iconWidth + this.options.labelOffsetX + 15 : this.options.labelOffsetX + 15; + // this will resize the yAxis to accomodate 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(); + return 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(); + return true; + } + else { + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + return false; + } }; - module.exports = BoxItem; - - -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - - var Item = __webpack_require__(40); + DataAxis.prototype.convertValue = function (value) { + var invertedValue = this.valueAtZero - value; + var convertedValue = invertedValue * this.conversionFactor; + return convertedValue; + }; /** - * @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 + * Create a label for the axis at position x + * @private + * @param y + * @param text + * @param orientation + * @param className + * @param characterHeight */ - 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); - } + 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"; } - Item.call(this, data, conversion, options); - } + label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; - PointItem.prototype = new Item (null, null, null); + text += ''; - /** - * 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); + var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); + if (this.maxLabelSize < text.length * largestWidth) { + this.maxLabelSize = text.length * largestWidth; + } }; /** - * Repaint the item + * Create a minor line for the axis at position y + * @param y + * @param orientation + * @param className + * @param offset + * @param width */ - PointItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + 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 = ''; - // background box - dom.point = document.createElement('div'); - // className is updated in redraw() + if (orientation == 'left') { + line.style.left = (this.width - offset) + 'px'; + } + else { + line.style.right = (this.width - offset) + 'px'; + } - // contents box, right from the dot - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.point.appendChild(dom.content); + line.style.width = width + 'px'; + line.style.top = y + 'px'; + } + }; - // 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); - } - 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); + /** + * 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); - // 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; + this.props.minorCharHeight = measureCharMinor.clientHeight; + this.props.minorCharWidth = measureCharMinor.clientWidth; - // 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.dom.frame.removeChild(measureCharMinor); + } - // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; - //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + 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); - dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; - dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + this.props.majorCharHeight = measureCharMajor.clientHeight; + this.props.majorCharWidth = measureCharMajor.clientWidth; - this.dirty = false; + this.dom.frame.removeChild(measureCharMajor); } - - this._repaintDeleteButton(dom.point); }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * @param {Date} date the date to be snapped. + * @return {Date} snappedDate */ - PointItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); - } + DataAxis.prototype.snap = function(date) { + return this.step.snap(date); }; + module.exports = DataAxis; + + +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Hide the item from the DOM (when visible) + * @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 */ - PointItem.prototype.hide = function() { - if (this.displayed) { - if (this.dom.point.parentNode) { - this.dom.point.parentNode.removeChild(this.dom.point); - } + function DataStep(start, end, minimumStep, containerHeight, customRange) { + // 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.setRange(start, end, minimumStep, containerHeight, customRange); + } - this.top = null; - this.left = null; - this.displayed = false; - } - }; /** - * Reposition the item horizontally - * @Override + * 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 */ - PointItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); + 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; - this.left = start - this.props.dot.width; + if (this._start == this._end) { + this._start -= 0.75; + this._end += 1; + } - // reposition point - this.dom.point.style.left = this.left + 'px'; + if (this.autoScale) { + this.setMinimumStep(minimumStep, containerHeight); + } + this.setFirst(customRange); }; /** - * Reposition the item vertically - * @Override + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds */ - PointItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - point = this.dom.point; + 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); - if (orientation == 'top') { - point.style.top = this.top + 'px'; + var minorStepIdx = -1; + var magnitudefactor = Math.pow(10,orderOfMagnitude); + + var start = 0; + if (orderOfMagnitude < 0) { + start = orderOfMagnitude; } - else { - point.style.top = (this.parent.height - this.top - this.height) + 'px'; + + 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]; }; - module.exports = PointItem; - - -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var stack = __webpack_require__(39); - var RangeItem = __webpack_require__(42); - var DateUtil = __webpack_require__(23); /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date */ - function Group (groupId, data, itemSet) { - this.groupId = groupId; - this.subgroups = {}; - this.visibleSubgroups = 0; - this.itemSet = itemSet; + 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.dom = {}; - this.props = { - label: { - width: 0, - height: 0 - } - }; - this.className = null; + this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; + this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; + this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; + this.marginRange = this.marginEnd - this.marginStart; - this.items = {}; // items filtered by groupId of this group - this.visibleItems = []; // items currently visible in window - this.orderedItems = { // items sorted by start and by end - byStart: [], - byEnd: [] - }; + this.current = this.marginEnd; - this._create(); + }; - this.setData(data); + 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; + } } + /** - * Create DOM elements for the group - * @private + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date */ - 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'; + DataStep.prototype.hasNext = function () { + return (this.current >= this.marginStart); + }; - this.dom.axis = document.createElement('div'); - this.dom.axis.className = 'group'; + /** + * Do the next step + */ + DataStep.prototype.next = function() { + var prev = this.current; + this.current -= this.step; - // 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); + // safety mechanism: if current time is still unchanged, move to the end + if (this.current == prev) { + this.current = this._end; + } }; /** - * Set the group data for this group - * @param {Object} data Group data, can contain properties content and className + * Do the next step */ - 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 - } + DataStep.prototype.previous = function() { + this.current += this.step; + this.marginEnd += this.step; + this.marginRange = this.marginEnd - this.marginStart; + }; - // 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); + /** + * Get the current datetime + * @return {String} current The current date + */ + DataStep.prototype.getCurrent = function() { + var toPrecision = '' + Number(this.current).toPrecision(5); + if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { + 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; + } } - 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; - } + return toPrecision; }; + + /** - * Get the width of the group label - * @return {number} width + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * @param {Date} date the date to be snapped. + * @return {Date} snappedDate */ - Group.prototype.getLabelWidth = function() { - return this.props.label.width; - }; + DataStep.prototype.snap = function(date) { + }; /** - * 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 + * 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. */ - Group.prototype.redraw = function(range, margin, restack) { - var resized = false; + DataStep.prototype.isMajor = function() { + return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); + }; - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + module.exports = DataStep; - // 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(); - }); +/***/ }, +/* 45 */ +/***/ function(module, exports, __webpack_require__) { - restack = true; - } + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); - // 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); + /** + * @constructor Group + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet + */ + 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; + } - // 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; - }); + 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;}) } - height = max + margin.item.vertical / 2; } else { - height = margin.axis + margin.item.vertical; + this.itemsData = []; } - height = Math.max(height, this.props.label.height); + }; - // 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; + GraphGroup.prototype.setZeroPosition = function(pos) { + this.zeroPosition = pos; + }; - // 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; + GraphGroup.prototype.setOptions = function(options) { + if (options !== undefined) { + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + util.selectiveDeepExtend(fields, this.options, options); - // apply new height - this.dom.background.style.height = height + 'px'; - this.dom.foreground.style.height = height + 'px'; - this.dom.label.style.height = height + 'px'; + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); - // 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 (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; + } + } + } + } } + }; - return resized; + 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.setOptions(group.options); }; - /** - * Show this group: attach to the DOM - */ - Group.prototype.show = function() { - if (!this.dom.label.parentNode) { - this.itemSet.dom.labelSet.appendChild(this.dom.label); - } + GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { + var fillHeight = iconHeight * 0.5; + var path, fillPath; - if (!this.dom.foreground.parentNode) { - this.itemSet.dom.foreground.appendChild(this.dom.foreground); - } + 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.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); + if (this.options.style == 'line') { + path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + path.setAttributeNS(null, "class", this.className); + 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); - if (!this.dom.axis.parentNode) { - this.itemSet.dom.axis.appendChild(this.dom.axis); + 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); } }; /** - * Hide this group: remove from the DOM + * + * @param iconWidth + * @param iconHeight + * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} */ - Group.prototype.hide = function() { - var label = this.dom.label; - if (label.parentNode) { - label.parentNode.removeChild(label); - } + 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}; + } - var foreground = this.dom.foreground; - if (foreground.parentNode) { - foreground.parentNode.removeChild(foreground); - } + module.exports = GraphGroup; - var background = this.dom.background; - if (background.parentNode) { - background.parentNode.removeChild(background); - } - var axis = this.dom.axis; - if (axis.parentNode) { - axis.parentNode.removeChild(axis); - } - }; +/***/ }, +/* 46 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); + var Component = __webpack_require__(22); /** - * Add an item to the group - * @param {Item} item + * Legend for Graph2d */ - Group.prototype.add = function(item) { - this.items[item.id] = item; - item.setParent(this); - - // add to - var index = 0; - if (item.data.subgroup !== undefined) { - if (this.subgroups[item.data.subgroup] === undefined) { - this.subgroups[item.data.subgroup] = {height:0, visible: false, index:index}; - index++; + 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; - 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.svgElements = {}; + this.dom = {}; + this.groups = {}; + this.amountOfGroups = 0; + this._create(); - Group.prototype.resetSubgroups = function() { - for (var subgroup in this.subgroups) { - if (this.subgroups.hasOwnProperty(subgroup)) { - this.subgroups[subgroup].visible = false; - } - } + this.setOptions(options); } - /** - * Remove an item from the group - * @param {Item} item - */ - Group.prototype.remove = function(item) { - delete this.items[item.id]; - item.setParent(this.itemSet); + Legend.prototype = new Component(); - // remove from visible items - var index = this.visibleItems.indexOf(item); - if (index != -1) this.visibleItems.splice(index, 1); - // TODO: also remove from ordered items? + Legend.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; }; - /** - * Remove an item from the corresponding DataSet - * @param {Item} item - */ - Group.prototype.removeFromDataSet = function(item) { - this.itemSet.removeItem(item.id); + Legend.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; }; - /** - * Reorder the items - */ - Group.prototype.order = function() { - var array = util.toArray(this.items); - this.orderedItems.byStart = array; - this.orderedItems.byEnd = this._constructByEndArray(array); + Legend.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - stack.orderByStart(this.orderedItems.byStart); - stack.orderByEnd(this.orderedItems.byEnd); + 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"; + + 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.dom.frame.appendChild(this.svg); + this.dom.frame.appendChild(this.dom.textArea); }; /** - * Create an array containing all items being a range (having an end date) - * @param {Item[]} array - * @returns {RangeItem[]} - * @private + * Hide the component from the DOM */ - Group.prototype._constructByEndArray = function(array) { - var endArray = []; - - for (var i = 0; i < array.length; i++) { - if (array[i] instanceof RangeItem) { - endArray.push(array[i]); - } + Legend.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } - return endArray; }; /** - * 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 + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - Group.prototype._updateVisibleItems = function(orderedItems, visibleItems, range) { - var initialPosByStart, - newVisibleItems = [], - i; + Legend.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } + }; - // first check if the items that were in view previously are still in view. - // this handles the case for the RangeItem that is both before and after the current one. - if (visibleItems.length > 0) { - for (i = 0; i < visibleItems.length; i++) { - this._checkIfVisible(visibleItems[i], newVisibleItems, range); + Legend.prototype.setOptions = function(options) { + var fields = ['enabled','orientation','icons','left','right']; + util.selectiveDeepExtend(fields, this.options, options); + }; + + 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 there were no visible items previously, use binarySearch to find a visible PointItem or RangeItem (based on startTime) - if (newVisibleItems.length == 0) { - initialPosByStart = util.binarySearch(orderedItems.byStart, range, 'data','start'); + if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { + this.hide(); } else { - initialPosByStart = orderedItems.byStart.indexOf(newVisibleItems[0]); - } - - // use visible search to find a visible RangeItem (only based on endTime) - var initialPosByEnd = util.binarySearch(orderedItems.byEnd, range, 'data','end'); + 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 we found a initial ID to use, trace it up and down until we meet an invisible item. - if (initialPosByStart != -1) { - for (i = initialPosByStart; i >= 0; i--) { - if (this._checkIfInvisible(orderedItems.byStart[i], newVisibleItems, range)) {break;} + 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 = ''; } - for (i = initialPosByStart + 1; i < orderedItems.byStart.length; i++) { - if (this._checkIfInvisible(orderedItems.byStart[i], newVisibleItems, range)) {break;} + else { + this.dom.frame.style.bottom = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.top = ''; } - } - // if we found a initial ID to use, trace it up and down until we meet an invisible item. - if (initialPosByEnd != -1) { - for (i = initialPosByEnd; i >= 0; i--) { - if (this._checkIfInvisible(orderedItems.byEnd[i], newVisibleItems, range)) {break;} + 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'; } - for (i = initialPosByEnd + 1; i < orderedItems.byEnd.length; i++) { - if (this._checkIfInvisible(orderedItems.byEnd[i], newVisibleItems, range)) {break;} + else { + this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' + this.drawLegendIcons(); } - } - return newVisibleItems; + 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; + this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; - /** - * this function checks if an item is invisible. If it is NOT we make it visible - * and add it to the global visible items. If it is, return true. - * - * @param {Item} item - * @param {Item[]} visibleItems - * @param {{start:number, end:number}} range - * @returns {boolean} - * @private - */ - Group.prototype._checkIfInvisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - item.repositionX(); - if (visibleItems.indexOf(item) == -1) { - visibleItems.push(item); + 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 false; - } - else { - if (item.displayed) item.hide(); - return true; } - }; - /** - * 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(); - } + DOMutil.cleanupElements(this.svgElements); + } }; - module.exports = Group; + module.exports = Legend; /***/ }, -/* 46 */ +/* 47 */ /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(10); var Hammer = __webpack_require__(18); - var mousetrap = __webpack_require__(32); + var mousetrap = __webpack_require__(40); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(21); var DataSet = __webpack_require__(7); var DataView = __webpack_require__(8); - var dotparser = __webpack_require__(47); - var gephiParser = __webpack_require__(48); - var Groups = __webpack_require__(49); - var Images = __webpack_require__(50); - var Node = __webpack_require__(51); - var Edge = __webpack_require__(52); - var Popup = __webpack_require__(53); - var MixinLoader = __webpack_require__(54); - var Activator = __webpack_require__(31); - var locales = __webpack_require__(65); + var dotparser = __webpack_require__(48); + var gephiParser = __webpack_require__(49); + var Groups = __webpack_require__(50); + var Images = __webpack_require__(51); + var Node = __webpack_require__(52); + var Edge = __webpack_require__(53); + var Popup = __webpack_require__(54); + var MixinLoader = __webpack_require__(55); + var Activator = __webpack_require__(39); + var locales = __webpack_require__(66); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(66); + __webpack_require__(67); /** * @constructor Network @@ -24574,7 +24705,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 47 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { /** @@ -25406,7 +25537,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 48 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { @@ -25471,7 +25602,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.parseGephi = parseGephi; /***/ }, -/* 49 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -25560,7 +25691,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { /** @@ -25618,7 +25749,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 51 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -26642,11 +26773,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 52 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(51); + var Node = __webpack_require__(52); /** * @class Edge @@ -27841,7 +27972,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Edge; /***/ }, -/* 53 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { /** @@ -27987,16 +28118,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 54 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { - var PhysicsMixin = __webpack_require__(55); - var ClusterMixin = __webpack_require__(59); - var SectorsMixin = __webpack_require__(60); - var SelectionMixin = __webpack_require__(61); - var ManipulationMixin = __webpack_require__(62); - var NavigationMixin = __webpack_require__(63); - var HierarchicalLayoutMixin = __webpack_require__(64); + var PhysicsMixin = __webpack_require__(56); + var ClusterMixin = __webpack_require__(60); + var SectorsMixin = __webpack_require__(61); + var SelectionMixin = __webpack_require__(62); + var ManipulationMixin = __webpack_require__(63); + var NavigationMixin = __webpack_require__(64); + var HierarchicalLayoutMixin = __webpack_require__(65); /** * Load a mixin into the network object @@ -28191,13 +28322,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 55 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(56); - var HierarchialRepulsionMixin = __webpack_require__(57); - var BarnesHutMixin = __webpack_require__(58); + var RepulsionMixin = __webpack_require__(57); + var HierarchialRepulsionMixin = __webpack_require__(58); + var BarnesHutMixin = __webpack_require__(59); /** * Toggling barnes Hut calculation on and off. @@ -28905,7 +29036,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 56 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { /** @@ -28969,7 +29100,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { /** @@ -29128,7 +29259,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 58 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { /** @@ -29533,7 +29664,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 59 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { /** @@ -30676,11 +30807,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 60 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(51); + var Node = __webpack_require__(52); /** * Creation of the SectorMixin var. @@ -31235,10 +31366,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 61 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { - var Node = __webpack_require__(51); + var Node = __webpack_require__(52); /** * This function can be called from the _doInAllSectors function @@ -31939,12 +32070,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 62 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(51); - var Edge = __webpack_require__(52); + var Node = __webpack_require__(52); + var Edge = __webpack_require__(53); /** * clears the toolbar div element of children @@ -32540,7 +32671,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 63 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -32723,7 +32854,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 64 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { exports._resetLevels = function() { @@ -33140,7 +33271,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { // English @@ -33181,7 +33312,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 66 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { /** diff --git a/dist/vis.map b/dist/vis.map index 1af18182..6ea0a497 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","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","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","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","value","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","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","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","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","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","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","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","setOptions","Emitter","_setScale","scale","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","sortNumber","obj","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","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","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","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","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","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","hiddenTimes","hide","dateItem","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","startDate","endDate","time","hidden","isHidden","res","correctTimeForDuration","conversion","getHiddenDuration","timeOffset","snapAwayFromHidden","zoom","newStart","newEnd","deltaDifference","previousDelta","minimumStep","containerHeight","customRange","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","initTime","done","initStart","initEnd","changed","_applyRange","anyChanged","_cancelAnimation","getRange","totalHidden","allowDragging","gesture","deltaX","deltaY","diffRange","safeDates","fakeGesture","pointer","pointerDate","_pointerToDate","touches","hiddenDuration","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","ignoreStacking","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","centerContainer","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","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","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_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","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","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","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","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","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","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","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","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","trigger","__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","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","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","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","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","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","dates","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","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","context","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","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","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_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","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_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","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","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","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","value","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","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidRGB","rgb","substr","RGBToHex","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","easeInOutQuad","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","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","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","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","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","setOptions","Emitter","_setScale","scale","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","sortNumber","obj","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","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","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","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","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","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","setWindow","animate","fit","setSelection","focus","getSelection","itemData","middle","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","specificHiddenDates","specific","dateItem","periodicHiddenDates","periodic","times","days","updateHiddenDates","centerContainer","totalRange","pixelTime","nextStartDay","nextEndDay","startDay","endDay","isoWeekday","milliseconds","seconds","minutes","hours","startTime","endTime","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","startDate","endDate","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","year","switchedYear","month","switchedMonth","dayOfYear","switchedDay","checkFirstStep","time","res","correctTimeForDuration","conversion","getHiddenDuration","hiddenTimes","timeOffset","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","slice","isMajor","now","clone","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","dragging","initTime","done","initStart","initEnd","changed","anyChanged","_cancelAnimation","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","hiddenDuration","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","ignoreStacking","collision","nostack","subgroups","subgroup","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","getLabelMinor","format","getLabelMajor","destroy","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","locale","parent","backgroundVertical","title","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","backgroundHorizontal","changeCalled","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","visibleSubgroups","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","newProps","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","lastStart","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_getRelevantData","_convertXcoordinates","_getYRanges","_updateYAxis","_convertYcoordinates","_drawLineGraph","_drawBarGraphs","dataContainer","_applySampling","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedData","barCombinedDataLeft","barCombinedDataRight","ignore","intersections","_getDataIntersections","_getStackedBarYRange","combinedData","accumulated","xpos","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","drawData","barPoints","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","svgHeight","_catmullRom","_linear","dFill","_drawPoints","datapoints","xValue","yValue","extractedData","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","lang","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","newTop","amountvisibleSubgroups","itemSetHeight","marginLeft","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","level","highlightColor","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","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","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilize","stabilizationIterations","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","hoverObj","controlNodesActive","navigationHammers","existing","new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","Activator","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_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","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","mainMovingStatus","supportMovingStatus","_doInAllActiveSectors","mainMoving","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","brokenUrl","img","Image","onload","onerror","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","resetCluster","dynamicEdgesLength","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","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","velocity","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","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","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","listeners","events","args","scrollTop","scrollTopMin","_initAutoResize","component","_stopAutoResize","what","dataRange","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","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","custom","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","_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","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","_d","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","DATE","_overflowDayOfYear","isValid","_isValid","getTime","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","zone","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","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","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","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateTzOffset","inputString","asFloat","daysAdjust","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isSame","localAdjust","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","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","context","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","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_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","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAyBA,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,GAGvCN,EAAQmB,QAAUb,EAAoB,GACtCN,EAAQoB,SACNC,OAAQf,EAAoB,GAC5BgB,OAAQhB,EAAoB,GAC5BiB,QAASjB,EAAoB,GAC7BkB,QAASlB,EAAoB,GAC7BmB,OAAQnB,EAAoB,IAC5BoB,WAAYpB,EAAoB,KAIlCN,EAAQ2B,SAAWrB,EAAoB,IACvCN,EAAQ4B,QAAUtB,EAAoB,IACtCN,EAAQ6B,UACNC,SAAUxB,EAAoB,IAC9ByB,SAAUzB,EAAoB,IAC9B0B,MAAO1B,EAAoB,IAC3B2B,MAAO3B,EAAoB,IAC3B4B,SAAU5B,EAAoB,IAE9B6B,YACEC,OACEC,KAAM/B,EAAoB,IAC1BgC,eAAgBhC,EAAoB,IACpCiC,QAASjC,EAAoB,IAC7BkC,UAAWlC,EAAoB,IAC/BmC,UAAWnC,EAAoB,KAGjCoC,UAAWpC,EAAoB,IAC/BqC,YAAarC,EAAoB,IACjCsC,WAAYtC,EAAoB,IAChCuC,SAAUvC,EAAoB,IAC9BwC,WAAYxC,EAAoB,IAChCyC,MAAOzC,EAAoB,IAC3B0C,QAAS1C,EAAoB,IAC7B2C,OAAQ3C,EAAoB,IAC5B4C,UAAW5C,EAAoB,IAC/B6C,SAAU7C,EAAoB,MAKlCN,EAAQoD,QAAU9C,EAAoB,IACtCN,EAAQqD,SACNC,KAAMhD,EAAoB,IAC1BiD,OAAQjD,EAAoB,IAC5BkD,OAAQlD,EAAoB,IAC5BmD,KAAMnD,EAAoB,IAC1BoD,MAAOpD,EAAoB,IAC3BqD,UAAWrD,EAAoB,IAC/BsD,YAAatD,EAAoB,KAInCN,EAAQ6D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlB9D,EAAQ+D,OAASzD,EAAoB,IACrCN,EAAQgE,OAAS1D,EAAoB,KAKjC,SAASL,OAAQD,QAASM,qBAM9B,GAAIyD,QAASzD,oBAAoB,GAOjCN,SAAQiE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAQ7ClE,QAAQoE,SAAW,SAASF,GAC1B,MAAQA,aAAkBG,SAA2B,gBAAVH,IAQ7ClE,QAAQsE,OAAS,SAASJ,GACxB,GAAIA,YAAkBK,MACpB,OAAO,CAEJ,IAAIvE,QAAQoE,SAASF,GAAS,CAEjC,GAAIM,GAAQC,aAAaC,KAAKR,EAC9B,IAAIM,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMV,IACzB,OAAO,EAIX,OAAO,GAQTlE,QAAQ6E,YAAc,SAASX,GAC7B,MAA4B,mBAAb,SACVY,OAAoB,eACpBA,OAAOC,cAAuB,WAC9Bb,YAAkBY,QAAOC,cAAcC,WAQ9ChF,QAAQiF,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOC,MAAKC,MACQ,MAAhBD,KAAKE,UACPC,SAAS,IAGb,OACIJ,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxBlF,QAAQuF,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,IAWTxF,QAAQgG,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAInC,OAAM,uDAGlB,KAAK,GAAI2B,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEb3E,EAAI,EAAGA,EAAImF,EAAML,OAAQ9E,IAAK,CACrC,GAAIgF,GAAOG,EAAMnF,EACb+E,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWTxF,QAAQoG,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,GACb3E,EAAI,EAAGA,EAAImF,EAAML,OAAQ9E,IAAK,CACrC,GAAIgF,GAAOG,EAAMnF,EACjB,IAAI+E,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BxG,QAAQ0G,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWTxF,QAAQ2G,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,OAC1BxG,QAAQ0G,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASTxF,QAAQ0G,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,OAC1BxG,QAAQ0G,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUTxF,QAAQ6G,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,GAYTzF,QAAQ8G,QAAU,SAAS5C,EAAQ6C,GACjC,GAAIvC,EAEJ,IAAeiC,SAAXvC,EACF,MAAOuC,OAET,IAAe,OAAXvC,EACF,MAAO,KAGT,KAAK6C,EACH,MAAO7C,EAET,IAAsB,gBAAT6C,MAAwBA,YAAgB1C,SACnD,KAAM,IAAIP,OAAM,wBAIlB,QAAQiD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQ9C,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAO+C,UAEvB,KAAK,SACL,IAAK,SACH,MAAO5C,QAAOH,EAEhB,KAAK,OACH,GAAIlE,QAAQiE,SAASC,GACnB,MAAO,IAAIK,MAAKL,EAElB,IAAIA,YAAkBK,MACpB,MAAO,IAAIA,MAAKL,EAAO+C,UAEpB,IAAIlD,OAAOmD,SAAShD,GACvB,MAAO,IAAIK,MAAKL,EAAO+C,UAEzB,IAAIjH,QAAQoE,SAASF,GAEnB,MADAM,GAAQC,aAAaC,KAAKR,GACtBM,EAEK,GAAID,MAAKJ,OAAOK,EAAM,KAGtBT,OAAOG,GAAQiD,QAIxB,MAAM,IAAIrD,OACN,iCAAmC9D,QAAQoH,QAAQlD,GAC/C,gBAGZ,KAAK,SACH,GAAIlE,QAAQiE,SAASC,GACnB,MAAOH,QAAOG,EAEhB,IAAIA,YAAkBK,MACpB,MAAOR,QAAOG,EAAO+C,UAElB,IAAIlD,OAAOmD,SAAShD,GACvB,MAAOH,QAAOG,EAEhB,IAAIlE,QAAQoE,SAASF,GAEnB,MADAM,GAAQC,aAAaC,KAAKR,GAGjBH,OAFLS,EAEYL,OAAOK,EAAM,IAGbN,EAIhB,MAAM,IAAIJ,OACN,iCAAmC9D,QAAQoH,QAAQlD,GAC/C,gBAGZ,KAAK,UACH,GAAIlE,QAAQiE,SAASC,GACnB,MAAO,IAAIK,MAAKL,EAEb,IAAIA,YAAkBK,MACzB,MAAOL,GAAOmD,aAEX,IAAItD,OAAOmD,SAAShD,GACvB,MAAOA,GAAOiD,SAASE,aAEpB,IAAIrH,QAAQoE,SAASF,GAExB,MADAM,GAAQC,aAAaC,KAAKR,GACtBM,EAEK,GAAID,MAAKJ,OAAOK,EAAM,KAAK6C,cAG3B,GAAI9C,MAAKL,GAAQmD,aAI1B,MAAM,IAAIvD,OACN,iCAAmC9D,QAAQoH,QAAQlD,GAC/C,mBAGZ,KAAK,UACH,GAAIlE,QAAQiE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBK,MACzB,MAAO,SAAWL,EAAO+C,UAAY,IAElC,IAAIjH,QAAQoE,SAASF,GAAS,CACjCM,EAAQC,aAAaC,KAAKR,EAC1B,IAAIoD,EAQJ,OALEA,GAFE9C,EAEM,GAAID,MAAKJ,OAAOK,EAAM,KAAKyC,UAG3B,GAAI1C,MAAKL,GAAQ+C,UAEpB,SAAWK,EAAQ,KAG1B,KAAM,IAAIxD,OACN,iCAAmC9D,QAAQoH,QAAQlD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBiD,EAAO,MAOhD,IAAItC,cAAe,qBAOnBzE,SAAQoH,QAAU,SAASlD,GACzB,GAAI6C,SAAc7C,EAElB,OAAY,UAAR6C,EACY,MAAV7C,EACK,OAELA,YAAkB8C,SACb,UAEL9C,YAAkBC,QACb,SAELD,YAAkBG,QACb,SAEL6B,MAAMC,QAAQjC,GACT,QAELA,YAAkBK,MACb,OAEF,SAEQ,UAARwC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GAST/G,QAAQuH,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpD5H,QAAQ6H,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnD/H,QAAQgI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQtB,QAAQqB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlCrI,QAAQsI,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQtB,QAAQqB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalCrI,QAAQyI,QAAU,SAASvE,EAAQwE,GACjC,GAAIjD,GACAC,CACJ,IAAIQ,MAAMC,QAAQjC,GAEhB,IAAKuB,EAAI,EAAGC,EAAMxB,EAAO0B,OAAYF,EAAJD,EAASA,IACxCiD,EAASxE,EAAOuB,GAAIA,EAAGvB,OAKzB,KAAKuB,IAAKvB,GACJA,EAAO6B,eAAeN,IACxBiD,EAASxE,EAAOuB,GAAIA,EAAGvB,IAY/BlE,QAAQ2I,QAAU,SAASzE,GACzB,GAAI0E,KAEJ,KAAK,GAAI9C,KAAQ5B,GACXA,EAAO6B,eAAeD,IAAO8C,EAAMR,KAAKlE,EAAO4B,GAGrD,OAAO8C,IAUT5I,QAAQ6I,eAAiB,SAAS3E,EAAQ4E,EAAKxB,GAC7C,MAAIpD,GAAO4E,KAASxB,GAClBpD,EAAO4E,GAAOxB,GACP,IAGA,GAYXtH,QAAQ+I,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACStC,SAAf0C,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUzC,QAAQ,YAAc,IACvEqC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvClJ,QAAQuJ,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES9C,SAAf0C,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUzC,QAAQ,YAAc,IACvEqC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvClJ,QAAQyJ,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxB3J,QAAQ4J,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMrD,QAAnBoD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAGT7J,QAAQiK,UAQRjK,QAAQiK,OAAOC,UAAY,SAAU5C,EAAO6C,GAK1C,MAJoB,kBAAT7C,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGH6C,GAAgB,MASzBnK,QAAQiK,OAAOG,SAAW,SAAU9C,EAAO6C,GAKzC,MAJoB,kBAAT7C,KACTA,EAAQA,KAGG,MAATA,EACKnD,OAAOmD,IAAU6C,GAAgB,KAGnCA,GAAgB,MASzBnK,QAAQiK,OAAOI,SAAW,SAAU/C,EAAO6C,GAKzC,MAJoB,kBAAT7C,KACTA,EAAQA,KAGG,MAATA,EACKjD,OAAOiD,GAGT6C,GAAgB,MASzBnK,QAAQiK,OAAOK,OAAS,SAAUhD,EAAO6C,GAKvC,MAJoB,kBAAT7C,KACTA,EAAQA,KAGNtH,QAAQoE,SAASkD,GACZA,EAEAtH,QAAQiE,SAASqD,GACjBA,EAAQ,KAGR6C,GAAgB,MAU3BnK,QAAQiK,OAAOM,UAAY,SAAUjD,EAAO6C,GAK1C,MAJoB,kBAAT7C,KACTA,EAAQA,KAGHA,GAAS6C,GAAgB,MAKlCnK,QAAQwK,QAAU,SAASC,KACzB,GAAIC,MAiBJ,OAdEA,OADS,KAAPD,IACM,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GAEAE,KAAKF,MAKjBzK,QAAQ4K,QAAU,SAASC,GACzB,GAAIH,EAiBJ,OAdEA,GADQ,IAAPG,EACO,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IAEA,GAAKA,GAWjB7K,QAAQ8K,WAAa,SAASC,GAC5B,GAAIlK,EACJ,IAAIb,QAAQoE,SAAS2G,GAAQ,CAC3B,GAAI/K,QAAQgL,WAAWD,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMnF,OAAO,GAAGuC,MAAM,IACzD4C,GAAQ/K,QAAQmL,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAIjL,QAAQoL,WAAWL,GAAQ,CAC7B,GAAIM,GAAMrL,QAAQsL,SAASP,GACvBQ,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEvG,KAAKwG,IAAI,EAAU,KAARN,EAAIK,IAC3DE,GAAmBJ,EAAEH,EAAIG,EAAEC,EAAEtG,KAAKwG,IAAI,EAAU,KAARN,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DG,EAAkB7L,QAAQ8L,SAASF,EAAeJ,EAAGI,EAAeJ,EAAGI,EAAeF,GACtFK,EAAkB/L,QAAQ8L,SAASP,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F7K,IACEmL,WAAYjB,EACZkB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXhL,IACEmL,WAAWjB,EACXkB,OAAOlB,EACPmB,WACEF,WAAWjB,EACXkB,OAAOlB,GAEToB,OACEH,WAAWjB,EACXkB,OAAOlB,QAMblK,MACAA,EAAEmL,WAAajB,EAAMiB,YAAc,QACnCnL,EAAEoL,OAASlB,EAAMkB,QAAUpL,EAAEmL,WAEzBhM,QAAQoE,SAAS2G,EAAMmB,WACzBrL,EAAEqL,WACAD,OAAQlB,EAAMmB,UACdF,WAAYjB,EAAMmB,YAIpBrL,EAAEqL,aACFrL,EAAEqL,UAAUF,WAAajB,EAAMmB,WAAanB,EAAMmB,UAAUF,YAAcnL,EAAEmL,WAC5EnL,EAAEqL,UAAUD,OAASlB,EAAMmB,WAAanB,EAAMmB,UAAUD,QAAUpL,EAAEoL,QAGlEjM,QAAQoE,SAAS2G,EAAMoB,OACzBtL,EAAEsL,OACAF,OAAQlB,EAAMoB,MACdH,WAAYjB,EAAMoB,QAIpBtL,EAAEsL,SACFtL,EAAEsL,MAAMH,WAAajB,EAAMoB,OAASpB,EAAMoB,MAAMH,YAAcnL,EAAEmL,WAChEnL,EAAEsL,MAAMF,OAASlB,EAAMoB,OAASpB,EAAMoB,MAAMF,QAAUpL,EAAEoL,OAI5D,OAAOpL,IASTb,QAAQoM,SAAW,SAASC,GAC1BA,EAAMA,EAAIC,QAAQ,IAAI,IAAIC,aAE1B,IAAI/G,GAAIxF,QAAQwK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCnG,EAAIrG,QAAQwK,QAAQ6B,EAAIG,UAAU,EAAG,IACrC3L,EAAIb,QAAQwK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCC,EAAIzM,QAAQwK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCE,EAAI1M,QAAQwK,QAAQ6B,EAAIG,UAAU,EAAG,IACrCG,EAAI3M,QAAQwK,QAAQ6B,EAAIG,UAAU,EAAG,IAErCI,EAAS,GAAJpH,EAAUa,EACfwG,EAAS,GAAJhM,EAAU4L,EACfpG,EAAS,GAAJqG,EAAUC,CAEnB,QAAQC,EAAEA,EAAEC,EAAEA,EAAExG,EAAEA,IAGpBrG,QAAQmL,SAAW,SAAS2B,EAAIC,EAAMC,GACpC,GAAIxH,GAAIxF,QAAQ4K,QAAQzF,KAAKC,MAAM0H,EAAM,KACrCzG,EAAIrG,QAAQ4K,QAAQkC,EAAM,IAC1BjM,EAAIb,QAAQ4K,QAAQzF,KAAKC,MAAM2H,EAAQ,KACvCN,EAAIzM,QAAQ4K,QAAQmC,EAAQ,IAC5BL,EAAI1M,QAAQ4K,QAAQzF,KAAKC,MAAM4H,EAAO,KACtCL,EAAI3M,QAAQ4K,QAAQoC,EAAO,IAE3BX,EAAM7G,EAAIa,EAAIxF,EAAI4L,EAAIC,EAAIC,CAC9B,OAAO,IAAMN,GAafrM,QAAQiN,SAAW,SAASH,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIE,GAAS/H,KAAKwG,IAAImB,EAAI3H,KAAKwG,IAAIoB,EAAMC,IACrCG,EAAShI,KAAKiI,IAAIN,EAAI3H,KAAKiI,IAAIL,EAAMC,GAGzC,IAAIE,GAAUC,EACZ,OAAQ3B,EAAE,EAAEC,EAAE,EAAEC,EAAEwB,EAIpB,IAAIT,GAAKK,GAAKI,EAAUH,EAAMC,EAASA,GAAME,EAAUJ,EAAIC,EAAQC,EAAKF,EACpEtB,EAAKsB,GAAKI,EAAU,EAAMF,GAAME,EAAU,EAAI,EAC9CG,EAAM,IAAI7B,EAAIiB,GAAGU,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7F,EAAQ6F,CACZ,QAAQ3B,EAAE6B,EAAI5B,EAAE6B,EAAW5B,EAAEpE,GAG/B,IAAIiG,UAEFpF,MAAO,SAAUqF,GACf,GAAIC,KAWJ,OATAD,GAAQrF,MAAM,KAAKM,QAAQ,SAAUiF,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMvF,MAAM,KACpBW,EAAM8E,EAAM,GAAGD,OACfrG,EAAQsG,EAAM,GAAGD,MACrBF,GAAO3E,GAAOxB,KAIXmG,GAITpF,KAAM,SAAUoF,GACd,MAAOjH,QAAOqH,KAAKJ,GACdK,IAAI,SAAUhF,GACb,MAAOA,GAAM,KAAO2E,EAAO3E,KAE5BT,KAAK,OASdrI,SAAQ+N,WAAa,SAAU/E,EAASwE,GACtC,GAAIQ,GAAgBT,QAAQpF,MAAMa,EAAQ0E,MAAMF,SAC5CS,EAAYV,QAAQpF,MAAMqF,GAC1BC,EAASzN,QAAQuF,OAAOyI,EAAeC,EAE3CjF,GAAQ0E,MAAMF,QAAUD,QAAQlF,KAAKoF,IAQvCzN,QAAQkO,cAAgB,SAAUlF,EAASwE,GACzC,GAAIC,GAASF,QAAQpF,MAAMa,EAAQ0E,MAAMF,SACrCW,EAAeZ,QAAQpF,MAAMqF,EAEjC,KAAK,GAAI1E,KAAOqF,GACVA,EAAapI,eAAe+C,UACvB2E,GAAO3E,EAIlBE,GAAQ0E,MAAMF,QAAUD,QAAQlF,KAAKoF,IAWvCzN,QAAQoO,SAAW,SAAS5C,EAAGC,EAAGC,GAChC,GAAIkB,GAAGC,EAAGxG,EAENZ,EAAIN,KAAKC,MAAU,EAAJoG,GACfmB,EAAQ,EAAJnB,EAAQ/F,EACZ3E,EAAI4K,GAAK,EAAID,GACb4C,EAAI3C,GAAK,EAAIiB,EAAIlB,GACjB6C,EAAI5C,GAAK,GAAK,EAAIiB,GAAKlB,EAE3B,QAAQhG,EAAI,GACV,IAAK,GAAGmH,EAAIlB,EAAGmB,EAAIyB,EAAGjI,EAAIvF,CAAG,MAC7B,KAAK,GAAG8L,EAAIyB,EAAGxB,EAAInB,EAAGrF,EAAIvF,CAAG,MAC7B,KAAK,GAAG8L,EAAI9L,EAAG+L,EAAInB,EAAGrF,EAAIiI,CAAG,MAC7B,KAAK,GAAG1B,EAAI9L,EAAG+L,EAAIwB,EAAGhI,EAAIqF,CAAG,MAC7B,KAAK,GAAGkB,EAAI0B,EAAGzB,EAAI/L,EAAGuF,EAAIqF,CAAG,MAC7B,KAAK,GAAGkB,EAAIlB,EAAGmB,EAAI/L,EAAGuF,EAAIgI,EAG5B,OAAQzB,EAAEzH,KAAKC,MAAU,IAAJwH,GAAUC,EAAE1H,KAAKC,MAAU,IAAJyH,GAAUxG,EAAElB,KAAKC,MAAU,IAAJiB,KAGrErG,QAAQ8L,SAAW,SAASN,EAAGC,EAAGC,GAChC,GAAIT,GAAMjL,QAAQoO,SAAS5C,EAAGC,EAAGC,EACjC,OAAO1L,SAAQmL,SAASF,EAAI2B,EAAG3B,EAAI4B,EAAG5B,EAAI5E,IAG5CrG,QAAQsL,SAAW,SAASe,GAC1B,GAAIpB,GAAMjL,QAAQoM,SAASC,EAC3B,OAAOrM,SAAQiN,SAAShC,EAAI2B,EAAG3B,EAAI4B,EAAG5B,EAAI5E,IAG5CrG,QAAQoL,WAAa,SAASiB,GAC5B,GAAIkC,GAAO,qCAAqCC,KAAKnC,EACrD,OAAOkC,IAGTvO,QAAQgL,WAAa,SAASC,GAC5BA,EAAMA,EAAIqB,QAAQ,IAAI,GACtB,IAAIiC,GAAO,wCAAwCC,KAAKvD,EACxD,OAAOsD,IAUTvO,QAAQyO,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWpI,OAAOqI,OAAOF,GACpBlJ,EAAI,EAAGA,EAAIiJ,EAAO9I,OAAQH,IAC7BkJ,EAAgB5I,eAAe2I,EAAOjJ,KACC,gBAA9BkJ,GAAgBD,EAAOjJ,MAChCmJ,EAASF,EAAOjJ,IAAMzF,QAAQ8O,aAAaH,EAAgBD,EAAOjJ,KAIxE,OAAOmJ,GAGP,MAAO,OAWX5O,QAAQ8O,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWpI,OAAOqI,OAAOF,EAC7B,KAAK,GAAIlJ,KAAKkJ,GACRA,EAAgB5I,eAAeN,IACA,gBAAtBkJ,GAAgBlJ,KACzBmJ,EAASnJ,GAAKzF,QAAQ8O,aAAaH,EAAgBlJ,IAIzD,OAAOmJ,GAGP,MAAO,OAcX5O,QAAQ+O,aAAe,SAAUC,EAAaC,EAAShF,GACrD,GAAwBxD,SAApBwI,EAAQhF,GACV,GAA8B,iBAAnBgF,GAAQhF,GACjB+E,EAAY/E,GAAQiF,QAAUD,EAAQhF,OAEnC,CACH+E,EAAY/E,GAAQiF,SAAU,CAC9B,KAAKpJ,OAAQmJ,GAAQhF,GACfgF,EAAQhF,GAAQlE,eAAeD,QACjCkJ,EAAY/E,GAAQnE,MAAQmJ,EAAQhF,GAAQnE,SAiBtD9F,QAAQ+O,aAAe,SAAUC,EAAaC,EAAShF,GACrD,GAAwBxD,SAApBwI,EAAQhF,GACV,GAA8B,iBAAnBgF,GAAQhF,GACjB+E,EAAY/E,GAAQiF,QAAUD,EAAQhF,OAEnC,CACH+E,EAAY/E,GAAQiF,SAAU,CAC9B,KAAKpJ,OAAQmJ,GAAQhF,GACfgF,EAAQhF,GAAQlE,eAAeD,QACjCkJ,EAAY/E,GAAQnE,MAAQmJ,EAAQhF,GAAQnE,SA2BtD9F,QAAQmP,aAAe,SAASC,EAAcC,EAAOC,EAAOC,GAC1D,GAUIjI,GAVAsB,EAAQwG,EAERI,EAAgB,IAChBC,EAAY,EACZC,GAAQ,EACRC,EAAM,EACNC,EAAOhH,EAAMhD,OACbiK,EAASF,EACTG,EAAUF,EACVG,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,GAGjC,IAAY,GAARC,EACFG,EAAQ,OAEL,IAAY,GAARH,EAELG,EADEnH,EAAMmH,GAAOC,UAAUX,GAChB,EAGD,OAGP,CAGH,IAFAO,GAAQ,EAEQ,GAATF,GAA8BF,EAAZC,GACvBnI,EAAmBb,SAAX8I,EAAuB3G,EAAMmH,GAAOT,GAAS1G,EAAMmH,GAAOT,GAAOC,GAErE3G,EAAMmH,GAAOC,UAAUX,GACzBK,GAAQ,GAGJpI,EAAQ+H,EAAMY,MAChBJ,EAAS1K,KAAKC,MAAM,IAAKwK,EAAKD,IAG9BG,EAAU3K,KAAKC,MAAM,IAAKwK,EAAKD,IAG7BA,GAAOE,GAAUD,GAAQE,GAC3BC,EAAQ,GACRL,GAAQ,IAGRE,EAAOE,EAASH,EAAME,EACtBE,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,MAGjCF,GAEEA,IAAaD,GACfU,QAAQC,IAAI,+CAGhB,MAAOJ,IAoBT/P,QAAQoQ,oBAAsB,SAAShB,EAAcvF,EAAQyF,EAAOe,GAClE,GASIC,GACAC,EAAWjJ,EAAOkJ,EAVlBhB,EAAgB,IAChBC,EAAY,EACZ7G,EAAQwG,EACRM,GAAQ,EACRC,EAAM,EACNC,EAAOhH,EAAMhD,OACbiK,EAASF,EACTG,EAAUF,EACVG,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,GAIjC,IAAY,GAARC,EAAYG,EAAQ,OACnB,IAAY,GAARH,EACPtI,EAAQsB,EAAMmH,GAAOT,GAEnBS,EADEzI,GAASuC,EACF,EAGD,OAGP,CAEH,IADA+F,GAAQ,EACQ,GAATF,GAA8BF,EAAZC,GACvBc,EAAY3H,EAAMzD,KAAKiI,IAAI,EAAE2C,EAAQ,IAAIT,GACzChI,EAAQsB,EAAMmH,GAAOT,GACrBkB,EAAY5H,EAAMzD,KAAKwG,IAAI/C,EAAMhD,OAAO,EAAEmK,EAAQ,IAAIT,GAElDhI,GAASuC,GAAsBA,EAAZ0G,GAAsBjJ,EAAQuC,GAAkBA,EAARvC,GAAkBkJ,EAAY3G,GAC3F6F,GAAQ,EACJpI,GAASuC,IACW,UAAlBwG,EACcxG,EAAZ0G,GAAsBjJ,EAAQuC,IAChCkG,EAAQ5K,KAAKiI,IAAI,EAAE2C,EAAQ,IAIjBlG,EAARvC,GAAkBkJ,EAAY3G,IAChCkG,EAAQ5K,KAAKwG,IAAI/C,EAAMhD,OAAO,EAAEmK,EAAQ,OAMlClG,EAARvC,EACFuI,EAAS1K,KAAKC,MAAM,IAAKwK,EAAKD,IAG9BG,EAAU3K,KAAKC,MAAM,IAAKwK,EAAKD,IAEjCW,EAAWnL,KAAKC,MAAM,IAAKwK,EAAKD,IAE5BA,GAAOE,GAAUD,GAAQE,GAC3BC,EAAQ,GACRL,GAAQ,IAGRE,EAAOE,EAASH,EAAME,EACtBE,EAAQ5K,KAAKC,MAAM,IAAKwK,EAAKD,MAGjCF,GAEEA,IAAaD,GACfU,QAAQC,IAAI,+CAGhB,MAAOJ,IAYT/P,QAAQyQ,cAAgB,SAAUnC,EAAG2B,EAAOS,EAAKC,GAC/C,GAAIC,GAASF,EAAMT,CAEnB,OADA3B,IAAKqC,EAAS,EACN,EAAJrC,EAAcsC,EAAO,EAAEtC,EAAEA,EAAI2B,GACjC3B,KACQsC,EAAO,GAAKtC,GAAGA,EAAE,GAAK,GAAK2B,IAUrCjQ,QAAQ6Q,iBAENC,OAAQ,SAAUxC,GAChB,MAAOA,IAGTyC,WAAY,SAAUzC,GACpB,MAAOA,GAAIA,GAGb0C,YAAa,SAAU1C,GACrB,MAAOA,IAAK,EAAIA,IAGlBmC,cAAe,SAAUnC,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjD2C,YAAa,SAAU3C,GACrB,MAAOA,GAAIA,EAAIA,GAGjB4C,aAAc,SAAU5C,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzB6C,eAAgB,SAAU7C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxE8C,YAAa,SAAU9C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB+C,aAAc,SAAU/C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7BgD,eAAgB,SAAUhD,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9DiD,YAAa,SAAUjD,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzBkD,aAAc,SAAUlD,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjCmD,eAAgB,SAAUnD,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAASrO,EAAQD,GASrBA,EAAQ0R,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAc5L,eAAe6L,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC9R,EAAQ+R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAc5L,eAAe6L,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAIpM,GAAI,EAAGA,EAAIkM,EAAcC,GAAaC,UAAUjM,OAAQH,IAC/DkM,EAAcC,GAAaC,UAAUpM,GAAGuE,WAAWgI,YAAYL,EAAcC,GAAaC,UAAUpM,GAEtGkM,GAAcC,GAAaC,eAgBnC7R,EAAQiS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAIlJ,EAqBJ,OAnBI2I,GAAc5L,eAAe6L,GAE3BD,EAAcC,GAAaC,UAAUjM,OAAS,GAChDoD,EAAU2I,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCnJ,EAAUoJ,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAYtJ,KAK3BA,EAAUoJ,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAYtJ,IAE3B2I,EAAcC,GAAaE,KAAK1J,KAAKY,GAC9BA,GAcThJ,EAAQuS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIzJ,EA+BJ,OA7BI2I,GAAc5L,eAAe6L,GAE3BD,EAAcC,GAAaC,UAAUjM,OAAS,GAChDoD,EAAU2I,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCnJ,EAAUoJ,SAASM,cAAcd,GACZnL,SAAjBgM,EACFD,EAAaC,aAAazJ,EAASyJ,GAGnCD,EAAaF,YAAYtJ,KAM7BA,EAAUoJ,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnBpL,SAAjBgM,EACFD,EAAaC,aAAazJ,EAASyJ,GAGnCD,EAAaF,YAAYtJ,IAG7B2I,EAAcC,GAAaE,KAAK1J,KAAKY,GAC9BA,GAkBThJ,EAAQ2S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,GACvD,GAAIa,EAgBJ,OAfsC,UAAlCD,EAAM7D,QAAQ+D,WAAWtF,OAC3BqF,EAAQ/S,EAAQiS,cAAc,SAASN,EAAcO,GACrDa,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,KAAMJ,GACjCE,EAAME,eAAe,KAAM,IAAK,GAAMH,EAAM7D,QAAQ+D,WAAWE,MAC/DH,EAAME,eAAe,KAAM,QAASH,EAAM7K,UAAY,YAGtD8K,EAAQ/S,EAAQiS,cAAc,OAAON,EAAcO,GACnDa,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIE,EAAM7D,QAAQ+D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKJ,EAAI,GAAIC,EAAM7D,QAAQ+D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASH,EAAM7D,QAAQ+D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUH,EAAM7D,QAAQ+D,WAAWE,MAC9DH,EAAME,eAAe,KAAM,QAASH,EAAM7K,UAAY,WAEjD8K,GAUT/S,EAAQmT,QAAU,SAAUP,EAAGC,EAAGO,EAAOC,EAAQpL,EAAW0J,EAAeO,GACzE,GAAc,GAAVmB,EAAa,CACF,EAATA,IACFA,GAAU,GACVR,GAAKQ,EAEP,IAAIC,GAAOtT,EAAQiS,cAAc,OAAON,EAAeO,EACvDoB,GAAKL,eAAe,KAAM,IAAKL,EAAI,GAAMQ,GACzCE,EAAKL,eAAe,KAAM,IAAKJ,GAC/BS,EAAKL,eAAe,KAAM,QAASG,GACnCE,EAAKL,eAAe,KAAM,SAAUI,GACpCC,EAAKL,eAAe,KAAM,QAAShL,MAMnC,SAAShI,EAAQD,EAASM,GA0C9B,QAASW,GAASsS,EAAMtE,GActB,IAZIsE,GAASrN,MAAMC,QAAQoN,IAAUxS,EAAK8D,YAAY0O,KACpDtE,EAAUsE,EACVA,EAAO,MAGTnT,KAAKoT,SAAWvE,MAChB7O,KAAKqT,SACLrT,KAAKsT,SAAWtT,KAAKoT,SAASG,SAAW,KACzCvT,KAAKwT,SAIDxT,KAAKoT,SAASzM,KAChB,IAAK,GAAIuI,KAASlP,MAAKoT,SAASzM,KAC9B,GAAI3G,KAAKoT,SAASzM,KAAKhB,eAAeuJ,GAAQ,CAC5C,GAAIhI,GAAQlH,KAAKoT,SAASzM,KAAKuI,EAE7BlP,MAAKwT,MAAMtE,GADA,QAAThI,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAIlH,KAAKoT,SAAS1M,QAChB,KAAM,IAAIhD,OAAM,sDAGlB1D,MAAKyT,gBAGDN,GACFnT,KAAK0T,IAAIP,GA7Eb,GAAIxS,GAAOT,EAAoB,EA0F/BW,GAAQ8S,UAAUC,GAAK,SAAStK,EAAOhB,GACrC,GAAIuL,GAAc7T,KAAKyT,aAAanK,EAC/BuK,KACHA,KACA7T,KAAKyT,aAAanK,GAASuK,GAG7BA,EAAY7L,MACVM,SAAUA,KAKdzH,EAAQ8S,UAAUG,UAAYjT,EAAQ8S,UAAUC,GAOhD/S,EAAQ8S,UAAUI,IAAM,SAASzK,EAAOhB,GACtC,GAAIuL,GAAc7T,KAAKyT,aAAanK,EAChCuK,KACF7T,KAAKyT,aAAanK,GAASuK,EAAYG,OAAO,SAAUlL,GACtD,MAAQA,GAASR,UAAYA,MAMnCzH,EAAQ8S,UAAUM,YAAcpT,EAAQ8S,UAAUI,IASlDlT,EAAQ8S,UAAUO,SAAW,SAAU5K,EAAO6K,EAAQC,GACpD,GAAa,KAAT9K,EACF,KAAM,IAAI5F,OAAM,yBAGlB,IAAImQ,KACAvK,KAAStJ,MAAKyT,eAChBI,EAAcA,EAAYQ,OAAOrU,KAAKyT,aAAanK,KAEjD,KAAOtJ,MAAKyT,eACdI,EAAcA,EAAYQ,OAAOrU,KAAKyT,aAAa,MAGrD,KAAK,GAAIpO,GAAI,EAAGA,EAAIwO,EAAYrO,OAAQH,IAAK,CAC3C,GAAIiP,GAAaT,EAAYxO,EACzBiP,GAAWhM,UACbgM,EAAWhM,SAASgB,EAAO6K,EAAQC,GAAY,QAYrDvT,EAAQ8S,UAAUD,IAAM,SAAUP,EAAMiB,GACtC,GACI/T,GADAkU,KAEAC,EAAKxU,IAET,IAAI8F,MAAMC,QAAQoN,GAEhB,IAAK,GAAI9N,GAAI,EAAGC,EAAM6N,EAAK3N,OAAYF,EAAJD,EAASA,IAC1ChF,EAAKmU,EAAGC,SAAStB,EAAK9N,IACtBkP,EAASvM,KAAK3H,OAGb,IAAIM,EAAK8D,YAAY0O,GAGxB,IAAK,GADDuB,GAAU1U,KAAK2U,gBAAgBxB,GAC1ByB,EAAM,EAAGC,EAAO1B,EAAK2B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDG,MACKC,EAAM,EAAGC,EAAOP,EAAQlP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAI9F,GAAQwF,EAAQM,EACpBD,GAAK7F,GAASiE,EAAK+B,SAASN,EAAKI,GAGnC3U,EAAKmU,EAAGC,SAASM,GACjBR,EAASvM,KAAK3H,OAGb,CAAA,KAAI8S,YAAgB/M,SAMvB,KAAM,IAAI1C,OAAM,mBAJhBrD,GAAKmU,EAAGC,SAAStB,GACjBoB,EAASvM,KAAK3H,GAUhB,MAJIkU,GAAS/O,QACXxF,KAAKkU,SAAS,OAAQlS,MAAOuS,GAAWH,GAGnCG,GAST1T,EAAQ8S,UAAUwB,OAAS,SAAUhC,EAAMiB,GACzC,GAAIG,MACAa,KACAC,KACAb,EAAKxU,KACLuT,EAAUiB,EAAGlB,SAEbgC,EAAc,SAAUP,GAC1B,GAAI1U,GAAK0U,EAAKxB,EACViB,GAAGnB,MAAMhT,IAEXA,EAAKmU,EAAGe,YAAYR,GACpBK,EAAWpN,KAAK3H,GAChBgV,EAAYrN,KAAK+M,KAIjB1U,EAAKmU,EAAGC,SAASM,GACjBR,EAASvM,KAAK3H,IAIlB,IAAIyF,MAAMC,QAAQoN,GAEhB,IAAK,GAAI9N,GAAI,EAAGC,EAAM6N,EAAK3N,OAAYF,EAAJD,EAASA,IAC1CiQ,EAAYnC,EAAK9N,QAGhB,IAAI1E,EAAK8D,YAAY0O,GAGxB,IAAK,GADDuB,GAAU1U,KAAK2U,gBAAgBxB,GAC1ByB,EAAM,EAAGC,EAAO1B,EAAK2B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDG,MACKC,EAAM,EAAGC,EAAOP,EAAQlP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAI9F,GAAQwF,EAAQM,EACpBD,GAAK7F,GAASiE,EAAK+B,SAASN,EAAKI,GAGnCM,EAAYP,OAGX,CAAA,KAAI5B,YAAgB/M,SAKvB,KAAM,IAAI1C,OAAM,mBAHhB4R,GAAYnC,GAad,MAPIoB,GAAS/O,QACXxF,KAAKkU,SAAS,OAAQlS,MAAOuS,GAAWH,GAEtCgB,EAAW5P,QACbxF,KAAKkU,SAAS,UAAWlS,MAAOoT,EAAYjC,KAAMkC,GAAcjB,GAG3DG,EAASF,OAAOe,IAsCzBvU,EAAQ8S,UAAU6B,IAAM,WACtB,GAGInV,GAAIoV,EAAK5G,EAASsE,EAHlBqB,EAAKxU,KAIL0V,EAAY/U,EAAKqG,QAAQzB,UAAU,GACtB,WAAbmQ,GAAsC,UAAbA,GAE3BrV,EAAKkF,UAAU,GACfsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,IAEG,SAAbmQ,GAEPD,EAAMlQ,UAAU,GAChBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,KAIjBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,GAInB,IAAIoQ,EACJ,IAAI9G,GAAWA,EAAQ8G,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAcpP,QAAQqI,EAAQ8G,YAAoB,QAAU9G,EAAQ8G,WAE7ExC,GAASwC,GAAchV,EAAKqG,QAAQmM,GACtC,KAAM,IAAIzP,OAAM,6BAA+B/C,EAAKqG,QAAQmM,GAAQ,sDACVtE,EAAQlI,KAAO,IAE3E,IAAkB,aAAdgP,IAA8BhV,EAAK8D,YAAY0O,GACjD,KAAM,IAAIzP,OAAM,6EAKlBiS,GADOxC,GAC6B,aAAtBxS,EAAKqG,QAAQmM,GAAwB,YAGtC,OAIf,IAEgB4B,GAAMc,EAAQxQ,EAAGC,EAF7BqB,EAAOkI,GAAWA,EAAQlI,MAAQ3G,KAAKoT,SAASzM,KAChDqN,EAASnF,GAAWA,EAAQmF,OAC5BhS,IAGJ,IAAUqE,QAANhG,EAEF0U,EAAOP,EAAGsB,SAASzV,EAAIsG,GACnBqN,IAAWA,EAAOe,KACpBA,EAAO,UAGN,IAAW1O,QAAPoP,EAEP,IAAKpQ,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrC0P,EAAOP,EAAGsB,SAASL,EAAIpQ,GAAIsB,KACtBqN,GAAUA,EAAOe,KACpB/S,EAAMgG,KAAK+M,OAMf,KAAKc,IAAU7V,MAAKqT,MACdrT,KAAKqT,MAAM1N,eAAekQ,KAC5Bd,EAAOP,EAAGsB,SAASD,EAAQlP,KACtBqN,GAAUA,EAAOe,KACpB/S,EAAMgG,KAAK+M,GAYnB,IALIlG,GAAWA,EAAQkH,OAAe1P,QAANhG,GAC9BL,KAAKgW,MAAMhU,EAAO6M,EAAQkH,OAIxBlH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAUjI,QAANhG,EACF0U,EAAO/U,KAAKiW,cAAclB,EAAMzG,OAGhC,KAAKjJ,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvCrD,EAAMqD,GAAKrF,KAAKiW,cAAcjU,EAAMqD,GAAIiJ,GAM9C,GAAkB,aAAdqH,EAA2B,CAC7B,GAAIjB,GAAU1U,KAAK2U,gBAAgBxB,EACnC,IAAU9M,QAANhG,EAEFmU,EAAG0B,WAAW/C,EAAMuB,EAASK,OAI7B,KAAK1P,EAAI,EAAGA,EAAIrD,EAAMwD,OAAQH,IAC5BmP,EAAG0B,WAAW/C,EAAMuB,EAAS1S,EAAMqD,GAGvC,OAAO8N,GAEJ,GAAkB,UAAdwC,EAAwB,CAC/B,GAAIQ,KACJ,KAAK9Q,EAAI,EAAGA,EAAIrD,EAAMwD,OAAQH,IAC5B8Q,EAAOnU,EAAMqD,GAAGhF,IAAM2B,EAAMqD,EAE9B,OAAO8Q,GAIP,GAAU9P,QAANhG,EAEF,MAAO0U,EAIP,IAAI5B,EAAM,CAER,IAAK9N,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvC8N,EAAKnL,KAAKhG,EAAMqD,GAElB,OAAO8N,GAIP,MAAOnR,IAcfnB,EAAQ8S,UAAUyC,OAAS,SAAUvH,GACnC,GAIIxJ,GACAC,EACAjF,EACA0U,EACA/S,EARAmR,EAAOnT,KAAKqT,MACZW,EAASnF,GAAWA,EAAQmF,OAC5B+B,EAAQlH,GAAWA,EAAQkH,MAC3BpP,EAAOkI,GAAWA,EAAQlI,MAAQ3G,KAAKoT,SAASzM,KAMhD8O,IAEJ,IAAIzB,EAEF,GAAI+B,EAAO,CAET/T,IACA,KAAK3B,IAAM8S,GACLA,EAAKxN,eAAetF,KACtB0U,EAAO/U,KAAK8V,SAASzV,EAAIsG,GACrBqN,EAAOe,IACT/S,EAAMgG,KAAK+M,GAOjB,KAFA/U,KAAKgW,MAAMhU,EAAO+T,GAEb1Q,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvCoQ,EAAIpQ,GAAKrD,EAAMqD,GAAGrF,KAAKsT,cAKzB,KAAKjT,IAAM8S,GACLA,EAAKxN,eAAetF,KACtB0U,EAAO/U,KAAK8V,SAASzV,EAAIsG,GACrBqN,EAAOe,IACTU,EAAIzN,KAAK+M,EAAK/U,KAAKsT,gBAQ3B,IAAIyC,EAAO,CAET/T,IACA,KAAK3B,IAAM8S,GACLA,EAAKxN,eAAetF,IACtB2B,EAAMgG,KAAKmL,EAAK9S,GAMpB,KAFAL,KAAKgW,MAAMhU,EAAO+T,GAEb1Q,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IACvCoQ,EAAIpQ,GAAKrD,EAAMqD,GAAGrF,KAAKsT,cAKzB,KAAKjT,IAAM8S,GACLA,EAAKxN,eAAetF,KACtB0U,EAAO5B,EAAK9S,GACZoV,EAAIzN,KAAK+M,EAAK/U,KAAKsT,WAM3B,OAAOmC,IAOT5U,EAAQ8S,UAAU0C,WAAa,WAC7B,MAAOrW,OAaTa,EAAQ8S,UAAUtL,QAAU,SAAUC,EAAUuG,GAC9C,GAGIkG,GACA1U,EAJA2T,EAASnF,GAAWA,EAAQmF,OAC5BrN,EAAOkI,GAAWA,EAAQlI,MAAQ3G,KAAKoT,SAASzM,KAChDwM,EAAOnT,KAAKqT,KAIhB,IAAIxE,GAAWA,EAAQkH,MAIrB,IAAK,GAFD/T,GAAQhC,KAAKwV,IAAI3G,GAEZxJ,EAAI,EAAGC,EAAMtD,EAAMwD,OAAYF,EAAJD,EAASA,IAC3C0P,EAAO/S,EAAMqD,GACbhF,EAAK0U,EAAK/U,KAAKsT,UACfhL,EAASyM,EAAM1U,OAKjB,KAAKA,IAAM8S,GACLA,EAAKxN,eAAetF,KACtB0U,EAAO/U,KAAK8V,SAASzV,EAAIsG,KACpBqN,GAAUA,EAAOe,KACpBzM,EAASyM,EAAM1U,KAkBzBQ,EAAQ8S,UAAUjG,IAAM,SAAUpF,EAAUuG,GAC1C,GAIIkG,GAJAf,EAASnF,GAAWA,EAAQmF,OAC5BrN,EAAOkI,GAAWA,EAAQlI,MAAQ3G,KAAKoT,SAASzM,KAChD2P,KACAnD,EAAOnT,KAAKqT,KAIhB,KAAK,GAAIhT,KAAM8S,GACTA,EAAKxN,eAAetF,KACtB0U,EAAO/U,KAAK8V,SAASzV,EAAIsG,KACpBqN,GAAUA,EAAOe,KACpBuB,EAAYtO,KAAKM,EAASyM,EAAM1U,IAUtC,OAJIwO,IAAWA,EAAQkH,OACrB/V,KAAKgW,MAAMM,EAAazH,EAAQkH,OAG3BO,GAUTzV,EAAQ8S,UAAUsC,cAAgB,SAAUlB,EAAMzG,GAChD,GAAIiI,KAEJ,KAAK,GAAIrH,KAAS6F,GACZA,EAAKpP,eAAeuJ,IAAoC,IAAzBZ,EAAO9H,QAAQ0I,KAChDqH,EAAarH,GAAS6F,EAAK7F,GAI/B,OAAOqH,IAST1V,EAAQ8S,UAAUqC,MAAQ,SAAUhU,EAAO+T,GACzC,GAAIpV,EAAKqD,SAAS+R,GAAQ,CAExB,GAAIS,GAAOT,CACX/T,GAAMyU,KAAK,SAAUrR,EAAGa,GACtB,GAAIyQ,GAAKtR,EAAEoR,GACPG,EAAK1Q,EAAEuQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVX,GAOd,KAAM,IAAI7P,WAAU,uCALpBlE,GAAMyU,KAAKV,KAgBflV,EAAQ8S,UAAUiD,OAAS,SAAUvW,EAAI+T,GACvC,GACI/O,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQ1F,GAChB,IAAKgF,EAAI,EAAGC,EAAMjF,EAAGmF,OAAYF,EAAJD,EAASA,IACpCwR,EAAY7W,KAAK+W,QAAQ1W,EAAGgF,IACX,MAAbwR,GACFC,EAAW9O,KAAK6O,OAKpBA,GAAY7W,KAAK+W,QAAQ1W,GACR,MAAbwW,GACFC,EAAW9O,KAAK6O,EAQpB,OAJIC,GAAWtR,QACbxF,KAAKkU,SAAS,UAAWlS,MAAO8U,GAAa1C,GAGxC0C,GASTjW,EAAQ8S,UAAUoD,QAAU,SAAU1W,GACpC,GAAIM,EAAKkD,SAASxD,IAAOM,EAAKqD,SAAS3D,IACrC,GAAIL,KAAKqT,MAAMhT,GAEb,aADOL,MAAKqT,MAAMhT,GACXA,MAGN,IAAIA,YAAc+F,QAAQ,CAC7B,GAAIyP,GAASxV,EAAGL,KAAKsT,SACrB,IAAIuC,GAAU7V,KAAKqT,MAAMwC,GAEvB,aADO7V,MAAKqT,MAAMwC,GACXA,EAGX,MAAO,OAQThV,EAAQ8S,UAAUqD,MAAQ,SAAU5C,GAClC,GAAIqB,GAAMrP,OAAOqH,KAAKzN,KAAKqT,MAM3B,OAJArT,MAAKqT,SAELrT,KAAKkU,SAAS,UAAWlS,MAAOyT,GAAMrB,GAE/BqB,GAQT5U,EAAQ8S,UAAU3G,IAAM,SAAUkC,GAChC,GAAIiE,GAAOnT,KAAKqT,MACZrG,EAAM,KACNiK,EAAW,IAEf,KAAK,GAAI5W,KAAM8S,GACb,GAAIA,EAAKxN,eAAetF,GAAK,CAC3B,GAAI0U,GAAO5B,EAAK9S,GACZ6W,EAAYnC,EAAK7F,EACJ,OAAbgI,KAAuBlK,GAAOkK,EAAYD,KAC5CjK,EAAM+H,EACNkC,EAAWC,GAKjB,MAAOlK,IAQTnM,EAAQ8S,UAAUpI,IAAM,SAAU2D,GAChC,GAAIiE,GAAOnT,KAAKqT,MACZ9H,EAAM,KACN4L,EAAW,IAEf,KAAK,GAAI9W,KAAM8S,GACb,GAAIA,EAAKxN,eAAetF,GAAK,CAC3B,GAAI0U,GAAO5B,EAAK9S,GACZ6W,EAAYnC,EAAK7F,EACJ,OAAbgI,KAAuB3L,GAAmB4L,EAAZD,KAChC3L,EAAMwJ,EACNoC,EAAWD,GAKjB,MAAO3L,IAUT1K,EAAQ8S,UAAUyD,SAAW,SAAUlI,GACrC,GAII7J,GAJA8N,EAAOnT,KAAKqT,MACZgE,KACAC,EAAYtX,KAAKoT,SAASzM,MAAQ3G,KAAKoT,SAASzM,KAAKuI,IAAU,KAC/DqI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQyN,GACf,GAAIA,EAAKxN,eAAeD,GAAO,CAC7B,GAAIqP,GAAO5B,EAAKzN,GACZwB,EAAQ6N,EAAK7F,GACbsI,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAM6B,EAAO,CACtBsQ,GAAS,CACT,OAGCA,GAAqBnR,SAAVa,IACdmQ,EAAOE,GAASrQ,EAChBqQ,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAK1E,EAAK+F,QAAQ2Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASTxW,EAAQ8S,UAAUc,SAAW,SAAUM,GACrC,GAAI1U,GAAK0U,EAAK/U,KAAKsT,SAEnB,IAAUjN,QAANhG,GAEF,GAAIL,KAAKqT,MAAMhT,GAEb,KAAM,IAAIqD,OAAM,iCAAmCrD,EAAK,uBAK1DA,GAAKM,EAAKkE,aACVkQ,EAAK/U,KAAKsT,UAAYjT,CAGxB,IAAIgM,KACJ,KAAK,GAAI6C,KAAS6F,GAChB,GAAIA,EAAKpP,eAAeuJ,GAAQ,CAC9B,GAAIoI,GAAYtX,KAAKwT,MAAMtE,EAC3B7C,GAAE6C,GAASvO,EAAK+F,QAAQqO,EAAK7F,GAAQoI,GAKzC,MAFAtX,MAAKqT,MAAMhT,GAAMgM,EAEVhM,GAUTQ,EAAQ8S,UAAUmC,SAAW,SAAUzV,EAAIoX,GACzC,GAAIvI,GAAOhI,EAGPwQ,EAAM1X,KAAKqT,MAAMhT,EACrB,KAAKqX,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAKvI,IAASwI,GACRA,EAAI/R,eAAeuJ,KACrBhI,EAAQwQ,EAAIxI,GACZyI,EAAUzI,GAASvO,EAAK+F,QAAQQ,EAAOuQ,EAAMvI,SAMjD,KAAKA,IAASwI,GACRA,EAAI/R,eAAeuJ,KACrBhI,EAAQwQ,EAAIxI,GACZyI,EAAUzI,GAAShI,EAIzB,OAAOyQ,IAWT9W,EAAQ8S,UAAU4B,YAAc,SAAUR,GACxC,GAAI1U,GAAK0U,EAAK/U,KAAKsT,SACnB,IAAUjN,QAANhG,EACF,KAAM,IAAIqD,OAAM,6CAA+CkU,KAAKC,UAAU9C,GAAQ,IAExF,IAAI1I,GAAIrM,KAAKqT,MAAMhT,EACnB,KAAKgM,EAEH,KAAM,IAAI3I,OAAM,uCAAyCrD,EAAK,SAIhE,KAAK,GAAI6O,KAAS6F,GAChB,GAAIA,EAAKpP,eAAeuJ,GAAQ,CAC9B,GAAIoI,GAAYtX,KAAKwT,MAAMtE,EAC3B7C,GAAE6C,GAASvO,EAAK+F,QAAQqO,EAAK7F,GAAQoI,GAIzC,MAAOjX,IASTQ,EAAQ8S,UAAUgB,gBAAkB,SAAUmD,GAE5C,IAAK,GADDpD,MACKM,EAAM,EAAGC,EAAO6C,EAAUC,qBAA4B9C,EAAND,EAAYA,IACnEN,EAAQM,GAAO8C,EAAUE,YAAYhD,IAAQ8C,EAAUG,eAAejD,EAExE,OAAON,IAUT7T,EAAQ8S,UAAUuC,WAAa,SAAU4B,EAAWpD,EAASK,GAG3D,IAAK,GAFDH,GAAMkD,EAAUI,SAEXlD,EAAM,EAAGC,EAAOP,EAAQlP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAI9F,GAAQwF,EAAQM,EACpB8C,GAAUK,SAASvD,EAAKI,EAAKD,EAAK7F,MAItCrP,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAUqS,EAAMtE,GACvB7O,KAAKqT,MAAQ,KACbrT,KAAKoY,QACLpY,KAAKoT,SAAWvE,MAChB7O,KAAKsT,SAAW,KAChBtT,KAAKyT,eAEL,IAAIe,GAAKxU,IACTA,MAAK8I,SAAW,WACd0L,EAAG6D,SAASC,MAAM9D,EAAIjP,YAGxBvF,KAAKuY,QAAQpF,GAzBf,GAAIxS,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAkClCY,GAAS6S,UAAU4E,QAAU,SAAUpF,GACrC,GAAIsC,GAAKpQ,EAAGC,CAEZ,IAAItF,KAAKqT,MAAO,CAEVrT,KAAKqT,MAAMY,aACbjU,KAAKqT,MAAMY,YAAY,IAAKjU,KAAK8I,UAInC2M,IACA,KAAK,GAAIpV,KAAML,MAAKoY,KACdpY,KAAKoY,KAAKzS,eAAetF,IAC3BoV,EAAIzN,KAAK3H,EAGbL,MAAKoY,QACLpY,KAAKkU,SAAS,UAAWlS,MAAOyT,IAKlC,GAFAzV,KAAKqT,MAAQF,EAETnT,KAAKqT,MAAO,CAQd,IANArT,KAAKsT,SAAWtT,KAAKoT,SAASG,SACzBvT,KAAKqT,OAASrT,KAAKqT,MAAMxE,SAAW7O,KAAKqT,MAAMxE,QAAQ0E,SACxD,KAGJkC,EAAMzV,KAAKqT,MAAM+C,QAAQpC,OAAQhU,KAAKoT,UAAYpT,KAAKoT,SAASY,SAC3D3O,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrChF,EAAKoV,EAAIpQ,GACTrF,KAAKoY,KAAK/X,IAAM,CAElBL,MAAKkU,SAAS,OAAQlS,MAAOyT,IAGzBzV,KAAKqT,MAAMO,IACb5T,KAAKqT,MAAMO,GAAG,IAAK5T,KAAK8I,YAuC9BhI,EAAS6S,UAAU6B,IAAM,WACvB,GAGIC,GAAK5G,EAASsE,EAHdqB,EAAKxU,KAIL0V,EAAY/U,EAAKqG,QAAQzB,UAAU,GACtB,WAAbmQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMlQ,UAAU,GAChBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,KAIjBsJ,EAAUtJ,UAAU,GACpB4N,EAAO5N,UAAU,GAInB,IAAIiT,GAAc7X,EAAKwE,UAAWnF,KAAKoT,SAAUvE,EAG7C7O,MAAKoT,SAASY,QAAUnF,GAAWA,EAAQmF,SAC7CwE,EAAYxE,OAAS,SAAUe,GAC7B,MAAOP,GAAGpB,SAASY,OAAOe,IAASlG,EAAQmF,OAAOe,IAKtD,IAAI0D,KAOJ,OANWpS,SAAPoP,GACFgD,EAAazQ,KAAKyN,GAEpBgD,EAAazQ,KAAKwQ,GAClBC,EAAazQ,KAAKmL,GAEXnT,KAAKqT,OAASrT,KAAKqT,MAAMmC,IAAI8C,MAAMtY,KAAKqT,MAAOoF,IAWxD3X,EAAS6S,UAAUyC,OAAS,SAAUvH,GACpC,GAAI4G,EAEJ,IAAIzV,KAAKqT,MAAO,CACd,GACIW,GADA0E,EAAgB1Y,KAAKoT,SAASY,MAK9BA,GAFAnF,GAAWA,EAAQmF,OACjB0E,EACO,SAAU3D,GACjB,MAAO2D,GAAc3D,IAASlG,EAAQmF,OAAOe,IAItClG,EAAQmF,OAIV0E,EAGXjD,EAAMzV,KAAKqT,MAAM+C,QACfpC,OAAQA,EACR+B,MAAOlH,GAAWA,EAAQkH,YAI5BN,KAGF,OAAOA,IAQT3U,EAAS6S,UAAU0C,WAAa,WAE9B,IADA,GAAIsC,GAAU3Y,KACP2Y,YAAmB7X,IACxB6X,EAAUA,EAAQtF,KAEpB,OAAOsF,IAAW,MAYpB7X,EAAS6S,UAAU0E,SAAW,SAAU/O,EAAO6K,EAAQC,GACrD,GAAI/O,GAAGC,EAAKjF,EAAI0U,EACZU,EAAMtB,GAAUA,EAAOnS,MACvBmR,EAAOnT,KAAKqT,MACZuF,KACAC,KACAC,IAEJ,IAAIrD,GAAOtC,EAAM,CACf,OAAQ7J,GACN,IAAK,MAEH,IAAKjE,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrChF,EAAKoV,EAAIpQ,GACT0P,EAAO/U,KAAKwV,IAAInV,GACZ0U,IACF/U,KAAKoY,KAAK/X,IAAM,EAChBuY,EAAM5Q,KAAK3H,GAIf,MAEF,KAAK,SAGH,IAAKgF,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrChF,EAAKoV,EAAIpQ,GACT0P,EAAO/U,KAAKwV,IAAInV,GAEZ0U,EACE/U,KAAKoY,KAAK/X,GACZwY,EAAQ7Q,KAAK3H,IAGbL,KAAKoY,KAAK/X,IAAM,EAChBuY,EAAM5Q,KAAK3H,IAITL,KAAKoY,KAAK/X,WACLL,MAAKoY,KAAK/X,GACjByY,EAAQ9Q,KAAK3H,GAQnB,MAEF,KAAK,SAEH,IAAKgF,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IACrChF,EAAKoV,EAAIpQ,GACLrF,KAAKoY,KAAK/X,WACLL,MAAKoY,KAAK/X,GACjByY,EAAQ9Q,KAAK3H,IAOjBuY,EAAMpT,QACRxF,KAAKkU,SAAS,OAAQlS,MAAO4W,GAAQxE,GAEnCyE,EAAQrT,QACVxF,KAAKkU,SAAS,UAAWlS,MAAO6W,GAAUzE,GAExC0E,EAAQtT,QACVxF,KAAKkU,SAAS,UAAWlS,MAAO8W,GAAU1E,KAMhDtT,EAAS6S,UAAUC,GAAK/S,EAAQ8S,UAAUC,GAC1C9S,EAAS6S,UAAUI,IAAMlT,EAAQ8S,UAAUI,IAC3CjT,EAAS6S,UAAUO,SAAWrT,EAAQ8S,UAAUO,SAGhDpT,EAAS6S,UAAUG,UAAYhT,EAAS6S,UAAUC,GAClD9S,EAAS6S,UAAUM,YAAcnT,EAAS6S,UAAUI,IAEpDlU,EAAOD,QAAUkB,GAIb,SAASjB,EAAQD,EAASM,GAwB9B,QAASa,GAAQgY,EAAW5F,EAAMtE,GAChC,KAAM7O,eAAgBe,IACpB,KAAM,IAAIiY,aAAY,mDAIxBhZ,MAAKiZ,iBAAmBF,EACxB/Y,KAAKgT,MAAQ,QACbhT,KAAKiT,OAAS,QACdjT,KAAKkZ,OAAS,GACdlZ,KAAKmZ,eAAiB,MACtBnZ,KAAKoZ,eAAiB,MAEtBpZ,KAAKqZ,OAAS,IACdrZ,KAAKsZ,OAAS,IACdtZ,KAAKuZ,OAAS,GAEd,IAAIC,GAAc,SAASlO,GAAK,MAAOA,GACvCtL,MAAKyZ,YAAcD,EACnBxZ,KAAK0Z,YAAcF,EACnBxZ,KAAK2Z,YAAcH,EAEnBxZ,KAAK4Z,YAAc,OACnB5Z,KAAK6Z,YAAc,QAEnB7Z,KAAKsN,MAAQvM,EAAQ+Y,MAAMC,IAC3B/Z,KAAKga,iBAAkB,EACvBha,KAAKia,UAAW,EAChBja,KAAKka,iBAAkB,EACvBla,KAAKma,YAAa,EAClBna,KAAKoa,gBAAiB,EACtBpa,KAAKqa,aAAc,EACnBra,KAAKsa,cAAgB,GAErBta,KAAKua,kBAAoB,IACzBva,KAAKwa,kBAAmB,EAExBxa,KAAKya,OAAS,GAAIxZ,GAClBjB,KAAK0a,IAAM,GAAItZ,GAAQ,EAAG,EAAG,IAE7BpB,KAAK8X,UAAY,KACjB9X,KAAK2a,WAAa,KAGlB3a,KAAK4a,KAAOvU,OACZrG,KAAK6a,KAAOxU,OACZrG,KAAK8a,KAAOzU,OACZrG,KAAK+a,SAAW1U,OAChBrG,KAAKgb,UAAY3U,OAEjBrG,KAAKib,KAAO,EACZjb,KAAKkb,MAAQ7U,OACbrG,KAAKmb,KAAO,EACZnb,KAAKob,KAAO,EACZpb,KAAKqb,MAAQhV,OACbrG,KAAKsb,KAAO,EACZtb,KAAKub,KAAO,EACZvb,KAAKwb,MAAQnV,OACbrG,KAAKyb,KAAO,EACZzb,KAAK0b,SAAW,EAChB1b,KAAK2b,SAAW,EAChB3b,KAAK4b,UAAY,EACjB5b,KAAK6b,UAAY,EAIjB7b,KAAK8b,UAAY,UACjB9b,KAAK+b,UAAY,UACjB/b,KAAKgc,SAAW,UAChBhc,KAAKic,eAAiB,UAGtBjc,KAAKyO,SAGLzO,KAAKkc,WAAWrN,GAGZsE,GACFnT,KAAKuY,QAAQpF,GArGjB,GAAIgJ,GAAUjc,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BkB,EAAUlB,EAAoB,GAC9BiB,EAAUjB,EAAoB,GAC9Be,EAASf,EAAoB,GAC7BgB,EAAShB,EAAoB,GAC7BmB,EAASnB,EAAoB,IAC7BoB,EAAapB,EAAoB,GAiGrCic,GAAQpb,EAAQ4S,WAKhB5S,EAAQ4S,UAAUyI,UAAY,WAC5Bpc,KAAKqc,MAAQ,GAAIjb,GAAQ,GAAKpB,KAAKmb,KAAOnb,KAAKib,MAC7C,GAAKjb,KAAKsb,KAAOtb,KAAKob,MACtB,GAAKpb,KAAKyb,KAAOzb,KAAKub,OAGpBvb,KAAKka,kBACHla,KAAKqc,MAAM7J,EAAIxS,KAAKqc,MAAM5J,EAE5BzS,KAAKqc,MAAM5J,EAAIzS,KAAKqc,MAAM7J,EAI1BxS,KAAKqc,MAAM7J,EAAIxS,KAAKqc,MAAM5J,GAK9BzS,KAAKqc,MAAMC,GAAKtc,KAAKsa,cAIrBta,KAAKqc,MAAMnV,MAAQ,GAAKlH,KAAK2b,SAAW3b,KAAK0b,SAG7C,IAAIa,IAAWvc,KAAKmb,KAAOnb,KAAKib,MAAQ,EAAIjb,KAAKqc,MAAM7J,EACnDgK,GAAWxc,KAAKsb,KAAOtb,KAAKob,MAAQ,EAAIpb,KAAKqc,MAAM5J,EACnDgK,GAAWzc,KAAKyb,KAAOzb,KAAKub,MAAQ,EAAIvb,KAAKqc,MAAMC,CACvDtc,MAAKya,OAAOiC,eAAeH,EAASC,EAASC,IAU/C1b,EAAQ4S,UAAUgJ,eAAiB,SAASC,GAC1C,GAAIC,GAAc7c,KAAK8c,2BAA2BF,EAClD,OAAO5c,MAAK+c,4BAA4BF,IAW1C9b,EAAQ4S,UAAUmJ,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQpK,EAAIxS,KAAKqc,MAAM7J,EAC9ByK,EAAKL,EAAQnK,EAAIzS,KAAKqc,MAAM5J,EAC5ByK,EAAKN,EAAQN,EAAItc,KAAKqc,MAAMC,EAE5Ba,EAAKnd,KAAKya,OAAO2C,oBAAoB5K,EACrC6K,EAAKrd,KAAKya,OAAO2C,oBAAoB3K,EACrC6K,EAAKtd,KAAKya,OAAO2C,oBAAoBd,EAGrCiB,EAAQxY,KAAKyY,IAAIxd,KAAKya,OAAOgD,oBAAoBjL,GACjDkL,EAAQ3Y,KAAK4Y,IAAI3d,KAAKya,OAAOgD,oBAAoBjL,GACjDoL,EAAQ7Y,KAAKyY,IAAIxd,KAAKya,OAAOgD,oBAAoBhL,GACjDoL,EAAQ9Y,KAAK4Y,IAAI3d,KAAKya,OAAOgD,oBAAoBhL,GACjDqL,EAAQ/Y,KAAKyY,IAAIxd,KAAKya,OAAOgD,oBAAoBnB,GACjDyB,EAAQhZ,KAAK4Y,IAAI3d,KAAKya,OAAOgD,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,IAAI/b,GAAQ4c,EAAIC,EAAIC,IAU7Bnd,EAAQ4S,UAAUoJ,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKre,KAAK0a,IAAIlI,EAChB8L,EAAKte,KAAK0a,IAAIjI,EACd8L,EAAKve,KAAK0a,IAAI4B,EACd0B,EAAKnB,EAAYrK,EACjByL,EAAKpB,EAAYpK,EACjByL,EAAKrB,EAAYP,CAgBnB,OAXItc,MAAKga,iBACPmE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKve,KAAKya,OAAO+D,gBAC7BJ,EAAKH,IAAOM,EAAKve,KAAKya,OAAO+D,iBAKxB,GAAIrd,GACTnB,KAAKye,QAAUN,EAAKne,KAAK0e,MAAMC,OAAOC,YACtC5e,KAAK6e,QAAUT,EAAKpe,KAAK0e,MAAMC,OAAOC,cAO1C7d,EAAQ4S,UAAUmL,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgB7Y,SAAzB0Y,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC3Y,SAA3B0Y,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClC5Y,SAAhC0Y,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyB7Y,SAApB0Y,EAIR,KAAM,qCAGR/e,MAAK0e,MAAMpR,MAAMyR,gBAAkBC,EACnChf,KAAK0e,MAAMpR,MAAM6R,YAAcF,EAC/Bjf,KAAK0e,MAAMpR,MAAM8R,YAAcF,EAAc,KAC7Clf,KAAK0e,MAAMpR,MAAM+R,YAAc,SAKjCte,EAAQ+Y,OACNwF,IAAK,EACLC,SAAU,EACVC,QAAS,EACTzF,IAAM,EACN0F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ/e,EAAQ4S,UAAUoM,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAOjf,GAAQ+Y,MAAMC,GACrC,KAAK,WAAa,MAAOhZ,GAAQ+Y,MAAM2F,OACvC,KAAK,YAAe,MAAO1e,GAAQ+Y,MAAM4F,QACzC,KAAK,WAAa,MAAO3e,GAAQ+Y,MAAM6F,OACvC,KAAK,OAAW,MAAO5e,GAAQ+Y,MAAM+F,IACrC,KAAK,OAAW,MAAO9e,GAAQ+Y,MAAM8F,IACrC,KAAK,UAAa,MAAO7e,GAAQ+Y,MAAMgG,OACvC,KAAK,MAAW,MAAO/e,GAAQ+Y,MAAMwF,GACrC,KAAK,YAAe,MAAOve,GAAQ+Y,MAAMyF,QACzC,KAAK,WAAa,MAAOxe,GAAQ+Y,MAAM0F,QAGzC,MAAO,IAQTze,EAAQ4S,UAAUsM,wBAA0B,SAAS9M,GACnD,GAAInT,KAAKsN,QAAUvM,EAAQ+Y,MAAMC,KAC/B/Z,KAAKsN,QAAUvM,EAAQ+Y,MAAM2F,SAC7Bzf,KAAKsN,QAAUvM,EAAQ+Y,MAAM+F,MAC7B7f,KAAKsN,QAAUvM,EAAQ+Y,MAAM8F,MAC7B5f,KAAKsN,QAAUvM,EAAQ+Y,MAAMgG,SAC7B9f,KAAKsN,QAAUvM,EAAQ+Y,MAAMwF,IAE7Btf,KAAK4a,KAAO,EACZ5a,KAAK6a,KAAO,EACZ7a,KAAK8a,KAAO,EACZ9a,KAAK+a,SAAW1U,OAEZ8M,EAAK4E,qBAAuB,IAC9B/X,KAAKgb,UAAY,OAGhB,CAAA,GAAIhb,KAAKsN,QAAUvM,EAAQ+Y,MAAM4F,UACpC1f,KAAKsN,QAAUvM,EAAQ+Y,MAAM6F,SAC7B3f,KAAKsN,QAAUvM,EAAQ+Y,MAAMyF,UAC7Bvf,KAAKsN,QAAUvM,EAAQ+Y,MAAM0F,QAY7B,KAAM,kBAAoBxf,KAAKsN,MAAQ,GAVvCtN,MAAK4a,KAAO,EACZ5a,KAAK6a,KAAO,EACZ7a,KAAK8a,KAAO,EACZ9a,KAAK+a,SAAW,EAEZ5H,EAAK4E,qBAAuB,IAC9B/X,KAAKgb,UAAY,KAQvBja,EAAQ4S,UAAUmB,gBAAkB,SAAS3B,GAC3C,MAAOA,GAAK3N,QAIdzE,EAAQ4S,UAAUoE,mBAAqB,SAAS5E,GAC9C,GAAI+M,GAAU,CACd,KAAK,GAAIC,KAAUhN,GAAK,GAClBA,EAAK,GAAGxN,eAAewa,IACzBD,GAGJ,OAAOA,IAITnf,EAAQ4S,UAAUyM,kBAAoB,SAASjN,EAAMgN,GAEnD,IAAK,GADDE,MACKhb,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IACgB,IAA3Cgb,EAAe7Z,QAAQ2M,EAAK9N,GAAG8a,KACjCE,EAAerY,KAAKmL,EAAK9N,GAAG8a,GAGhC,OAAOE,IAITtf,EAAQ4S,UAAU2M,eAAiB,SAASnN,EAAKgN,GAE/C,IAAK,GADDI,IAAUhV,IAAI4H,EAAK,GAAGgN,GAAQnT,IAAImG,EAAK,GAAGgN,IACrC9a,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAC3Bkb,EAAOhV,IAAM4H,EAAK9N,GAAG8a,KAAWI,EAAOhV,IAAM4H,EAAK9N,GAAG8a,IACrDI,EAAOvT,IAAMmG,EAAK9N,GAAG8a,KAAWI,EAAOvT,IAAMmG,EAAK9N,GAAG8a,GAE3D,OAAOI,IASTxf,EAAQ4S,UAAU6M,gBAAkB,SAAUC,GAC5C,GAAIjM,GAAKxU,IAOT,IAJIA,KAAK2Y,SACP3Y,KAAK2Y,QAAQ5E,IAAI,IAAK/T,KAAK0gB,WAGbra,SAAZoa,EAAJ,CAGI3a,MAAMC,QAAQ0a,KAChBA,EAAU,GAAI5f,GAAQ4f,GAGxB,IAAItN,EACJ,MAAIsN,YAAmB5f,IAAW4f,YAAmB3f,IAInD,KAAM,IAAI4C,OAAM,uCAGlB,IANEyP,EAAOsN,EAAQjL,MAME,GAAfrC,EAAK3N,OAAT,CAGAxF,KAAK2Y,QAAU8H,EACfzgB,KAAK8X,UAAY3E,EAGjBnT,KAAK0gB,UAAY,WACflM,EAAG+D,QAAQ/D,EAAGmE,UAEhB3Y,KAAK2Y,QAAQ/E,GAAG,IAAK5T,KAAK0gB,WAS1B1gB,KAAK4a,KAAO,IACZ5a,KAAK6a,KAAO,IACZ7a,KAAK8a,KAAO,IACZ9a,KAAK+a,SAAW,QAChB/a,KAAKgb,UAAY,SAKb7H,EAAK,GAAGxN,eAAe,WACDU,SAApBrG,KAAK2gB,aACP3gB,KAAK2gB,WAAa,GAAIzf,GAAOuf,EAASzgB,KAAKgb,UAAWhb,MACtDA,KAAK2gB,WAAWC,kBAAkB,WAAYpM,EAAGqM,WAKrD,IAAIC,GAAW9gB,KAAKsN,OAASvM,EAAQ+Y,MAAMwF,KACzCtf,KAAKsN,OAASvM,EAAQ+Y,MAAMyF,UAC5Bvf,KAAKsN,OAASvM,EAAQ+Y,MAAM0F,OAG9B,IAAIsB,EAAU,CACZ,GAA8Bza,SAA1BrG,KAAK+gB,iBACP/gB,KAAK4b,UAAY5b,KAAK+gB,qBAEnB,CACH,GAAIC,GAAQhhB,KAAKogB,kBAAkBjN,EAAKnT,KAAK4a,KAC7C5a,MAAK4b,UAAaoF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B3a,SAA1BrG,KAAKihB,iBACPjhB,KAAK6b,UAAY7b,KAAKihB,qBAEnB,CACH,GAAIC,GAAQlhB,KAAKogB,kBAAkBjN,EAAKnT,KAAK6a,KAC7C7a,MAAK6b,UAAaqF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAASnhB,KAAKsgB,eAAenN,EAAKnT,KAAK4a,KACvCkG,KACFK,EAAO5V,KAAOvL,KAAK4b,UAAY,EAC/BuF,EAAOnU,KAAOhN,KAAK4b,UAAY,GAEjC5b,KAAKib,KAA6B5U,SAArBrG,KAAKohB,YAA6BphB,KAAKohB,YAAcD,EAAO5V,IACzEvL,KAAKmb,KAA6B9U,SAArBrG,KAAKqhB,YAA6BrhB,KAAKqhB,YAAcF,EAAOnU,IACrEhN,KAAKmb,MAAQnb,KAAKib,OAAMjb,KAAKmb,KAAOnb,KAAKib,KAAO,GACpDjb,KAAKkb,MAA+B7U,SAAtBrG,KAAKshB,aAA8BthB,KAAKshB,cAAgBthB,KAAKmb,KAAKnb,KAAKib,MAAM,CAE3F,IAAIsG,GAASvhB,KAAKsgB,eAAenN,EAAKnT,KAAK6a,KACvCiG,KACFS,EAAOhW,KAAOvL,KAAK6b,UAAY,EAC/B0F,EAAOvU,KAAOhN,KAAK6b,UAAY,GAEjC7b,KAAKob,KAA6B/U,SAArBrG,KAAKwhB,YAA6BxhB,KAAKwhB,YAAcD,EAAOhW,IACzEvL,KAAKsb,KAA6BjV,SAArBrG,KAAKyhB,YAA6BzhB,KAAKyhB,YAAcF,EAAOvU,IACrEhN,KAAKsb,MAAQtb,KAAKob,OAAMpb,KAAKsb,KAAOtb,KAAKob,KAAO,GACpDpb,KAAKqb,MAA+BhV,SAAtBrG,KAAK0hB,aAA8B1hB,KAAK0hB,cAAgB1hB,KAAKsb,KAAKtb,KAAKob,MAAM,CAE3F;GAAIuG,GAAS3hB,KAAKsgB,eAAenN,EAAKnT,KAAK8a,KAM3C,IALA9a,KAAKub,KAA6BlV,SAArBrG,KAAK4hB,YAA6B5hB,KAAK4hB,YAAcD,EAAOpW,IACzEvL,KAAKyb,KAA6BpV,SAArBrG,KAAK6hB,YAA6B7hB,KAAK6hB,YAAcF,EAAO3U,IACrEhN,KAAKyb,MAAQzb,KAAKub,OAAMvb,KAAKyb,KAAOzb,KAAKub,KAAO,GACpDvb,KAAKwb,MAA+BnV,SAAtBrG,KAAK8hB,aAA8B9hB,KAAK8hB,cAAgB9hB,KAAKyb,KAAKzb,KAAKub,MAAM,EAErElV,SAAlBrG,KAAK+a,SAAwB,CAC/B,GAAIgH,GAAa/hB,KAAKsgB,eAAenN,EAAKnT,KAAK+a,SAC/C/a,MAAK0b,SAAqCrV,SAAzBrG,KAAKgiB,gBAAiChiB,KAAKgiB,gBAAkBD,EAAWxW,IACzFvL,KAAK2b,SAAqCtV,SAAzBrG,KAAKiiB,gBAAiCjiB,KAAKiiB,gBAAkBF,EAAW/U,IACrFhN,KAAK2b,UAAY3b,KAAK0b,WAAU1b,KAAK2b,SAAW3b,KAAK0b,SAAW,GAItE1b,KAAKoc,eAUPrb,EAAQ4S,UAAUuO,eAAiB,SAAU/O,GA0BzC,QAASgP,GAAW/c,EAAGa,GACrB,MAAOb,GAAIa,EAzBf,GAAIuM,GAAGC,EAAGpN,EAAGiX,EAAG8F,EAAKzP,EAEjBgI,IAEJ,IAAI3a,KAAKsN,QAAUvM,EAAQ+Y,MAAM8F,MAC/B5f,KAAKsN,QAAUvM,EAAQ+Y,MAAMgG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAK7b,EAAI,EAAGA,EAAIrF,KAAK8U,gBAAgB3B,GAAO9N,IAC1CmN,EAAIW,EAAK9N,GAAGrF,KAAK4a,OAAS,EAC1BnI,EAAIU,EAAK9N,GAAGrF,KAAK6a,OAAS,EAED,KAArBmG,EAAMxa,QAAQgM,IAChBwO,EAAMhZ,KAAKwK,GAEY,KAArB0O,EAAM1a,QAAQiM,IAChByO,EAAMlZ,KAAKyK,EAOfuO,GAAMvK,KAAK0L,GACXjB,EAAMzK,KAAK0L,EAGX,IAAIE,KACJ,KAAKhd,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAAK,CAChCmN,EAAIW,EAAK9N,GAAGrF,KAAK4a,OAAS,EAC1BnI,EAAIU,EAAK9N,GAAGrF,KAAK6a,OAAS,EAC1ByB,EAAInJ,EAAK9N,GAAGrF,KAAK8a,OAAS,CAE1B,IAAIwH,GAAStB,EAAMxa,QAAQgM,GACvB+P,EAASrB,EAAM1a,QAAQiM,EAEApM,UAAvBgc,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAIxb,EAClBwb,GAAQpK,EAAIA,EACZoK,EAAQnK,EAAIA,EACZmK,EAAQN,EAAIA,EAEZ8F,KACAA,EAAIzP,MAAQiK,EACZwF,EAAII,MAAQnc,OACZ+b,EAAIK,OAASpc,OACb+b,EAAIM,OAAS,GAAIthB,GAAQoR,EAAGC,EAAGzS,KAAKub,MAEpC8G,EAAWC,GAAQC,GAAUH,EAE7BzH,EAAW3S,KAAKoa,GAIlB,IAAK5P,EAAI,EAAGA,EAAI6P,EAAW7c,OAAQgN,IACjC,IAAKC,EAAI,EAAGA,EAAI4P,EAAW7P,GAAGhN,OAAQiN,IAChC4P,EAAW7P,GAAGC,KAChB4P,EAAW7P,GAAGC,GAAGkQ,WAAcnQ,EAAI6P,EAAW7c,OAAO,EAAK6c,EAAW7P,EAAE,GAAGC,GAAKpM,OAC/Egc,EAAW7P,GAAGC,GAAGmQ,SAAcnQ,EAAI4P,EAAW7P,GAAGhN,OAAO,EAAK6c,EAAW7P,GAAGC,EAAE,GAAKpM,OAClFgc,EAAW7P,GAAGC,GAAGoQ,WACdrQ,EAAI6P,EAAW7c,OAAO,GAAKiN,EAAI4P,EAAW7P,GAAGhN,OAAO,EACnD6c,EAAW7P,EAAE,GAAGC,EAAE,GAClBpM,YAOV,KAAKhB,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAC3BsN,EAAQ,GAAIvR,GACZuR,EAAMH,EAAIW,EAAK9N,GAAGrF,KAAK4a,OAAS,EAChCjI,EAAMF,EAAIU,EAAK9N,GAAGrF,KAAK6a,OAAS,EAChClI,EAAM2J,EAAInJ,EAAK9N,GAAGrF,KAAK8a,OAAS,EAEVzU,SAAlBrG,KAAK+a,WACPpI,EAAMzL,MAAQiM,EAAK9N,GAAGrF,KAAK+a,WAAa,GAG1CqH,KACAA,EAAIzP,MAAQA,EACZyP,EAAIM,OAAS,GAAIthB,GAAQuR,EAAMH,EAAGG,EAAMF,EAAGzS,KAAKub,MAChD6G,EAAII,MAAQnc,OACZ+b,EAAIK,OAASpc,OAEbsU,EAAW3S,KAAKoa,EAIpB,OAAOzH,IAST5Z,EAAQ4S,UAAUlF,OAAS,WAEzB,KAAOzO,KAAKiZ,iBAAiB6J,iBAC3B9iB,KAAKiZ,iBAAiBrH,YAAY5R,KAAKiZ,iBAAiB8J,WAG1D/iB,MAAK0e,MAAQ1M,SAASM,cAAc,OACpCtS,KAAK0e,MAAMpR,MAAM0V,SAAW,WAC5BhjB,KAAK0e,MAAMpR,MAAM2V,SAAW,SAG5BjjB,KAAK0e,MAAMC,OAAS3M,SAASM,cAAe,UAC5CtS,KAAK0e,MAAMC,OAAOrR,MAAM0V,SAAW,WACnChjB,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAMC,OAGhC,IAAIuE,GAAWlR,SAASM,cAAe,MACvC4Q,GAAS5V,MAAM3C,MAAQ,MACvBuY,EAAS5V,MAAM6V,WAAc,OAC7BD,EAAS5V,MAAM8V,QAAW,OAC1BF,EAASG,UAAa,mDACtBrjB,KAAK0e,MAAMC,OAAOzM,YAAYgR,GAGhCljB,KAAK0e,MAAM1K,OAAShC,SAASM,cAAe,OAC5CtS,KAAK0e,MAAM1K,OAAO1G,MAAM0V,SAAW,WACnChjB,KAAK0e,MAAM1K,OAAO1G,MAAMoV,OAAS,MACjC1iB,KAAK0e,MAAM1K,OAAO1G,MAAMhG,KAAO,MAC/BtH,KAAK0e,MAAM1K,OAAO1G,MAAM0F,MAAQ,OAChChT,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAM1K,OAGlC,IAAIQ,GAAKxU,KACLsjB,EAAc,SAAUha,GAAQkL,EAAG+O,aAAaja,IAChDka,EAAe,SAAUla,GAAQkL,EAAGiP,cAAcna,IAClDoa,EAAe,SAAUpa,GAAQkL,EAAGmP,SAASra,IAC7Csa,EAAY,SAAUta,GAAQkL,EAAGqP,WAAWva,GAGhD3I,GAAKgI,iBAAiB3I,KAAK0e,MAAMC,OAAQ,UAAWmF,WACpDnjB,EAAKgI,iBAAiB3I,KAAK0e,MAAMC,OAAQ,YAAa2E,GACtD3iB,EAAKgI,iBAAiB3I,KAAK0e,MAAMC,OAAQ,aAAc6E,GACvD7iB,EAAKgI,iBAAiB3I,KAAK0e,MAAMC,OAAQ,aAAc+E,GACvD/iB,EAAKgI,iBAAiB3I,KAAK0e,MAAMC,OAAQ,YAAaiF,GAGtD5jB,KAAKiZ,iBAAiB/G,YAAYlS,KAAK0e,QAWzC3d,EAAQ4S,UAAUoQ,QAAU,SAAS/Q,EAAOC,GAC1CjT,KAAK0e,MAAMpR,MAAM0F,MAAQA,EACzBhT,KAAK0e,MAAMpR,MAAM2F,OAASA,EAE1BjT,KAAKgkB,iBAMPjjB,EAAQ4S,UAAUqQ,cAAgB,WAChChkB,KAAK0e,MAAMC,OAAOrR,MAAM0F,MAAQ,OAChChT,KAAK0e,MAAMC,OAAOrR,MAAM2F,OAAS,OAEjCjT,KAAK0e,MAAMC,OAAO3L,MAAQhT,KAAK0e,MAAMC,OAAOC,YAC5C5e,KAAK0e,MAAMC,OAAO1L,OAASjT,KAAK0e,MAAMC,OAAOsF,aAG7CjkB,KAAK0e,MAAM1K,OAAO1G,MAAM0F,MAAShT,KAAK0e,MAAMC,OAAOC,YAAc,GAAU,MAM7E7d,EAAQ4S,UAAUuQ,eAAiB,WACjC,IAAKlkB,KAAK0e,MAAM1K,SAAWhU,KAAK0e,MAAM1K,OAAOmQ,OAC3C,KAAM,wBAERnkB,MAAK0e,MAAM1K,OAAOmQ,OAAOC,QAO3BrjB,EAAQ4S,UAAU0Q,cAAgB,WAC3BrkB,KAAK0e,MAAM1K,QAAWhU,KAAK0e,MAAM1K,OAAOmQ,QAE7CnkB,KAAK0e,MAAM1K,OAAOmQ,OAAOG,QAU3BvjB,EAAQ4S,UAAU4Q,cAAgB,WAG9BvkB,KAAKye,QAD0D,MAA7Dze,KAAKmZ,eAAeqL,OAAOxkB,KAAKmZ,eAAe3T,OAAO,GAEtDif,WAAWzkB,KAAKmZ,gBAAkB,IAChCnZ,KAAK0e,MAAMC,OAAOC,YAGP6F,WAAWzkB,KAAKmZ,gBAK/BnZ,KAAK6e,QAD0D,MAA7D7e,KAAKoZ,eAAeoL,OAAOxkB,KAAKoZ,eAAe5T,OAAO,GAEtDif,WAAWzkB,KAAKoZ,gBAAkB,KAC/BpZ,KAAK0e,MAAMC,OAAOsF,aAAejkB,KAAK0e,MAAM1K,OAAOiQ,cAGzCQ,WAAWzkB,KAAKoZ,iBAoBnCrY,EAAQ4S,UAAU+Q,kBAAoB,SAASC,GACjCte,SAARse,IAImBte,SAAnBse,EAAIC,YAA6Cve,SAAjBse,EAAIE,UACtC7kB,KAAKya,OAAOqK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5Bxe,SAAjBse,EAAII,UACN/kB,KAAKya,OAAOuK,aAAaL,EAAII,UAG/B/kB,KAAK6gB,WASP9f,EAAQ4S,UAAUsR,kBAAoB,WACpC,GAAIN,GAAM3kB,KAAKya,OAAOyK,gBAEtB,OADAP,GAAII,SAAW/kB,KAAKya,OAAO+D,eACpBmG,GAMT5jB,EAAQ4S,UAAUwR,UAAY,SAAShS,GAErCnT,KAAKwgB,gBAAgBrN,EAAMnT,KAAKsN,OAK9BtN,KAAK2a,WAFH3a,KAAK2gB,WAEW3gB,KAAK2gB,WAAWuB,iBAIhBliB,KAAKkiB,eAAeliB,KAAK8X,WAI7C9X,KAAKolB,iBAOPrkB,EAAQ4S,UAAU4E,QAAU,SAAUpF,GACpCnT,KAAKmlB,UAAUhS,GACfnT,KAAK6gB,SAGD7gB,KAAKqlB,oBAAsBrlB,KAAK2gB,YAClC3gB,KAAKkkB,kBAQTnjB,EAAQ4S,UAAUuI,WAAa,SAAUrN,GACvC,GAAIyW,GAAiBjf,MAIrB,IAFArG,KAAKqkB,gBAEWhe,SAAZwI,EAAuB,CAkBzB,GAhBsBxI,SAAlBwI,EAAQmE,QAA2BhT,KAAKgT,MAAQnE,EAAQmE,OACrC3M,SAAnBwI,EAAQoE,SAA2BjT,KAAKiT,OAASpE,EAAQoE,QAErC5M,SAApBwI,EAAQ0N,UAA2Bvc,KAAKmZ,eAAiBtK,EAAQ0N,SAC7ClW,SAApBwI,EAAQ2N,UAA2Bxc,KAAKoZ,eAAiBvK,EAAQ2N,SAEzCnW,SAAxBwI,EAAQ+K,cAA+B5Z,KAAK4Z,YAAc/K,EAAQ+K,aAC1CvT,SAAxBwI,EAAQgL,cAA+B7Z,KAAK6Z,YAAchL,EAAQgL,aAC/CxT,SAAnBwI,EAAQwK,SAA0BrZ,KAAKqZ,OAASxK,EAAQwK,QACrChT,SAAnBwI,EAAQyK,SAA0BtZ,KAAKsZ,OAASzK,EAAQyK,QACrCjT,SAAnBwI,EAAQ0K,SAA0BvZ,KAAKuZ,OAAS1K,EAAQ0K,QAEhClT,SAAxBwI,EAAQ4K,cAA+BzZ,KAAKyZ,YAAc5K,EAAQ4K,aAC1CpT,SAAxBwI,EAAQ6K,cAA+B1Z,KAAK0Z,YAAc7K,EAAQ6K,aAC1CrT,SAAxBwI,EAAQ8K,cAA+B3Z,KAAK2Z,YAAc9K,EAAQ8K,aAEhDtT,SAAlBwI,EAAQvB,MAAqB,CAC/B,GAAIiY,GAAcvlB,KAAK+f,gBAAgBlR,EAAQvB,MAC3B,MAAhBiY,IACFvlB,KAAKsN,MAAQiY,GAGQlf,SAArBwI,EAAQoL,WAA6Bja,KAAKia,SAAWpL,EAAQoL,UACjC5T,SAA5BwI,EAAQmL,kBAAiCha,KAAKga,gBAAkBnL,EAAQmL,iBACjD3T,SAAvBwI,EAAQsL,aAA6Bna,KAAKma,WAAatL,EAAQsL,YAC3C9T,SAApBwI,EAAQ2W,UAA6BxlB,KAAKqa,YAAcxL,EAAQ2W,SAC9Bnf,SAAlCwI,EAAQ4W,wBAAqCzlB,KAAKylB,sBAAwB5W,EAAQ4W,uBACtDpf,SAA5BwI,EAAQqL,kBAAiCla,KAAKka,gBAAkBrL,EAAQqL,iBAC9C7T,SAA1BwI,EAAQyL,gBAA+Bta,KAAKsa,cAAgBzL,EAAQyL,eAEtCjU,SAA9BwI,EAAQ0L,oBAAiCva,KAAKua,kBAAoB1L,EAAQ0L,mBAC7ClU,SAA7BwI,EAAQ2L,mBAAiCxa,KAAKwa,iBAAmB3L,EAAQ2L,kBAC1CnU,SAA/BwI,EAAQwW,qBAAiCrlB,KAAKqlB,mBAAqBxW,EAAQwW,oBAErDhf,SAAtBwI,EAAQ+M,YAAyB5b,KAAK+gB,iBAAmBlS,EAAQ+M,WAC3CvV,SAAtBwI,EAAQgN,YAAyB7b,KAAKihB,iBAAmBpS,EAAQgN,WAEhDxV,SAAjBwI,EAAQoM,OAAoBjb,KAAKohB,YAAcvS,EAAQoM,MACrC5U,SAAlBwI,EAAQqM,QAAqBlb,KAAKshB,aAAezS,EAAQqM,OACxC7U,SAAjBwI,EAAQsM,OAAoBnb,KAAKqhB,YAAcxS,EAAQsM,MACtC9U,SAAjBwI,EAAQuM,OAAoBpb,KAAKwhB,YAAc3S,EAAQuM,MACrC/U,SAAlBwI,EAAQwM,QAAqBrb,KAAK0hB,aAAe7S,EAAQwM,OACxChV,SAAjBwI,EAAQyM,OAAoBtb,KAAKyhB,YAAc5S,EAAQyM,MACtCjV,SAAjBwI,EAAQ0M,OAAoBvb,KAAK4hB,YAAc/S,EAAQ0M,MACrClV,SAAlBwI,EAAQ2M,QAAqBxb,KAAK8hB,aAAejT,EAAQ2M,OACxCnV,SAAjBwI,EAAQ4M,OAAoBzb,KAAK6hB,YAAchT,EAAQ4M,MAClCpV,SAArBwI,EAAQ6M,WAAwB1b,KAAKgiB,gBAAkBnT,EAAQ6M,UAC1CrV,SAArBwI,EAAQ8M,WAAwB3b,KAAKiiB,gBAAkBpT,EAAQ8M,UAEpCtV,SAA3BwI,EAAQyW,iBAA8BA,EAAiBzW,EAAQyW,gBAE5Cjf,SAAnBif,GACFtlB,KAAKya,OAAOqK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrE7kB,KAAKya,OAAOuK,aAAaM,EAAeP,YAGxC/kB,KAAKya,OAAOqK,eAAe,EAAK,IAChC9kB,KAAKya,OAAOuK,aAAa,MAI7BhlB,KAAK8e,oBAAoBjQ,GAAWA,EAAQkQ,iBAE5C/e,KAAK+jB,QAAQ/jB,KAAKgT,MAAOhT,KAAKiT,QAG1BjT,KAAK8X,WACP9X,KAAKuY,QAAQvY,KAAK8X,WAIhB9X,KAAKqlB,oBAAsBrlB,KAAK2gB,YAClC3gB,KAAKkkB,kBAOTnjB,EAAQ4S,UAAUkN,OAAS,WACzB,GAAwBxa,SAApBrG,KAAK2a,WACP,KAAM,mCAGR3a,MAAKgkB,gBACLhkB,KAAKukB,gBACLvkB,KAAK0lB,gBACL1lB,KAAK2lB,eACL3lB,KAAK4lB,cAED5lB,KAAKsN,QAAUvM,EAAQ+Y,MAAM8F,MAC/B5f,KAAKsN,QAAUvM,EAAQ+Y,MAAMgG,QAC7B9f,KAAK6lB,kBAEE7lB,KAAKsN,QAAUvM,EAAQ+Y,MAAM+F,KACpC7f,KAAK8lB,kBAEE9lB,KAAKsN,QAAUvM,EAAQ+Y,MAAMwF,KACpCtf,KAAKsN,QAAUvM,EAAQ+Y,MAAMyF,UAC7Bvf,KAAKsN,QAAUvM,EAAQ+Y,MAAM0F,QAC7Bxf,KAAK+lB,iBAIL/lB,KAAKgmB,iBAGPhmB,KAAKimB,cACLjmB,KAAKkmB,iBAMPnlB,EAAQ4S,UAAUgS,aAAe,WAC/B,GAAIhH,GAAS3e,KAAK0e,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAO3L,MAAO2L,EAAO1L,SAO3ClS,EAAQ4S,UAAUuS,cAAgB,WAChC,GAAIzT,EAEJ,IAAIzS,KAAKsN,QAAUvM,EAAQ+Y,MAAM4F,UAC/B1f,KAAKsN,QAAUvM,EAAQ+Y,MAAM6F,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBxmB,KAAK0e,MAAME,WAGrB5e,MAAKsN,QAAUvM,EAAQ+Y,MAAM6F,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAItT,GAASlO,KAAKiI,IAA8B,IAA1BhN,KAAK0e,MAAMuF,aAAqB,KAClDvc,EAAM1H,KAAKkZ,OACXuN,EAAQzmB,KAAK0e,MAAME,YAAc5e,KAAKkZ,OACtC5R,EAAOmf,EAAQF,EACf7D,EAAShb,EAAMuL,EAGrB,GAAI0L,GAAS3e,KAAK0e,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEP3mB,KAAKsN,QAAUvM,EAAQ+Y,MAAM4F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAO5T,CACX,KAAKR,EAAImU,EAAUC,EAAJpU,EAAUA,IAAK,CAC5B,GAAIlG,IAAKkG,EAAImU,IAASC,EAAOD,GAGzB3Z,EAAU,IAAJV,EACN5B,EAAQ3K,KAAK8mB,SAAS7Z,EAAK,EAAG,EAElCkZ,GAAIY,YAAcpc,EAClBwb,EAAIa,YACJb,EAAIc,OAAO3f,EAAMI,EAAM+K,GACvB0T,EAAIe,OAAOT,EAAO/e,EAAM+K,GACxB0T,EAAIlH,SAGNkH,EAAIY,YAAe/mB,KAAK8b,UACxBqK,EAAIgB,WAAW7f,EAAMI,EAAK6e,EAAUtT,GAiBtC,GAdIjT,KAAKsN,QAAUvM,EAAQ+Y,MAAM6F,UAE/BwG,EAAIY,YAAe/mB,KAAK8b,UACxBqK,EAAIiB,UAAapnB,KAAKgc,SACtBmK,EAAIa,YACJb,EAAIc,OAAO3f,EAAMI,GACjBye,EAAIe,OAAOT,EAAO/e,GAClBye,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAO5f,EAAMob,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGFjf,KAAKsN,QAAUvM,EAAQ+Y,MAAM4F,UAC/B1f,KAAKsN,QAAUvM,EAAQ+Y,MAAM6F,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAIjmB,GAAWtB,KAAK0b,SAAU1b,KAAK2b,UAAW3b,KAAK2b,SAAS3b,KAAK0b,UAAU,GAAG,EAKzF,KAJA6L,EAAK1X,QACD0X,EAAKC,aAAexnB,KAAK0b,UAC3B6L,EAAKE,QAECF,EAAKjX,OACXmC,EAAIiQ,GAAU6E,EAAKC,aAAexnB,KAAK0b,WAAa1b,KAAK2b,SAAW3b,KAAK0b,UAAYzI,EAErFkT,EAAIa,YACJb,EAAIc,OAAO3f,EAAOggB,EAAa7U,GAC/B0T,EAAIe,OAAO5f,EAAMmL,GACjB0T,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAASL,EAAKC,aAAclgB,EAAO,EAAIggB,EAAa7U,GAExD8U,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIE,GAAQ7nB,KAAK6Z,WACjBsM,GAAIyB,SAASC,EAAOpB,EAAO/D,EAAS1iB,KAAKkZ,UAO7CnY,EAAQ4S,UAAUyR,cAAgB,WAGhC,GAFAplB,KAAK0e,MAAM1K,OAAOqP,UAAY,GAE1BrjB,KAAK2gB,WAAY,CACnB,GAAI9R,IACFiZ,QAAW9nB,KAAKylB,uBAEdtB,EAAS,GAAI9iB,GAAOrB,KAAK0e,MAAM1K,OAAQnF,EAC3C7O,MAAK0e,MAAM1K,OAAOmQ,OAASA,EAG3BnkB,KAAK0e,MAAM1K,OAAO1G,MAAM8V,QAAU,OAGlCe,EAAO4D,UAAU/nB,KAAK2gB,WAAWtJ,QACjC8M,EAAO6D,gBAAgBhoB,KAAKua,kBAG5B,IAAI/F,GAAKxU,KACLioB,EAAW,WACb,GAAI9f,GAAQgc,EAAO+D,UAEnB1T,GAAGmM,WAAWwH,YAAYhgB,GAC1BqM,EAAGmG,WAAanG,EAAGmM,WAAWuB,iBAE9B1N,EAAGqM,SAELsD,GAAOiE,oBAAoBH,OAG3BjoB,MAAK0e,MAAM1K,OAAOmQ,OAAS9d,QAO/BtF,EAAQ4S,UAAU+R,cAAgB,WACErf,SAA7BrG,KAAK0e,MAAM1K,OAAOmQ,QACrBnkB,KAAK0e,MAAM1K,OAAOmQ,OAAOtD,UAQ7B9f,EAAQ4S,UAAUsS,YAAc,WAC9B,GAAIjmB,KAAK2gB,WAAY,CACnB,GAAIhC,GAAS3e,KAAK0e,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIkC,UAAY,OAChBlC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAInV,GAAIxS,KAAKkZ,OACTzG,EAAIzS,KAAKkZ,MACbiN,GAAIyB,SAAS5nB,KAAK2gB,WAAW2H,WAAa,KAAOtoB,KAAK2gB,WAAW4H,mBAAoB/V,EAAGC,KAQ5F1R,EAAQ4S,UAAUiS,YAAc,WAC9B,GAEE4C,GAAMC,EAAIlB,EAAMmB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQC,EAASC,EACjBC,EAAQC,EALNxK,EAAS3e,KAAK0e,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAK3mB,KAAKya,OAAO+D,eAAiB,UAG7C,IAAI4K,GAAW,KAAQppB,KAAKqc,MAAM7J,EAC9B6W,EAAW,KAAQrpB,KAAKqc,MAAM5J,EAC9B6W,EAAa,EAAItpB,KAAKya,OAAO+D,eAC7B+K,EAAWvpB,KAAKya,OAAOyK,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChBgC,EAAoCriB,SAAtBrG,KAAKshB,aACnBiG,EAAO,GAAIjmB,GAAWtB,KAAKib,KAAMjb,KAAKmb,KAAMnb,KAAKkb,MAAOwN,GACxDnB,EAAK1X,QACD0X,EAAKC,aAAexnB,KAAKib,MAC3BsM,EAAKE,QAECF,EAAKjX,OAAO,CAClB,GAAIkC,GAAI+U,EAAKC,YAETxnB,MAAKia,UACPuO,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGxS,KAAKob,KAAMpb,KAAKub,OAC1DkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGxS,KAAKsb,KAAMtb,KAAKub,OACxD4K,EAAIY,YAAc/mB,KAAK+b,UACvBoK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,WAGJuJ,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGxS,KAAKob,KAAMpb,KAAKub,OAC1DkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGxS,KAAKob,KAAKgO,EAAUppB,KAAKub,OACjE4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAEJuJ,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGxS,KAAKsb,KAAMtb,KAAKub,OAC1DkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGxS,KAAKsb,KAAK8N,EAAUppB,KAAKub,OACjE4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,UAGN4J,EAAS9jB,KAAK4Y,IAAI4L,GAAY,EAAKvpB,KAAKob,KAAOpb,KAAKsb,KACpDqN,EAAO3oB,KAAK2c,eAAe,GAAIvb,GAAQoR,EAAGqW,EAAO7oB,KAAKub,OAClDxW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBgB,EAAKlW,GAAK6W,GAEHvkB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAAS,KAAO5nB,KAAKyZ,YAAY8N,EAAKC,cAAgB,KAAMmB,EAAKnW,EAAGmW,EAAKlW,GAE7E8U,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChBgC,EAAoCriB,SAAtBrG,KAAK0hB,aACnB6F,EAAO,GAAIjmB,GAAWtB,KAAKob,KAAMpb,KAAKsb,KAAMtb,KAAKqb,MAAOqN,GACxDnB,EAAK1X,QACD0X,EAAKC,aAAexnB,KAAKob,MAC3BmM,EAAKE,QAECF,EAAKjX,OACPtQ,KAAKia,UACPuO,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAMsM,EAAKC,aAAcxnB,KAAKub,OAC1EkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAMoM,EAAKC,aAAcxnB,KAAKub,OACxE4K,EAAIY,YAAc/mB,KAAK+b,UACvBoK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,WAGJuJ,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAMsM,EAAKC,aAAcxnB,KAAKub,OAC1EkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAKoO,EAAU9B,EAAKC,aAAcxnB,KAAKub,OACjF4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAEJuJ,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAMoM,EAAKC,aAAcxnB,KAAKub,OAC1EkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAKkO,EAAU9B,EAAKC,aAAcxnB,KAAKub,OACjF4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,UAGN2J,EAAS7jB,KAAKyY,IAAI+L,GAAa,EAAKvpB,KAAKib,KAAOjb,KAAKmb,KACrDwN,EAAO3oB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOrB,EAAKC,aAAcxnB,KAAKub,OAClExW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBgB,EAAKlW,GAAK6W,GAEHvkB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAAS,KAAO5nB,KAAK0Z,YAAY6N,EAAKC,cAAgB,KAAMmB,EAAKnW,EAAGmW,EAAKlW,GAE7E8U,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChBgC,EAAoCriB,SAAtBrG,KAAK8hB,aACnByF,EAAO,GAAIjmB,GAAWtB,KAAKub,KAAMvb,KAAKyb,KAAMzb,KAAKwb,MAAOkN,GACxDnB,EAAK1X,QACD0X,EAAKC,aAAexnB,KAAKub,MAC3BgM,EAAKE,OAEPmB,EAAS7jB,KAAK4Y,IAAI4L,GAAa,EAAKvpB,KAAKib,KAAOjb,KAAKmb,KACrD0N,EAAS9jB,KAAKyY,IAAI+L,GAAa,EAAKvpB,KAAKob,KAAOpb,KAAKsb,MAC7CiM,EAAKjX,OAEXkY,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOC,EAAOtB,EAAKC,eAC1DrB,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOsB,EAAKhW,EAAI8W,EAAYd,EAAK/V,GACrC0T,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAAS5nB,KAAK2Z,YAAY4N,EAAKC,cAAgB,IAAKgB,EAAKhW,EAAI,EAAGgW,EAAK/V,GAEzE8U,EAAKE,MAEPtB,GAAIO,UAAY,EAChB8B,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOC,EAAO7oB,KAAKub,OAC1DkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOC,EAAO7oB,KAAKyb,OACxD0K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBwC,EAASlpB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAMjb,KAAKob,KAAMpb,KAAKub,OACpE4N,EAASnpB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAMnb,KAAKob,KAAMpb,KAAKub,OACpE4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOiC,EAAO1W,EAAG0W,EAAOzW,GAC5B0T,EAAIe,OAAOiC,EAAO3W,EAAG2W,EAAO1W,GAC5B0T,EAAIlH,SAEJiK,EAASlpB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAMjb,KAAKsb,KAAMtb,KAAKub,OACpE4N,EAASnpB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAMnb,KAAKsb,KAAMtb,KAAKub,OACpE4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOiC,EAAO1W,EAAG0W,EAAOzW,GAC5B0T,EAAIe,OAAOiC,EAAO3W,EAAG2W,EAAO1W,GAC5B0T,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB8B,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAMjb,KAAKob,KAAMpb,KAAKub,OAClEkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKib,KAAMjb,KAAKsb,KAAMtb,KAAKub,OAChE4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,SAEJuJ,EAAOxoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAMnb,KAAKob,KAAMpb,KAAKub,OAClEkN,EAAKzoB,KAAK2c,eAAe,GAAIvb,GAAQpB,KAAKmb,KAAMnb,KAAKsb,KAAMtb,KAAKub,OAChE4K,EAAIY,YAAc/mB,KAAK8b,UACvBqK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOuB,EAAGjW,EAAGiW,EAAGhW,GACpB0T,EAAIlH,QAGJ,IAAI5F,GAASrZ,KAAKqZ,MACdA,GAAO7T,OAAS,IAClByjB,EAAU,GAAMjpB,KAAKqc,MAAM5J,EAC3BmW,GAAS5oB,KAAKib,KAAOjb,KAAKmb,MAAQ,EAClC0N,EAAS9jB,KAAK4Y,IAAI4L,GAAY,EAAKvpB,KAAKob,KAAO6N,EAASjpB,KAAKsb,KAAO2N,EACpEN,EAAO3oB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOC,EAAO7oB,KAAKub,OACtDxW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ5iB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAASvO,EAAQsP,EAAKnW,EAAGmW,EAAKlW,GAIpC,IAAI6G,GAAStZ,KAAKsZ,MACdA,GAAO9T,OAAS,IAClBwjB,EAAU,GAAMhpB,KAAKqc,MAAM7J,EAC3BoW,EAAS7jB,KAAKyY,IAAI+L,GAAa,EAAKvpB,KAAKib,KAAO+N,EAAUhpB,KAAKmb,KAAO6N,EACtEH,GAAS7oB,KAAKob,KAAOpb,KAAKsb,MAAQ,EAClCqN,EAAO3oB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOC,EAAO7oB,KAAKub,OACtDxW,KAAK4Y,IAAe,EAAX4L,GAAgB,GAC3BpD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ5iB,KAAKyY,IAAe,EAAX+L,GAAgB,GAChCpD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAAStO,EAAQqP,EAAKnW,EAAGmW,EAAKlW,GAIpC,IAAI8G,GAASvZ,KAAKuZ,MACdA,GAAO/T,OAAS,IAClBujB,EAAS,GACTH,EAAS7jB,KAAK4Y,IAAI4L,GAAa,EAAKvpB,KAAKib,KAAOjb,KAAKmb,KACrD0N,EAAS9jB,KAAKyY,IAAI+L,GAAa,EAAKvpB,KAAKob,KAAOpb,KAAKsb,KACrDwN,GAAS9oB,KAAKub,KAAOvb,KAAKyb,MAAQ,EAClCkN,EAAO3oB,KAAK2c,eAAe,GAAIvb,GAAQwnB,EAAOC,EAAOC,IACrD3C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYpnB,KAAK8b,UACrBqK,EAAIyB,SAASrO,EAAQoP,EAAKnW,EAAIuW,EAAQJ,EAAKlW,KAU/C1R,EAAQ4S,UAAUmT,SAAW,SAAS0C,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhlB,KAAKC,MAAMwkB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/kB,KAAKklB,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,OAASK,SAAW,IAAFP,GAAS,IAAMO,SAAW,IAAFN,GAAS,IAAMM,SAAW,IAAFL,GAAS,KAQpF9oB,EAAQ4S,UAAUkS,gBAAkB,WAClC,GAEElT,GAAO8T,EAAO/e,EAAKyiB,EACnB9kB,EACA+kB,EAAgBhD,EAAWL,EAAaL,EACxCtb,EAAGC,EAAGC,EAAG+e,EALP1L,EAAS3e,KAAK0e,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwB/f,SAApBrG,KAAK2a,YAA4B3a,KAAK2a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQxiB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGsN,OAC3D8P,EAASziB,KAAK+c,4BAA4ByF,EAE9CxiB,MAAK2a,WAAWtV,GAAGmd,MAAQA,EAC3BxiB,KAAK2a,WAAWtV,GAAGod,OAASA,CAG5B,IAAI6H,GAActqB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGqd,OACrE1iB,MAAK2a,WAAWtV,GAAGklB,KAAOvqB,KAAKga,gBAAkBsQ,EAAY9kB,UAAY8kB,EAAYhO,EAIvF,GAAIkO,GAAY,SAAUplB,EAAGa,GAC3B,MAAOA,GAAEskB,KAAOnlB,EAAEmlB,KAIpB,IAFAvqB,KAAK2a,WAAWlE,KAAK+T,GAEjBxqB,KAAKsN,QAAUvM,EAAQ+Y,MAAMgG,SAC/B,IAAKza,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAMtC,GALAsN,EAAQ3S,KAAK2a,WAAWtV,GACxBohB,EAAQzmB,KAAK2a,WAAWtV,GAAGsd,WAC3Bjb,EAAQ1H,KAAK2a,WAAWtV,GAAGud,SAC3BuH,EAAQnqB,KAAK2a,WAAWtV,GAAGwd,WAEbxc,SAAVsM,GAAiCtM,SAAVogB,GAA+BpgB,SAARqB,GAA+BrB,SAAV8jB,EAAqB,CAE1F,GAAInqB,KAAKoa,gBAAkBpa,KAAKma,WAAY,CAK1C,GAAIsQ,GAAQrpB,EAAQspB,SAASP,EAAM3H,MAAO7P,EAAM6P,OAC5CmI,EAAQvpB,EAAQspB,SAAShjB,EAAI8a,MAAOiE,EAAMjE,OAC1CoI,EAAexpB,EAAQypB,aAAaJ,EAAOE,GAC3CrlB,EAAMslB,EAAaplB,QAGvB4kB,GAAkBQ,EAAatO,EAAI,MAGnC8N,IAAiB,CAGfA,IAEFC,GAAQ1X,EAAMA,MAAM2J,EAAImK,EAAM9T,MAAM2J,EAAI5U,EAAIiL,MAAM2J,EAAI6N,EAAMxX,MAAM2J,GAAK,EACvElR,EAAoE,KAA/D,GAAKif,EAAOrqB,KAAKub,MAAQvb,KAAKqc,MAAMC,EAAKtc,KAAKsa,eACnDjP,EAAI,EAEArL,KAAKma,YACP7O,EAAIvG,KAAKwG,IAAI,EAAKqf,EAAapY,EAAIlN,EAAO,EAAG,GAC7C8hB,EAAYpnB,KAAK8mB,SAAS1b,EAAGC,EAAGC,GAChCyb,EAAcK,IAGd9b,EAAI,EACJ8b,EAAYpnB,KAAK8mB,SAAS1b,EAAGC,EAAGC,GAChCyb,EAAc/mB,KAAK8b,aAIrBsL,EAAY,OACZL,EAAc/mB,KAAK8b,WAErB4K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIe,OAAOT,EAAMhE,OAAOjQ,EAAGiU,EAAMhE,OAAOhQ,GACxC0T,EAAIe,OAAOiD,EAAM1H,OAAOjQ,EAAG2X,EAAM1H,OAAOhQ,GACxC0T,EAAIe,OAAOxf,EAAI+a,OAAOjQ,EAAG9K,EAAI+a,OAAOhQ,GACpC0T,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAK5Z,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IACtCsN,EAAQ3S,KAAK2a,WAAWtV,GACxBohB,EAAQzmB,KAAK2a,WAAWtV,GAAGsd,WAC3Bjb,EAAQ1H,KAAK2a,WAAWtV,GAAGud,SAEbvc,SAAVsM,IAEA+T,EADE1mB,KAAKga,gBACK,GAAKrH,EAAM6P,MAAMlG,EAGjB,IAAMtc,KAAK0a,IAAI4B,EAAItc,KAAKya,OAAO+D,iBAIjCnY,SAAVsM,GAAiCtM,SAAVogB,IAEzB4D,GAAQ1X,EAAMA,MAAM2J,EAAImK,EAAM9T,MAAM2J,GAAK,EACzClR,EAAoE,KAA/D,GAAKif,EAAOrqB,KAAKub,MAAQvb,KAAKqc,MAAMC,EAAKtc,KAAKsa,eAEnD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAc/mB,KAAK8mB,SAAS1b,EAAG,EAAG,GACtC+a,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIe,OAAOT,EAAMhE,OAAOjQ,EAAGiU,EAAMhE,OAAOhQ,GACxC0T,EAAIlH,UAGQ5Y,SAAVsM,GAA+BtM,SAARqB,IAEzB2iB,GAAQ1X,EAAMA,MAAM2J,EAAI5U,EAAIiL,MAAM2J,GAAK,EACvClR,EAAoE,KAA/D,GAAKif,EAAOrqB,KAAKub,MAAQvb,KAAKqc,MAAMC,EAAKtc,KAAKsa,eAEnD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAc/mB,KAAK8mB,SAAS1b,EAAG,EAAG,GACtC+a,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIe,OAAOxf,EAAI+a,OAAOjQ,EAAG9K,EAAI+a,OAAOhQ,GACpC0T,EAAIlH,YAWZle,EAAQ4S,UAAUqS,eAAiB,WACjC,GAEI3gB,GAFAsZ,EAAS3e,KAAK0e,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwB/f,SAApBrG,KAAK2a,YAA4B3a,KAAK2a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQxiB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGsN,OAC3D8P,EAASziB,KAAK+c,4BAA4ByF,EAC9CxiB,MAAK2a,WAAWtV,GAAGmd,MAAQA,EAC3BxiB,KAAK2a,WAAWtV,GAAGod,OAASA,CAG5B,IAAI6H,GAActqB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGqd,OACrE1iB,MAAK2a,WAAWtV,GAAGklB,KAAOvqB,KAAKga,gBAAkBsQ,EAAY9kB,UAAY8kB,EAAYhO,EAIvF,GAAIkO,GAAY,SAAUplB,EAAGa,GAC3B,MAAOA,GAAEskB,KAAOnlB,EAAEmlB,KAEpBvqB,MAAK2a,WAAWlE,KAAK+T,EAGrB,IAAIhE,GAAmC,IAAzBxmB,KAAK0e,MAAME,WACzB,KAAKvZ,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3C,GAAIsN,GAAQ3S,KAAK2a,WAAWtV,EAE5B,IAAIrF,KAAKsN,QAAUvM,EAAQ+Y,MAAM2F,QAAS,CAGxC,GAAI+I,GAAOxoB,KAAK2c,eAAehK,EAAM+P,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc/mB,KAAK+b,UACvBoK,EAAIa,YACJb,EAAIc,OAAOuB,EAAKhW,EAAGgW,EAAK/V,GACxB0T,EAAIe,OAAOvU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,GACxC0T,EAAIlH,SAIN,GAAInM,EAEFA,GADE9S,KAAKsN,QAAUvM,EAAQ+Y,MAAM6F,QACxB6G,EAAQ,EAAI,EAAEA,GAAW7T,EAAMA,MAAMzL,MAAQlH,KAAK0b,WAAa1b,KAAK2b,SAAW3b,KAAK0b,UAGpF8K,CAGT,IAAIsE,EAEFA,GADE9qB,KAAKga,gBACElH,GAAQH,EAAM6P,MAAMlG,EAGpBxJ,IAAS9S,KAAK0a,IAAI4B,EAAItc,KAAKya,OAAO+D,gBAEhC,EAATsM,IACFA,EAAS,EAGX,IAAI7d,GAAKtC,EAAOwU,CACZnf,MAAKsN,QAAUvM,EAAQ+Y,MAAM4F,UAE/BzS,EAAqE,KAA9D,GAAK0F,EAAMA,MAAMzL,MAAQlH,KAAK0b,UAAY1b,KAAKqc,MAAMnV,OAC5DyD,EAAQ3K,KAAK8mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAcnf,KAAK8mB,SAAS7Z,EAAK,EAAG,KAE7BjN,KAAKsN,QAAUvM,EAAQ+Y,MAAM6F,SACpChV,EAAQ3K,KAAKgc,SACbmD,EAAcnf,KAAKic,iBAInBhP,EAA+E,KAAxE,GAAK0F,EAAMA,MAAM2J,EAAItc,KAAKub,MAAQvb,KAAKqc,MAAMC,EAAKtc,KAAKsa,eAC9D3P,EAAQ3K,KAAK8mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAcnf,KAAK8mB,SAAS7Z,EAAK,EAAG,KAItCkZ,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzc,EAChBwb,EAAIa,YACJb,EAAI4E,IAAIpY,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,EAAGqY,EAAQ,EAAW,EAAR/lB,KAAKimB,IAAM,GAC9D7E,EAAInH,OACJmH,EAAIlH,YAQRle,EAAQ4S,UAAUoS,eAAiB,WACjC,GAEI1gB,GAAG4lB,EAAGC,EAASC,EAFfxM,EAAS3e,KAAK0e,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwB/f,SAApBrG,KAAK2a,YAA4B3a,KAAK2a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQxiB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGsN,OAC3D8P,EAASziB,KAAK+c,4BAA4ByF,EAC9CxiB,MAAK2a,WAAWtV,GAAGmd,MAAQA,EAC3BxiB,KAAK2a,WAAWtV,GAAGod,OAASA,CAG5B,IAAI6H,GAActqB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGqd,OACrE1iB,MAAK2a,WAAWtV,GAAGklB,KAAOvqB,KAAKga,gBAAkBsQ,EAAY9kB,UAAY8kB,EAAYhO,EAIvF,GAAIkO,GAAY,SAAUplB,EAAGa,GAC3B,MAAOA,GAAEskB,KAAOnlB,EAAEmlB,KAEpBvqB,MAAK2a,WAAWlE,KAAK+T,EAGrB,IAAIY,GAASprB,KAAK4b,UAAY,EAC1ByP,EAASrrB,KAAK6b,UAAY,CAC9B,KAAKxW,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3C,GAGI4H,GAAKtC,EAAOwU,EAHZxM,EAAQ3S,KAAK2a,WAAWtV,EAIxBrF,MAAKsN,QAAUvM,EAAQ+Y,MAAMyF,UAE/BtS,EAAqE,KAA9D,GAAK0F,EAAMA,MAAMzL,MAAQlH,KAAK0b,UAAY1b,KAAKqc,MAAMnV,OAC5DyD,EAAQ3K,KAAK8mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAcnf,KAAK8mB,SAAS7Z,EAAK,EAAG,KAE7BjN,KAAKsN,QAAUvM,EAAQ+Y,MAAM0F,SACpC7U,EAAQ3K,KAAKgc,SACbmD,EAAcnf,KAAKic,iBAInBhP,EAA+E,KAAxE,GAAK0F,EAAMA,MAAM2J,EAAItc,KAAKub,MAAQvb,KAAKqc,MAAMC,EAAKtc,KAAKsa,eAC9D3P,EAAQ3K,KAAK8mB,SAAS7Z,EAAK,EAAG,GAC9BkS,EAAcnf,KAAK8mB,SAAS7Z,EAAK,EAAG,KAIlCjN,KAAKsN,QAAUvM,EAAQ+Y,MAAM0F,UAC/B4L,EAAUprB,KAAK4b,UAAY,IAAOjJ,EAAMA,MAAMzL,MAAQlH,KAAK0b,WAAa1b,KAAK2b,SAAW3b,KAAK0b,UAAY,GAAM,IAC/G2P,EAAUrrB,KAAK6b,UAAY,IAAOlJ,EAAMA,MAAMzL,MAAQlH,KAAK0b,WAAa1b,KAAK2b,SAAW3b,KAAK0b,UAAY,GAAM,IAIjH,IAAIlH,GAAKxU,KACL4c,EAAUjK,EAAMA,MAChBjL,IACDiL,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KACnE3J,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KACnE3J,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KACnE3J,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQzO,EAAQN,KAElEoG,IACD/P,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQrrB,KAAKub,QAChE5I,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQrrB,KAAKub,QAChE5I,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQrrB,KAAKub,QAChE5I,MAAO,GAAIvR,GAAQwb,EAAQpK,EAAI4Y,EAAQxO,EAAQnK,EAAI4Y,EAAQrrB,KAAKub,OAInE7T,GAAIW,QAAQ,SAAU+Z,GACpBA,EAAIK,OAASjO,EAAGmI,eAAeyF,EAAIzP,SAErC+P,EAAOra,QAAQ,SAAU+Z,GACvBA,EAAIK,OAASjO,EAAGmI,eAAeyF,EAAIzP,QAIrC,IAAI2Y,KACDH,QAASzjB,EAAK6jB,OAAQnqB,EAAQoqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAC7DwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQnqB,EAAQoqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAChGwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQnqB,EAAQoqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAChGwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQnqB,EAAQoqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,SAChGwY,SAAUzjB,EAAI,GAAIA,EAAI,GAAIgb,EAAO,GAAIA,EAAO,IAAK6I,OAAQnqB,EAAQoqB,IAAI9I,EAAO,GAAG/P,MAAO+P,EAAO,GAAG/P,QAKnG,KAHAA,EAAM2Y,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS9lB,OAAQylB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAczrB,KAAK8c,2BAA2BoO,EAAQK,OAC1DL,GAAQX,KAAOvqB,KAAKga,gBAAkByR,EAAYjmB,UAAYimB,EAAYnP,EAwB5E,IAjBAgP,EAAS7U,KAAK,SAAUrR,EAAGa,GACzB,GAAIylB,GAAOzlB,EAAEskB,KAAOnlB,EAAEmlB,IACtB,OAAImB,GAAaA,EAGbtmB,EAAE+lB,UAAYzjB,EAAY,EAC1BzB,EAAEklB,UAAYzjB,EAAY,GAGvB,IAITye,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzc,EAEXsgB,EAAI,EAAGA,EAAIK,EAAS9lB,OAAQylB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClBhF,EAAIa,YACJb,EAAIc,OAAOkE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAIe,OAAOiE,EAAQ,GAAG1I,OAAOjQ,EAAG2Y,EAAQ,GAAG1I,OAAOhQ,GAClD0T,EAAInH,OACJmH,EAAIlH,YAUVle,EAAQ4S,UAAUmS,gBAAkB,WAClC,GAEEnT,GAAOtN,EAFLsZ,EAAS3e,KAAK0e,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwB/f,SAApBrG,KAAK2a,YAA4B3a,KAAK2a,WAAWnV,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3C,GAAImd,GAAQxiB,KAAK8c,2BAA2B9c,KAAK2a,WAAWtV,GAAGsN,OAC3D8P,EAASziB,KAAK+c,4BAA4ByF,EAE9CxiB,MAAK2a,WAAWtV,GAAGmd,MAAQA,EAC3BxiB,KAAK2a,WAAWtV,GAAGod,OAASA,EAc9B,IAVIziB,KAAK2a,WAAWnV,OAAS,IAC3BmN,EAAQ3S,KAAK2a,WAAW,GAExBwL,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOtU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,IAIrCpN,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IACtCsN,EAAQ3S,KAAK2a,WAAWtV,GACxB8gB,EAAIe,OAAOvU,EAAM8P,OAAOjQ,EAAGG,EAAM8P,OAAOhQ,EAItCzS,MAAK2a,WAAWnV,OAAS,GAC3B2gB,EAAIlH,WASRle,EAAQ4S,UAAU4P,aAAe,SAASja,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpBtJ,KAAK2rB,gBACP3rB,KAAK4rB,WAAWtiB,GAIlBtJ,KAAK2rB,eAAiBriB,EAAMuiB,MAAyB,IAAhBviB,EAAMuiB,MAAiC,IAAjBviB,EAAMwiB,OAC5D9rB,KAAK2rB,gBAAmB3rB,KAAK+rB,UAAlC,CAGA/rB,KAAKgsB,YAAcC,UAAU3iB,GAC7BtJ,KAAKksB,YAAcC,UAAU7iB,GAE7BtJ,KAAKosB,WAAa,GAAIjoB,MAAKnE,KAAK6P,OAChC7P,KAAKqsB,SAAW,GAAIloB,MAAKnE,KAAKsQ,KAC9BtQ,KAAKssB,iBAAmBtsB,KAAKya,OAAOyK,iBAEpCllB,KAAK0e,MAAMpR,MAAMif,OAAS,MAK1B,IAAI/X,GAAKxU,IACTA,MAAKwsB,YAAc,SAAUljB,GAAQkL,EAAGiY,aAAanjB,IACrDtJ,KAAK0sB,UAAc,SAAUpjB,GAAQkL,EAAGoX,WAAWtiB,IACnD3I,EAAKgI,iBAAiBqJ,SAAU,YAAawC,EAAGgY,aAChD7rB,EAAKgI,iBAAiBqJ,SAAU,UAAWwC,EAAGkY,WAC9C/rB,EAAK0I,eAAeC,KAStBvI,EAAQ4S,UAAU8Y,aAAe,SAAUnjB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIqjB,GAAQlI,WAAWwH,UAAU3iB,IAAUtJ,KAAKgsB,YAC5CY,EAAQnI,WAAW0H,UAAU7iB,IAAUtJ,KAAKksB,YAE5CW,EAAgB7sB,KAAKssB,iBAAiB1H,WAAa+H,EAAQ,IAC3DG,EAAc9sB,KAAKssB,iBAAiBzH,SAAW+H,EAAQ,IAEvDG,EAAY,EACZC,EAAYjoB,KAAKyY,IAAIuP,EAAY,IAAM,EAAIhoB,KAAKimB,GAIhDjmB,MAAKklB,IAAIllB,KAAKyY,IAAIqP,IAAkBG,IACtCH,EAAgB9nB,KAAKkoB,MAAOJ,EAAgB9nB,KAAKimB,IAAOjmB,KAAKimB,GAAK,MAEhEjmB,KAAKklB,IAAIllB,KAAK4Y,IAAIkP,IAAkBG,IACtCH,GAAiB9nB,KAAKkoB,MAAOJ,EAAe9nB,KAAKimB,GAAK,IAAQ,IAAOjmB,KAAKimB,GAAK,MAI7EjmB,KAAKklB,IAAIllB,KAAKyY,IAAIsP,IAAgBE,IACpCF,EAAc/nB,KAAKkoB,MAAOH,EAAc/nB,KAAKimB,IAAOjmB,KAAKimB,IAEvDjmB,KAAKklB,IAAIllB,KAAK4Y,IAAImP,IAAgBE,IACpCF,GAAe/nB,KAAKkoB,MAAOH,EAAa/nB,KAAKimB,GAAK,IAAQ,IAAOjmB,KAAKimB,IAGxEhrB,KAAKya,OAAOqK,eAAe+H,EAAeC,GAC1C9sB,KAAK6gB,QAGL,IAAIqM,GAAaltB,KAAKilB,mBACtBjlB,MAAKmtB,KAAK,uBAAwBD,GAElCvsB,EAAK0I,eAAeC,IAStBvI,EAAQ4S,UAAUiY,WAAa,SAAUtiB,GACvCtJ,KAAK0e,MAAMpR,MAAMif,OAAS,OAC1BvsB,KAAK2rB,gBAAiB,EAGtBhrB,EAAKwI,oBAAoB6I,SAAU,YAAahS,KAAKwsB,aACrD7rB,EAAKwI,oBAAoB6I,SAAU,UAAahS,KAAK0sB,WACrD/rB,EAAK0I,eAAeC,IAOtBvI,EAAQ4S,UAAUkQ,WAAa,SAAUva,GACvC,GAAI8jB,GAAQ,IACRC,EAASpB,UAAU3iB,GAAS3I,EAAKwG,gBAAgBnH,KAAK0e,OACtD4O,EAASnB,UAAU7iB,GAAS3I,EAAK8G,eAAezH,KAAK0e,MAEzD,IAAK1e,KAAKqa,YAAV,CASA,GALIra,KAAKutB,gBACPC,aAAaxtB,KAAKutB,gBAIhBvtB,KAAK2rB,eAEP,WADA3rB,MAAKytB,cAIP,IAAIztB,KAAKwlB,SAAWxlB,KAAKwlB,QAAQkI,UAAW,CAE1C,GAAIA,GAAY1tB,KAAK2tB,iBAAiBN,EAAQC,EAC1CI,KAAc1tB,KAAKwlB,QAAQkI,YAEzBA,EACF1tB,KAAK4tB,aAAaF,GAGlB1tB,KAAKytB,oBAIN,CAEH,GAAIjZ,GAAKxU,IACTA,MAAKutB,eAAiBM,WAAW,WAC/BrZ,EAAG+Y,eAAiB,IAGpB,IAAIG,GAAYlZ,EAAGmZ,iBAAiBN,EAAQC,EACxCI,IACFlZ,EAAGoZ,aAAaF,IAEjBN,MAOPrsB,EAAQ4S,UAAU8P,cAAgB,SAASna,GACzCtJ,KAAK+rB,WAAY,CAEjB,IAAIvX,GAAKxU,IACTA,MAAK8tB,YAAc,SAAUxkB,GAAQkL,EAAGuZ,aAAazkB,IACrDtJ,KAAKguB,WAAc,SAAU1kB,GAAQkL,EAAGyZ,YAAY3kB,IACpD3I,EAAKgI,iBAAiBqJ,SAAU,YAAawC,EAAGsZ,aAChDntB,EAAKgI,iBAAiBqJ,SAAU,WAAYwC,EAAGwZ,YAE/ChuB,KAAKujB,aAAaja,IAMpBvI,EAAQ4S,UAAUoa,aAAe,SAASzkB,GACxCtJ,KAAKysB,aAAanjB,IAMpBvI,EAAQ4S,UAAUsa,YAAc,SAAS3kB,GACvCtJ,KAAK+rB,WAAY,EAEjBprB,EAAKwI,oBAAoB6I,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAKwI,oBAAoB6I,SAAU,WAAchS,KAAKguB,YAEtDhuB,KAAK4rB,WAAWtiB,IASlBvI,EAAQ4S,UAAUgQ,SAAW,SAASra,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAI4kB,GAAQ,CAYZ,IAXI5kB,EAAM6kB,WACRD,EAAQ5kB,EAAM6kB,WAAW,IAChB7kB,EAAM8kB,SAGfF,GAAS5kB,EAAM8kB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYruB,KAAKya,OAAO+D,eACxB8P,EAAYD,GAAa,EAAIH,EAAQ,GAEzCluB,MAAKya,OAAOuK,aAAasJ,GACzBtuB,KAAK6gB,SAEL7gB,KAAKytB,eAIP,GAAIP,GAAaltB,KAAKilB,mBACtBjlB,MAAKmtB,KAAK,uBAAwBD,GAKlCvsB,EAAK0I,eAAeC,IAUtBvI,EAAQ4S,UAAU4a,gBAAkB,SAAU5b,EAAO6b,GAKnD,QAASC,GAAMjc,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAIpN,GAAIopB,EAAS,GACfvoB,EAAIuoB,EAAS,GACb/tB,EAAI+tB,EAAS,GAMXE,EAAKD,GAAMxoB,EAAEuM,EAAIpN,EAAEoN,IAAMG,EAAMF,EAAIrN,EAAEqN,IAAMxM,EAAEwM,EAAIrN,EAAEqN,IAAME,EAAMH,EAAIpN,EAAEoN,IACrEmc,EAAKF,GAAMhuB,EAAE+R,EAAIvM,EAAEuM,IAAMG,EAAMF,EAAIxM,EAAEwM,IAAMhS,EAAEgS,EAAIxM,EAAEwM,IAAME,EAAMH,EAAIvM,EAAEuM,IACrEoc,EAAKH,GAAMrpB,EAAEoN,EAAI/R,EAAE+R,IAAMG,EAAMF,EAAIhS,EAAEgS,IAAMrN,EAAEqN,EAAIhS,EAAEgS,IAAME,EAAMH,EAAI/R,EAAE+R,GAGzE,SAAc,GAANkc,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjC7tB,EAAQ4S,UAAUga,iBAAmB,SAAUnb,EAAGC,GAChD,GAAIpN,GACFwpB,EAAU,IACVnB,EAAY,KACZoB,EAAmB,KACnBC,EAAc,KACdxD,EAAS,GAAIpqB,GAAQqR,EAAGC,EAE1B,IAAIzS,KAAKsN,QAAUvM,EAAQ+Y,MAAMwF,KAC/Btf,KAAKsN,QAAUvM,EAAQ+Y,MAAMyF,UAC7Bvf,KAAKsN,QAAUvM,EAAQ+Y,MAAM0F,QAE7B,IAAKna,EAAIrF,KAAK2a,WAAWnV,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDqoB,EAAY1tB,KAAK2a,WAAWtV,EAC5B,IAAIimB,GAAYoC,EAAUpC,QAC1B,IAAIA,EACF,IAAK,GAAIjgB,GAAIigB,EAAS9lB,OAAS,EAAG6F,GAAK,EAAGA,IAAK,CAE7C,GAAI6f,GAAUI,EAASjgB,GACnB8f,EAAUD,EAAQC,QAClB6D,GAAa7D,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,QAC9DwM,GAAa9D,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,OAAQ0I,EAAQ,GAAG1I,OAClE,IAAIziB,KAAKuuB,gBAAgBhD,EAAQyD,IAC/BhvB,KAAKuuB,gBAAgBhD,EAAQ0D,GAE7B,MAAOvB,QAQf,KAAKroB,EAAI,EAAGA,EAAIrF,KAAK2a,WAAWnV,OAAQH,IAAK,CAC3CqoB,EAAY1tB,KAAK2a,WAAWtV,EAC5B,IAAIsN,GAAQ+a,EAAUjL,MACtB,IAAI9P,EAAO,CACT,GAAIuc,GAAQnqB,KAAKklB,IAAIzX,EAAIG,EAAMH,GAC3B2c,EAAQpqB,KAAKklB,IAAIxX,EAAIE,EAAMF,GAC3B8X,EAAQxlB,KAAKqqB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPxE,IAA8BsE,EAAPtE,IAClDwE,EAAcxE,EACduE,EAAmBpB,IAO3B,MAAOoB,IAQT/tB,EAAQ4S,UAAUia,aAAe,SAAUF,GACzC,GAAI2B,GAASC,EAAMC,CAEdvvB,MAAKwlB,SAiCR6J,EAAUrvB,KAAKwlB,QAAQgK,IAAIH,QAC3BC,EAAQtvB,KAAKwlB,QAAQgK,IAAIF,KACzBC,EAAQvvB,KAAKwlB,QAAQgK,IAAID,MAlCzBF,EAAUrd,SAASM,cAAc,OACjC+c,EAAQ/hB,MAAM0V,SAAW,WACzBqM,EAAQ/hB,MAAM8V,QAAU,OACxBiM,EAAQ/hB,MAAMzB,OAAS,oBACvBwjB,EAAQ/hB,MAAM3C,MAAQ,UACtB0kB,EAAQ/hB,MAAM1B,WAAa,wBAC3ByjB,EAAQ/hB,MAAMmiB,aAAe,MAC7BJ,EAAQ/hB,MAAMoiB,UAAY,qCAE1BJ,EAAOtd,SAASM,cAAc,OAC9Bgd,EAAKhiB,MAAM0V,SAAW,WACtBsM,EAAKhiB,MAAM2F,OAAS,OACpBqc,EAAKhiB,MAAM0F,MAAQ,IACnBsc,EAAKhiB,MAAMqiB,WAAa,oBAExBJ,EAAMvd,SAASM,cAAc,OAC7Bid,EAAIjiB,MAAM0V,SAAW,WACrBuM,EAAIjiB,MAAM2F,OAAS,IACnBsc,EAAIjiB,MAAM0F,MAAQ,IAClBuc,EAAIjiB,MAAMzB,OAAS,oBACnB0jB,EAAIjiB,MAAMmiB,aAAe,MAEzBzvB,KAAKwlB,SACHkI,UAAW,KACX8B,KACEH,QAASA,EACTC,KAAMA,EACNC,IAAKA,KAUXvvB,KAAKytB,eAELztB,KAAKwlB,QAAQkI,UAAYA,EAEvB2B,EAAQhM,UADsB,kBAArBrjB,MAAKqa,YACMra,KAAKqa,YAAYqT,EAAU/a,OAG3B,6BACM+a,EAAU/a,MAAMH,EAAI,gCACpBkb,EAAU/a,MAAMF,EAAI,gCACpBib,EAAU/a,MAAM2J,EAAI,qBAIhD+S,EAAQ/hB,MAAMhG,KAAQ,IACtB+nB,EAAQ/hB,MAAM5F,IAAQ,IACtB1H,KAAK0e,MAAMxM,YAAYmd,GACvBrvB,KAAK0e,MAAMxM,YAAYod,GACvBtvB,KAAK0e,MAAMxM,YAAYqd,EAGvB,IAAIK,GAAgBP,EAAQQ,YACxBC,EAAkBT,EAAQU,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBzoB,EAAOomB,EAAUjL,OAAOjQ,EAAIod,EAAe,CAC/CtoB,GAAOvC,KAAKwG,IAAIxG,KAAKiI,IAAI1F,EAAM,IAAKtH,KAAK0e,MAAME,YAAc,GAAKgR,GAElEN,EAAKhiB,MAAMhG,KAASomB,EAAUjL,OAAOjQ,EAAI,KACzC8c,EAAKhiB,MAAM5F,IAAUgmB,EAAUjL,OAAOhQ,EAAIud,EAAc,KACxDX,EAAQ/hB,MAAMhG,KAAQA,EAAO,KAC7B+nB,EAAQ/hB,MAAM5F,IAASgmB,EAAUjL,OAAOhQ,EAAIud,EAAaF,EAAiB,KAC1EP,EAAIjiB,MAAMhG,KAAWomB,EAAUjL,OAAOjQ,EAAIyd,EAAW,EAAK,KAC1DV,EAAIjiB,MAAM5F,IAAWgmB,EAAUjL,OAAOhQ,EAAIyd,EAAY,EAAK,MAO7DnvB,EAAQ4S,UAAU8Z,aAAe,WAC/B,GAAIztB,KAAKwlB,QAAS,CAChBxlB,KAAKwlB,QAAQkI,UAAY,IAEzB,KAAK,GAAIhoB,KAAQ1F,MAAKwlB,QAAQgK,IAC5B,GAAIxvB,KAAKwlB,QAAQgK,IAAI7pB,eAAeD,GAAO,CACzC,GAAI0B,GAAOpH,KAAKwlB,QAAQgK,IAAI9pB,EACxB0B,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWgI,YAAYxK,MAetC6kB,UAAY,SAAS3iB,GACnB,MAAI,WAAaA,GAAcA,EAAM6mB,QAC9B7mB,EAAM8mB,cAAc,IAAM9mB,EAAM8mB,cAAc,GAAGD,SAAW,GAQrEhE,UAAY,SAAS7iB,GACnB,MAAI,WAAaA,GAAcA,EAAM+mB,QAC9B/mB,EAAM8mB,cAAc,IAAM9mB,EAAM8mB,cAAc,GAAGC,SAAW,GAGrExwB,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAE9B,GAAIkB,GAAUlB,EAAoB,EAYlCe,QAAS,WACPjB,KAAKswB,YAAc,GAAIlvB,GACvBpB,KAAKuwB,eACLvwB,KAAKuwB,YAAY3L,WAAa,EAC9B5kB,KAAKuwB,YAAY1L,SAAW,EAC5B7kB,KAAKwwB,UAAY,IAEjBxwB,KAAKywB,eAAiB,GAAIrvB,GAC1BpB,KAAK0wB,eAAkB,GAAItvB,GAAQ,GAAI2D,KAAKimB,GAAI,EAAG,GAEnDhrB,KAAK2wB,8BASP1vB,OAAO0S,UAAU+I,eAAiB,SAASlK,EAAGC,EAAG6J,GAC/Ctc,KAAKswB,YAAY9d,EAAIA,EACrBxS,KAAKswB,YAAY7d,EAAIA,EACrBzS,KAAKswB,YAAYhU,EAAIA,EAErBtc,KAAK2wB,8BAWP1vB,OAAO0S,UAAUmR,eAAiB,SAASF,EAAYC,GAClCxe,SAAfue,IACF5kB,KAAKuwB,YAAY3L,WAAaA,GAGfve,SAAbwe,IACF7kB,KAAKuwB,YAAY1L,SAAWA,EACxB7kB,KAAKuwB,YAAY1L,SAAW,IAAG7kB,KAAKuwB,YAAY1L,SAAW,GAC3D7kB,KAAKuwB,YAAY1L,SAAW,GAAI9f,KAAKimB,KAAIhrB,KAAKuwB,YAAY1L,SAAW,GAAI9f,KAAKimB,MAGjE3kB,SAAfue,GAAyCve,SAAbwe,IAC9B7kB,KAAK2wB,8BAQT1vB,OAAO0S,UAAUuR,eAAiB,WAChC,GAAI0L,KAIJ,OAHAA,GAAIhM,WAAa5kB,KAAKuwB,YAAY3L,WAClCgM,EAAI/L,SAAW7kB,KAAKuwB,YAAY1L,SAEzB+L,GAOT3vB,OAAO0S,UAAUqR,aAAe,SAASxf,GACxBa,SAAXb,IAGJxF,KAAKwwB,UAAYhrB,EAKbxF,KAAKwwB,UAAY,MAAMxwB,KAAKwwB,UAAY,KACxCxwB,KAAKwwB,UAAY,IAAKxwB,KAAKwwB,UAAY,GAE3CxwB,KAAK2wB,+BAOP1vB,OAAO0S,UAAU6K,aAAe,WAC9B,MAAOxe,MAAKwwB,WAOdvvB,OAAO0S,UAAUyJ,kBAAoB,WACnC,MAAOpd,MAAKywB,gBAOdxvB,OAAO0S,UAAU8J,kBAAoB,WACnC,MAAOzd,MAAK0wB,gBAOdzvB,OAAO0S,UAAUgd,2BAA6B,WAE5C3wB,KAAKywB,eAAeje,EAAIxS,KAAKswB,YAAY9d,EAAIxS,KAAKwwB,UAAYzrB,KAAKyY,IAAIxd,KAAKuwB,YAAY3L,YAAc7f,KAAK4Y,IAAI3d,KAAKuwB,YAAY1L,UAChI7kB,KAAKywB,eAAehe,EAAIzS,KAAKswB,YAAY7d,EAAIzS,KAAKwwB,UAAYzrB,KAAK4Y,IAAI3d,KAAKuwB,YAAY3L,YAAc7f,KAAK4Y,IAAI3d,KAAKuwB,YAAY1L,UAChI7kB,KAAKywB,eAAenU,EAAItc,KAAKswB,YAAYhU,EAAItc,KAAKwwB,UAAYzrB,KAAKyY,IAAIxd,KAAKuwB,YAAY1L,UAGxF7kB,KAAK0wB,eAAele,EAAIzN,KAAKimB,GAAG,EAAIhrB,KAAKuwB,YAAY1L,SACrD7kB,KAAK0wB,eAAeje,EAAI,EACxBzS,KAAK0wB,eAAepU,GAAKtc,KAAKuwB,YAAY3L,YAG5C/kB,EAAOD,QAAUqB,QAIb,SAASpB,EAAQD,EAASM,GAW9B,QAASgB,GAAQiS,EAAMgN,EAAQ0Q,GAC7B7wB,KAAKmT,KAAOA,EACZnT,KAAKmgB,OAASA,EACdngB,KAAK6wB,MAAQA,EAEb7wB,KAAKmI,MAAQ9B,OACbrG,KAAKkH,MAAQb,OAGbrG,KAAKqX,OAASwZ,EAAMzQ,kBAAkBjN,EAAKqC,MAAOxV,KAAKmgB,QAGvDngB,KAAKqX,OAAOZ,KAAK,SAAUrR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9BpF,KAAKqX,OAAO7R,OAAS,GACvBxF,KAAKmoB,YAAY,GAInBnoB,KAAK2a,cAEL3a,KAAKM,QAAS,EACdN,KAAK8wB,eAAiBzqB,OAElBwqB,EAAMrW,kBACRxa,KAAKM,QAAS,EACdN,KAAK+wB,oBAGL/wB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCgB,GAAOyS,UAAUqd,SAAW,WAC1B,MAAOhxB,MAAKM,QAQdY,EAAOyS,UAAUsd,kBAAoB,WAInC,IAHA,GAAI3rB,GAAMtF,KAAKqX,OAAO7R,OAElBH,EAAI,EACDrF,KAAK2a,WAAWtV,IACrBA,GAGF,OAAON,MAAKkoB,MAAM5nB,EAAIC,EAAM,MAQ9BpE,EAAOyS,UAAU2U,SAAW,WAC1B,MAAOtoB,MAAK6wB,MAAMjX,aAQpB1Y,EAAOyS,UAAUud,UAAY,WAC3B,MAAOlxB,MAAKmgB,QAOdjf,EAAOyS,UAAU4U,iBAAmB,WAClC,MAAmBliB,UAAfrG,KAAKmI,MACA9B,OAEFrG,KAAKqX,OAAOrX,KAAKmI,QAO1BjH,EAAOyS,UAAUwd,UAAY,WAC3B,MAAOnxB,MAAKqX,QAQdnW,EAAOyS,UAAUuB,SAAW,SAAS/M,GACnC,GAAIA,GAASnI,KAAKqX,OAAO7R,OACvB,KAAM,2BAER,OAAOxF,MAAKqX,OAAOlP,IASrBjH,EAAOyS,UAAUuO,eAAiB,SAAS/Z,GAIzC,GAHc9B,SAAV8B,IACFA,EAAQnI,KAAKmI,OAED9B,SAAV8B,EACF,QAEF,IAAIwS,EACJ,IAAI3a,KAAK2a,WAAWxS,GAClBwS,EAAa3a,KAAK2a,WAAWxS,OAE1B,CACH,GAAIoE,KACJA,GAAE4T,OAASngB,KAAKmgB,OAChB5T,EAAErF,MAAQlH,KAAKqX,OAAOlP,EAEtB,IAAIipB,GAAW,GAAItwB,GAASd,KAAKmT,MAAMa,OAAQ,SAAUe,GAAO,MAAQA,GAAKxI,EAAE4T,SAAW5T,EAAErF,SAAWsO,KACvGmF,GAAa3a,KAAK6wB,MAAM3O,eAAekP,GAEvCpxB,KAAK2a,WAAWxS,GAASwS,EAG3B,MAAOA,IAQTzZ,EAAOyS,UAAUiN,kBAAoB,SAAStY,GAC5CtI,KAAK8wB,eAAiBxoB,GASxBpH,EAAOyS,UAAUwU,YAAc,SAAShgB,GACtC,GAAIA,GAASnI,KAAKqX,OAAO7R,OACvB,KAAM,2BAERxF,MAAKmI,MAAQA,EACbnI,KAAKkH,MAAQlH,KAAKqX,OAAOlP,IAO3BjH,EAAOyS,UAAUod,iBAAmB,SAAS5oB,GAC7B9B,SAAV8B,IACFA,EAAQ,EAEV,IAAIuW,GAAQ1e,KAAK6wB,MAAMnS,KAEvB,IAAIvW,EAAQnI,KAAKqX,OAAO7R,OAAQ,CAC9B,CAAqBxF,KAAKkiB,eAAe/Z,GAIlB9B,SAAnBqY,EAAM2S,WACR3S,EAAM2S,SAAWrf,SAASM,cAAc,OACxCoM,EAAM2S,SAAS/jB,MAAM0V,SAAW,WAChCtE,EAAM2S,SAAS/jB,MAAM3C,MAAQ,OAC7B+T,EAAMxM,YAAYwM,EAAM2S,UAE1B,IAAIA,GAAWrxB,KAAKixB,mBACpBvS,GAAM2S,SAAShO,UAAY,wBAA0BgO,EAAW,IAEhE3S,EAAM2S,SAAS/jB,MAAMoV,OAAS,OAC9BhE,EAAM2S,SAAS/jB,MAAMhG,KAAO,MAE5B,IAAIkN,GAAKxU,IACT6tB,YAAW,WAAYrZ,EAAGuc,iBAAiB5oB,EAAM,IAAM,IACvDnI,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGS+F,SAAnBqY,EAAM2S,WACR3S,EAAM9M,YAAY8M,EAAM2S,UACxB3S,EAAM2S,SAAWhrB,QAGfrG,KAAK8wB,gBACP9wB,KAAK8wB;EAIXjxB,EAAOD,QAAUsB,GAKb,SAASrB,GAObsB,QAAU,SAAUqR,EAAGC,GACrBzS,KAAKwS,EAAUnM,SAANmM,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAUpM,SAANoM,EAAkBA,EAAI,GAGjC5S,EAAOD,QAAUuB,SAKb,SAAStB,GAQb,QAASuB,GAAQoR,EAAGC,EAAG6J,GACrBtc,KAAKwS,EAAUnM,SAANmM,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAUpM,SAANoM,EAAkBA,EAAI,EAC/BzS,KAAKsc,EAAUjW,SAANiW,EAAkBA,EAAI,EASjClb,EAAQspB,SAAW,SAAStlB,EAAGa,GAC7B,GAAIqrB,GAAM,GAAIlwB,EAId,OAHAkwB,GAAI9e,EAAIpN,EAAEoN,EAAIvM,EAAEuM,EAChB8e,EAAI7e,EAAIrN,EAAEqN,EAAIxM,EAAEwM,EAChB6e,EAAIhV,EAAIlX,EAAEkX,EAAIrW,EAAEqW,EACTgV,GASTlwB,EAAQsS,IAAM,SAAStO,EAAGa,GACxB,GAAIsrB,GAAM,GAAInwB,EAId,OAHAmwB,GAAI/e,EAAIpN,EAAEoN,EAAIvM,EAAEuM,EAChB+e,EAAI9e,EAAIrN,EAAEqN,EAAIxM,EAAEwM,EAChB8e,EAAIjV,EAAIlX,EAAEkX,EAAIrW,EAAEqW,EACTiV,GASTnwB,EAAQoqB,IAAM,SAASpmB,EAAGa,GACxB,MAAO,IAAI7E,IACFgE,EAAEoN,EAAIvM,EAAEuM,GAAK,GACbpN,EAAEqN,EAAIxM,EAAEwM,GAAK,GACbrN,EAAEkX,EAAIrW,EAAEqW,GAAK,IAWxBlb,EAAQypB,aAAe,SAASzlB,EAAGa,GACjC,GAAI2kB,GAAe,GAAIxpB,EAMvB,OAJAwpB,GAAapY,EAAIpN,EAAEqN,EAAIxM,EAAEqW,EAAIlX,EAAEkX,EAAIrW,EAAEwM,EACrCmY,EAAanY,EAAIrN,EAAEkX,EAAIrW,EAAEuM,EAAIpN,EAAEoN,EAAIvM,EAAEqW,EACrCsO,EAAatO,EAAIlX,EAAEoN,EAAIvM,EAAEwM,EAAIrN,EAAEqN,EAAIxM,EAAEuM,EAE9BoY,GAQTxpB,EAAQuS,UAAUnO,OAAS,WACzB,MAAOT,MAAKqqB,KACJpvB,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKyS,EAAIzS,KAAKyS,EACdzS,KAAKsc,EAAItc,KAAKsc,IAIxBzc,EAAOD,QAAUwB,GAKb,SAASvB,EAAQD,EAASM,GAa9B,QAASmB,GAAO0X,EAAWlK,GACzB,GAAkBxI,SAAd0S,EACF,KAAM,qCAKR,IAHA/Y,KAAK+Y,UAAYA,EACjB/Y,KAAK8nB,QAAWjZ,GAA8BxI,QAAnBwI,EAAQiZ,QAAwBjZ,EAAQiZ,SAAU,EAEzE9nB,KAAK8nB,QAAS,CAChB9nB,KAAK0e,MAAQ1M,SAASM,cAAc,OAEpCtS,KAAK0e,MAAMpR,MAAM0F,MAAQ,OACzBhT,KAAK0e,MAAMpR,MAAM0V,SAAW,WAC5BhjB,KAAK+Y,UAAU7G,YAAYlS,KAAK0e,OAEhC1e,KAAK0e,MAAM8S,KAAOxf,SAASM,cAAc,SACzCtS,KAAK0e,MAAM8S,KAAK7qB,KAAO,SACvB3G,KAAK0e,MAAM8S,KAAKtqB,MAAQ,OACxBlH,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAM8S,MAElCxxB,KAAK0e,MAAM0F,KAAOpS,SAASM,cAAc,SACzCtS,KAAK0e,MAAM0F,KAAKzd,KAAO,SACvB3G,KAAK0e,MAAM0F,KAAKld,MAAQ,OACxBlH,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAM0F,MAElCpkB,KAAK0e,MAAM+I,KAAOzV,SAASM,cAAc,SACzCtS,KAAK0e,MAAM+I,KAAK9gB,KAAO,SACvB3G,KAAK0e,MAAM+I,KAAKvgB,MAAQ,OACxBlH,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAM+I,MAElCznB,KAAK0e,MAAM+S,IAAMzf,SAASM,cAAc,SACxCtS,KAAK0e,MAAM+S,IAAI9qB,KAAO,SACtB3G,KAAK0e,MAAM+S,IAAInkB,MAAM0V,SAAW,WAChChjB,KAAK0e,MAAM+S,IAAInkB,MAAMzB,OAAS,gBAC9B7L,KAAK0e,MAAM+S,IAAInkB,MAAM0F,MAAQ,QAC7BhT,KAAK0e,MAAM+S,IAAInkB,MAAM2F,OAAS,MAC9BjT,KAAK0e,MAAM+S,IAAInkB,MAAMmiB,aAAe,MACpCzvB,KAAK0e,MAAM+S,IAAInkB,MAAMokB,gBAAkB,MACvC1xB,KAAK0e,MAAM+S,IAAInkB,MAAMzB,OAAS,oBAC9B7L,KAAK0e,MAAM+S,IAAInkB,MAAMyR,gBAAkB,UACvC/e,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAM+S,KAElCzxB,KAAK0e,MAAMiT,MAAQ3f,SAASM,cAAc,SAC1CtS,KAAK0e,MAAMiT,MAAMhrB,KAAO,SACxB3G,KAAK0e,MAAMiT,MAAMrkB,MAAM4L,OAAS,MAChClZ,KAAK0e,MAAMiT,MAAMzqB,MAAQ,IACzBlH,KAAK0e,MAAMiT,MAAMrkB,MAAM0V,SAAW,WAClChjB,KAAK0e,MAAMiT,MAAMrkB,MAAMhG,KAAO,SAC9BtH,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAMiT,MAGlC,IAAInd,GAAKxU,IACTA,MAAK0e,MAAMiT,MAAMrO,YAAc,SAAUha,GAAQkL,EAAG+O,aAAaja,IACjEtJ,KAAK0e,MAAM8S,KAAKI,QAAU,SAAUtoB,GAAQkL,EAAGgd,KAAKloB,IACpDtJ,KAAK0e,MAAM0F,KAAKwN,QAAU,SAAUtoB,GAAQkL,EAAGqd,WAAWvoB,IAC1DtJ,KAAK0e,MAAM+I,KAAKmK,QAAU,SAAUtoB,GAAQkL,EAAGiT,KAAKne,IAGtDtJ,KAAK8xB,iBAAmBzrB,OAExBrG,KAAKqX,UACLrX,KAAKmI,MAAQ9B,OAEbrG,KAAK+xB,YAAc1rB,OACnBrG,KAAKgyB,aAAe,IACpBhyB,KAAKiyB,UAAW,EA3ElB,GAAItxB,GAAOT,EAAoB,EAiF/BmB,GAAOsS,UAAU6d,KAAO,WACtB,GAAIrpB,GAAQnI,KAAKkoB,UACb/f,GAAQ,IACVA,IACAnI,KAAKkyB,SAAS/pB,KAOlB9G,EAAOsS,UAAU8T,KAAO,WACtB,GAAItf,GAAQnI,KAAKkoB,UACb/f,GAAQnI,KAAKqX,OAAO7R,OAAS,IAC/B2C,IACAnI,KAAKkyB,SAAS/pB,KAOlB9G,EAAOsS,UAAUwe,SAAW,WAC1B,GAAItiB,GAAQ,GAAI1L,MAEZgE,EAAQnI,KAAKkoB,UACb/f,GAAQnI,KAAKqX,OAAO7R,OAAS,GAC/B2C,IACAnI,KAAKkyB,SAAS/pB,IAEPnI,KAAKiyB,WAEZ9pB,EAAQ,EACRnI,KAAKkyB,SAAS/pB,GAGhB,IAAImI,GAAM,GAAInM,MACVunB,EAAQpb,EAAMT,EAIduiB,EAAWrtB,KAAKiI,IAAIhN,KAAKgyB,aAAetG,EAAM,GAG9ClX,EAAKxU,IACTA,MAAK+xB,YAAclE,WAAW,WAAYrZ,EAAG2d,YAAcC,IAM7D/wB,EAAOsS,UAAUke,WAAa,WACHxrB,SAArBrG,KAAK+xB,YACP/xB,KAAKokB,OAELpkB,KAAKskB,QAOTjjB,EAAOsS,UAAUyQ,KAAO,WAElBpkB,KAAK+xB,cAET/xB,KAAKmyB,WAEDnyB,KAAK0e,QACP1e,KAAK0e,MAAM0F,KAAKld,MAAQ,UAO5B7F,EAAOsS,UAAU2Q,KAAO,WACtB+N,cAAcryB,KAAK+xB,aACnB/xB,KAAK+xB,YAAc1rB,OAEfrG,KAAK0e,QACP1e,KAAK0e,MAAM0F,KAAKld,MAAQ,SAQ5B7F,EAAOsS,UAAUyU,oBAAsB,SAAS9f,GAC9CtI,KAAK8xB,iBAAmBxpB,GAO1BjH,EAAOsS,UAAUqU,gBAAkB,SAASoK,GAC1CpyB,KAAKgyB,aAAeI,GAOtB/wB,EAAOsS,UAAU2e,gBAAkB,WACjC,MAAOtyB,MAAKgyB,cASd3wB,EAAOsS,UAAU4e,YAAc,SAASC,GACtCxyB,KAAKiyB,SAAWO,GAOlBnxB,EAAOsS,UAAU8e,SAAW,WACIpsB,SAA1BrG,KAAK8xB,kBACP9xB,KAAK8xB,oBAOTzwB,EAAOsS,UAAUkN,OAAS,WACxB,GAAI7gB,KAAK0e,MAAO,CAEd1e,KAAK0e,MAAM+S,IAAInkB,MAAM5F,IAAO1H,KAAK0e,MAAMuF,aAAa,EAChDjkB,KAAK0e,MAAM+S,IAAI1B,aAAa,EAAK,KACrC/vB,KAAK0e,MAAM+S,IAAInkB,MAAM0F,MAAShT,KAAK0e,MAAME,YACrC5e,KAAK0e,MAAM8S,KAAK5S,YAChB5e,KAAK0e,MAAM0F,KAAKxF,YAChB5e,KAAK0e,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAItX,GAAOtH,KAAK0yB,YAAY1yB,KAAKmI,MACjCnI,MAAK0e,MAAMiT,MAAMrkB,MAAMhG,KAAO,EAAS,OAS3CjG,EAAOsS,UAAUoU,UAAY,SAAS1Q,GACpCrX,KAAKqX,OAASA,EAEVrX,KAAKqX,OAAO7R,OAAS,EACvBxF,KAAKkyB,SAAS,GAEdlyB,KAAKmI,MAAQ9B,QAOjBhF,EAAOsS,UAAUue,SAAW,SAAS/pB,GACnC,KAAIA,EAAQnI,KAAKqX,OAAO7R,QAOtB,KAAM,2BANNxF,MAAKmI,MAAQA,EAEbnI,KAAK6gB,SACL7gB,KAAKyyB,YAWTpxB,EAAOsS,UAAUuU,SAAW,WAC1B,MAAOloB,MAAKmI,OAQd9G,EAAOsS,UAAU6B,IAAM,WACrB,MAAOxV,MAAKqX,OAAOrX,KAAKmI,QAI1B9G,EAAOsS,UAAU4P,aAAe,SAASja,GAEvC,GAAIqiB,GAAiBriB,EAAMuiB,MAAyB,IAAhBviB,EAAMuiB,MAAiC,IAAjBviB,EAAMwiB,MAChE,IAAKH,EAAL,CAEA3rB,KAAK2yB,aAAerpB,EAAM6mB,QAC1BnwB,KAAK4yB,YAAcnO,WAAWzkB,KAAK0e,MAAMiT,MAAMrkB,MAAMhG,MAErDtH,KAAK0e,MAAMpR,MAAMif,OAAS,MAK1B,IAAI/X,GAAKxU,IACTA,MAAKwsB,YAAc,SAAUljB,GAAQkL,EAAGiY,aAAanjB,IACrDtJ,KAAK0sB,UAAc,SAAUpjB,GAAQkL,EAAGoX,WAAWtiB,IACnD3I,EAAKgI,iBAAiBqJ,SAAU,YAAahS,KAAKwsB,aAClD7rB,EAAKgI,iBAAiBqJ,SAAU,UAAahS,KAAK0sB,WAClD/rB,EAAK0I,eAAeC,KAItBjI,EAAOsS,UAAUkf,YAAc,SAAUvrB,GACvC,GAAI0L,GAAQyR,WAAWzkB,KAAK0e,MAAM+S,IAAInkB,MAAM0F,OACxChT,KAAK0e,MAAMiT,MAAM/S,YAAc,GAC/BpM,EAAIlL,EAAO,EAEXa,EAAQpD,KAAKkoB,MAAMza,EAAIQ,GAAShT,KAAKqX,OAAO7R,OAAO,GAIvD,OAHY,GAAR2C,IAAWA,EAAQ,GACnBA,EAAQnI,KAAKqX,OAAO7R,OAAO,IAAG2C,EAAQnI,KAAKqX,OAAO7R,OAAO,GAEtD2C,GAGT9G,EAAOsS,UAAU+e,YAAc,SAAUvqB,GACvC,GAAI6K,GAAQyR,WAAWzkB,KAAK0e,MAAM+S,IAAInkB,MAAM0F,OACxChT,KAAK0e,MAAMiT,MAAM/S,YAAc,GAE/BpM,EAAIrK,GAASnI,KAAKqX,OAAO7R,OAAO,GAAKwN,EACrC1L,EAAOkL,EAAI,CAEf,OAAOlL,IAKTjG,EAAOsS,UAAU8Y,aAAe,SAAUnjB,GACxC,GAAIoiB,GAAOpiB,EAAM6mB,QAAUnwB,KAAK2yB,aAC5BngB,EAAIxS,KAAK4yB,YAAclH,EAEvBvjB,EAAQnI,KAAK6yB,YAAYrgB,EAE7BxS,MAAKkyB,SAAS/pB,GAEdxH,EAAK0I,kBAIPhI,EAAOsS,UAAUiY,WAAa,WAC5B5rB,KAAK0e,MAAMpR,MAAMif,OAAS,OAG1B5rB,EAAKwI,oBAAoB6I,SAAU,YAAahS,KAAKwsB,aACrD7rB,EAAKwI,oBAAoB6I,SAAU,UAAWhS,KAAK0sB,WAEnD/rB,EAAK0I,kBAGPxJ,EAAOD,QAAUyB,GAKb,SAASxB,GA2Bb,QAASyB,GAAWuO,EAAOS,EAAKiX,EAAMmB,GAEpC1oB,KAAK8yB,OAAS,EACd9yB,KAAK+yB,KAAO,EACZ/yB,KAAKgzB,MAAQ,EACbhzB,KAAK0oB,YAAa,EAClB1oB,KAAKizB,UAAY,EAEjBjzB,KAAKkzB,SAAW,EAChBlzB,KAAKmzB,SAAStjB,EAAOS,EAAKiX,EAAMmB,GAYlCpnB,EAAWqS,UAAUwf,SAAW,SAAStjB,EAAOS,EAAKiX,EAAMmB,GACzD1oB,KAAK8yB,OAASjjB,EAAQA,EAAQ,EAC9B7P,KAAK+yB,KAAOziB,EAAMA,EAAM,EAExBtQ,KAAKozB,QAAQ7L,EAAMmB,IASrBpnB,EAAWqS,UAAUyf,QAAU,SAAS7L,EAAMmB,GAC/BriB,SAATkhB,GAA8B,GAARA,IAGPlhB,SAAfqiB,IACF1oB,KAAK0oB,WAAaA,GAGlB1oB,KAAKgzB,MADHhzB,KAAK0oB,cAAe,EACTpnB,EAAW+xB,oBAAoB9L,GAE/BA,IAUjBjmB,EAAW+xB,oBAAsB,SAAU9L,GACzC,GAAI+L,GAAQ,SAAU9gB,GAAI,MAAOzN,MAAKgL,IAAIyC,GAAKzN,KAAKwuB,MAGhDC,EAAQzuB,KAAK0uB,IAAI,GAAI1uB,KAAKkoB,MAAMqG,EAAM/L,KACtCmM,EAAQ,EAAI3uB,KAAK0uB,IAAI,GAAI1uB,KAAKkoB,MAAMqG,EAAM/L,EAAO,KACjDoM,EAAQ,EAAI5uB,KAAK0uB,IAAI,GAAI1uB,KAAKkoB,MAAMqG,EAAM/L,EAAO,KAGjDmB,EAAa8K,CASjB,OARIzuB,MAAKklB,IAAIyJ,EAAQnM,IAASxiB,KAAKklB,IAAIvB,EAAanB,KAAOmB,EAAagL,GACpE3uB,KAAKklB,IAAI0J,EAAQpM,IAASxiB,KAAKklB,IAAIvB,EAAanB,KAAOmB,EAAaiL,GAGtD,GAAdjL,IACFA,EAAa,GAGRA,GAOTpnB,EAAWqS,UAAU6T,WAAa,WAChC,MAAO/C,YAAWzkB,KAAKkzB,SAASU,YAAY5zB,KAAKizB,aAOnD3xB,EAAWqS,UAAUkgB,QAAU,WAC7B,MAAO7zB,MAAKgzB,OAOd1xB,EAAWqS,UAAU9D,MAAQ,WAC3B7P,KAAKkzB,SAAWlzB,KAAK8yB,OAAS9yB,KAAK8yB,OAAS9yB,KAAKgzB,OAMnD1xB,EAAWqS,UAAU8T,KAAO,WAC1BznB,KAAKkzB,UAAYlzB,KAAKgzB,OAOxB1xB,EAAWqS,UAAUrD,IAAM,WACzB,MAAQtQ,MAAKkzB,SAAWlzB,KAAK+yB,MAG/BlzB,EAAOD,QAAU0B,GAKb,SAASzB,EAAQD,EAASM,GAsB9B,QAASqB,GAAUwX,EAAW/W,EAAO8xB,EAAQjlB,GAC3C,KAAM7O,eAAgBuB,IACpB,KAAM,IAAIyX,aAAY,mDAIxB,MAAMlT,MAAMC,QAAQ+tB,IAAWA,YAAkBjzB,KAAYizB,YAAkB1tB,QAAQ,CACrF,GAAI2tB,GAAgBllB,CACpBA,GAAUilB,EACVA,EAASC,EAGX,GAAIvf,GAAKxU,IACTA,MAAKg0B,gBACHnkB,MAAO,KACPS,IAAO,KAEP2jB,YAAY,EAEZC,YAAa,SACblhB,MAAO,KACPC,OAAQ,KACRkhB,UAAW,KACXC,UAAW,MAEbp0B,KAAK6O,QAAUlO,EAAK2F,cAAetG,KAAKg0B,gBAGxCh0B,KAAKq0B,QAAQtb,GAGb/Y,KAAK+B,cAEL/B,KAAKs0B,MACH9E,IAAKxvB,KAAKwvB,IACV+E,SAAUv0B,KAAK6F,MACf2uB,SACE5gB,GAAI5T,KAAK4T,GAAG6gB,KAAKz0B,MACjB+T,IAAK/T,KAAK+T,IAAI0gB,KAAKz0B,MACnBmtB,KAAMntB,KAAKmtB,KAAKsH,KAAKz0B,OAEvB00B,eACA/zB,MACEg0B,KAAM,KACNC,SAAUpgB,EAAGqgB,UAAUJ,KAAKjgB,GAC5BsgB,eAAgBtgB,EAAGugB,gBAAgBN,KAAKjgB,GACxCwgB,OAAQxgB,EAAGygB,QAAQR,KAAKjgB,GACxB0gB,aAAe1gB,EAAG2gB,cAAcV,KAAKjgB,KAKzCxU,KAAKiP,MAAQ,GAAIrN,GAAM5B,KAAKs0B,MAC5Bt0B,KAAK+B,WAAWiG,KAAKhI,KAAKiP,OAC1BjP,KAAKs0B,KAAKrlB,MAAQjP,KAAKiP,MAGvBjP,KAAKo1B,SAAW,GAAIryB,GAAS/C,KAAKs0B,MAClCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKo1B,UAC1Bp1B,KAAKs0B,KAAK3zB,KAAKg0B,KAAO30B,KAAKo1B,SAAST,KAAKF,KAAKz0B,KAAKo1B,UAGnDp1B,KAAKq1B,YAAc,GAAI9yB,GAAYvC,KAAKs0B,MACxCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKq1B,aAI1Br1B,KAAKs1B,WAAa,GAAI9yB,GAAWxC,KAAKs0B,MACtCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKs1B,YAG1Bt1B,KAAKu1B,QAAU,GAAI3yB,GAAQ5C,KAAKs0B,MAChCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKu1B,SAE1Bv1B,KAAKw1B,UAAY,KACjBx1B,KAAKy1B,WAAa,KAGd5mB,GACF7O,KAAKkc,WAAWrN,GAIdilB,GACF9zB,KAAK01B,UAAU5B,GAIb9xB,EACFhC,KAAK21B,SAAS3zB,GAGdhC,KAAK6gB,SAhHT,GAEIlgB,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B0B,EAAQ1B,EAAoB,IAC5B01B,EAAO11B,EAAoB,IAC3B6C,EAAW7C,EAAoB,IAC/BqC,EAAcrC,EAAoB,IAClCsC,EAAatC,EAAoB,IACjC0C,EAAU1C,EAAoB,GA2GlCqB,GAASoS,UAAY,GAAIiiB,GAMzBr0B,EAASoS,UAAUgiB,SAAW,SAAS3zB,GACrC,GAGI6zB,GAHAC,EAAiC,MAAlB91B,KAAKw1B,SAwBxB,IAhBEK,EAJG7zB,EAGIA,YAAiBnB,IAAWmB,YAAiBlB,GACvCkB,EAIA,GAAInB,GAAQmB,GACvB2E,MACEkJ,MAAO,OACPS,IAAK,UAVI,KAgBftQ,KAAKw1B,UAAYK,EACjB71B,KAAKu1B,SAAWv1B,KAAKu1B,QAAQI,SAASE,GAElCC,EACF,GAA0BzvB,QAAtBrG,KAAK6O,QAAQgB,OAA0CxJ,QAApBrG,KAAK6O,QAAQyB,IAAkB,CACpE,GAAIT,GAA8BxJ,QAAtBrG,KAAK6O,QAAQgB,MAAqB7P,KAAK6O,QAAQgB,MAAQ,KAC/DS,EAA4BjK,QAApBrG,KAAK6O,QAAQyB,IAAqBtQ,KAAK6O,QAAQyB,IAAM,IAEjEtQ,MAAK+1B,UAAUlmB,EAAOS,GAAM0lB,SAAS,QAGrCh2B,MAAKi2B,KAAKD,SAAS,KASzBz0B,EAASoS,UAAU+hB,UAAY,SAAS5B,GAEtC,GAAI+B,EAKFA,GAJG/B,EAGIA,YAAkBjzB,IAAWizB,YAAkBhzB,GACzCgzB,EAIA,GAAIjzB,GAAQizB,GAPZ,KAUf9zB,KAAKy1B,WAAaI,EAClB71B,KAAKu1B,QAAQG,UAAUG,IAmBzBt0B,EAASoS,UAAUuiB,aAAe,SAASzgB,EAAK5G,GAC9C7O,KAAKu1B,SAAWv1B,KAAKu1B,QAAQW,aAAazgB,GAEtC5G,GAAWA,EAAQsnB,OACrBn2B,KAAKm2B,MAAM1gB,EAAK5G,IAQpBtN,EAASoS,UAAUyiB,aAAe,WAChC,MAAOp2B,MAAKu1B,SAAWv1B,KAAKu1B,QAAQa,oBAetC70B,EAASoS,UAAUwiB,MAAQ,SAAS91B,EAAIwO,GACtC,GAAK7O,KAAKw1B,WAAmBnvB,QAANhG,EAAvB,CAEA,GAAIoV,GAAM3P,MAAMC,QAAQ1F,GAAMA,GAAMA,GAGhCm1B,EAAYx1B,KAAKw1B,UAAUnf,aAAab,IAAIC,GAC9C9O,MACEkJ,MAAO,OACPS,IAAK,UAKLT,EAAQ,KACRS,EAAM,IAcV,IAbAklB,EAAUntB,QAAQ,SAAUguB,GAC1B,GAAIhrB,GAAIgrB,EAASxmB,MAAMhJ,UACnByF,EAAI,OAAS+pB,GAAWA,EAAS/lB,IAAIzJ,UAAYwvB,EAASxmB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJxE,KACpBwE,EAAQxE,IAGE,OAARiF,GAAgBhE,EAAIgE,KACtBA,EAAMhE,KAII,OAAVuD,GAA0B,OAARS,EAAc,CAElC,GAAIgmB,IAAUzmB,EAAQS,GAAO,EACzB8hB,EAAWrtB,KAAKiI,IAAKhN,KAAKiP,MAAMqB,IAAMtQ,KAAKiP,MAAMY,MAAwB,KAAfS,EAAMT,IAEhEmmB,EAAWnnB,GAA+BxI,SAApBwI,EAAQmnB,QAAyBnnB,EAAQmnB,SAAU,CAC7Eh2B,MAAKiP,MAAMkkB,SAASmD,EAASlE,EAAW,EAAGkE,EAASlE,EAAW,EAAG4D,MAUtEz0B,EAASoS,UAAU4iB,aAAe,WAEhC,GAAIC,GAAUx2B,KAAKw1B,UAAUnf,aAC3B9K,EAAM,KACNyB,EAAM,IAER,IAAIwpB,EAAS,CAEX,GAAIC,GAAUD,EAAQjrB,IAAI,QAC1BA,GAAMkrB,EAAU91B,EAAK+F,QAAQ+vB,EAAQ5mB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI6vB,GAAeF,EAAQxpB,IAAI,QAC3B0pB,KACF1pB,EAAMrM,EAAK+F,QAAQgwB,EAAa7mB,MAAO,QAAQhJ,UAEjD,IAAI8vB,GAAaH,EAAQxpB,IAAI,MACzB2pB,KAEA3pB,EADS,MAAPA,EACIrM,EAAK+F,QAAQiwB,EAAWrmB,IAAK,QAAQzJ,UAGrC9B,KAAKiI,IAAIA,EAAKrM,EAAK+F,QAAQiwB,EAAWrmB,IAAK,QAAQzJ,YAK/D,OACE0E,IAAa,MAAPA,EAAe,GAAIpH,MAAKoH,GAAO,KACrCyB,IAAa,MAAPA,EAAe,GAAI7I,MAAK6I,GAAO,OAKzCnN,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAsB9B,QAASsB,GAASuX,EAAW/W,EAAO8xB,EAAQjlB,GAE1C,KAAM/I,MAAMC,QAAQ+tB,IAAWA,YAAkBjzB,KAAYizB,YAAkB1tB,QAAQ,CACrF,GAAI2tB,GAAgBllB,CACpBA,GAAUilB,EACVA,EAASC,EAGX,GAAIvf,GAAKxU,IACTA,MAAKg0B,gBACHnkB,MAAO,KACPS,IAAO,KAEP2jB,YAAY,EAEZC,YAAa,SACblhB,MAAO,KACPC,OAAQ,KACRkhB,UAAW,KACXC,UAAW,MAEbp0B,KAAK6O,QAAUlO,EAAK2F,cAAetG,KAAKg0B,gBAGxCh0B,KAAKq0B,QAAQtb,GAGb/Y,KAAK+B,cAEL/B,KAAKs0B,MACH9E,IAAKxvB,KAAKwvB,IACV+E,SAAUv0B,KAAK6F,MACf2uB,SACE5gB,GAAI5T,KAAK4T,GAAG6gB,KAAKz0B,MACjB+T,IAAK/T,KAAK+T,IAAI0gB,KAAKz0B,MACnBmtB,KAAMntB,KAAKmtB,KAAKsH,KAAKz0B,OAEvBW,MACEg0B,KAAM,KACNC,SAAUpgB,EAAGqgB,UAAUJ,KAAKjgB,GAC5BsgB,eAAgBtgB,EAAGugB,gBAAgBN,KAAKjgB,GACxCwgB,OAAQxgB,EAAGygB,QAAQR,KAAKjgB,GACxB0gB,aAAe1gB,EAAG2gB,cAAcV,KAAKjgB,KAKzCxU,KAAKiP,MAAQ,GAAIrN,GAAM5B,KAAKs0B,MAC5Bt0B,KAAK+B,WAAWiG,KAAKhI,KAAKiP,OAC1BjP,KAAKs0B,KAAKrlB,MAAQjP,KAAKiP,MAGvBjP,KAAKo1B,SAAW,GAAIryB,GAAS/C,KAAKs0B,MAClCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKo1B,UAC1Bp1B,KAAKs0B,KAAK3zB,KAAKg0B,KAAO30B,KAAKo1B,SAAST,KAAKF,KAAKz0B,KAAKo1B,UAGnDp1B,KAAKq1B,YAAc,GAAI9yB,GAAYvC,KAAKs0B,MACxCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKq1B,aAI1Br1B,KAAKs1B,WAAa,GAAI9yB,GAAWxC,KAAKs0B,MACtCt0B,KAAK+B,WAAWiG,KAAKhI,KAAKs1B,YAG1Bt1B,KAAK42B,UAAY,GAAI9zB,GAAU9C,KAAKs0B,MACpCt0B,KAAK+B,WAAWiG,KAAKhI,KAAK42B,WAE1B52B,KAAKw1B,UAAY,KACjBx1B,KAAKy1B,WAAa,KAGd5mB,GACF7O,KAAKkc,WAAWrN,GAIdilB,GACF9zB,KAAK01B,UAAU5B,GAIb9xB,EACFhC,KAAK21B,SAAS3zB,GAGdhC,KAAK6gB,SA3GT,GAEIlgB,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B0B,EAAQ1B,EAAoB,IAC5B01B,EAAO11B,EAAoB,IAC3B6C,EAAW7C,EAAoB,IAC/BqC,EAAcrC,EAAoB,IAClCsC,EAAatC,EAAoB,IACjC4C,EAAY5C,EAAoB,GAsGpCsB,GAAQmS,UAAY,GAAIiiB,GAMxBp0B,EAAQmS,UAAUgiB,SAAW,SAAS3zB,GACpC,GAGI6zB,GAHAC,EAAiC,MAAlB91B,KAAKw1B,SAwBxB,IAhBEK,EAJG7zB,EAGIA,YAAiBnB,IAAWmB,YAAiBlB,GACvCkB,EAIA,GAAInB,GAAQmB,GACvB2E,MACEkJ,MAAO,OACPS,IAAK,UAVI,KAgBftQ,KAAKw1B,UAAYK,EACjB71B,KAAK42B,WAAa52B,KAAK42B,UAAUjB,SAASE,GAEtCC,EACF,GAA0BzvB,QAAtBrG,KAAK6O,QAAQgB,OAA0CxJ,QAApBrG,KAAK6O,QAAQyB,IAAkB,CACpE,GAAIT,GAA8BxJ,QAAtBrG,KAAK6O,QAAQgB,MAAqB7P,KAAK6O,QAAQgB,MAAQ,KAC/DS,EAA4BjK,QAApBrG,KAAK6O,QAAQyB,IAAqBtQ,KAAK6O,QAAQyB,IAAM,IAEjEtQ,MAAK+1B,UAAUlmB,EAAOS,GAAM0lB,SAAS,QAGrCh2B,MAAKi2B,KAAKD,SAAS,KASzBx0B,EAAQmS,UAAU+hB,UAAY,SAAS5B,GAErC,GAAI+B,EAKFA,GAJG/B,EAGIA,YAAkBjzB,IAAWizB,YAAkBhzB,GACzCgzB,EAIA,GAAIjzB,GAAQizB,GAPZ,KAUf9zB,KAAKy1B,WAAaI,EAClB71B,KAAK42B,UAAUlB,UAAUG,IAS3Br0B,EAAQmS,UAAUkjB,UAAY,SAASC,EAAS9jB,EAAOC,GAGrD,MAFe5M,UAAX2M,IAAuBA,EAAS,IACrB3M,SAAX4M,IAAuBA,EAAS,IACG5M,SAAnCrG,KAAK42B,UAAU9C,OAAOgD,GACjB92B,KAAK42B,UAAU9C,OAAOgD,GAASD,UAAU7jB,EAAMC,GAG/C,qBAAwB6jB,GASnCt1B,EAAQmS,UAAUojB,eAAiB,SAASD,GAC1C,MAAuCzwB,UAAnCrG,KAAK42B,UAAU9C,OAAOgD,GAChB92B,KAAK42B,UAAU9C,OAAOgD,GAAShP,UAAkEzhB,SAAtDrG,KAAK42B,UAAU/nB,QAAQilB,OAAOkD,WAAWF,IAA+E,GAArD92B,KAAK42B,UAAU/nB,QAAQilB,OAAOkD,WAAWF,KAGxJ,GAWXt1B,EAAQmS,UAAU4iB,aAAe,WAC/B,GAAIhrB,GAAM,KACNyB,EAAM,IAGV,KAAK,GAAI8pB,KAAW92B,MAAK42B,UAAU9C,OACjC,GAAI9zB,KAAK42B,UAAU9C,OAAOnuB,eAAemxB,IACO,GAA1C92B,KAAK42B,UAAU9C,OAAOgD,GAAShP,QACjC,IAAK,GAAIziB,GAAI,EAAGA,EAAIrF,KAAK42B,UAAU9C,OAAOgD,GAAStB,UAAUhwB,OAAQH,IAAK,CACxE,GAAI0P,GAAO/U,KAAK42B,UAAU9C,OAAOgD,GAAStB,UAAUnwB,GAChD6B,EAAQvG,EAAK+F,QAAQqO,EAAKvC,EAAG,QAAQ3L,SACzC0E,GAAa,MAAPA,EAAcrE,EAAQqE,EAAMrE,EAAQA,EAAQqE,EAClDyB,EAAa,MAAPA,EAAc9F,EAAcA,EAAN8F,EAAc9F,EAAQ8F,EAM1D,OACEzB,IAAa,MAAPA,EAAe,GAAIpH,MAAKoH,GAAO,KACrCyB,IAAa,MAAPA,EAAe,GAAI7I,MAAK6I,GAAO,OAMzCnN,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAK9B,GAAIyD,GAASzD,EAAoB,GAQjCN,GAAQq3B,qBAAuB,SAAS3C,EAAMI,GAC5C,GAAIwC,GAAsBxC,EAAYyC,QACtC,IAAID,EACF,GAA0C,GAAtCpxB,MAAMC,QAAQmxB,GAA8B,CAC9C,IAAK,GAAI7xB,GAAI,EAAGA,EAAI6xB,EAAoB1xB,OAAQH,IAAK,CACnD,GAAI+xB,KACJA,GAASvnB,MAAQlM,EAAOuzB,EAAoB7xB,GAAGwK,OAAO9I,SAASF,UAC/DuwB,EAAS9mB,IAAM3M,EAAOuzB,EAAoB7xB,GAAGiL,KAAKvJ,SAASF,UAC3DytB,EAAKI,YAAY1sB,KAAKovB,GAExB9C,EAAKI,YAAYje,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,YAIrBykB,GAAKI,cACH7kB,MAAOlM,EAAOuzB,EAAoBrnB,OAAO9I,SAASF,UAClDyJ,IAAK3M,EAAOuzB,EAAoB5mB,KAAKvJ,SAASF,WAOpD,IAAIwwB,GAAsB3C,EAAY4C,QAClCD,KACEA,EAAoBE,OAC0B,GAA5CzxB,MAAMC,QAAQsxB,EAAoBE,SACpCF,EAAoBE,OAASF,EAAoBE,QAGjDF,EAAoBG,MACyB,GAA3C1xB,MAAMC,QAAQsxB,EAAoBG,QACpCH,EAAoBG,MAAQH,EAAoBG,SAYxD53B,EAAQ63B,kBAAoB,SAAUnD,EAAMI,GAC1C,GAAIA,GAAeA,EAAY4C,UAAoDjxB,SAAxCiuB,EAAKC,SAASmD,gBAAgB1kB,MAAqB,CAC5FshB,EAAKI,eACL90B,EAAQq3B,qBAAqB3C,EAAMI,EAEnC,IAAI7kB,GAAQlM,EAAO2wB,EAAKrlB,MAAMY,OAC1BS,EAAM3M,EAAO2wB,EAAKrlB,MAAMqB,KAExBqnB,EAAcrD,EAAKrlB,MAAMqB,IAAMgkB,EAAKrlB,MAAMY,MAC1C+nB,EAAYD,EAAWrD,EAAKC,SAASmD,gBAAgB1kB,KAEzD,IAAI0hB,EAAY4C,SAASE,KAGvB,IAAK,GAFDK,GAAel0B,EAAO2wB,EAAKrlB,MAAMY,OACjCioB,EAAan0B,EAAO2wB,EAAKrlB,MAAMY,OAC1BxK,EAAI,EAAGA,EAAIqvB,EAAY4C,SAASE,KAAKhyB,OAAQH,IAAK,CACzD,GAAI0yB,GAAWrD,EAAY4C,SAASE,KAAKnyB,GAAGwK,MACxCmoB,EAAStD,EAAY4C,SAASE,KAAKnyB,GAAGiL,GAE1CunB,GAAaI,WAAWF,GACxBD,EAAWG,WAAWD,GACVH,EAARhoB,GACFgoB,EAAaI,WAAWF,EAAW,GAEzBD,EAARjoB,GACFioB,EAAWG,WAAWD,EAAS,GAEjCH,EAAaK,aAAa,GAC1BL,EAAaM,QAAQ,GACrBN,EAAaO,QAAQ,GACrBP,EAAaQ,MAAM,GAEnBP,EAAWI,aAAa,GACxBJ,EAAWK,QAAQ,GACnBL,EAAWM,QAAQ,GACnBN,EAAWO,MAAM,GAEAR,EAAbC,GACFA,EAAWG,WAAWD,EAAS,EAGjC,IAAIznB,GAAWunB,EAAaD,CAC5B,IAAe,EAAID,EAAfrnB,EACF,KAGA,MAAsBD,EAAfunB,GACLvD,EAAKI,YAAY1sB,MAAM6H,MAAOgoB,EAAahxB,UAAWyJ,IAAKwnB,EAAWjxB,YACtEgxB,EAAaI,WAAWF,EAAW,GACnCD,EAAWG,WAAWD,EAAS,EAEjC1D,GAAKI,YAAY1sB,MAAM6H,MAAOgoB,EAAahxB,UAAWyJ,IAAKwnB,EAAWjxB,YAK5E,GAAI6tB,EAAY4C,SAASC,MAAO,CAC9B,GAAIM,GAAel0B,EAAO2wB,EAAKrlB,MAAMY,OACjCioB,EAAan0B,EAAO2wB,EAAKrlB,MAAMY,MACnCS,GAAMA,EAAIzJ,SAEV,KAAK,GAAIxB,GAAI,EAAGA,EAAIqvB,EAAY4C,SAASC,MAAM/xB,OAAQH,IAAK,CAC1D,GAAIizB,GAAY5D,EAAY4C,SAASC,MAAMlyB,GAAGwK,MAAM9H,MAAM,KACtDwwB,EAAU7D,EAAY4C,SAASC,MAAMlyB,GAAGiL,IAAIvI,MAAM,IAEtD8vB,GAAaK,aAAa,GAC1BL,EAAaM,QAAQG,EAAU,IAC/BT,EAAaO,QAAQE,EAAU,IAC/BT,EAAaQ,MAAMC,EAAU,IAE7BR,EAAWI,aAAa,GACxBJ,EAAWK,QAAQI,EAAQ,IAC3BT,EAAWM,QAAQG,EAAQ,IAC3BT,EAAWO,MAAME,EAAQ,IAEzBV,EAAeA,EAAahxB,UAC5BixB,EAAaA,EAAWjxB,UAEpB0xB,EAAQ,GAAKD,EAAU,KACzBR,GAAc,MAGhB,IAAIvnB,GAAWunB,EAAaD,CAC5B,IAAe,EAAID,EAAfrnB,EACF,KAKA,KAFAsnB,GAAgB,OAChBC,GAAc,OACSxnB,EAAM,OAAtBunB,GACLvD,EAAKI,YAAY1sB,MAAM6H,MAAOgoB,EAAahxB,UAAWyJ,IAAKwnB,EAAWjxB,YACtEgxB,GAAgB,MAChBC,GAAc,OAMtBl4B,EAAQ44B,iBAAiBlE,EAGzB,IAAImE,GAAc74B,EAAQ84B,SAASpE,EAAKrlB,MAAMY,MAAOykB,EAAKI,aACtDiE,EAAY/4B,EAAQ84B,SAASpE,EAAKrlB,MAAMqB,IAAIgkB,EAAKI,aACjDkE,EAAatE,EAAKrlB,MAAMY,MACxBgpB,EAAWvE,EAAKrlB,MAAMqB,GACA,IAAtBmoB,EAAYK,SAAiBF,EAAwC,GAA3BtE,EAAKrlB,MAAM8pB,aAAuBN,EAAYO,UAAY,EAAIP,EAAYQ,QAAU,GAC1G,GAApBN,EAAUG,SAAmBD,EAAsC,GAAzBvE,EAAKrlB,MAAMiqB,WAAuBP,EAAUK,UAAY,EAAML,EAAUM,QAAU,IACtG,GAAtBR,EAAYK,QAAsC,GAApBH,EAAUG,SAC1CxE,EAAKrlB,MAAMkqB,YAAYP,EAAYC,KAWzCj5B,EAAQ44B,iBAAmB,SAASlE,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB0E,KACK/zB,EAAI,EAAGA,EAAIqvB,EAAYlvB,OAAQH,IACtC,IAAK,GAAI4lB,GAAI,EAAGA,EAAIyJ,EAAYlvB,OAAQylB,IAClC5lB,GAAK4lB,GAA8B,GAAzByJ,EAAYzJ,GAAGrU,QAA2C,GAAzB8d,EAAYrvB,GAAGuR,SAExD8d,EAAYzJ,GAAGpb,OAAS6kB,EAAYrvB,GAAGwK,OAAS6kB,EAAYzJ,GAAG3a,KAAOokB,EAAYrvB,GAAGiL,IACvFokB,EAAYzJ,GAAGrU,QAAS,EAGjB8d,EAAYzJ,GAAGpb,OAAS6kB,EAAYrvB,GAAGwK,OAAS6kB,EAAYzJ,GAAGpb,OAAS6kB,EAAYrvB,GAAGiL,KAC9FokB,EAAYrvB,GAAGiL,IAAMokB,EAAYzJ,GAAG3a,IACpCokB,EAAYzJ,GAAGrU,QAAS,GAGjB8d,EAAYzJ,GAAG3a,KAAOokB,EAAYrvB,GAAGwK,OAAS6kB,EAAYzJ,GAAG3a,KAAOokB,EAAYrvB,GAAGiL,MAC1FokB,EAAYrvB,GAAGwK,MAAQ6kB,EAAYzJ,GAAGpb,MACtC6kB,EAAYzJ,GAAGrU,QAAS,GAMhC,KAAK,GAAIvR,GAAI,EAAGA,EAAIqvB,EAAYlvB,OAAQH,IAClCqvB,EAAYrvB,GAAGuR,UAAW,GAC5BwiB,EAAUpxB,KAAK0sB,EAAYrvB,GAI/BivB,GAAKI,YAAc0E,EACnB9E,EAAKI,YAAYje,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,SAIvBjQ,EAAQy5B,WAAa,SAASC,GAC5B,IAAK,GAAIj0B,GAAG,EAAGA,EAAIi0B,EAAM9zB,OAAQH,IAC/ByK,QAAQC,IAAI1K,EAAG,GAAIlB,MAAKm1B,EAAMj0B,GAAGwK,OAAO,GAAI1L,MAAKm1B,EAAMj0B,GAAGiL,KAAMgpB,EAAMj0B,GAAGwK,MAAOypB,EAAMj0B,GAAGiL,IAAKgpB,EAAMj0B,GAAGuR,SAS3GhX,EAAQ25B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQ/yB,UAC3BxB,EAAI,EAAGA,EAAIm0B,EAAS9E,YAAYlvB,OAAQH,IAAK,CACpD,GAAI2zB,GAAYQ,EAAS9E,YAAYrvB,GAAGwK,MACpCopB,EAAUO,EAAS9E,YAAYrvB,GAAGiL,GACtC,IAAIqpB,GAAgBX,GAA4BC,EAAfU,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAASzG,KAAKlsB,WAAa8yB,GAAgBF,EAAc,CAClG,GAAItpB,GAAYxM,EAAO81B,GACnBI,EAAWl2B,EAAOs1B,EAElB9oB,GAAU2pB,QAAUD,EAASC,OAASN,EAASO,cAAe,EACzD5pB,EAAU6pB,SAAWH,EAASG,QAAUR,EAASS,eAAgB,EACjE9pB,EAAU+pB,aAAeL,EAASK,cAAcV,EAASW,aAAc,GAEhFX,EAASI,QAAUC,EAAS9yB,WAUhCnH,EAAQw6B,eAAiB,SAASZ,GAGhC,IAAK,GAFDE,IAAe,EACfC,EAAeH,EAASI,QAAQ/yB,UAC3BxB,EAAI,EAAGA,EAAIm0B,EAAS9E,YAAYlvB,OAAQH,IAAK,CACpD,GAAI2zB,GAAYQ,EAAS9E,YAAYrvB,GAAGwK,MACpCopB,EAAUO,EAAS9E,YAAYrvB,GAAGiL,GACtC,IAAIqpB,GAAgBX,GAA4BC,EAAfU,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,GAAgBH,EAASzG,KAAKlsB,UAAW,CACnE,GAAIgzB,GAAWl2B,EAAOs1B,EACtBO,GAASI,QAAUC,EAAS9yB,WAWhCnH,EAAQg1B,SAAW,SAASgB,EAAMyE,EAAMrnB,GACtC,GAAI8lB,GAASl5B,EAAQ84B,SAAS2B,EAAMzE,EAAKtB,KAAKI,YACzB,IAAjBoE,EAAOA,SACTuB,EAAOvB,EAAOE,UAGhB,IAAIsB,GAAM16B,EAAQ26B,uBAAuB3E,EAAKtB,KAAKI,YAAakB,EAAK3mB,MAAOorB,GACxE9pB,EAAW+pB,EAAI/pB,QACnB8pB,GAAOC,EAAID,IAEX,IAAIG,GAAa5E,EAAK3mB,MAAMurB,WAAWxnB,EAAOzC,EAC9C,QAAQ8pB,EAAKxzB,UAAY2zB,EAAWzR,QAAUyR,EAAWne,OAY3Dzc,EAAQo1B,OAAS,SAASV,EAAMrlB,EAAOuD,EAAGQ,GACxC,GAAIzC,GAAW3Q,EAAQ66B,kBAAkBnG,EAAKI,YAAazlB,GACvDurB,EAAavrB,EAAMurB,WAAWxnB,EAAOzC,EAEzC,OAAO,IAAIpM,MAAKqO,EAAIgoB,EAAWne,MAAQme,EAAWzR,SAWpDnpB,EAAQ66B,kBAAoB,SAASC,EAAazrB,GAEhD,IAAK,GADDsB,GAAW,EACNlL,EAAI,EAAGA,EAAIq1B,EAAYl1B,OAAQH,IAAK,CAC3C,GAAI2zB,GAAY0B,EAAYr1B,GAAGwK,MAC3BopB,EAAUyB,EAAYr1B,GAAGiL,GAEzB0oB,IAAa/pB,EAAMY,OAASopB,EAAUhqB,EAAMqB,MAC9CC,GAAY0oB,EAAUD,GAG1B,MAAOzoB,IAWT3Q,EAAQ26B,uBAAyB,SAASG,EAAazrB,EAAOorB,GAC5D,GAAI9pB,GAAW,EACXoqB,EAAa,CACjBN,GAAO12B,EAAO02B,GAAMtzB,SAASF,SAE7B,KAAK,GAAIxB,GAAI,EAAGA,EAAIq1B,EAAYl1B,OAAQH,IAAK,CAC3C,GAAI2zB,GAAY0B,EAAYr1B,GAAGwK,MAC3BopB,EAAUyB,EAAYr1B,GAAGiL,GAEzB0oB,IAAa/pB,EAAMY,OAASopB,EAAUhqB,EAAMqB,MAC9CC,GAAa0oB,EAAUD,EACnBqB,GAAQpB,IACV0B,GAAe1B,EAAUD,IAK/B,MADAqB,IAAQM,GACApqB,SAAUA,EAAU8pB,KAAKA,EAAMtR,OAAQ4R,IAYjD/6B,EAAQg7B,mBAAqB,SAASF,EAAaL,EAAMQ,EAAWC,GAClE,GAAIpC,GAAW94B,EAAQ84B,SAAS2B,EAAMK,EACtC,OAAuB,IAAnBhC,EAASI,OACK,EAAZ+B,EACuB,GAArBC,EACKpC,EAASM,WAAaN,EAASO,QAAUoB,GAAQ,EAGjD3B,EAASM,UAAY,EAIL,GAArB8B,EACKpC,EAASO,SAAWoB,EAAO3B,EAASM,WAAa,EAGjDN,EAASO,QAAU,EAKvBoB,GAaXz6B,EAAQ84B,SAAW,SAAS2B,EAAMK,GAEhC,IAAK,GADDhC,IAAW,EACNrzB,EAAI,EAAGA,EAAIq1B,EAAYl1B,OAAQH,IAAK,CAC3C,GAAI2zB,GAAY0B,EAAYr1B,GAAGwK,MAC3BopB,EAAUyB,EAAYr1B,GAAGiL,GAE7B,IAAI+pB,GAAQrB,GAAoBC,EAAPoB,EAAgB,CACvC3B,GAAW,CACX,QAGJ,OAAQI,OAAQJ,EAAUM,UAAWA,EAAWC,QAASA,KAKvD,SAASp5B,GA4Bb,QAAS8B,GAASkO,EAAOS,EAAKyqB,EAAaC,EAAiBC,GAE1Dj7B,KAAK45B,QAAU,EAEf55B,KAAKk7B,WAAY,EACjBl7B,KAAKm7B,UAAY,EACjBn7B,KAAKunB,KAAO,EACZvnB,KAAKqc,MAAQ,EAEbrc,KAAKo7B,YACLp7B,KAAKq7B,UACLr7B,KAAKs7B,UAAY,EAEjBt7B,KAAKu7B,YAAc,EAAO,EAAM,EAAI,IACpCv7B,KAAKw7B,YAAc,IAAO,GAAM,EAAI,GAEpCx7B,KAAKmzB,SAAStjB,EAAOS,EAAKyqB,EAAaC,EAAiBC,GAe1Dt5B,EAASgS,UAAUwf,SAAW,SAAStjB,EAAOS,EAAKyqB,EAAaC,EAAiBC,GAC/Ej7B,KAAK8yB,OAA6BzsB,SAApB40B,EAAY1vB,IAAoBsE,EAAQorB,EAAY1vB,IAClEvL,KAAK+yB,KAA2B1sB,SAApB40B,EAAYjuB,IAAoBsD,EAAM2qB,EAAYjuB,IAE1DhN,KAAK8yB,QAAU9yB,KAAK+yB,OACtB/yB,KAAK8yB,QAAU,IACf9yB,KAAK+yB,MAAQ,GAGX/yB,KAAKk7B,WACPl7B,KAAKy7B,eAAeV,EAAaC,GAEnCh7B,KAAK07B,SAAST,IAOhBt5B,EAASgS,UAAU8nB,eAAiB,SAASV,EAAaC,GAExD,GAAIloB,GAAO9S,KAAK+yB,KAAO/yB,KAAK8yB,OACxB6I,EAAkB,IAAP7oB,EACX8oB,EAAmBb,GAAeY,EAAWX,GAC7Ca,EAAmB92B,KAAKkoB,MAAMloB,KAAKgL,IAAI4rB,GAAU52B,KAAKwuB,MAEtDuI,EAAe,GACfC,EAAkBh3B,KAAK0uB,IAAI,GAAGoI,GAE9BhsB,EAAQ,CACW,GAAnBgsB,IACFhsB,EAAQgsB,EAIV,KAAK,GADDG,IAAgB,EACX32B,EAAIwK,EAAO9K,KAAKklB,IAAI5kB,IAAMN,KAAKklB,IAAI4R,GAAmBx2B,IAAK,CAClE02B,EAAkBh3B,KAAK0uB,IAAI,GAAGpuB,EAC9B,KAAK,GAAI4lB,GAAI,EAAGA,EAAIjrB,KAAKw7B,WAAWh2B,OAAQylB,IAAK,CAC/C,GAAIgR,GAAWF,EAAkB/7B,KAAKw7B,WAAWvQ,EACjD,IAAIgR,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe7Q,CACf,QAGJ,GAAqB,GAAjB+Q,EACF,MAGJh8B,KAAKm7B,UAAYW,EACjB97B,KAAKqc,MAAQ0f,EACb/7B,KAAKunB,KAAOwU,EAAkB/7B,KAAKw7B,WAAWM,IAShDn6B,EAASgS,UAAU+nB,SAAW,SAAST,GACjB50B,SAAhB40B,IACFA,KAEF,IAAIiB,GAAgC71B,SAApB40B,EAAY1vB,IAAoBvL,KAAK8yB,OAAuB,EAAb9yB,KAAKqc,MAAYrc,KAAKw7B,WAAWx7B,KAAKm7B,WAAcF,EAAY1vB,IAC3H4wB,EAA8B91B,SAApB40B,EAAYjuB,IAAoBhN,KAAK+yB,KAAQ/yB,KAAKqc,MAAQrc,KAAKw7B,WAAWx7B,KAAKm7B,WAAcF,EAAYjuB,GAEvHhN,MAAKq7B,UAAgCh1B,SAApB40B,EAAYjuB,IAAoBhN,KAAKo8B,aAAaD,GAAWlB,EAAYjuB,IAC1FhN,KAAKo7B,YAAkC/0B,SAApB40B,EAAY1vB,IAAoBvL,KAAKo8B,aAAaF,GAAajB,EAAY1vB,IAC9FvL,KAAKs7B,UAAYt7B,KAAKo8B,aAAaD,GAAWA,EAAUn8B,KAAKo8B,aAAaF,GAAaA,EACvFl8B,KAAKq8B,YAAcr8B,KAAKq7B,UAAYr7B,KAAKo7B,YAEzCp7B,KAAK45B,QAAU55B,KAAKq7B,WAItB15B,EAASgS,UAAUyoB,aAAe,SAASl1B,GACzC,GAAIo1B,GAAUp1B,EAASA,GAASlH,KAAKqc,MAAQrc,KAAKw7B,WAAWx7B,KAAKm7B,WAClE,OAAIj0B,IAASlH,KAAKqc,MAAQrc,KAAKw7B,WAAWx7B,KAAKm7B,YAAc,GAAOn7B,KAAKqc,MAAQrc,KAAKw7B,WAAWx7B,KAAKm7B,WAC7FmB,EAAWt8B,KAAKqc,MAAQrc,KAAKw7B,WAAWx7B,KAAKm7B,WAG7CmB,GASX36B,EAASgS,UAAU4oB,QAAU,WAC3B,MAAQv8B,MAAK45B,SAAW55B,KAAKo7B,aAM/Bz5B,EAASgS,UAAU8T,KAAO,WACxB,GAAI+J,GAAOxxB,KAAK45B,OAChB55B,MAAK45B,SAAW55B,KAAKunB,KAGjBvnB,KAAK45B,SAAWpI,IAClBxxB,KAAK45B,QAAU55B,KAAK+yB,OAOxBpxB,EAASgS,UAAU6oB,SAAW,WAC5Bx8B,KAAK45B,SAAW55B,KAAKunB,KACrBvnB,KAAKq7B,WAAar7B,KAAKunB,KACvBvnB,KAAKq8B,YAAcr8B,KAAKq7B,UAAYr7B,KAAKo7B,aAS3Cz5B,EAASgS,UAAU6T,WAAa,WAC9B,GAAIoM,GAAc,GAAK7vB,OAAO/D,KAAK45B,SAAShG,YAAY,EACxD,IAAgC,IAA5BA,EAAYptB,QAAQ,MAA0C,IAA5BotB,EAAYptB,QAAQ,KACxD,IAAK,GAAInB,GAAIuuB,EAAYpuB,OAAO,EAAGH,EAAI,EAAGA,IAAK,CAC7C,GAAsB,KAAlBuuB,EAAYvuB,GAGX,CAAA,GAAsB,KAAlBuuB,EAAYvuB,IAA+B,KAAlBuuB,EAAYvuB,GAAW,CACvDuuB,EAAcA,EAAY6I,MAAM,EAAEp3B,EAClC,OAGA,MAPAuuB,EAAcA,EAAY6I,MAAM,EAAEp3B,GAYxC,MAAOuuB,IAWTjyB,EAASgS,UAAUghB,KAAO,aAS1BhzB,EAASgS,UAAU+oB,QAAU,WAC3B,MAAQ18B,MAAK45B,SAAW55B,KAAKqc,MAAQrc,KAAKu7B,WAAWv7B,KAAKm7B,aAAe,GAG3Et7B,EAAOD,QAAU+B,GAKb,SAAS9B,EAAQD,EAASM,GAgB9B,QAAS0B,GAAM0yB,EAAMzlB,GACnB,GAAI8tB,GAAMh5B,IAAS00B,MAAM,GAAGD,QAAQ,GAAGD,QAAQ,GAAGD,aAAa,EAC/Dl4B,MAAK6P,MAAQ8sB,EAAIC,QAAQlpB,IAAI,GAAI,QAAQ7M,UACzC7G,KAAKsQ,IAAMqsB,EAAIC,QAAQlpB,IAAI,EAAG,QAAQ7M,UAEtC7G,KAAKs0B,KAAOA,EACZt0B,KAAK68B,gBAAkB,EACvB78B,KAAK88B,YAAc,EACnB98B,KAAK+4B,cAAe,EACpB/4B,KAAKk5B,YAAa,EAGlBl5B,KAAKg0B,gBACHnkB,MAAO,KACPS,IAAK,KACLuqB,UAAW,aACXkC,UAAU,EACVC,UAAU,EACVzxB,IAAK,KACLyB,IAAK,KACLiwB,QAAS,GACTC,QAAS,UAEXl9B,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBAEpCh0B,KAAK6F,OACHs3B,UAEFn9B,KAAKo9B,aAAe,KAGpBp9B,KAAKs0B,KAAKE,QAAQ5gB,GAAG,YAAa5T,KAAKq9B,aAAa5I,KAAKz0B,OACzDA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,OAAa5T,KAAKs9B,QAAQ7I,KAAKz0B,OACpDA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,UAAa5T,KAAKu9B,WAAW9I,KAAKz0B,OAGvDA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,OAAQ5T,KAAKw9B,QAAQ/I,KAAKz0B,OAG/CA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,aAAmB5T,KAAKy9B,cAAchJ,KAAKz0B,OAChEA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,iBAAmB5T,KAAKy9B,cAAchJ,KAAKz0B,OAGhEA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,QAAS5T,KAAK09B,SAASjJ,KAAKz0B,OACjDA,KAAKs0B,KAAKE,QAAQ5gB,GAAG,QAAS5T,KAAK29B,SAASlJ,KAAKz0B,OAEjDA,KAAKkc,WAAWrN,GAsClB,QAAS+uB,GAAmB/C,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAI30B,WAAU,sBAAwB20B,EAAY,yCA0e5D,QAASgD,GAAYV,EAAOv0B,GAC1B,OACE4J,EAAG2qB,EAAMW,MAAQn9B,EAAKwG,gBAAgByB,GACtC6J,EAAG0qB,EAAMY,MAAQp9B,EAAK8G,eAAemB,IAjlBzC,GAAIjI,GAAOT,EAAoB,GAC3B89B,EAAa99B,EAAoB,IACjCyD,EAASzD,EAAoB,IAC7BoC,EAAYpC,EAAoB,IAChCwB,EAAWxB,EAAoB,GA2DnC0B,GAAM+R,UAAY,GAAIrR,GAkBtBV,EAAM+R,UAAUuI,WAAa,SAAUrN,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnG3N,GAAKiF,gBAAgB0I,EAAQtO,KAAK6O,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjC7O,KAAKmzB,SAAStkB,EAAQgB,MAAOhB,EAAQyB,OA2B3C1O,EAAM+R,UAAUwf,SAAW,SAAStjB,EAAOS,EAAK0lB,GAa5C,QAASvO,KACP,IAAKjT,EAAG3O,MAAMs3B,MAAMc,SAAU,CAC5B,GAAItB,IAAM,GAAIx4B,OAAO0C,UACjBwzB,EAAOsC,EAAMuB,EACbC,EAAO9D,EAAO9pB,EACdlF,EAAK8yB,GAAmB,OAAXrL,EAAmBA,EAASnyB,EAAK0P,cAAcgqB,EAAM+D,EAAWtL,EAAQviB,GACrFjE,EAAK6xB,GAAiB,OAATpL,EAAmBA,EAASpyB,EAAK0P,cAAcgqB,EAAMgE,EAAStL,EAAMxiB,EAErF+tB,GAAU9pB,EAAG2kB,YAAY9tB,EAAGiB,GAC5B5K,EAAS+1B,kBAAkBjjB,EAAG8f,KAAM9f,EAAG3F,QAAQ6lB,aAC/C6J,EAAaA,GAAcD,EACvBA,GACF9pB,EAAG8f,KAAKE,QAAQrH,KAAK,eAAgBtd,MAAO,GAAI1L,MAAKqQ,EAAG3E,OAAQS,IAAK,GAAInM,MAAKqQ,EAAGlE,OAG/E6tB,EACEI,GACF/pB,EAAG8f,KAAKE,QAAQrH,KAAK,gBAAiBtd,MAAO,GAAI1L,MAAKqQ,EAAG3E,OAAQS,IAAK,GAAInM,MAAKqQ,EAAGlE,OAMpFkE,EAAG4oB,aAAevP,WAAWpG,EAAM,KAnC3C,GAAIqL,GAAkBzsB,QAATwJ,EAAqBlP,EAAK+F,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtEksB,EAAgB1sB,QAAPiK,EAAqB3P,EAAK+F,QAAQ4J,EAAK,QAAQzJ,UAAc,IAG1E,IAFA7G,KAAKw+B,mBAEDxI,EAAS,CACX,GAAIxhB,GAAKxU,KACLo+B,EAAYp+B,KAAK6P,MACjBwuB,EAAUr+B,KAAKsQ,IACfC,EAA8B,gBAAZylB,GAAuBA,EAAU,IACnDkI,GAAW,GAAI/5B,OAAO0C,UACtB03B,GAAa,CA8BjB,OAAO9W,KAGP,GAAI6W,GAAUt+B,KAAKm5B,YAAYrG,EAAQC,EAEvC,IADArxB,EAAS+1B,kBAAkBz3B,KAAKs0B,KAAMt0B,KAAK6O,QAAQ6lB,aAC/C4J,EAAS,CACX,GAAInqB,IAAUtE,MAAO,GAAI1L,MAAKnE,KAAK6P,OAAQS,IAAK,GAAInM,MAAKnE,KAAKsQ,KAC9DtQ,MAAKs0B,KAAKE,QAAQrH,KAAK,cAAehZ,GACtCnU,KAAKs0B,KAAKE,QAAQrH,KAAK,eAAgBhZ,KAS7CvS,EAAM+R,UAAU6qB,iBAAmB,WAC7Bx+B,KAAKo9B,eACP5P,aAAaxtB,KAAKo9B,cAClBp9B,KAAKo9B,aAAe,OAaxBx7B,EAAM+R,UAAUwlB,YAAc,SAAStpB,EAAOS,GAC5C,GAIIob,GAJA+S,EAAqB,MAAT5uB,EAAiBlP,EAAK+F,QAAQmJ,EAAO,QAAQhJ,UAAY7G,KAAK6P,MAC1E6uB,EAAmB,MAAPpuB,EAAiB3P,EAAK+F,QAAQ4J,EAAK,QAAQzJ,UAAc7G,KAAKsQ,IAC1EtD,EAA2B,MAApBhN,KAAK6O,QAAQ7B,IAAerM,EAAK+F,QAAQ1G,KAAK6O,QAAQ7B,IAAK,QAAQnG,UAAY,KACtF0E,EAA2B,MAApBvL,KAAK6O,QAAQtD,IAAe5K,EAAK+F,QAAQ1G,KAAK6O,QAAQtD,IAAK,QAAQ1E,UAAY,IAI1F,IAAItC,MAAMk6B,IAA0B,OAAbA,EACrB,KAAM,IAAI/6B,OAAM,kBAAoBmM,EAAQ,IAE9C,IAAItL,MAAMm6B,IAAsB,OAAXA,EACnB,KAAM,IAAIh7B,OAAM,gBAAkB4M,EAAM,IAyC1C,IArCamuB,EAATC,IACFA,EAASD,GAIC,OAARlzB,GACaA,EAAXkzB,IACF/S,EAAQngB,EAAMkzB,EACdA,GAAY/S,EACZgT,GAAUhT,EAGC,MAAP1e,GACE0xB,EAAS1xB,IACX0xB,EAAS1xB,IAOL,OAARA,GACE0xB,EAAS1xB,IACX0e,EAAQgT,EAAS1xB,EACjByxB,GAAY/S,EACZgT,GAAUhT,EAGC,MAAPngB,GACaA,EAAXkzB,IACFA,EAAWlzB,IAOU,OAAzBvL,KAAK6O,QAAQouB,QAAkB,CACjC,GAAIA,GAAUxY,WAAWzkB,KAAK6O,QAAQouB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArByB,EAASD,IACPz+B,KAAKsQ,IAAMtQ,KAAK6P,QAAWotB,GAE9BwB,EAAWz+B,KAAK6P,MAChB6uB,EAAS1+B,KAAKsQ,MAIdob,EAAQuR,GAAWyB,EAASD,GAC5BA,GAAY/S,EAAO,EACnBgT,GAAUhT,EAAO,IAMvB,GAA6B,OAAzB1rB,KAAK6O,QAAQquB,QAAkB,CACjC,GAAIA,GAAUzY,WAAWzkB,KAAK6O,QAAQquB,QACxB,GAAVA,IACFA,EAAU,GAEPwB,EAASD,EAAYvB,IACnBl9B,KAAKsQ,IAAMtQ,KAAK6P,QAAWqtB,GAE9BuB,EAAWz+B,KAAK6P,MAChB6uB,EAAS1+B,KAAKsQ,MAIdob,EAASgT,EAASD,EAAYvB,EAC9BuB,GAAY/S,EAAO,EACnBgT,GAAUhT,EAAO,IAKvB,GAAI4S,GAAWt+B,KAAK6P,OAAS4uB,GAAYz+B,KAAKsQ,KAAOouB,CAKrD,OAHA1+B,MAAK6P,MAAQ4uB,EACbz+B,KAAKsQ,IAAMouB,EAEJJ,GAOT18B,EAAM+R,UAAUgrB,SAAW,WACzB,OACE9uB,MAAO7P,KAAK6P,MACZS,IAAKtQ,KAAKsQ,MAUd1O,EAAM+R,UAAU6mB,WAAa,SAAUxnB,EAAO4rB,GAC5C,MAAOh9B,GAAM44B,WAAWx6B,KAAK6P,MAAO7P,KAAKsQ,IAAK0C,EAAO4rB,IAWvDh9B,EAAM44B,WAAa,SAAU3qB,EAAOS,EAAK0C,EAAO4rB,GAI9C,MAHoBv4B,UAAhBu4B,IACFA,EAAc,GAEH,GAAT5rB,GAAe1C,EAAMT,GAAS,GAE9BkZ,OAAQlZ,EACRwM,MAAOrJ,GAAS1C,EAAMT,EAAQ+uB,KAK9B7V,OAAQ,EACR1M,MAAO,IAUbza,EAAM+R,UAAU0pB,aAAe,WAC7Br9B,KAAK68B,gBAAkB,EACvB78B,KAAK6+B,cAAgB,EAEhB7+B,KAAK6O,QAAQkuB,UAIb/8B,KAAK6F,MAAMs3B,MAAM2B,gBAEtB9+B,KAAK6F,MAAMs3B,MAAMttB,MAAQ7P,KAAK6P,MAC9B7P,KAAK6F,MAAMs3B,MAAM7sB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAK6F,MAAMs3B,MAAMc,UAAW,EAExBj+B,KAAKs0B,KAAK9E,IAAI9vB,OAChBM,KAAKs0B,KAAK9E,IAAI9vB,KAAK4N,MAAMif,OAAS,UAStC3qB,EAAM+R,UAAU2pB,QAAU,SAAUh0B,GAElC,GAAKtJ,KAAK6O,QAAQkuB,SAAlB,CACA,GAAIlC,GAAY76B,KAAK6O,QAAQgsB,SAK7B,IAJA+C,EAAkB/C,GAIb76B,KAAK6F,MAAMs3B,MAAM2B,cAAtB,CAEA,GAAI5Q,GAAsB,cAAb2M,EAA6BvxB,EAAMy1B,QAAQC,OAAS11B,EAAMy1B,QAAQE,MAC/E/Q,IAASluB,KAAK68B,eACd,IAAIzK,GAAYpyB,KAAK6F,MAAMs3B,MAAM7sB,IAAMtQ,KAAK6F,MAAMs3B,MAAMttB,MAIpDU,EAAW7O,EAAS+4B,kBAAkBz6B,KAAKs0B,KAAKI,YAAa10B,KACjEoyB,IAAY7hB,CAGZ,IAAIyC,GAAsB,cAAb6nB,EAA6B76B,KAAKs0B,KAAKC,SAAShJ,OAAOvY,MAAQhT,KAAKs0B,KAAKC,SAAShJ,OAAOtY,OAClGisB,GAAahR,EAAQlb,EAAQof,EAC7BqM,EAAWz+B,KAAK6F,MAAMs3B,MAAMttB,MAAQqvB,EACpCR,EAAS1+B,KAAK6F,MAAMs3B,MAAM7sB,IAAM4uB,EAIhCC,EAAYz9B,EAASk5B,mBAAmB56B,KAAKs0B,KAAKI,YAAa+J,EAAUz+B,KAAK6+B,cAAc3Q,GAAO,GACnGkR,EAAU19B,EAASk5B,mBAAmB56B,KAAKs0B,KAAKI,YAAagK,EAAQ1+B,KAAK6+B,cAAc3Q,GAAO,EACnG,IAAIiR,GAAaV,GAAYW,GAAWV,EAKtC,MAJA1+B,MAAK68B,iBAAmB3O,EACxBluB,KAAK6F,MAAMs3B,MAAMttB,MAAQsvB,EACzBn/B,KAAK6F,MAAMs3B,MAAM7sB,IAAM8uB,MACvBp/B,MAAKs9B,QAAQh0B,EAIftJ,MAAK6+B,cAAgB3Q,EACrBluB,KAAKm5B,YAAYsF,EAAUC,GAG3B1+B,KAAKs0B,KAAKE,QAAQrH,KAAK,eACrBtd,MAAO,GAAI1L,MAAKnE,KAAK6P,OACrBS,IAAO,GAAInM,MAAKnE,KAAKsQ,UASzB1O,EAAM+R,UAAU4pB,WAAa,WAEtBv9B,KAAK6O,QAAQkuB,UAIb/8B,KAAK6F,MAAMs3B,MAAM2B,gBAEtB9+B,KAAK6F,MAAMs3B,MAAMc,UAAW,EACxBj+B,KAAKs0B,KAAK9E,IAAI9vB,OAChBM,KAAKs0B,KAAK9E,IAAI9vB,KAAK4N,MAAMif,OAAS,QAIpCvsB,KAAKs0B,KAAKE,QAAQrH,KAAK,gBACrBtd,MAAO,GAAI1L,MAAKnE,KAAK6P,OACrBS,IAAO,GAAInM,MAAKnE,KAAKsQ,SAUzB1O,EAAM+R,UAAU8pB,cAAgB,SAASn0B,GAEvC,GAAMtJ,KAAK6O,QAAQmuB,UAAYh9B,KAAK6O,QAAQkuB,SAA5C,CAGA,GAAI7O,GAAQ,CAYZ,IAXI5kB,EAAM6kB,WACRD,EAAQ5kB,EAAM6kB,WAAa,IAClB7kB,EAAM8kB,SAGfF,GAAS5kB,EAAM8kB,OAAS,GAMtBF,EAAO,CAKT,GAAI7R,EAEFA,GADU,EAAR6R,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAI6Q,GAAUf,EAAWqB,YAAYr/B,KAAMsJ,GACvCg2B,EAAUzB,EAAWkB,EAAQxT,OAAQvrB,KAAKs0B,KAAK9E,IAAIjE,QACnDgU,EAAcv/B,KAAKw/B,eAAeF,EAEtCt/B,MAAKy/B,KAAKpjB,EAAOkjB,EAAarR,GAKhC5kB,EAAMD,mBAORzH,EAAM+R,UAAU+pB,SAAW,WACzB19B,KAAK6F,MAAMs3B,MAAMttB,MAAQ7P,KAAK6P,MAC9B7P,KAAK6F,MAAMs3B,MAAM7sB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAK6F,MAAMs3B,MAAM2B,eAAgB,EACjC9+B,KAAK6F,MAAMs3B,MAAM5R,OAAS,KAC1BvrB,KAAK88B,YAAc,EACnB98B,KAAK68B,gBAAkB,GAOzBj7B,EAAM+R,UAAU6pB,QAAU,WACxBx9B,KAAK6F,MAAMs3B,MAAM2B,eAAgB,GAQnCl9B,EAAM+R,UAAUgqB,SAAW,SAAUr0B,GAEnC,GAAMtJ,KAAK6O,QAAQmuB,UAAYh9B,KAAK6O,QAAQkuB,WAE5C/8B,KAAK6F,MAAMs3B,MAAM2B,eAAgB,EAE7Bx1B,EAAMy1B,QAAQW,QAAQl6B,OAAS,GAAG,CAC/BxF,KAAK6F,MAAMs3B,MAAM5R,SACpBvrB,KAAK6F,MAAMs3B,MAAM5R,OAASsS,EAAWv0B,EAAMy1B,QAAQxT,OAAQvrB,KAAKs0B,KAAK9E,IAAIjE,QAG3E,IAAIlP,GAAQ,GAAK/S,EAAMy1B,QAAQ1iB,MAAQrc,KAAK88B,aACxCvR,EAASvrB,KAAKw/B,eAAex/B,KAAK6F,MAAMs3B,MAAM5R,QAE9CoU,EAAiBj+B,EAAS+4B,kBAAkBz6B,KAAKs0B,KAAKI,YAAa10B,MAGnEy+B,EAAWlT,GAAUvrB,KAAK6F,MAAMs3B,MAAMttB,MAAQ0b,GAAUlP,EACxDqiB,EAAUnT,EAAOoU,GAAmB3/B,KAAK6F,MAAMs3B,MAAM7sB,KAAOib,EAAOoU,IAAmBtjB,CAG1Frc,MAAK+4B,aAAe,EAAI1c,EAAQ,GAAI,GAAQ,EAC5Crc,KAAKk5B,WAAe7c,EAAQ,EAAI,GAAI,GAAQ,CAE5C,IAAI8iB,GAAYz9B,EAASk5B,mBAAmB56B,KAAKs0B,KAAKI,YAAa+J,EAAU,EAAIpiB,GAAO,GACpF+iB,EAAU19B,EAASk5B,mBAAmB56B,KAAKs0B,KAAKI,YAAagK,EAAQriB,EAAQ,GAAG,IAChF8iB,GAAaV,GAAYW,GAAWV,KACtC1+B,KAAK6F,MAAMs3B,MAAMttB,MAAQsvB,EACzBn/B,KAAK6F,MAAMs3B,MAAM7sB,IAAM8uB,EACvBp/B,KAAK88B,YAAc,EAAIxzB,EAAMy1B,QAAQ1iB,MACrCoiB,EAAWU,EACXT,EAASU,GAGXp/B,KAAKmzB,SAASsL,EAAUC,GAExB1+B,KAAK+4B,cAAe,EACpB/4B,KAAKk5B,YAAa,IAUtBt3B,EAAM+R,UAAU6rB,eAAiB,SAAUF,GACzC,GAAI9E,GACAK,EAAY76B,KAAK6O,QAAQgsB,SAI7B,IAFA+C,EAAkB/C,GAED,cAAbA,EAA2B,CAC7B,GAAI7nB,GAAQhT,KAAKs0B,KAAKC,SAAShJ,OAAOvY,MAClCzC,EAAW7O,EAAS+4B,kBAAkBz6B,KAAKs0B,KAAKI,YAAa10B,KAIjE,OAFAw6B,GAAax6B,KAAKw6B,WAAWxnB,EAAOzC,GAE7B+uB,EAAQ9sB,EAAIgoB,EAAWne,MAAQme,EAAWzR,OAGjD,GAAI9V,GAASjT,KAAKs0B,KAAKC,SAAShJ,OAAOtY,MAEvC,OADAunB,GAAax6B,KAAKw6B,WAAWvnB,GACtBqsB,EAAQ7sB,EAAI+nB,EAAWne,MAAQme,EAAWzR,QA4BrDnnB,EAAM+R,UAAU8rB,KAAO,SAASpjB,EAAOkP,EAAQ2C,GAE/B,MAAV3C,IACFA,GAAUvrB,KAAK6P,MAAQ7P,KAAKsQ,KAAO,EAGrC,IAAIqvB,GAAiBj+B,EAAS+4B,kBAAkBz6B,KAAKs0B,KAAKI,YAAa10B,MAGnEy+B,EAAWlT,GAAUvrB,KAAK6P,MAAQ0b,GAAUlP,EAC5CqiB,EAAYnT,EAAOoU,GAAmB3/B,KAAKsQ,KAAOib,EAAOoU,IAAmBtjB,CAEhFrc,MAAK+4B,aAAe7K,EAAQ,GAAI,GAAQ,EACxCluB,KAAKk5B,YAAchL,EAAS,GAAI,GAAQ,CACxC,IAAIiR,GAAYz9B,EAASk5B,mBAAmB56B,KAAKs0B,KAAKI,YAAa+J,EAAUvQ,GAAO,GAChFkR,EAAU19B,EAASk5B,mBAAmB56B,KAAKs0B,KAAKI,YAAagK,GAASxQ,GAAO,IAC7EiR,GAAaV,GAAYW,GAAWV,KACtCD,EAAWU,EACXT,EAASU,GAGXp/B,KAAKmzB,SAASsL,EAAUC,GAExB1+B,KAAK+4B,cAAe,EACpB/4B,KAAKk5B,YAAa,GAWpBt3B,EAAM+R,UAAUisB,KAAO,SAAS1R,GAE9B,GAAIxC,GAAQ1rB,KAAKsQ,IAAMtQ,KAAK6P,MAGxB4uB,EAAWz+B,KAAK6P,MAAQ6b,EAAOwC,EAC/BwQ,EAAS1+B,KAAKsQ,IAAMob,EAAOwC,CAI/BluB,MAAK6P,MAAQ4uB,EACbz+B,KAAKsQ,IAAMouB,GAOb98B,EAAM+R,UAAUsT,OAAS,SAASA,GAChC,GAAIsE,IAAUvrB,KAAK6P,MAAQ7P,KAAKsQ,KAAO,EAEnCob,EAAOH,EAAStE,EAGhBwX,EAAWz+B,KAAK6P,MAAQ6b,EACxBgT,EAAS1+B,KAAKsQ,IAAMob,CAExB1rB,MAAKmzB,SAASsL,EAAUC,IAG1B7+B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,GAGrB,GAAIigC,GAAU,IAMdjgC,GAAQkgC,aAAe,SAAS99B,GAC9BA,EAAMyU,KAAK,SAAUrR,EAAGa,GACtB,MAAOb,GAAE+N,KAAKtD,MAAQ5J,EAAEkN,KAAKtD,SASjCjQ,EAAQmgC,WAAa,SAAS/9B,GAC5BA,EAAMyU,KAAK,SAAUrR,EAAGa,GACtB,GAAI+5B,GAAS,OAAS56B,GAAE+N,KAAQ/N,EAAE+N,KAAK7C,IAAMlL,EAAE+N,KAAKtD,MAChDowB,EAAS,OAASh6B,GAAEkN,KAAQlN,EAAEkN,KAAK7C,IAAMrK,EAAEkN,KAAKtD,KAEpD,OAAOmwB,GAAQC,KAenBrgC,EAAQiC,MAAQ,SAASG,EAAOkX,EAAQgnB,GACtC,GAAI76B,GAAG86B,CAEP,IAAID,EAEF,IAAK76B,EAAI,EAAG86B,EAAOn+B,EAAMwD,OAAY26B,EAAJ96B,EAAUA,IACzCrD,EAAMqD,GAAGqC,IAAM,IAKnB,KAAKrC,EAAI,EAAG86B,EAAOn+B,EAAMwD,OAAY26B,EAAJ96B,EAAUA,IAAK,CAC9C,GAAI0P,GAAO/S,EAAMqD,EACjB,IAAiB,OAAb0P,EAAKrN,IAAc,CAErBqN,EAAKrN,IAAMwR,EAAOknB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXpV,EAAI,EAAGqV,EAAKt+B,EAAMwD,OAAY86B,EAAJrV,EAAQA,IAAK,CAC9C,GAAIxlB,GAAQzD,EAAMipB,EAClB,IAAkB,OAAdxlB,EAAMiC,KAAgBjC,IAAUsP,GAAgC,GAAxBtP,EAAM86B,gBAA2B3gC,EAAQ4gC,UAAUzrB,EAAMtP,EAAOyT,EAAOnE,MAAO,CACxHsrB,EAAgB56B,CAChB,QAIiB,MAAjB46B,IAEFtrB,EAAKrN,IAAM24B,EAAc34B,IAAM24B,EAAcptB,OAASiG,EAAOnE,KAAK8P,gBAE7Dwb,MAafzgC,EAAQ6gC,QAAU,SAASz+B,EAAOkX,EAAQwnB,GACxC,GAAIr7B,GAAG86B,CAGP,KAAK96B,EAAI,EAAG86B,EAAOn+B,EAAMwD,OAAY26B,EAAJ96B,EAAUA,IAEvCrD,EAAMqD,GAAGqC,IADoBrB,SAA3BrE,EAAMqD,GAAG8N,KAAKwtB,SACDznB,EAAOknB,MAAQM,EAAU1+B,EAAMqD,GAAG8N,KAAKwtB,UAAU1tB,OAASiG,EAAOnE,KAAK8P,UAAY7iB,EAAMqD,GAAG8N,KAAKwtB,SAGhGznB,EAAOknB,MAe5BxgC,EAAQ4gC,UAAY,SAASp7B,EAAGa,EAAGiT,GACjC,MAAS9T,GAAEkC,KAAO4R,EAAO0L,WAAaib,EAAkB55B,EAAEqB,KAAOrB,EAAE+M,OAC9D5N,EAAEkC,KAAOlC,EAAE4N,MAAQkG,EAAO0L,WAAaib,EAAW55B,EAAEqB,MACpDlC,EAAEsC,IAAMwR,EAAO2L,SAAWgb,EAAyB55B,EAAEyB,IAAMzB,EAAEgN,QAC7D7N,EAAEsC,IAAMtC,EAAE6N,OAASiG,EAAO2L,SAAWgb,EAAa55B,EAAEyB,MAMvD,SAAS7H,EAAQD,EAASM,GA+B9B,QAAS4B,GAAS+N,EAAOS,EAAKyqB,EAAarG,GAEzC10B,KAAK45B,QAAU,GAAIz1B,MACnBnE,KAAK8yB,OAAS,GAAI3uB,MAClBnE,KAAK+yB,KAAO,GAAI5uB,MAEhBnE,KAAKk7B,WAAa,EAClBl7B,KAAKqc,MAAQva,EAAS8+B,MAAMC,IAC5B7gC,KAAKunB,KAAO,EAGZvnB,KAAKmzB,SAAStjB,EAAOS,EAAKyqB,GAG1B/6B,KAAKm6B,aAAc,EACnBn6B,KAAKi6B,eAAgB,EACrBj6B,KAAK+5B,cAAe,EACpB/5B,KAAK00B,YAAcA,EACCruB,SAAhBquB,IACF10B,KAAK00B,gBAhDT,GAAI/wB,GAASzD,EAAoB,IAC7BwB,EAAWxB,EAAoB,GAoDnC4B,GAAS8+B,OACPE,YAAa,EACbC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNJ,IAAK,EACLK,QAAS,EACTC,MAAO,EACPC,KAAM,GAcRt/B,EAAS6R,UAAUwf,SAAW,SAAStjB,EAAOS,EAAKyqB,GACjD,KAAMlrB,YAAiB1L,OAAWmM,YAAenM,OAC/C,KAAO,+CAGTnE,MAAK8yB,OAAmBzsB,QAATwJ,EAAsB,GAAI1L,MAAK0L,EAAMhJ,WAAa,GAAI1C,MACrEnE,KAAK+yB,KAAe1sB,QAAPiK,EAAoB,GAAInM,MAAKmM,EAAIzJ,WAAa,GAAI1C,MAE3DnE,KAAKk7B,WACPl7B,KAAKy7B,eAAeV,IAOxBj5B,EAAS6R,UAAU0tB,MAAQ,WACzBrhC,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK8yB,OAAOjsB,WACpC7G,KAAKo8B,gBAOPt6B,EAAS6R,UAAUyoB,aAAe,WAIhC,OAAQp8B,KAAKqc,OACX,IAAKva,GAAS8+B,MAAMQ,KAClBphC,KAAK45B,QAAQ0H,YAAYthC,KAAKunB,KAAOxiB,KAAKC,MAAMhF,KAAK45B,QAAQ2H,cAAgBvhC,KAAKunB,OAClFvnB,KAAK45B,QAAQ4H,SAAS,EACxB,KAAK1/B,GAAS8+B,MAAMO,MAAcnhC,KAAK45B,QAAQ6H,QAAQ,EACvD,KAAK3/B,GAAS8+B,MAAMC,IACpB,IAAK/+B,GAAS8+B,MAAMM,QAAclhC,KAAK45B,QAAQ8H,SAAS,EACxD,KAAK5/B,GAAS8+B,MAAMK,KAAcjhC,KAAK45B,QAAQ+H,WAAW,EAC1D,KAAK7/B,GAAS8+B,MAAMI,OAAchhC,KAAK45B,QAAQgI,WAAW,EAC1D,KAAK9/B,GAAS8+B,MAAMG,OAAc/gC,KAAK45B,QAAQiI,gBAAgB,GAIjE,GAAiB,GAAb7hC,KAAKunB,KAEP,OAAQvnB,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAAc9gC,KAAK45B,QAAQiI,gBAAgB7hC,KAAK45B,QAAQkI,kBAAoB9hC,KAAK45B,QAAQkI,kBAAoB9hC,KAAKunB,KAAQ,MAC9I,KAAKzlB,GAAS8+B,MAAMG,OAAc/gC,KAAK45B,QAAQgI,WAAW5hC,KAAK45B,QAAQmI,aAAe/hC,KAAK45B,QAAQmI,aAAe/hC,KAAKunB,KAAO,MAC9H,KAAKzlB,GAAS8+B,MAAMI,OAAchhC,KAAK45B,QAAQ+H,WAAW3hC,KAAK45B,QAAQoI,aAAehiC,KAAK45B,QAAQoI,aAAehiC,KAAKunB,KAAO,MAC9H,KAAKzlB,GAAS8+B,MAAMK,KAAcjhC,KAAK45B,QAAQ8H,SAAS1hC,KAAK45B,QAAQqI,WAAajiC,KAAK45B,QAAQqI,WAAajiC,KAAKunB,KAAO,MACxH,KAAKzlB,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IAAc7gC,KAAK45B,QAAQ6H,QAASzhC,KAAK45B,QAAQsI,UAAU,GAAMliC,KAAK45B,QAAQsI,UAAU,GAAKliC,KAAKunB,KAAO,EAAI,MACjI,KAAKzlB,GAAS8+B,MAAMO,MAAcnhC,KAAK45B,QAAQ4H,SAASxhC,KAAK45B,QAAQuI,WAAaniC,KAAK45B,QAAQuI,WAAaniC,KAAKunB,KAAQ,MACzH,KAAKzlB,GAAS8+B,MAAMQ,KAAcphC,KAAK45B,QAAQ0H,YAAYthC,KAAK45B,QAAQ2H,cAAgBvhC,KAAK45B,QAAQ2H,cAAgBvhC,KAAKunB,QAUhIzlB,EAAS6R,UAAU4oB,QAAU,WAC3B,MAAQv8B,MAAK45B,QAAQ/yB,WAAa7G,KAAK+yB,KAAKlsB,WAM9C/E,EAAS6R,UAAU8T,KAAO,WACxB,GAAI+J,GAAOxxB,KAAK45B,QAAQ/yB,SAIxB,IAAI7G,KAAK45B,QAAQuI,WAAa,EAC5B,OAAQniC,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAElB9gC,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK45B,QAAQ/yB,UAAY7G,KAAKunB,KAAO,MAC/D,KAAKzlB,GAAS8+B,MAAMG,OAAc/gC,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK45B,QAAQ/yB,UAAwB,IAAZ7G,KAAKunB,KAAc,MACtG,KAAKzlB,GAAS8+B,MAAMI,OAAchhC,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK45B,QAAQ/yB,UAAwB,IAAZ7G,KAAKunB,KAAc,GAAK,MAC3G,KAAKzlB,GAAS8+B,MAAMK,KAClBjhC,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK45B,QAAQ/yB,UAAwB,IAAZ7G,KAAKunB,KAAc,GAAK,GAEzE,IAAInc,GAAIpL,KAAK45B,QAAQqI,UACrBjiC,MAAK45B,QAAQ8H,SAASt2B,EAAKA,EAAIpL,KAAKunB,KACpC,MACF,KAAKzlB,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IAAc7gC,KAAK45B,QAAQ6H,QAAQzhC,KAAK45B,QAAQsI,UAAYliC,KAAKunB,KAAO,MAC5F,KAAKzlB,GAAS8+B,MAAMO,MAAcnhC,KAAK45B,QAAQ4H,SAASxhC,KAAK45B,QAAQuI,WAAaniC,KAAKunB,KAAO,MAC9F,KAAKzlB,GAAS8+B,MAAMQ,KAAcphC,KAAK45B,QAAQ0H,YAAYthC,KAAK45B,QAAQ2H,cAAgBvhC,KAAKunB,UAK/F,QAAQvnB,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAAc9gC,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK45B,QAAQ/yB,UAAY7G,KAAKunB,KAAO,MAC/F,KAAKzlB,GAAS8+B,MAAMG,OAAc/gC,KAAK45B,QAAQgI,WAAW5hC,KAAK45B,QAAQmI,aAAe/hC,KAAKunB,KAAO,MAClG,KAAKzlB,GAAS8+B,MAAMI,OAAchhC,KAAK45B,QAAQ+H,WAAW3hC,KAAK45B,QAAQoI,aAAehiC,KAAKunB,KAAO,MAClG,KAAKzlB,GAAS8+B,MAAMK,KAAcjhC,KAAK45B,QAAQ8H,SAAS1hC,KAAK45B,QAAQqI,WAAajiC,KAAKunB,KAAO,MAC9F,KAAKzlB,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IAAc7gC,KAAK45B,QAAQ6H,QAAQzhC,KAAK45B,QAAQsI,UAAYliC,KAAKunB,KAAO,MAC5F,KAAKzlB,GAAS8+B,MAAMO,MAAcnhC,KAAK45B,QAAQ4H,SAASxhC,KAAK45B,QAAQuI,WAAaniC,KAAKunB,KAAO,MAC9F,KAAKzlB,GAAS8+B,MAAMQ,KAAcphC,KAAK45B,QAAQ0H,YAAYthC,KAAK45B,QAAQ2H,cAAgBvhC,KAAKunB,MAKjG,GAAiB,GAAbvnB,KAAKunB,KAEP,OAAQvnB,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAAiB9gC,KAAK45B,QAAQkI,kBAAoB9hC,KAAKunB,MAAMvnB,KAAK45B,QAAQiI,gBAAgB,EAAK,MACnH,KAAK//B,GAAS8+B,MAAMG,OAAiB/gC,KAAK45B,QAAQmI,aAAe/hC,KAAKunB,MAAMvnB,KAAK45B,QAAQgI,WAAW,EAAK,MACzG,KAAK9/B,GAAS8+B,MAAMI,OAAiBhhC,KAAK45B,QAAQoI,aAAehiC,KAAKunB,MAAMvnB,KAAK45B,QAAQ+H,WAAW,EAAK,MACzG,KAAK7/B,GAAS8+B,MAAMK,KAAiBjhC,KAAK45B,QAAQqI,WAAajiC,KAAKunB,MAAMvnB,KAAK45B,QAAQ8H,SAAS,EAAK,MACrG,KAAK5/B,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IAAiB7gC,KAAK45B,QAAQsI,UAAYliC,KAAKunB,KAAK,GAAGvnB,KAAK45B,QAAQ6H,QAAQ,EAAI,MACpG,KAAK3/B,GAAS8+B,MAAMO,MAAiBnhC,KAAK45B,QAAQuI,WAAaniC,KAAKunB,MAAMvnB,KAAK45B,QAAQ4H,SAAS,EAAK,MACrG,KAAK1/B,GAAS8+B,MAAMQ,MAMpBphC,KAAK45B,QAAQ/yB,WAAa2qB,IAC5BxxB,KAAK45B,QAAU,GAAIz1B,MAAKnE,KAAK+yB,KAAKlsB,YAGpCnF,EAAS63B,oBAAoBv5B,KAAMwxB,IAQrC1vB,EAAS6R,UAAU6T,WAAa,WAC9B,MAAOxnB,MAAK45B,SAgBd93B,EAAS6R,UAAUyuB,SAAW,SAASC,EAAUC,GAC/CtiC,KAAKqc,MAAQgmB,EAETC,EAAU,IACZtiC,KAAKunB,KAAO+a,GAGdtiC,KAAKk7B,WAAY,GAOnBp5B,EAAS6R,UAAU4uB,aAAe,SAAUC,GAC1CxiC,KAAKk7B,UAAYsH,GAQnB1gC,EAAS6R,UAAU8nB,eAAiB,SAASV,GAC3C,GAAmB10B,QAAf00B,EAAJ,CAIA,GAAI0H,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgB1H,IAAqB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,KACjF,IAATkb,EAAe1H,IAAsB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,KACjF,IAATkb,EAAe1H,IAAsB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,KACjF,GAATkb,EAAc1H,IAAuB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,IACjF,GAATkb,EAAc1H,IAAuB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,IACjF,EAATkb,EAAa1H,IAAwB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,GAC1Fkb,EAAW1H,IAA0B/6B,KAAKqc,MAAQva,EAAS8+B,MAAMQ,KAAaphC,KAAKunB,KAAO,GAChF,EAAVmb,EAAc3H,IAAuB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMO,MAAanhC,KAAKunB,KAAO,GAC1Fmb,EAAY3H,IAAyB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMO,MAAanhC,KAAKunB,KAAO,GAClF,EAARob,EAAY5H,IAAyB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMC,IAAa7gC,KAAKunB,KAAO,GAClF,EAARob,EAAY5H,IAAyB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMC,IAAa7gC,KAAKunB,KAAO,GAC1Fob,EAAU5H,IAA2B/6B,KAAKqc,MAAQva,EAAS8+B,MAAMC,IAAa7gC,KAAKunB,KAAO,GAC1Fob,EAAQ,EAAI5H,IAAyB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMM,QAAalhC,KAAKunB,KAAO,GACjF,EAATqb,EAAa7H,IAAwB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMK,KAAajhC,KAAKunB,KAAO,GAC1Fqb,EAAW7H,IAA0B/6B,KAAKqc,MAAQva,EAAS8+B,MAAMK,KAAajhC,KAAKunB,KAAO,GAC/E,GAAXsb,EAAgB9H,IAAqB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMI,OAAahhC,KAAKunB,KAAO,IAC/E,GAAXsb,EAAgB9H,IAAqB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMI,OAAahhC,KAAKunB,KAAO,IAC/E,EAAXsb,EAAe9H,IAAsB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMI,OAAahhC,KAAKunB,KAAO,GAC1Fsb,EAAa9H,IAAwB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMI,OAAahhC,KAAKunB,KAAO,GAC/E,GAAXub,EAAgB/H,IAAqB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMG,OAAa/gC,KAAKunB,KAAO,IAC/E,GAAXub,EAAgB/H,IAAqB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMG,OAAa/gC,KAAKunB,KAAO,IAC/E,EAAXub,EAAe/H,IAAsB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMG,OAAa/gC,KAAKunB,KAAO,GAC1Fub,EAAa/H,IAAwB/6B,KAAKqc,MAAQva,EAAS8+B,MAAMG,OAAa/gC,KAAKunB,KAAO,GAC1E,IAAhBwb,EAAsBhI,IAAe/6B,KAAKqc,MAAQva,EAAS8+B,MAAME,YAAa9gC,KAAKunB,KAAO,KAC1E,IAAhBwb,EAAsBhI,IAAe/6B,KAAKqc,MAAQva,EAAS8+B,MAAME,YAAa9gC,KAAKunB,KAAO,KAC1E,GAAhBwb,EAAqBhI,IAAgB/6B,KAAKqc,MAAQva,EAAS8+B,MAAME,YAAa9gC,KAAKunB,KAAO,IAC1E,GAAhBwb,EAAqBhI,IAAgB/6B,KAAKqc,MAAQva,EAAS8+B,MAAME,YAAa9gC,KAAKunB,KAAO,IAC1E,EAAhBwb,EAAoBhI,IAAiB/6B,KAAKqc,MAAQva,EAAS8+B,MAAME,YAAa9gC,KAAKunB,KAAO,GAC1Fwb,EAAkBhI,IAAmB/6B,KAAKqc,MAAQva,EAAS8+B,MAAME,YAAa9gC,KAAKunB,KAAO;GAShGzlB,EAAS6R,UAAUghB,KAAO,SAASqO,GACjC,GAAIpG,GAAQ,GAAIz4B,MAAK6+B,EAAKn8B,UAE1B,IAAI7G,KAAKqc,OAASva,EAAS8+B,MAAMQ,KAAM,CACrC,GAAItH,GAAO8C,EAAM2E,cAAgBx8B,KAAKkoB,MAAM2P,EAAMuF,WAAa,GAC/DvF,GAAM0E,YAAYv8B,KAAKkoB,MAAM6M,EAAO95B,KAAKunB,MAAQvnB,KAAKunB,MACtDqV,EAAM4E,SAAS,GACf5E,EAAM6E,QAAQ,GACd7E,EAAM8E,SAAS,GACf9E,EAAM+E,WAAW,GACjB/E,EAAMgF,WAAW,GACjBhF,EAAMiF,gBAAgB,OAEnB,IAAI7hC,KAAKqc,OAASva,EAAS8+B,MAAMO,MAChCvE,EAAMsF,UAAY,IACpBtF,EAAM6E,QAAQ,GACd7E,EAAM4E,SAAS5E,EAAMuF,WAAa,IAIlCvF,EAAM6E,QAAQ,GAGhB7E,EAAM8E,SAAS,GACf9E,EAAM+E,WAAW,GACjB/E,EAAMgF,WAAW,GACjBhF,EAAMiF,gBAAgB,OAEnB,IAAI7hC,KAAKqc,OAASva,EAAS8+B,MAAMC,IAAK,CAEzC,OAAQ7gC,KAAKunB,MACX,IAAK,GACL,IAAK,GACHqV,EAAM8E,SAA6C,GAApC38B,KAAKkoB,MAAM2P,EAAMqF,WAAa,IAAW,MAC1D,SACErF,EAAM8E,SAA6C,GAApC38B,KAAKkoB,MAAM2P,EAAMqF,WAAa,KAEjDrF,EAAM+E,WAAW,GACjB/E,EAAMgF,WAAW,GACjBhF,EAAMiF,gBAAgB,OAEnB,IAAI7hC,KAAKqc,OAASva,EAAS8+B,MAAMM,QAAS,CAE7C,OAAQlhC,KAAKunB,MACX,IAAK,GACL,IAAK,GACHqV,EAAM8E,SAA6C,GAApC38B,KAAKkoB,MAAM2P,EAAMqF,WAAa,IAAW,MAC1D,SACErF,EAAM8E,SAA4C,EAAnC38B,KAAKkoB,MAAM2P,EAAMqF,WAAa,IAEjDrF,EAAM+E,WAAW,GACjB/E,EAAMgF,WAAW,GACjBhF,EAAMiF,gBAAgB,OAEnB,IAAI7hC,KAAKqc,OAASva,EAAS8+B,MAAMK,KAAM,CAC1C,OAAQjhC,KAAKunB,MACX,IAAK,GACHqV,EAAM+E,WAAiD,GAAtC58B,KAAKkoB,MAAM2P,EAAMoF,aAAe,IAAW,MAC9D,SACEpF,EAAM+E,WAAiD,GAAtC58B,KAAKkoB,MAAM2P,EAAMoF,aAAe,KAErDpF,EAAMgF,WAAW,GACjBhF,EAAMiF,gBAAgB,OACjB,IAAI7hC,KAAKqc,OAASva,EAAS8+B,MAAMI,OAAQ,CAE9C,OAAQhhC,KAAKunB,MACX,IAAK,IACL,IAAK,IACHqV,EAAM+E,WAAgD,EAArC58B,KAAKkoB,MAAM2P,EAAMoF,aAAe,IACjDpF,EAAMgF,WAAW,EACjB,MACF,KAAK,GACHhF,EAAMgF,WAAiD,GAAtC78B,KAAKkoB,MAAM2P,EAAMmF,aAAe,IAAW,MAC9D,SACEnF,EAAMgF,WAAiD,GAAtC78B,KAAKkoB,MAAM2P,EAAMmF,aAAe,KAErDnF,EAAMiF,gBAAgB,OAEnB,IAAI7hC,KAAKqc,OAASva,EAAS8+B,MAAMG,OAEpC,OAAQ/gC,KAAKunB,MACX,IAAK,IACL,IAAK,IACHqV,EAAMgF,WAAgD,EAArC78B,KAAKkoB,MAAM2P,EAAMmF,aAAe,IACjDnF,EAAMiF,gBAAgB,EACtB,MACF,KAAK,GACHjF,EAAMiF,gBAA6D,IAA7C98B,KAAKkoB,MAAM2P,EAAMkF,kBAAoB,KAAe,MAC5E,SACElF,EAAMiF,gBAA4D,IAA5C98B,KAAKkoB,MAAM2P,EAAMkF,kBAAoB,UAG5D,IAAI9hC,KAAKqc,OAASva,EAAS8+B,MAAME,YAAa,CACjD,GAAIvZ,GAAOvnB,KAAKunB,KAAO,EAAIvnB,KAAKunB,KAAO,EAAI,CAC3CqV,GAAMiF,gBAAgB98B,KAAKkoB,MAAM2P,EAAMkF,kBAAoBva,GAAQA,GAGrE,MAAOqV,IAQT96B,EAAS6R,UAAU+oB,QAAU,WAC3B,GAAyB,GAArB18B,KAAK+5B,aAEP,OADA/5B,KAAK+5B,cAAe,EACZ/5B,KAAKqc,OACX,IAAKva,GAAS8+B,MAAMQ,KACpB,IAAKt/B,GAAS8+B,MAAMO,MACpB,IAAKr/B,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IACpB,IAAK/+B,GAAS8+B,MAAMK,KACpB,IAAKn/B,GAAS8+B,MAAMI,OACpB,IAAKl/B,GAAS8+B,MAAMG,OACpB,IAAKj/B,GAAS8+B,MAAME,YAClB,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtB9gC,KAAKi6B,cAEZ,OADAj6B,KAAKi6B,eAAgB,EACbj6B,KAAKqc,OACX,IAAKva,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IACpB,IAAK/+B,GAAS8+B,MAAMK,KACpB,IAAKn/B,GAAS8+B,MAAMI,OACpB,IAAKl/B,GAAS8+B,MAAMG,OACpB,IAAKj/B,GAAS8+B,MAAME,YAClB,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApB9gC,KAAKm6B,YAEZ,OADAn6B,KAAKm6B,aAAc,EACXn6B,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YACpB,IAAKh/B,GAAS8+B,MAAMG,OACpB,IAAKj/B,GAAS8+B,MAAMI,OACpB,IAAKl/B,GAAS8+B,MAAMK,KAClB,OAAO,CACT,SACE,OAAO,EAKb,OAAQjhC,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAClB,MAA0C,IAAlC9gC,KAAK45B,QAAQkI,iBACvB,KAAKhgC,GAAS8+B,MAAMG,OAClB,MAAqC,IAA7B/gC,KAAK45B,QAAQmI,YACvB,KAAKjgC,GAAS8+B,MAAMI,OAClB,MAAmC,IAA3BhhC,KAAK45B,QAAQqI,YAAkD,GAA7BjiC,KAAK45B,QAAQoI,YACzD,KAAKlgC,GAAS8+B,MAAMK,KAClB,MAAmC,IAA3BjhC,KAAK45B,QAAQqI,UACvB,KAAKngC,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IAClB,MAAkC,IAA1B7gC,KAAK45B,QAAQsI,SACvB,KAAKpgC,GAAS8+B,MAAMO,MAClB,MAAmC,IAA3BnhC,KAAK45B,QAAQuI,UACvB,KAAKrgC,GAAS8+B,MAAMQ,KAClB,OAAO,CACT,SACE,OAAO,IAWbt/B,EAAS6R,UAAUsvB,cAAgB,SAASD,GAK1C,OAJY38B,QAAR28B,IACFA,EAAOhjC,KAAK45B,SAGN55B,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAAc,MAAOn9B,GAAOq/B,GAAME,OAAO,MAC7D,KAAKphC,GAAS8+B,MAAMG,OAAc,MAAOp9B,GAAOq/B,GAAME,OAAO,IAC7D,KAAKphC,GAAS8+B,MAAMI,OAAc,MAAOr9B,GAAOq/B,GAAME,OAAO,QAC7D,KAAKphC,GAAS8+B,MAAMK,KAAc,MAAOt9B,GAAOq/B,GAAME,OAAO,QAC7D,KAAKphC,GAAS8+B,MAAMM,QAAc,MAAOv9B,GAAOq/B,GAAME,OAAO,QAC7D,KAAKphC,GAAS8+B,MAAMC,IAAc,MAAOl9B,GAAOq/B,GAAME,OAAO,IAC7D,KAAKphC,GAAS8+B,MAAMO,MAAc,MAAOx9B,GAAOq/B,GAAME,OAAO,MAC7D,KAAKphC,GAAS8+B,MAAMQ,KAAc,MAAOz9B,GAAOq/B,GAAME,OAAO,OAC7D,SAAkC,MAAO,KAW7CphC,EAAS6R,UAAUwvB,cAAgB,SAASH,GAM1C,OALY38B,QAAR28B,IACFA,EAAOhjC,KAAK45B,SAIN55B,KAAKqc,OACX,IAAKva,GAAS8+B,MAAME,YAAY,MAAOn9B,GAAOq/B,GAAME,OAAO,WAC3D,KAAKphC,GAAS8+B,MAAMG,OAAY,MAAOp9B,GAAOq/B,GAAME,OAAO,eAC3D,KAAKphC,GAAS8+B,MAAMI,OACpB,IAAKl/B,GAAS8+B,MAAMK,KAAY,MAAOt9B,GAAOq/B,GAAME,OAAO,aAC3D,KAAKphC,GAAS8+B,MAAMM,QACpB,IAAKp/B,GAAS8+B,MAAMC,IAAY,MAAOl9B,GAAOq/B,GAAME,OAAO,YAC3D,KAAKphC,GAAS8+B,MAAMO,MAAY,MAAOx9B,GAAOq/B,GAAME,OAAO,OAC3D,KAAKphC,GAAS8+B,MAAMQ,KAAY,MAAO,EACvC,SAAgC,MAAO,KAI3CvhC,EAAOD,QAAUkC,GAKb,SAASjC,GAOb,QAASyC,KACPtC,KAAK6O,QAAU,KACf7O,KAAK6F,MAAQ,KAQfvD,EAAUqR,UAAUuI,WAAa,SAASrN,GACpCA,GACFlO,KAAKwE,OAAOnF,KAAK6O,QAASA,IAQ9BvM,EAAUqR,UAAUkN,OAAS,WAE3B,OAAO,GAMTve,EAAUqR,UAAUyvB,QAAU,aAU9B9gC,EAAUqR,UAAU0vB,WAAa,WAC/B,GAAIC,GAAWtjC,KAAK6F,MAAM09B,iBAAmBvjC,KAAK6F,MAAMmN,OACpDhT,KAAK6F,MAAM29B,kBAAoBxjC,KAAK6F,MAAMoN,MAK9C,OAHAjT,MAAK6F,MAAM09B,eAAiBvjC,KAAK6F,MAAMmN,MACvChT,KAAK6F,MAAM29B,gBAAkBxjC,KAAK6F,MAAMoN,OAEjCqwB,GAGTzjC,EAAOD,QAAU0C,GAKb,SAASzC,EAAQD,EAASM,GAe9B,QAASqC,GAAa+xB,EAAMzlB,GAC1B7O,KAAKs0B,KAAOA,EAGZt0B,KAAKg0B,gBACHyP,iBAAiB,EAEjBC,QAASA,EACTC,OAAQ,MAEV3jC,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBACpCh0B,KAAK+oB,OAAS,EAEd/oB,KAAKq0B,UAELr0B,KAAKkc,WAAWrN,GA5BlB,GAAIlO,GAAOT,EAAoB,GAC3BoC,EAAYpC,EAAoB,IAChCyD,EAASzD,EAAoB,IAC7BwjC,EAAUxjC,EAAoB,GA4BlCqC,GAAYoR,UAAY,GAAIrR,GAM5BC,EAAYoR,UAAU0gB,QAAU,WAC9B,GAAI5C,GAAMzf,SAASM,cAAc,MACjCmf,GAAI5pB,UAAY,cAChB4pB,EAAInkB,MAAM0V,SAAW,WACrByO,EAAInkB,MAAM5F,IAAM,MAChB+pB,EAAInkB,MAAM2F,OAAS,OAEnBjT,KAAKyxB,IAAMA,GAMblvB,EAAYoR,UAAUyvB,QAAU,WAC9BpjC,KAAK6O,QAAQ40B,iBAAkB,EAC/BzjC,KAAK6gB,SAEL7gB,KAAKs0B,KAAO,MAQd/xB,EAAYoR,UAAUuI,WAAa,SAASrN,GACtCA,GAEFlO,EAAKiF,iBAAiB,kBAAmB,SAAU,WAAY5F,KAAK6O,QAASA,IAQjFtM,EAAYoR,UAAUkN,OAAS,WAC7B,GAAI7gB,KAAK6O,QAAQ40B,gBAAiB,CAChC,GAAIG,GAAS5jC,KAAKs0B,KAAK9E,IAAIqU,kBACvB7jC,MAAKyxB,IAAI7nB,YAAcg6B,IAErB5jC,KAAKyxB,IAAI7nB,YACX5J,KAAKyxB,IAAI7nB,WAAWgI,YAAY5R,KAAKyxB,KAEvCmS,EAAO1xB,YAAYlS,KAAKyxB,KAExBzxB,KAAK6P,QAGP,IAAI8sB,GAAM,GAAIx4B,OAAK,GAAIA,OAAO0C,UAAY7G,KAAK+oB,QAC3CvW,EAAIxS,KAAKs0B,KAAK3zB,KAAKi0B,SAAS+H,GAE5BgH,EAAS3jC,KAAK6O,QAAQ60B,QAAQ1jC,KAAK6O,QAAQ80B,QAC3CG,EAAQH,EAAO/J,QAAU,IAAM+J,EAAOtJ,KAAO,KAAO12B,EAAOg5B,GAAKuG,OAAO,8BAC3EY,GAAQA,EAAMtf,OAAO,GAAGrY,cAAgB23B,EAAM13B,UAAU,GAExDpM,KAAKyxB,IAAInkB,MAAMhG,KAAOkL,EAAI,KAC1BxS,KAAKyxB,IAAIqS,MAAQA,MAIb9jC,MAAKyxB,IAAI7nB,YACX5J,KAAKyxB,IAAI7nB,WAAWgI,YAAY5R,KAAKyxB,KAEvCzxB,KAAKskB,MAGP,QAAO,GAMT/hB,EAAYoR,UAAU9D,MAAQ,WAG5B,QAASsF,KACPX,EAAG8P,MAGH,IAAIjI,GAAQ7H,EAAG8f,KAAKrlB,MAAMurB,WAAWhmB,EAAG8f,KAAKC,SAAShJ,OAAOvY,OAAOqJ,MAChE+V,EAAW,EAAI/V,EAAQ,EACZ,IAAX+V,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhC5d,EAAGqM,SAGHrM,EAAGuvB,iBAAmBlW,WAAW1Y,EAAQid,GAd3C,GAAI5d,GAAKxU,IAiBTmV,MAMF5S,EAAYoR,UAAU2Q,KAAO,WACGje,SAA1BrG,KAAK+jC,mBACPvW,aAAaxtB,KAAK+jC,wBACX/jC,MAAK+jC,mBAUhBxhC,EAAYoR,UAAUqwB,eAAiB,SAAS3J,GAC9C,GAAInsB,GAAIvN,EAAK+F,QAAQ2zB,EAAM,QAAQxzB,UAC/B81B,GAAM,GAAIx4B,OAAO0C,SACrB7G,MAAK+oB,OAAS7a,EAAIyuB,EAClB38B,KAAK6gB,UAOPte,EAAYoR,UAAUswB,eAAiB,WACrC,MAAO,IAAI9/B,OAAK,GAAIA,OAAO0C,UAAY7G,KAAK+oB,SAG9ClpB,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAiB9B,QAASsC,GAAY8xB,EAAMzlB,GACzB7O,KAAKs0B,KAAOA,EAGZt0B,KAAKg0B,gBACHkQ,gBAAgB,EAChBR,QAASA,EACTC,OAAQ,MAEV3jC,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBAEpCh0B,KAAKs1B,WAAa,GAAInxB,MACtBnE,KAAKmkC,eAGLnkC,KAAKq0B,UAELr0B,KAAKkc,WAAWrN,GAhClB,GAAIu1B,GAASlkC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BoC,EAAYpC,EAAoB,IAChCyD,EAASzD,EAAoB,IAC7BwjC,EAAUxjC,EAAoB,GA+BlCsC,GAAWmR,UAAY,GAAIrR,GAO3BE,EAAWmR,UAAUuI,WAAa,SAASrN,GACrCA,GAEFlO,EAAKiF,iBAAiB,iBAAkB,SAAU,WAAY5F,KAAK6O,QAASA,IAQhFrM,EAAWmR,UAAU0gB,QAAU,WAC7B,GAAI5C,GAAMzf,SAASM,cAAc,MACjCmf,GAAI5pB,UAAY,aAChB4pB,EAAInkB,MAAM0V,SAAW,WACrByO,EAAInkB,MAAM5F,IAAM,MAChB+pB,EAAInkB,MAAM2F,OAAS,OACnBjT,KAAKyxB,IAAMA,CAEX,IAAI4S,GAAOryB,SAASM,cAAc,MAClC+xB,GAAK/2B,MAAM0V,SAAW,WACtBqhB,EAAK/2B,MAAM5F,IAAM,MACjB28B,EAAK/2B,MAAMhG,KAAO,QAClB+8B,EAAK/2B,MAAM2F,OAAS,OACpBoxB,EAAK/2B,MAAM0F,MAAQ,OACnBye,EAAIvf,YAAYmyB,GAGhBrkC,KAAK4D,OAASwgC,EAAO3S,GACnB6S,iBAAiB,IAEnBtkC,KAAK4D,OAAOgQ,GAAG,YAAa5T,KAAKq9B,aAAa5I,KAAKz0B,OACnDA,KAAK4D,OAAOgQ,GAAG,OAAa5T,KAAKs9B,QAAQ7I,KAAKz0B,OAC9CA,KAAK4D,OAAOgQ,GAAG,UAAa5T,KAAKu9B,WAAW9I,KAAKz0B,QAMnDwC,EAAWmR,UAAUyvB,QAAU,WAC7BpjC,KAAK6O,QAAQq1B,gBAAiB,EAC9BlkC,KAAK6gB,SAEL7gB,KAAK4D,OAAO4+B,QAAO,GACnBxiC,KAAK4D,OAAS,KAEd5D,KAAKs0B,KAAO,MAOd9xB,EAAWmR,UAAUkN,OAAS,WAC5B,GAAI7gB,KAAK6O,QAAQq1B,eAAgB,CAC/B,GAAIN,GAAS5jC,KAAKs0B,KAAK9E,IAAIqU,kBACvB7jC,MAAKyxB,IAAI7nB,YAAcg6B,IAErB5jC,KAAKyxB,IAAI7nB,YACX5J,KAAKyxB,IAAI7nB,WAAWgI,YAAY5R,KAAKyxB,KAEvCmS,EAAO1xB,YAAYlS,KAAKyxB,KAG1B,IAAIjf,GAAIxS,KAAKs0B,KAAK3zB,KAAKi0B,SAAS50B,KAAKs1B,YAEjCqO,EAAS3jC,KAAK6O,QAAQ60B,QAAQ1jC,KAAK6O,QAAQ80B,QAC3CG,EAAQH,EAAOtJ,KAAO,KAAO12B,EAAO3D,KAAKs1B,YAAY4N,OAAO,8BAChEY,GAAQA,EAAMtf,OAAO,GAAGrY,cAAgB23B,EAAM13B,UAAU,GAExDpM,KAAKyxB,IAAInkB,MAAMhG,KAAOkL,EAAI,KAC1BxS,KAAKyxB,IAAIqS,MAAQA,MAIb9jC,MAAKyxB,IAAI7nB,YACX5J,KAAKyxB,IAAI7nB,WAAWgI,YAAY5R,KAAKyxB,IAIzC,QAAO,GAOTjvB,EAAWmR,UAAU4wB,cAAgB,SAASlK,GAC5Cr6B,KAAKs1B,WAAa30B,EAAK+F,QAAQ2zB,EAAM,QACrCr6B,KAAK6gB,UAOPre,EAAWmR,UAAU6wB,cAAgB,WACnC,MAAO,IAAIrgC,MAAKnE,KAAKs1B,WAAWzuB,YAQlCrE,EAAWmR,UAAU0pB,aAAe,SAAS/zB,GAC3CtJ,KAAKmkC,YAAYlG,UAAW,EAC5Bj+B,KAAKmkC,YAAY7O,WAAat1B,KAAKs1B,WAEnChsB,EAAMm7B,kBACNn7B,EAAMD,kBAQR7G,EAAWmR,UAAU2pB,QAAU,SAAUh0B,GACvC,GAAKtJ,KAAKmkC,YAAYlG,SAAtB,CAEA,GAAIe,GAAS11B,EAAMy1B,QAAQC,OACvBxsB,EAAIxS,KAAKs0B,KAAK3zB,KAAKi0B,SAAS50B,KAAKmkC,YAAY7O,YAAc0J,EAC3D3E,EAAOr6B,KAAKs0B,KAAK3zB,KAAKq0B,OAAOxiB,EAEjCxS,MAAKukC,cAAclK,GAGnBr6B,KAAKs0B,KAAKE,QAAQrH,KAAK,cACrBkN,KAAM,GAAIl2B,MAAKnE,KAAKs1B,WAAWzuB,aAGjCyC,EAAMm7B,kBACNn7B,EAAMD,mBAQR7G,EAAWmR,UAAU4pB,WAAa,SAAUj0B,GACrCtJ,KAAKmkC,YAAYlG,WAGtBj+B,KAAKs0B,KAAKE,QAAQrH,KAAK,eACrBkN,KAAM,GAAIl2B,MAAKnE,KAAKs1B,WAAWzuB,aAGjCyC,EAAMm7B,kBACNn7B,EAAMD,mBAGRxJ,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAe9B,QAASuC,GAAU6xB,EAAMzlB,EAAS61B,EAAKC,GACrC3kC,KAAKK,GAAKM,EAAKkE,aACf7E,KAAKs0B,KAAOA,EAEZt0B,KAAKg0B,gBACHE,YAAa,OACb0Q,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXnyB,MAAO,OACP8U,SAAS,EACTmT,aACE3zB,MAAOiE,IAAIlF,OAAW2G,IAAI3G,QAC1BogB,OAAQlb,IAAIlF,OAAW2G,IAAI3G,UAI/BrG,KAAK2kC,iBAAmBA,EACxB3kC,KAAKolC,aAAeV,EACpB1kC,KAAK6F,SACL7F,KAAKqlC,aACHC,SACAC,WAGFvlC,KAAKwvB,OAELxvB,KAAKiP,OAASY,MAAM,EAAGS,IAAI,GAE3BtQ,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBACpCh0B,KAAKwlC,iBAAmB,EAExBxlC,KAAKkc,WAAWrN,GAChB7O,KAAKgT,MAAQjP,QAAQ,GAAK/D,KAAK6O,QAAQmE,OAAO9G,QAAQ,KAAK,KAC3DlM,KAAKylC,SAAWzlC,KAAKgT,MACrBhT,KAAKiT,OAASjT,KAAKolC,aAAarV,aAEhC/vB,KAAK0lC,WAAa,GAClB1lC,KAAK2lC,iBAAmB,GACxB3lC,KAAK4lC,WAAa,EAClB5lC,KAAK6lC,QAAS,EACd7lC,KAAK8lC,eAGL9lC,KAAK8zB,UACL9zB,KAAK+lC,eAAiB,EAGtB/lC,KAAKq0B,UAlEP,GAAI1zB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BoC,EAAYpC,EAAoB,IAChCyB,EAAWzB,EAAoB,GAkEnCuC,GAASkR,UAAY,GAAIrR,GAIzBG,EAASkR,UAAUqyB,SAAW,SAASne,EAAOoe,GACvCjmC,KAAK8zB,OAAOnuB,eAAekiB,KAC9B7nB,KAAK8zB,OAAOjM,GAASoe,GAEvBjmC,KAAK+lC,gBAAkB,GAGzBtjC,EAASkR,UAAUuyB,YAAc,SAASre,EAAOoe,GAC/CjmC,KAAK8zB,OAAOjM,GAASoe,GAGvBxjC,EAASkR,UAAUwyB,YAAc,SAASte,GACpC7nB,KAAK8zB,OAAOnuB,eAAekiB,WACtB7nB,MAAK8zB,OAAOjM,GACnB7nB,KAAK+lC,gBAAkB,IAK3BtjC,EAASkR,UAAUuI,WAAa,SAAUrN,GACxC,GAAIA,EAAS,CACX,GAAIgS,IAAS,CACT7gB,MAAK6O,QAAQqlB,aAAerlB,EAAQqlB,aAAuC7tB,SAAxBwI,EAAQqlB,cAC7DrT,GAAS,EAEX,IAAIvS,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cAEF3N,GAAKiF,gBAAgB0I,EAAQtO,KAAK6O,QAASA,GAE3C7O,KAAKylC,SAAW1hC,QAAQ,GAAK/D,KAAK6O,QAAQmE,OAAO9G,QAAQ,KAAK,KAEhD,GAAV2U,GAAkB7gB,KAAKwvB,IAAI9Q,QAC7B1e,KAAKomC,OACLpmC,KAAKqmC,UASX5jC,EAASkR,UAAU0gB,QAAU,WAC3Br0B,KAAKwvB,IAAI9Q,MAAQ1M,SAASM,cAAc,OACxCtS,KAAKwvB,IAAI9Q,MAAMpR,MAAM0F,MAAQhT,KAAK6O,QAAQmE,MAC1ChT,KAAKwvB,IAAI9Q,MAAMpR,MAAM2F,OAASjT,KAAKiT,OAEnCjT,KAAKwvB,IAAI8W,cAAgBt0B,SAASM,cAAc,OAChDtS,KAAKwvB,IAAI8W,cAAch5B,MAAM0F,MAAQ,OACrChT,KAAKwvB,IAAI8W,cAAch5B,MAAM2F,OAASjT,KAAKiT,OAG3CjT,KAAK0kC,IAAM1yB,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK0kC,IAAIp3B,MAAM0V,SAAW,WAC1BhjB,KAAK0kC,IAAIp3B,MAAM5F,IAAM,MACrB1H,KAAK0kC,IAAIp3B,MAAM2F,OAAS,OACxBjT,KAAK0kC,IAAIp3B,MAAM0F,MAAQ,OACvBhT,KAAK0kC,IAAIp3B,MAAMi5B,QAAU,QACzBvmC,KAAKwvB,IAAI9Q,MAAMxM,YAAYlS,KAAK0kC,MAGlCjiC,EAASkR,UAAU6yB,kBAAoB,WACrC5lC,EAAQ0Q,gBAAgBtR,KAAK8lC,YAE7B,IAAItzB,GACA2yB,EAAYnlC,KAAK6O,QAAQs2B,UACzBsB,EAAa,GACbC,EAAa,EACbj0B,EAAIi0B,EAAa,GAAMD,CAGzBj0B,GAD8B,QAA5BxS,KAAK6O,QAAQqlB,YACXwS,EAGA1mC,KAAKgT,MAAQmyB,EAAYuB,CAG/B,KAAK,GAAI5P,KAAW92B,MAAK8zB,OACnB9zB,KAAK8zB,OAAOnuB,eAAemxB,KACO,GAAhC92B,KAAK8zB,OAAOgD,GAAShP,SAAkEzhB,SAA9CrG,KAAK2kC,iBAAiB3N,WAAWF,IAAuE,GAA7C92B,KAAK2kC,iBAAiB3N,WAAWF,KACvI92B,KAAK8zB,OAAOgD,GAAS6P,SAASn0B,EAAGC,EAAGzS,KAAK8lC,YAAa9lC,KAAK0kC,IAAKS,EAAWsB,GAC3Eh0B,GAAKg0B,EAAaC,GAKxB9lC,GAAQ+Q,gBAAgB3R,KAAK8lC,cAM/BrjC,EAASkR,UAAU0yB,KAAO,WACnBrmC,KAAKwvB,IAAI9Q,MAAM9U,aACc,QAA5B5J,KAAK6O,QAAQqlB,YACfl0B,KAAKs0B,KAAK9E,IAAIloB,KAAK4K,YAAYlS,KAAKwvB,IAAI9Q,OAGxC1e,KAAKs0B,KAAK9E,IAAI/I,MAAMvU,YAAYlS,KAAKwvB,IAAI9Q,QAIxC1e,KAAKwvB,IAAI8W,cAAc18B,YAC1B5J,KAAKs0B,KAAK9E,IAAIoX,qBAAqB10B,YAAYlS,KAAKwvB,IAAI8W,gBAO5D7jC,EAASkR,UAAUyyB,KAAO,WACpBpmC,KAAKwvB,IAAI9Q,MAAM9U,YACjB5J,KAAKwvB,IAAI9Q,MAAM9U,WAAWgI,YAAY5R,KAAKwvB,IAAI9Q,OAG7C1e,KAAKwvB,IAAI8W,cAAc18B,YACzB5J,KAAKwvB,IAAI8W,cAAc18B,WAAWgI,YAAY5R,KAAKwvB,IAAI8W,gBAU3D7jC,EAASkR,UAAUwf,SAAW,SAAUtjB,EAAOS,GAC7CtQ,KAAKiP,MAAMY,MAAQA,EACnB7P,KAAKiP,MAAMqB,IAAMA,GAOnB7N,EAASkR,UAAUkN,OAAS,WAC1B,GAAIgmB,IAAe,EACfC,EAAe,CACnB,KAAK,GAAIhQ,KAAW92B,MAAK8zB,OACnB9zB,KAAK8zB,OAAOnuB,eAAemxB,KACO,GAAhC92B,KAAK8zB,OAAOgD,GAAShP,SAAkEzhB,SAA9CrG,KAAK2kC,iBAAiB3N,WAAWF,IAAuE,GAA7C92B,KAAK2kC,iBAAiB3N,WAAWF,IACvIgQ,IAIN,IAA2B,GAAvB9mC,KAAK+lC,gBAAuC,GAAhBe,EAC9B9mC,KAAKomC,WAEF,CACHpmC,KAAKqmC,OACLrmC,KAAKiT,OAASlP,OAAO/D,KAAKolC,aAAa93B,MAAM2F,OAAO/G,QAAQ,KAAK,KAGjElM,KAAKwvB,IAAI8W,cAAch5B,MAAM2F,OAASjT,KAAKiT,OAAS,KACpDjT,KAAKgT,MAAgC,GAAxBhT,KAAK6O,QAAQiZ,QAAkB/jB,QAAQ,GAAK/D,KAAK6O,QAAQmE,OAAO9G,QAAQ,KAAK,KAAO,CAEjG,IAAIrG,GAAQ7F,KAAK6F,MACb6Y,EAAQ1e,KAAKwvB,IAAI9Q,KAGrBA,GAAM7W,UAAY,WAGlB7H,KAAK+mC,oBAEL,IAAI7S,GAAcl0B,KAAK6O,QAAQqlB,YAC3B0Q,EAAkB5kC,KAAK6O,QAAQ+1B,gBAC/BC,EAAkB7kC,KAAK6O,QAAQg2B,eAGnCh/B,GAAMmhC,iBAAmBpC,EAAkB/+B,EAAMohC,gBAAkB,EACnEphC,EAAMqhC,iBAAmBrC,EAAkBh/B,EAAMshC,gBAAkB,EAEnEthC,EAAMuhC,eAAiBpnC,KAAKs0B,KAAK9E,IAAIoX,qBAAqB/W,YAAc7vB,KAAK4lC,WAAa5lC,KAAKgT,MAAQ,EAAIhT,KAAK6O,QAAQm2B,iBACxHn/B,EAAMwhC,gBAAkB,EACxBxhC,EAAMyhC,eAAiBtnC,KAAKs0B,KAAK9E,IAAIoX,qBAAqB/W,YAAc7vB,KAAK4lC,WAAa5lC,KAAKgT,MAAQ,EAAIhT,KAAK6O,QAAQk2B,iBACxHl/B,EAAM0hC,gBAAkB,EAGL,QAAfrT,GACFxV,EAAMpR,MAAM5F,IAAM,IAClBgX,EAAMpR,MAAMhG,KAAO,IACnBoX,EAAMpR,MAAMoV,OAAS,GACrBhE,EAAMpR,MAAM0F,MAAQhT,KAAKgT,MAAQ,KACjC0L,EAAMpR,MAAM2F,OAASjT,KAAKiT,OAAS,OAGnCyL,EAAMpR,MAAM5F,IAAM,GAClBgX,EAAMpR,MAAMoV,OAAS,IACrBhE,EAAMpR,MAAMhG,KAAO,IACnBoX,EAAMpR,MAAM0F,MAAQhT,KAAKgT,MAAQ,KACjC0L,EAAMpR,MAAM2F,OAASjT,KAAKiT,OAAS,MAErC4zB,EAAe7mC,KAAKwnC,gBACM,GAAtBxnC,KAAK6O,QAAQi2B,OACf9kC,KAAKwmC,oBAGT,MAAOK,IAOTpkC,EAASkR,UAAU6zB,cAAgB,WACjC5mC,EAAQ0Q,gBAAgBtR,KAAKqlC,YAAYC,OACzC1kC,EAAQ0Q,gBAAgBtR,KAAKqlC,YAAYE,OAEzC,IAAIrR,GAAcl0B,KAAK6O,QAAqB,YAGxCksB,EAAc/6B,KAAK6lC,OAAS7lC,KAAK6F,MAAMshC,iBAAmB,GAAKnnC,KAAK2lC,iBAEpEpe,EAAO,GAAI5lB,GAAS3B,KAAKiP,MAAMY,MAAO7P,KAAKiP,MAAMqB,IAAKyqB,EAAa/6B,KAAKwvB,IAAI9Q,MAAMqR,aAAc/vB,KAAK6O,QAAQosB,YAAYj7B,KAAK6O,QAAQqlB,aAC1Il0B,MAAKunB,KAAOA,CAGZ,IAAIme,IAAc1lC,KAAKwvB,IAAI9Q,MAAMqR,aAAgBxI,EAAK+T,WAAat7B,KAAKwvB,IAAI9Q,MAAMqR,aAAexI,EAAK8U,gBAAoB9U,EAAK8U,YAAc9U,EAAK+T,WAAa/T,EAAKA,KACpKvnB,MAAK0lC,WAAaA,CAElB,IAAI+B,GAAgBznC,KAAKiT,OAASyyB,EAC9BgC,EAAiB,CAErB,IAAmB,GAAf1nC,KAAK6lC,OAAiB,CACxBH,EAAa1lC,KAAK2lC,iBAClB+B,EAAiB3iC,KAAKkoB,MAAOjtB,KAAKwvB,IAAI9Q,MAAMqR,aAAe2V,EAAc+B,EACzE,KAAK,GAAIpiC,GAAI,EAAO,GAAMqiC,EAAVriC,EAA0BA,IACxCkiB,EAAKiV,UAEPiL,GAAgBznC,KAAKiT,OAASyyB,MAG9B+B,IAAiB,GAInBznC,MAAK2nC,YAAcpgB,EAAK8T,SACxB,IAAIuM,GAAiB,EAGjB56B,EAAM,CAEVhN,MAAK6nC,aAAe,CAEpB,KADA,GAAIp1B,GAAI,EACDzF,EAAMjI,KAAKkoB,MAAMwa,IAAgB,CACtClgB,EAAKE,OACLhV,EAAI1N,KAAKkoB,MAAMjgB,EAAM04B,GACrBkC,EAAiB56B,EAAM04B,CACvB,IAAIhJ,GAAUnV,EAAKmV,WAEf18B,KAAK6O,QAAyB,iBAAgB,GAAX6tB,GAAmC,GAAf18B,KAAK6lC,QAAsD,GAAnC7lC,KAAK6O,QAAyB,kBAC/G7O,KAAK8nC,aAAar1B,EAAI,EAAG8U,EAAKC,aAAc0M,EAAa,cAAel0B,KAAK6F,MAAMohC,iBAGjFvK,GAAW18B,KAAK6O,QAAyB,iBAAoB,GAAf7O,KAAK6lC,QAChB,GAAnC7lC,KAAK6O,QAAyB,iBAA6B,GAAf7O,KAAK6lC,QAA8B,GAAXnJ,GAClEjqB,GAAK,GACPzS,KAAK8nC,aAAar1B,EAAI,EAAG8U,EAAKC,aAAc0M,EAAa,cAAel0B,KAAK6F,MAAMshC,iBAErFnnC,KAAK+nC,YAAYt1B,EAAGyhB,EAAa,wBAAyBl0B,KAAK6O,QAAQk2B,iBAAkB/kC,KAAK6F,MAAMyhC,iBAGpGtnC,KAAK+nC,YAAYt1B,EAAGyhB,EAAa,wBAAyBl0B,KAAK6O,QAAQm2B,iBAAkBhlC,KAAK6F,MAAMuhC,gBAGtGp6B,IAIAhN,KAAKwlC,iBADY,GAAfxlC,KAAK6lC,OACiBpzB,GAAKzS,KAAK2nC,YAAcpgB,EAAKqS,SAG7B55B,KAAKwvB,IAAI9Q,MAAMqR,aAAexI,EAAK8U,WAG7D,IAAItT,GAA+B,GAAtB/oB,KAAK6O,QAAQi2B,MAAgB9kC,KAAK6O,QAAQs2B,UAAYnlC,KAAK6O,QAAQo2B,aAAe,GAAKjlC,KAAK6O,QAAQo2B,aAAe,EAEhI,OAAIjlC,MAAK6nC,aAAgB7nC,KAAKgT,MAAQ+V,GAAmC,GAAxB/oB,KAAK6O,QAAQiZ,SAC5D9nB,KAAKgT,MAAQhT,KAAK6nC,aAAe9e,EACjC/oB,KAAK6O,QAAQmE,MAAQhT,KAAKgT,MAAQ,KAClCpS,EAAQ+Q,gBAAgB3R,KAAKqlC,YAAYC,OACzC1kC,EAAQ+Q,gBAAgB3R,KAAKqlC,YAAYE,QACzCvlC,KAAK6gB,UACE,GAGA7gB,KAAK6nC,aAAgB7nC,KAAKgT,MAAQ+V,GAAmC,GAAxB/oB,KAAK6O,QAAQiZ,SAAmB9nB,KAAKgT,MAAQhT,KAAKylC,UACtGzlC,KAAKgT,MAAQjO,KAAKiI,IAAIhN,KAAKylC,SAASzlC,KAAK6nC,aAAe9e,GACxD/oB,KAAK6O,QAAQmE,MAAQhT,KAAKgT,MAAQ,KAClCpS,EAAQ+Q,gBAAgB3R,KAAKqlC,YAAYC,OACzC1kC,EAAQ+Q,gBAAgB3R,KAAKqlC,YAAYE,QACzCvlC,KAAK6gB,UACE,IAGPjgB,EAAQ+Q,gBAAgB3R,KAAKqlC,YAAYC,OACzC1kC,EAAQ+Q,gBAAgB3R,KAAKqlC,YAAYE,SAClC,IAIX9iC,EAASkR,UAAUq0B,aAAe,SAAU9gC,GAC1C,GAAI+gC,GAAgBjoC,KAAK2nC,YAAczgC,EACnCghC,EAAiBD,EAAgBjoC,KAAKwlC,gBAC1C,OAAO0C,IAYTzlC,EAASkR,UAAUm0B,aAAe,SAAUr1B,EAAGkW,EAAMuL,EAAarsB,EAAWsgC,GAE3E,GAAItgB,GAAQjnB,EAAQuR,cAAc,MAAMnS,KAAKqlC,YAAYE,OAAQvlC,KAAKwvB,IAAI9Q,MAC1EmJ,GAAMhgB,UAAYA,EAClBggB,EAAMxE,UAAYsF,EACC,QAAfuL,GACFrM,EAAMva,MAAMhG,KAAO,IAAMtH,KAAK6O,QAAQo2B,aAAe,KACrDpd,EAAMva,MAAMoa,UAAY,UAGxBG,EAAMva,MAAMmZ,MAAQ,IAAMzmB,KAAK6O,QAAQo2B,aAAe,KACtDpd,EAAMva,MAAMoa,UAAY,QAG1BG,EAAMva,MAAM5F,IAAM+K,EAAI,GAAM01B,EAAkBnoC,KAAK6O,QAAQq2B,aAAe,KAE1Evc,GAAQ,EAER,IAAIyf,GAAerjC,KAAKiI,IAAIhN,KAAK6F,MAAMwiC,eAAeroC,KAAK6F,MAAMyiC,eAC7DtoC,MAAK6nC,aAAelf,EAAKnjB,OAAS4iC,IACpCpoC,KAAK6nC,aAAelf,EAAKnjB,OAAS4iC,IAYtC3lC,EAASkR,UAAUo0B,YAAc,SAAUt1B,EAAGyhB,EAAarsB,EAAWkhB,EAAQ/V,GAC5E,GAAmB,GAAfhT,KAAK6lC,OAAgB,CACvB,GAAIvW,GAAO1uB,EAAQuR,cAAc,MAAMnS,KAAKqlC,YAAYC,MAAOtlC,KAAKwvB,IAAI8W,cACxEhX,GAAKznB,UAAYA,EACjBynB,EAAKjM,UAAY,GAEE,QAAf6Q,EACF5E,EAAKhiB,MAAMhG,KAAQtH,KAAKgT,MAAQ+V,EAAU,KAG1CuG,EAAKhiB,MAAMmZ,MAASzmB,KAAKgT,MAAQ+V,EAAU,KAG7CuG,EAAKhiB,MAAM0F,MAAQA,EAAQ,KAC3Bsc,EAAKhiB,MAAM5F,IAAM+K,EAAI,OAazBhQ,EAASkR,UAAUozB,mBAAqB,WAEtC,KAAM,mBAAqB/mC,MAAK6F,OAAQ,CACtC,GAAI0iC,GAAYv2B,SAASw2B,eAAe,KACpCC,EAAmBz2B,SAASM,cAAc,MAC9Cm2B,GAAiB5gC,UAAY,sBAC7B4gC,EAAiBv2B,YAAYq2B,GAC7BvoC,KAAKwvB,IAAI9Q,MAAMxM,YAAYu2B,GAE3BzoC,KAAK6F,MAAMohC,gBAAkBwB,EAAiBxkB,aAC9CjkB,KAAK6F,MAAMyiC,eAAiBG,EAAiB7pB,YAE7C5e,KAAKwvB,IAAI9Q,MAAM9M,YAAY62B,GAG7B,KAAM,mBAAqBzoC,MAAK6F,OAAQ,CACtC,GAAI6iC,GAAY12B,SAASw2B,eAAe,KACpCG,EAAmB32B,SAASM,cAAc,MAC9Cq2B,GAAiB9gC,UAAY,sBAC7B8gC,EAAiBz2B,YAAYw2B,GAC7B1oC,KAAKwvB,IAAI9Q,MAAMxM,YAAYy2B,GAE3B3oC,KAAK6F,MAAMshC,gBAAkBwB,EAAiB1kB,aAC9CjkB,KAAK6F,MAAMwiC,eAAiBM,EAAiB/pB,YAE7C5e,KAAKwvB,IAAI9Q,MAAM9M,YAAY+2B,KAU/BlmC,EAASkR,UAAUghB,KAAO,SAASqO,GACjC,MAAOhjC,MAAKunB,KAAKoN,KAAKqO,IAGxBnjC,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAW9B,QAASwC,GAAYgQ,EAAOokB,EAASjoB,EAAS+5B,GAC5C5oC,KAAKK,GAAKy2B,CACV,IAAIxoB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5FtO,MAAK6O,QAAUlO,EAAK0N,sBAAsBC,EAAOO,GACjD7O,KAAK6oC,kBAAwCxiC,SAApBqM,EAAM7K,UAC/B7H,KAAK4oC,yBAA2BA,EAChC5oC,KAAK8oC,aAAe,EACpB9oC,KAAKmV,OAAOzC,GACkB,GAA1B1S,KAAK6oC,oBACP7oC,KAAK4oC,yBAAyB,IAAM,GAEtC5oC,KAAKw1B,aACLx1B,KAAK8nB,QAA4BzhB,SAAlBqM,EAAMoV,SAAwB,EAAOpV,EAAMoV,QArB5D,GAAInnB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,EAuBlCwC,GAAWiR,UAAUgiB,SAAW,SAAS3zB,GAC1B,MAATA,GACFhC,KAAKw1B,UAAYxzB,EACQ,GAArBhC,KAAK6O,QAAQ4H,MACfzW,KAAKw1B,UAAU/e,KAAK,SAAUrR,EAAEa,GAAI,MAAOb,GAAEoN,EAAIvM,EAAEuM,KAIrDxS,KAAKw1B,cAIT9yB,EAAWiR,UAAUo1B,gBAAkB,SAASpkB,GAC9C3kB,KAAK8oC,aAAenkB,GAGtBjiB,EAAWiR,UAAUuI,WAAa,SAASrN,GACzC,GAAgBxI,SAAZwI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3D3N,GAAKqF,oBAAoBsI,EAAQtO,KAAK6O,QAASA,GAE/ClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,cACxClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,cACxClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,UAEpCA,EAAQm6B,YACuB,gBAAtBn6B,GAAQm6B,YACbn6B,EAAQm6B,WAAWC,kBACqB,WAAtCp6B,EAAQm6B,WAAWC,gBACrBjpC,KAAK6O,QAAQm6B,WAAWE,MAAQ,EAEa,WAAtCr6B,EAAQm6B,WAAWC,gBAC1BjpC,KAAK6O,QAAQm6B,WAAWE,MAAQ,GAGhClpC,KAAK6O,QAAQm6B,WAAWC,gBAAkB,cAC1CjpC,KAAK6O,QAAQm6B,WAAWE,MAAQ,OAQ5CxmC,EAAWiR,UAAUwB,OAAS,SAASzC,GACrC1S,KAAK0S,MAAQA,EACb1S,KAAKqvB,QAAU3c,EAAM2c,SAAW,QAChCrvB,KAAK6H,UAAY6K,EAAM7K,WAAa7H,KAAK6H,WAAa,aAAe7H,KAAK4oC,yBAAyB,GAAK,GACxG5oC,KAAK8nB,QAA4BzhB,SAAlBqM,EAAMoV,SAAwB,EAAOpV,EAAMoV,QAC1D9nB,KAAKkc,WAAWxJ,EAAM7D,UAGxBnM,EAAWiR,UAAUgzB,SAAW,SAASn0B,EAAGC,EAAGlB,EAAe43B,EAAchE,EAAWsB,GACrF,GACI2C,GAAMC,EADNC,EAA0B,GAAb7C,EAGb8C,EAAU3oC,EAAQiR,cAAc,OAAQN,EAAe43B,EAO3D,IANAI,EAAQ12B,eAAe,KAAM,IAAKL,GAClC+2B,EAAQ12B,eAAe,KAAM,IAAKJ,EAAI62B,GACtCC,EAAQ12B,eAAe,KAAM,QAASsyB,GACtCoE,EAAQ12B,eAAe,KAAM,SAAU,EAAEy2B,GACzCC,EAAQ12B,eAAe,KAAM,QAAS,WAEZ,QAAtB7S,KAAK6O,QAAQvB,MACf87B,EAAOxoC,EAAQiR,cAAc,OAAQN,EAAe43B,GACpDC,EAAKv2B,eAAe,KAAM,QAAS7S,KAAK6H,WACxCuhC,EAAKv2B,eAAe,KAAM,IAAK,IAAML,EAAI,IAAIC,EAAE,MAAQD,EAAI2yB,GAAa,IAAI1yB,GACzC,GAA/BzS,KAAK6O,QAAQ26B,OAAO16B,UACtBu6B,EAAWzoC,EAAQiR,cAAc,OAAQN,EAAe43B,GACjB,OAAnCnpC,KAAK6O,QAAQ26B,OAAOtV,YACtBmV,EAASx2B,eAAe,KAAM,IAAK,IAAIL,EAAE,MAAQC,EAAI62B,GACnD,IAAI92B,EAAE,IAAIC,EAAE,MAAOD,EAAI2yB,GAAa,IAAI1yB,EAAE,MAAOD,EAAI2yB,GAAa,KAAO1yB,EAAI62B,IAG/ED,EAASx2B,eAAe,KAAM,IAAK,IAAIL,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAI62B,GAAc,MACzB92B,EAAI2yB,GAAa,KAAO1yB,EAAI62B,GAClC,KAAM92B,EAAI2yB,GAAa,IAAI1yB,GAE/B42B,EAASx2B,eAAe,KAAM,QAAS7S,KAAK6H,UAAY,cAGnB,GAAnC7H,KAAK6O,QAAQ+D,WAAW9D,SAC1BlO,EAAQ2R,UAAUC,EAAI,GAAM2yB,EAAU1yB,EAAGzS,KAAMuR,EAAe43B,OAG7D,CACH,GAAIM,GAAW1kC,KAAKkoB,MAAM,GAAMkY,GAC5BuE,EAAa3kC,KAAKkoB,MAAM,GAAMwZ,GAC9BkD,EAAa5kC,KAAKkoB,MAAM,IAAOwZ,GAE/B1d,EAAShkB,KAAKkoB,OAAOkY,EAAa,EAAIsE,GAAW,EAErD7oC,GAAQmS,QAAQP,EAAI,GAAIi3B,EAAW1gB,EAAYtW,EAAI62B,EAAaI,EAAa,EAAGD,EAAUC,EAAY1pC,KAAK6H,UAAY,OAAQ0J,EAAe43B,GAC9IvoC,EAAQmS,QAAQP,EAAI,IAAIi3B,EAAW1gB,EAAS,EAAGtW,EAAI62B,EAAaK,EAAa,EAAGF,EAAUE,EAAY3pC,KAAK6H,UAAY,OAAQ0J,EAAe43B,KAUlJzmC,EAAWiR,UAAUkjB,UAAY,SAASsO,EAAWsB,GACnD,GAAI/B,GAAM1yB,SAASC,gBAAgB,6BAA6B,MAEhE,OADAjS,MAAK2mC,SAAS,EAAE,GAAIF,KAAc/B,EAAIS,EAAUsB,IACxCmD,KAAMlF,EAAK7c,MAAO7nB,KAAKqvB,QAAS6E,YAAYl0B,KAAK6O,QAAQg7B,mBAGnEhqC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAa9B,QAASyC,GAAOm0B,EAAS3jB,EAAMoiB,GAC7Bv1B,KAAK82B,QAAUA,EACf92B,KAAK0gC,aACL1gC,KAAK8pC,iBAAmB,EACxB9pC,KAAKu1B,QAAUA,EAEfv1B,KAAKwvB,OACLxvB,KAAK6F,OACHgiB,OACE7U,MAAO,EACPC,OAAQ,IAGZjT,KAAK6H,UAAY,KAEjB7H,KAAKgC,SACLhC,KAAK+pC,gBACL/pC,KAAKgP,cACHg7B,WACAC,UAGFjqC,KAAKq0B,UAELr0B,KAAKuY,QAAQpF,GAnCf,CAAA,GAAIxS,GAAOT,EAAoB,GAC3B2B,EAAQ3B,EAAoB,IAC5BmC,EAAYnC,EAAoB,GACrBA,GAAoB,IAuCnCyC,EAAMgR,UAAU0gB,QAAU,WACxB,GAAIxM,GAAQ7V,SAASM,cAAc,MACnCuV,GAAMhgB,UAAY,SAClB7H,KAAKwvB,IAAI3H,MAAQA,CAEjB,IAAIqiB,GAAQl4B,SAASM,cAAc,MACnC43B,GAAMriC,UAAY,QAClBggB,EAAM3V,YAAYg4B,GAClBlqC,KAAKwvB,IAAI0a,MAAQA,CAEjB,IAAIC,GAAan4B,SAASM,cAAc,MACxC63B,GAAWtiC,UAAY,QACvBsiC,EAAW,kBAAoBnqC,KAC/BA,KAAKwvB,IAAI2a,WAAaA,EAEtBnqC,KAAKwvB,IAAI5jB,WAAaoG,SAASM,cAAc,OAC7CtS,KAAKwvB,IAAI5jB,WAAW/D,UAAY,QAEhC7H,KAAKwvB,IAAI4Q,KAAOpuB,SAASM,cAAc,OACvCtS,KAAKwvB,IAAI4Q,KAAKv4B,UAAY,QAK1B7H,KAAKwvB,IAAI4a,OAASp4B,SAASM,cAAc,OACzCtS,KAAKwvB,IAAI4a,OAAO98B,MAAM0pB,WAAa,SACnCh3B,KAAKwvB,IAAI4a,OAAO/mB,UAAY,IAC5BrjB,KAAKwvB,IAAI5jB,WAAWsG,YAAYlS,KAAKwvB,IAAI4a,SAO3CznC,EAAMgR,UAAU4E,QAAU,SAASpF,GAEjC,GAAIkc,GAAUlc,GAAQA,EAAKkc,OACvBA,aAAmBgb,SACrBrqC,KAAKwvB,IAAI0a,MAAMh4B,YAAYmd,GAG3BrvB,KAAKwvB,IAAI0a,MAAM7mB,UADIhd,SAAZgpB,GAAqC,OAAZA,EACLA,EAGArvB,KAAK82B,SAAW,GAI7C92B,KAAKwvB,IAAI3H,MAAMic,MAAQ3wB,GAAQA,EAAK2wB,OAAS,GAExC9jC,KAAKwvB,IAAI0a,MAAMnnB,WAIlBpiB,EAAKuH,gBAAgBlI,KAAKwvB,IAAI0a,MAAO,UAHrCvpC,EAAKiH,aAAa5H,KAAKwvB,IAAI0a,MAAO,SAOpC,IAAIriC,GAAYsL,GAAQA,EAAKtL,WAAa,IACtCA,IAAa7H,KAAK6H,YAChB7H,KAAK6H,YACPlH,EAAKuH,gBAAgBlI,KAAKwvB,IAAI3H,MAAO7nB,KAAK6H,WAC1ClH,EAAKuH,gBAAgBlI,KAAKwvB,IAAI2a,WAAYnqC,KAAK6H,WAC/ClH,EAAKuH,gBAAgBlI,KAAKwvB,IAAI5jB,WAAY5L,KAAK6H,WAC/ClH,EAAKuH,gBAAgBlI,KAAKwvB,IAAI4Q,KAAMpgC,KAAK6H,YAE3ClH,EAAKiH,aAAa5H,KAAKwvB,IAAI3H,MAAOhgB,GAClClH,EAAKiH,aAAa5H,KAAKwvB,IAAI2a,WAAYtiC,GACvClH,EAAKiH,aAAa5H,KAAKwvB,IAAI5jB,WAAY/D,GACvClH,EAAKiH,aAAa5H,KAAKwvB,IAAI4Q,KAAMv4B,GACjC7H,KAAK6H,UAAYA,GAIf7H,KAAKsN,QACP3M,EAAKmN,cAAc9N,KAAKwvB,IAAI3H,MAAO7nB,KAAKsN,OACxCtN,KAAKsN,MAAQ,MAEX6F,GAAQA,EAAK7F,QACf3M,EAAKgN,WAAW3N,KAAKwvB,IAAI3H,MAAO1U,EAAK7F,OACrCtN,KAAKsN,MAAQ6F,EAAK7F,QAQtB3K,EAAMgR,UAAU22B,cAAgB,WAC9B,MAAOtqC,MAAK6F,MAAMgiB,MAAM7U,OAW1BrQ,EAAMgR,UAAUkN,OAAS,SAAS5R,EAAOiK,EAAQqxB,GAC/C,GAAIjH,IAAU,CAEdtjC,MAAK+pC,aAAe/pC,KAAKwqC,oBAAoBxqC,KAAKgP,aAAchP,KAAK+pC,aAAc96B,EAInF,IAAIw7B,GAAezqC,KAAKwvB,IAAI4a,OAAOnmB,YAC/BwmB,IAAgBzqC,KAAK0qC,mBACvB1qC,KAAK0qC,iBAAmBD,EAExB9pC,EAAK0H,QAAQrI,KAAKgC,MAAO,SAAU+S,GACjCA,EAAK41B,OAAQ,EACT51B,EAAK61B,WAAW71B,EAAK8L,WAG3B0pB,GAAU,GAIRvqC,KAAKu1B,QAAQ1mB,QAAQhN,MACvBA,EAAMA,MAAM7B,KAAK+pC,aAAc7wB,EAAQqxB,GAGvC1oC,EAAM4+B,QAAQzgC,KAAK+pC,aAAc7wB,EAAQlZ,KAAK0gC,UAIhD,IAAIztB,GACA82B,EAAe/pC,KAAK+pC,aACpBD,IACJ9pC,MAAK8pC,iBAAmB,CACxB,IAAIt1B,GAAKxU,IACT,IAAI+pC,EAAavkC,OAAQ,CACvB,GAAI+F,GAAMw+B,EAAa,GAAGriC,IACtBsF,EAAM+8B,EAAa,GAAGriC,IAAMqiC,EAAa,GAAG92B,MAYhD,IAXAtS,EAAK0H,QAAQ0hC,EAAc,SAAUh1B,GACnCxJ,EAAMxG,KAAKwG,IAAIA,EAAKwJ,EAAKrN,KACzBsF,EAAMjI,KAAKiI,IAAIA,EAAM+H,EAAKrN,IAAMqN,EAAK9B,QACV5M,SAAvB0O,EAAK5B,KAAKwtB,WACZnsB,EAAGksB,UAAU3rB,EAAK5B,KAAKwtB,UAAU1tB,OAASlO,KAAKiI,IAAIwH,EAAGksB,UAAU3rB,EAAK5B,KAAKwtB,UAAU1tB,OAAO8B,EAAK9B,QAC5C,IAAhD62B,EAAiBtjC,QAAQuO,EAAK5B,KAAKwtB,YACrCmJ,EAAiB9hC,KAAK+M,EAAK5B,KAAKwtB,UAChCnsB,EAAGs1B,kBAAoB,MAIzBv+B,EAAM2N,EAAOknB,KAAM,CAErB,GAAIrX,GAASxd,EAAM2N,EAAOknB,IAC1BpzB,IAAO+b,EACPpoB,EAAK0H,QAAQ0hC,EAAc,SAAUh1B,GACnCA,EAAKrN,KAAOqhB,IAGhB9V,EAASjG,EAAMkM,EAAOnE,KAAK8P,SAAW,MAGtC5R,GAASiG,EAAOknB,KAAOlnB,EAAOnE,KAAK8P,QAErC5R,GAASlO,KAAKiI,IAAIiG,EAAQjT,KAAK6F,MAAMgiB,MAAM5U,OAG3C,IAAIk3B,GAAanqC,KAAKwvB,IAAI2a,UAC1BnqC,MAAK0H,IAAMyiC,EAAWU,UACtB7qC,KAAKsH,KAAO6iC,EAAWW,WACvB9qC,KAAKgT,MAAQm3B,EAAWta,YACxByT,EAAU3iC,EAAK8H,eAAezI,KAAM,SAAUiT,IAAWqwB,EAGzDA,EAAU3iC,EAAK8H,eAAezI,KAAK6F,MAAMgiB,MAAO,QAAS7nB,KAAKwvB,IAAI0a,MAAMtrB,cAAgB0kB,EACxFA,EAAU3iC,EAAK8H,eAAezI,KAAK6F,MAAMgiB,MAAO,SAAU7nB,KAAKwvB,IAAI0a,MAAMjmB,eAAiBqf,EAG1FtjC,KAAKwvB,IAAI5jB,WAAW0B,MAAM2F,OAAUA,EAAS,KAC7CjT,KAAKwvB,IAAI2a,WAAW78B,MAAM2F,OAAUA,EAAS,KAC7CjT,KAAKwvB,IAAI3H,MAAMva,MAAM2F,OAASA,EAAS,IAGvC,KAAK,GAAI5N,GAAI,EAAG0lC,EAAK/qC,KAAK+pC,aAAavkC,OAAYulC,EAAJ1lC,EAAQA,IAAK,CAC1D,GAAI0P,GAAO/U,KAAK+pC,aAAa1kC,EAC7B0P,GAAKi2B,YAAY9xB,GAGnB,MAAOoqB,IAMT3gC,EAAMgR,UAAU0yB,KAAO,WAChBrmC,KAAKwvB,IAAI3H,MAAMje,YAClB5J,KAAKu1B,QAAQ/F,IAAIyb,SAAS/4B,YAAYlS,KAAKwvB,IAAI3H,OAG5C7nB,KAAKwvB,IAAI2a,WAAWvgC,YACvB5J,KAAKu1B,QAAQ/F,IAAI2a,WAAWj4B,YAAYlS,KAAKwvB,IAAI2a,YAG9CnqC,KAAKwvB,IAAI5jB,WAAWhC,YACvB5J,KAAKu1B,QAAQ/F,IAAI5jB,WAAWsG,YAAYlS,KAAKwvB,IAAI5jB,YAG9C5L,KAAKwvB,IAAI4Q,KAAKx2B,YACjB5J,KAAKu1B,QAAQ/F,IAAI4Q,KAAKluB,YAAYlS,KAAKwvB,IAAI4Q,OAO/Cz9B,EAAMgR,UAAUyyB,KAAO,WACrB,GAAIve,GAAQ7nB,KAAKwvB,IAAI3H,KACjBA,GAAMje,YACRie,EAAMje,WAAWgI,YAAYiW,EAG/B,IAAIsiB,GAAanqC,KAAKwvB,IAAI2a,UACtBA,GAAWvgC,YACbugC,EAAWvgC,WAAWgI,YAAYu4B,EAGpC,IAAIv+B,GAAa5L,KAAKwvB,IAAI5jB,UACtBA,GAAWhC,YACbgC,EAAWhC,WAAWgI,YAAYhG,EAGpC,IAAIw0B,GAAOpgC,KAAKwvB,IAAI4Q,IAChBA,GAAKx2B,YACPw2B,EAAKx2B,WAAWgI,YAAYwuB,IAQhCz9B,EAAMgR,UAAUD,IAAM,SAASqB,GAW7B,GAVA/U,KAAKgC,MAAM+S,EAAK1U,IAAM0U,EACtBA,EAAKm2B,UAAUlrC,MAGYqG,SAAvB0O,EAAK5B,KAAKwtB,UAC+Bt6B,SAAvCrG,KAAK0gC,UAAU3rB,EAAK5B,KAAKwtB,YAC3B3gC,KAAK0gC,UAAU3rB,EAAK5B,KAAKwtB,WAAa1tB,OAAO,IAIV,IAAnCjT,KAAK+pC,aAAavjC,QAAQuO,GAAa,CACzC,GAAI9F,GAAQjP,KAAKu1B,QAAQjB,KAAKrlB,KAC9BjP,MAAKmrC,gBAAgBp2B,EAAM/U,KAAK+pC,aAAc96B,KAQlDtM,EAAMgR,UAAUiD,OAAS,SAAS7B,SACzB/U,MAAKgC,MAAM+S,EAAK1U,IACvB0U,EAAKm2B,UAAUlrC,KAAKu1B,QAGpB,IAAIptB,GAAQnI,KAAK+pC,aAAavjC,QAAQuO,EACzB,KAAT5M,GAAanI,KAAK+pC,aAAa3hC,OAAOD,EAAO,IASnDxF,EAAMgR,UAAUy3B,kBAAoB,SAASr2B,GAC3C/U,KAAKu1B,QAAQ8V,WAAWt2B,EAAK1U,KAM/BsC,EAAMgR,UAAUoC,MAAQ,WACtB,GAAIvN,GAAQ7H,EAAK4H,QAAQvI,KAAKgC,MAC9BhC,MAAKgP,aAAag7B,QAAUxhC,EAC5BxI,KAAKgP,aAAai7B,MAAQjqC,KAAKsrC,qBAAqB9iC,GAEpD3G,EAAMi+B,aAAa9/B,KAAKgP,aAAag7B,SACrCnoC,EAAMk+B,WAAW//B,KAAKgP,aAAai7B,QASrCtnC,EAAMgR,UAAU23B,qBAAuB,SAAS9iC,GAG9C,IAAK,GAFD+iC,MAEKlmC,EAAI,EAAGA,EAAImD,EAAMhD,OAAQH,IAC5BmD,EAAMnD,YAAchD,IACtBkpC,EAASvjC,KAAKQ,EAAMnD,GAGxB,OAAOkmC,IAWT5oC,EAAMgR,UAAU62B,oBAAsB,SAASx7B,EAAc+6B,EAAc96B,GACzE,GAAIu8B,GAEAnmC,EADAomC,IAKJ,IAAI1B,EAAavkC,OAAS,EACxB,IAAKH,EAAI,EAAGA,EAAI0kC,EAAavkC,OAAQH,IACnCrF,KAAKmrC,gBAAgBpB,EAAa1kC,GAAIomC,EAAiBx8B,EAMzDu8B,GAD4B,GAA1BC,EAAgBjmC,OACE7E,EAAKoO,aAAaC,EAAag7B,QAAS/6B,EAAO,OAAO,SAGtDD,EAAag7B,QAAQxjC,QAAQilC,EAAgB,GAInE,IAAIC,GAAkB/qC,EAAKoO,aAAaC,EAAai7B,MAAOh7B,EAAO,OAAO,MAG1E,IAAyB,IAArBu8B,EAAyB,CAC3B,IAAKnmC,EAAImmC,EAAmBnmC,GAAK,IAC3BrF,KAAK2rC,kBAAkB38B,EAAag7B,QAAQ3kC,GAAIomC,EAAiBx8B,GADnC5J,KAGpC,IAAKA,EAAImmC,EAAoB,EAAGnmC,EAAI2J,EAAag7B,QAAQxkC,SACnDxF,KAAK2rC,kBAAkB38B,EAAag7B,QAAQ3kC,GAAIomC,EAAiBx8B,GADN5J,MAMnE,GAAuB,IAAnBqmC,EAAuB,CACzB,IAAKrmC,EAAIqmC,EAAiBrmC,GAAK,IACzBrF,KAAK2rC,kBAAkB38B,EAAai7B,MAAM5kC,GAAIomC,EAAiBx8B,GADnC5J,KAGlC,IAAKA,EAAIqmC,EAAkB,EAAGrmC,EAAI2J,EAAai7B,MAAMzkC,SAC/CxF,KAAK2rC,kBAAkB38B,EAAai7B,MAAM5kC,GAAIomC,EAAiBx8B,GADR5J,MAK/D,MAAOomC,IAeT9oC,EAAMgR,UAAUg4B,kBAAoB,SAAS52B,EAAMg1B,EAAc96B,GAC7D,MAAI8F,GAAKnF,UAAUX,IACZ8F,EAAK61B,WAAW71B,EAAKsxB,OAC1BtxB,EAAK62B,cAC6B,IAA9B7B,EAAavjC,QAAQuO,IACvBg1B,EAAa/hC,KAAK+M,IAEb,IAGHA,EAAK61B,WAAW71B,EAAKqxB,QAClB,IAebzjC,EAAMgR,UAAUw3B,gBAAkB,SAASp2B,EAAMg1B,EAAc96B,GACvD8F,EAAKnF,UAAUX,IACZ8F,EAAK61B,WAAW71B,EAAKsxB,OAE1BtxB,EAAK62B,cACL7B,EAAa/hC,KAAK+M,IAGdA,EAAK61B,WAAW71B,EAAKqxB,QAI/BvmC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAyB9B,QAAS0C,GAAQ0xB,EAAMzlB,GACrB7O,KAAKs0B,KAAOA,EAEZt0B,KAAKg0B,gBACHrtB,KAAM,KACNutB,YAAa,SACb2X,MAAO,OACPhqC,OAAO,EACPiqC,WAAY,KAEZC,YAAY,EACZC,UACEC,YAAY,EACZ/F,aAAa,EACbxyB,KAAK,EACLkD,QAAQ,GAGVs1B,MAAO,SAAUn3B,EAAMzM,GACrBA,EAASyM,IAEXo3B,SAAU,SAAUp3B,EAAMzM,GACxBA,EAASyM,IAEXq3B,OAAQ,SAAUr3B,EAAMzM,GACtBA,EAASyM,IAEXs3B,SAAU,SAAUt3B,EAAMzM,GACxBA,EAASyM,IAEXu3B,SAAU,SAAUv3B,EAAMzM,GACxBA,EAASyM,IAGXmE,QACEnE,MACE6P,WAAY,GACZC,SAAU,IAEZub,KAAM,IAERhd,QAAS,GAIXpjB,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBAGpCh0B,KAAKusC,aACH5lC,MAAOkJ,MAAO,OAAQS,IAAK,SAG7BtQ,KAAKw6B,YACH5F,SAAUN,EAAK3zB,KAAKi0B,SACpBI,OAAQV,EAAK3zB,KAAKq0B,QAEpBh1B,KAAKwvB,OACLxvB,KAAK6F,SACL7F,KAAK4D,OAAS,IAEd,IAAI4Q,GAAKxU,IACTA,MAAKw1B,UAAY,KACjBx1B,KAAKy1B,WAAa,KAGlBz1B,KAAKwsC,eACH94B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGi4B,OAAOt4B,EAAOnS,QAEnBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGk4B,UAAUv4B,EAAOnS,QAEtB4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGm4B,UAAUx4B,EAAOnS,SAKxBhC,KAAK4sC,gBACHl5B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGq4B,aAAa14B,EAAOnS,QAEzBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGs4B,gBAAgB34B,EAAOnS,QAE5B4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGu4B,gBAAgB54B,EAAOnS,SAI9BhC,KAAKgC,SACLhC,KAAK8zB,UACL9zB,KAAKgtC,YAELhtC,KAAKitC,aACLjtC,KAAKktC,YAAa,EAElBltC,KAAKmtC,eAGLntC,KAAKq0B,UAELr0B,KAAKkc,WAAWrN,GA7HlB,GAAIu1B,GAASlkC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BoC,EAAYpC,EAAoB,IAChCyC,EAAQzC,EAAoB,IAC5BiC,EAAUjC,EAAoB,IAC9BkC,EAAYlC,EAAoB,IAChCmC,EAAYnC,EAAoB,IAChCgC,EAAiBhC,EAAoB,IAGrCktC,EAAY,eAoHhBxqC,GAAQ+Q,UAAY,GAAIrR,GAGxBM,EAAQ6U,OACN7L,WAAY1J,EACZmrC,IAAKlrC,EACL8M,MAAO5M,EACPsQ,MAAOvQ,GAMTQ,EAAQ+Q,UAAU0gB,QAAU,WAC1B,GAAI3V,GAAQ1M,SAASM,cAAc,MACnCoM,GAAM7W,UAAY,UAClB6W,EAAM,oBAAsB1e,KAC5BA,KAAKwvB,IAAI9Q,MAAQA,CAGjB,IAAI9S,GAAaoG,SAASM,cAAc,MACxC1G,GAAW/D,UAAY,aACvB6W,EAAMxM,YAAYtG,GAClB5L,KAAKwvB,IAAI5jB,WAAaA,CAGtB,IAAIu+B,GAAan4B,SAASM,cAAc,MACxC63B,GAAWtiC,UAAY,aACvB6W,EAAMxM,YAAYi4B,GAClBnqC,KAAKwvB,IAAI2a,WAAaA,CAGtB,IAAI/J,GAAOpuB,SAASM,cAAc,MAClC8tB,GAAKv4B,UAAY,OACjB7H,KAAKwvB,IAAI4Q,KAAOA,CAGhB,IAAI6K,GAAWj5B,SAASM,cAAc,MACtC24B,GAASpjC,UAAY,WACrB7H,KAAKwvB,IAAIyb,SAAWA,EAGpBjrC,KAAKstC,mBAMLttC,KAAK4D,OAASwgC,EAAOpkC,KAAKs0B,KAAK9E,IAAIkI,iBACjC4M,iBAAiB,IAInBtkC,KAAK4D,OAAOgQ,GAAG,QAAa5T,KAAK09B,SAASjJ,KAAKz0B,OAC/CA,KAAK4D,OAAOgQ,GAAG,YAAa5T,KAAKq9B,aAAa5I,KAAKz0B,OACnDA,KAAK4D,OAAOgQ,GAAG,OAAa5T,KAAKs9B,QAAQ7I,KAAKz0B,OAC9CA,KAAK4D,OAAOgQ,GAAG,UAAa5T,KAAKu9B,WAAW9I,KAAKz0B,OAGjDA,KAAK4D,OAAOgQ,GAAG,MAAQ5T,KAAKutC,cAAc9Y,KAAKz0B,OAG/CA,KAAK4D,OAAOgQ,GAAG,OAAQ5T,KAAKwtC,mBAAmB/Y,KAAKz0B,OAGpDA,KAAK4D,OAAOgQ,GAAG,YAAa5T,KAAKytC,WAAWhZ,KAAKz0B,OAGjDA,KAAKqmC,QAmEPzjC,EAAQ+Q,UAAUuI,WAAa,SAASrN,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAC3H3N,GAAKiF,gBAAgB0I,EAAQtO,KAAK6O,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQqK,QACjBlZ,KAAK6O,QAAQqK,OAAOknB,KAAOvxB,EAAQqK,OACnClZ,KAAK6O,QAAQqK,OAAOnE,KAAK6P,WAAa/V,EAAQqK,OAC9ClZ,KAAK6O,QAAQqK,OAAOnE,KAAK8P,SAAWhW,EAAQqK,QAEX,gBAAnBrK,GAAQqK,SACtBvY,EAAKiF,iBAAiB,QAAS5F,KAAK6O,QAAQqK,OAAQrK,EAAQqK,QACxD,QAAUrK,GAAQqK,SACe,gBAAxBrK,GAAQqK,OAAOnE,MACxB/U,KAAK6O,QAAQqK,OAAOnE,KAAK6P,WAAa/V,EAAQqK,OAAOnE,KACrD/U,KAAK6O,QAAQqK,OAAOnE,KAAK8P,SAAWhW,EAAQqK,OAAOnE,MAEb,gBAAxBlG,GAAQqK,OAAOnE,MAC7BpU,EAAKiF,iBAAiB,aAAc,YAAa5F,KAAK6O,QAAQqK,OAAOnE,KAAMlG,EAAQqK,OAAOnE,SAM9F,YAAclG,KACgB,iBAArBA,GAAQm9B,UACjBhsC,KAAK6O,QAAQm9B,SAASC,WAAcp9B,EAAQm9B,SAC5ChsC,KAAK6O,QAAQm9B,SAAS9F,YAAcr3B,EAAQm9B,SAC5ChsC,KAAK6O,QAAQm9B,SAASt4B,IAAc7E,EAAQm9B,SAC5ChsC,KAAK6O,QAAQm9B,SAASp1B,OAAc/H,EAAQm9B,UAET,gBAArBn9B,GAAQm9B,UACtBrrC,EAAKiF,iBAAiB,aAAc,cAAe,MAAO,UAAW5F,KAAK6O,QAAQm9B,SAAUn9B,EAAQm9B,UAKxG,IAAI0B,GAAc,SAAWl3B,GAC3B,GAAIm3B,GAAK9+B,EAAQ2H,EACjB,IAAIm3B,EAAI,CACN,KAAMA,YAAcC,WAClB,KAAM,IAAIlqC,OAAM,UAAY8S,EAAO,uBAAyBA,EAAO,mBAErExW,MAAK6O,QAAQ2H,GAAQm3B,IAEtBlZ,KAAKz0B,OACP,QAAS,WAAY,WAAY,SAAU,YAAYqI,QAAQqlC,GAGhE1tC,KAAK6tC,cAOTjrC,EAAQ+Q,UAAUk6B,UAAY,WAC5B7tC,KAAKgtC,YACLhtC,KAAKktC,YAAa,GAMpBtqC,EAAQ+Q,UAAUyvB,QAAU,WAC1BpjC,KAAKomC,OACLpmC,KAAK21B,SAAS,MACd31B,KAAK01B,UAAU,MAEf11B,KAAK4D,OAAS,KAEd5D,KAAKs0B,KAAO,KACZt0B,KAAKw6B,WAAa,MAMpB53B,EAAQ+Q,UAAUyyB,KAAO,WAEnBpmC,KAAKwvB,IAAI9Q,MAAM9U,YACjB5J,KAAKwvB,IAAI9Q,MAAM9U,WAAWgI,YAAY5R,KAAKwvB,IAAI9Q,OAI7C1e,KAAKwvB,IAAI4Q,KAAKx2B,YAChB5J,KAAKwvB,IAAI4Q,KAAKx2B,WAAWgI,YAAY5R,KAAKwvB,IAAI4Q,MAI5CpgC,KAAKwvB,IAAIyb,SAASrhC,YACpB5J,KAAKwvB,IAAIyb,SAASrhC,WAAWgI,YAAY5R,KAAKwvB,IAAIyb,WAQtDroC,EAAQ+Q,UAAU0yB,KAAO,WAElBrmC,KAAKwvB,IAAI9Q,MAAM9U,YAClB5J,KAAKs0B,KAAK9E,IAAIjE,OAAOrZ,YAAYlS,KAAKwvB,IAAI9Q,OAIvC1e,KAAKwvB,IAAI4Q,KAAKx2B,YACjB5J,KAAKs0B,KAAK9E,IAAIqU,mBAAmB3xB,YAAYlS,KAAKwvB,IAAI4Q,MAInDpgC,KAAKwvB,IAAIyb,SAASrhC,YACrB5J,KAAKs0B,KAAK9E,IAAIloB,KAAK4K,YAAYlS,KAAKwvB,IAAIyb,WAW5CroC,EAAQ+Q,UAAUuiB,aAAe,SAASzgB,GACxC,GAAIpQ,GAAG0lC,EAAI1qC,EAAI0U,CAMf,KAJW1O,QAAPoP,IAAkBA,MACjB3P,MAAMC,QAAQ0P,KAAMA,GAAOA,IAG3BpQ,EAAI,EAAG0lC,EAAK/qC,KAAKitC,UAAUznC,OAAYulC,EAAJ1lC,EAAQA,IAC9ChF,EAAKL,KAAKitC,UAAU5nC,GACpB0P,EAAO/U,KAAKgC,MAAM3B,GACd0U,GAAMA,EAAK+4B,UAKjB,KADA9tC,KAAKitC,aACA5nC,EAAI,EAAG0lC,EAAKt1B,EAAIjQ,OAAYulC,EAAJ1lC,EAAQA,IACnChF,EAAKoV,EAAIpQ,GACT0P,EAAO/U,KAAKgC,MAAM3B,GACd0U,IACF/U,KAAKitC,UAAUjlC,KAAK3H,GACpB0U,EAAKg5B,WASXnrC,EAAQ+Q,UAAUyiB,aAAe,WAC/B,MAAOp2B,MAAKitC,UAAU54B,YAOxBzR,EAAQ+Q,UAAUq6B,gBAAkB,WAClC,GAAI/+B,GAAQjP,KAAKs0B,KAAKrlB,MAAM0vB,WACxBr3B,EAAQtH,KAAKs0B,KAAK3zB,KAAKi0B,SAAS3lB,EAAMY,OACtC4W,EAAQzmB,KAAKs0B,KAAK3zB,KAAKi0B,SAAS3lB,EAAMqB,KAEtCmF,IACJ,KAAK,GAAIqhB,KAAW92B,MAAK8zB,OACvB,GAAI9zB,KAAK8zB,OAAOnuB,eAAemxB,GAM7B,IAAK,GALDpkB,GAAQ1S,KAAK8zB,OAAOgD,GACpBmX,EAAkBv7B,EAAMq3B,aAInB1kC,EAAI,EAAGA,EAAI4oC,EAAgBzoC,OAAQH,IAAK,CAC/C,GAAI0P,GAAOk5B,EAAgB5oC,EAEtB0P,GAAKzN,KAAOmf,GAAW1R,EAAKzN,KAAOyN,EAAK/B,MAAQ1L,GACnDmO,EAAIzN,KAAK+M,EAAK1U,IAMtB,MAAOoV,IAQT7S,EAAQ+Q,UAAUu6B,UAAY,SAAS7tC,GAErC,IAAK,GADD4sC,GAAYjtC,KAAKitC,UACZ5nC,EAAI,EAAG0lC,EAAKkC,EAAUznC,OAAYulC,EAAJ1lC,EAAQA,IAC7C,GAAI4nC,EAAU5nC,IAAMhF,EAAI,CACtB4sC,EAAU7kC,OAAO/C,EAAG,EACpB,SASNzC,EAAQ+Q,UAAUkN,OAAS,WACzB,GAAI3H,GAASlZ,KAAK6O,QAAQqK,OACtBjK,EAAQjP,KAAKs0B,KAAKrlB,MAClB/E,EAASvJ,EAAKkJ,OAAOK,OACrB2E,EAAU7O,KAAK6O,QACfqlB,EAAcrlB,EAAQqlB,YACtBoP,GAAU,EACV5kB,EAAQ1e,KAAKwvB,IAAI9Q,MACjBstB,EAAWn9B,EAAQm9B,SAASC,YAAcp9B,EAAQm9B,SAAS9F,WAG/DlmC,MAAK6F,MAAM6B,IAAM1H,KAAKs0B,KAAKC,SAAS7sB,IAAIuL,OAASjT,KAAKs0B,KAAKC,SAAS1oB,OAAOnE,IAC3E1H,KAAK6F,MAAMyB,KAAOtH,KAAKs0B,KAAKC,SAASjtB,KAAK0L,MAAQhT,KAAKs0B,KAAKC,SAAS1oB,OAAOvE,KAG5EoX,EAAM7W,UAAY,WAAamkC,EAAW,YAAc,IAGxD1I,EAAUtjC,KAAKmuC,gBAAkB7K,CAIjC,IAAI8K,GAAkBn/B,EAAMqB,IAAMrB,EAAMY,MACpCw+B,EAAUD,GAAmBpuC,KAAKsuC,qBAAyBtuC,KAAK6F,MAAMmN,OAAShT,KAAK6F,MAAM0oC,SAC1FF,KAAQruC,KAAKktC,YAAa,GAC9BltC,KAAKsuC,oBAAsBF,EAC3BpuC,KAAK6F,MAAM0oC,UAAYvuC,KAAK6F,MAAMmN,KAGlC,IAAIu3B,GAAUvqC,KAAKktC,WACfsB,EAAaxuC,KAAKyuC,cAClBC,GACE35B,KAAMmE,EAAOnE,KACbqrB,KAAMlnB,EAAOknB,MAEfuO,GACE55B,KAAMmE,EAAOnE,KACbqrB,KAAMlnB,EAAOnE,KAAK8P,SAAW,GAE/B5R,EAAS,EACTmhB,EAAYlb,EAAOknB,KAAOlnB,EAAOnE,KAAK8P,QA4B1C,OA3BAlkB,GAAK0H,QAAQrI,KAAK8zB,OAAQ,SAAUphB,GAClC,GAAIk8B,GAAel8B,GAAS87B,EAAcE,EAAcC,EACpDE,EAAen8B,EAAMmO,OAAO5R,EAAO2/B,EAAarE,EACpDjH,GAAUuL,GAAgBvL,EAC1BrwB,GAAUP,EAAMO,SAElBA,EAASlO,KAAKiI,IAAIiG,EAAQmhB,GAC1Bp0B,KAAKktC,YAAa,EAGlBxuB,EAAMpR,MAAM2F,OAAU/I,EAAO+I,GAG7BjT,KAAK6F,MAAMmN,MAAQ0L,EAAMmR,YACzB7vB,KAAK6F,MAAMoN,OAASA,EAKpBjT,KAAKwvB,IAAI4Q,KAAK9yB,MAAM5F,IAAMwC,EAAuB,OAAfgqB,EAC7Bl0B,KAAKs0B,KAAKC,SAAS7sB,IAAIuL,OAASjT,KAAKs0B,KAAKC,SAAS1oB,OAAOnE,IAC1D1H,KAAKs0B,KAAKC,SAAS7sB,IAAIuL,OAASjT,KAAKs0B,KAAKC,SAASmD,gBAAgBzkB,QACxEjT,KAAKwvB,IAAI4Q,KAAK9yB,MAAMhG,KAAO,IAG3Bg8B,EAAUtjC,KAAKqjC,cAAgBC,GAUjC1gC,EAAQ+Q,UAAU86B,YAAc,WAC9B,GAAIK,GAA+C,OAA5B9uC,KAAK6O,QAAQqlB,YAAwB,EAAKl0B,KAAKgtC,SAASxnC,OAAS,EACpFupC,EAAe/uC,KAAKgtC,SAAS8B,GAC7BN,EAAaxuC,KAAK8zB,OAAOib,IAAiB/uC,KAAK8zB,OAAOsZ,EAE1D,OAAOoB,IAAc,MAQvB5rC,EAAQ+Q,UAAU25B,iBAAmB,WACnC,GAAI0B,GAAYhvC,KAAK8zB,OAAOsZ,EAE5B,IAAIptC,KAAKy1B,WAEHuZ,IACFA,EAAU5I,aACHpmC,MAAK8zB,OAAOsZ,QAKrB,KAAK4B,EAAW,CACd,GAAI3uC,GAAK,KACL8S,EAAO,IACX67B,GAAY,GAAIrsC,GAAMtC,EAAI8S,EAAMnT,MAChCA,KAAK8zB,OAAOsZ,GAAa4B,CAEzB,KAAK,GAAIn5B,KAAU7V,MAAKgC,MAClBhC,KAAKgC,MAAM2D,eAAekQ,IAC5Bm5B,EAAUt7B,IAAI1T,KAAKgC,MAAM6T,GAI7Bm5B;EAAU3I,SAShBzjC,EAAQ+Q,UAAUs7B,YAAc,WAC9B,MAAOjvC,MAAKwvB,IAAIyb,UAOlBroC,EAAQ+Q,UAAUgiB,SAAW,SAAS3zB,GACpC,GACIyT,GADAjB,EAAKxU,KAELkvC,EAAelvC,KAAKw1B,SAGxB,IAAKxzB,EAGA,CAAA,KAAIA,YAAiBnB,IAAWmB,YAAiBlB,IAIpD,KAAM,IAAIoF,WAAU,kDAHpBlG,MAAKw1B,UAAYxzB,MAHjBhC,MAAKw1B,UAAY,IAoBnB,IAXI0Z,IAEFvuC,EAAK0H,QAAQrI,KAAKwsC,cAAe,SAAUlkC,EAAUgB,GACnD4lC,EAAan7B,IAAIzK,EAAOhB,KAI1BmN,EAAMy5B,EAAa94B,SACnBpW,KAAK2sC,UAAUl3B,IAGbzV,KAAKw1B,UAAW,CAElB,GAAIn1B,GAAKL,KAAKK,EACdM,GAAK0H,QAAQrI,KAAKwsC,cAAe,SAAUlkC,EAAUgB,GACnDkL,EAAGghB,UAAU5hB,GAAGtK,EAAOhB,EAAUjI,KAInCoV,EAAMzV,KAAKw1B,UAAUpf,SACrBpW,KAAKysC,OAAOh3B,GAGZzV,KAAKstC,qBAQT1qC,EAAQ+Q,UAAUw7B,SAAW,WAC3B,MAAOnvC,MAAKw1B,WAOd5yB,EAAQ+Q,UAAU+hB,UAAY,SAAS5B,GACrC,GACIre,GADAjB,EAAKxU,IAgBT,IAZIA,KAAKy1B,aACP90B,EAAK0H,QAAQrI,KAAK4sC,eAAgB,SAAUtkC,EAAUgB,GACpDkL,EAAGihB,WAAWxhB,YAAY3K,EAAOhB,KAInCmN,EAAMzV,KAAKy1B,WAAWrf,SACtBpW,KAAKy1B,WAAa,KAClBz1B,KAAK+sC,gBAAgBt3B,IAIlBqe,EAGA,CAAA,KAAIA,YAAkBjzB,IAAWizB,YAAkBhzB,IAItD,KAAM,IAAIoF,WAAU,kDAHpBlG,MAAKy1B,WAAa3B,MAHlB9zB,MAAKy1B,WAAa,IASpB,IAAIz1B,KAAKy1B,WAAY,CAEnB,GAAIp1B,GAAKL,KAAKK,EACdM,GAAK0H,QAAQrI,KAAK4sC,eAAgB,SAAUtkC,EAAUgB,GACpDkL,EAAGihB,WAAW7hB,GAAGtK,EAAOhB,EAAUjI,KAIpCoV,EAAMzV,KAAKy1B,WAAWrf,SACtBpW,KAAK6sC,aAAap3B,GAIpBzV,KAAKstC,mBAGLttC,KAAKovC,SAELpvC,KAAKs0B,KAAKE,QAAQrH,KAAK,WAOzBvqB,EAAQ+Q,UAAU07B,UAAY,WAC5B,MAAOrvC,MAAKy1B,YAOd7yB,EAAQ+Q,UAAU03B,WAAa,SAAShrC,GACtC,GAAI0U,GAAO/U,KAAKw1B,UAAUhgB,IAAInV,GAC1Bm2B,EAAUx2B,KAAKw1B,UAAUnf,YAEzBtB,IAEF/U,KAAK6O,QAAQw9B,SAASt3B,EAAM,SAAUA,GAChCA,GAGFyhB,EAAQ5f,OAAOvW,MAWvBuC,EAAQ+Q,UAAU+4B,UAAY,SAASj3B,GACrC,GAAIjB,GAAKxU,IAETyV,GAAIpN,QAAQ,SAAUhI,GACpB,GAAIg2B,GAAW7hB,EAAGghB,UAAUhgB,IAAInV,EAAImU,EAAG+3B,aACnCx3B,EAAOP,EAAGxS,MAAM3B,GAChBsG,EAAO0vB,EAAS1vB,MAAQ6N,EAAG3F,QAAQlI,OAAS0vB,EAAS/lB,IAAM,QAAU,OAErEnK,EAAcvD,EAAQ6U,MAAM9Q,EAchC,IAZIoO,IAEG5O,GAAiB4O,YAAgB5O,GAMpCqO,EAAGe,YAAYR,EAAMshB,IAJrB7hB,EAAG86B,YAAYv6B,GACfA,EAAO,QAONA,EAAM,CAET,IAAI5O,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnDoO,GAAO,GAAI5O,GAAYkwB,EAAU7hB,EAAGgmB,WAAYhmB,EAAG3F,SACnDkG,EAAK1U,GAAKA,EACVmU,EAAGC,SAASM,MAalB/U,KAAKovC,SACLpvC,KAAKktC,YAAa,EAClBltC,KAAKs0B,KAAKE,QAAQrH,KAAK,WAQzBvqB,EAAQ+Q,UAAU84B,OAAS7pC,EAAQ+Q,UAAU+4B,UAO7C9pC,EAAQ+Q,UAAUg5B,UAAY,SAASl3B,GACrC,GAAI8B,GAAQ,EACR/C,EAAKxU,IACTyV,GAAIpN,QAAQ,SAAUhI,GACpB,GAAI0U,GAAOP,EAAGxS,MAAM3B,EAChB0U,KACFwC,IACA/C,EAAG86B,YAAYv6B,MAIfwC,IAEFvX,KAAKovC,SACLpvC,KAAKktC,YAAa,EAClBltC,KAAKs0B,KAAKE,QAAQrH,KAAK,YAQ3BvqB,EAAQ+Q,UAAUy7B,OAAS,WAGzBzuC,EAAK0H,QAAQrI,KAAK8zB,OAAQ,SAAUphB,GAClCA,EAAMqD,WASVnT,EAAQ+Q,UAAUm5B,gBAAkB,SAASr3B,GAC3CzV,KAAK6sC,aAAap3B,IAQpB7S,EAAQ+Q,UAAUk5B,aAAe,SAASp3B,GACxC,GAAIjB,GAAKxU,IAETyV,GAAIpN,QAAQ,SAAUhI,GACpB,GAAIkvC,GAAY/6B,EAAGihB,WAAWjgB,IAAInV,GAC9BqS,EAAQ8B,EAAGsf,OAAOzzB,EAEtB,IAAKqS,EA6BHA,EAAM6F,QAAQg3B,OA7BJ,CAEV,GAAIlvC,GAAM+sC,EACR,KAAM,IAAI1pC,OAAM,qBAAuBrD,EAAK,qBAG9C,IAAImvC,GAAeppC,OAAOqI,OAAO+F,EAAG3F,QACpClO,GAAKwE,OAAOqqC,GACVv8B,OAAQ,OAGVP,EAAQ,GAAI/P,GAAMtC,EAAIkvC,EAAW/6B,GACjCA,EAAGsf,OAAOzzB,GAAMqS,CAGhB,KAAK,GAAImD,KAAUrB,GAAGxS,MACpB,GAAIwS,EAAGxS,MAAM2D,eAAekQ,GAAS,CACnC,GAAId,GAAOP,EAAGxS,MAAM6T,EAChBd,GAAK5B,KAAKT,OAASrS,GACrBqS,EAAMgB,IAAIqB,GAKhBrC,EAAMqD,QACNrD,EAAM2zB,UAQVrmC,KAAKs0B,KAAKE,QAAQrH,KAAK,WAQzBvqB,EAAQ+Q,UAAUo5B,gBAAkB,SAASt3B,GAC3C,GAAIqe,GAAS9zB,KAAK8zB,MAClBre,GAAIpN,QAAQ,SAAUhI,GACpB,GAAIqS,GAAQohB,EAAOzzB,EAEfqS,KACFA,EAAM0zB,aACCtS,GAAOzzB,MAIlBL,KAAK6tC,YAEL7tC,KAAKs0B,KAAKE,QAAQrH,KAAK,WAQzBvqB,EAAQ+Q,UAAUw6B,aAAe,WAC/B,GAAInuC,KAAKy1B,WAAY,CAEnB,GAAIuX,GAAWhtC,KAAKy1B,WAAWrf,QAC7BL,MAAO/V,KAAK6O,QAAQi9B,aAGlBxN,GAAW39B,EAAK8F,WAAWumC,EAAUhtC,KAAKgtC,SAC9C,IAAI1O,EAAS,CAEX,GAAIxK,GAAS9zB,KAAK8zB,MAClBkZ,GAAS3kC,QAAQ,SAAUyuB,GACzBhD,EAAOgD,GAASsP,SAIlB4G,EAAS3kC,QAAQ,SAAUyuB,GACzBhD,EAAOgD,GAASuP,SAGlBrmC,KAAKgtC,SAAWA,EAGlB,MAAO1O,GAGP,OAAO,GASX17B,EAAQ+Q,UAAUc,SAAW,SAASM,GACpC/U,KAAKgC,MAAM+S,EAAK1U,IAAM0U,CAGtB,IAAI+hB,GAAU92B,KAAKy1B,WAAa1gB,EAAK5B,KAAKT,MAAQ06B,EAC9C16B,EAAQ1S,KAAK8zB,OAAOgD,EACpBpkB,IAAOA,EAAMgB,IAAIqB,IASvBnS,EAAQ+Q,UAAU4B,YAAc,SAASR,EAAMshB,GAC7C,GAAIoZ,GAAa16B,EAAK5B,KAAKT,KAM3B,IAHAqC,EAAKwD,QAAQ8d,GAGToZ,GAAc16B,EAAK5B,KAAKT,MAAO,CACjC,GAAIg9B,GAAW1vC,KAAK8zB,OAAO2b,EACvBC,IAAUA,EAAS94B,OAAO7B,EAE9B,IAAI+hB,GAAU92B,KAAKy1B,WAAa1gB,EAAK5B,KAAKT,MAAQ06B,EAC9C16B,EAAQ1S,KAAK8zB,OAAOgD,EACpBpkB,IAAOA,EAAMgB,IAAIqB,KAUzBnS,EAAQ+Q,UAAU27B,YAAc,SAASv6B,GAEvCA,EAAKqxB,aAGEpmC,MAAKgC,MAAM+S,EAAK1U,GAGvB,IAAI8H,GAAQnI,KAAKitC,UAAUzmC,QAAQuO,EAAK1U,GAC3B,KAAT8H,GAAanI,KAAKitC,UAAU7kC,OAAOD,EAAO,EAG9C,IAAI2uB,GAAU92B,KAAKy1B,WAAa1gB,EAAK5B,KAAKT,MAAQ06B,EAC9C16B,EAAQ1S,KAAK8zB,OAAOgD,EACpBpkB,IAAOA,EAAMkE,OAAO7B,IAS1BnS,EAAQ+Q,UAAU23B,qBAAuB,SAAS9iC,GAGhD,IAAK,GAFD+iC,MAEKlmC,EAAI,EAAGA,EAAImD,EAAMhD,OAAQH,IAC5BmD,EAAMnD,YAAchD,IACtBkpC,EAASvjC,KAAKQ,EAAMnD,GAGxB,OAAOkmC,IAYT3oC,EAAQ+Q,UAAU+pB,SAAW,SAAUp0B,GAErCtJ,KAAKmtC,YAAYp4B,KAAOnS,EAAQ+sC,eAAermC,IAQjD1G,EAAQ+Q,UAAU0pB,aAAe,SAAU/zB,GACzC,GAAKtJ,KAAK6O,QAAQm9B,SAASC,YAAejsC,KAAK6O,QAAQm9B,SAAS9F,YAAhE,CAIA,GAEIrgC,GAFAkP,EAAO/U,KAAKmtC,YAAYp4B,MAAQ,KAChCP,EAAKxU,IAGT,IAAI+U,GAAQA,EAAK66B,SAAU,CACzB,GAAIC,GAAevmC,EAAMG,OAAOomC,aAC5BC,EAAgBxmC,EAAMG,OAAOqmC,aAE7BD,IACFhqC,GACEkP,KAAM86B,GAGJr7B,EAAG3F,QAAQm9B,SAASC,aACtBpmC,EAAMgK,MAAQkF,EAAK5B,KAAKtD,MAAMhJ,WAE5B2N,EAAG3F,QAAQm9B,SAAS9F,aAClB,SAAWnxB,GAAK5B,OAAMtN,EAAM6M,MAAQqC,EAAK5B,KAAKT,OAGpD1S,KAAKmtC,YAAY4C,WAAalqC,IAEvBiqC,GACPjqC,GACEkP,KAAM+6B,GAGJt7B,EAAG3F,QAAQm9B,SAASC,aACtBpmC,EAAMyK,IAAMyE,EAAK5B,KAAK7C,IAAIzJ,WAExB2N,EAAG3F,QAAQm9B,SAAS9F,aAClB,SAAWnxB,GAAK5B,OAAMtN,EAAM6M,MAAQqC,EAAK5B,KAAKT,OAGpD1S,KAAKmtC,YAAY4C,WAAalqC,IAG9B7F,KAAKmtC,YAAY4C,UAAY/vC,KAAKo2B,eAAe1oB,IAAI,SAAUrN,GAC7D,GAAI0U,GAAOP,EAAGxS,MAAM3B,GAChBwF,GACFkP,KAAMA,EAWR,OARIP,GAAG3F,QAAQm9B,SAASC,aAClB,SAAWl3B,GAAK5B,OAAMtN,EAAMgK,MAAQkF,EAAK5B,KAAKtD,MAAMhJ,WACpD,OAASkO,GAAK5B,OAAQtN,EAAMyK,IAAMyE,EAAK5B,KAAK7C,IAAIzJ,YAElD2N,EAAG3F,QAAQm9B,SAAS9F,aAClB,SAAWnxB,GAAK5B,OAAMtN,EAAM6M,MAAQqC,EAAK5B,KAAKT,OAG7C7M,IAIXyD,EAAMm7B,qBASV7hC,EAAQ+Q,UAAU2pB,QAAU,SAAUh0B,GACpC,GAAItJ,KAAKmtC,YAAY4C,UAAW,CAC9B,GAAIv7B,GAAKxU,KACLiP,EAAQjP,KAAKs0B,KAAKrlB,MAClB0lB,EAAO30B,KAAKs0B,KAAK3zB,KAAKg0B,MAAQ,KAC9BqK,EAAS11B,EAAMy1B,QAAQC,OACvB3iB,EAASrc,KAAK6F,MAAMmN,OAAS/D,EAAMqB,IAAMrB,EAAMY,OAC/CkZ,EAASiW,EAAS3iB,CAGtBrc,MAAKmtC,YAAY4C,UAAU1nC,QAAQ,SAAUxC,GAC3C,GAAImqC,KAEJ,IAAI,SAAWnqC,GAAO,CACpB,GAAIgK,GAAQ,GAAI1L,MAAK0B,EAAMgK,MAAQkZ,EACnCinB,GAASngC,MAAQ8kB,EAAOA,EAAK9kB,GAASA,EAGxC,GAAI,OAAShK,GAAO,CAClB,GAAIyK,GAAM,GAAInM,MAAK0B,EAAMyK,IAAMyY,EAC/BinB,GAAS1/B,IAAMqkB,EAAOA,EAAKrkB,GAAOA,EAGpC,GAAI,SAAWzK,GAAO,CAEpB,GAAI6M,GAAQ9P,EAAQqtC,gBAAgB3mC,EACpC0mC,GAASt9B,MAAQA,GAASA,EAAMokB,QAIlC,GAAIT,GAAW11B,EAAKwE,UAAWU,EAAMkP,KAAK5B,KAAM68B,EAChDx7B,GAAG3F,QAAQy9B,SAASjW,EAAU,SAAUA,GAClCA,GACF7hB,EAAG07B,iBAAiBrqC,EAAMkP,KAAMshB,OAKtCr2B,KAAKktC,YAAa,EAClBltC,KAAKs0B,KAAKE,QAAQrH,KAAK,UAEvB7jB,EAAMm7B,oBAUV7hC,EAAQ+Q,UAAUu8B,iBAAmB,SAASn7B,EAAMlP,GAE9C,SAAWA,KAAOkP,EAAK5B,KAAKtD,MAAQhK,EAAMgK,OAC1C,OAAShK,KAASkP,EAAK5B,KAAK7C,IAAQzK,EAAMyK,KAC1C,SAAWzK,IAASkP,EAAK5B,KAAKT,OAAS7M,EAAM6M,OAC/C1S,KAAKmwC,aAAap7B,EAAMlP,EAAM6M,QAUlC9P,EAAQ+Q,UAAUw8B,aAAe,SAASp7B,EAAM+hB,GAC9C,GAAIpkB,GAAQ1S,KAAK8zB,OAAOgD,EACxB,IAAIpkB,GAASA,EAAMokB,SAAW/hB,EAAK5B,KAAKT,MAAO,CAC7C,GAAIg9B,GAAW36B,EAAK6uB,MACpB8L,GAAS94B,OAAO7B,GAChB26B,EAAS35B,QACTrD,EAAMgB,IAAIqB,GACVrC,EAAMqD,QAENhB,EAAK5B,KAAKT,MAAQA,EAAMokB,UAS5Bl0B,EAAQ+Q,UAAU4pB,WAAa,SAAUj0B,GACvC,GAAItJ,KAAKmtC,YAAY4C,UAAW,CAE9B,GAAIK,MACA57B,EAAKxU,KACLw2B,EAAUx2B,KAAKw1B,UAAUnf,aAEzB05B,EAAY/vC,KAAKmtC,YAAY4C,SACjC/vC,MAAKmtC,YAAY4C,UAAY,KAC7BA,EAAU1nC,QAAQ,SAAUxC,GAC1B,GAAIxF,GAAKwF,EAAMkP,KAAK1U,GAChBg2B,EAAW7hB,EAAGghB,UAAUhgB,IAAInV,EAAImU,EAAG+3B,aAEnCjO,GAAU,CACV,UAAWz4B,GAAMkP,KAAK5B,OACxBmrB,EAAWz4B,EAAMgK,OAAShK,EAAMkP,KAAK5B,KAAKtD,MAAMhJ,UAChDwvB,EAASxmB,MAAQlP,EAAK+F,QAAQb,EAAMkP,KAAK5B,KAAKtD,MACtC2mB,EAAQpjB,SAASzM,MAAQ6vB,EAAQpjB,SAASzM,KAAKkJ,OAAS,SAE9D,OAAShK,GAAMkP,KAAK5B,OACtBmrB,EAAUA,GAAaz4B,EAAMyK,KAAOzK,EAAMkP,KAAK5B,KAAK7C,IAAIzJ,UACxDwvB,EAAS/lB,IAAM3P,EAAK+F,QAAQb,EAAMkP,KAAK5B,KAAK7C,IACpCkmB,EAAQpjB,SAASzM,MAAQ6vB,EAAQpjB,SAASzM,KAAK2J,KAAO,SAE5D,SAAWzK,GAAMkP,KAAK5B,OACxBmrB,EAAUA,GAAaz4B,EAAM6M,OAAS7M,EAAMkP,KAAK5B,KAAKT,MACtD2jB,EAAS3jB,MAAQ7M,EAAMkP,KAAK5B,KAAKT,OAI/B4rB,GACF9pB,EAAG3F,QAAQu9B,OAAO/V,EAAU,SAAUA,GAChCA,GAEFA,EAASG,EAAQljB,UAAYjT,EAC7B+vC,EAAQpoC,KAAKquB,KAIb7hB,EAAG07B,iBAAiBrqC,EAAMkP,KAAMlP,GAEhC2O,EAAG04B,YAAa,EAChB14B,EAAG8f,KAAKE,QAAQrH,KAAK,eAOzBijB,EAAQ5qC,QACVgxB,EAAQrhB,OAAOi7B,GAGjB9mC,EAAMm7B,oBASV7hC,EAAQ+Q,UAAU45B,cAAgB,SAAUjkC,GAC1C,GAAKtJ,KAAK6O,QAAQk9B,WAAlB,CAEA,GAAIsE,GAAW/mC,EAAMy1B,QAAQuR,UAAYhnC,EAAMy1B,QAAQuR,SAASD,QAC5DE,EAAWjnC,EAAMy1B,QAAQuR,UAAYhnC,EAAMy1B,QAAQuR,SAASC,QAChE,IAAIF,GAAWE,EAEb,WADAvwC,MAAKwtC,mBAAmBlkC,EAI1B,IAAIknC,GAAexwC,KAAKo2B,eAEpBrhB,EAAOnS,EAAQ+sC,eAAermC,GAC9B2jC,EAAYl4B,GAAQA,EAAK1U,MAC7BL,MAAKk2B,aAAa+W,EAElB,IAAIwD,GAAezwC,KAAKo2B,gBAIpBqa,EAAajrC,OAAS,GAAKgrC,EAAahrC,OAAS,IACnDxF,KAAKs0B,KAAKE,QAAQrH,KAAK,UACrBnrB,MAAOhC,KAAKo2B,mBAUlBxzB,EAAQ+Q,UAAU85B,WAAa,SAAUnkC,GACvC,GAAKtJ,KAAK6O,QAAQk9B,YACb/rC,KAAK6O,QAAQm9B,SAASt4B,IAA3B,CAEA,GAAIc,GAAKxU,KACL20B,EAAO30B,KAAKs0B,KAAK3zB,KAAKg0B,MAAQ,KAC9B5f,EAAOnS,EAAQ+sC,eAAermC,EAElC,IAAIyL,EAAM,CAIR,GAAIshB,GAAW7hB,EAAGghB,UAAUhgB,IAAIT,EAAK1U,GACrCL,MAAK6O,QAAQs9B,SAAS9V,EAAU,SAAUA,GACpCA,GACF7hB,EAAGghB,UAAUrgB,OAAOkhB,SAIrB,CAEH,GAAIqa,GAAO/vC,EAAKwG,gBAAgBnH,KAAKwvB,IAAI9Q,OACrClM,EAAIlJ,EAAMy1B,QAAQxT,OAAOuS,MAAQ4S,EACjC7gC,EAAQ7P,KAAKs0B,KAAK3zB,KAAKq0B,OAAOxiB,GAC9Bm+B,GACF9gC,MAAO8kB,EAAOA,EAAK9kB,GAASA,EAC5Bwf,QAAS,WAIX,IAA0B,UAAtBrvB,KAAK6O,QAAQlI,KAAkB,CACjC,GAAI2J,GAAMtQ,KAAKs0B,KAAK3zB,KAAKq0B,OAAOxiB,EAAIxS,KAAK6F,MAAMmN,MAAQ,EACvD29B,GAAQrgC,IAAMqkB,EAAOA,EAAKrkB,GAAOA,EAGnCqgC,EAAQ3wC,KAAKw1B,UAAUliB,UAAY3S,EAAKkE,YAExC,IAAI6N,GAAQ9P,EAAQqtC,gBAAgB3mC,EAChCoJ,KACFi+B,EAAQj+B,MAAQA,EAAMokB,SAIxB92B,KAAK6O,QAAQq9B,MAAMyE,EAAS,SAAU57B,GAChCA,GACFP,EAAGghB,UAAU9hB,IAAIqB,QAYzBnS,EAAQ+Q,UAAU65B,mBAAqB,SAAUlkC,GAC/C,GAAKtJ,KAAK6O,QAAQk9B,WAAlB,CAEA,GAAIkB,GACAl4B,EAAOnS,EAAQ+sC,eAAermC,EAElC,IAAIyL,EAAM,CAERk4B,EAAYjtC,KAAKo2B,cACjB,IAAIjuB,GAAQ8kC,EAAUzmC,QAAQuO,EAAK1U,GACtB,KAAT8H,EAEF8kC,EAAUjlC,KAAK+M,EAAK1U,IAIpB4sC,EAAU7kC,OAAOD,EAAO,GAE1BnI,KAAKk2B,aAAa+W,GAElBjtC,KAAKs0B,KAAKE,QAAQrH,KAAK,UACrBnrB,MAAOhC,KAAKo2B,oBAWlBxzB,EAAQ+sC,eAAiB,SAASrmC,GAEhC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO9D,eAAe,iBACxB,MAAO8D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASThH,EAAQqtC,gBAAkB,SAAS3mC,GAEjC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO9D,eAAe,kBACxB,MAAO8D,GAAO,iBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASThH,EAAQguC,kBAAoB,SAAStnC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO9D,eAAe,oBACxB,MAAO8D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGT/J,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAS9B,QAAS2C,GAAOyxB,EAAMzlB,EAASgiC,EAAMlM,GACnC3kC,KAAKs0B,KAAOA,EACZt0B,KAAKg0B,gBACHllB,SAAS,EACTg2B,OAAO,EACPgM,SAAU,GACVC,YAAa,EACbzpC,MACEwgB,SAAS,EACT9E,SAAU,YAEZyD,OACEqB,SAAS,EACT9E,SAAU,aAGdhjB,KAAK6wC,KAAOA,EACZ7wC,KAAK6O,QAAUlO,EAAKwE,UAAUnF,KAAKg0B,gBACnCh0B,KAAK2kC,iBAAmBA,EAExB3kC,KAAK8lC,eACL9lC,KAAKwvB,OACLxvB,KAAK8zB,UACL9zB,KAAK+lC,eAAiB,EACtB/lC,KAAKq0B,UAELr0B,KAAKkc,WAAWrN,GAjClB,GAAIlO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BoC,EAAYpC,EAAoB,GAkCpC2C,GAAO8Q,UAAY,GAAIrR,GAGvBO,EAAO8Q,UAAUqyB,SAAW,SAASne,EAAOoe,GACrCjmC,KAAK8zB,OAAOnuB,eAAekiB,KAC9B7nB,KAAK8zB,OAAOjM,GAASoe,GAEvBjmC,KAAK+lC,gBAAkB,GAGzBljC,EAAO8Q,UAAUuyB,YAAc,SAASre,EAAOoe,GAC7CjmC,KAAK8zB,OAAOjM,GAASoe,GAGvBpjC,EAAO8Q,UAAUwyB,YAAc,SAASte,GAClC7nB,KAAK8zB,OAAOnuB,eAAekiB,WACtB7nB,MAAK8zB,OAAOjM,GACnB7nB,KAAK+lC,gBAAkB,IAI3BljC,EAAO8Q,UAAU0gB,QAAU,WACzBr0B,KAAKwvB,IAAI9Q,MAAQ1M,SAASM,cAAc,OACxCtS,KAAKwvB,IAAI9Q,MAAM7W,UAAY,SAC3B7H,KAAKwvB,IAAI9Q,MAAMpR,MAAM0V,SAAW,WAChChjB,KAAKwvB,IAAI9Q,MAAMpR,MAAM5F,IAAM,OAC3B1H,KAAKwvB,IAAI9Q,MAAMpR,MAAMi5B,QAAU,QAE/BvmC,KAAKwvB,IAAIwhB,SAAWh/B,SAASM,cAAc,OAC3CtS,KAAKwvB,IAAIwhB,SAASnpC,UAAY,aAC9B7H,KAAKwvB,IAAIwhB,SAAS1jC,MAAM0V,SAAW,WACnChjB,KAAKwvB,IAAIwhB,SAAS1jC,MAAM5F,IAAM,MAE9B1H,KAAK0kC,IAAM1yB,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK0kC,IAAIp3B,MAAM0V,SAAW,WAC1BhjB,KAAK0kC,IAAIp3B,MAAM5F,IAAM,MACrB1H,KAAK0kC,IAAIp3B,MAAM0F,MAAQhT,KAAK6O,QAAQiiC,SAAW,EAAI,KAEnD9wC,KAAKwvB,IAAI9Q,MAAMxM,YAAYlS,KAAK0kC,KAChC1kC,KAAKwvB,IAAI9Q,MAAMxM,YAAYlS,KAAKwvB,IAAIwhB,WAMtCnuC,EAAO8Q,UAAUyyB,KAAO,WAElBpmC,KAAKwvB,IAAI9Q,MAAM9U,YACjB5J,KAAKwvB,IAAI9Q,MAAM9U,WAAWgI,YAAY5R,KAAKwvB,IAAI9Q,QAQnD7b,EAAO8Q,UAAU0yB,KAAO,WAEjBrmC,KAAKwvB,IAAI9Q,MAAM9U,YAClB5J,KAAKs0B,KAAK9E,IAAIjE,OAAOrZ,YAAYlS,KAAKwvB,IAAI9Q,QAI9C7b,EAAO8Q,UAAUuI,WAAa,SAASrN,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrD3N,GAAKqF,oBAAoBsI,EAAQtO,KAAK6O,QAASA,IAGjDhM,EAAO8Q,UAAUkN,OAAS,WACxB,GAAIimB,GAAe,CACnB,KAAK,GAAIhQ,KAAW92B,MAAK8zB,OACnB9zB,KAAK8zB,OAAOnuB,eAAemxB,KACO,GAAhC92B,KAAK8zB,OAAOgD,GAAShP,SAAkEzhB,SAA9CrG,KAAK2kC,iBAAiB3N,WAAWF,IAAuE,GAA7C92B,KAAK2kC,iBAAiB3N,WAAWF,IACvIgQ,IAKN,IAAuC,GAAnC9mC,KAAK6O,QAAQ7O,KAAK6wC,MAAM/oB,SAA2C,GAAvB9nB,KAAK+lC,gBAA+C,GAAxB/lC,KAAK6O,QAAQC,SAAoC,GAAhBg4B,EAC3G9mC,KAAKomC,WAEF,CACHpmC,KAAKqmC,OACmC,YAApCrmC,KAAK6O,QAAQ7O,KAAK6wC,MAAM7tB,UAA8D,eAApChjB,KAAK6O,QAAQ7O,KAAK6wC,MAAM7tB,UAC5EhjB,KAAKwvB,IAAI9Q,MAAMpR,MAAMhG,KAAO,MAC5BtH,KAAKwvB,IAAI9Q,MAAMpR,MAAMoa,UAAY,OACjC1nB,KAAKwvB,IAAIwhB,SAAS1jC,MAAMoa,UAAY,OACpC1nB,KAAKwvB,IAAIwhB,SAAS1jC,MAAMhG,KAAQtH,KAAK6O,QAAQiiC,SAAW,GAAM,KAC9D9wC,KAAKwvB,IAAIwhB,SAAS1jC,MAAMmZ,MAAQ,GAChCzmB,KAAK0kC,IAAIp3B,MAAMhG,KAAO,MACtBtH,KAAK0kC,IAAIp3B,MAAMmZ,MAAQ,KAGvBzmB,KAAKwvB,IAAI9Q,MAAMpR,MAAMmZ,MAAQ,MAC7BzmB,KAAKwvB,IAAI9Q,MAAMpR,MAAMoa,UAAY,QACjC1nB,KAAKwvB,IAAIwhB,SAAS1jC,MAAMoa,UAAY,QACpC1nB,KAAKwvB,IAAIwhB,SAAS1jC,MAAMmZ,MAASzmB,KAAK6O,QAAQiiC,SAAW,GAAM,KAC/D9wC,KAAKwvB,IAAIwhB,SAAS1jC,MAAMhG,KAAO,GAC/BtH,KAAK0kC,IAAIp3B,MAAMmZ,MAAQ,MACvBzmB,KAAK0kC,IAAIp3B,MAAMhG,KAAO,IAGgB,YAApCtH,KAAK6O,QAAQ7O,KAAK6wC,MAAM7tB,UAA8D,aAApChjB,KAAK6O,QAAQ7O,KAAK6wC,MAAM7tB,UAC5EhjB,KAAKwvB,IAAI9Q,MAAMpR,MAAM5F,IAAM,EAAI3D,OAAO/D,KAAKs0B,KAAK9E,IAAIjE,OAAOje,MAAM5F,IAAIwE,QAAQ,KAAK,KAAO,KACzFlM,KAAKwvB,IAAI9Q,MAAMpR,MAAMoV,OAAS,KAG9B1iB,KAAKwvB,IAAI9Q,MAAMpR,MAAMoV,OAAS,EAAI3e,OAAO/D,KAAKs0B,KAAK9E,IAAIjE,OAAOje,MAAM5F,IAAIwE,QAAQ,KAAK,KAAO,KAC5FlM,KAAKwvB,IAAI9Q,MAAMpR,MAAM5F,IAAM,IAGH,GAAtB1H,KAAK6O,QAAQi2B,OACf9kC,KAAKwvB,IAAI9Q,MAAMpR,MAAM0F,MAAQhT,KAAKwvB,IAAIwhB,SAASnhB,YAAc,GAAK,KAClE7vB,KAAKwvB,IAAIwhB,SAAS1jC,MAAMmZ,MAAQ,GAChCzmB,KAAKwvB,IAAIwhB,SAAS1jC,MAAMhG,KAAO,GAC/BtH,KAAK0kC,IAAIp3B,MAAM0F,MAAQ,QAGvBhT,KAAKwvB,IAAI9Q,MAAMpR,MAAM0F,MAAQhT,KAAK6O,QAAQiiC,SAAW,GAAK9wC,KAAKwvB,IAAIwhB,SAASnhB,YAAc,GAAK,KAC/F7vB,KAAKixC,kBAGP,IAAI5hB,GAAU,EACd,KAAK,GAAIyH,KAAW92B,MAAK8zB,OACnB9zB,KAAK8zB,OAAOnuB,eAAemxB,KACO,GAAhC92B,KAAK8zB,OAAOgD,GAAShP,SAAkEzhB,SAA9CrG,KAAK2kC,iBAAiB3N,WAAWF,IAAuE,GAA7C92B,KAAK2kC,iBAAiB3N,WAAWF,KACvIzH,GAAWrvB,KAAK8zB,OAAOgD,GAASzH,QAAU,UAIhDrvB,MAAKwvB,IAAIwhB,SAAS3tB,UAAYgM,EAC9BrvB,KAAKwvB,IAAIwhB,SAAS1jC,MAAM0iB,WAAe,IAAOhwB,KAAK6O,QAAQiiC,SAAY9wC,KAAK6O,QAAQkiC,YAAe,OAIvGluC,EAAO8Q,UAAUs9B,gBAAkB,WACjC,GAAIjxC,KAAKwvB,IAAI9Q,MAAM9U,WAAY,CAC7BhJ,EAAQ0Q,gBAAgBtR,KAAK8lC,YAC7B,IAAI1iB,GAAU7b,OAAO2pC,iBAAiBlxC,KAAKwvB,IAAI9Q,OAAOyyB,WAClDzK,EAAa3iC,OAAOqf,EAAQlX,QAAQ,KAAK,KACzCsG,EAAIk0B,EACJvB,EAAYnlC,KAAK6O,QAAQiiC,SACzBrK,EAAa,IAAOzmC,KAAK6O,QAAQiiC,SACjCr+B,EAAIi0B,EAAa,GAAMD,EAAa,CAExCzmC,MAAK0kC,IAAIp3B,MAAM0F,MAAQmyB,EAAY,EAAIuB,EAAa,IAEpD,KAAK,GAAI5P,KAAW92B,MAAK8zB,OACnB9zB,KAAK8zB,OAAOnuB,eAAemxB,KACO,GAAhC92B,KAAK8zB,OAAOgD,GAAShP,SAAkEzhB,SAA9CrG,KAAK2kC,iBAAiB3N,WAAWF,IAAuE,GAA7C92B,KAAK2kC,iBAAiB3N,WAAWF,KACvI92B,KAAK8zB,OAAOgD,GAAS6P,SAASn0B,EAAGC,EAAGzS,KAAK8lC,YAAa9lC,KAAK0kC,IAAKS,EAAWsB,GAC3Eh0B,GAAKg0B,EAAazmC,KAAK6O,QAAQkiC,aAKrCnwC,GAAQ+Q,gBAAgB3R,KAAK8lC,eAIjCjmC,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GAoB9B,QAAS4C,GAAUwxB,EAAMzlB,GACvB7O,KAAKK,GAAKM,EAAKkE,aACf7E,KAAKs0B,KAAOA,EAEZt0B,KAAKg0B,gBACH6V,iBAAkB,OAClBuH,aAAc,UACd36B,MAAM,EACN46B,UAAU,EACVC,YAAa,QACb9H,QACE16B,SAAS,EACTolB,YAAa,UAEf5mB,MAAO,OACPikC,UACEv+B,MAAO,GACPw+B,cAAe,UACf3F,MAAO,UAET7C,YACEl6B,SAAS,EACTm6B,gBAAiB,cACjBC,MAAO,IAETt2B,YACE9D,SAAS,EACTgE,KAAM,EACNxF,MAAO,UAETmkC,UACE7M,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACP9xB,MAAO,OACP8U,SAAS,EACTmT,aACE3zB,MAAOiE,IAAIlF,OAAW2G,IAAI3G,QAC1BogB,OAAQlb,IAAIlF,OAAW2G,IAAI3G,UAG/BqrC,QACE5iC,SAAS,EACTg2B,OAAO,EACPx9B,MACEwgB,SAAS,EACT9E,SAAU,YAEZyD,OACEqB,SAAS,EACT9E,SAAU,cAGd8Q,QACEkD,gBAKJh3B,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBACpCh0B,KAAKwvB,OACLxvB,KAAK6F,SACL7F,KAAK4D,OAAS,KACd5D,KAAK8zB,UACL9zB,KAAK2xC,oBAAqB,CAE1B,IAAIn9B,GAAKxU,IACTA,MAAKw1B,UAAY,KACjBx1B,KAAKy1B,WAAa,KAGlBz1B,KAAKwsC,eACH94B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGi4B,OAAOt4B,EAAOnS,QAEnBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGk4B,UAAUv4B,EAAOnS,QAEtB4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGm4B,UAAUx4B,EAAOnS,SAKxBhC,KAAK4sC,gBACHl5B,IAAO,SAAUpK,EAAO6K,GACtBK,EAAGq4B,aAAa14B,EAAOnS,QAEzBmT,OAAU,SAAU7L,EAAO6K,GACzBK,EAAGs4B,gBAAgB34B,EAAOnS,QAE5B4U,OAAU,SAAUtN,EAAO6K,GACzBK,EAAGu4B,gBAAgB54B,EAAOnS,SAI9BhC,KAAKgC,SACLhC,KAAKitC,aACLjtC,KAAK4xC,UAAY5xC,KAAKs0B,KAAKrlB,MAAMY,MACjC7P,KAAKmtC,eAELntC,KAAK8lC,eACL9lC,KAAKkc,WAAWrN,GAChB7O,KAAK4oC,0BAA4B,GAEjC5oC,KAAKs0B,KAAKE,QAAQ5gB,GAAG,eAAgB,WACnCY,EAAGo9B,UAAYp9B,EAAG8f,KAAKrlB,MAAMY,MAC7B2E,EAAGkwB,IAAIp3B,MAAMhG,KAAO3G,EAAKkJ,OAAOK,QAAQsK,EAAGxB,OAC3CwB,EAAGq9B,aAAav5B,MAAM9D,KAIxBxU,KAAKq0B,UACLr0B,KAAKs0B,KAAKE,QAAQrH,KAAK,UAnIzB,GAAIxsB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BoC,EAAYpC,EAAoB,IAChCuC,EAAWvC,EAAoB,IAC/BwC,EAAaxC,EAAoB,IACjC2C,EAAS3C,EAAoB,IAE7BktC,EAAY,eA6HhBtqC,GAAU6Q,UAAY,GAAIrR,GAK1BQ,EAAU6Q,UAAU0gB,QAAU,WAC5B,GAAI3V,GAAQ1M,SAASM,cAAc,MACnCoM,GAAM7W,UAAY,YAClB7H,KAAKwvB,IAAI9Q,MAAQA,EAGjB1e,KAAK0kC,IAAM1yB,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK0kC,IAAIp3B,MAAM0V,SAAW,WAC1BhjB,KAAK0kC,IAAIp3B,MAAM2F,QAAU,GAAKjT,KAAK6O,QAAQyiC,aAAaplC,QAAQ,KAAK,IAAM,KAC3ElM,KAAK0kC,IAAIp3B,MAAMi5B,QAAU,QACzB7nB,EAAMxM,YAAYlS,KAAK0kC,KAGvB1kC,KAAK6O,QAAQ4iC,SAASvd,YAAc,OACpCl0B,KAAK8xC,UAAY,GAAIrvC,GAASzC,KAAKs0B,KAAMt0B,KAAK6O,QAAQ4iC,SAAUzxC,KAAK0kC,IAAK1kC,KAAK6O,QAAQilB,QAEvF9zB,KAAK6O,QAAQ4iC,SAASvd,YAAc,QACpCl0B,KAAK+xC,WAAa,GAAItvC,GAASzC,KAAKs0B,KAAMt0B,KAAK6O,QAAQ4iC,SAAUzxC,KAAK0kC,IAAK1kC,KAAK6O,QAAQilB,cACjF9zB,MAAK6O,QAAQ4iC,SAASvd,YAG7Bl0B,KAAKgyC,WAAa,GAAInvC,GAAO7C,KAAKs0B,KAAMt0B,KAAK6O,QAAQ6iC,OAAQ,OAAQ1xC,KAAK6O,QAAQilB,QAClF9zB,KAAKiyC,YAAc,GAAIpvC,GAAO7C,KAAKs0B,KAAMt0B,KAAK6O,QAAQ6iC,OAAQ,QAAS1xC,KAAK6O,QAAQilB,QAEpF9zB,KAAKqmC,QAOPvjC,EAAU6Q,UAAUuI,WAAa,SAASrN,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC9G3N,GAAKqF,oBAAoBsI,EAAQtO,KAAK6O,QAASA,GAC/ClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,cACxClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,cACxClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,UACxClO,EAAKgO,aAAa3O,KAAK6O,QAASA,EAAQ,UAEpCA,EAAQm6B,YACuB,gBAAtBn6B,GAAQm6B,YACbn6B,EAAQm6B,WAAWC,kBACqB,WAAtCp6B,EAAQm6B,WAAWC,gBACrBjpC,KAAK6O,QAAQm6B,WAAWE,MAAQ,EAEa,WAAtCr6B,EAAQm6B,WAAWC,gBAC1BjpC,KAAK6O,QAAQm6B,WAAWE,MAAQ,GAGhClpC,KAAK6O,QAAQm6B,WAAWC,gBAAkB,cAC1CjpC,KAAK6O,QAAQm6B,WAAWE,MAAQ,KAMpClpC,KAAK8xC,WACkBzrC,SAArBwI,EAAQ4iC,WACVzxC,KAAK8xC,UAAU51B,WAAWlc,KAAK6O,QAAQ4iC,UACvCzxC,KAAK+xC,WAAW71B,WAAWlc,KAAK6O,QAAQ4iC,WAIxCzxC,KAAKgyC,YACgB3rC,SAAnBwI,EAAQ6iC,SACV1xC,KAAKgyC,WAAW91B,WAAWlc,KAAK6O,QAAQ6iC,QACxC1xC,KAAKiyC,YAAY/1B,WAAWlc,KAAK6O,QAAQ6iC,SAIzC1xC,KAAK8zB,OAAOnuB,eAAeynC,IAC7BptC,KAAK8zB,OAAOsZ,GAAWlxB,WAAWrN,GAGlC7O,KAAKwvB,IAAI9Q,OACX1e,KAAK6xC,gBAOT/uC,EAAU6Q,UAAUyyB,KAAO,WAErBpmC,KAAKwvB,IAAI9Q,MAAM9U,YACjB5J,KAAKwvB,IAAI9Q,MAAM9U,WAAWgI,YAAY5R,KAAKwvB,IAAI9Q,QAQnD5b,EAAU6Q,UAAU0yB,KAAO,WAEpBrmC,KAAKwvB,IAAI9Q,MAAM9U,YAClB5J,KAAKs0B,KAAK9E,IAAIjE,OAAOrZ,YAAYlS,KAAKwvB,IAAI9Q,QAS9C5b,EAAU6Q,UAAUgiB,SAAW,SAAS3zB,GACtC,GACEyT,GADEjB,EAAKxU,KAEPkvC,EAAelvC,KAAKw1B,SAGtB,IAAKxzB,EAGA,CAAA,KAAIA,YAAiBnB,IAAWmB,YAAiBlB,IAIpD,KAAM,IAAIoF,WAAU,kDAHpBlG,MAAKw1B,UAAYxzB,MAHjBhC,MAAKw1B,UAAY,IAoBnB,IAXI0Z,IAEFvuC,EAAK0H,QAAQrI,KAAKwsC,cAAe,SAAUlkC,EAAUgB,GACnD4lC,EAAan7B,IAAIzK,EAAOhB,KAI1BmN,EAAMy5B,EAAa94B,SACnBpW,KAAK2sC,UAAUl3B,IAGbzV,KAAKw1B,UAAW,CAElB,GAAIn1B,GAAKL,KAAKK,EACdM,GAAK0H,QAAQrI,KAAKwsC,cAAe,SAAUlkC,EAAUgB,GACnDkL,EAAGghB,UAAU5hB,GAAGtK,EAAOhB,EAAUjI,KAInCoV,EAAMzV,KAAKw1B,UAAUpf,SACrBpW,KAAKysC,OAAOh3B,GAEdzV,KAAKstC,mBACLttC,KAAK6xC,eACL7xC,KAAK6gB,UAOP/d,EAAU6Q,UAAU+hB,UAAY,SAAS5B,GACvC,GACEre,GADEjB,EAAKxU,IAgBT,IAZIA,KAAKy1B,aACP90B,EAAK0H,QAAQrI,KAAK4sC,eAAgB,SAAUtkC,EAAUgB,GACpDkL,EAAGihB,WAAWxhB,YAAY3K,EAAOhB,KAInCmN,EAAMzV,KAAKy1B,WAAWrf,SACtBpW,KAAKy1B,WAAa,KAClBz1B,KAAK+sC,gBAAgBt3B,IAIlBqe,EAGA,CAAA,KAAIA,YAAkBjzB,IAAWizB,YAAkBhzB,IAItD,KAAM,IAAIoF,WAAU,kDAHpBlG,MAAKy1B,WAAa3B,MAHlB9zB,MAAKy1B,WAAa,IASpB,IAAIz1B,KAAKy1B,WAAY,CAEnB,GAAIp1B,GAAKL,KAAKK,EACdM,GAAK0H,QAAQrI,KAAK4sC,eAAgB,SAAUtkC,EAAUgB,GACpDkL,EAAGihB,WAAW7hB,GAAGtK,EAAOhB,EAAUjI,KAIpCoV,EAAMzV,KAAKy1B,WAAWrf,SACtBpW,KAAK6sC,aAAap3B,GAEpBzV,KAAK0sC,aASP5pC,EAAU6Q,UAAU+4B,UAAY,WAC9B1sC,KAAKstC,mBACLttC,KAAKkyC,sBACLlyC,KAAK6xC,eACL7xC,KAAK6gB,UAEP/d,EAAU6Q,UAAU84B,OAAkB,SAAUh3B,GAAMzV,KAAK0sC,UAAUj3B,IACrE3S,EAAU6Q,UAAUg5B,UAAkB,SAAUl3B,GAAMzV,KAAK0sC,UAAUj3B,IACrE3S,EAAU6Q,UAAUm5B,gBAAmB,SAAUE,GAC/C,IAAK,GAAI3nC,GAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAAK,CACxC,GAAIqN,GAAQ1S,KAAKy1B,WAAWjgB,IAAIw3B,EAAS3nC,GACzCrF,MAAKmyC,aAAaz/B,EAAOs6B,EAAS3nC,IAGpCrF,KAAK6xC,eACL7xC,KAAK6gB,UAEP/d,EAAU6Q,UAAUk5B,aAAe,SAAUG,GAAWhtC,KAAK8sC,gBAAgBE,IAE7ElqC,EAAU6Q,UAAUo5B,gBAAkB,SAAUC,GAC9C,IAAK,GAAI3nC,GAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAC9BrF,KAAK8zB,OAAOnuB,eAAeqnC,EAAS3nC,MACkB,SAArDrF,KAAK8zB,OAAOkZ,EAAS3nC,IAAIwJ,QAAQg7B,kBACnC7pC,KAAK+xC,WAAW5L,YAAY6G,EAAS3nC,IACrCrF,KAAKiyC,YAAY9L,YAAY6G,EAAS3nC,IACtCrF,KAAKiyC,YAAYpxB,WAGjB7gB,KAAK8xC,UAAU3L,YAAY6G,EAAS3nC,IACpCrF,KAAKgyC,WAAW7L,YAAY6G,EAAS3nC,IACrCrF,KAAKgyC,WAAWnxB,gBAEX7gB,MAAK8zB,OAAOkZ,EAAS3nC,IAGhCrF,MAAKstC,mBACLttC,KAAK6xC,eACL7xC,KAAK6gB,UAUP/d,EAAU6Q,UAAUw+B,aAAe,SAAUz/B,EAAOokB,GAC7C92B,KAAK8zB,OAAOnuB,eAAemxB,IAY9B92B,KAAK8zB,OAAOgD,GAAS3hB,OAAOzC,GACyB,SAAjD1S,KAAK8zB,OAAOgD,GAASjoB,QAAQg7B,kBAC/B7pC,KAAK+xC,WAAW7L,YAAYpP,EAAS92B,KAAK8zB,OAAOgD,IACjD92B,KAAKiyC,YAAY/L,YAAYpP,EAAS92B,KAAK8zB,OAAOgD,MAGlD92B,KAAK8xC,UAAU5L,YAAYpP,EAAS92B,KAAK8zB,OAAOgD,IAChD92B,KAAKgyC,WAAW9L,YAAYpP,EAAS92B,KAAK8zB,OAAOgD,OAlBnD92B,KAAK8zB,OAAOgD,GAAW,GAAIp0B,GAAWgQ,EAAOokB,EAAS92B,KAAK6O,QAAS7O,KAAK4oC,0BACpB,SAAjD5oC,KAAK8zB,OAAOgD,GAASjoB,QAAQg7B,kBAC/B7pC,KAAK+xC,WAAW/L,SAASlP,EAAS92B,KAAK8zB,OAAOgD,IAC9C92B,KAAKiyC,YAAYjM,SAASlP,EAAS92B,KAAK8zB,OAAOgD,MAG/C92B,KAAK8xC,UAAU9L,SAASlP,EAAS92B,KAAK8zB,OAAOgD,IAC7C92B,KAAKgyC,WAAWhM,SAASlP,EAAS92B,KAAK8zB,OAAOgD,MAclD92B,KAAKgyC,WAAWnxB,SAChB7gB,KAAKiyC,YAAYpxB,UAGnB/d,EAAU6Q,UAAUu+B,oBAAsB,WACxC,GAAsB,MAAlBlyC,KAAKw1B,UAAmB,CAC1B,GACIsB,GADAsb,IAEJ,KAAKtb,IAAW92B,MAAK8zB,OACf9zB,KAAK8zB,OAAOnuB,eAAemxB,KAC7Bsb,EAActb,MAGlB,KAAK,GAAIjhB,KAAU7V,MAAKw1B,UAAUniB,MAChC,GAAIrT,KAAKw1B,UAAUniB,MAAM1N,eAAekQ,GAAS,CAC/C,GAAId,GAAO/U,KAAKw1B,UAAUniB,MAAMwC,EAChCd,GAAKvC,EAAI7R,EAAK+F,QAAQqO,EAAKvC,EAAE,QAC7B4/B,EAAcr9B,EAAKrC,OAAO1K,KAAK+M,GAGnC,IAAK+hB,IAAW92B,MAAK8zB,OACf9zB,KAAK8zB,OAAOnuB,eAAemxB,IAC7B92B,KAAK8zB,OAAOgD,GAASnB,SAASyc,EAActb,MAWpDh0B,EAAU6Q,UAAU25B,iBAAmB,WACrC,GAAIttC,KAAKw1B,WAA+B,MAAlBx1B,KAAKw1B,UAAmB,CAC5C,GAAI6c,GAAmB,CACvB,KAAK,GAAIx8B,KAAU7V,MAAKw1B,UAAUniB,MAChC,GAAIrT,KAAKw1B,UAAUniB,MAAM1N,eAAekQ,GAAS,CAC/C,GAAId,GAAO/U,KAAKw1B,UAAUniB,MAAMwC,EACpBxP,SAAR0O,IACEA,EAAKpP,eAAe,SACHU,SAAf0O,EAAKrC,QACPqC,EAAKrC,MAAQ06B,GAIfr4B,EAAKrC,MAAQ06B,EAEfiF,EAAmBt9B,EAAKrC,OAAS06B,EAAYiF,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKryC,MAAK8zB,OAAOsZ,GACnBptC,KAAKgyC,WAAW7L,YAAYiH,GAC5BptC,KAAKiyC,YAAY9L,YAAYiH,GAC7BptC,KAAK8xC,UAAU3L,YAAYiH,GAC3BptC,KAAK+xC,WAAW5L,YAAYiH,OAEzB,CACH,GAAI16B,IAASrS,GAAI+sC,EAAW/d,QAASrvB,KAAK6O,QAAQuiC,aAClDpxC,MAAKmyC,aAAaz/B,EAAO06B,eAIpBptC,MAAK8zB,OAAOsZ,GACnBptC,KAAKgyC,WAAW7L,YAAYiH,GAC5BptC,KAAKiyC,YAAY9L,YAAYiH,GAC7BptC,KAAK8xC,UAAU3L,YAAYiH,GAC3BptC,KAAK+xC,WAAW5L,YAAYiH,EAG9BptC,MAAKgyC,WAAWnxB,SAChB7gB,KAAKiyC,YAAYpxB,UAQnB/d,EAAU6Q,UAAUkN,OAAS,WAC3B,GAAIyiB,IAAU,CAEdtjC,MAAK0kC,IAAIp3B,MAAM2F,QAAU,GAAKjT,KAAK6O,QAAQyiC,aAAaplC,QAAQ,KAAK,IAAM,MACpD7F,SAAnBrG,KAAKuuC,WAA2BvuC,KAAKgT,OAAShT,KAAKuuC,WAAavuC,KAAKgT,SACvEswB,GAAU,GAGZA,EAAUtjC,KAAKqjC,cAAgBC,CAE/B,IAAI8K,GAAkBpuC,KAAKs0B,KAAKrlB,MAAMqB,IAAMtQ,KAAKs0B,KAAKrlB,MAAMY,MACxDw+B,EAAUD,GAAmBpuC,KAAKsuC,qBAAyBtuC,KAAKgT,OAAShT,KAAKuuC,SAclF,IAbAvuC,KAAKsuC,oBAAsBF,EAC3BpuC,KAAKuuC,UAAYvuC,KAAKgT,MAGtBhT,KAAKgT,MAAQhT,KAAKwvB,IAAI9Q,MAAMmR,YAIb,GAAXyT,IACFtjC,KAAK0kC,IAAIp3B,MAAM0F,MAAQrS,EAAKkJ,OAAOK,OAAO,EAAElK,KAAKgT,OACjDhT,KAAK0kC,IAAIp3B,MAAMhG,KAAO3G,EAAKkJ,OAAOK,QAAQlK,KAAKgT,QAGnC,GAAVq7B,GAA6C,GAA3BruC,KAAK2xC,mBACzB3xC,KAAK6xC,mBAIL,IAAsB,GAAlB7xC,KAAK4xC,UAAgB,CACvB,GAAI7oB,GAAS/oB,KAAKs0B,KAAKrlB,MAAMY,MAAQ7P,KAAK4xC,UACtC3iC,EAAQjP,KAAKs0B,KAAKrlB,MAAMqB,IAAMtQ,KAAKs0B,KAAKrlB,MAAMY,KAClD,IAAkB,GAAd7P,KAAKgT,MAAY,CACnB,GAAIs/B,GAAmBtyC,KAAKgT,MAAM/D,EAC9B+Z,EAAUD,EAASupB,CACvBtyC,MAAK0kC,IAAIp3B,MAAMhG,MAAStH,KAAKgT,MAAQgW,EAAW,MAStD,MAHAhpB,MAAKgyC,WAAWnxB,SAChB7gB,KAAKiyC,YAAYpxB,SAEVyiB,GAOTxgC,EAAU6Q,UAAUk+B,aAAe,WAGjC,GADAjxC,EAAQ0Q,gBAAgBtR,KAAK8lC,aACX,GAAd9lC,KAAKgT,OAAgC,MAAlBhT,KAAKw1B,UAAmB,CAC7C,GAAI9iB,GAAOrN,EACPktC,KACAC,KACAC,KACA5L,GAAe,EAGfmG,IACJ,KAAK,GAAIlW,KAAW92B,MAAK8zB,OACnB9zB,KAAK8zB,OAAOnuB,eAAemxB,KAC7BpkB,EAAQ1S,KAAK8zB,OAAOgD,GACC,GAAjBpkB,EAAMoV,SAAgEzhB,SAA5CrG,KAAK6O,QAAQilB,OAAOkD,WAAWF,IAAqE,GAA3C92B,KAAK6O,QAAQilB,OAAOkD,WAAWF,IACpHkW,EAAShlC,KAAK8uB,GAIpB,IAAIkW,EAASxnC,OAAS,EAAG,CAEvB,GAAIktC,GAAU1yC,KAAKs0B,KAAK3zB,KAAKu0B,cAAel1B,KAAKs0B,KAAKC,SAAS70B,KAAKsT,OAChE2/B,EAAU3yC,KAAKs0B,KAAK3zB,KAAKu0B,aAAa,EAAIl1B,KAAKs0B,KAAKC,SAAS70B,KAAKsT,OAClEyiB,IAIJ,KAFAz1B,KAAK4yC,iBAAiB5F,EAAUvX,EAAYid,EAASC,GAEhDttC,EAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAC/BktC,EAAsBvF,EAAS3nC,IAAMrF,KAAK6yC,qBAAqBpd,EAAWuX,EAAS3nC,IAQrF,IALArF,KAAK8yC,YAAY9F,EAAUuF,EAAuBE,GAIlD5L,EAAe7mC,KAAK+yC,aAAa/F,EAAUyF,GACvB,GAAhB5L,EAIF,MAHAjmC,GAAQ+Q,gBAAgB3R,KAAK8lC,aAC7B9lC,KAAK2xC,oBAAqB,MAC1B3xC,MAAKs0B,KAAKE,QAAQrH,KAAK,SAMzB,KAHAntB,KAAK2xC,oBAAqB,EAGrBtsC,EAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAC/BqN,EAAQ1S,KAAK8zB,OAAOkZ,EAAS3nC,IAC7BmtC,EAAmBxF,EAAS3nC,IAAMrF,KAAKgzC,qBAAqBvd,EAAWuX,EAAS3nC,IAAKqN,EAKvF,KAAKrN,EAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAC/BqN,EAAQ1S,KAAK8zB,OAAOkZ,EAAS3nC,IACF,QAAvBqN,EAAM7D,QAAQvB,OAChBtN,KAAKizC,eAAeT,EAAmBxF,EAAS3nC,IAAKqN,EAGzD1S,MAAKkzC,eAAelG,EAAUwF,IAKlC5xC,EAAQ+Q,gBAAgB3R,KAAK8lC,cAI/BhjC,EAAU6Q,UAAUi/B,iBAAmB,SAAU5F,EAAUvX,EAAYid,EAASC,GAM9E,GAAIjgC,GAAOrN,EAAG4lB,EAAGlW,CACjB,IAAIi4B,EAASxnC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAAK,CACpCqN,EAAQ1S,KAAK8zB,OAAOkZ,EAAS3nC,IAC7BowB,EAAWuX,EAAS3nC,MACpB,IAAI8tC,GAAgB1d,EAAWuX,EAAS3nC,GAExC,IAA0B,GAAtBqN,EAAM7D,QAAQ4H,KAAc,CAC9B,GAAI9G,GAAQ5K,KAAKiI,IAAI,EAAGrM,EAAKqP,oBAAoB0C,EAAM8iB,UAAWkd,EAAS,IAAK,UAChF,KAAKznB,EAAItb,EAAOsb,EAAIvY,EAAM8iB,UAAUhwB,OAAQylB,IAE1C,GADAlW,EAAOrC,EAAM8iB,UAAUvK,GACV5kB,SAAT0O,EAAoB,CACtB,GAAIA,EAAKvC,EAAImgC,EAAS,CACpBQ,EAAcnrC,KAAK+M,EACnB,OAGAo+B,EAAcnrC,KAAK+M,QAMzB,KAAKkW,EAAI,EAAGA,EAAIvY,EAAM8iB,UAAUhwB,OAAQylB,IACtClW,EAAOrC,EAAM8iB,UAAUvK,GACV5kB,SAAT0O,GACEA,EAAKvC,EAAIkgC,GAAW39B,EAAKvC,EAAImgC,GAC/BQ,EAAcnrC,KAAK+M,GAQ/B/U,KAAKozC,eAAepG,EAAUvX,IAGhC3yB,EAAU6Q,UAAUy/B,eAAiB,SAAUpG,EAAUvX,GACvD,GAAI/iB,EACJ,IAAIs6B,EAASxnC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAEnC,GADAqN,EAAQ1S,KAAK8zB,OAAOkZ,EAAS3nC,IACC,GAA1BqN,EAAM7D,QAAQwiC,SAAkB,CAClC,GAAI8B,GAAgB1d,EAAWuX,EAAS3nC,GACxC,IAAI8tC,EAAc3tC,OAAS,EAAG,CAC5B,GAAI6tC,GAAY,EACZC,EAAiBH,EAAc3tC,OAI/B+tC,EAAYvzC,KAAKs0B,KAAK3zB,KAAKm0B,eAAeqe,EAAcA,EAAc3tC,OAAS,GAAGgN,GAAKxS,KAAKs0B,KAAK3zB,KAAKm0B,eAAeqe,EAAc,GAAG3gC,GACtIghC,EAAiBF,EAAiBC,CACtCF,GAAYtuC,KAAKwG,IAAIxG,KAAK0uC,KAAK,GAAMH,GAAiBvuC,KAAKiI,IAAI,EAAGjI,KAAKkoB,MAAMumB,IAG7E,KAAK,GADDE,MACKzoB,EAAI,EAAOqoB,EAAJroB,EAAoBA,GAAKooB,EACvCK,EAAY1rC,KAAKmrC,EAAcloB,GAGjCwK,GAAWuX,EAAS3nC,IAAMquC,KAOpC5wC,EAAU6Q,UAAUm/B,YAAc,SAAU9F,EAAUvX,EAAYgd,GAChE,GAAIlD,GAAW78B,EAAOrN,EAAE4lB,EAGpB0oB,EAFAC,KACAC,IAEJ,IAAI7G,EAASxnC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAE/B,GADAkqC,EAAY9Z,EAAWuX,EAAS3nC,IAC5BkqC,EAAU/pC,OAAS,EAErB,GADAkN,EAAQ1S,KAAK8zB,OAAOkZ,EAAS3nC,IACF,QAAvBqN,EAAM7D,QAAQvB,OAA2D,SAAxCoF,EAAM7D,QAAQ0iC,SAASC,cAA0B,CACpF,GAAIp2B,GAAOm0B,EAAU,GAAG98B,EACpB6I,EAAOi0B,EAAU,GAAG98B,CACxB,KAAKwY,EAAI,EAAGA,EAAIskB,EAAU/pC,OAAQylB,IAChC7P,EAAOA,EAAOm0B,EAAUtkB,GAAGxY,EAAI88B,EAAUtkB,GAAGxY,EAAI2I,EAChDE,EAAOA,EAAOi0B,EAAUtkB,GAAGxY,EAAI88B,EAAUtkB,GAAGxY,EAAI6I,CAElDm3B,GAAYzF,EAAS3nC,KAAOkG,IAAK6P,EAAMpO,IAAKsO,EAAMuuB,iBAAkBn3B,EAAM7D,QAAQg7B,sBAE/E,IAA2B,OAAvBn3B,EAAM7D,QAAQvB,MAWrB,IATEqmC,EADoC,QAAlCjhC,EAAM7D,QAAQg7B,iBACE+J,EAGAC,EAGpBpB,EAAYzF,EAAS3nC,KAAOkG,IAAK,EAAGyB,IAAK,EAAG68B,iBAAkBn3B,EAAM7D,QAAQg7B,iBAAkBiK,QAAQ,GAGjG7oB,EAAI,EAAGA,EAAIskB,EAAU/pC,OAAQylB,IAChC0oB,EAAgB3rC,MACdwK,EAAG+8B,EAAUtkB,GAAGzY,EAChBC,EAAG88B,EAAUtkB,GAAGxY,EAChBqkB,QAASkW,EAAS3nC,IAO5B,IAAI0uC,EACAH,GAAoBpuC,OAAS,IAE/BouC,EAAoBn9B,KAAK,SAAUrR,EAAGa,GACpC,MAAIb,GAAEoN,GAAKvM,EAAEuM,EACJpN,EAAE0xB,QAAU7wB,EAAE6wB,QAEd1xB,EAAEoN,EAAIvM,EAAEuM,IAGnBuhC,KACA/zC,KAAKg0C,sBAAsBD,EAAeH,GAC1CnB,EAA4B,eAAIzyC,KAAKi0C,qBAAqBF,EAAeH,GACzEnB,EAA4B,eAAE5I,iBAAmB,OACjDmD,EAAShlC,KAAK,mBAEZ6rC,EAAqBruC,OAAS,IAEhCquC,EAAqBp9B,KAAK,SAAUrR,EAAGa,GACrC,MAAIb,GAAEoN,GAAKvM,EAAEuM,EACJpN,EAAE0xB,QAAU7wB,EAAE6wB,QAEd1xB,EAAEoN,EAAIvM,EAAEuM,IAGnBuhC,KACA/zC,KAAKg0C,sBAAsBD,EAAeF,GAC1CpB,EAA6B,gBAAIzyC,KAAKi0C,qBAAqBF,EAAeF,GAC1EpB,EAA6B,gBAAE5I,iBAAmB,QAClDmD,EAAShlC,KAAK,sBAKpBlF,EAAU6Q,UAAUsgC,qBAAuB,SAAUF,EAAeG,GAIlE,IAAK,GAHDxrC,GACA0S,EAAO84B,EAAa,GAAGzhC,EACvB6I,EAAO44B,EAAa,GAAGzhC,EAClBpN,EAAI,EAAGA,EAAI6uC,EAAa1uC,OAAQH,IACvCqD,EAAMwrC,EAAa7uC,GAAGmN,EACKnM,SAAvB0tC,EAAcrrC,IAChB0S,EAAOA,EAAO84B,EAAa7uC,GAAGoN,EAAIyhC,EAAa7uC,GAAGoN,EAAI2I,EACtDE,EAAOA,EAAO44B,EAAa7uC,GAAGoN,EAAIyhC,EAAa7uC,GAAGoN,EAAI6I,GAGtDy4B,EAAcrrC,GAAKyrC,aAAeD,EAAa7uC,GAAGoN,CAGtD,KAAK,GAAI2hC,KAAQL,GACXA,EAAcpuC,eAAeyuC,KAC/Bh5B,EAAOA,EAAO24B,EAAcK,GAAMD,YAAcJ,EAAcK,GAAMD,YAAc/4B,EAClFE,EAAOA,EAAOy4B,EAAcK,GAAMD,YAAcJ,EAAcK,GAAMD,YAAc74B,EAItF,QAAQ/P,IAAK6P,EAAMpO,IAAKsO,IAU1BxY,EAAU6Q,UAAUo/B,aAAe,SAAU/F,EAAUyF,GACrD,GAGoE4B,GAAQC,EAHxEzN,GAAe,EACf0N,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAI5H,EAASxnC,OAAS,EAAG,CACvB,IAAK,GAAIH,GAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAC/BotC,EAAY9sC,eAAeqnC,EAAS3nC,KAClCotC,EAAYzF,EAAS3nC,IAAIyuC,UAAW,IACtCO,EAAS5B,EAAYzF,EAAS3nC,IAAIkG,IAClC+oC,EAAS7B,EAAYzF,EAAS3nC,IAAI2H,IAEe,QAA7CylC,EAAYzF,EAAS3nC,IAAIwkC,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,GACFv0C,KAAK8xC,UAAU3e,SAASshB,EAASE,GAEb,GAAlBH,GACFx0C,KAAK+xC,WAAW5e,SAASuhB,EAAUE,GAsCvC,MAlCA/N,GAAe7mC,KAAK60C,qBAAqBN,EAAgBv0C,KAAK8xC,YAAejL,EAC7EA,EAAe7mC,KAAK60C,qBAAqBL,EAAgBx0C,KAAK+xC,aAAelL,EAEvD,GAAlB2N,GAA2C,GAAjBD,GAC5Bv0C,KAAK8xC,UAAUgD,WAAY,EAC3B90C,KAAK+xC,WAAW+C,WAAY,IAG5B90C,KAAK8xC,UAAUgD,WAAY,EAC3B90C,KAAK+xC,WAAW+C,WAAY,GAG9B90C,KAAK+xC,WAAWlM,QAAU0O,EAEI,GAA1Bv0C,KAAK+xC,WAAWlM,QACW7lC,KAAK8xC,UAAUlM,WAAtB,GAAlB4O,EAAqDx0C,KAAK+xC,WAAW/+B,MAChB,EAEzD6zB,EAAe7mC,KAAK8xC,UAAUjxB,UAAYgmB,EAC1C7mC,KAAK+xC,WAAWpM,iBAAmB3lC,KAAK8xC,UAAUpM,WAClDmB,EAAe7mC,KAAK+xC,WAAWlxB,UAAYgmB,GAG3CA,EAAe7mC,KAAK+xC,WAAWlxB,UAAYgmB,EAIH,IAAtCmG,EAASxmC,QAAQ,mBACnBwmC,EAAS5kC,OAAO4kC,EAASxmC,QAAQ,kBAAkB,GAEV,IAAvCwmC,EAASxmC,QAAQ,oBACnBwmC,EAAS5kC,OAAO4kC,EAASxmC,QAAQ,mBAAmB,GAG/CqgC,GAWT/jC,EAAU6Q,UAAUkhC,qBAAuB,SAAUE,EAAU3U,GAC7D,GAAI9B,IAAU,CAad,OAZgB,IAAZyW,EACE3U,EAAK5Q,IAAI9Q,MAAM9U,aACjBw2B,EAAKgG,OACL9H,GAAU,GAIP8B,EAAK5Q,IAAI9Q,MAAM9U,aAClBw2B,EAAKiG,OACL/H,GAAU,GAGPA,GAUTx7B,EAAU6Q,UAAUu/B,eAAiB,SAAUlG,EAAUwF,GACvD,GAEIwC,GACAtsC,EAAKusC,EACLviC,EACArN,EAAE4lB,EALFipB,KACAH,KAKAmB,EAAY,CAGhB,KAAK7vC,EAAI,EAAGA,EAAI2nC,EAASxnC,OAAQH,IAE/B,GADAqN,EAAQ1S,KAAK8zB,OAAOkZ,EAAS3nC,IACF,OAAvBqN,EAAM7D,QAAQvB,OACK,GAAjBoF,EAAMoV,UAAoEzhB,SAAhDrG,KAAK6O,QAAQilB,OAAOkD,WAAWgW,EAAS3nC,KAAoE,GAA/CrF,KAAK6O,QAAQilB,OAAOkD,WAAWgW,EAAS3nC,KACjI,IAAK4lB,EAAI,EAAGA,EAAIunB,EAAmBxF,EAAS3nC,IAAIG,OAAQylB,IACtDipB,EAAalsC,MACXwK,EAAGggC,EAAmBxF,EAAS3nC,IAAI4lB,GAAGzY,EACtCC,EAAG+/B,EAAmBxF,EAAS3nC,IAAI4lB,GAAGxY,EACtCqkB,QAASkW,EAAS3nC,KAEpB6vC,GAAa,CAMrB,IAAiB,GAAbA,EAeJ,IAZAhB,EAAaz9B,KAAK,SAAUrR,EAAGa,GAC7B,MAAIb,GAAEoN,GAAKvM,EAAEuM,EACJpN,EAAE0xB,QAAU7wB,EAAE6wB,QAEd1xB,EAAEoN,EAAIvM,EAAEuM,IAKnBxS,KAAKg0C,sBAAsBD,EAAeG,GAGrC7uC,EAAI,EAAGA,EAAI6uC,EAAa1uC,OAAQH,IAAK,CACxCqN,EAAQ1S,KAAK8zB,OAAOogB,EAAa7uC,GAAGyxB,QACpC,IAAI2O,GAAW,GAAM/yB,EAAM7D,QAAQ0iC,SAASv+B,KAE5CtK,GAAMwrC,EAAa7uC,GAAGmN,CACtB,IAAI2iC,GAAe,CACnB,IAA2B9uC,SAAvB0tC,EAAcrrC,GACZrD,EAAE,EAAI6uC,EAAa1uC,SAASwvC,EAAejwC,KAAKklB,IAAIiqB,EAAa7uC,EAAE,GAAGmN,EAAI9J,IAC1ErD,EAAI,IAAwB2vC,EAAejwC,KAAKwG,IAAIypC,EAAajwC,KAAKklB,IAAIiqB,EAAa7uC,EAAE,GAAGmN,EAAI9J,KACpGusC,EAAWj1C,KAAKo1C,iBAAiBJ,EAActiC,EAAO+yB,OAEnD,CACH,GAAI4P,GAAUhwC,GAAK0uC,EAAcrrC,GAAK4sC,OAASvB,EAAcrrC,GAAK6sC,UAC9DC,EAAUnwC,GAAK0uC,EAAcrrC,GAAK6sC,SAAW,EAC7CF,GAAUnB,EAAa1uC,SAASwvC,EAAejwC,KAAKklB,IAAIiqB,EAAamB,GAAS7iC,EAAI9J,IAClF8sC,EAAU,IAAsBR,EAAejwC,KAAKwG,IAAIypC,EAAajwC,KAAKklB,IAAIiqB,EAAasB,GAAShjC,EAAI9J,KAC5GusC,EAAWj1C,KAAKo1C,iBAAiBJ,EAActiC,EAAO+yB,GACtDsO,EAAcrrC,GAAK6sC,UAAY,EAEa,SAAxC7iC,EAAM7D,QAAQ0iC,SAASC,eACzB2D,EAAepB,EAAcrrC,GAAKyrC,YAClCJ,EAAcrrC,GAAKyrC,aAAezhC,EAAMo2B,aAAeoL,EAAa7uC,GAAGoN,GAExB,cAAxCC,EAAM7D,QAAQ0iC,SAASC,gBAC9ByD,EAASjiC,MAAQiiC,EAASjiC,MAAQ+gC,EAAcrrC,GAAK4sC,OACrDL,EAASlsB,QAAWgrB,EAAcrrC,GAAa,SAAIusC,EAASjiC,MAAS,GAAIiiC,EAASjiC,OAAS+gC,EAAcrrC,GAAK4sC,OAAO,GACjF,QAAhC5iC,EAAM7D,QAAQ0iC,SAAS1F,MAAwBoJ,EAASlsB,QAAU,GAAIksB,EAASjiC,MAC1C,SAAhCN,EAAM7D,QAAQ0iC,SAAS1F,QAAmBoJ,EAASlsB,QAAU,GAAIksB,EAASjiC,QAGvFpS,EAAQmS,QAAQmhC,EAAa7uC,GAAGmN,EAAIyiC,EAASlsB,OAAQmrB,EAAa7uC,GAAGoN,EAAI0iC,EAAcF,EAASjiC,MAAON,EAAMo2B,aAAeoL,EAAa7uC,GAAGoN,EAAGC,EAAM7K,UAAY,OAAQ7H,KAAK8lC,YAAa9lC,KAAK0kC,KAExJ,GAApChyB,EAAM7D,QAAQ+D,WAAW9D,SAC3BlO,EAAQ2R,UAAU2hC,EAAa7uC,GAAGmN,EAAIyiC,EAASlsB,OAAQmrB,EAAa7uC,GAAGoN,EAAI0iC,EAAcziC,EAAO1S,KAAK8lC,YAAa9lC,KAAK0kC,OAW7H5hC,EAAU6Q,UAAUqgC,sBAAwB,SAAUD,EAAeG,GAGnE,IAAK,GADDc,GACK3vC,EAAI,EAAGA,EAAI6uC,EAAa1uC,OAAQH,IACnCA,EAAI,EAAI6uC,EAAa1uC,SACvBwvC,EAAejwC,KAAKklB,IAAIiqB,EAAa7uC,EAAI,GAAGmN,EAAI0hC,EAAa7uC,GAAGmN,IAE9DnN,EAAI,IACN2vC,EAAejwC,KAAKwG,IAAIypC,EAAcjwC,KAAKklB,IAAIiqB,EAAa7uC,EAAI,GAAGmN,EAAI0hC,EAAa7uC,GAAGmN,KAErE,GAAhBwiC,IACuC3uC,SAArC0tC,EAAcG,EAAa7uC,GAAGmN,KAChCuhC,EAAcG,EAAa7uC,GAAGmN,IAAM8iC,OAAQ,EAAGC,SAAU,EAAGpB,YAAa,IAE3EJ,EAAcG,EAAa7uC,GAAGmN,GAAG8iC,QAAU,IAcjDxyC,EAAU6Q,UAAUyhC,iBAAmB,SAAUJ,EAActiC,EAAO+yB,GACpE,GAAIzyB,GAAO+V,CAwBX,OAvBIisB,GAAetiC,EAAM7D,QAAQ0iC,SAASv+B,OAASgiC,EAAe,GAChEhiC,EAAuByyB,EAAfuP,EAA0BvP,EAAWuP,EAE7CjsB,EAAS,EAC2B,QAAhCrW,EAAM7D,QAAQ0iC,SAAS1F,MACzB9iB,GAAU,GAAMisB,EAEuB,SAAhCtiC,EAAM7D,QAAQ0iC,SAAS1F,QAC9B9iB,GAAU,GAAMisB,KAKlBhiC,EAAQN,EAAM7D,QAAQ0iC,SAASv+B,MAC/B+V,EAAS,EAC2B,QAAhCrW,EAAM7D,QAAQ0iC,SAAS1F,MACzB9iB,GAAU,GAAMrW,EAAM7D,QAAQ0iC,SAASv+B,MAEA,SAAhCN,EAAM7D,QAAQ0iC,SAAS1F,QAC9B9iB,GAAU,GAAMrW,EAAM7D,QAAQ0iC,SAASv+B,SAInCA,MAAOA,EAAO+V,OAAQA,IAUhCjmB,EAAU6Q,UAAUs/B,eAAiB,SAAUzc,EAAS9jB,GACtD,GAAe,MAAX8jB,GACEA,EAAQhxB,OAAS,EAAG,CACtB,GAAI4jC,GAAM/8B,EACNopC,EAAY1xC,OAAO/D,KAAK0kC,IAAIp3B,MAAM2F,OAAO/G,QAAQ,KAAK,IAa1D,IAZAk9B,EAAOxoC,EAAQiR,cAAc,OAAQ7R,KAAK8lC,YAAa9lC,KAAK0kC,KAC5D0E,EAAKv2B,eAAe,KAAM,QAASH,EAAM7K,WAIvCwE,EADsC,GAApCqG,EAAM7D,QAAQm6B,WAAWl6B,QACvB9O,KAAK01C,YAAYlf,EAAS9jB,GAG1B1S,KAAK21C,QAAQnf,GAIiB,GAAhC9jB,EAAM7D,QAAQ26B,OAAO16B,QAAiB,CACxC,GACI8mC,GADAvM,EAAWzoC,EAAQiR,cAAc,OAAO7R,KAAK8lC,YAAa9lC,KAAK0kC,IAGjEkR,GADsC,OAApCljC,EAAM7D,QAAQ26B,OAAOtV,YACf,IAAMsC,EAAQ,GAAGhkB,EAAI,MAAgBnG,EAAI,IAAMmqB,EAAQA,EAAQhxB,OAAS,GAAGgN,EAAI,KAG/E,IAAMgkB,EAAQ,GAAGhkB,EAAI,IAAMijC,EAAY,IAAMppC,EAAI,IAAMmqB,EAAQA,EAAQhxB,OAAS,GAAGgN,EAAI,IAAMijC,EAEvGpM,EAASx2B,eAAe,KAAM,QAASH,EAAM7K,UAAY,SACzDwhC,EAASx2B,eAAe,KAAM,IAAK+iC,GAGrCxM,EAAKv2B,eAAe,KAAM,IAAK,IAAMxG,GAGG,GAApCqG,EAAM7D,QAAQ+D,WAAW9D,SAC3B9O,KAAK61C,YAAYrf,EAAS9jB,EAAO1S,KAAK8lC,YAAa9lC,KAAK0kC,OAehE5hC,EAAU6Q,UAAUkiC,YAAc,SAAUrf,EAAS9jB,EAAOnB,EAAemzB,EAAK3b,GAC/D1iB,SAAX0iB,IAAuBA,EAAS,EACpC,KAAK,GAAI1jB,GAAI,EAAGA,EAAImxB,EAAQhxB,OAAQH,IAClCzE,EAAQ2R,UAAUikB,EAAQnxB,GAAGmN,EAAIuW,EAAQyN,EAAQnxB,GAAGoN,EAAGC,EAAOnB,EAAemzB,IAejF5hC,EAAU6Q,UAAUk/B,qBAAuB,SAAUiD,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEArhB,EAAW50B,KAAKs0B,KAAK3zB,KAAKi0B,SAErBvvB,EAAI,EAAGA,EAAIywC,EAAWtwC,OAAQH,IACrC0wC,EAASnhB,EAASkhB,EAAWzwC,GAAGmN,GAAKxS,KAAKgT,MAC1CgjC,EAASF,EAAWzwC,GAAGoN,EACvBwjC,EAAcjuC,MAAMwK,EAAGujC,EAAQtjC,EAAGujC,GAGpC,OAAOC,IAcTnzC,EAAU6Q,UAAUq/B,qBAAuB,SAAU8C,EAAYpjC,GAC/D,GACIqjC,GAAQC,EADRC,KAEArhB,EAAW50B,KAAKs0B,KAAK3zB,KAAKi0B,SAC1BwL,EAAOpgC,KAAK8xC,UACZ2D,EAAY1xC,OAAO/D,KAAK0kC,IAAIp3B,MAAM2F,OAAO/G,QAAQ,KAAK,IACpB,UAAlCwG,EAAM7D,QAAQg7B,mBAChBzJ,EAAOpgC,KAAK+xC,WAGd,KAAK,GAAI1sC,GAAI,EAAGA,EAAIywC,EAAWtwC,OAAQH,IACrC0wC,EAASnhB,EAASkhB,EAAWzwC,GAAGmN,GAAKxS,KAAKgT,MAC1CgjC,EAASjxC,KAAKkoB,MAAMmT,EAAK4H,aAAa8N,EAAWzwC,GAAGoN,IACpDwjC,EAAcjuC,MAAMwK,EAAGujC,EAAQtjC,EAAGujC,GAKpC,OAFAtjC,GAAMq2B,gBAAgBhkC,KAAKwG,IAAIkqC,EAAWrV,EAAK4H,aAAa,KAErDiO,GAUTnzC,EAAU6Q,UAAUuiC,mBAAqB,SAAS/iC,GAMhD,IAAK,GAJDgjC,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrBnqC,EAAItH,KAAKkoB,MAAM9Z,EAAK,GAAGX,GAAK,IAAMzN,KAAKkoB,MAAM9Z,EAAK,GAAGV,GAAK,IAC1DgkC,EAAgB,EAAE,EAClBjxC,EAAS2N,EAAK3N,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9B8wC,EAAW,GAAL9wC,EAAU8N,EAAK,GAAKA,EAAK9N,EAAE,GACjC+wC,EAAKjjC,EAAK9N,GACVgxC,EAAKljC,EAAK9N,EAAE,GACZixC,EAAc9wC,EAARH,EAAI,EAAc8N,EAAK9N,EAAE,GAAKgxC,EAUpCE,GAAQ/jC,IAAM2jC,EAAG3jC,EAAI,EAAE4jC,EAAG5jC,EAAI6jC,EAAG7jC,GAAIikC,EAAgBhkC,IAAM0jC,EAAG1jC,EAAI,EAAE2jC,EAAG3jC,EAAI4jC,EAAG5jC,GAAIgkC,GAClFD,GAAQhkC,GAAM4jC,EAAG5jC,EAAI,EAAE6jC,EAAG7jC,EAAI8jC,EAAG9jC,GAAIikC,EAAgBhkC,GAAM2jC,EAAG3jC,EAAI,EAAE4jC,EAAG5jC,EAAI6jC,EAAG7jC,GAAIgkC,GAGlFpqC,GAAK,IACHkqC,EAAI/jC,EAAI,IACR+jC,EAAI9jC,EAAI,IACR+jC,EAAIhkC,EAAI,IACRgkC,EAAI/jC,EAAI,IACR4jC,EAAG7jC,EAAI,IACP6jC,EAAG5jC,EAAI,GAGX,OAAOpG,IAaTvJ,EAAU6Q,UAAU+hC,YAAc,SAASviC,EAAMT,GAC/C,GAAIw2B,GAAQx2B,EAAM7D,QAAQm6B,WAAWE,KACrC,IAAa,GAATA,GAAwB7iC,SAAV6iC,EAChB,MAAOlpC,MAAKk2C,mBAAmB/iC,EAO/B,KAAK,GAJDgjC,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAGC,EAAGC,EAAIC,EAAGhtB,EAAGitB,EAAGC,EAC7CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3ChrC,EAAItH,KAAKkoB,MAAM9Z,EAAK,GAAGX,GAAK,IAAMzN,KAAKkoB,MAAM9Z,EAAK,GAAGV,GAAK,IAC1DjN,EAAS2N,EAAK3N,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9B8wC,EAAW,GAAL9wC,EAAU8N,EAAK,GAAKA,EAAK9N,EAAE,GACjC+wC,EAAKjjC,EAAK9N,GACVgxC,EAAKljC,EAAK9N,EAAE,GACZixC,EAAc9wC,EAARH,EAAI,EAAc8N,EAAK9N,EAAE,GAAKgxC,EAEpCK,EAAK3xC,KAAKqqB,KAAKrqB,KAAK0uB,IAAI0iB,EAAG3jC,EAAI4jC,EAAG5jC,EAAE,GAAKzN,KAAK0uB,IAAI0iB,EAAG1jC,EAAI2jC,EAAG3jC,EAAE,IAC9DkkC,EAAK5xC,KAAKqqB,KAAKrqB,KAAK0uB,IAAI2iB,EAAG5jC,EAAI6jC,EAAG7jC,EAAE,GAAKzN,KAAK0uB,IAAI2iB,EAAG3jC,EAAI4jC,EAAG5jC,EAAE,IAC9DmkC,EAAK7xC,KAAKqqB,KAAKrqB,KAAK0uB,IAAI4iB,EAAG7jC,EAAI8jC,EAAG9jC,EAAE,GAAKzN,KAAK0uB,IAAI4iB,EAAG5jC,EAAI6jC,EAAG7jC,EAAE,IAiB9DukC,EAAUjyC,KAAK0uB,IAAImjB,EAAK1N,GACxBgO,EAAUnyC,KAAK0uB,IAAImjB,EAAG,EAAE1N,GACxB+N,EAAUlyC,KAAK0uB,IAAIkjB,EAAKzN,GACxBiO,EAAUpyC,KAAK0uB,IAAIkjB,EAAG,EAAEzN,GACxBmO,EAAUtyC,KAAK0uB,IAAIijB,EAAKxN,GACxBkO,EAAUryC,KAAK0uB,IAAIijB,EAAG,EAAExN,GAExB2N,EAAI,EAAEO,EAAU,EAAEC,EAASJ,EAASE,EACpCttB,EAAI,EAAEqtB,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,GAAQ/jC,IAAM2kC,EAAUhB,EAAG3jC,EAAIqkC,EAAET,EAAG5jC,EAAI4kC,EAAUf,EAAG7jC,GAAKskC,EACxDrkC,IAAM0kC,EAAUhB,EAAG1jC,EAAIokC,EAAET,EAAG3jC,EAAI2kC,EAAUf,EAAG5jC,GAAKqkC,GAEpDN,GAAQhkC,GAAM0kC,EAAUd,EAAG5jC,EAAIqX,EAAEwsB,EAAG7jC,EAAI2kC,EAAUb,EAAG9jC,GAAKukC,EACxDtkC,GAAMykC,EAAUd,EAAG3jC,EAAIoX,EAAEwsB,EAAG5jC,EAAI0kC,EAAUb,EAAG7jC,GAAKskC,GAEvC,GAATR,EAAI/jC,GAAmB,GAAT+jC,EAAI9jC,IAAS8jC,EAAMH,GACxB,GAATI,EAAIhkC,GAAmB,GAATgkC,EAAI/jC,IAAS+jC,EAAMH,GACrChqC,GAAK,IACHkqC,EAAI/jC,EAAI,IACR+jC,EAAI9jC,EAAI,IACR+jC,EAAIhkC,EAAI,IACRgkC,EAAI/jC,EAAI,IACR4jC,EAAG7jC,EAAI,IACP6jC,EAAG5jC,EAAI,GAGX,OAAOpG,IAUXvJ,EAAU6Q,UAAUgiC,QAAU,SAASxiC,GAGrC,IAAK,GADD9G,GAAI,GACChH,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAE7BgH,GADO,GAALhH,EACG8N,EAAK9N,GAAGmN,EAAI,IAAMW,EAAK9N,GAAGoN,EAG1B,IAAMU,EAAK9N,GAAGmN,EAAI,IAAMW,EAAK9N,GAAGoN,CAGzC,OAAOpG,IAGTxM,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAgB9B,QAAS6C,GAAUuxB,EAAMzlB,GACvB7O,KAAKwvB,KACH2a,WAAY,KACZmN,cACAC,cACAC,cACAC,cACAhmC,WACE6lC,cACAC,cACAC,cACAC,gBAGJz3C,KAAK6F,OACHoJ,OACEY,MAAO,EACPS,IAAK,EACLyqB,YAAa,GAEf2c,QAAS,GAGX13C,KAAKg0B,gBACHE,YAAa,SAEb0Q,iBAAiB,EACjBC,iBAAiB,GAEnB7kC,KAAK6O,QAAUlO,EAAKwE,UAAWnF,KAAKg0B,gBAEpCh0B,KAAKs0B,KAAOA,EAGZt0B,KAAKq0B,UAELr0B,KAAKkc,WAAWrN,GAlDlB,GAAIlO,GAAOT,EAAoB,GAC3BoC,EAAYpC,EAAoB,IAChC4B,EAAW5B,EAAoB,IAE/ByD,GADWzD,EAAoB,IACtBA,EAAoB,IAiDjC6C,GAAS4Q,UAAY,GAAIrR,GAUzBS,EAAS4Q,UAAUuI,WAAa,SAASrN,GACnCA,IAEFlO,EAAKiF,iBAAiB,cAAe,kBAAmB,kBAAkB,eAAgB5F,KAAK6O,QAASA,GAIpG,UAAYA,KACe,kBAAlBlL,GAAOggC,OAEhBhgC,EAAOggC,OAAO90B,EAAQ80B,QAGtBhgC,EAAOg0C,KAAK9oC,EAAQ80B,WAS5B5gC,EAAS4Q,UAAU0gB,QAAU,WAC3Br0B,KAAKwvB,IAAI2a,WAAan4B,SAASM,cAAc,OAC7CtS,KAAKwvB,IAAI5jB,WAAaoG,SAASM,cAAc,OAE7CtS,KAAKwvB,IAAI2a,WAAWtiC,UAAY,sBAChC7H,KAAKwvB,IAAI5jB,WAAW/D,UAAY,uBAMlC9E,EAAS4Q,UAAUyvB,QAAU,WAEvBpjC,KAAKwvB,IAAI2a,WAAWvgC,YACtB5J,KAAKwvB,IAAI2a,WAAWvgC,WAAWgI,YAAY5R,KAAKwvB,IAAI2a,YAElDnqC,KAAKwvB,IAAI5jB,WAAWhC,YACtB5J,KAAKwvB,IAAI5jB,WAAWhC,WAAWgI,YAAY5R,KAAKwvB,IAAI5jB,YAGtD5L,KAAKs0B,KAAO,MAOdvxB,EAAS4Q,UAAUkN,OAAS,WAC1B,GAAIhS,GAAU7O,KAAK6O,QACfhJ,EAAQ7F,KAAK6F,MACbskC,EAAanqC,KAAKwvB,IAAI2a,WACtBv+B,EAAa5L,KAAKwvB,IAAI5jB,WAGtBg4B,EAAiC,OAAvB/0B,EAAQqlB,YAAwBl0B,KAAKs0B,KAAK9E,IAAI9nB,IAAM1H,KAAKs0B,KAAK9E,IAAI9M,OAC5Ek1B,EAAiBzN,EAAWvgC,aAAeg6B,CAG/C5jC,MAAK+mC,oBAGL,IACInC,IADc5kC,KAAK6O,QAAQqlB,YACTl0B,KAAK6O,QAAQ+1B,iBAC/BC,EAAkB7kC,KAAK6O,QAAQg2B,eAGnCh/B,GAAMmhC,iBAAmBpC,EAAkB/+B,EAAMohC,gBAAkB,EACnEphC,EAAMqhC,iBAAmBrC,EAAkBh/B,EAAMshC,gBAAkB,EACnEthC,EAAMoN,OAASpN,EAAMmhC,iBAAmBnhC,EAAMqhC,iBAC9CrhC,EAAMmN,MAAQm3B,EAAWta,YAEzBhqB,EAAMwhC,gBAAkBrnC,KAAKs0B,KAAKC,SAAS70B,KAAKuT,OAASpN,EAAMqhC,kBACnC,OAAvBr4B,EAAQqlB,YAAuBl0B,KAAKs0B,KAAKC,SAAS7R,OAAOzP,OAASjT,KAAKs0B,KAAKC,SAAS7sB,IAAIuL,QAC9FpN,EAAMuhC,eAAiB,EACvBvhC,EAAM0hC,gBAAkB1hC,EAAMwhC,gBAAkBxhC,EAAMqhC,iBACtDrhC,EAAMyhC,eAAiB,CAGvB,IAAIuQ,GAAwB1N,EAAW2N,YACnCC,EAAwBnsC,EAAWksC,WAsBvC,OArBA3N,GAAWvgC,YAAcugC,EAAWvgC,WAAWgI,YAAYu4B,GAC3Dv+B,EAAWhC,YAAcgC,EAAWhC,WAAWgI,YAAYhG,GAE3Du+B,EAAW78B,MAAM2F,OAASjT,KAAK6F,MAAMoN,OAAS,KAE9CjT,KAAKg4C,iBAGDH,EACFjU,EAAOvxB,aAAa83B,EAAY0N,GAGhCjU,EAAO1xB,YAAYi4B,GAEjB4N,EACF/3C,KAAKs0B,KAAK9E,IAAIqU,mBAAmBxxB,aAAazG,EAAYmsC,GAG1D/3C,KAAKs0B,KAAK9E,IAAIqU,mBAAmB3xB,YAAYtG,GAGxC5L,KAAKqjC,cAAgBuU;EAO9B70C,EAAS4Q,UAAUqkC,eAAiB,WAClC,GAAI9jB,GAAcl0B,KAAK6O,QAAQqlB,YAG3BrkB,EAAQlP,EAAK+F,QAAQ1G,KAAKs0B,KAAKrlB,MAAMY,MAAO,UAC5CS,EAAM3P,EAAK+F,QAAQ1G,KAAKs0B,KAAKrlB,MAAMqB,IAAK,UACxCyqB,EAAc/6B,KAAKs0B,KAAK3zB,KAAKq0B,OAA2C,GAAnCh1B,KAAK6F,MAAMyiC,gBAAkB,KAASzhC,UACtE7G,KAAKs0B,KAAK3zB,KAAKq0B,OAAO,GAAGnuB,UAC9B0gB,EAAO,GAAIzlB,GAAS,GAAIqC,MAAK0L,GAAQ,GAAI1L,MAAKmM,GAAMyqB,EAAa/6B,KAAKs0B,KAAKI,YAC/E10B,MAAKunB,KAAOA,CAKZ,IAAIiI,GAAMxvB,KAAKwvB,GACfA,GAAI/d,UAAU6lC,WAAa9nB,EAAI8nB,WAC/B9nB,EAAI/d,UAAU8lC,WAAa/nB,EAAI+nB,WAC/B/nB,EAAI/d,UAAU+lC,WAAahoB,EAAIgoB,WAC/BhoB,EAAI/d,UAAUgmC,WAAajoB,EAAIioB,WAC/BjoB,EAAI8nB,cACJ9nB,EAAI+nB,cACJ/nB,EAAIgoB,cACJhoB,EAAIioB,cAEJlwB,EAAK8Z,OAGL,KAFA,GAAI4W,GAAmB5xC,OACnB2G,EAAM,EACHua,EAAKgV,WAAmB,IAANvvB,GAAY,CACnCA,GACA,IAAIkrC,GAAM3wB,EAAKC,aACXhV,EAAIxS,KAAKs0B,KAAK3zB,KAAKi0B,SAASsjB,GAC5Bxb,EAAUnV,EAAKmV,SAIf18B,MAAK6O,QAAQ+1B,iBACf5kC,KAAKm4C,kBAAkB3lC,EAAG+U,EAAK0b,gBAAiB/O,GAG9CwI,GAAW18B,KAAK6O,QAAQg2B,iBACtBryB,EAAI,IACkBnM,QAApB4xC,IACFA,EAAmBzlC,GAErBxS,KAAKo4C,kBAAkB5lC,EAAG+U,EAAK4b,gBAAiBjP,IAElDl0B,KAAKq4C,kBAAkB7lC,EAAG0hB,IAG1Bl0B,KAAKs4C,kBAAkB9lC,EAAG0hB,GAG5B3M,EAAKE,OAIP,GAAIznB,KAAK6O,QAAQg2B,gBAAiB,CAChC,GAAI0T,GAAWv4C,KAAKs0B,KAAK3zB,KAAKq0B,OAAO,GACjCwjB,EAAWjxB,EAAK4b,cAAcoV,GAC9BE,EAAYD,EAAShzC,QAAUxF,KAAK6F,MAAMwiC,gBAAkB,IAAM,IAE9ChiC,QAApB4xC,GAA6CA,EAAZQ,IACnCz4C,KAAKo4C,kBAAkB,EAAGI,EAAUtkB,GAKxCvzB,EAAK0H,QAAQrI,KAAKwvB,IAAI/d,UAAW,SAAUinC,GACzC,KAAOA,EAAIlzC,QAAQ,CACjB,GAAI4B,GAAOsxC,EAAIC,KACXvxC,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWgI,YAAYxK,OAapCrE,EAAS4Q,UAAUwkC,kBAAoB,SAAU3lC,EAAGmW,EAAMuL,GAExD,GAAIrM,GAAQ7nB,KAAKwvB,IAAI/d,UAAUgmC,WAAW1lC,OAE1C,KAAK8V,EAAO,CAEV,GAAIwH,GAAUrd,SAASw2B,eAAe,GACtC3gB,GAAQ7V,SAASM,cAAc,OAC/BuV,EAAM3V,YAAYmd,GAClBxH,EAAMhgB,UAAY,aAClB7H,KAAKwvB,IAAI2a,WAAWj4B,YAAY2V,GAElC7nB,KAAKwvB,IAAIioB,WAAWzvC,KAAK6f,GAEzBA,EAAM+wB,WAAW,GAAGC,UAAYlwB,EAEhCd,EAAMva,MAAM5F,IAAsB,OAAfwsB,EAAyBl0B,KAAK6F,MAAMqhC,iBAAmB,KAAQ,IAClFrf,EAAMva,MAAMhG,KAAOkL,EAAI,MAWzBzP,EAAS4Q,UAAUykC,kBAAoB,SAAU5lC,EAAGmW,EAAMuL,GAExD,GAAIrM,GAAQ7nB,KAAKwvB,IAAI/d,UAAU8lC,WAAWxlC,OAE1C,KAAK8V,EAAO,CAEV,GAAIwH,GAAUrd,SAASw2B,eAAe7f,EACtCd,GAAQ7V,SAASM,cAAc,OAC/BuV,EAAMhgB,UAAY,aAClBggB,EAAM3V,YAAYmd,GAClBrvB,KAAKwvB,IAAI2a,WAAWj4B,YAAY2V,GAElC7nB,KAAKwvB,IAAI+nB,WAAWvvC,KAAK6f,GAEzBA,EAAM+wB,WAAW,GAAGC,UAAYlwB,EAGhCd,EAAMva,MAAM5F,IAAsB,OAAfwsB,EAAwB,IAAOl0B,KAAK6F,MAAMmhC,iBAAoB,KACjFnf,EAAMva,MAAMhG,KAAOkL,EAAI,MASzBzP,EAAS4Q,UAAU2kC,kBAAoB,SAAU9lC,EAAG0hB,GAElD,GAAI5E,GAAOtvB,KAAKwvB,IAAI/d,UAAU+lC,WAAWzlC,OAEpCud,KAEHA,EAAOtd,SAASM,cAAc,OAC9Bgd,EAAKznB,UAAY,sBACjB7H,KAAKwvB,IAAI5jB,WAAWsG,YAAYod,IAElCtvB,KAAKwvB,IAAIgoB,WAAWxvC,KAAKsnB,EAEzB,IAAIzpB,GAAQ7F,KAAK6F,KAEfypB,GAAKhiB,MAAM5F,IADM,OAAfwsB,EACeruB,EAAMqhC,iBAAmB,KAGzBlnC,KAAKs0B,KAAKC,SAAS7sB,IAAIuL,OAAS,KAEnDqc,EAAKhiB,MAAM2F,OAASpN,EAAMwhC,gBAAkB,KAC5C/X,EAAKhiB,MAAMhG,KAAQkL,EAAI3M,EAAMuhC,eAAiB,EAAK,MASrDrkC,EAAS4Q,UAAU0kC,kBAAoB,SAAU7lC,EAAG0hB,GAElD,GAAI5E,GAAOtvB,KAAKwvB,IAAI/d,UAAU6lC,WAAWvlC,OAEpCud,KAEHA,EAAOtd,SAASM,cAAc,OAC9Bgd,EAAKznB,UAAY,sBACjB7H,KAAKwvB,IAAI5jB,WAAWsG,YAAYod,IAElCtvB,KAAKwvB,IAAI8nB,WAAWtvC,KAAKsnB,EAEzB,IAAIzpB,GAAQ7F,KAAK6F,KAEfypB,GAAKhiB,MAAM5F,IADM,OAAfwsB,EACe,IAGAl0B,KAAKs0B,KAAKC,SAAS7sB,IAAIuL,OAAS,KAEnDqc,EAAKhiB,MAAMhG,KAAQkL,EAAI3M,EAAMyhC,eAAiB,EAAK,KACnDhY,EAAKhiB,MAAM2F,OAASpN,EAAM0hC,gBAAkB,MAQ9CxkC,EAAS4Q,UAAUozB,mBAAqB,WAKjC/mC,KAAKwvB,IAAIiZ,mBACZzoC,KAAKwvB,IAAIiZ,iBAAmBz2B,SAASM,cAAc,OACnDtS,KAAKwvB,IAAIiZ,iBAAiB5gC,UAAY,qBACtC7H,KAAKwvB,IAAIiZ,iBAAiBn7B,MAAM0V,SAAW,WAE3ChjB,KAAKwvB,IAAIiZ,iBAAiBv2B,YAAYF,SAASw2B,eAAe,MAC9DxoC,KAAKwvB,IAAI2a,WAAWj4B,YAAYlS,KAAKwvB,IAAIiZ,mBAE3CzoC,KAAK6F,MAAMohC,gBAAkBjnC,KAAKwvB,IAAIiZ,iBAAiBxkB,aACvDjkB,KAAK6F,MAAMyiC,eAAiBtoC,KAAKwvB,IAAIiZ,iBAAiB7pB,YAGjD5e,KAAKwvB,IAAImZ,mBACZ3oC,KAAKwvB,IAAImZ,iBAAmB32B,SAASM,cAAc,OACnDtS,KAAKwvB,IAAImZ,iBAAiB9gC,UAAY,qBACtC7H,KAAKwvB,IAAImZ,iBAAiBr7B,MAAM0V,SAAW,WAE3ChjB,KAAKwvB,IAAImZ,iBAAiBz2B,YAAYF,SAASw2B,eAAe,MAC9DxoC,KAAKwvB,IAAI2a,WAAWj4B,YAAYlS,KAAKwvB,IAAImZ,mBAE3C3oC,KAAK6F,MAAMshC,gBAAkBnnC,KAAKwvB,IAAImZ,iBAAiB1kB,aACvDjkB,KAAK6F,MAAMwiC,eAAiBroC,KAAKwvB,IAAImZ,iBAAiB/pB,aASxD7b,EAAS4Q,UAAUghB,KAAO,SAASqO,GACjC,MAAOhjC,MAAKunB,KAAKoN,KAAKqO,IAGxBnjC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAc9B,QAAS+B,GAAMkR,EAAMqnB,EAAY3rB,GAC/B7O,KAAKK,GAAK,KACVL,KAAK4jC,OAAS,KACd5jC,KAAKmT,KAAOA,EACZnT,KAAKwvB,IAAM,KACXxvB,KAAKw6B,WAAaA,MAClBx6B,KAAK6O,QAAUA,MAEf7O,KAAK4vC,UAAW,EAChB5vC,KAAK4qC,WAAY,EACjB5qC,KAAK2qC,OAAQ,EAEb3qC,KAAK0H,IAAM,KACX1H,KAAKsH,KAAO,KACZtH,KAAKgT,MAAQ,KACbhT,KAAKiT,OAAS,KAEdjT,KAAKugC,gBAAiB,EA7BxB,GAAI6D,GAASlkC,EAAoB,IAC7BS,EAAOT,EAAoB,EAkC/B+B,GAAK0R,UAAUo6B,OAAS,WACtB/tC,KAAK4vC,UAAW,EAChB5vC,KAAK2qC,OAAQ,EACT3qC,KAAK4qC,WAAW5qC,KAAK6gB,UAM3B5e,EAAK0R,UAAUm6B,SAAW,WACxB9tC,KAAK4vC,UAAW,EAChB5vC,KAAK2qC,OAAQ,EACT3qC,KAAK4qC,WAAW5qC,KAAK6gB,UAQ3B5e,EAAK0R,UAAU4E,QAAU,SAASpF,GAChCnT,KAAKmT,KAAOA,EACZnT,KAAK2qC,OAAQ,EACT3qC,KAAK4qC,WAAW5qC,KAAK6gB,UAO3B5e,EAAK0R,UAAUu3B,UAAY,SAAStH,GAC9B5jC,KAAK4qC,WACP5qC,KAAKomC,OACLpmC,KAAK4jC,OAASA,EACV5jC,KAAK4jC,QACP5jC,KAAKqmC,QAIPrmC,KAAK4jC,OAASA,GASlB3hC,EAAK0R,UAAU/D,UAAY,WAEzB,OAAO,GAOT3N,EAAK0R,UAAU0yB,KAAO,WACpB,OAAO,GAOTpkC,EAAK0R,UAAUyyB,KAAO,WACpB,OAAO,GAMTnkC,EAAK0R,UAAUkN,OAAS,aAOxB5e,EAAK0R,UAAUi4B,YAAc,aAO7B3pC,EAAK0R,UAAUq3B,YAAc,aAS7B/oC,EAAK0R,UAAUmlC,qBAAuB,SAAUC,GAC9C,GAAI/4C,KAAK4vC,UAAY5vC,KAAK6O,QAAQm9B,SAASp1B,SAAW5W,KAAKwvB,IAAIwpB,aAAc,CAE3E,GAAIxkC,GAAKxU,KAELg5C,EAAehnC,SAASM,cAAc,MAC1C0mC,GAAanxC,UAAY,SACzBmxC,EAAalV,MAAQ,mBAErBM,EAAO4U,GACL3vC,gBAAgB,IACfuK,GAAG,MAAO,SAAUtK,GACrBkL,EAAGovB,OAAOwH,kBAAkB52B,GAC5BlL,EAAMm7B,oBAGRsU,EAAO7mC,YAAY8mC,GACnBh5C,KAAKwvB,IAAIwpB,aAAeA,OAEhBh5C,KAAK4vC,UAAY5vC,KAAKwvB,IAAIwpB,eAE9Bh5C,KAAKwvB,IAAIwpB,aAAapvC,YACxB5J,KAAKwvB,IAAIwpB,aAAapvC,WAAWgI,YAAY5R,KAAKwvB,IAAIwpB,cAExDh5C,KAAKwvB,IAAIwpB,aAAe,OAS5B/2C,EAAK0R,UAAUslC,gBAAkB,SAAUrwC,GACzC,GAAIymB,EACJ,IAAIrvB,KAAK6O,QAAQqqC,SAAU,CACzB,GAAI7iB,GAAWr2B,KAAK4jC,OAAOrO,QAAQC,UAAUhgB,IAAIxV,KAAKK,GACtDgvB,GAAUrvB,KAAK6O,QAAQqqC,SAAS7iB,OAGhChH,GAAUrvB,KAAKmT,KAAKkc,OAGtB,IAAGA,IAAYrvB,KAAKqvB,QAAS,CAE3B,GAAIA,YAAmBgb,SACrBzhC,EAAQya,UAAY,GACpBza,EAAQsJ,YAAYmd,OAEjB,IAAehpB,QAAXgpB,EACPzmB,EAAQya,UAAYgM,MAGpB,IAAwB,cAAlBrvB,KAAKmT,KAAKxM,MAA8CN,SAAtBrG,KAAKmT,KAAKkc,QAChD,KAAM,IAAI3rB,OAAM,sCAAwC1D,KAAKK,GAIjEL,MAAKqvB,QAAUA,IASnBptB,EAAK0R,UAAUwlC,aAAe,SAAUvwC,GACf,MAAnB5I,KAAKmT,KAAK2wB,MACZl7B,EAAQk7B,MAAQ9jC,KAAKmT,KAAK2wB,OAAS,GAGnCl7B,EAAQwwC,gBAAgB,UAS3Bn3C,EAAK0R,UAAU0lC,sBAAwB,SAASzwC,GAC/C,GAAI5I,KAAK6O,QAAQyqC,gBAAkBt5C,KAAK6O,QAAQyqC,eAAe9zC,OAAS,EAAG,CACzE,GAAI+zC,KAEJ,IAAIzzC,MAAMC,QAAQ/F,KAAK6O,QAAQyqC,gBAC7BC,EAAav5C,KAAK6O,QAAQyqC,mBAEvB,CAAA,GAAmC,OAA/Bt5C,KAAK6O,QAAQyqC,eAIpB,MAHAC,GAAanzC,OAAOqH,KAAKzN,KAAKmT,MAMhC,IAAK,GAAI9N,GAAI,EAAGA,EAAIk0C,EAAW/zC,OAAQH,IAAK,CAC1C,GAAImR,GAAO+iC,EAAWl0C,GAClB6B,EAAQlH,KAAKmT,KAAKqD,EAET,OAATtP,EACF0B,EAAQ4wC,aAAa,QAAUhjC,EAAMtP,GAGrC0B,EAAQwwC,gBAAgB,QAAU5iC,MAW1CvU,EAAK0R,UAAU8lC,aAAe,SAAS7wC,GAEjC5I,KAAKsN,QACP3M,EAAKmN,cAAclF,EAAS5I,KAAKsN,OACjCtN,KAAKsN,MAAQ,MAIXtN,KAAKmT,KAAK7F,QACZ3M,EAAKgN,WAAW/E,EAAS5I,KAAKmT,KAAK7F,OACnCtN,KAAKsN,MAAQtN,KAAKmT,KAAK7F,QAI3BzN,EAAOD,QAAUqC,GAKb,SAASpC,EAAQD,EAASM,GAiB9B,QAASgC,GAAgBiR,EAAMqnB,EAAY3rB,GASzC,GARA7O,KAAK6F,OACHwpB,SACErc,MAAO,IAGXhT,KAAKijB,UAAW,EAGZ9P,EAAM,CACR,GAAkB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAAK9S,GAE7D,IAAgBgG,QAAZ8M,EAAK7C,IACP,KAAM,IAAI5M,OAAM,kCAAoCyP,EAAK9S,IAI7D4B,EAAK1B,KAAKP,KAAMmT,EAAMqnB,EAAY3rB,GAElC7O,KAAKugC,gBAAiB,EACtBvgC,KAAK05C,cAAe,EApCtB,GACIz3C,IADS/B,EAAoB,IACtBA,EAAoB,KAC3BmC,EAAYnC,EAAoB,GAqCpCgC,GAAeyR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAEjDC,EAAeyR,UAAUgmC,cAAgB,kBAOzCz3C,EAAeyR,UAAU/D,UAAY,SAASX,GAE5C,MAAQjP,MAAKmT,KAAKtD,MAAQZ,EAAMqB,KAAStQ,KAAKmT,KAAK7C,IAAMrB,EAAMY,OAMjE3N,EAAeyR,UAAUkN,OAAS,WAChC,GAAI2O,GAAMxvB,KAAKwvB,GAsBf,IArBKA,IAEHxvB,KAAKwvB,OACLA,EAAMxvB,KAAKwvB,IAGXA,EAAI6d,IAAMr7B,SAASM,cAAc,OAIjCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI6d,IAAIn7B,YAAYsd,EAAIH,SAGxBG,EAAI6d,IAAI,iBAAmBrtC,KAE3BA,KAAK2qC,OAAQ,IAIV3qC,KAAK4jC,OACR,KAAM,IAAIlgC,OAAM,yCAElB,KAAK8rB,EAAI6d,IAAIzjC,WAAY,CACvB,GAAIgC,GAAa5L,KAAK4jC,OAAOpU,IAAI5jB,UACjC,KAAKA,EACH,KAAM,IAAIlI,OAAM,iEAElBkI,GAAWsG,YAAYsd,EAAI6d,KAQ7B,GANArtC,KAAK4qC,WAAY,EAMb5qC,KAAK2qC,MAAO,CACd3qC,KAAKi5C,gBAAgBj5C,KAAKwvB,IAAIH,SAC9BrvB,KAAKm5C,aAAan5C,KAAKwvB,IAAIH,SAC3BrvB,KAAKq5C,sBAAsBr5C,KAAKwvB,IAAIH,SACpCrvB,KAAKy5C,aAAaz5C,KAAKwvB,IAAI6d,IAG3B,IAAIxlC,IAAa7H,KAAKmT,KAAKtL,UAAa,IAAM7H,KAAKmT,KAAKtL,UAAa,KAChE7H,KAAK4vC,SAAW,YAAc,GACnCpgB,GAAI6d,IAAIxlC,UAAY7H,KAAK25C,cAAgB9xC,EAGzC7H,KAAKijB,SAA6D,WAAlD1b,OAAO2pC,iBAAiB1hB,EAAIH,SAASpM,SAGrDjjB,KAAK6F,MAAMwpB,QAAQrc,MAAQhT,KAAKwvB,IAAIH,QAAQQ,YAC5C7vB,KAAKiT,OAAS,EAEdjT,KAAK2qC,OAAQ,IAQjBzoC,EAAeyR,UAAU0yB,KAAOhkC,EAAUsR,UAAU0yB,KAMpDnkC,EAAeyR,UAAUyyB,KAAO/jC,EAAUsR,UAAUyyB,KAMpDlkC,EAAeyR,UAAUi4B,YAAcvpC,EAAUsR,UAAUi4B,YAM3D1pC,EAAeyR,UAAUq3B,YAAc,SAAS9xB,GAC9C,GAAI0gC,GAAqC,QAA7B55C,KAAK6O,QAAQqlB,WACzBl0B,MAAKwvB,IAAIH,QAAQ/hB,MAAM5F,IAAMkyC,EAAQ,GAAK,IAC1C55C,KAAKwvB,IAAIH,QAAQ/hB,MAAMoV,OAASk3B,EAAQ,IAAM,EAC9C,IAAI3mC,EAGJ,IAA2B5M,SAAvBrG,KAAKmT,KAAKwtB,SAAwB,CACpC,GAAIA,GAAW3gC,KAAKmT,KAAKwtB,QAKzB,IAJA1tB,EAASjT,KAAK4jC,OAAOlD,UAAUC,GAAU1tB,OAASiG,EAAOnE,KAAK8P,SAIjD,GAAT+0B,EAAe,CAEjB3mC,GAAsB,GAAZ0tB,EAAgBznB,EAAOknB,KAAO,GAAIlnB,EAAOnE,KAAK8P,SAAW,CACnE,IAAIg1B,GAAS75C,KAAK4jC,OAAOl8B,IAAM,EAAauL,CAG5C4mC,IAAsB,GAAZlZ,EAAgBznB,EAAOknB,KAAO,GAAMlnB,EAAOnE,KAAK8P,SAAW,EACrE7kB,KAAKwvB,IAAI6d,IAAI//B,MAAM5F,IAAMmyC,EAAS,KAClC75C,KAAKwvB,IAAI6d,IAAI//B,MAAMoV,OAAS,OAGzB,CACH,GAAIo3B,GAAyB95C,KAAK4jC,OAAOkG,iBAAmB,CAC5D9pC,MAAKwvB,IAAI6d,IAAI//B,MAAM5F,KAAOoyC,EAAyBnZ,GAAY1tB,EAASjT,KAAK4jC,OAAOl8B,IAAM,KAC1F1H,KAAKwvB,IAAI6d,IAAI//B,MAAMoV,OAAS,QAMNrc,UAApBrG,KAAKmT,KAAKT,OACZO,EAASjT,KAAK4jC,OAAO3wB,OAER,GAAT2mC,GACF55C,KAAKwvB,IAAI6d,IAAI//B,MAAM5F,IAAM1H,KAAK4jC,OAAOl8B,IAAM,KAC3C1H,KAAKwvB,IAAI6d,IAAI//B,MAAMoV,OAAS,KAI5B1iB,KAAKwvB,IAAI6d,IAAI//B,MAAM5F,IAAM1H,KAAK4jC,OAAOl8B,IAAM,KAC3C1H,KAAKwvB,IAAI6d,IAAI//B,MAAMoV,OAAS,MAK9BzP,EAASlO,KAAKiI,IAAIhN,KAAK4jC,OAAO3wB,OAAQjT,KAAK4jC,OAAOrO,QAAQjB,KAAKC,SAASmD,gBAAgBzkB,QACxFjT,KAAKwvB,IAAI6d,IAAI//B,MAAM5F,IAAMkyC,EAAQ,IAAM,GACvC55C,KAAKwvB,IAAI6d,IAAI//B,MAAMoV,OAASk3B,EAAQ,GAAK,IAG7C55C,MAAKwvB,IAAI6d,IAAI//B,MAAM2F,OAASA,EAAS,MAGvCpT,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAe9B,QAASiC,GAASgR,EAAMqnB,EAAY3rB,GAalC,GAZA7O,KAAK6F,OACH0pB,KACEvc,MAAO,EACPC,OAAQ,GAEVqc,MACEtc,MAAO,EACPC,OAAQ,IAKRE,GACgB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAI1DlR,GAAK1B,KAAKP,KAAMmT,EAAMqnB,EAAY3rB,GAhCpC,CAAA,GAAI5M,GAAO/B,EAAoB,GACpBA,GAAoB,GAkC/BiC,EAAQwR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAO1CE,EAAQwR,UAAU/D,UAAY,SAASX,GAGrC,GAAImjB,IAAYnjB,EAAMqB,IAAMrB,EAAMY,OAAS,CAC3C,OAAQ7P,MAAKmT,KAAKtD,MAAQZ,EAAMY,MAAQuiB,GAAcpyB,KAAKmT,KAAKtD,MAAQZ,EAAMqB,IAAM8hB,GAMtFjwB,EAAQwR,UAAUkN,OAAS,WACzB,GAAI2O,GAAMxvB,KAAKwvB,GA6Bf,IA5BKA,IAEHxvB,KAAKwvB,OACLA,EAAMxvB,KAAKwvB,IAGXA,EAAI6d,IAAMr7B,SAASM,cAAc,OAGjCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI6d,IAAIn7B,YAAYsd,EAAIH,SAGxBG,EAAIF,KAAOtd,SAASM,cAAc,OAClCkd,EAAIF,KAAKznB,UAAY,OAGrB2nB,EAAID,IAAMvd,SAASM,cAAc,OACjCkd,EAAID,IAAI1nB,UAAY,MAGpB2nB,EAAI6d,IAAI,iBAAmBrtC,KAE3BA,KAAK2qC,OAAQ,IAIV3qC,KAAK4jC,OACR,KAAM,IAAIlgC,OAAM,yCAElB,KAAK8rB,EAAI6d,IAAIzjC,WAAY,CACvB,GAAIugC,GAAanqC,KAAK4jC,OAAOpU,IAAI2a,UACjC,KAAKA,EAAY,KAAM,IAAIzmC,OAAM,iEACjCymC,GAAWj4B,YAAYsd,EAAI6d,KAE7B,IAAK7d,EAAIF,KAAK1lB,WAAY,CACxB,GAAIgC,GAAa5L,KAAK4jC,OAAOpU,IAAI5jB,UACjC,KAAKA,EAAY,KAAM,IAAIlI,OAAM,iEACjCkI,GAAWsG,YAAYsd,EAAIF,MAE7B,IAAKE,EAAID,IAAI3lB,WAAY,CACvB,GAAIw2B,GAAOpgC,KAAK4jC,OAAOpU,IAAI4Q,IAC3B,KAAKx0B,EAAY,KAAM,IAAIlI,OAAM,2DACjC08B,GAAKluB,YAAYsd,EAAID,KAQvB,GANAvvB,KAAK4qC,WAAY,EAMb5qC,KAAK2qC,MAAO,CACd3qC,KAAKi5C,gBAAgBj5C,KAAKwvB,IAAIH,SAC9BrvB,KAAKm5C,aAAan5C,KAAKwvB,IAAI6d,KAC3BrtC,KAAKq5C,sBAAsBr5C,KAAKwvB,IAAI6d,KACpCrtC,KAAKy5C,aAAaz5C,KAAKwvB,IAAI6d,IAG3B,IAAIxlC,IAAa7H,KAAKmT,KAAKtL,UAAW,IAAM7H,KAAKmT,KAAKtL,UAAY,KAC7D7H,KAAK4vC,SAAW,YAAc,GACnCpgB,GAAI6d,IAAIxlC,UAAY,WAAaA,EACjC2nB,EAAIF,KAAKznB,UAAY,YAAcA,EACnC2nB,EAAID,IAAI1nB,UAAa,WAAaA,EAGlC7H,KAAK6F,MAAM0pB,IAAItc,OAASuc,EAAID,IAAIQ,aAChC/vB,KAAK6F,MAAM0pB,IAAIvc,MAAQwc,EAAID,IAAIM,YAC/B7vB,KAAK6F,MAAMypB,KAAKtc,MAAQwc,EAAIF,KAAKO,YACjC7vB,KAAKgT,MAAQwc,EAAI6d,IAAIxd,YACrB7vB,KAAKiT,OAASuc,EAAI6d,IAAItd,aAEtB/vB,KAAK2qC,OAAQ,EAGf3qC,KAAK84C,qBAAqBtpB,EAAI6d,MAOhClrC,EAAQwR,UAAU0yB,KAAO,WAClBrmC,KAAK4qC,WACR5qC,KAAK6gB,UAOT1e,EAAQwR,UAAUyyB,KAAO,WACvB,GAAIpmC,KAAK4qC,UAAW,CAClB,GAAIpb,GAAMxvB,KAAKwvB,GAEXA,GAAI6d,IAAIzjC,YAAc4lB,EAAI6d,IAAIzjC,WAAWgI,YAAY4d,EAAI6d,KACzD7d,EAAIF,KAAK1lB,YAAa4lB,EAAIF,KAAK1lB,WAAWgI,YAAY4d,EAAIF,MAC1DE,EAAID,IAAI3lB,YAAc4lB,EAAID,IAAI3lB,WAAWgI,YAAY4d,EAAID,KAE7DvvB,KAAK0H,IAAM,KACX1H,KAAKsH,KAAO,KAEZtH,KAAK4qC,WAAY,IAQrBzoC,EAAQwR,UAAUi4B,YAAc,WAC9B,GAAI/7B,GAAQ7P,KAAKw6B,WAAW5F,SAAS50B,KAAKmT,KAAKtD,OAC3Cg8B,EAAQ7rC,KAAK6O,QAAQg9B,MAErBwB,EAAMrtC,KAAKwvB,IAAI6d,IACf/d,EAAOtvB,KAAKwvB,IAAIF,KAChBC,EAAMvvB,KAAKwvB,IAAID,GAIjBvvB,MAAKsH,KADM,SAATukC,EACUh8B,EAAQ7P,KAAKgT,MAET,QAAT64B,EACKh8B,EAIAA,EAAQ7P,KAAKgT,MAAQ,EAInCq6B,EAAI//B,MAAMhG,KAAOtH,KAAKsH,KAAO,KAG7BgoB,EAAKhiB,MAAMhG,KAAQuI,EAAQ7P,KAAK6F,MAAMypB,KAAKtc,MAAQ,EAAK,KAGxDuc,EAAIjiB,MAAMhG,KAAQuI,EAAQ7P,KAAK6F,MAAM0pB,IAAIvc,MAAQ,EAAK,MAOxD7Q,EAAQwR,UAAUq3B,YAAc,WAC9B,GAAI9W,GAAcl0B,KAAK6O,QAAQqlB,YAC3BmZ,EAAMrtC,KAAKwvB,IAAI6d,IACf/d,EAAOtvB,KAAKwvB,IAAIF,KAChBC,EAAMvvB,KAAKwvB,IAAID,GAEnB,IAAmB,OAAf2E,EACFmZ,EAAI//B,MAAM5F,KAAW1H,KAAK0H,KAAO,GAAK,KAEtC4nB,EAAKhiB,MAAM5F,IAAS,IACpB4nB,EAAKhiB,MAAM2F,OAAUjT,KAAK4jC,OAAOl8B,IAAM1H,KAAK0H,IAAM,EAAK,KACvD4nB,EAAKhiB,MAAMoV,OAAS,OAEjB,CACH,GAAIq3B,GAAgB/5C,KAAK4jC,OAAOrO,QAAQ1vB,MAAMoN,OAC1C+c,EAAa+pB,EAAgB/5C,KAAK4jC,OAAOl8B,IAAM1H,KAAK4jC,OAAO3wB,OAASjT,KAAK0H,GAE7E2lC,GAAI//B,MAAM5F,KAAW1H,KAAK4jC,OAAO3wB,OAASjT,KAAK0H,IAAM1H,KAAKiT,QAAU,GAAK,KACzEqc,EAAKhiB,MAAM5F,IAAUqyC,EAAgB/pB,EAAc,KACnDV,EAAKhiB,MAAMoV,OAAS,IAGtB6M,EAAIjiB,MAAM5F,KAAQ1H,KAAK6F,MAAM0pB,IAAItc,OAAS,EAAK,MAGjDpT,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAc9B,QAASkC,GAAW+Q,EAAMqnB,EAAY3rB,GAcpC,GAbA7O,KAAK6F,OACH0pB,KACE7nB,IAAK,EACLsL,MAAO,EACPC,OAAQ,GAEVoc,SACEpc,OAAQ,EACR+mC,WAAY,IAKZ7mC,GACgB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAI1DlR,GAAK1B,KAAKP,KAAMmT,EAAMqnB,EAAY3rB,GAhCpC,GAAI5M,GAAO/B,EAAoB,GAmC/BkC,GAAUuR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAO5CG,EAAUuR,UAAU/D,UAAY,SAASX,GAGvC,GAAImjB,IAAYnjB,EAAMqB,IAAMrB,EAAMY,OAAS,CAC3C,OAAQ7P,MAAKmT,KAAKtD,MAAQZ,EAAMY,MAAQuiB,GAAcpyB,KAAKmT,KAAKtD,MAAQZ,EAAMqB,IAAM8hB,GAMtFhwB,EAAUuR,UAAUkN,OAAS,WAC3B,GAAI2O,GAAMxvB,KAAKwvB,GA0Bf,IAzBKA,IAEHxvB,KAAKwvB,OACLA,EAAMxvB,KAAKwvB,IAGXA,EAAI7c,MAAQX,SAASM,cAAc,OAInCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI7c,MAAMT,YAAYsd,EAAIH,SAG1BG,EAAID,IAAMvd,SAASM,cAAc,OACjCkd,EAAI7c,MAAMT,YAAYsd,EAAID,KAG1BC,EAAI7c,MAAM,iBAAmB3S,KAE7BA,KAAK2qC,OAAQ,IAIV3qC,KAAK4jC,OACR,KAAM,IAAIlgC,OAAM,yCAElB,KAAK8rB,EAAI7c,MAAM/I,WAAY,CACzB,GAAIugC,GAAanqC,KAAK4jC,OAAOpU,IAAI2a,UACjC,KAAKA,EACH,KAAM,IAAIzmC,OAAM,iEAElBymC,GAAWj4B,YAAYsd,EAAI7c,OAQ7B,GANA3S,KAAK4qC,WAAY,EAMb5qC,KAAK2qC,MAAO,CACd3qC,KAAKi5C,gBAAgBj5C,KAAKwvB,IAAIH,SAC9BrvB,KAAKm5C,aAAan5C,KAAKwvB,IAAI7c,OAC3B3S,KAAKq5C,sBAAsBr5C,KAAKwvB,IAAI7c,OACpC3S,KAAKy5C,aAAaz5C,KAAKwvB,IAAI7c,MAG3B,IAAI9K,IAAa7H,KAAKmT,KAAKtL,UAAW,IAAM7H,KAAKmT,KAAKtL,UAAY,KAC7D7H,KAAK4vC,SAAW,YAAc,GACnCpgB,GAAI7c,MAAM9K,UAAa,aAAeA,EACtC2nB,EAAID,IAAI1nB,UAAa,WAAaA,EAGlC7H,KAAKgT,MAAQwc,EAAI7c,MAAMkd,YACvB7vB,KAAKiT,OAASuc,EAAI7c,MAAMod,aACxB/vB,KAAK6F,MAAM0pB,IAAIvc,MAAQwc,EAAID,IAAIM,YAC/B7vB,KAAK6F,MAAM0pB,IAAItc,OAASuc,EAAID,IAAIQ,aAChC/vB,KAAK6F,MAAMwpB,QAAQpc,OAASuc,EAAIH,QAAQU,aAGxCP,EAAIH,QAAQ/hB,MAAM0sC,WAAa,EAAIh6C,KAAK6F,MAAM0pB,IAAIvc,MAAQ,KAG1Dwc,EAAID,IAAIjiB,MAAM5F,KAAQ1H,KAAKiT,OAASjT,KAAK6F,MAAM0pB,IAAItc,QAAU,EAAK,KAClEuc,EAAID,IAAIjiB,MAAMhG,KAAQtH,KAAK6F,MAAM0pB,IAAIvc,MAAQ,EAAK,KAElDhT,KAAK2qC,OAAQ,EAGf3qC,KAAK84C,qBAAqBtpB,EAAI7c,QAOhCvQ,EAAUuR,UAAU0yB,KAAO,WACpBrmC,KAAK4qC,WACR5qC,KAAK6gB,UAOTze,EAAUuR,UAAUyyB,KAAO,WACrBpmC,KAAK4qC,YACH5qC,KAAKwvB,IAAI7c,MAAM/I,YACjB5J,KAAKwvB,IAAI7c,MAAM/I,WAAWgI,YAAY5R,KAAKwvB,IAAI7c,OAGjD3S,KAAK0H,IAAM,KACX1H,KAAKsH,KAAO,KAEZtH,KAAK4qC,WAAY,IAQrBxoC,EAAUuR,UAAUi4B,YAAc,WAChC,GAAI/7B,GAAQ7P,KAAKw6B,WAAW5F,SAAS50B,KAAKmT,KAAKtD,MAE/C7P,MAAKsH,KAAOuI,EAAQ7P,KAAK6F,MAAM0pB,IAAIvc,MAGnChT,KAAKwvB,IAAI7c,MAAMrF,MAAMhG,KAAOtH,KAAKsH,KAAO,MAO1ClF,EAAUuR,UAAUq3B,YAAc,WAChC,GAAI9W,GAAcl0B,KAAK6O,QAAQqlB,YAC3BvhB,EAAQ3S,KAAKwvB,IAAI7c,KAGnBA,GAAMrF,MAAM5F,IADK,OAAfwsB,EACgBl0B,KAAK0H,IAAM,KAGV1H,KAAK4jC,OAAO3wB,OAASjT,KAAK0H,IAAM1H,KAAKiT,OAAU,MAItEpT,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAe9B,QAASmC,GAAW8Q,EAAMqnB,EAAY3rB,GASpC,GARA7O,KAAK6F,OACHwpB,SACErc,MAAO,IAGXhT,KAAKijB,UAAW,EAGZ9P,EAAM,CACR,GAAkB9M,QAAd8M,EAAKtD,MACP,KAAM,IAAInM,OAAM,oCAAsCyP,EAAK9S,GAE7D,IAAgBgG,QAAZ8M,EAAK7C,IACP,KAAM,IAAI5M,OAAM,kCAAoCyP,EAAK9S,IAI7D4B,EAAK1B,KAAKP,KAAMmT,EAAMqnB,EAAY3rB,GA/BpC,GAAIu1B,GAASlkC,EAAoB,IAC7B+B,EAAO/B,EAAoB,GAiC/BmC,GAAUsR,UAAY,GAAI1R,GAAM,KAAM,KAAM,MAE5CI,EAAUsR,UAAUgmC,cAAgB,aAOpCt3C,EAAUsR,UAAU/D,UAAY,SAASX,GAEvC,MAAQjP,MAAKmT,KAAKtD,MAAQZ,EAAMqB,KAAStQ,KAAKmT,KAAK7C,IAAMrB,EAAMY,OAMjExN,EAAUsR,UAAUkN,OAAS,WAC3B,GAAI2O,GAAMxvB,KAAKwvB,GAsBf,IArBKA,IAEHxvB,KAAKwvB,OACLA,EAAMxvB,KAAKwvB,IAGXA,EAAI6d,IAAMr7B,SAASM,cAAc,OAIjCkd,EAAIH,QAAUrd,SAASM,cAAc,OACrCkd,EAAIH,QAAQxnB,UAAY,UACxB2nB,EAAI6d,IAAIn7B,YAAYsd,EAAIH,SAGxBG,EAAI6d,IAAI,iBAAmBrtC,KAE3BA,KAAK2qC,OAAQ,IAIV3qC,KAAK4jC,OACR,KAAM,IAAIlgC,OAAM,yCAElB,KAAK8rB,EAAI6d,IAAIzjC,WAAY,CACvB,GAAIugC,GAAanqC,KAAK4jC,OAAOpU,IAAI2a,UACjC,KAAKA,EACH,KAAM,IAAIzmC,OAAM,iEAElBymC,GAAWj4B,YAAYsd,EAAI6d,KAQ7B,GANArtC,KAAK4qC,WAAY,EAMb5qC,KAAK2qC,MAAO,CACd3qC,KAAKi5C,gBAAgBj5C,KAAKwvB,IAAIH,SAC9BrvB,KAAKm5C,aAAan5C,KAAKwvB,IAAI6d,KAC3BrtC,KAAKq5C,sBAAsBr5C,KAAKwvB,IAAI6d,KACpCrtC,KAAKy5C,aAAaz5C,KAAKwvB,IAAI6d,IAG3B,IAAIxlC,IAAa7H,KAAKmT,KAAKtL,UAAa,IAAM7H,KAAKmT,KAAKtL,UAAa,KAChE7H,KAAK4vC,SAAW,YAAc,GACnCpgB,GAAI6d,IAAIxlC,UAAY7H,KAAK25C,cAAgB9xC,EAGzC7H,KAAKijB,SAA6D,WAAlD1b,OAAO2pC,iBAAiB1hB,EAAIH,SAASpM,SAGrDjjB,KAAK6F,MAAMwpB,QAAQrc,MAAQhT,KAAKwvB,IAAIH,QAAQQ,YAC5C7vB,KAAKiT,OAASjT,KAAKwvB,IAAI6d,IAAItd,aAE3B/vB,KAAK2qC,OAAQ,EAGf3qC,KAAK84C,qBAAqBtpB,EAAI6d,KAC9BrtC,KAAKi6C,mBACLj6C,KAAKk6C,qBAOP73C,EAAUsR,UAAU0yB,KAAO,WACpBrmC,KAAK4qC,WACR5qC,KAAK6gB,UAQTxe,EAAUsR,UAAUyyB,KAAO,WACzB,GAAIpmC,KAAK4qC,UAAW,CAClB,GAAIyC,GAAMrtC,KAAKwvB,IAAI6d,GAEfA,GAAIzjC,YACNyjC,EAAIzjC,WAAWgI,YAAYy7B,GAG7BrtC,KAAK0H,IAAM,KACX1H,KAAKsH,KAAO,KAEZtH,KAAK4qC,WAAY,IAQrBvoC,EAAUsR,UAAUi4B,YAAc,WAChC,GAGIuO,GACAvqB,EAJAwqB,EAAcp6C,KAAK4jC,OAAO5wB,MAC1BnD,EAAQ7P,KAAKw6B,WAAW5F,SAAS50B,KAAKmT,KAAKtD,OAC3CS,EAAMtQ,KAAKw6B,WAAW5F,SAAS50B,KAAKmT,KAAK7C,MAKhC8pC,EAATvqC,IACFA,GAASuqC,GAEP9pC,EAAM,EAAI8pC,IACZ9pC,EAAM,EAAI8pC,EAEZ,IAAIC,GAAWt1C,KAAKiI,IAAIsD,EAAMT,EAAO,EAoBrC,QAlBI7P,KAAKijB,UACPjjB,KAAKsH,KAAOuI,EACZ7P,KAAKgT,MAAQqnC,EAAWr6C,KAAK6F,MAAMwpB,QAAQrc,MAC3C4c,EAAe5vB,KAAK6F,MAAMwpB,QAAQrc,QAOlChT,KAAKsH,KAAOuI,EACZ7P,KAAKgT,MAAQqnC,EACbzqB,EAAe7qB,KAAKwG,IAAI+E,EAAMT,EAAO7P,KAAK6F,MAAMwpB,QAAQrc,QAG1DhT,KAAKwvB,IAAI6d,IAAI//B,MAAMhG,KAAOtH,KAAKsH,KAAO,KACtCtH,KAAKwvB,IAAI6d,IAAI//B,MAAM0F,MAAQqnC,EAAW,KAE9Br6C,KAAK6O,QAAQg9B,OACnB,IAAK,OACH7rC,KAAKwvB,IAAIH,QAAQ/hB,MAAMhG,KAAO,GAC9B,MAEF,KAAK,QACHtH,KAAKwvB,IAAIH,QAAQ/hB,MAAMhG,KAAOvC,KAAKiI,IAAKqtC,EAAWzqB,EAAe,EAAI5vB,KAAK6O,QAAQuU,QAAU,GAAK,IAClG,MAEF,KAAK,SACHpjB,KAAKwvB,IAAIH,QAAQ/hB,MAAMhG,KAAOvC,KAAKiI,KAAKqtC,EAAWzqB,EAAe,EAAI5vB,KAAK6O,QAAQuU,SAAW,EAAG,GAAK,IACtG,MAEF,SAGI+2B,EAFEn6C,KAAKijB,SAEOle,KAAKiI,KAAK6C,EAAO,GAInB,EAARA,EACY9K,KAAKwG,KAAKsE,EACnBS,EAAMT,EAAQ7P,KAAK6F,MAAMwpB,QAAQrc,MAAQ,EAAIhT,KAAK6O,QAAQuU,SAIjD,EAGlBpjB,KAAKwvB,IAAIH,QAAQ/hB,MAAMhG,KAAO6yC,EAAc,OAQlD93C,EAAUsR,UAAUq3B,YAAc,WAChC,GAAI9W,GAAcl0B,KAAK6O,QAAQqlB,YAC3BmZ,EAAMrtC,KAAKwvB,IAAI6d,GAGjBA,GAAI//B,MAAM5F,IADO,OAAfwsB,EACcl0B,KAAK0H,IAAM,KAGV1H,KAAK4jC,OAAO3wB,OAASjT,KAAK0H,IAAM1H,KAAKiT,OAAU,MAQpE5Q,EAAUsR,UAAUsmC,iBAAmB,WACrC,GAAIj6C,KAAK4vC,UAAY5vC,KAAK6O,QAAQm9B,SAASC,aAAejsC,KAAKwvB,IAAI8qB,SAAU,CAE3E,GAAIA,GAAWtoC,SAASM,cAAc,MACtCgoC,GAASzyC,UAAY,YACrByyC,EAASzK,aAAe7vC,KAGxBokC,EAAOkW,GACLjxC,gBAAgB,IACfuK,GAAG,OAAQ,cAId5T,KAAKwvB,IAAI6d,IAAIn7B,YAAYooC,GACzBt6C,KAAKwvB,IAAI8qB,SAAWA,OAEZt6C,KAAK4vC,UAAY5vC,KAAKwvB,IAAI8qB,WAE9Bt6C,KAAKwvB,IAAI8qB,SAAS1wC,YACpB5J,KAAKwvB,IAAI8qB,SAAS1wC,WAAWgI,YAAY5R,KAAKwvB,IAAI8qB,UAEpDt6C,KAAKwvB,IAAI8qB,SAAW,OAQxBj4C,EAAUsR,UAAUumC,kBAAoB,WACtC,GAAIl6C,KAAK4vC,UAAY5vC,KAAK6O,QAAQm9B,SAASC,aAAejsC,KAAKwvB,IAAI+qB,UAAW,CAE5E,GAAIA,GAAYvoC,SAASM,cAAc,MACvCioC,GAAU1yC,UAAY,aACtB0yC,EAAUzK,cAAgB9vC,KAG1BokC,EAAOmW,GACLlxC,gBAAgB,IACfuK,GAAG,OAAQ,cAId5T,KAAKwvB,IAAI6d,IAAIn7B,YAAYqoC,GACzBv6C,KAAKwvB,IAAI+qB,UAAYA,OAEbv6C,KAAK4vC,UAAY5vC,KAAKwvB,IAAI+qB,YAE9Bv6C,KAAKwvB,IAAI+qB,UAAU3wC,YACrB5J,KAAKwvB,IAAI+qB,UAAU3wC,WAAWgI,YAAY5R,KAAKwvB,IAAI+qB,WAErDv6C,KAAKwvB,IAAI+qB,UAAY,OAIzB16C,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAkC9B,QAAS8C,GAAS+V,EAAW5F,EAAMtE,GACjC,KAAM7O,eAAgBgD,IACpB,KAAM,IAAIgW,aAAY,mDAGxBhZ,MAAKw6C,0BAGLx6C,KAAKiZ,iBAAmBF,EAGxB/Y,KAAKy6C,kBAAoB,GACzBz6C,KAAK06C,eAAiB,IAAO16C,KAAKy6C,kBAClCz6C,KAAK26C,WAAa,GAAM36C,KAAK06C,eAC7B16C,KAAK46C,yBAA2B,EAChC56C,KAAK66C,wBAA0B,GAE/B76C,KAAK86C,cAAe,EAEpB96C,KAAK+6C,kBAAoBrnC,IAAI,KAAKsnC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,MAG3En7C,KAAKg0B,gBACHonB,OACEC,KAAM,EACNC,UAAW,GACXC,UAAW,GACXzwB,OAAQ,GACR0wB,MAAO,UACPC,MAAOp1C,OACPigB,SAAU,GACVC,SAAU,GACVm1B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAUx1C,OACVy1C,MAAO,GACPnxC,OACIkB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhBuT,YAAa,UACbJ,gBAAiB,UACjBg9B,eAAgB,UAChBrpC,MAAOrM,OACP+Y,YAAa,EACb48B,oBAAqB31C,QAEvB41C,OACE31B,SAAU,EACVC,SAAU,GACVvT,MAAO,EACPkpC,yBAA0B,EAC1BC,WAAY,IACZ7uC,MAAO,OACP3C,OACEA,MAAM,UACNmB,UAAU,UACVC,MAAO,WAET2vC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVO,iBAAkB,EAClBC,MACE72C,OAAQ,GACR82C,IAAK,EACLC,UAAWl2C,QAEbm2C,aAAc,QAEhBC,kBAAiB,EACjBC,SACEC,WACE7tC,SAAS,EACT8tC,MAAO,EAAI,GACXC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACEtuC,SAAS,EACTguC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACEvuC,SAAS,EACTwuC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAclrC,MAAQ,EACRC,OAAQ,EACR6X,OAAQ,GACtBqzB,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,GAE1BC,YACExvC,SAAS,GAEXyvC,UACEzvC,SAAS,EACT0vC,OAAQhsC,EAAG,GAAIC,EAAG,GAAIgtB,KAAM,MAE9Bgf,kBACE3vC,SAAS,EACT4vC,kBAAkB,GAEpBC,oBACE7vC,SAAQ,EACR8vC,gBAAiB,IACjBC,YAAa,IACbhkB,UAAW,KACXikB,OAAQ,WAEVC,wBAAwB,EACxBC,cACElwC,SAAS,EACTmwC,SAAS,EACTt4C,KAAM,aACNu4C,UAAW,IAEbC,qBAAqB,EACrBC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzB5b,OAAQ,KACRD,QAASA,EACTle,SACE4H,MAAO,IACPsuB,UAAW,QACXC,SAAU,GACVC,SAAU,UACVjxC,OACEkB,OAAQ,OACRD,WAAY,YAGhB4zC,aAAa,EACbC,WAAW,EACXziB,UAAU,EACVjxB,OAAO,EACP2zC,iBAAiB,EACjBC,iBAAiB,EACjB3sC,MAAQ,OACRC,OAAS,OACT84B,YAAY,GAEd/rC,KAAK4/C,UAAYj/C,EAAKwE,UAAWnF,KAAKg0B,gBAEtCh0B,KAAK6/C,UAAYzE,SAASa,UAC1Bj8C,KAAK8/C,oBAAqB,EAC1B9/C,KAAK+/C,mBAAqBC,YAAaC,UAGvCjgD,KAAKkgD,eAAiB,EAAElgD,KAAKy6C,kBAC7Bz6C,KAAKmgD,wBAA0B,iBAC/BngD,KAAKogD,WAAa,EAClBpgD,KAAKqgD,YAAc,EACnBrgD,KAAKsgD,YAAc,EACnBtgD,KAAKugD,kBAAoB,EACzBvgD,KAAKwgD,kBAAoB,EACzBxgD,KAAKygD,eAAiB,KACtBzgD,KAAK0gD,mBAAqB,IAG1B,IAAIz9C,GAAUjD,IACdA,MAAK8zB,OAAS,GAAI3wB,GAClBnD,KAAK2gD,OAAS,GAAIv9C,GAClBpD,KAAK2gD,OAAOC,kBAAkB,WAC5B39C,EAAQ49C,YAIV7gD,KAAK8gD,WAAa,EAClB9gD,KAAK+gD,WAAa,EAClB/gD,KAAKghD,cAAgB,EAIrBhhD,KAAKihD,qBAELjhD,KAAKq0B,UAELr0B,KAAKkhD,oBAELlhD,KAAKmhD,qBAELnhD,KAAKohD,uBAELphD,KAAKqhD,uBAILrhD,KAAKshD,gBAAgBthD,KAAK0e,MAAME,YAAc,EAAG5e,KAAK0e,MAAMuF,aAAe,GAC3EjkB,KAAKoc,UAAU,GACfpc,KAAKkc,WAAWrN,GAGhB7O,KAAKuhD,kBAAmB,EACxBvhD,KAAKwhD,mBACLxhD,KAAKyhD,sBAAuB,EAC5BzhD,KAAK0hD,YAAa,EAClB1hD,KAAKu/C,wBAA0B,KAG/Bv/C,KAAK2hD,oBACL3hD,KAAK4hD,0BACL5hD,KAAK6hD,eACL7hD,KAAKo7C,SACLp7C,KAAKi8C,SAGLj8C,KAAK8hD,eAAqBtvC,EAAK,EAAEC,EAAK,GACtCzS,KAAK+hD,mBAAqBvvC,EAAK,EAAEC,EAAK,GACtCzS,KAAKgiD,iBAAmBxvC,EAAK,EAAEC,EAAK,GACpCzS,KAAKiiD,cACLjiD,KAAKqc,MAAQ,EACbrc,KAAKkiD,cAAgBliD,KAAKqc,MAG1Brc,KAAKmiD,UAAY,KACjBniD,KAAKoiD,UAAY,KAGjBpiD,KAAKqiD,gBACH3uC,IAAO,SAAUpK,EAAO6K,GACtBlR,EAAQq/C,UAAUnuC,EAAOnS,OACzBiB,EAAQ4M,SAEVsF,OAAU,SAAU7L,EAAO6K,GACzBlR,EAAQs/C,aAAapuC,EAAOnS,MAAOmS,EAAOhB,MAC1ClQ,EAAQ4M,SAEV+G,OAAU,SAAUtN,EAAO6K,GACzBlR,EAAQu/C,aAAaruC,EAAOnS,OAC5BiB,EAAQ4M,UAGZ7P,KAAKyiD,gBACH/uC,IAAO,SAAUpK,EAAO6K,GACtBlR,EAAQy/C,UAAUvuC,EAAOnS,OACzBiB,EAAQ4M,SAEVsF,OAAU,SAAU7L,EAAO6K,GACzBlR,EAAQ0/C,aAAaxuC,EAAOnS,OAC5BiB,EAAQ4M,SAEV+G,OAAU,SAAUtN,EAAO6K,GACzBlR,EAAQ2/C,aAAazuC,EAAOnS,OAC5BiB,EAAQ4M,UAKZ7P,KAAK6iD,QAAS,EACd7iD,KAAK8iD,MAAQz8C,OAGbrG,KAAKuY,QAAQpF,EAAKnT,KAAK4/C,UAAUvC,WAAWvuC,SAAW9O,KAAK4/C,UAAUjB,mBAAmB7vC,SAGzF9O,KAAK86C,cAAe,EAC6B,GAA7C96C,KAAK4/C,UAAUjB,mBAAmB7vC,QACpC9O,KAAK+iD,2BAI2B,GAA5B/iD,KAAK4/C,UAAUN,WACjBt/C,KAAKgjD,WAAW38C,QAAW,EAAKrG,KAAK4/C,UAAUvC,WAAWvuC,SAK1D9O,KAAK4/C,UAAUvC,WAAWvuC,SAC5B9O,KAAKijD,sBAvVT,GAAI9mC,GAAUjc,EAAoB,IAC9BkkC,EAASlkC,EAAoB,IAC7BgjD,EAAYhjD,EAAoB,IAChCS,EAAOT,EAAoB,GAC3B89B,EAAa99B,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqD,EAAYrD,EAAoB,IAChCsD,EAActD,EAAoB,IAClCiD,EAASjD,EAAoB,IAC7BkD,EAASlD,EAAoB,IAC7BmD,EAAOnD,EAAoB,IAC3BgD,EAAOhD,EAAoB,IAC3BoD,EAAQpD,EAAoB,IAC5BijD,EAAcjjD,EAAoB,IAClCkjD,EAAYljD,EAAoB,IAChCwjC,EAAUxjC,EAAoB,GAGlCA,GAAoB,IAyUpBic,EAAQnZ,EAAQ2Q,WAShB3Q,EAAQ2Q,UAAU0vC,eAAiB,WAIjC,IAAK,GAHDC,GAAUtxC,SAASuxC,qBAAsB,UAGpCl+C,EAAI,EAAGA,EAAIi+C,EAAQ99C,OAAQH,IAAK,CACvC,GAAIm+C,GAAMF,EAAQj+C,GAAGm+C,IACjBp/C,EAAQo/C,GAAO,qBAAqBl/C,KAAKk/C,EAC7C,IAAIp/C,EAEF,MAAOo/C,GAAIp3C,UAAU,EAAGo3C,EAAIh+C,OAASpB,EAAM,GAAGoB,QAIlD,MAAO,OAQTxC,EAAQ2Q,UAAU8vC,UAAY,WAC5B,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAIC,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GACdF,EAAQH,EAAM,IAAIG,EAAOH,EAAKlxC,GAC9BsxC,EAAQJ,EAAM,IAAII,EAAOJ,EAAKlxC,GAC9BmxC,EAAQD,EAAM,IAAIC,EAAOD,EAAKjxC,GAC9BmxC,EAAQF,EAAM,IAAIE,EAAOF,EAAKjxC,GAMtC,OAHY,MAARoxC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpD5gD,EAAQ2Q,UAAUqwC,YAAc,SAAS/0C,GACvC,OAAQuD,EAAI,IAAOvD,EAAM60C,KAAO70C,EAAM40C,MAC9BpxC,EAAI,IAAOxD,EAAM20C,KAAO30C,EAAM00C,QAUxC3gD,EAAQ2Q,UAAUqvC,WAAa,SAASiB,EAAkBC,EAAaC,GACjD99C,SAAhB69C,IACFA,GAAc,GAEK79C,SAAjB89C,IACFA,GAAe,GAEQ99C,SAArB49C,IACFA,GAAmB,EAGrB,IACIG,GADAn1C,EAAQjP,KAAKyjD,WAGjB,IAAmB,GAAfS,EAAqB,CACvB,GAAIG,GAAgBrkD,KAAK6hD,YAAYr8C,MAIjC4+C,GAH+B,GAA/BpkD,KAAK4/C,UAAUZ,aACwB,GAArCh/C,KAAK4/C,UAAUvC,WAAWvuC,SAC5Bu1C,GAAiBrkD,KAAK4/C,UAAUvC,WAAWC,gBAC/B,UAAY+G,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArCrkD,KAAK4/C,UAAUvC,WAAWvuC,SAC1Bu1C,GAAiBrkD,KAAK4/C,UAAUvC,WAAWC,gBACjC,YAAc+G,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAASv/C,KAAKwG,IAAIvL,KAAK0e,MAAMC,OAAOC,YAAc,IAAK5e,KAAK0e,MAAMC,OAAOsF,aAAe,IAC5FmgC,IAAaE,MAEV,CACH,GAAI/Q,GAAgD,IAApCxuC,KAAKklB,IAAIhb,EAAM60C,KAAO70C,EAAM40C,MACxCU,EAAgD,IAApCx/C,KAAKklB,IAAIhb,EAAM20C,KAAO30C,EAAM00C,MAExCa,EAAaxkD,KAAK0e,MAAMC,OAAOC,YAAe20B,EAC9CkR,EAAazkD,KAAK0e,MAAMC,OAAOsF,aAAesgC,CAElDH,GAA2BK,GAAdD,EAA4BA,EAAaC,EAGpDL,EAAY,IACdA,EAAY,EAId,IAAI74B,GAASvrB,KAAKgkD,YAAY/0C,EAC9B,IAAoB,GAAhBk1C,EAAuB,CACzB,GAAIt1C,IAAWmU,SAAUuI,EAAQlP,MAAO+nC,EAAWM,UAAWT,EAC9DjkD,MAAKinB,OAAOpY,GACZ7O,KAAK6iD,QAAS,EACd7iD,KAAK6P,YAGL0b,GAAO/Y,GAAK4xC,EACZ74B,EAAO9Y,GAAK2xC,EACZ74B,EAAO/Y,GAAK,GAAMxS,KAAK0e,MAAMC,OAAOC,YACpC2M,EAAO9Y,GAAK,GAAMzS,KAAK0e,MAAMC,OAAOsF,aACpCjkB,KAAKoc,UAAUgoC,GACfpkD,KAAKshD,iBAAiB/1B,EAAO/Y,GAAG+Y,EAAO9Y,IAS3CzP,EAAQ2Q,UAAUgxC,qBAAuB,WACvC3kD,KAAK4kD,qBACL,KAAK,GAAIC,KAAO7kD,MAAKo7C,MACfp7C,KAAKo7C,MAAMz1C,eAAek/C,IAC5B7kD,KAAK6hD,YAAY75C,KAAK68C,IAiB5B7hD,EAAQ2Q,UAAU4E,QAAU,SAASpF,EAAMgxC,GAOzC,GANqB99C,SAAjB89C,IACFA,GAAe,GAGjBnkD,KAAK86C,cAAe,EAEhB3nC,GAAQA,EAAKoc,MAAQpc,EAAKioC,OAASjoC,EAAK8oC,OAC1C,KAAM,IAAIjjC,aAAY,iGAOxB,IAFAhZ,KAAKkc,WAAW/I,GAAQA,EAAKtE,SAEzBsE,GAAQA,EAAKoc,KAEf,GAAGpc,GAAQA,EAAKoc,IAAK,CACnB,GAAIu1B,GAAUvhD,EAAUwhD,WAAW5xC,EAAKoc,IAExC,YADAvvB,MAAKuY,QAAQusC,QAIZ,IAAI3xC,GAAQA,EAAK6xC,OAEpB,GAAG7xC,GAAQA,EAAK6xC,MAAO,CACrB,GAAIC,GAAYzhD,EAAY0hD,WAAW/xC,EAAK6xC,MAE5C,YADAhlD,MAAKuY,QAAQ0sC,QAKfjlD,MAAKmlD,UAAUhyC,GAAQA,EAAKioC,OAC5Bp7C,KAAKolD,UAAUjyC,GAAQA,EAAK8oC,MAE9Bj8C,MAAKqlD,mBACe,GAAhBlB,IAC+C,GAA7CnkD,KAAK4/C,UAAUjB,mBAAmB7vC,SACpC9O,KAAKslD,eACLtlD,KAAK+iD,4BAID/iD,KAAK4/C,UAAUN,WACjBt/C,KAAKulD,aAGTvlD,KAAK6P,SAEP7P,KAAK86C,cAAe,GAOtB93C,EAAQ2Q,UAAUuI,WAAa,SAAUrN,GACvC,GAAIA,EAAS,CACX,GAAInJ,GAEA4I,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAAa,WAAW,mBACrG,QAAQ,SAAS,aAAa,YAAY,WAAW,aAMvD,IAJA3N,EAAK4F,uBAAuB+H,EAAOtO,KAAK4/C,UAAW/wC,GACnDlO,EAAK4F,wBAAwB,SAASvG,KAAK4/C,UAAUxE,MAAOvsC,EAAQusC,OACpEz6C,EAAK4F,wBAAwB,QAAQ,UAAUvG,KAAK4/C,UAAU3D,MAAOptC,EAAQotC,OAEzEptC,EAAQ6tC,UACV/7C,EAAKgO,aAAa3O,KAAK4/C,UAAUlD,QAAS7tC,EAAQ6tC,QAAQ,aAC1D/7C,EAAKgO,aAAa3O,KAAK4/C,UAAUlD,QAAS7tC,EAAQ6tC,QAAQ,aAEtD7tC,EAAQ6tC,QAAQU,uBAAuB,CACzCp9C,KAAK4/C,UAAUjB,mBAAmB7vC,SAAU,EAC5C9O,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,SAAU,EACvD9O,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SAAU,CAC3C,KAAKpJ,IAAQmJ,GAAQ6tC,QAAQU,sBACvBvuC,EAAQ6tC,QAAQU,sBAAsBz3C,eAAeD,KACvD1F,KAAK4/C,UAAUlD,QAAQU,sBAAsB13C,GAAQmJ,EAAQ6tC,QAAQU,sBAAsB13C,IAiDnG,GA3CImJ,EAAQq9B,QAAQlsC,KAAK+6C,iBAAiBrnC,IAAM7E,EAAQq9B,OACpDr9B,EAAQ22C,SAASxlD,KAAK+6C,iBAAiBC,KAAOnsC,EAAQ22C,QACtD32C,EAAQ42C,aAAazlD,KAAK+6C,iBAAiBE,SAAWpsC,EAAQ42C,YAC9D52C,EAAQ62C,YAAY1lD,KAAK+6C,iBAAiBG,QAAUrsC,EAAQ62C,WAC5D72C,EAAQ82C,WAAW3lD,KAAK+6C,iBAAiBI,IAAMtsC,EAAQ82C,UAE3DhlD,EAAKgO,aAAa3O,KAAK4/C,UAAW/wC,EAAQ,gBAC1ClO,EAAKgO,aAAa3O,KAAK4/C,UAAW/wC,EAAQ,sBAC1ClO,EAAKgO,aAAa3O,KAAK4/C,UAAW/wC,EAAQ,cAC1ClO,EAAKgO,aAAa3O,KAAK4/C,UAAW/wC,EAAQ,cAC1ClO,EAAKgO,aAAa3O,KAAK4/C,UAAW/wC,EAAQ,YAC1ClO,EAAKgO,aAAa3O,KAAK4/C,UAAW/wC,EAAQ,oBAGtCA,EAAQ4vC,mBACVz+C,KAAK4lD,SAAW5lD,KAAK4/C,UAAUnB,iBAAiBC,kBAK9C7vC,EAAQotC,QACkB51C,SAAxBwI,EAAQotC,MAAMtxC,QACZhK,EAAKqD,SAAS6K,EAAQotC,MAAMtxC,QAC9B3K,KAAK4/C,UAAU3D,MAAMtxC,SACrB3K,KAAK4/C,UAAU3D,MAAMtxC,MAAMA,MAAQkE,EAAQotC,MAAMtxC,MACjD3K,KAAK4/C,UAAU3D,MAAMtxC,MAAMmB,UAAY+C,EAAQotC,MAAMtxC,MACrD3K,KAAK4/C,UAAU3D,MAAMtxC,MAAMoB,MAAQ8C,EAAQotC,MAAMtxC,QAGftE,SAA9BwI,EAAQotC,MAAMtxC,MAAMA,QAA0B3K,KAAK4/C,UAAU3D,MAAMtxC,MAAMA,MAAQkE,EAAQotC,MAAMtxC,MAAMA,OACnEtE,SAAlCwI,EAAQotC,MAAMtxC,MAAMmB,YAA0B9L,KAAK4/C,UAAU3D,MAAMtxC,MAAMmB,UAAY+C,EAAQotC,MAAMtxC,MAAMmB,WAC3EzF,SAA9BwI,EAAQotC,MAAMtxC,MAAMoB,QAA0B/L,KAAK4/C,UAAU3D,MAAMtxC,MAAMoB,MAAQ8C,EAAQotC,MAAMtxC,MAAMoB,SAIxG8C,EAAQotC,MAAMP,WACWr1C,SAAxBwI,EAAQotC,MAAMtxC,QACZhK,EAAKqD,SAAS6K,EAAQotC,MAAMtxC,OAAmB3K,KAAK4/C,UAAU3D,MAAMP,UAAY7sC,EAAQotC,MAAMtxC,MAC3DtE,SAA9BwI,EAAQotC,MAAMtxC,MAAMA,QAAsB3K,KAAK4/C,UAAU3D,MAAMP,UAAY7sC,EAAQotC,MAAMtxC,MAAMA,SAK1GkE,EAAQusC,OACNvsC,EAAQusC,MAAMzwC,MAAO,CACvB,GAAIk7C,GAAcllD,EAAK+J,WAAWmE,EAAQusC,MAAMzwC,MAChD3K,MAAK4/C,UAAUxE,MAAMzwC,MAAMiB,WAAai6C,EAAYj6C,WACpD5L,KAAK4/C,UAAUxE,MAAMzwC,MAAMkB,OAASg6C,EAAYh6C,OAChD7L,KAAK4/C,UAAUxE,MAAMzwC,MAAMmB,UAAUF,WAAai6C,EAAY/5C,UAAUF,WACxE5L,KAAK4/C,UAAUxE,MAAMzwC,MAAMmB,UAAUD,OAASg6C,EAAY/5C,UAAUD,OACpE7L,KAAK4/C,UAAUxE,MAAMzwC,MAAMoB,MAAMH,WAAai6C,EAAY95C,MAAMH,WAChE5L,KAAK4/C,UAAUxE,MAAMzwC,MAAMoB,MAAMF,OAASg6C,EAAY95C,MAAMF,OAGhE,GAAIgD,EAAQilB,OACV,IAAK,GAAIgyB,KAAaj3C,GAAQilB,OAC5B,GAAIjlB,EAAQilB,OAAOnuB,eAAemgD,GAAY,CAC5C,GAAIpzC,GAAQ7D,EAAQilB,OAAOgyB,EAC3B9lD,MAAK8zB,OAAOpgB,IAAIoyC,EAAWpzC,GAKjC,GAAI7D,EAAQ2W,QAAS,CACnB,IAAK9f,IAAQmJ,GAAQ2W,QACf3W,EAAQ2W,QAAQ7f,eAAeD,KACjC1F,KAAK4/C,UAAUp6B,QAAQ9f,GAAQmJ,EAAQ2W,QAAQ9f,GAG/CmJ,GAAQ2W,QAAQ7a,QAClB3K,KAAK4/C,UAAUp6B,QAAQ7a,MAAQhK,EAAK+J,WAAWmE,EAAQ2W,QAAQ7a,QAiBnE,GAbI,cAAgBkE,KACdA,EAAQk3C,YACV/lD,KAAKgmD,UAAY,GAAI5C,GAAUpjD,KAAK0e,OACpC1e,KAAKgmD,UAAUpyC,GAAG,SAAU5T,KAAKimD,gBAAgBxxB,KAAKz0B,QAGlDA,KAAKgmD,YACPhmD,KAAKgmD,UAAU5iB,gBACRpjC,MAAKgmD,YAKdn3C,EAAQ02B,OACV,KAAM,IAAI7hC,OAAM,8EAMpB1D,KAAKihD,qBAELjhD,KAAKkmD,0BAELlmD,KAAKmmD,0BAELnmD,KAAKomD,yBAILpmD,KAAKimD,kBACLjmD,KAAK+jB,QAAQ/jB,KAAK4/C,UAAU5sC,MAAOhT,KAAK4/C,UAAU3sC,QAClDjT,KAAK6iD,QAAS,EACd7iD,KAAK6P,SAUP7M,EAAQ2Q,UAAU0gB,QAAU,WAE1B,KAAOr0B,KAAKiZ,iBAAiB6J,iBAC3B9iB,KAAKiZ,iBAAiBrH,YAAY5R,KAAKiZ,iBAAiB8J,WAY1D,IATA/iB,KAAK0e,MAAQ1M,SAASM,cAAc,OACpCtS,KAAK0e,MAAM7W,UAAY,oBACvB7H,KAAK0e,MAAMpR,MAAM0V,SAAW,WAC5BhjB,KAAK0e,MAAMpR,MAAM2V,SAAW,SAG5BjjB,KAAK0e,MAAMC,OAAS3M,SAASM,cAAe,UAC5CtS,KAAK0e,MAAMC,OAAOrR,MAAM0V,SAAW,WACnChjB,KAAK0e,MAAMxM,YAAYlS,KAAK0e,MAAMC,SAC7B3e,KAAK0e,MAAMC,OAAOyH,WAAY,CACjC,GAAIlD,GAAWlR,SAASM,cAAe,MACvC4Q,GAAS5V,MAAM3C,MAAQ,MACvBuY,EAAS5V,MAAM6V,WAAc,OAC7BD,EAAS5V,MAAM8V,QAAW,OAC1BF,EAASG,UAAa,mDACtBrjB,KAAK0e,MAAMC,OAAOzM,YAAYgR,GAGhC,GAAI1O,GAAKxU,IACTA,MAAKqkC,QACLrkC,KAAKqmD,SACLrmD,KAAK4D,OAASwgC,EAAOpkC,KAAK0e,MAAMC,QAC9B2lB,iBAAiB,IAEnBtkC,KAAK4D,OAAOgQ,GAAG,MAAaY,EAAG8xC,OAAO7xB,KAAKjgB,IAC3CxU,KAAK4D,OAAOgQ,GAAG,YAAaY,EAAG+xC,aAAa9xB,KAAKjgB,IACjDxU,KAAK4D,OAAOgQ,GAAG,OAAaY,EAAGgpB,QAAQ/I,KAAKjgB,IAC5CxU,KAAK4D,OAAOgQ,GAAG,QAAaY,EAAGmpB,SAASlJ,KAAKjgB,IAC7CxU,KAAK4D,OAAOgQ,GAAG,QAAaY,EAAGkpB,SAASjJ,KAAKjgB,IAC7CxU,KAAK4D,OAAOgQ,GAAG,YAAaY,EAAG6oB,aAAa5I,KAAKjgB,IACjDxU,KAAK4D,OAAOgQ,GAAG,OAAaY,EAAG8oB,QAAQ7I,KAAKjgB,IAC5CxU,KAAK4D,OAAOgQ,GAAG,UAAaY,EAAG+oB,WAAW9I,KAAKjgB,IAC/CxU,KAAK4D,OAAOgQ,GAAG,UAAaY,EAAGgyC,WAAW/xB,KAAKjgB,IAC/CxU,KAAK4D,OAAOgQ,GAAG,aAAaY,EAAGipB,cAAchJ,KAAKjgB,IAClDxU,KAAK4D,OAAOgQ,GAAG,iBAAiBY,EAAGipB,cAAchJ,KAAKjgB,IACtDxU,KAAK4D,OAAOgQ,GAAG,YAAaY,EAAGiyC,kBAAkBhyB,KAAKjgB,IAGtDxU,KAAKiZ,iBAAiB/G,YAAYlS,KAAK0e,QASzC1b,EAAQ2Q,UAAUsyC,gBAAkB,WAClC,GAAIzxC,GAAKxU,IACTA,MAAKkjD,UAAYA,EAEjBljD,KAAKkjD,UAAUwD,QAEX1mD,KAAK4/C,UAAUrB,SAASzvC,SAAW9O,KAAK2mD,aAC1C3mD,KAAKkjD,UAAUzuB,KAAK,KAAQz0B,KAAK4mD,QAAQnyB,KAAKjgB,GAAQ,WACtDxU,KAAKkjD,UAAUzuB,KAAK,KAAQz0B,KAAK6mD,aAAapyB,KAAKjgB,GAAK,SACxDxU,KAAKkjD,UAAUzuB,KAAK,OAAQz0B,KAAK8mD,UAAUryB,KAAKjgB,GAAM,WACtDxU,KAAKkjD,UAAUzuB,KAAK,OAAQz0B,KAAK6mD,aAAapyB,KAAKjgB,GAAK,SACxDxU,KAAKkjD,UAAUzuB,KAAK,OAAQz0B,KAAK+mD,UAAUtyB,KAAKjgB,GAAM,WACtDxU,KAAKkjD,UAAUzuB,KAAK,OAAQz0B,KAAKgnD,aAAavyB,KAAKjgB,GAAK,SACxDxU,KAAKkjD,UAAUzuB,KAAK,QAAQz0B,KAAKinD,WAAWxyB,KAAKjgB,GAAK,WACtDxU,KAAKkjD,UAAUzuB,KAAK,QAAQz0B,KAAKgnD,aAAavyB,KAAKjgB,GAAK,SACxDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKknD,QAAQzyB,KAAKjgB,GAAQ,WACtDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKmnD,UAAU1yB,KAAKjgB,GAAQ,SACxDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKonD,SAAS3yB,KAAKjgB,GAAO,WACtDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKmnD,UAAU1yB,KAAKjgB,GAAQ,SACxDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKknD,QAAQzyB,KAAKjgB,GAAQ,WACtDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKmnD,UAAU1yB,KAAKjgB,GAAQ,SACxDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKonD,SAAS3yB,KAAKjgB,GAAO,WACtDxU,KAAKkjD,UAAUzuB,KAAK,IAAQz0B,KAAKmnD,UAAU1yB,KAAKjgB,GAAQ,SACxDxU,KAAKkjD,UAAUzuB,KAAK,SAASz0B,KAAKknD,QAAQzyB,KAAKjgB,GAAO,WACtDxU,KAAKkjD,UAAUzuB,KAAK,SAASz0B,KAAKmnD,UAAU1yB,KAAKjgB,GAAO,SACxDxU,KAAKkjD,UAAUzuB,KAAK,WAAWz0B,KAAKonD,SAAS3yB,KAAKjgB,GAAI,WACtDxU,KAAKkjD,UAAUzuB,KAAK,WAAWz0B,KAAKmnD,UAAU1yB,KAAKjgB,GAAK,UAGX,GAA3CxU,KAAK4/C,UAAUnB,iBAAiB3vC,UAClC9O,KAAKkjD,UAAUzuB,KAAK,SAASz0B,KAAKqnD,sBAAsB5yB,KAAKjgB,IAC7DxU,KAAKkjD,UAAUzuB,KAAK,MAAMz0B,KAAKsnD,gBAAgB7yB,KAAKjgB,MAUxDxR,EAAQ2Q,UAAU4zC,YAAc,SAAUpqB,GACxC,OACE3qB,EAAG2qB,EAAMW,MAAQn9B,EAAKwG,gBAAgBnH,KAAK0e,MAAMC,QACjDlM,EAAG0qB,EAAMY,MAAQp9B,EAAK8G,eAAezH,KAAK0e,MAAMC,UASpD3b,EAAQ2Q,UAAU+pB,SAAW,SAAUp0B,GACrCtJ,KAAKqkC,KAAK/E,QAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,QACnDvrB,KAAKqkC,KAAKmjB,SAAU,EACpBxnD,KAAKqmD,MAAMhqC,MAAQrc,KAAKynD,YAExBznD,KAAK0nD,aAAa1nD,KAAKqkC,KAAK/E,UAO9Bt8B,EAAQ2Q,UAAU0pB,aAAe,WAC/Br9B,KAAK2nD,oBAUP3kD,EAAQ2Q,UAAUg0C,iBAAmB,WACnC,GAAItjB,GAAOrkC,KAAKqkC,KACZqf,EAAO1jD,KAAK4nD,WAAWvjB,EAAK/E,QAQhC,IALA+E,EAAKpG,UAAW,EAChBoG,EAAK4I,aACL5I,EAAKxnB,YAAc7c,KAAK6nD,kBACxBxjB,EAAK0f,OAAS,KAEF,MAARL,EAAc,CAChBrf,EAAK0f,OAASL,EAAKrjD,GAEdqjD,EAAKoE,cACR9nD,KAAK+nD,cAAcrE,GAAK,GAG1B1jD,KAAKmtB,KAAK,aAAa66B,QAAQhoD,KAAKo2B,eAAeglB,OAGnD;IAAK,GAAI6M,KAAYjoD,MAAKkoD,aAAa9M,MACrC,GAAIp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAesiD,GAAW,CACpD,GAAInkD,GAAS9D,KAAKkoD,aAAa9M,MAAM6M,GACjC58C,GACFhL,GAAIyD,EAAOzD,GACXqjD,KAAM5/C,EAGN0O,EAAG1O,EAAO0O,EACVC,EAAG3O,EAAO2O,EACV01C,OAAQrkD,EAAOqkD,OACfC,OAAQtkD,EAAOskD,OAGjBtkD,GAAOqkD,QAAS,EAChBrkD,EAAOskD,QAAS,EAEhB/jB,EAAK4I,UAAUjlC,KAAKqD,MAW5BrI,EAAQ2Q,UAAU2pB,QAAU,SAAUh0B,GACpCtJ,KAAKqoD,cAAc/+C,IAUrBtG,EAAQ2Q,UAAU00C,cAAgB,SAAS/+C,GACzC,IAAItJ,KAAKqkC,KAAKmjB,QAAd,CAKAxnD,KAAKsoD,aAEL,IAAIhpB,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,QACzC/W,EAAKxU,KACLqkC,EAAOrkC,KAAKqkC,KACZ4I,EAAY5I,EAAK4I,SACrB,IAAIA,GAAaA,EAAUznC,QAAsC,GAA5BxF,KAAK4/C,UAAUH,UAAmB,CAErE,GAAIzgB,GAASM,EAAQ9sB,EAAI6xB,EAAK/E,QAAQ9sB,EAClCysB,EAASK,EAAQ7sB,EAAI4xB,EAAK/E,QAAQ7sB,CAGtCw6B,GAAU5kC,QAAQ,SAAUgD,GAC1B,GAAIq4C,GAAOr4C,EAAEq4C,IAERr4C,GAAE88C,SACLzE,EAAKlxC,EAAIgC,EAAG+zC,qBAAqB/zC,EAAGg0C,qBAAqBn9C,EAAEmH,GAAKwsB,IAG7D3zB,EAAE+8C,SACL1E,EAAKjxC,EAAI+B,EAAGi0C,qBAAqBj0C,EAAGk0C,qBAAqBr9C,EAAEoH,GAAKwsB,MAM/Dj/B,KAAK6iD,SACR7iD,KAAK6iD,QAAS,EACd7iD,KAAK6P,aAIP,IAAkC,GAA9B7P,KAAK4/C,UAAUJ,YAAqB,CAEtC,GAAI7yB,GAAQ2S,EAAQ9sB,EAAIxS,KAAKqkC,KAAK/E,QAAQ9sB,EACtCoa,EAAQ0S,EAAQ7sB,EAAIzS,KAAKqkC,KAAK/E,QAAQ7sB,CAE1CzS,MAAKshD,gBACHthD,KAAKqkC,KAAKxnB,YAAYrK,EAAIma,EAC1B3sB,KAAKqkC,KAAKxnB,YAAYpK,EAAIma,GAE5B5sB,KAAK6gD,aAWX79C,EAAQ2Q,UAAU4pB,WAAa,SAAUj0B,GACvCtJ,KAAK2oD,eAAer/C,IAItBtG,EAAQ2Q,UAAUg1C,eAAiB,WACjC3oD,KAAKqkC,KAAKpG,UAAW,CACrB,IAAIgP,GAAYjtC,KAAKqkC,KAAK4I,SACtBA,IAAaA,EAAUznC,QACzBynC,EAAU5kC,QAAQ,SAAUgD,GAE1BA,EAAEq4C,KAAKyE,OAAS98C,EAAE88C,OAClB98C,EAAEq4C,KAAK0E,OAAS/8C,EAAE+8C,SAEpBpoD,KAAK6iD,QAAS,EACd7iD,KAAK6P,SAGL7P,KAAK6gD,UAEP7gD,KAAKmtB,KAAK,WAAW66B,QAAQhoD,KAAKo2B,eAAeglB,SAMnDp4C,EAAQ2Q,UAAU2yC,OAAS,SAAUh9C,GACnC,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OAC7CvrB,MAAKgiD,gBAAkB1iB,EACvBt/B,KAAK4oD,WAAWtpB,IASlBt8B,EAAQ2Q,UAAU4yC,aAAe,SAAUj9C,GACzC,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OAC7CvrB,MAAK6oD,iBAAiBvpB,IAQxBt8B,EAAQ2Q,UAAU6pB,QAAU,SAAUl0B,GACpC,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OAC7CvrB,MAAKgiD,gBAAkB1iB,EACvBt/B,KAAK8oD,cAAcxpB,IAQrBt8B,EAAQ2Q,UAAU6yC,WAAa,SAAUl9C,GACvC,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OAC7CvrB,MAAK+oD,iBAAiBzpB,IAQxBt8B,EAAQ2Q,UAAUgqB,SAAW,SAAUr0B,GACrC,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OAE7CvrB,MAAKqkC,KAAKmjB,SAAU,EACd,SAAWxnD,MAAKqmD,QACpBrmD,KAAKqmD,MAAMhqC,MAAQ,EAIrB,IAAIA,GAAQrc,KAAKqmD,MAAMhqC,MAAQ/S,EAAMy1B,QAAQ1iB,KAC7Crc,MAAKgpD,MAAM3sC,EAAOijB,IAUpBt8B,EAAQ2Q,UAAUq1C,MAAQ,SAAS3sC,EAAOijB,GACxC,GAA+B,GAA3Bt/B,KAAK4/C,UAAU5iB,SAAkB,CACnC,GAAIisB,GAAWjpD,KAAKynD,WACR,MAARprC,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAI6sC,GAAsB,IACR7iD,UAAdrG,KAAKqkC,MACmB,GAAtBrkC,KAAKqkC,KAAKpG,WACZirB,EAAsBlpD,KAAKmpD,YAAYnpD,KAAKqkC,KAAK/E,SAIrD,IAAIziB,GAAc7c,KAAK6nD,kBAEnBuB,EAAY/sC,EAAQ4sC,EACpBI,GAAM,EAAID,GAAa9pB,EAAQ9sB,EAAIqK,EAAYrK,EAAI42C,EACnDE,GAAM,EAAIF,GAAa9pB,EAAQ7sB,EAAIoK,EAAYpK,EAAI22C,CASvD,IAPAppD,KAAKiiD,YAAczvC,EAAMxS,KAAKuoD,qBAAqBjpB,EAAQ9sB,GACxCC,EAAMzS,KAAKyoD,qBAAqBnpB,EAAQ7sB,IAE3DzS,KAAKoc,UAAUC,GACfrc,KAAKshD,gBAAgB+H,EAAIC,GACzBtpD,KAAKupD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuBxpD,KAAKypD,YAAYP,EAC5ClpD,MAAKqkC,KAAK/E,QAAQ9sB,EAAIg3C,EAAqBh3C,EAC3CxS,KAAKqkC,KAAK/E,QAAQ7sB,EAAI+2C,EAAqB/2C,EAY7C,MATAzS,MAAK6gD,UAEUxkC,EAAX4sC,EACFjpD,KAAKmtB,KAAK,QAAS0N,UAAU,MAG7B76B,KAAKmtB,KAAK,QAAS0N,UAAU,MAGxBxe,IAYXrZ,EAAQ2Q,UAAU8pB,cAAgB,SAASn0B,GAEzC,GAAI4kB,GAAQ,CAYZ,IAXI5kB,EAAM6kB,WACRD,EAAQ5kB,EAAM6kB,WAAW,IAChB7kB,EAAM8kB,SAGfF,GAAS5kB,EAAM8kB,OAAO,GAMpBF,EAAO,CAGT,GAAI7R,GAAQrc,KAAKynD,YACbhoB,EAAOvR,EAAQ,EACP,GAARA,IACFuR,GAAe,EAAIA,GAErBpjB,GAAU,EAAIojB,CAGd,IAAIV,GAAUf,EAAWqB,YAAYr/B,KAAMsJ,GACvCg2B,EAAUt/B,KAAKunD,YAAYxoB,EAAQxT,OAGvCvrB,MAAKgpD,MAAM3sC,EAAOijB,GAIpBh2B,EAAMD,kBASRrG,EAAQ2Q,UAAU8yC,kBAAoB,SAAUn9C,GAC9C,GAAIy1B,GAAUf,EAAWqB,YAAYr/B,KAAMsJ,GACvCg2B,EAAUt/B,KAAKunD,YAAYxoB,EAAQxT,OAGnCvrB,MAAK0pD,UACP1pD,KAAK2pD,gBAAgBrqB,EAKvB,IAAI9qB,GAAKxU,KACL4pD,EAAY,WACdp1C,EAAGq1C,gBAAgBvqB,GAarB,IAXIt/B,KAAK8pD,YACPz3B,cAAcryB,KAAK8pD,YAEhB9pD,KAAKqkC,KAAKpG,WACbj+B,KAAK8pD,WAAaj8B,WAAW+7B,EAAW5pD,KAAK4/C,UAAUp6B,QAAQ4H,QAOrC,GAAxBptB,KAAK4/C,UAAU7zC,MAAe,CAEhC,IAAK,GAAIg+C,KAAU/pD,MAAK6/C,SAAS5D,MAC3Bj8C,KAAK6/C,SAAS5D,MAAMt2C,eAAeokD,KACrC/pD,KAAK6/C,SAAS5D,MAAM8N,GAAQh+C,OAAQ,QAC7B/L,MAAK6/C,SAAS5D,MAAM8N,GAK/B,IAAI3nC,GAAMpiB,KAAK4nD,WAAWtoB,EACf,OAAPld,IACFA,EAAMpiB,KAAKgqD,WAAW1qB,IAEb,MAAPld,GACFpiB,KAAKiqD,aAAa7nC,EAIpB,KAAK,GAAI2hC,KAAU/jD,MAAK6/C,SAASzE,MAC3Bp7C,KAAK6/C,SAASzE,MAAMz1C,eAAeo+C,KACjC3hC,YAAe/e,IAAQ+e,EAAI/hB,IAAM0jD,GAAU3hC,YAAelf,IAAe,MAAPkf,KACpEpiB,KAAKkqD,YAAYlqD,KAAK6/C,SAASzE,MAAM2I,UAC9B/jD,MAAK6/C,SAASzE,MAAM2I,GAIjC/jD,MAAK6gB,WAYT7d,EAAQ2Q,UAAUk2C,gBAAkB,SAAUvqB,GAC5C,GAOIj/B,GAPA+hB,GACF9a,KAAQtH,KAAKuoD,qBAAqBjpB,EAAQ9sB,GAC1C9K,IAAQ1H,KAAKyoD,qBAAqBnpB,EAAQ7sB,GAC1CgU,MAAQzmB,KAAKuoD,qBAAqBjpB,EAAQ9sB,GAC1CkQ,OAAQ1iB,KAAKyoD,qBAAqBnpB,EAAQ7sB,IAIxC03C,EAAgBnqD,KAAK0pD,QAEzB,IAAqBrjD,QAAjBrG,KAAK0pD,SAAuB,CAE9B,GAAItO,GAAQp7C,KAAKo7C,KACjB,KAAK/6C,IAAM+6C,GACT,GAAIA,EAAMz1C,eAAetF,GAAK,CAC5B,GAAIqjD,GAAOtI,EAAM/6C,EACjB,IAAwBgG,SAApBq9C,EAAK0G,YAA4B1G,EAAK2G,kBAAkBjoC,GAAM,CAChEpiB,KAAK0pD,SAAWhG,CAChB,SAMR,GAAsBr9C,SAAlBrG,KAAK0pD,SAAwB,CAE/B,GAAIzN,GAAQj8C,KAAKi8C,KACjB,KAAK57C,IAAM47C,GACT,GAAIA,EAAMt2C,eAAetF,GAAK,CAC5B,GAAIiqD,GAAOrO,EAAM57C,EACjB,IAAIiqD,EAAKC,WAAkClkD,SAApBikD,EAAKF,YACxBE,EAAKD,kBAAkBjoC,GAAM,CAC/BpiB,KAAK0pD,SAAWY,CAChB,SAMR,GAAItqD,KAAK0pD,UAEP,GAAI1pD,KAAK0pD,UAAYS,EAAe,CAClC,GAAI31C,GAAKxU,IACJwU,GAAGg2C,QACNh2C,EAAGg2C,MAAQ,GAAIlnD,GAAMkR,EAAGkK,MAAOlK,EAAGorC,UAAUp6B,UAM9ChR,EAAGg2C,MAAMC,YAAYnrB,EAAQ9sB,EAAI,EAAG8sB,EAAQ7sB,EAAI,GAChD+B,EAAGg2C,MAAME,QAAQl2C,EAAGk1C,SAASU,YAC7B51C,EAAGg2C,MAAMnkB,YAIPrmC,MAAKwqD,OACPxqD,KAAKwqD,MAAMpkB,QAYjBpjC,EAAQ2Q,UAAUg2C,gBAAkB,SAAUrqB,GACvCt/B,KAAK0pD,UAAa1pD,KAAK4nD,WAAWtoB,KACrCt/B,KAAK0pD,SAAWrjD,OACZrG,KAAKwqD,OACPxqD,KAAKwqD,MAAMpkB,SAajBpjC,EAAQ2Q,UAAUoQ,QAAU,SAAS/Q,EAAOC,GAC1C,GAAI03C,IAAY,EACZC,EAAW5qD,KAAK0e,MAAMC,OAAO3L,MAC7B63C,EAAY7qD,KAAK0e,MAAMC,OAAO1L,MAC9BD,IAAShT,KAAK4/C,UAAU5sC,OAASC,GAAUjT,KAAK4/C,UAAU3sC,QAAUjT,KAAK0e,MAAMpR,MAAM0F,OAASA,GAAShT,KAAK0e,MAAMpR,MAAM2F,QAAUA,GACpIjT,KAAK0e,MAAMpR,MAAM0F,MAAQA,EACzBhT,KAAK0e,MAAMpR,MAAM2F,OAASA,EAE1BjT,KAAK0e,MAAMC,OAAOrR,MAAM0F,MAAQ,OAChChT,KAAK0e,MAAMC,OAAOrR,MAAM2F,OAAS,OAEjCjT,KAAK0e,MAAMC,OAAO3L,MAAQhT,KAAK0e,MAAMC,OAAOC,YAC5C5e,KAAK0e,MAAMC,OAAO1L,OAASjT,KAAK0e,MAAMC,OAAOsF,aAE7CjkB,KAAK4/C,UAAU5sC,MAAQA,EACvBhT,KAAK4/C,UAAU3sC,OAASA,EAExB03C,GAAY,IAMR3qD,KAAK0e,MAAMC,OAAO3L,OAAShT,KAAK0e,MAAMC,OAAOC,cAC/C5e,KAAK0e,MAAMC,OAAO3L,MAAQhT,KAAK0e,MAAMC,OAAOC,YAC5C+rC,GAAY,GAEV3qD,KAAK0e,MAAMC,OAAO1L,QAAUjT,KAAK0e,MAAMC,OAAOsF,eAChDjkB,KAAK0e,MAAMC,OAAO1L,OAASjT,KAAK0e,MAAMC,OAAOsF,aAC7C0mC,GAAY,IAIC,GAAbA,GACF3qD,KAAKmtB,KAAK,UAAWna,MAAMhT,KAAK0e,MAAMC,OAAO3L,MAAMC,OAAOjT,KAAK0e,MAAMC,OAAO1L,OAAQ23C,SAAUA,EAAUC,UAAWA,KASvH7nD,EAAQ2Q,UAAUwxC,UAAY,SAAS/J,GACrC,GAAI0P,GAAe9qD,KAAKmiD,SAExB,IAAI/G,YAAiBv6C,IAAWu6C,YAAiBt6C,GAC/Cd,KAAKmiD,UAAY/G,MAEd,IAAIt1C,MAAMC,QAAQq1C,GACrBp7C,KAAKmiD,UAAY,GAAIthD,GACrBb,KAAKmiD,UAAUzuC,IAAI0nC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIl1C,WAAU,4BAHpBlG,MAAKmiD,UAAY,GAAIthD,GAgBvB,GAVIiqD,GAEFnqD,EAAK0H,QAAQrI,KAAKqiD,eAAgB,SAAU/5C,EAAUgB,GACpDwhD,EAAa/2C,IAAIzK,EAAOhB,KAK5BtI,KAAKo7C,SAEDp7C,KAAKmiD,UAAW,CAElB,GAAI3tC,GAAKxU,IACTW,GAAK0H,QAAQrI,KAAKqiD,eAAgB,SAAU/5C,EAAUgB,GACpDkL,EAAG2tC,UAAUvuC,GAAGtK,EAAOhB,IAIzB,IAAImN,GAAMzV,KAAKmiD,UAAU/rC,QACzBpW,MAAKsiD,UAAU7sC,GAEjBzV,KAAK+qD,oBAQP/nD,EAAQ2Q,UAAU2uC,UAAY,SAAS7sC,GAErC,IAAK,GADDpV,GACKgF,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9ChF,EAAKoV,EAAIpQ,EACT,IAAI8N,GAAOnT,KAAKmiD,UAAU3sC,IAAInV,GAC1BqjD,EAAO,GAAIrgD,GAAK8P,EAAMnT,KAAK2gD,OAAQ3gD,KAAK8zB,OAAQ9zB,KAAK4/C,UAEzD,IADA5/C,KAAKo7C,MAAM/6C,GAAMqjD,IACG,GAAfA,EAAKyE,QAAkC,GAAfzE,EAAK0E,QAAgC,OAAX1E,EAAKlxC,GAAyB,OAAXkxC,EAAKjxC,GAAa,CAC1F,GAAIqY,GAAS,EAASrV,EAAIjQ,OAAS,GAC/BwlD,EAAQ,EAAIjmD,KAAKimB,GAAKjmB,KAAKE,QACZ,IAAfy+C,EAAKyE,SAAkBzE,EAAKlxC,EAAIsY,EAAS/lB,KAAK4Y,IAAIqtC,IACnC,GAAftH,EAAK0E,SAAkB1E,EAAKjxC,EAAIqY,EAAS/lB,KAAKyY,IAAIwtC,IAExDhrD,KAAK6iD,QAAS,EAGhB7iD,KAAK2kD,uBAC4C,GAA7C3kD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAwC,GAArB9O,KAAK86C,eAC5D96C,KAAKslD,eACLtlD,KAAK+iD,4BAEP/iD,KAAKirD,0BACLjrD,KAAKkrD,kBACLlrD,KAAKmrD,kBAAkBnrD,KAAKo7C,OAC5Bp7C,KAAKorD,gBAQPpoD,EAAQ2Q,UAAU4uC,aAAe,SAAS9sC,EAAI41C,GAE5C,IAAK,GADDjQ,GAAQp7C,KAAKo7C,MACR/1C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIhF,GAAKoV,EAAIpQ,GACTq+C,EAAOtI,EAAM/6C,GACb8S,EAAOk4C,EAAYhmD,EACnBq+C,GAEFA,EAAK4H,cAAcn4C,EAAMnT,KAAK4/C,YAI9B8D,EAAO,GAAIrgD,GAAKkoD,WAAYvrD,KAAK2gD,OAAQ3gD,KAAK8zB,OAAQ9zB,KAAK4/C,WAC3DxE,EAAM/6C,GAAMqjD,GAGhB1jD,KAAK6iD,QAAS,EACmC,GAA7C7iD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAwC,GAArB9O,KAAK86C,eAC5D96C,KAAKslD,eACLtlD,KAAK+iD,4BAEP/iD,KAAK2kD,uBACL3kD,KAAKmrD,kBAAkB/P,IAQzBp4C,EAAQ2Q,UAAU6uC,aAAe,SAAS/sC,GAExC,IAAK,GADD2lC,GAAQp7C,KAAKo7C,MACR/1C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIhF,GAAKoV,EAAIpQ,SACN+1C,GAAM/6C,GAEfL,KAAK2kD,uBAC4C,GAA7C3kD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAwC,GAArB9O,KAAK86C,eAC5D96C,KAAKslD,eACLtlD,KAAK+iD,4BAEP/iD,KAAKirD,0BACLjrD,KAAKkrD,kBACLlrD,KAAK+qD,mBACL/qD,KAAKmrD,kBAAkB/P,IASzBp4C,EAAQ2Q,UAAUyxC,UAAY,SAASnJ,GACrC,GAAIuP,GAAexrD,KAAKoiD,SAExB,IAAInG,YAAiBp7C,IAAWo7C,YAAiBn7C,GAC/Cd,KAAKoiD,UAAYnG,MAEd,IAAIn2C,MAAMC,QAAQk2C,GACrBj8C,KAAKoiD,UAAY,GAAIvhD,GACrBb,KAAKoiD,UAAU1uC,IAAIuoC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAI/1C,WAAU,4BAHpBlG,MAAKoiD,UAAY,GAAIvhD,GAgBvB,GAVI2qD,GAEF7qD,EAAK0H,QAAQrI,KAAKyiD,eAAgB,SAAUn6C,EAAUgB,GACpDkiD,EAAaz3C,IAAIzK,EAAOhB,KAK5BtI,KAAKi8C,SAEDj8C,KAAKoiD,UAAW,CAElB,GAAI5tC,GAAKxU,IACTW,GAAK0H,QAAQrI,KAAKyiD,eAAgB,SAAUn6C,EAAUgB,GACpDkL,EAAG4tC,UAAUxuC,GAAGtK,EAAOhB,IAIzB,IAAImN,GAAMzV,KAAKoiD,UAAUhsC,QACzBpW,MAAK0iD,UAAUjtC,GAGjBzV,KAAKkrD,mBAQPloD,EAAQ2Q,UAAU+uC,UAAY,SAAUjtC,GAItC,IAAK,GAHDwmC,GAAQj8C,KAAKi8C,MACbmG,EAAYpiD,KAAKoiD,UAEZ/8C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIhF,GAAKoV,EAAIpQ,GAETomD,EAAUxP,EAAM57C,EAChBorD,IACFA,EAAQC,YAGV,IAAIv4C,GAAOivC,EAAU5sC,IAAInV,GAAKsrD,iBAAoB,GAClD1P,GAAM57C,GAAM,GAAI6C,GAAKiQ,EAAMnT,KAAMA,KAAK4/C,WAExC5/C,KAAK6iD,QAAS,EACd7iD,KAAKmrD,kBAAkBlP,GACvBj8C,KAAK4rD,qBACL5rD,KAAKirD,0BAC4C,GAA7CjrD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAwC,GAArB9O,KAAK86C,eAC5D96C,KAAKslD,eACLtlD,KAAK+iD,6BAST//C,EAAQ2Q,UAAUgvC,aAAe,SAAUltC,GAGzC,IAAK,GAFDwmC,GAAQj8C,KAAKi8C,MACbmG,EAAYpiD,KAAKoiD,UACZ/8C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIhF,GAAKoV,EAAIpQ,GAET8N,EAAOivC,EAAU5sC,IAAInV,GACrBiqD,EAAOrO,EAAM57C,EACbiqD,IAEFA,EAAKoB,aACLpB,EAAKgB,cAAcn4C,EAAMnT,KAAK4/C,WAC9B0K,EAAKpP,YAILoP,EAAO,GAAIpnD,GAAKiQ,EAAMnT,KAAMA,KAAK4/C,WACjC5/C,KAAKi8C,MAAM57C,GAAMiqD,GAIrBtqD,KAAK4rD,qBAC4C,GAA7C5rD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAwC,GAArB9O,KAAK86C,eAC5D96C,KAAKslD,eACLtlD,KAAK+iD,4BAEP/iD,KAAK6iD,QAAS,EACd7iD,KAAKmrD,kBAAkBlP,IAQzBj5C,EAAQ2Q,UAAUivC,aAAe,SAAUntC,GAEzC,IAAK,GADDwmC,GAAQj8C,KAAKi8C,MACR52C,EAAI,EAAGC,EAAMmQ,EAAIjQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIhF,GAAKoV,EAAIpQ,GACTilD,EAAOrO,EAAM57C,EACbiqD,KACc,MAAZA,EAAKuB,WACA7rD,MAAK8rD,QAAiB,QAAS,MAAExB,EAAKuB,IAAIxrD,IAEnDiqD,EAAKoB,mBACEzP,GAAM57C,IAIjBL,KAAK6iD,QAAS,EACd7iD,KAAKmrD,kBAAkBlP,GAC0B,GAA7Cj8C,KAAK4/C,UAAUjB,mBAAmB7vC,SAAwC,GAArB9O,KAAK86C,eAC5D96C,KAAKslD,eACLtlD,KAAK+iD,4BAEP/iD,KAAKirD,2BAOPjoD,EAAQ2Q,UAAUu3C,gBAAkB,WAClC,GAAI7qD,GACA+6C,EAAQp7C,KAAKo7C,MACba,EAAQj8C,KAAKi8C,KACjB,KAAK57C,IAAM+6C,GACLA,EAAMz1C,eAAetF,KACvB+6C,EAAM/6C,GAAI47C,SACVb,EAAM/6C,GAAI0rD,gBAId,KAAK1rD,IAAM47C,GACT,GAAIA,EAAMt2C,eAAetF,GAAK,CAC5B,GAAIiqD,GAAOrO,EAAM57C,EACjBiqD,GAAK9hC,KAAO,KACZ8hC,EAAK7hC,GAAK,KACV6hC,EAAKpP,YAaXl4C,EAAQ2Q,UAAUw3C,kBAAoB,SAAS/oC,GAC7C,GAAI/hB,GAGAqb,EAAWrV,OACXsV,EAAWtV,MACf,KAAKhG,IAAM+hB,GACT,GAAIA,EAAIzc,eAAetF,GAAK,CAC1B,GAAI6G,GAAQkb,EAAI/hB,GAAI6U,UACN7O,UAAVa,IACFwU,EAAyBrV,SAAbqV,EAA0BxU,EAAQnC,KAAKwG,IAAIrE,EAAOwU,GAC9DC,EAAyBtV,SAAbsV,EAA0BzU,EAAQnC,KAAKiI,IAAI9F,EAAOyU,IAMpE,GAAiBtV,SAAbqV,GAAuCrV,SAAbsV,EAC5B,IAAKtb,IAAM+hB,GACLA,EAAIzc,eAAetF,IACrB+hB,EAAI/hB,GAAI2rD,cAActwC,EAAUC,IAUxC3Y,EAAQ2Q,UAAUkN,OAAS,WACzB7gB,KAAK+jB,QAAQ/jB,KAAK4/C,UAAU5sC,MAAOhT,KAAK4/C,UAAU3sC,QAClDjT,KAAK6gD,WAOP79C,EAAQ2Q,UAAUktC,QAAU,WAC1B,GAAI16B,GAAMnmB,KAAK0e,MAAMC,OAAOyH,WAAW,MAEnC6lC,EAAIjsD,KAAK0e,MAAMC,OAAO3L,MACtB5H,EAAIpL,KAAK0e,MAAMC,OAAO1L,MAC1BkT,GAAIE,UAAU,EAAG,EAAG4lC,EAAG7gD,GAGvB+a,EAAI+lC,OACJ/lC,EAAIgmC,UAAUnsD,KAAK6c,YAAYrK,EAAGxS,KAAK6c,YAAYpK,GACnD0T,EAAI9J,MAAMrc,KAAKqc,MAAOrc,KAAKqc,OAE3Brc,KAAK8hD,eACHtvC,EAAKxS,KAAKuoD,qBAAqB,GAC/B91C,EAAKzS,KAAKyoD,qBAAqB,IAEjCzoD,KAAK+hD,mBACHvvC,EAAKxS,KAAKuoD,qBAAqBvoD,KAAK0e,MAAMC,OAAOC,aACjDnM,EAAKzS,KAAKyoD,qBAAqBzoD,KAAK0e,MAAMC,OAAOsF,eAInDjkB,KAAKosD,gBAAgB,sBAAsBjmC,IACjB,GAAtBnmB,KAAKqkC,KAAKpG,UAA4C53B,SAAvBrG,KAAKqkC,KAAKpG,UAA4D,GAAlCj+B,KAAK4/C,UAAUF,kBACpF1/C,KAAKosD,gBAAgB,aAAajmC,IAGV,GAAtBnmB,KAAKqkC,KAAKpG,UAA4C53B,SAAvBrG,KAAKqkC,KAAKpG,UAA4D,GAAlCj+B,KAAK4/C,UAAUD,kBACpF3/C,KAAKosD,gBAAgB,aAAajmC,GAAI,GAGT,GAA3BnmB,KAAK8/C,oBACP9/C,KAAKosD,gBAAgB,oBAAoBjmC,GAO3CA,EAAIkmC,WASNrpD,EAAQ2Q,UAAU2tC,gBAAkB,SAASgL,EAASC,GAC3BlmD,SAArBrG,KAAK6c,cACP7c,KAAK6c,aACHrK,EAAG,EACHC,EAAG,IAISpM,SAAZimD,IACFtsD,KAAK6c,YAAYrK,EAAI85C,GAEPjmD,SAAZkmD,IACFvsD,KAAK6c,YAAYpK,EAAI85C,GAGvBvsD,KAAKmtB,KAAK,gBAQZnqB,EAAQ2Q,UAAUk0C,gBAAkB,WAClC,OACEr1C,EAAGxS,KAAK6c,YAAYrK,EACpBC,EAAGzS,KAAK6c,YAAYpK,IASxBzP,EAAQ2Q,UAAUyI,UAAY,SAASC,GACrCrc,KAAKqc,MAAQA,GAQfrZ,EAAQ2Q,UAAU8zC,UAAY,WAC5B,MAAOznD,MAAKqc,OAUdrZ,EAAQ2Q,UAAU40C,qBAAuB,SAAS/1C,GAChD,OAAQA,EAAIxS,KAAK6c,YAAYrK,GAAKxS,KAAKqc,OAUzCrZ,EAAQ2Q,UAAU60C,qBAAuB,SAASh2C,GAChD,MAAOA,GAAIxS,KAAKqc,MAAQrc,KAAK6c,YAAYrK,GAU3CxP,EAAQ2Q,UAAU80C,qBAAuB,SAASh2C,GAChD,OAAQA,EAAIzS,KAAK6c,YAAYpK,GAAKzS,KAAKqc,OAUzCrZ,EAAQ2Q,UAAU+0C,qBAAuB,SAASj2C,GAChD,MAAOA,GAAIzS,KAAKqc,MAAQrc,KAAK6c,YAAYpK,GAU3CzP,EAAQ2Q,UAAU81C,YAAc,SAAU9kC,GACxC,OAAQnS,EAAGxS,KAAKwoD,qBAAqB7jC,EAAInS,GAAIC,EAAGzS,KAAK0oD,qBAAqB/jC,EAAIlS,KAShFzP,EAAQ2Q,UAAUw1C,YAAc,SAAUxkC,GACxC,OAAQnS,EAAGxS,KAAKuoD,qBAAqB5jC,EAAInS,GAAIC,EAAGzS,KAAKyoD,qBAAqB9jC,EAAIlS,KAUhFzP,EAAQ2Q,UAAU64C,WAAa,SAASrmC,EAAIsmC,GACvBpmD,SAAfomD,IACFA,GAAa,EAIf,IAAIrR,GAAQp7C,KAAKo7C,MACbxL,IAEJ,KAAK,GAAIvvC,KAAM+6C,GACTA,EAAMz1C,eAAetF,KACvB+6C,EAAM/6C,GAAIqsD,eAAe1sD,KAAKqc,MAAMrc,KAAK8hD,cAAc9hD,KAAK+hD,mBACxD3G,EAAM/6C,GAAIynD,aACZlY,EAAS5nC,KAAK3H,IAGV+6C,EAAM/6C,GAAIssD,UAAYF,IACxBrR,EAAM/6C,GAAIusD,KAAKzmC,GAOvB,KAAK,GAAI9a,GAAI,EAAGwhD,EAAOjd,EAASpqC,OAAYqnD,EAAJxhD,EAAUA,KAC5C+vC,EAAMxL,EAASvkC,IAAIshD,UAAYF,IACjCrR,EAAMxL,EAASvkC,IAAIuhD,KAAKzmC,IAW9BnjB,EAAQ2Q,UAAUm5C,WAAa,SAAS3mC,GACtC,GAAI81B,GAAQj8C,KAAKi8C,KACjB,KAAK,GAAI57C,KAAM47C,GACb,GAAIA,EAAMt2C,eAAetF,GAAK,CAC5B,GAAIiqD,GAAOrO,EAAM57C,EACjBiqD,GAAKloB,SAASpiC,KAAKqc,OACfiuC,EAAKC,WACPtO,EAAM57C,GAAIusD,KAAKzmC,KAYvBnjB,EAAQ2Q,UAAUo5C,kBAAoB,SAAS5mC,GAC7C,GAAI81B,GAAQj8C,KAAKi8C,KACjB,KAAK,GAAI57C,KAAM47C,GACTA,EAAMt2C,eAAetF,IACvB47C,EAAM57C,GAAI0sD,kBAAkB5mC,IASlCnjB,EAAQ2Q,UAAU4xC,WAAa,WACgB,GAAzCvlD,KAAK4/C,UAAUb,wBACjB/+C,KAAKgtD,qBAKP,KADA,GAAIz1C,GAAQ,EACLvX,KAAK6iD,QAAUtrC,EAAQvX,KAAK4/C,UAAUL,yBAC3Cv/C,KAAKitD,eACL11C,GAEFvX,MAAKgjD,WAAW38C,QAAU,GAAM,GACa,GAAzCrG,KAAK4/C,UAAUb,wBACjB/+C,KAAKktD,uBAUTlqD,EAAQ2Q,UAAUq5C,oBAAsB,WACtC,GAAI5R,GAAQp7C,KAAKo7C,KACjB,KAAK,GAAI/6C,KAAM+6C,GACTA,EAAMz1C,eAAetF,IACJ,MAAf+6C,EAAM/6C,GAAImS,GAA4B,MAAf4oC,EAAM/6C,GAAIoS,IACnC2oC,EAAM/6C,GAAI8sD,UAAU36C,EAAI4oC,EAAM/6C,GAAI8nD,OAClC/M,EAAM/6C,GAAI8sD,UAAU16C,EAAI2oC,EAAM/6C,GAAI+nD,OAClChN,EAAM/6C,GAAI8nD,QAAS,EACnB/M,EAAM/6C,GAAI+nD,QAAS,IAW3BplD,EAAQ2Q,UAAUu5C,oBAAsB,WACtC,GAAI9R,GAAQp7C,KAAKo7C,KACjB,KAAK,GAAI/6C,KAAM+6C,GACTA,EAAMz1C,eAAetF,IACM,MAAzB+6C,EAAM/6C,GAAI8sD,UAAU36C,IACtB4oC,EAAM/6C,GAAI8nD,OAAS/M,EAAM/6C,GAAI8sD,UAAU36C,EACvC4oC,EAAM/6C,GAAI+nD,OAAShN,EAAM/6C,GAAI8sD,UAAU16C,IAa/CzP,EAAQ2Q,UAAUy5C,UAAY,SAASC,GACrC,GAAIjS,GAAQp7C,KAAKo7C,KACjB,KAAK,GAAI/6C,KAAM+6C,GACb,GAAIA,EAAMz1C,eAAetF,IAAO+6C,EAAM/6C,GAAIitD,SAASD,GACjD,OAAO,CAGX,QAAO,GAUTrqD,EAAQ2Q,UAAU45C,mBAAqB,WACrC,GAEIxJ,GAFA3xB,EAAWpyB,KAAK66C,wBAChBO,EAAQp7C,KAAKo7C,MAEboS,GAAe,CAEnB,IAAIxtD,KAAK4/C,UAAUR,YAAc,EAC/B,IAAK2E,IAAU3I,GACTA,EAAMz1C,eAAeo+C,KACvB3I,EAAM2I,GAAQ0J,oBAAoBr7B,EAAUpyB,KAAK4/C,UAAUR,aAC3DoO,GAAe,OAKnB,KAAKzJ,IAAU3I,GACTA,EAAMz1C,eAAeo+C,KACvB3I,EAAM2I,GAAQ2J,aAAat7B,GAC3Bo7B,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgB3tD,KAAK4/C,UAAUP,YAAct6C,KAAKiI,IAAIhN,KAAKqc,MAAM,IACrE,OAAIsxC,GAAgB,GAAI3tD,KAAK4/C,UAAUR,aAC9B,EAGAp/C,KAAKotD,UAAUO,GAG1B,OAAO,GAQT3qD,EAAQ2Q,UAAUs5C,aAAe,WAC/B,IAAKjtD,KAAKuhD,kBACW,GAAfvhD,KAAK6iD,OAAgB,CACvB,GAAI+K,IAAmB,EACnBC,GAAsB,CAE1B7tD,MAAK8tD,sBAAsB,8BAC3B,IAAIC,GAAa/tD,KAAK8tD,sBAAsB,qBACD,IAAvC9tD,KAAK4/C,UAAUZ,aAAalwC,SAA0D,GAAvC9O,KAAK4/C,UAAUZ,aAAaC,UAC7E4O,EAAsB7tD,KAAKguD,mBAAmB,sBAGhD,KAAK,GAAI3oD,GAAI,EAAGA,EAAI0oD,EAAWvoD,OAAQH,IAAMuoD,EAAmBG,EAAW,IAAMH,CAGjF5tD,MAAK6iD,OAAS+K,GAAoBC,EAElC7tD,KAAKu/C,4BAYXv8C,EAAQ2Q,UAAUs6C,eAAiB,WAEjCjuD,KAAK8iD,MAAQz8C,OAEbrG,KAAKkuD,oBAGLluD,KAAK6P,OAGL,IAAIs+C,GAAkBhqD,KAAKw4B,MACvByxB,EAAW,CACfpuD,MAAKitD,cAEL,KADA,GAAIoB,GAAelqD,KAAKw4B,MAAQwxB,EACzBE,EAAe,IAAKruD,KAAK06C,eAAiB16C,KAAK26C,aAAeyT,EAAWpuD,KAAK46C,0BACnF56C,KAAKitD,eACLoB,EAAelqD,KAAKw4B,MAAQwxB,EAC5BC,GAGF,IAAIzT,GAAax2C,KAAKw4B,KACtB38B,MAAK6gD,UACL7gD,KAAK26C,WAAax2C,KAAKw4B,MAAQge,GAGX,mBAAXpzC,UACTA,OAAO+mD,sBAAwB/mD,OAAO+mD,uBAAyB/mD,OAAOgnD,0BACvChnD,OAAOinD,6BAA+BjnD,OAAOknD,yBAM9EzrD,EAAQ2Q,UAAU9D,MAAQ,WACxB,GAAmB,GAAf7P,KAAK6iD,QAAqC,GAAnB7iD,KAAK8gD,YAAsC,GAAnB9gD,KAAK+gD,YAAyC,GAAtB/gD,KAAKghD,eAM9E,GALiC,GAA7BhhD,KAAKyhD,uBACPzhD,KAAKmtB,KAAK,sBACVntB,KAAKyhD,sBAAuB,IAGzBzhD,KAAK8iD,MAAO,CACf,GAAI4L,GAAK1lD,UAAUC,UAAU0lD,cAEzBC,GAAkB,CACQ,KAA1BF,EAAGloD,QAAQ,YACbooD,GAAkB,EAEa,IAAxBF,EAAGloD,QAAQ,WACdkoD,EAAGloD,QAAQ,WAAa,KAC1BooD,GAAkB,GAKpB5uD,KAAK8iD,MADgB,GAAnB8L,EACWrnD,OAAOsmB,WAAW7tB,KAAKiuD,eAAex5B,KAAKz0B,MAAOA,KAAK06C,gBAGvDnzC,OAAO+mD,sBAAsBtuD,KAAKiuD,eAAex5B,KAAKz0B,MAAOA,KAAK06C,qBAMnF,IADA16C,KAAK6gD,UACD7gD,KAAKu/C,wBAA0B,EAAG,CAKpC,GAAI/qC,GAAKxU,KACLmU,GACF06C,WAAYr6C,EAAG+qC,wBAEjB/qC,GAAG+qC,wBAA0B,EAC7B/qC,EAAGitC,sBAAuB,EAC1B5zB,WAAW,WACTrZ,EAAG2Y,KAAK,aAAchZ,IACrB,KAWTnR,EAAQ2Q,UAAUu6C,kBAAoB,WACpC,GAAuB,GAAnBluD,KAAK8gD,YAAsC,GAAnB9gD,KAAK+gD,WAAiB,CAChD,GAAIlkC,GAAc7c,KAAK6nD,iBACvB7nD,MAAKshD,gBAAgBzkC,EAAYrK,EAAExS,KAAK8gD,WAAYjkC,EAAYpK,EAAEzS,KAAK+gD,YAEzE,GAA0B,GAAtB/gD,KAAKghD,cAAoB,CAC3B,GAAIz1B,IACF/Y,EAAGxS,KAAK0e,MAAMC,OAAOC,YAAc,EACnCnM,EAAGzS,KAAK0e,MAAMC,OAAOsF,aAAe,EAEtCjkB,MAAKgpD,MAAMhpD,KAAKqc,OAAO,EAAIrc,KAAKghD,eAAgBz1B,KAQpDvoB,EAAQ2Q,UAAUm7C,aAAe,WACF,GAAzB9uD,KAAKuhD,iBACPvhD,KAAKuhD,kBAAmB,GAGxBvhD,KAAKuhD,kBAAmB,EACxBvhD,KAAK6P,UAWT7M,EAAQ2Q,UAAUyyC,uBAAyB,SAASjC,GAIlD,GAHqB99C,SAAjB89C,IACFA,GAAe,GAE0B,GAAvCnkD,KAAK4/C,UAAUZ,aAAalwC,SAA0D,GAAvC9O,KAAK4/C,UAAUZ,aAAaC,QAAiB,CAC9Fj/C,KAAK4rD,oBAEL,KAAK,GAAI7H,KAAU/jD,MAAK8rD,QAAiB,QAAS,MAC5C9rD,KAAK8rD,QAAiB,QAAS,MAAEnmD,eAAeo+C,IACwB19C,SAAtErG,KAAKi8C,MAAMj8C,KAAK8rD,QAAiB,QAAS,MAAE/H,GAAQgL,qBAC/C/uD,MAAK8rD,QAAiB,QAAS,MAAE/H,OAK3C,CAEH/jD,KAAK8rD,QAAiB,QAAS,QAC/B,KAAK,GAAI/B,KAAU/pD,MAAKi8C,MAClBj8C,KAAKi8C,MAAMt2C,eAAeokD,KAC5B/pD,KAAKi8C,MAAM8N,GAAQ8B,IAAM,MAM/B7rD,KAAKirD,0BACA9G,IACHnkD,KAAK6iD,QAAS,EACd7iD,KAAK6P,UAWT7M,EAAQ2Q,UAAUi4C,mBAAqB,WACrC,GAA2C,GAAvC5rD,KAAK4/C,UAAUZ,aAAalwC,SAA0D,GAAvC9O,KAAK4/C,UAAUZ,aAAaC,QAC7E,IAAK,GAAI8K,KAAU/pD,MAAKi8C,MACtB,GAAIj8C,KAAKi8C,MAAMt2C,eAAeokD,GAAS,CACrC,GAAIO,GAAOtqD,KAAKi8C,MAAM8N,EACtB,IAAgB,MAAZO,EAAKuB,IAAa,CACpB,GAAI9H,GAAS,UAAU1vC,OAAOi2C,EAAKjqD,GACnCL,MAAK8rD,QAAiB,QAAS,MAAE/H,GAAU,GAAI1gD,IACtChD,GAAG0jD,EACF1I,KAAK,EACLG,MAAM,SACNC,MAAM,GACNuT,mBAAmB,SACbhvD,KAAK4/C,WACrB0K,EAAKuB,IAAM7rD,KAAK8rD,QAAiB,QAAS,MAAE/H,GAC5CuG,EAAKuB,IAAIkD,aAAezE,EAAKjqD,GAC7BiqD,EAAK2E,wBAYfjsD,EAAQ2Q,UAAU6mC,wBAA0B,WAC1C,IAAK,GAAI0U,KAAS/L,GACZA,EAAYx9C,eAAeupD,KAC7BlsD,EAAQ2Q,UAAUu7C,GAAS/L,EAAY+L,KAQ7ClsD,EAAQ2Q,UAAUw7C,cAAgB,WAChCr/C,QAAQC,IAAI,mEACZ/P,KAAKovD,kBAMPpsD,EAAQ2Q,UAAUy7C,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAItL,KAAU/jD,MAAKo7C,MACtB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC,GAAIL,GAAO1jD,KAAKo7C,MAAM2I,GAClBuL,GAAkBtvD,KAAKo7C,MAAM+M,OAC7BoH,GAAkBvvD,KAAKo7C,MAAMgN,QAC7BpoD,KAAKmiD,UAAU9uC,MAAM0wC,GAAQvxC,GAAKzN,KAAKkoB,MAAMy2B,EAAKlxC,IAAMxS,KAAKmiD,UAAU9uC,MAAM0wC,GAAQtxC,GAAK1N,KAAKkoB,MAAMy2B,EAAKjxC,KAC5G48C,EAAUrnD,MAAM3H,GAAG0jD,EAAOvxC,EAAEzN,KAAKkoB,MAAMy2B,EAAKlxC,GAAGC,EAAE1N,KAAKkoB,MAAMy2B,EAAKjxC,GAAG68C,eAAeA,EAAeC,eAAeA,IAIvHvvD,KAAKmiD,UAAUhtC,OAAOk6C,IAMxBrsD,EAAQ2Q,UAAU67C,aAAe,SAAS/5C,GACxC,GAAI45C,KACJ,IAAYhpD,SAARoP,GACF,GAA0B,GAAtB3P,MAAMC,QAAQ0P,IAChB,IAAK,GAAIpQ,GAAI,EAAGA,EAAIoQ,EAAIjQ,OAAQH,IAC9B,GAA2BgB,SAAvBrG,KAAKo7C,MAAM3lC,EAAIpQ,IAAmB,CACpC,GAAIq+C,GAAO1jD,KAAKo7C,MAAM3lC,EAAIpQ,GAC1BgqD,GAAU55C,EAAIpQ,KAAOmN,EAAGzN,KAAKkoB,MAAMy2B,EAAKlxC,GAAIC,EAAG1N,KAAKkoB,MAAMy2B,EAAKjxC,SAKnE,IAAwBpM,SAApBrG,KAAKo7C,MAAM3lC,GAAoB,CACjC,GAAIiuC,GAAO1jD,KAAKo7C,MAAM3lC,EACtB45C,GAAU55C,IAAQjD,EAAGzN,KAAKkoB,MAAMy2B,EAAKlxC,GAAIC,EAAG1N,KAAKkoB,MAAMy2B,EAAKjxC,SAKhE,KAAK,GAAIsxC,KAAU/jD,MAAKo7C,MACtB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC,GAAIL,GAAO1jD,KAAKo7C,MAAM2I,EACtBsL,GAAUtL,IAAWvxC,EAAGzN,KAAKkoB,MAAMy2B,EAAKlxC,GAAIC,EAAG1N,KAAKkoB,MAAMy2B,EAAKjxC,IAIrE,MAAO48C,IAWTrsD,EAAQ2Q,UAAU87C,YAAc,SAAU1L,EAAQl1C,GAChD,GAAI7O,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrB19C,SAAZwI,IACFA,KAEF,IAAI6gD,IAAgBl9C,EAAGxS,KAAKo7C,MAAM2I,GAAQvxC,EAAGC,EAAGzS,KAAKo7C,MAAM2I,GAAQtxC,EACnE5D,GAAQmU,SAAW0sC,EACnB7gD,EAAQ8gD,aAAe5L,EAEvB/jD,KAAKinB,OAAOpY,OAGZiB,SAAQC,IAAI,iCAWhB/M,EAAQ2Q,UAAUsT,OAAS,SAAUpY,GACnC,MAAgBxI,UAAZwI,OACFA,OAGwBxI,SAAtBwI,EAAQka,SAAoCla,EAAQka,QAAavW,EAAG,EAAGC,EAAG,IACpDpM,SAAtBwI,EAAQka,OAAOvW,IAA6B3D,EAAQka,OAAOvW,EAAK,GAC1CnM,SAAtBwI,EAAQka,OAAOtW,IAA6B5D,EAAQka,OAAOtW,EAAK,GAC1CpM,SAAtBwI,EAAQwN,QAAoCxN,EAAQwN,MAAYrc,KAAKynD,aAC/CphD,SAAtBwI,EAAQmU,WAAoCnU,EAAQmU,SAAYhjB,KAAK6nD,mBAC/CxhD,SAAtBwI,EAAQ61C,YAAoC71C,EAAQ61C,WAAan0C,SAAS,IAC1E1B,EAAQ61C,aAAc,IAAsB71C,EAAQ61C,WAAan0C,SAAS,IAC1E1B,EAAQ61C,aAAc,IAAsB71C,EAAQ61C,cACrBr+C,SAA/BwI,EAAQ61C,UAAUn0C,WAA0B1B,EAAQ61C,UAAUn0C,SAAW,KACpClK,SAArCwI,EAAQ61C,UAAUkL,iBAAgC/gD,EAAQ61C,UAAUkL,eAAiB,qBAEzF5vD,MAAK6vD,YAAYhhD,KAcnB7L,EAAQ2Q,UAAUk8C,YAAc,SAAUhhD,GACxC,GAAgBxI,SAAZwI,EAEF,YADAA,KAKF7O,MAAKsoD,cACiB,GAAlBz5C,EAAQihD,SACV9vD,KAAKygD,eAAiB5xC,EAAQ8gD,aAC9B3vD,KAAK0gD,mBAAqB7xC,EAAQka,QAIb,GAAnB/oB,KAAKogD,YACPpgD,KAAK+vD,kBAAkB,GAGzB/vD,KAAKqgD,YAAcrgD,KAAKynD,YACxBznD,KAAKugD,kBAAoBvgD,KAAK6nD,kBAC9B7nD,KAAKsgD,YAAczxC,EAAQwN,MAI3Brc,KAAKoc,UAAUpc,KAAKsgD,YACpB,IAAI0P,GAAahwD,KAAKmpD,aAAa32C,EAAG,GAAMxS,KAAK0e,MAAMC,OAAOC,YAAanM,EAAG,GAAMzS,KAAK0e,MAAMC,OAAOsF,eAClGgsC,GACFz9C,EAAGw9C,EAAWx9C,EAAI3D,EAAQmU,SAASxQ,EACnCC,EAAGu9C,EAAWv9C,EAAI5D,EAAQmU,SAASvQ,EAErCzS,MAAKwgD,mBACHhuC,EAAGxS,KAAKugD,kBAAkB/tC,EAAIy9C,EAAmBz9C,EAAIxS,KAAKsgD,YAAczxC,EAAQka,OAAOvW,EACvFC,EAAGzS,KAAKugD,kBAAkB9tC,EAAIw9C,EAAmBx9C,EAAIzS,KAAKsgD,YAAczxC,EAAQka,OAAOtW,GAIvD,GAA9B5D,EAAQ61C,UAAUn0C,SACO,MAAvBvQ,KAAKygD,gBACPzgD,KAAKkwD,eAAiBlwD,KAAK6gD,QAC3B7gD,KAAK6gD,QAAU7gD,KAAKmwD,gBAGpBnwD,KAAKoc,UAAUpc,KAAKsgD,aACpBtgD,KAAKshD,gBAAgBthD,KAAKwgD,kBAAkBhuC,EAAGxS,KAAKwgD,kBAAkB/tC,GACtEzS,KAAK6gD,YAIP7gD,KAAKkgD,eAAiB,GAAKlgD,KAAKy6C,kBAAoB5rC,EAAQ61C,UAAUn0C,SAAW,OAAU,EAAIvQ,KAAKy6C,kBACpGz6C,KAAKmgD,wBAA0BtxC,EAAQ61C,UAAUkL,eACjD5vD,KAAKkwD,eAAiBlwD,KAAK6gD,QAC3B7gD,KAAK6gD,QAAU7gD,KAAK+vD,kBACpB/vD,KAAK6gD,UACL7gD,KAAK6iD,QAAS,EACd7iD,KAAK6P,UAKT7M,EAAQ2Q,UAAUw8C,cAAgB,WAChC,GAAIT,IAAgBl9C,EAAGxS,KAAKo7C,MAAMp7C,KAAKygD,gBAAgBjuC,EAAGC,EAAGzS,KAAKo7C,MAAMp7C,KAAKygD,gBAAgBhuC,GACzFu9C,EAAahwD,KAAKmpD,aAAa32C,EAAG,GAAMxS,KAAK0e,MAAMC,OAAOC,YAAanM,EAAG,GAAMzS,KAAK0e,MAAMC,OAAOsF,eAClGgsC,GACFz9C,EAAGw9C,EAAWx9C,EAAIk9C,EAAal9C,EAC/BC,EAAGu9C,EAAWv9C,EAAIi9C,EAAaj9C,GAE7B8tC,EAAoBvgD,KAAK6nD,kBACzBrH,GACFhuC,EAAG+tC,EAAkB/tC,EAAIy9C,EAAmBz9C,EAAIxS,KAAKqc,MAAQrc,KAAK0gD,mBAAmBluC,EACrFC,EAAG8tC,EAAkB9tC,EAAIw9C,EAAmBx9C,EAAIzS,KAAKqc,MAAQrc,KAAK0gD,mBAAmBjuC,EAGvFzS,MAAKshD,gBAAgBd,EAAkBhuC,EAAEguC,EAAkB/tC,GAC3DzS,KAAKkwD,kBAGPltD,EAAQ2Q,UAAU20C,YAAc,WACH,MAAvBtoD,KAAKygD,iBACPzgD,KAAK6gD,QAAU7gD,KAAKkwD,eACpBlwD,KAAKygD,eAAiB,KACtBzgD,KAAK0gD,mBAAqB,OAS9B19C,EAAQ2Q,UAAUo8C,kBAAoB,SAAU3P,GAC9CpgD,KAAKogD,WAAaA,GAAcpgD,KAAKogD,WAAapgD,KAAKkgD,eACvDlgD,KAAKogD,YAAcpgD,KAAKkgD,cAExB,IAAI7uB,GAAW1wB,EAAK8P,gBAAgBzQ,KAAKmgD,yBAAyBngD,KAAKogD,WAEvEpgD,MAAKoc,UAAUpc,KAAKqgD,aAAergD,KAAKsgD,YAActgD,KAAKqgD,aAAehvB,GAC1ErxB,KAAKshD,gBACHthD,KAAKugD,kBAAkB/tC,GAAKxS,KAAKwgD,kBAAkBhuC,EAAIxS,KAAKugD,kBAAkB/tC,GAAK6e,EACnFrxB,KAAKugD,kBAAkB9tC,GAAKzS,KAAKwgD,kBAAkB/tC,EAAIzS,KAAKugD,kBAAkB9tC,GAAK4e,GAGrFrxB,KAAKkwD,iBACLlwD,KAAK6iD,QAAS,EAGV7iD,KAAKogD,YAAc,IACrBpgD,KAAKogD,WAAa,EAEhBpgD,KAAK6gD,QADoB,MAAvB7gD,KAAKygD,eACQzgD,KAAKmwD,cAGLnwD,KAAKkwD,eAEtBlwD,KAAKmtB,KAAK,uBAIdnqB,EAAQ2Q,UAAUu8C,eAAiB,aAQnCltD,EAAQ2Q,UAAUgzC,SAAW,WAC3B,OAAQ3mD,KAAKgmD,WAAahmD,KAAKgmD,UAAUoK,QAQ3CptD,EAAQ2Q,UAAUyuB,SAAW,WAC3B,MAAOpiC,MAAKoc,aAQdpZ,EAAQ2Q,UAAU08C,SAAW,WAC3B,MAAOrwD,MAAKynD,aAQdzkD,EAAQ2Q,UAAU28C,qBAAuB,WACvC,MAAOtwD,MAAKmpD,aAAa32C,EAAG,GAAMxS,KAAK0e,MAAMC,OAAOC,YAAanM,EAAG,GAAMzS,KAAK0e,MAAMC,OAAOsF,gBAG9FpkB,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAoB9B,QAASgD,GAAMqoD,EAAYtoD,EAASstD,GAClC,IAAKttD,EACH,KAAM,qBAER,IAAIqL,IAAU,QAAQ,WAClBsxC,EAAYj/C,EAAK0N,sBAAsBC,EAAOiiD,EAClDvwD,MAAK6O,QAAU+wC,EAAU3D,MACzBj8C,KAAK08C,QAAUkD,EAAUlD,QACzB18C,KAAK6O,QAAsB,aAAI0hD,EAA+B,aAG9DvwD,KAAKiD,QAAUA,EAGfjD,KAAKK,GAASgG,OACdrG,KAAKwwD,OAASnqD,OACdrG,KAAKywD,KAASpqD,OACdrG,KAAK8jC,MAASz9B,OACdrG,KAAK0wD,cAAgB1wD,KAAK6O,QAAQmE,MAAQhT,KAAK6O,QAAQqtC,yBACvDl8C,KAAKkH,MAASb,OACdrG,KAAK4vC,UAAW,EAChB5vC,KAAK+L,OAAQ,EACb/L,KAAK2wD,iBAAmBjpD,IAAI,EAAEJ,KAAK,EAAE0L,MAAM,EAAEC,OAAO,EAAE29C,MAAM,GAC5D5wD,KAAK6wD,YAAa,EAElB7wD,KAAKwoB,KAAO,KACZxoB,KAAKyoB,GAAK,KACVzoB,KAAK6rD,IAAM,KAIX7rD,KAAK8wD,kBACL9wD,KAAK+wD,gBAEL/wD,KAAKuqD,WAAY,EAEjBvqD,KAAKgxD,YAAc,EACnBhxD,KAAKixD,aAAc,EAEnBjxD,KAAKsrD,cAAcC,GAEnBvrD,KAAKkxD,qBAAsB,EAC3BlxD,KAAKmxD,cAAgB3oC,KAAK,KAAMC,GAAG,KAAM2oC,cACzCpxD,KAAKqxD,cAAgB,KA7DvB,GAAI1wD,GAAOT,EAAoB,GAC3BmD,EAAOnD,EAAoB,GAoE/BgD,GAAKyQ,UAAU23C,cAAgB,SAASC,GACtC,GAAKA,EAAL,CAIA,GAAIj9C,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,QACjE,2BAA2B,aAAa,mBAAmB,OAAO,eAoCpE,QAlCA3N,EAAKqF,oBAAoBsI,EAAQtO,KAAK6O,QAAS08C,GAEvBllD,SAApBklD,EAAW/iC,OAA+BxoB,KAAKwwD,OAASjF,EAAW/iC,MACjDniB,SAAlBklD,EAAW9iC,KAA+BzoB,KAAKywD,KAAOlF,EAAW9iC,IAE/CpiB,SAAlBklD,EAAWlrD,KAA+BL,KAAKK,GAAKkrD,EAAWlrD,IAC1CgG,SAArBklD,EAAW1jC,QAA+B7nB,KAAK6nB,MAAQ0jC,EAAW1jC,MAAO7nB,KAAK6wD,YAAa,GAEtExqD,SAArBklD,EAAWznB,QAA6B9jC,KAAK8jC,MAAQynB,EAAWznB,OAC3Cz9B,SAArBklD,EAAWrkD,QAA6BlH,KAAKkH,MAAQqkD,EAAWrkD,OAC1Cb,SAAtBklD,EAAW/lD,SAA6BxF,KAAK08C,QAAQK,aAAewO,EAAW/lD,QAE1Da,SAArBklD,EAAW5gD,QACb3K,KAAK6O,QAAQ2tC,cAAe,EACxB77C,EAAKqD,SAASunD,EAAW5gD,QAC3B3K,KAAK6O,QAAQlE,MAAMA,MAAQ4gD,EAAW5gD,MACtC3K,KAAK6O,QAAQlE,MAAMmB,UAAYy/C,EAAW5gD,QAGXtE,SAA3BklD,EAAW5gD,MAAMA,QAA0B3K,KAAK6O,QAAQlE,MAAMA,MAAQ4gD,EAAW5gD,MAAMA,OACxDtE,SAA/BklD,EAAW5gD,MAAMmB,YAA0B9L,KAAK6O,QAAQlE,MAAMmB,UAAYy/C,EAAW5gD,MAAMmB,WAChEzF,SAA3BklD,EAAW5gD,MAAMoB,QAA0B/L,KAAK6O,QAAQlE,MAAMoB,MAAQw/C,EAAW5gD,MAAMoB,SAK/F/L,KAAKk7C,UAELl7C,KAAKgxD,WAAahxD,KAAKgxD,YAAoC3qD,SAArBklD,EAAWv4C,MACjDhT,KAAKixD,YAAcjxD,KAAKixD,aAAsC5qD,SAAtBklD,EAAW/lD,OAEnDxF,KAAK0wD,cAAgB1wD,KAAK6O,QAAQmE,MAAOhT,KAAK6O,QAAQqtC,yBAG9Cl8C,KAAK6O,QAAQvB,OACnB,IAAK,OAAiBtN,KAAK4sD,KAAO5sD,KAAKsxD,SAAW,MAClD,KAAK,QAAiBtxD,KAAK4sD,KAAO5sD,KAAKuxD,UAAY,MACnD,KAAK,eAAiBvxD,KAAK4sD,KAAO5sD,KAAKwxD,gBAAkB,MACzD,KAAK,YAAiBxxD,KAAK4sD,KAAO5sD,KAAKyxD,aAAe,MACtD,SAAsBzxD,KAAK4sD,KAAO5sD,KAAKsxD,aAO3CpuD,EAAKyQ,UAAUunC,QAAU,WACvBl7C,KAAK0rD,aAEL1rD,KAAKwoB,KAAOxoB,KAAKiD,QAAQm4C,MAAMp7C,KAAKwwD,SAAW,KAC/CxwD,KAAKyoB,GAAKzoB,KAAKiD,QAAQm4C,MAAMp7C,KAAKywD,OAAS,KAC3CzwD,KAAKuqD,UAAavqD,KAAKwoB,MAAQxoB,KAAKyoB,GAEhCzoB,KAAKuqD,WACPvqD,KAAKwoB,KAAKkpC,WAAW1xD,MACrBA,KAAKyoB,GAAGipC,WAAW1xD,QAGfA,KAAKwoB,MACPxoB,KAAKwoB,KAAKmpC,WAAW3xD,MAEnBA,KAAKyoB,IACPzoB,KAAKyoB,GAAGkpC,WAAW3xD,QAQzBkD,EAAKyQ,UAAU+3C,WAAa,WACtB1rD,KAAKwoB,OACPxoB,KAAKwoB,KAAKmpC,WAAW3xD,MACrBA,KAAKwoB,KAAO,MAEVxoB,KAAKyoB,KACPzoB,KAAKyoB,GAAGkpC,WAAW3xD,MACnBA,KAAKyoB,GAAK,MAGZzoB,KAAKuqD,WAAY,GAQnBrnD,EAAKyQ,UAAUy2C,SAAW,WACxB,MAA6B,kBAAfpqD,MAAK8jC,MAAuB9jC,KAAK8jC,QAAU9jC,KAAK8jC,OAQhE5gC,EAAKyQ,UAAUuB,SAAW,WACxB,MAAOlV,MAAKkH,OASdhE,EAAKyQ,UAAUq4C,cAAgB,SAASzgD,EAAKyB,GAC3C,IAAKhN,KAAKgxD,YAA6B3qD,SAAfrG,KAAKkH,MAAqB,CAChD,GAAImV,IAASrc,KAAK6O,QAAQ0X,SAAWvmB,KAAK6O,QAAQyX,WAAatZ,EAAMzB,EACrEvL,MAAK6O,QAAQmE,OAAQhT,KAAKkH,MAAQqE,GAAO8Q,EAAQrc,KAAK6O,QAAQyX,SAC9DtmB,KAAK0wD,cAAgB1wD,KAAK6O,QAAQmE,MAAOhT,KAAK6O,QAAQqtC,2BAU1Dh5C,EAAKyQ,UAAUi5C,KAAO,WACpB,KAAM,uCAQR1pD,EAAKyQ,UAAU02C,kBAAoB,SAASjoC,GAC1C,GAAIpiB,KAAKuqD,UAAW,CAClB,GAAI17B,GAAU,GACV+iC,EAAQ5xD,KAAKwoB,KAAKhW,EAClBq/C,EAAQ7xD,KAAKwoB,KAAK/V,EAClBq/C,EAAM9xD,KAAKyoB,GAAGjW,EACdu/C,EAAM/xD,KAAKyoB,GAAGhW,EACdu/C,EAAO5vC,EAAI9a,KACX2qD,EAAO7vC,EAAI1a,IAEX6iB,EAAOvqB,KAAKkyD,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAepjC,GAAPtE,EAGR,OAAO,GAIXrnB,EAAKyQ,UAAUw+C,UAAY,WACzB,GAAIC,GAAWpyD,KAAK6O,QAAQlE,KAgB5B,OAfiC,MAA7B3K,KAAK6O,QAAQ2tC,aACf4V,GACEtmD,UAAW9L,KAAKyoB,GAAG5Z,QAAQlE,MAAMmB,UAAUD,OAC3CE,MAAO/L,KAAKyoB,GAAG5Z,QAAQlE,MAAMoB,MAAMF,OACnClB,MAAO3K,KAAKyoB,GAAG5Z,QAAQlE,MAAMkB,SAGK,QAA7B7L,KAAK6O,QAAQ2tC,cAAuD,GAA7Bx8C,KAAK6O,QAAQ2tC,gBAC3D4V,GACEtmD,UAAW9L,KAAKwoB,KAAK3Z,QAAQlE,MAAMmB,UAAUD,OAC7CE,MAAO/L,KAAKwoB,KAAK3Z,QAAQlE,MAAMoB,MAAMF,OACrClB,MAAO3K,KAAKwoB,KAAK3Z,QAAQlE,MAAMkB,SAId,GAAjB7L,KAAK4vC,SAA4BwiB,EAAStmD,UACvB,GAAd9L,KAAK+L,MAAuBqmD,EAASrmD,MACTqmD,EAASznD,OAWhDzH,EAAKyQ,UAAU29C,UAAY,SAASnrC,GAKlC,GAHAA,EAAIY,YAAc/mB,KAAKmyD,YACvBhsC,EAAIO,UAAc1mB,KAAKqyD,gBAEnBryD,KAAKwoB,MAAQxoB,KAAKyoB,GAAI,CAExB,GAGI9V,GAHAk5C,EAAM7rD,KAAKsyD,MAAMnsC,EAIrB,IAAInmB,KAAK6nB,MAAO,CACd,GAAyC,GAArC7nB,KAAK6O,QAAQmwC,aAAalwC,SAA0B,MAAP+8C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKvyD,KAAKwoB,KAAKhW,EAAIq5C,EAAIr5C,GAAK,IAAKxS,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,IAClEggD,EAAY,IAAK,IAAKxyD,KAAKwoB,KAAK/V,EAAIo5C,EAAIp5C,GAAK,IAAKzS,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,GACtEE,IAASH,EAAE+/C,EAAW9/C,EAAE+/C,OAGxB7/C,GAAQ3S,KAAKyyD,aAAa,GAE5BzyD,MAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,QAG3C,CACH,GAAID,GAAGC,EACHqY,EAAS9qB,KAAK08C,QAAQK,aAAe,EACrC2G,EAAO1jD,KAAKwoB,IACXk7B,GAAK1wC,OACR0wC,EAAKiP,OAAOxsC,GAEVu9B,EAAK1wC,MAAQ0wC,EAAKzwC,QACpBT,EAAIkxC,EAAKlxC,EAAIkxC,EAAK1wC,MAAQ,EAC1BP,EAAIixC,EAAKjxC,EAAIqY,IAGbtY,EAAIkxC,EAAKlxC,EAAIsY,EACbrY,EAAIixC,EAAKjxC,EAAIixC,EAAKzwC,OAAS,GAE7BjT,KAAK4yD,QAAQzsC,EAAK3T,EAAGC,EAAGqY,GACxBnY,EAAQ3S,KAAK6yD,eAAergD,EAAGC,EAAGqY,EAAQ,IAC1C9qB,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,KAUhDvP,EAAKyQ,UAAU0+C,cAAgB,WAC7B,MAAqB,IAAjBryD,KAAK4vC,SACC7qC,KAAKiI,IAAIjI,KAAKwG,IAAIvL,KAAK0wD,cAAe1wD,KAAK6O,QAAQ0X,UAAW,GAAIvmB,KAAK8yD,iBAG7D,GAAd9yD,KAAK+L,MACAhH,KAAKiI,IAAIjI,KAAKwG,IAAIvL,KAAK6O,QAAQstC,WAAYn8C,KAAK6O,QAAQ0X,UAAW,GAAIvmB,KAAK8yD,iBAG5E/tD,KAAKiI,IAAIhN,KAAK6O,QAAQmE,MAAO,GAAIhT,KAAK8yD,kBAKnD5vD,EAAKyQ,UAAUo/C,mBAAqB,WAClC,GAAIC,GAAO,KACPC,EAAO,KACP3O,EAAStkD,KAAK6O,QAAQmwC,aAAaE,UACnCv4C,EAAO3G,KAAK6O,QAAQmwC,aAAar4C,KAEjCqX,EAAKjZ,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GACpCyL,EAAKlZ,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EA2JxC,OA1JY,YAAR9L,GAA8B,iBAARA,EACpB5B,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAAKzN,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,IACjEzS,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EACpBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GACxBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,GAEvBje,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAC7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,GAGzBje,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,IACzBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GACxBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,GAEvBje,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAC7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,IAGtB,YAARtX,IACFqsD,EAAY1O,EAASrmC,EAAdD,EAAmBhe,KAAKwoB,KAAKhW,EAAIwgD,IAGnCjuD,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAAKzN,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,KACtEzS,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EACpBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GACxBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,GAEvBhe,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAC7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,GAGzBhe,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,IACzBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GACxBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,GAEvBhe,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAC7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,IAGtB,YAARrX,IACFssD,EAAY3O,EAAStmC,EAAdC,EAAmBje,KAAKwoB,KAAK/V,EAAIwgD,IAI7B,iBAARtsD,EACH5B,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAAKzN,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,IACrEugD,EAAOhzD,KAAKwoB,KAAKhW,EAEfygD,EADEjzD,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EACjBzS,KAAKyoB,GAAGhW,GAAK,EAAE6xC,GAAUrmC,EAGzBje,KAAKyoB,GAAGhW,GAAK,EAAE6xC,GAAUrmC,GAG3BlZ,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAAKzN,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,KAExEugD,EADEhzD,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,EACjBxS,KAAKyoB,GAAGjW,GAAK,EAAE8xC,GAAUtmC,EAGzBhe,KAAKyoB,GAAGjW,GAAK,EAAE8xC,GAAUtmC,EAElCi1C,EAAOjzD,KAAKwoB,KAAK/V,GAGJ,cAAR9L,GAELqsD,EADEhzD,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,EACjBxS,KAAKyoB,GAAGjW,GAAK,EAAE8xC,GAAUtmC,EAGzBhe,KAAKyoB,GAAGjW,GAAK,EAAE8xC,GAAUtmC,EAElCi1C,EAAOjzD,KAAKwoB,KAAK/V,GAEF,YAAR9L,GACPqsD,EAAOhzD,KAAKwoB,KAAKhW,EAEfygD,EADEjzD,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EACjBzS,KAAKyoB,GAAGhW,GAAK,EAAE6xC,GAAUrmC,EAGzBje,KAAKyoB,GAAGhW,GAAK,EAAE6xC,GAAUrmC,GAI9BlZ,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAAKzN,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,GACjEzS,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EACpBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAExBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,EAC9B+0C,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,GAE/BhzD,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAE7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,EAC9B+0C,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,EAAOhzD,KAAKyoB,GAAGjW,EAAGwgD,GAGhChzD,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,IACzBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAExBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,EAC9B+0C,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,GAE/BhzD,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAE7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAASrmC,EAC9Bg1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAASrmC,EAC9B+0C,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,EAAOhzD,KAAKyoB,GAAGjW,EAAIwgD,IAInCjuD,KAAKklB,IAAIjqB,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAAKzN,KAAKklB,IAAIjqB,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,KACtEzS,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,EACpBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAExBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,GAE/BjzD,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAE7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,GAGjCjzD,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,IACzBzS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAExBwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,GAE/BjzD,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,IAE7BwgD,EAAOhzD,KAAKwoB,KAAKhW,EAAI8xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKwoB,KAAK/V,EAAI6xC,EAAStmC,EAC9Bi1C,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,EAAOjzD,KAAKyoB,GAAGhW,EAAIwgD,MAOtCzgD,EAAEwgD,EAAMvgD,EAAEwgD,IAQpB/vD,EAAKyQ,UAAU2+C,MAAQ,SAAUnsC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAOjnB,KAAKwoB,KAAKhW,EAAGxS,KAAKwoB,KAAK/V,GACO,GAArCzS,KAAK6O,QAAQmwC,aAAalwC,QAAiB,CAC7C,GAAyC,GAArC9O,KAAK6O,QAAQmwC,aAAaC,QAAkB,CAC9C,GAAI4M,GAAM7rD,KAAK+yD,oBACf,OAAa,OAATlH,EAAIr5C,GACN2T,EAAIe,OAAOlnB,KAAKyoB,GAAGjW,EAAGxS,KAAKyoB,GAAGhW,GAC9B0T,EAAIlH,SACG,OAKPkH,EAAI+sC,iBAAiBrH,EAAIr5C,EAAEq5C,EAAIp5C,EAAEzS,KAAKyoB,GAAGjW,EAAGxS,KAAKyoB,GAAGhW,GACpD0T,EAAIlH,SACG4sC,GAMT,MAFA1lC,GAAI+sC,iBAAiBlzD,KAAK6rD,IAAIr5C,EAAExS,KAAK6rD,IAAIp5C,EAAEzS,KAAKyoB,GAAGjW,EAAGxS,KAAKyoB,GAAGhW,GAC9D0T,EAAIlH,SACGjf,KAAK6rD,IAMd,MAFA1lC,GAAIe,OAAOlnB,KAAKyoB,GAAGjW,EAAGxS,KAAKyoB,GAAGhW,GAC9B0T,EAAIlH,SACG,MAYX/b,EAAKyQ,UAAUi/C,QAAU,SAAUzsC,EAAK3T,EAAGC,EAAGqY,GAE5C3E,EAAIa,YACJb,EAAI4E,IAAIvY,EAAGC,EAAGqY,EAAQ,EAAG,EAAI/lB,KAAKimB,IAAI,GACtC7E,EAAIlH,UAWN/b,EAAKyQ,UAAU++C,OAAS,SAAUvsC,EAAKwC,EAAMnW,EAAGC,GAC9C,GAAIkW,EAAM,CACRxC,EAAIQ,MAAS3mB,KAAKwoB,KAAKonB,UAAY5vC,KAAKyoB,GAAGmnB,SAAY,QAAU,IACjE5vC,KAAK6O,QAAQ8sC,SAAW,MAAQ37C,KAAK6O,QAAQ+sC,QAC7C,IAAIgV,EAEJ,IAAuB,GAAnB5wD,KAAK6wD,WAAoB,CAC3B,GAAIvrB,GAAQrhC,OAAO0kB,GAAM5gB,MAAM,MAC3BorD,EAAY7tB,EAAM9/B,OAClBm2C,EAAY53C,OAAO/D,KAAK6O,QAAQ8sC,UAAY,CAChDiV,GAAQn+C,GAAK,EAAI0gD,GAAa,EAAIxX,CAGlC,KAAK,GADD3oC,GAAQmT,EAAIitC,YAAY9tB,EAAM,IAAItyB,MAC7B3N,EAAI,EAAO8tD,EAAJ9tD,EAAeA,IAAK,CAClC,GAAIqhB,GAAYP,EAAIitC,YAAY9tB,EAAMjgC,IAAI2N,KAC1CA,GAAQ0T,EAAY1T,EAAQ0T,EAAY1T,EAE1C,GAAIC,GAASjT,KAAK6O,QAAQ8sC,SAAWwX,EACjC7rD,EAAOkL,EAAIQ,EAAQ,EACnBtL,EAAM+K,EAAIQ,EAAS,CAGvBjT,MAAK2wD,iBAAmBjpD,IAAIA,EAAIJ,KAAKA,EAAK0L,MAAMA,EAAMC,OAAOA,EAAO29C,MAAMA,GAI9CvqD,SAA1BrG,KAAK6O,QAAQgtC,UAAoD,OAA1B77C,KAAK6O,QAAQgtC,UAA+C,SAA1B77C,KAAK6O,QAAQgtC,WACxF11B,EAAIiB,UAAYpnB,KAAK6O,QAAQgtC,SAC7B11B,EAAIktC,SAASrzD,KAAK2wD,gBAAgBrpD,KAChCtH,KAAK2wD,gBAAgBjpD,IACrB1H,KAAK2wD,gBAAgB39C,MACrBhT,KAAK2wD,gBAAgB19C,SAIzBkT,EAAIiB,UAAYpnB,KAAK6O,QAAQ6sC,WAAa,QAC1Cv1B,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAgB,SACpBipC,EAAQ5wD,KAAK2wD,gBAAgBC,KAC7B,KAAK,GAAIvrD,GAAI,EAAO8tD,EAAJ9tD,EAAeA,IAC7B8gB,EAAIyB,SAAS0d,EAAMjgC,GAAImN,EAAGo+C,GAC1BA,GAASjV,IAcfz4C,EAAKyQ,UAAU89C,cAAgB,SAAStrC,GAERA,EAAIY,YAAb,GAAjB/mB,KAAK4vC,SAAuC5vC,KAAK6O,QAAQlE,MAAMmB,UAC5C,GAAd9L,KAAK+L,MAAkC/L,KAAK6O,QAAQlE,MAAMoB,MACnB/L,KAAK6O,QAAQlE,MAAMA,MAEnEwb,EAAIO,UAAY1mB,KAAKqyD,eAErB,IAAIxG,GAAM,IAEV,IAAoBxlD,SAAhB8f,EAAImtC,SAA6CjtD,SAApB8f,EAAIotC,YAA2B,CAE9D,GAAIC,IAAW,EAEbA,GAD+BntD,SAA7BrG,KAAK6O,QAAQwtC,KAAK72C,QAAkDa,SAA1BrG,KAAK6O,QAAQwtC,KAAKC,KACnDt8C,KAAK6O,QAAQwtC,KAAK72C,OAAOxF,KAAK6O,QAAQwtC,KAAKC,MAG3C,EAAE,GAIgB,mBAApBn2B,GAAIotC,aACbptC,EAAIotC,YAAYC,GAChBrtC,EAAIstC,eAAiB,IAGrBttC,EAAImtC,QAAUE,EACdrtC,EAAIutC,cAAgB,GAItB7H,EAAM7rD,KAAKsyD,MAAMnsC,GAGc,mBAApBA,GAAIotC,aACbptC,EAAIotC,aAAa,IACjBptC,EAAIstC,eAAiB,IAGrBttC,EAAImtC,SAAW,GACfntC,EAAIutC,cAAgB,OAKtBvtC,GAAIa,YACJb,EAAIwtC,QAAU,QACsBttD,SAAhCrG,KAAK6O,QAAQwtC,KAAKE,UAEpBp2B,EAAIytC,WAAW5zD,KAAKwoB,KAAKhW,EAAExS,KAAKwoB,KAAK/V,EAAEzS,KAAKyoB,GAAGjW,EAAExS,KAAKyoB,GAAGhW,GACpDzS,KAAK6O,QAAQwtC,KAAK72C,OAAOxF,KAAK6O,QAAQwtC,KAAKC,IAAIt8C,KAAK6O,QAAQwtC,KAAKE,UAAUv8C,KAAK6O,QAAQwtC,KAAKC,MAE9Dj2C,SAA7BrG,KAAK6O,QAAQwtC,KAAK72C,QAAkDa,SAA1BrG,KAAK6O,QAAQwtC,KAAKC,IAEnEn2B,EAAIytC,WAAW5zD,KAAKwoB,KAAKhW,EAAExS,KAAKwoB,KAAK/V,EAAEzS,KAAKyoB,GAAGjW,EAAExS,KAAKyoB,GAAGhW,GACpDzS,KAAK6O,QAAQwtC,KAAK72C,OAAOxF,KAAK6O,QAAQwtC,KAAKC,OAIhDn2B,EAAIc,OAAOjnB,KAAKwoB,KAAKhW,EAAGxS,KAAKwoB,KAAK/V,GAClC0T,EAAIe,OAAOlnB,KAAKyoB,GAAGjW,EAAGxS,KAAKyoB,GAAGhW,IAEhC0T,EAAIlH,QAIN,IAAIjf,KAAK6nB,MAAO,CACd,GAAIlV,EACJ,IAAyC,GAArC3S,KAAK6O,QAAQmwC,aAAalwC,SAA0B,MAAP+8C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKvyD,KAAKwoB,KAAKhW,EAAIq5C,EAAIr5C,GAAK,IAAKxS,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,IAClEggD,EAAY,IAAK,IAAKxyD,KAAKwoB,KAAK/V,EAAIo5C,EAAIp5C,GAAK,IAAKzS,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,GACtEE,IAASH,EAAE+/C,EAAW9/C,EAAE+/C,OAGxB7/C,GAAQ3S,KAAKyyD,aAAa,GAE5BzyD,MAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,KAUhDvP,EAAKyQ,UAAU8+C,aAAe,SAAUoB,GACtC,OACErhD,GAAI,EAAIqhD,GAAc7zD,KAAKwoB,KAAKhW,EAAIqhD,EAAa7zD,KAAKyoB,GAAGjW,EACzDC,GAAI,EAAIohD,GAAc7zD,KAAKwoB,KAAK/V,EAAIohD,EAAa7zD,KAAKyoB,GAAGhW,IAa7DvP,EAAKyQ,UAAUk/C,eAAiB,SAAUrgD,EAAGC,EAAGqY,EAAQ+oC,GACtD,GAAI7I,GAA6B,GAApB6I,EAAa,EAAE,GAAS9uD,KAAKimB,EAC1C,QACExY,EAAGA,EAAIsY,EAAS/lB,KAAK4Y,IAAIqtC,GACzBv4C,EAAGA,EAAIqY,EAAS/lB,KAAKyY,IAAIwtC,KAW7B9nD,EAAKyQ,UAAU69C,iBAAmB,SAASrrC,GACzC,GAAIxT,EAOJ,IALqB,GAAjB3S,KAAK4vC,UAAqBzpB,EAAIY,YAAc/mB,KAAK6O,QAAQlE,MAAMmB,UAAWqa,EAAIiB,UAAYpnB,KAAK6O,QAAQlE,MAAMmB,WAC1F,GAAd9L,KAAK+L,OAAgBoa,EAAIY,YAAc/mB,KAAK6O,QAAQlE,MAAMoB,MAAWoa,EAAIiB,UAAYpnB,KAAK6O,QAAQlE,MAAMoB,QACnFoa,EAAIY,YAAc/mB,KAAK6O,QAAQlE,MAAMA,MAAWwb,EAAIiB,UAAYpnB,KAAK6O,QAAQlE,MAAMA,OACjHwb,EAAIO,UAAY1mB,KAAKqyD,gBAEjBryD,KAAKwoB,MAAQxoB,KAAKyoB,GAAI,CAExB,GAAIojC,GAAM7rD,KAAKsyD,MAAMnsC,GAEjB6kC,EAAQjmD,KAAK+uD,MAAO9zD,KAAKyoB,GAAGhW,EAAIzS,KAAKwoB,KAAK/V,EAAKzS,KAAKyoB,GAAGjW,EAAIxS,KAAKwoB,KAAKhW,GACrEhN,GAAU,GAAK,EAAIxF,KAAK6O,QAAQmE,OAAShT,KAAK6O,QAAQutC,gBAE1D,IAAyC,GAArCp8C,KAAK6O,QAAQmwC,aAAalwC,SAA0B,MAAP+8C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKvyD,KAAKwoB,KAAKhW,EAAIq5C,EAAIr5C,GAAK,IAAKxS,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,IAClEggD,EAAY,IAAK,IAAKxyD,KAAKwoB,KAAK/V,EAAIo5C,EAAIp5C,GAAK,IAAKzS,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,GACtEE,IAASH,EAAE+/C,EAAW9/C,EAAE+/C,OAGxB7/C,GAAQ3S,KAAKyyD,aAAa,GAG5BtsC,GAAI4tC,MAAMphD,EAAMH,EAAGG,EAAMF,EAAGu4C,EAAOxlD,GACnC2gB,EAAInH,OACJmH,EAAIlH,SAGAjf,KAAK6nB,OACP7nB,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,OAG3C,CAEH,GAAID,GAAGC,EACHqY,EAAS,IAAO/lB,KAAKiI,IAAI,IAAIhN,KAAK08C,QAAQK,cAC1C2G,EAAO1jD,KAAKwoB,IACXk7B,GAAK1wC,OACR0wC,EAAKiP,OAAOxsC,GAEVu9B,EAAK1wC,MAAQ0wC,EAAKzwC,QACpBT,EAAIkxC,EAAKlxC,EAAiB,GAAbkxC,EAAK1wC,MAClBP,EAAIixC,EAAKjxC,EAAIqY,IAGbtY,EAAIkxC,EAAKlxC,EAAIsY,EACbrY,EAAIixC,EAAKjxC,EAAkB,GAAdixC,EAAKzwC,QAEpBjT,KAAK4yD,QAAQzsC,EAAK3T,EAAGC,EAAGqY,EAGxB,IAAIkgC,GAAQ,GAAMjmD,KAAKimB,GACnBxlB,GAAU,GAAK,EAAIxF,KAAK6O,QAAQmE,OAAShT,KAAK6O,QAAQutC,gBAC1DzpC;EAAQ3S,KAAK6yD,eAAergD,EAAGC,EAAGqY,EAAQ,IAC1C3E,EAAI4tC,MAAMphD,EAAMH,EAAGG,EAAMF,EAAGu4C,EAAOxlD,GACnC2gB,EAAInH,OACJmH,EAAIlH,SAGAjf,KAAK6nB,QACPlV,EAAQ3S,KAAK6yD,eAAergD,EAAGC,EAAGqY,EAAQ,IAC1C9qB,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,MAclDvP,EAAKyQ,UAAU49C,WAAa,SAASprC,GAEd,GAAjBnmB,KAAK4vC,UAAqBzpB,EAAIY,YAAc/mB,KAAK6O,QAAQlE,MAAMmB,UAAWqa,EAAIiB,UAAYpnB,KAAK6O,QAAQlE,MAAMmB,WAC1F,GAAd9L,KAAK+L,OAAgBoa,EAAIY,YAAc/mB,KAAK6O,QAAQlE,MAAMoB,MAAWoa,EAAIiB,UAAYpnB,KAAK6O,QAAQlE,MAAMoB,QACnFoa,EAAIY,YAAc/mB,KAAK6O,QAAQlE,MAAMA,MAAWwb,EAAIiB,UAAYpnB,KAAK6O,QAAQlE,MAAMA,OAEjHwb,EAAIO,UAAY1mB,KAAKqyD,eAErB,IAAIrH,GAAOxlD,CAEX,IAAIxF,KAAKwoB,MAAQxoB,KAAKyoB,GAAI,CACxBuiC,EAAQjmD,KAAK+uD,MAAO9zD,KAAKyoB,GAAGhW,EAAIzS,KAAKwoB,KAAK/V,EAAKzS,KAAKyoB,GAAGjW,EAAIxS,KAAKwoB,KAAKhW,EACrE,IASIq5C,GATA7tC,EAAMhe,KAAKyoB,GAAGjW,EAAIxS,KAAKwoB,KAAKhW,EAC5ByL,EAAMje,KAAKyoB,GAAGhW,EAAIzS,KAAKwoB,KAAK/V,EAC5BuhD,EAAoBjvD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAE7Cg2C,EAAiBj0D,KAAKwoB,KAAK0rC,iBAAiB/tC,EAAK6kC,EAAQjmD,KAAKimB,IAC9DmpC,GAAmBH,EAAoBC,GAAkBD,EACzDpC,EAAQ,EAAoB5xD,KAAKwoB,KAAKhW,GAAK,EAAI2hD,GAAmBn0D,KAAKyoB,GAAGjW,EAC1Eq/C,EAAQ,EAAoB7xD,KAAKwoB,KAAK/V,GAAK,EAAI0hD,GAAmBn0D,KAAKyoB,GAAGhW,CAGrC,IAArCzS,KAAK6O,QAAQmwC,aAAaC,SAAwD,GAArCj/C,KAAK6O,QAAQmwC,aAAalwC,QACzE+8C,EAAM7rD,KAAK6rD,IAEiC,GAArC7rD,KAAK6O,QAAQmwC,aAAalwC,UACjC+8C,EAAM7rD,KAAK+yD,sBAG4B,GAArC/yD,KAAK6O,QAAQmwC,aAAalwC,SAA4B,MAAT+8C,EAAIr5C,IACnDw4C,EAAQjmD,KAAK+uD,MAAO9zD,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,EAAKzS,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,GACzDwL,EAAMhe,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,EACtByL,EAAMje,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,EACtBuhD,EAAoBjvD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAE/C,IAGI6zC,GAAIC,EAHJqC,EAAep0D,KAAKyoB,GAAGyrC,iBAAiB/tC,EAAK6kC,GAC7CqJ,GAAiBL,EAAoBI,GAAgBJ,CA6BzD,IA1ByC,GAArCh0D,KAAK6O,QAAQmwC,aAAalwC,SAA4B,MAAT+8C,EAAIr5C,GACpDs/C,GAAO,EAAIuC,GAAiBxI,EAAIr5C,EAAI6hD,EAAgBr0D,KAAKyoB,GAAGjW,EAC5Du/C,GAAO,EAAIsC,GAAiBxI,EAAIp5C,EAAI4hD,EAAgBr0D,KAAKyoB,GAAGhW,IAG3Dq/C,GAAO,EAAIuC,GAAiBr0D,KAAKwoB,KAAKhW,EAAI6hD,EAAgBr0D,KAAKyoB,GAAGjW,EAClEu/C,GAAO,EAAIsC,GAAiBr0D,KAAKwoB,KAAK/V,EAAI4hD,EAAgBr0D,KAAKyoB,GAAGhW,GAGpE0T,EAAIa,YACJb,EAAIc,OAAO2qC,EAAMC,GACwB,GAArC7xD,KAAK6O,QAAQmwC,aAAalwC,SAA4B,MAAT+8C,EAAIr5C,EACnD2T,EAAI+sC,iBAAiBrH,EAAIr5C,EAAEq5C,EAAIp5C,EAAEq/C,EAAKC,GAGtC5rC,EAAIe,OAAO4qC,EAAKC,GAElB5rC,EAAIlH,SAGJzZ,GAAU,GAAK,EAAIxF,KAAK6O,QAAQmE,OAAShT,KAAK6O,QAAQutC,iBACtDj2B,EAAI4tC,MAAMjC,EAAKC,EAAK/G,EAAOxlD,GAC3B2gB,EAAInH,OACJmH,EAAIlH,SAGAjf,KAAK6nB,MAAO,CACd,GAAIlV,EACJ,IAAyC,GAArC3S,KAAK6O,QAAQmwC,aAAalwC,SAA0B,MAAP+8C,EAAa,CAC5D,GAAI0G,GAAY,IAAK,IAAKvyD,KAAKwoB,KAAKhW,EAAIq5C,EAAIr5C,GAAK,IAAKxS,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,IAClEggD,EAAY,IAAK,IAAKxyD,KAAKwoB,KAAK/V,EAAIo5C,EAAIp5C,GAAK,IAAKzS,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,GACtEE,IAASH,EAAE+/C,EAAW9/C,EAAE+/C,OAGxB7/C,GAAQ3S,KAAKyyD,aAAa,GAE5BzyD,MAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,QAG3C,CAEH,GACID,GAAGC,EAAGshD,EADNrQ,EAAO1jD,KAAKwoB,KAEZsC,EAAS,IAAO/lB,KAAKiI,IAAI,IAAIhN,KAAK08C,QAAQK,aACzC2G,GAAK1wC,OACR0wC,EAAKiP,OAAOxsC,GAEVu9B,EAAK1wC,MAAQ0wC,EAAKzwC,QACpBT,EAAIkxC,EAAKlxC,EAAiB,GAAbkxC,EAAK1wC,MAClBP,EAAIixC,EAAKjxC,EAAIqY,EACbipC,GACEvhD,EAAGA,EACHC,EAAGixC,EAAKjxC,EACRu4C,MAAO,GAAMjmD,KAAKimB,MAIpBxY,EAAIkxC,EAAKlxC,EAAIsY,EACbrY,EAAIixC,EAAKjxC,EAAkB,GAAdixC,EAAKzwC,OAClB8gD,GACEvhD,EAAGkxC,EAAKlxC,EACRC,EAAGA,EACHu4C,MAAO,GAAMjmD,KAAKimB,KAGtB7E,EAAIa,YAEJb,EAAI4E,IAAIvY,EAAGC,EAAGqY,EAAQ,EAAG,EAAI/lB,KAAKimB,IAAI,GACtC7E,EAAIlH,QAGJ,IAAIzZ,IAAU,GAAK,EAAIxF,KAAK6O,QAAQmE,OAAShT,KAAK6O,QAAQutC,gBAC1Dj2B,GAAI4tC,MAAMA,EAAMvhD,EAAGuhD,EAAMthD,EAAGshD,EAAM/I,MAAOxlD,GACzC2gB,EAAInH,OACJmH,EAAIlH,SAGAjf,KAAK6nB,QACPlV,EAAQ3S,KAAK6yD,eAAergD,EAAGC,EAAGqY,EAAQ,IAC1C9qB,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAOlV,EAAMH,EAAGG,EAAMF,MAmBlDvP,EAAKyQ,UAAUu+C,mBAAqB,SAAUoC,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIprD,GAAc,CAClB,IAAIvJ,KAAKwoB,MAAQxoB,KAAKyoB,GACpB,GAAyC,GAArCzoB,KAAK6O,QAAQmwC,aAAalwC,QAAiB,CAC7C,GAAIkkD,GAAMC,CACV,IAAyC,GAArCjzD,KAAK6O,QAAQmwC,aAAalwC,SAAwD,GAArC9O,KAAK6O,QAAQmwC,aAAaC,QACzE+T,EAAOhzD,KAAK6rD,IAAIr5C,EAChBygD,EAAOjzD,KAAK6rD,IAAIp5C,MAEb,CACH,GAAIo5C,GAAM7rD,KAAK+yD,oBACfC,GAAOnH,EAAIr5C,EACXygD,EAAOpH,EAAIp5C,EAEb,GACIsS,GACA1f,EAAE6I,EAAEsE,EAAEC,EAAGmiD,EAAOC,EAFhBC,EAAc,GAGlB,KAAKzvD,EAAI,EAAO,GAAJA,EAAQA,IAClB6I,EAAI,GAAI7I,EACRmN,EAAIzN,KAAK0uB,IAAI,EAAEvlB,EAAE,GAAGomD,EAAM,EAAEpmD,GAAG,EAAIA,GAAI8kD,EAAOjuD,KAAK0uB,IAAIvlB,EAAE,GAAGsmD,EAC5D/hD,EAAI1N,KAAK0uB,IAAI,EAAEvlB,EAAE,GAAGqmD,EAAM,EAAErmD,GAAG,EAAIA,GAAI+kD,EAAOluD,KAAK0uB,IAAIvlB,EAAE,GAAGumD,EACxDpvD,EAAI,IACN0f,EAAW/kB,KAAK+0D,mBAAmBH,EAAMC,EAAMriD,EAAEC,EAAGiiD,EAAGC,GACvDG,EAAyBA,EAAX/vC,EAAyBA,EAAW+vC,GAEpDF,EAAQpiD,EAAGqiD,EAAQpiD,CAErBlJ,GAAcurD,MAGdvrD,GAAcvJ,KAAK+0D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIniD,GAAGC,EAAGuL,EAAIC,EACV6M,EAAS,IAAO9qB,KAAK08C,QAAQK,aAC7B2G,EAAO1jD,KAAKwoB,IACZk7B,GAAK1wC,MAAQ0wC,EAAKzwC,QACpBT,EAAIkxC,EAAKlxC,EAAI,GAAMkxC,EAAK1wC,MACxBP,EAAIixC,EAAKjxC,EAAIqY,IAGbtY,EAAIkxC,EAAKlxC,EAAIsY,EACbrY,EAAIixC,EAAKjxC,EAAI,GAAMixC,EAAKzwC,QAE1B+K,EAAKxL,EAAIkiD,EACTz2C,EAAKxL,EAAIkiD,EACTprD,EAAcxE,KAAKklB,IAAIllB,KAAKqqB,KAAKpR,EAAGA,EAAKC,EAAGA,GAAM6M,GAGpD,MAAI9qB,MAAK2wD,gBAAgBrpD,KAAOotD,GAC9B10D,KAAK2wD,gBAAgBrpD,KAAOtH,KAAK2wD,gBAAgB39C,MAAQ0hD,GACzD10D,KAAK2wD,gBAAgBjpD,IAAMitD,GAC3B30D,KAAK2wD,gBAAgBjpD,IAAM1H,KAAK2wD,gBAAgB19C,OAAS0hD,EAClD,EAGAprD,GAIXrG,EAAKyQ,UAAUohD,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,IAAI3iD,GAAI8hD,EAAKa,EAAIH,EACfviD,EAAI8hD,EAAKY,EAAIF,EACbj3C,EAAKxL,EAAIkiD,EACTz2C,EAAKxL,EAAIkiD,CAQX,OAAO5vD,MAAKqqB,KAAKpR,EAAGA,EAAKC,EAAGA,IAQ9B/a,EAAKyQ,UAAUyuB,SAAW,SAAS/lB,GACjCrc,KAAK8yD,gBAAkB,EAAIz2C,GAI7BnZ,EAAKyQ,UAAUo6B,OAAS,WACtB/tC,KAAK4vC,UAAW,GAGlB1sC,EAAKyQ,UAAUm6B,SAAW,WACxB9tC,KAAK4vC,UAAW,GAGlB1sC,EAAKyQ,UAAUs7C,mBAAqB,WACjB,OAAbjvD,KAAK6rD,KAA8B,OAAd7rD,KAAKwoB,MAA6B,OAAZxoB,KAAKyoB,KAClDzoB,KAAK6rD,IAAIr5C,EAAI,IAAOxS,KAAKwoB,KAAKhW,EAAIxS,KAAKyoB,GAAGjW,GAC1CxS,KAAK6rD,IAAIp5C,EAAI,IAAOzS,KAAKwoB,KAAK/V,EAAIzS,KAAKyoB,GAAGhW,KAQ9CvP,EAAKyQ,UAAUo5C,kBAAoB,SAAS5mC,GAC1C,GAAgC,GAA5BnmB,KAAKkxD,oBAA6B,CACpC,GAA+B,OAA3BlxD,KAAKmxD,aAAa3oC,MAA0C,OAAzBxoB,KAAKmxD,aAAa1oC,GAAa,CACpE,GAAI2sC,GAAa,cAAc/gD,OAAOrU,KAAKK,IACvCg1D,EAAW,YAAYhhD,OAAOrU,KAAKK,IACnCu/C,GACYxE,OAAO1oC,MAAM,GAAIoY,OAAO,GACxB4xB,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAclrC,MAAM,EAAGC,OAAQ,EAAG6X,OAAO,IAEhG9qB,MAAKmxD,aAAa3oC,KAAO,GAAInlB,IAC1BhD,GAAG+0D,EACF5Z,MAAM,MACJ7wC,OAAOiB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEg0C,GACV5/C,KAAKmxD,aAAa1oC,GAAK,GAAIplB,IACxBhD,GAAGg1D,EACF7Z,MAAM,MACN7wC,OAAOiB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEg0C,GAG2B,GAAnC5/C,KAAKmxD,aAAa3oC,KAAKonB,UAAsD,GAAjC5vC,KAAKmxD,aAAa1oC,GAAGmnB,WACnE5vC,KAAKmxD,aAAaC,UAAYpxD,KAAKs1D,wBAAwBnvC,GAC3DnmB,KAAKmxD,aAAa3oC,KAAKhW,EAAIxS,KAAKmxD,aAAaC,UAAU5oC,KAAKhW,EAC5DxS,KAAKmxD,aAAa3oC,KAAK/V,EAAIzS,KAAKmxD,aAAaC,UAAU5oC,KAAK/V,EAC5DzS,KAAKmxD,aAAa1oC,GAAGjW,EAAIxS,KAAKmxD,aAAaC,UAAU3oC,GAAGjW,EACxDxS,KAAKmxD,aAAa1oC,GAAGhW,EAAIzS,KAAKmxD,aAAaC,UAAU3oC,GAAGhW,GAG1DzS,KAAKmxD,aAAa3oC,KAAKokC,KAAKzmC,GAC5BnmB,KAAKmxD,aAAa1oC,GAAGmkC,KAAKzmC,OAG1BnmB,MAAKmxD,cAAgB3oC,KAAK,KAAMC,GAAG,KAAM2oC,eAQ7CluD,EAAKyQ,UAAU4hD,oBAAsB,WACnCv1D,KAAKkxD,qBAAsB,GAO7BhuD,EAAKyQ,UAAU6hD,qBAAuB,WACpCx1D,KAAKkxD,qBAAsB,GAU7BhuD,EAAKyQ,UAAU8hD,wBAA0B,SAASjjD,EAAEC,GAClD,GAAI2+C,GAAYpxD,KAAKmxD,aAAaC,UAC9BsE,EAAe3wD,KAAKqqB,KAAKrqB,KAAK0uB,IAAIjhB,EAAI4+C,EAAU5oC,KAAKhW,EAAE,GAAKzN,KAAK0uB,IAAIhhB,EAAI2+C,EAAU5oC,KAAK/V,EAAE,IAC1FkjD,EAAe5wD,KAAKqqB,KAAKrqB,KAAK0uB,IAAIjhB,EAAI4+C,EAAU3oC,GAAGjW,EAAI,GAAKzN,KAAK0uB,IAAIhhB,EAAI2+C,EAAU3oC,GAAGhW,EAAI,GAE9F,OAAmB,IAAfijD,GACF11D,KAAKqxD,cAAgBrxD,KAAKwoB,KAC1BxoB,KAAKwoB,KAAOxoB,KAAKmxD,aAAa3oC,KACvBxoB,KAAKmxD,aAAa3oC,MAEL,GAAbmtC,GACP31D,KAAKqxD,cAAgBrxD,KAAKyoB,GAC1BzoB,KAAKyoB,GAAKzoB,KAAKmxD,aAAa1oC,GACrBzoB,KAAKmxD,aAAa1oC,IAGlB,MASXvlB,EAAKyQ,UAAUiiD,qBAAuB,WACG,GAAnC51D,KAAKmxD,aAAa3oC,KAAKonB,WACzB5vC,KAAKwoB,KAAOxoB,KAAKqxD,cACjBrxD,KAAKqxD,cAAgB,KACrBrxD,KAAKmxD,aAAa3oC,KAAKslB,YAEY,GAAjC9tC,KAAKmxD,aAAa1oC,GAAGmnB,WACvB5vC,KAAKyoB,GAAKzoB,KAAKqxD,cACfrxD,KAAKqxD,cAAgB,KACrBrxD,KAAKmxD,aAAa1oC,GAAGqlB,aAUzB5qC,EAAKyQ,UAAU2hD,wBAA0B,SAASnvC,GAChD,GASI0lC,GATAb,EAAQjmD,KAAK+uD,MAAO9zD,KAAKyoB,GAAGhW,EAAIzS,KAAKwoB,KAAK/V,EAAKzS,KAAKyoB,GAAGjW,EAAIxS,KAAKwoB,KAAKhW,GACrEwL,EAAMhe,KAAKyoB,GAAGjW,EAAIxS,KAAKwoB,KAAKhW,EAC5ByL,EAAMje,KAAKyoB,GAAGhW,EAAIzS,KAAKwoB,KAAK/V,EAC5BuhD,EAAoBjvD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAC7Cg2C,EAAiBj0D,KAAKwoB,KAAK0rC,iBAAiB/tC,EAAK6kC,EAAQjmD,KAAKimB,IAC9DmpC,GAAmBH,EAAoBC,GAAkBD,EACzDpC,EAAQ,EAAoB5xD,KAAKwoB,KAAKhW,GAAK,EAAI2hD,GAAmBn0D,KAAKyoB,GAAGjW,EAC1Eq/C,EAAQ,EAAoB7xD,KAAKwoB,KAAK/V,GAAK,EAAI0hD,GAAmBn0D,KAAKyoB,GAAGhW,CAGrC,IAArCzS,KAAK6O,QAAQmwC,aAAaC,SAAwD,GAArCj/C,KAAK6O,QAAQmwC,aAAalwC,QACzE+8C,EAAM7rD,KAAK6rD,IAEiC,GAArC7rD,KAAK6O,QAAQmwC,aAAalwC,UACjC+8C,EAAM7rD,KAAK+yD,sBAG4B,GAArC/yD,KAAK6O,QAAQmwC,aAAalwC,SAA4B,MAAT+8C,EAAIr5C,IACnDw4C,EAAQjmD,KAAK+uD,MAAO9zD,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,EAAKzS,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,GACzDwL,EAAMhe,KAAKyoB,GAAGjW,EAAIq5C,EAAIr5C,EACtByL,EAAMje,KAAKyoB,GAAGhW,EAAIo5C,EAAIp5C,EACtBuhD,EAAoBjvD,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAE/C,IAGI6zC,GAAIC,EAHJqC,EAAep0D,KAAKyoB,GAAGyrC,iBAAiB/tC,EAAK6kC,GAC7CqJ,GAAiBL,EAAoBI,GAAgBJ,CAYzD,OATyC,IAArCh0D,KAAK6O,QAAQmwC,aAAalwC,SAA4B,MAAT+8C,EAAIr5C,GACnDs/C,GAAO,EAAIuC,GAAiBxI,EAAIr5C,EAAI6hD,EAAgBr0D,KAAKyoB,GAAGjW,EAC5Du/C,GAAO,EAAIsC,GAAiBxI,EAAIp5C,EAAI4hD,EAAgBr0D,KAAKyoB,GAAGhW,IAG5Dq/C,GAAO,EAAIuC,GAAiBr0D,KAAKwoB,KAAKhW,EAAI6hD,EAAgBr0D,KAAKyoB,GAAGjW,EAClEu/C,GAAO,EAAIsC,GAAiBr0D,KAAKwoB,KAAK/V,EAAI4hD,EAAgBr0D,KAAKyoB,GAAGhW,IAG5D+V,MAAMhW,EAAEo/C,EAAMn/C,EAAEo/C,GAAOppC,IAAIjW,EAAEs/C,EAAIr/C,EAAEs/C,KAG7ClyD,EAAOD,QAAUsD,GAIb,SAASrD,EAAQD,EAASM,GAQ9B,QAASiD,KACPnD,KAAKgX,QACLhX,KAAK61D,aAAe,EARtB,GAAIl1D,GAAOT,EAAoB,EAe/BiD,GAAO2yD,UACJjqD,OAAQ,UAAWD,WAAY,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,aAO3IzI,EAAOwQ,UAAUqD,MAAQ,WACvBhX,KAAK8zB,UACL9zB,KAAK8zB,OAAOtuB,OAAS,WAEnB,GAAIH,GAAI,CACR,KAAM,GAAI3E,KAAKV,MACTA,KAAK2F,eAAejF,IACtB2E,GAGJ,OAAOA,KAWXlC,EAAOwQ,UAAU6B,IAAM,SAAUswC,GAC/B,GAAIpzC,GAAQ1S,KAAK8zB,OAAOgyB,EACxB,IAAaz/C,QAATqM,EAAoB,CAEtB,GAAIvK,GAAQnI,KAAK61D,aAAe1yD,EAAO2yD,QAAQtwD,MAC/CxF,MAAK61D,eACLnjD,KACAA,EAAM/H,MAAQxH,EAAO2yD,QAAQ3tD,GAC7BnI,KAAK8zB,OAAOgyB,GAAapzC,EAG3B,MAAOA,IAUTvP,EAAOwQ,UAAUD,IAAM,SAAUoyC,EAAWx4C,GAK1C,MAJAtN,MAAK8zB,OAAOgyB,GAAax4C,EACrBA,EAAM3C,QACR2C,EAAM3C,MAAQhK,EAAK+J,WAAW4C,EAAM3C,QAE/B2C,GAGTzN,EAAOD,QAAUuD,GAKb,SAAStD,GAMb,QAASuD,KACPpD,KAAK2gD,UAEL3gD,KAAKsI,SAAWjC,OAQlBjD,EAAOuQ,UAAUitC,kBAAoB,SAASt4C,GAC5CtI,KAAKsI,SAAWA,GASlBlF,EAAOuQ,UAAUoiD,KAAO,SAASC,EAAKC,GACpC,GAAIC,GAAMl2D,KAAK2gD,OAAOqV,EACtB,IAAW3vD,QAAP6vD,EAAkB,CAEpB,GAAIvV,GAAS3gD,IACbk2D,GAAM,GAAIC,OACVn2D,KAAK2gD,OAAOqV,GAAOE,EACnBA,EAAIE,OAAS,WACPzV,EAAOr4C,UACTq4C,EAAOr4C,SAAStI,OAIpBk2D,EAAIG,QAAU,WACfr2D,KAAKwjD,IAAMyS,EACPtV,EAAOr4C,UACZq4C,EAAOr4C,SAAStI,OAIdk2D,EAAI1S,IAAMwS,EAGZ,MAAOE,IAGTr2D,EAAOD,QAAUwD,GAKb,SAASvD,EAAQD,EAASM,GA6B9B,QAASmD,GAAKkoD,EAAY+K,EAAWC,EAAWhG,GAC9C,GAAI3Q,GAAYj/C,EAAK0N,uBAAuB,SAASkiD,EACrDvwD,MAAK6O,QAAU+wC,EAAUxE,MAEzBp7C,KAAK4vC,UAAW,EAChB5vC,KAAK+L,OAAQ,EAEb/L,KAAKi8C,SACLj8C,KAAK+rD,gBACL/rD,KAAKw2D,iBAELx2D,KAAKy2D,kBAAoB,EAGzBz2D,KAAKK,GAAKgG,OACVrG,KAAKwS,EAAI,KACTxS,KAAKyS,EAAI,KACTzS,KAAKsvD,gBAAiB,EACtBtvD,KAAKuvD,gBAAiB,EACtBvvD,KAAKmoD,QAAS,EACdnoD,KAAKooD,QAAS,EACdpoD,KAAK02D,qBAAsB,EAC3B12D,KAAK22D,kBAAsB,EAC3B32D,KAAK42D,gBAAkBrG,EAAiBnV,MAAMtwB,OAC9C9qB,KAAK62D,aAAc,EACnB72D,KAAK87C,MAAQ,GACb97C,KAAK82D,kBAAmB,EACxB92D,KAAK+2D,qBAAsB,EAC3B/2D,KAAK2wD,iBAAmBjpD,IAAI,EAAEJ,KAAK,EAAE0L,MAAM,EAAEC,OAAO,EAAE29C,MAAM,GAG5D5wD,KAAKs2D,UAAYA,EACjBt2D,KAAKu2D,UAAYA,EAGjBv2D,KAAKg3D,GAAK,EACVh3D,KAAKi3D,GAAK,EACVj3D,KAAKk3D,GAAK,EACVl3D,KAAKm3D,GAAK,EACVn3D,KAAKi9C,QAAUsT,EAAiB7T,QAAQO,QACxCj9C,KAAKmtD,WAAa36C,EAAE,KAAKC,EAAE,MAE3BzS,KAAKsrD,cAAcC,EAAY3L,GAG/B5/C,KAAKo3D,eACLp3D,KAAKq3D,mBAAqB,EAC1Br3D,KAAKs3D,eAAiB,EACtBt3D,KAAKu3D,uBAA0BhH,EAAiBlT,WAAWa,YAAYlrC,MACvEhT,KAAKw3D,wBAA0BjH,EAAiBlT,WAAWa,YAAYjrC,OACvEjT,KAAKy3D,wBAA0BlH,EAAiBlT,WAAWa,YAAYpzB,OACvE9qB,KAAKm+C,sBAAwBoS,EAAiBlT,WAAWc,sBACzDn+C,KAAK03D,gBAAkB,EAGvB13D,KAAK8yD,gBAAkB,EACvB9yD,KAAK23D,aAAe,EACpB33D,KAAK8hD,eAAiBtvC,EAAK,KAAMC,EAAK,MACtCzS,KAAK+hD,mBAAqBvvC,EAAM,IAAKC,EAAM,KAC3CzS,KAAK+uD,aAAe,KAtFtB,GAAIpuD,GAAOT,EAAoB,EA4F/BmD,GAAKsQ,UAAUyjD,aAAe,WAE5Bp3D,KAAK43D,eAAiBvxD,OACtBrG,KAAK63D,YAAc,EACnB73D,KAAK83D,kBACL93D,KAAK+3D,kBACL/3D,KAAKg4D,oBAOP30D,EAAKsQ,UAAU+9C,WAAa,SAASpH,GACH,IAA5BtqD,KAAKi8C,MAAMz1C,QAAQ8jD,IACrBtqD,KAAKi8C,MAAMj0C,KAAKsiD,GAEqB,IAAnCtqD,KAAK+rD,aAAavlD,QAAQ8jD,IAC5BtqD,KAAK+rD,aAAa/jD,KAAKsiD,GAEzBtqD,KAAKq3D,mBAAqBr3D,KAAK+rD,aAAavmD,QAO9CnC,EAAKsQ,UAAUg+C,WAAa,SAASrH,GACnC,GAAIniD,GAAQnI,KAAKi8C,MAAMz1C,QAAQ8jD,EAClB,KAATniD,GACFnI,KAAKi8C,MAAM7zC,OAAOD,EAAO,GAE3BA,EAAQnI,KAAK+rD,aAAavlD,QAAQ8jD,GACrB,IAATniD,GACFnI,KAAK+rD,aAAa3jD,OAAOD,EAAO,GAElCnI,KAAKq3D,mBAAqBr3D,KAAK+rD,aAAavmD,QAS9CnC,EAAKsQ,UAAU23C,cAAgB,SAASC,EAAY3L,GAClD,GAAK2L,EAAL,CAIA,GAAIj9C,IAAU,cAAc,sBAAsB,QAAQ,QAAQ,cAAc,SAAS,YACvF,WAAW,WAAW,WAAW,QAAQ,OAkB3C,IAhBA3N,EAAKqF,oBAAoBsI,EAAQtO,KAAK6O,QAAS08C,GAGzBllD,SAAlBklD,EAAWlrD,KAA0BL,KAAKK,GAAKkrD,EAAWlrD,IACrCgG,SAArBklD,EAAW1jC,QAA0B7nB,KAAK6nB,MAAQ0jC,EAAW1jC,MAAO7nB,KAAKi4D,cAAgB1M,EAAW1jC,OAC/ExhB,SAArBklD,EAAWznB,QAA0B9jC,KAAK8jC,MAAQynB,EAAWznB,OAC5Cz9B,SAAjBklD,EAAW/4C,IAA0BxS,KAAKwS,EAAI+4C,EAAW/4C,GACxCnM,SAAjBklD,EAAW94C,IAA0BzS,KAAKyS,EAAI84C,EAAW94C,GACpCpM,SAArBklD,EAAWrkD,QAA0BlH,KAAKkH,MAAQqkD,EAAWrkD,OACxCb,SAArBklD,EAAWzP,QAA0B97C,KAAK87C,MAAQyP,EAAWzP,MAAO97C,KAAK82D,kBAAmB,GAGzDzwD,SAAnCklD,EAAWmL,sBAAoC12D,KAAK02D,oBAAsBnL,EAAWmL,qBAClDrwD,SAAnCklD,EAAWoL,mBAAoC32D,KAAK22D,iBAAsBpL,EAAWoL,kBAClDtwD,SAAnCklD,EAAW2M,kBAAoCl4D,KAAKk4D,gBAAsB3M,EAAW2M,iBAEzE7xD,SAAZrG,KAAKK,GACP,KAAM,sBAIR,IAAkC,gBAAvBL,MAAK6O,QAAQ6D,OAAqD,gBAAvB1S,MAAK6O,QAAQ6D,OAA4C,IAAtB1S,KAAK6O,QAAQ6D,MAAc,CAClH,GAAIylD,GAAWn4D,KAAKu2D,UAAU/gD,IAAIxV,KAAK6O,QAAQ6D,MAC/C,KAAK,GAAIhN,KAAQyyD,GACXA,EAASxyD,eAAeD,KAC1B1F,KAAK6O,QAAQnJ,GAAQyyD,EAASzyD,IAUpC,GAH0BW,SAAtBklD,EAAWzgC,SAA+B9qB,KAAK42D,gBAAkB52D,KAAK6O,QAAQic,QACzDzkB,SAArBklD,EAAW5gD,QAA+B3K,KAAK6O,QAAQlE,MAAQhK,EAAK+J,WAAW6gD,EAAW5gD,QAEpEtE,SAAtBrG,KAAK6O,QAAQ4sC,OAA2C,IAArBz7C,KAAK6O,QAAQ4sC,MAAY,CAC9D,IAAIz7C,KAAKs2D,UAIP,KAAM,uBAHNt2D,MAAKo4D,SAAWp4D,KAAKs2D,UAAUP,KAAK/1D,KAAK6O,QAAQ4sC,MAAOz7C,KAAK6O,QAAQwpD,aAkCzE,OA3BkChyD,SAA9BklD,EAAW+D,gBACbtvD,KAAKmoD,QAAUoD,EAAW+D,eAC1BtvD,KAAKsvD,eAAiB/D,EAAW+D,gBAETjpD,SAAjBklD,EAAW/4C,GAA0C,GAAvBxS,KAAKsvD,iBAC1CtvD,KAAKmoD,QAAS,GAIkB9hD,SAA9BklD,EAAWgE,gBACbvvD,KAAKooD,QAAUmD,EAAWgE,eAC1BvvD,KAAKuvD,eAAiBhE,EAAWgE,gBAETlpD,SAAjBklD,EAAW94C,GAA0C,GAAvBzS,KAAKuvD,iBAC1CvvD,KAAKooD,QAAS,GAGhBpoD,KAAK62D,YAAc72D,KAAK62D,aAAsCxwD,SAAtBklD,EAAWzgC,OAEzB,SAAtB9qB,KAAK6O,QAAQ2sC,QACfx7C,KAAK6O,QAAQysC,UAAYsE,EAAUxE,MAAM90B,SACzCtmB,KAAK6O,QAAQ0sC,UAAYqE,EAAUxE,MAAM70B,UAMnCvmB,KAAK6O,QAAQ2sC,OACnB,IAAK,WAAiBx7C,KAAK4sD,KAAO5sD,KAAKs4D,cAAet4D,KAAK2yD,OAAS3yD,KAAKu4D,eAAiB,MAC1F,KAAK,MAAiBv4D,KAAK4sD,KAAO5sD,KAAKw4D,SAAUx4D,KAAK2yD,OAAS3yD,KAAKy4D,UAAY,MAChF,KAAK,SAAiBz4D,KAAK4sD,KAAO5sD,KAAK04D,YAAa14D,KAAK2yD,OAAS3yD,KAAK24D,aAAe,MACtF,KAAK,UAAiB34D,KAAK4sD,KAAO5sD,KAAK44D,aAAc54D,KAAK2yD,OAAS3yD,KAAK64D,cAAgB,MAExF,KAAK,QAAiB74D,KAAK4sD,KAAO5sD,KAAK84D,WAAY94D,KAAK2yD,OAAS3yD,KAAK+4D,YAAc,MACpF,KAAK,OAAiB/4D,KAAK4sD,KAAO5sD,KAAKg5D,UAAWh5D,KAAK2yD,OAAS3yD,KAAKi5D,WAAa,MAClF,KAAK,MAAiBj5D,KAAK4sD,KAAO5sD,KAAKk5D,SAAUl5D,KAAK2yD,OAAS3yD,KAAKm5D,YAAc,MAClF,KAAK,SAAiBn5D,KAAK4sD,KAAO5sD,KAAKo5D,YAAap5D,KAAK2yD,OAAS3yD,KAAKm5D,YAAc,MACrF,KAAK,WAAiBn5D,KAAK4sD,KAAO5sD,KAAKq5D,cAAer5D,KAAK2yD,OAAS3yD,KAAKm5D,YAAc,MACvF,KAAK,eAAiBn5D,KAAK4sD,KAAO5sD,KAAKs5D,kBAAmBt5D,KAAK2yD,OAAS3yD,KAAKm5D,YAAc,MAC3F,KAAK,OAAiBn5D,KAAK4sD,KAAO5sD,KAAKu5D,UAAWv5D,KAAK2yD,OAAS3yD,KAAKm5D,YAAc,MACnF,SAAsBn5D,KAAK4sD,KAAO5sD,KAAK44D,aAAc54D,KAAK2yD,OAAS3yD,KAAK64D,eAG1E74D,KAAKw5D,WAOPn2D,EAAKsQ,UAAUo6B,OAAS,WACtB/tC,KAAK4vC,UAAW,EAChB5vC,KAAKw5D,UAMPn2D,EAAKsQ,UAAUm6B,SAAW,WACxB9tC,KAAK4vC,UAAW,EAChB5vC,KAAKw5D,UAOPn2D,EAAKsQ,UAAU8lD,eAAiB,WAC9Bz5D,KAAKw5D,UAOPn2D,EAAKsQ,UAAU6lD,OAAS,WACtBx5D,KAAKgT,MAAQ3M,OACbrG,KAAKiT,OAAS5M,QAQhBhD,EAAKsQ,UAAUy2C,SAAW,WACxB,MAA6B,kBAAfpqD,MAAK8jC,MAAuB9jC,KAAK8jC,QAAU9jC,KAAK8jC,OAShEzgC,EAAKsQ,UAAUugD,iBAAmB,SAAU/tC,EAAK6kC,GAC/C,GAAI5rC,GAAc,CAMlB,QAJKpf,KAAKgT,OACRhT,KAAK2yD,OAAOxsC,GAGNnmB,KAAK6O,QAAQ2sC,OACnB,IAAK,SACL,IAAK,MACH,MAAOx7C,MAAK6O,QAAQic,OAAQ1L,CAE9B,KAAK,UACH,GAAIha,GAAIpF,KAAKgT,MAAQ,EACjB/M,EAAIjG,KAAKiT,OAAS,EAClBg5C,EAAKlnD,KAAKyY,IAAIwtC,GAAS5lD,EACvBgG,EAAKrG,KAAK4Y,IAAIqtC,GAAS/kD,CAC3B,OAAOb,GAAIa,EAAIlB,KAAKqqB,KAAK68B,EAAIA,EAAI7gD,EAAIA,EAMvC,KAAK,MACL,IAAK,QACL,IAAK,OACL,QACE,MAAIpL,MAAKgT,MACAjO,KAAKwG,IACRxG,KAAKklB,IAAIjqB,KAAKgT,MAAQ,EAAIjO,KAAK4Y,IAAIqtC,IACnCjmD,KAAKklB,IAAIjqB,KAAKiT,OAAS,EAAIlO,KAAKyY,IAAIwtC,KAAW5rC,EAI5C,IAYf/b,EAAKsQ,UAAU+lD,UAAY,SAAS1C,EAAIC,GACtCj3D,KAAKg3D,GAAKA,EACVh3D,KAAKi3D,GAAKA,GASZ5zD,EAAKsQ,UAAUgmD,UAAY,SAAS3C,EAAIC,GACtCj3D,KAAKg3D,IAAMA,EACXh3D,KAAKi3D,IAAMA,GAOb5zD,EAAKsQ,UAAU+5C,aAAe,SAASt7B,GACrC,GAAKpyB,KAAKmoD,OAORnoD,KAAKg3D,GAAK,EACVh3D,KAAKk3D,GAAK,MARM,CAChB,GAAIl5C,GAAOhe,KAAKi9C,QAAUj9C,KAAKk3D,GAC3Bl6C,GAAQhd,KAAKg3D,GAAKh5C,GAAMhe,KAAK6O,QAAQwsC,IACzCr7C,MAAKk3D,IAAMl6C,EAAKoV,EAChBpyB,KAAKwS,GAAMxS,KAAKk3D,GAAK9kC,EAOvB,GAAKpyB,KAAKooD,OAORpoD,KAAKi3D,GAAK,EACVj3D,KAAKm3D,GAAK,MARM,CAChB,GAAIl5C,GAAOje,KAAKi9C,QAAUj9C,KAAKm3D,GAC3Bl6C,GAAQjd,KAAKi3D,GAAKh5C,GAAMje,KAAK6O,QAAQwsC,IACzCr7C,MAAKm3D,IAAMl6C,EAAKmV,EAChBpyB,KAAKyS,GAAMzS,KAAKm3D,GAAK/kC,IAezB/uB,EAAKsQ,UAAU85C,oBAAsB,SAASr7B,EAAUgtB,GACtD,GAAKp/C,KAAKmoD,OAQRnoD,KAAKg3D,GAAK,EACVh3D,KAAKk3D,GAAK,MATM,CAChB,GAAIl5C,GAAOhe,KAAKi9C,QAAUj9C,KAAKk3D,GAC3Bl6C,GAAQhd,KAAKg3D,GAAKh5C,GAAMhe,KAAK6O,QAAQwsC,IACzCr7C,MAAKk3D,IAAMl6C,EAAKoV,EAChBpyB,KAAKk3D,GAAMnyD,KAAKklB,IAAIjqB,KAAKk3D,IAAM9X,EAAiBp/C,KAAKk3D,GAAK,EAAK9X,GAAeA,EAAep/C,KAAKk3D,GAClGl3D,KAAKwS,GAAMxS,KAAKk3D,GAAK9kC,EAOvB,GAAKpyB,KAAKooD,OAQRpoD,KAAKi3D,GAAK,EACVj3D,KAAKm3D,GAAK,MATM,CAChB,GAAIl5C,GAAOje,KAAKi9C,QAAUj9C,KAAKm3D,GAC3Bl6C,GAAQjd,KAAKi3D,GAAKh5C,GAAMje,KAAK6O,QAAQwsC,IACzCr7C,MAAKm3D,IAAMl6C,EAAKmV,EAChBpyB,KAAKm3D,GAAMpyD,KAAKklB,IAAIjqB,KAAKm3D,IAAM/X,EAAiBp/C,KAAKm3D,GAAK,EAAK/X,GAAeA,EAAep/C,KAAKm3D,GAClGn3D,KAAKyS,GAAMzS,KAAKm3D,GAAK/kC,IAYzB/uB,EAAKsQ,UAAUimD,QAAU,WACvB,MAAQ55D,MAAKmoD,QAAUnoD,KAAKooD,QAQ9B/kD,EAAKsQ,UAAU25C,SAAW,SAASD,GACjC,GAAIwM,GAAW90D,KAAKqqB,KAAKrqB,KAAK0uB,IAAIzzB,KAAKk3D,GAAG,GAAKnyD,KAAK0uB,IAAIzzB,KAAKm3D,GAAG,GAEhE,OAAQ0C,GAAWxM,GAOrBhqD,EAAKsQ,UAAUm0C,WAAa,WAC1B,MAAO9nD,MAAK4vC,UAOdvsC,EAAKsQ,UAAUuB,SAAW,WACxB,MAAOlV,MAAKkH,OASd7D,EAAKsQ,UAAUmmD,YAAc,SAAStnD,EAAGC,GACvC,GAAIuL,GAAKhe,KAAKwS,EAAIA,EACdyL,EAAKje,KAAKyS,EAAIA,CAClB,OAAO1N,MAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,IAUlC5a,EAAKsQ,UAAUq4C,cAAgB,SAASzgD,EAAKyB,GAC3C,IAAKhN,KAAK62D,aAA8BxwD,SAAfrG,KAAKkH,MAC5B,GAAI8F,GAAOzB,EACTvL,KAAK6O,QAAQic,QAAS9qB,KAAK6O,QAAQysC,UAAYt7C,KAAK6O,QAAQ0sC,WAAa,MAEtE,CACH,GAAIl/B,IAASrc,KAAK6O,QAAQ0sC,UAAYv7C,KAAK6O,QAAQysC,YAActuC,EAAMzB,EACvEvL,MAAK6O,QAAQic,QAAS9qB,KAAKkH,MAAQqE,GAAO8Q,EAAQrc,KAAK6O,QAAQysC,UAGnEt7C,KAAK42D,gBAAkB52D,KAAK6O,QAAQic,QAQtCznB,EAAKsQ,UAAUi5C,KAAO,WACpB,KAAM,wCAQRvpD,EAAKsQ,UAAUg/C,OAAS,WACtB,KAAM,0CAQRtvD,EAAKsQ,UAAU02C,kBAAoB,SAASjoC,GAC1C,MAAQpiB,MAAKsH,KAAoB8a,EAAIqE,OAC7BzmB,KAAKsH,KAAOtH,KAAKgT,MAAQoP,EAAI9a,MAC7BtH,KAAK0H,IAAoB0a,EAAIM,QAC7B1iB,KAAK0H,IAAM1H,KAAKiT,OAASmP,EAAI1a,KAGvCrE,EAAKsQ,UAAUolD,aAAe,WAG5B,IAAK/4D,KAAKgT,QAAUhT,KAAKiT,OAAQ,CAC/B,GAAID,GAAOC,CACX,IAAIjT,KAAKkH,MAAO,CACdlH,KAAK6O,QAAQic,OAAQ9qB,KAAK42D,eAC1B,IAAIv6C,GAAQrc,KAAKo4D,SAASnlD,OAASjT,KAAKo4D,SAASplD,KACnC3M,UAAVgW,GACFrJ,EAAQhT,KAAK6O,QAAQic,QAAS9qB,KAAKo4D,SAASplD,MAC5CC,EAASjT,KAAK6O,QAAQic,OAAQzO,GAASrc,KAAKo4D,SAASnlD,SAGrDD,EAAQ,EACRC,EAAS,OAIXD,GAAQhT,KAAKo4D,SAASplD,MACtBC,EAASjT,KAAKo4D,SAASnlD,MAEzBjT,MAAKgT,MAASA,EACdhT,KAAKiT,OAASA,EAEdjT,KAAK03D,gBAAkB,EACnB13D,KAAKgT,MAAQ,GAAKhT,KAAKiT,OAAS,IAClCjT,KAAKgT,OAAUjO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAA0Bn+C,KAAKu3D,uBAClFv3D,KAAKiT,QAAUlO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKw3D,wBACjFx3D,KAAK6O,QAAQic,QAAS/lB,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKy3D,wBACxFz3D,KAAK03D,gBAAkB13D,KAAKgT,MAAQA,KAM1C3P,EAAKsQ,UAAUmlD,WAAa,SAAU3yC,GACpCnmB,KAAK+4D,aAAa5yC,GAElBnmB,KAAKsH,KAAStH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EACpChT,KAAK0H,IAAS1H,KAAKyS,EAAIzS,KAAKiT,OAAS,CAErC,IAAIqG,EACJ,IAA2B,GAAvBtZ,KAAKo4D,SAASplD,MAAa,CAE7B,GAAIhT,KAAK63D,YAAc,EAAG,CACxB,GAAInxC,GAAc1mB,KAAK63D,YAAc,EAAK,GAAK,CAC/CnxC,IAAa1mB,KAAK8yD,gBAClBpsC,EAAY3hB,KAAKwG,IAAI,GAAMvL,KAAKgT,MAAM0T,GAEtCP,EAAI4zC,YAAc,GAClB5zC,EAAI6zC,UAAUh6D,KAAKo4D,SAAUp4D,KAAKsH,KAAOof,EAAW1mB,KAAK0H,IAAMgf,EAAW1mB,KAAKgT,MAAQ,EAAE0T,EAAW1mB,KAAKiT,OAAS,EAAEyT,GAItHP,EAAI4zC,YAAc,EAClB5zC,EAAI6zC,UAAUh6D,KAAKo4D,SAAUp4D,KAAKsH,KAAMtH,KAAK0H,IAAK1H,KAAKgT,MAAOhT,KAAKiT,QACnEqG,EAAStZ,KAAKyS,EAAIzS,KAAKiT,OAAS,MAIhCqG,GAAStZ,KAAKyS,CAGhBzS,MAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAG8G,EAAQjT,OAAW,QAI1DhD,EAAKsQ,UAAU8kD,WAAa,SAAUtyC,GACpC,IAAKnmB,KAAKgT,MAAO,CACf,GAAIkG,GAAS,EACT+gD,EAAWj6D,KAAKk6D,YAAY/zC,EAChCnmB,MAAKgT,MAAQinD,EAASjnD,MAAQ,EAAIkG,EAClClZ,KAAKiT,OAASgnD,EAAShnD,OAAS,EAAIiG,EAEpClZ,KAAKgT,OAAuE,GAA7DjO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAA+Bn+C,KAAKu3D,uBACvFv3D,KAAKiT,QAAuE,GAA7DlO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAA+Bn+C,KAAKw3D,wBACvFx3D,KAAK03D,gBAAkB13D,KAAKgT,OAASinD,EAASjnD,MAAQ,EAAIkG,KAM9D7V,EAAKsQ,UAAU6kD,SAAW,SAAUryC,GAClCnmB,KAAKy4D,WAAWtyC,GAEhBnmB,KAAKsH,KAAOtH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EAClChT,KAAK0H,IAAM1H,KAAKyS,EAAIzS,KAAKiT,OAAS,CAElC,IAAIknD,GAAmB,IACnB/6C,EAAcpf,KAAK6O,QAAQuQ,YAC3Bg7C,EAAqBp6D,KAAK6O,QAAQmtC,qBAAuB,EAAIh8C,KAAK6O,QAAQuQ,WAE9E+G,GAAIY,YAAc/mB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUD,OAAS7L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMF,OAAS7L,KAAK6O,QAAQlE,MAAMkB,OAGtI7L,KAAK63D,YAAc,IACrB1xC,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIk0C,UAAUr6D,KAAKsH,KAAK,EAAE6e,EAAIO,UAAW1mB,KAAK0H,IAAI,EAAEye,EAAIO,UAAW1mB,KAAKgT,MAAM,EAAEmT,EAAIO,UAAW1mB,KAAKiT,OAAO,EAAEkT,EAAIO,UAAW1mB,KAAK6O,QAAQic,QACzI3E,EAAIlH,UAENkH,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYpnB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUF,WAAa5L,KAAK6O,QAAQlE,MAAMiB,WAE7Fua,EAAIk0C,UAAUr6D,KAAKsH,KAAMtH,KAAK0H,IAAK1H,KAAKgT,MAAOhT,KAAKiT,OAAQjT,KAAK6O,QAAQic,QACzE3E,EAAInH,OACJmH,EAAIlH,SAEJjf,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAGxS,KAAKyS,IAI5CpP,EAAKsQ,UAAU4kD,gBAAkB,SAAUpyC,GACzC,IAAKnmB,KAAKgT,MAAO,CACf,GAAIkG,GAAS,EACT+gD,EAAWj6D,KAAKk6D,YAAY/zC,GAC5BrT,EAAOmnD,EAASjnD,MAAQ,EAAIkG,CAChClZ,MAAKgT,MAAQF,EACb9S,KAAKiT,OAASH,EAGd9S,KAAKgT,OAAUjO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKu3D,uBACjFv3D,KAAKiT,QAAUlO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKw3D,wBACjFx3D,KAAK6O,QAAQic,QAAS/lB,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKy3D,wBACxFz3D,KAAK03D,gBAAkB13D,KAAKgT,MAAQF,IAIxCzP,EAAKsQ,UAAU2kD,cAAgB,SAAUnyC,GACvCnmB,KAAKu4D,gBAAgBpyC,GACrBnmB,KAAKsH,KAAOtH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EAClChT,KAAK0H,IAAM1H,KAAKyS,EAAIzS,KAAKiT,OAAS,CAElC,IAAIknD,GAAmB,IACnB/6C,EAAcpf,KAAK6O,QAAQuQ,YAC3Bg7C,EAAqBp6D,KAAK6O,QAAQmtC,qBAAuB,EAAIh8C,KAAK6O,QAAQuQ,WAE9E+G,GAAIY,YAAc/mB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUD,OAAS7L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMF,OAAS7L,KAAK6O,QAAQlE,MAAMkB,OAGtI7L,KAAK63D,YAAc,IACrB1xC,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIm0C,SAASt6D,KAAKwS,EAAIxS,KAAKgT,MAAM,EAAI,EAAEmT,EAAIO,UAAW1mB,KAAKyS,EAAgB,GAAZzS,KAAKiT,OAAa,EAAEkT,EAAIO,UAAW1mB,KAAKgT,MAAQ,EAAEmT,EAAIO,UAAW1mB,KAAKiT,OAAS,EAAEkT,EAAIO,WACpJP,EAAIlH,UAENkH,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYpnB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUF,WAAa5L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMH,WAAa5L,KAAK6O,QAAQlE,MAAMiB,WAChJua,EAAIm0C,SAASt6D,KAAKwS,EAAIxS,KAAKgT,MAAM,EAAGhT,KAAKyS,EAAgB,GAAZzS,KAAKiT,OAAYjT,KAAKgT,MAAOhT,KAAKiT,QAC/EkT,EAAInH,OACJmH,EAAIlH,SAEJjf,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAGxS,KAAKyS,IAI5CpP,EAAKsQ,UAAUglD,cAAgB,SAAUxyC,GACvC,IAAKnmB,KAAKgT,MAAO,CACf,GAAIkG,GAAS,EACT+gD,EAAWj6D,KAAKk6D,YAAY/zC,GAC5Bo0C,EAAWx1D,KAAKiI,IAAIitD,EAASjnD,MAAOinD,EAAShnD,QAAU,EAAIiG,CAC/DlZ,MAAK6O,QAAQic,OAASyvC,EAAW,EAEjCv6D,KAAKgT,MAAQunD,EACbv6D,KAAKiT,OAASsnD,EAKdv6D,KAAK6O,QAAQic,QAAuE,GAA7D/lB,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAA+Bn+C,KAAKy3D,wBAC/Fz3D,KAAK03D,gBAAkB13D,KAAK6O,QAAQic,OAAQ,GAAIyvC,IAIpDl3D,EAAKsQ,UAAU+kD,YAAc,SAAUvyC,GACrCnmB,KAAK24D,cAAcxyC,GACnBnmB,KAAKsH,KAAOtH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EAClChT,KAAK0H,IAAM1H,KAAKyS,EAAIzS,KAAKiT,OAAS,CAElC,IAAIknD,GAAmB,IACnB/6C,EAAcpf,KAAK6O,QAAQuQ,YAC3Bg7C,EAAqBp6D,KAAK6O,QAAQmtC,qBAAuB,EAAIh8C,KAAK6O,QAAQuQ,WAE9E+G,GAAIY,YAAc/mB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUD,OAAS7L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMF,OAAS7L,KAAK6O,QAAQlE,MAAMkB,OAGtI7L,KAAK63D,YAAc,IACrB1xC,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIq0C,OAAOx6D,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAK6O,QAAQic,OAAO,EAAE3E,EAAIO,WACrDP,EAAIlH,UAENkH,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYpnB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUF,WAAa5L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMH,WAAa5L,KAAK6O,QAAQlE,MAAMiB,WAChJua,EAAIq0C,OAAOx6D,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAK6O,QAAQic,QACxC3E,EAAInH,OACJmH,EAAIlH,SAEJjf,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAGxS,KAAKyS,IAG5CpP,EAAKsQ,UAAUklD,eAAiB,SAAU1yC,GACxC,IAAKnmB,KAAKgT,MAAO,CACf,GAAIinD,GAAWj6D,KAAKk6D,YAAY/zC,EAEhCnmB,MAAKgT,MAAyB,IAAjBinD,EAASjnD,MACtBhT,KAAKiT,OAA2B,EAAlBgnD,EAAShnD,OACnBjT,KAAKgT,MAAQhT,KAAKiT,SACpBjT,KAAKgT,MAAQhT,KAAKiT,OAEpB,IAAIwnD,GAAcz6D,KAAKgT,KAGvBhT,MAAKgT,OAAUjO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKu3D,uBACjFv3D,KAAKiT,QAAUlO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKw3D,wBACjFx3D,KAAK6O,QAAQic,QAAU/lB,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKy3D,wBACzFz3D,KAAK03D,gBAAkB13D,KAAKgT,MAAQynD,IAIxCp3D,EAAKsQ,UAAUilD,aAAe,SAAUzyC,GACtCnmB,KAAK64D,eAAe1yC,GACpBnmB,KAAKsH,KAAOtH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EAClChT,KAAK0H,IAAM1H,KAAKyS,EAAIzS,KAAKiT,OAAS,CAElC,IAAIknD,GAAmB,IACnB/6C,EAAcpf,KAAK6O,QAAQuQ,YAC3Bg7C,EAAqBp6D,KAAK6O,QAAQmtC,qBAAuB,EAAIh8C,KAAK6O,QAAQuQ,WAE9E+G,GAAIY,YAAc/mB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUD,OAAS7L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMF,OAAS7L,KAAK6O,QAAQlE,MAAMkB,OAGtI7L,KAAK63D,YAAc,IACrB1xC,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIu0C,QAAQ16D,KAAKsH,KAAK,EAAE6e,EAAIO,UAAW1mB,KAAK0H,IAAI,EAAEye,EAAIO,UAAW1mB,KAAKgT,MAAM,EAAEmT,EAAIO,UAAW1mB,KAAKiT,OAAO,EAAEkT,EAAIO,WAC/GP,EAAIlH,UAENkH,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYpnB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUF,WAAa5L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMH,WAAa5L,KAAK6O,QAAQlE,MAAMiB,WAEhJua,EAAIu0C,QAAQ16D,KAAKsH,KAAMtH,KAAK0H,IAAK1H,KAAKgT,MAAOhT,KAAKiT,QAClDkT,EAAInH,OACJmH,EAAIlH,SACJjf,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAGxS,KAAKyS,IAG5CpP,EAAKsQ,UAAUulD,SAAW,SAAU/yC,GAClCnmB,KAAK26D,WAAWx0C,EAAK,WAGvB9iB,EAAKsQ,UAAU0lD,cAAgB,SAAUlzC,GACvCnmB,KAAK26D,WAAWx0C,EAAK,aAGvB9iB,EAAKsQ,UAAU2lD,kBAAoB,SAAUnzC,GAC3CnmB,KAAK26D,WAAWx0C,EAAK,iBAGvB9iB,EAAKsQ,UAAUylD,YAAc,SAAUjzC,GACrCnmB,KAAK26D,WAAWx0C,EAAK,WAGvB9iB,EAAKsQ,UAAU4lD,UAAY,SAAUpzC,GACnCnmB,KAAK26D,WAAWx0C,EAAK,SAGvB9iB,EAAKsQ,UAAUwlD,aAAe,WAC5B,IAAKn5D,KAAKgT,MAAO,CACfhT,KAAK6O,QAAQic,OAAQ9qB,KAAK42D,eAC1B,IAAI9jD,GAAO,EAAI9S,KAAK6O,QAAQic,MAC5B9qB,MAAKgT,MAAQF,EACb9S,KAAKiT,OAASH,EAGd9S,KAAKgT,OAAUjO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKu3D,uBACjFv3D,KAAKiT,QAAUlO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKw3D,wBACjFx3D,KAAK6O,QAAQic,QAAsE,GAA7D/lB,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAA+Bn+C,KAAKy3D,wBAC9Fz3D,KAAK03D,gBAAkB13D,KAAKgT,MAAQF,IAIxCzP,EAAKsQ,UAAUgnD,WAAa,SAAUx0C,EAAKq1B,GACzCx7C,KAAKm5D,aAAahzC,GAElBnmB,KAAKsH,KAAOtH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EAClChT,KAAK0H,IAAM1H,KAAKyS,EAAIzS,KAAKiT,OAAS,CAElC,IAAIknD,GAAmB,IACnB/6C,EAAcpf,KAAK6O,QAAQuQ,YAC3Bg7C,EAAqBp6D,KAAK6O,QAAQmtC,qBAAuB,EAAIh8C,KAAK6O,QAAQuQ,YAC1Ew7C,EAAmB,CAGvB,QAAQpf,GACN,IAAK,MAAiBof,EAAmB,CAAG,MAC5C,KAAK,SAAiBA,EAAmB,CAAG,MAC5C,KAAK,WAAiBA,EAAmB,CAAG,MAC5C,KAAK,eAAiBA,EAAmB,CAAG,MAC5C,KAAK,OAAiBA,EAAmB,EAG3Cz0C,EAAIY,YAAc/mB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUD,OAAS7L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMF,OAAS7L,KAAK6O,QAAQlE,MAAMkB,OAEtI7L,KAAK63D,YAAc,IACrB1xC,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIq1B,GAAOx7C,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAK6O,QAAQic,OAAQ8vC,EAAmBz0C,EAAIO,WACvEP,EAAIlH,UAENkH,EAAIO,WAAa1mB,KAAK4vC,SAAWwqB,EAAqBh7C,IAAiBpf,KAAK63D,YAAc,EAAKsC,EAAmB,GAClHh0C,EAAIO,WAAa1mB,KAAK8yD,gBACtB3sC,EAAIO,UAAY3hB,KAAKwG,IAAIvL,KAAKgT,MAAMmT,EAAIO,WAExCP,EAAIiB,UAAYpnB,KAAK4vC,SAAW5vC,KAAK6O,QAAQlE,MAAMmB,UAAUF,WAAa5L,KAAK+L,MAAQ/L,KAAK6O,QAAQlE,MAAMoB,MAAMH,WAAa5L,KAAK6O,QAAQlE,MAAMiB,WAChJua,EAAIq1B,GAAOx7C,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAK6O,QAAQic,QACxC3E,EAAInH,OACJmH,EAAIlH,SAEAjf,KAAK6nB,OACP7nB,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAGxS,KAAKyS,EAAIzS,KAAKiT,OAAS,EAAG5M,OAAW,OAAM,IAIpFhD,EAAKsQ,UAAUslD,YAAc,SAAU9yC,GACrC,IAAKnmB,KAAKgT,MAAO,CACf,GAAIkG,GAAS,EACT+gD,EAAWj6D,KAAKk6D,YAAY/zC,EAChCnmB,MAAKgT,MAAQinD,EAASjnD,MAAQ,EAAIkG,EAClClZ,KAAKiT,OAASgnD,EAAShnD,OAAS,EAAIiG,EAGpClZ,KAAKgT,OAAUjO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKu3D,uBACjFv3D,KAAKiT,QAAUlO,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKw3D,wBACjFx3D,KAAK6O,QAAQic,QAAS/lB,KAAKwG,IAAIvL,KAAK63D,YAAc,EAAG73D,KAAKm+C,uBAAyBn+C,KAAKy3D,wBACxFz3D,KAAK03D,gBAAkB13D,KAAKgT,OAASinD,EAASjnD,MAAQ,EAAIkG,KAI9D7V,EAAKsQ,UAAUqlD,UAAY,SAAU7yC,GACnCnmB,KAAKi5D,YAAY9yC,GACjBnmB,KAAKsH,KAAOtH,KAAKwS,EAAIxS,KAAKgT,MAAQ,EAClChT,KAAK0H,IAAM1H,KAAKyS,EAAIzS,KAAKiT,OAAS,EAElCjT,KAAK0yD,OAAOvsC,EAAKnmB,KAAK6nB,MAAO7nB,KAAKwS,EAAGxS,KAAKyS,IAI5CpP,EAAKsQ,UAAU++C,OAAS,SAAUvsC,EAAKwC,EAAMnW,EAAGC,EAAGo5B,EAAOgvB,EAAUC,GAClE,GAAInyC,GAAQ5kB,OAAO/D,KAAK6O,QAAQ8sC,UAAY37C,KAAK23D,aAAe33D,KAAKy2D,kBAAmB,CACtFtwC,EAAIQ,MAAQ3mB,KAAK4vC,SAAW,QAAU,IAAM5vC,KAAK6O,QAAQ8sC,SAAW,MAAQ37C,KAAK6O,QAAQ+sC,QAEzF,IAAItW,GAAQ3c,EAAK5gB,MAAM,MACnBorD,EAAY7tB,EAAM9/B,OAClBm2C,EAAY53C,OAAO/D,KAAK6O,QAAQ8sC,UAAY,EAC5CiV,EAAQn+C,GAAK,EAAI0gD,GAAa,EAAIxX,CAChB,IAAlBmf,IACFlK,EAAQn+C,GAAK,EAAI0gD,IAAc,EAAIxX,GAKrC,KAAK,GADD3oC,GAAQmT,EAAIitC,YAAY9tB,EAAM,IAAItyB,MAC7B3N,EAAI,EAAO8tD,EAAJ9tD,EAAeA,IAAK,CAClC,GAAIqhB,GAAYP,EAAIitC,YAAY9tB,EAAMjgC,IAAI2N,KAC1CA,GAAQ0T,EAAY1T,EAAQ0T,EAAY1T,EAE1C,GAAIC,GAASjT,KAAK6O,QAAQ8sC,SAAWwX,EACjC7rD,EAAOkL,EAAIQ,EAAQ,EACnBtL,EAAM+K,EAAIQ,EAAS,CACC,QAApBkT,EAAIwB,eACNjgB,GAAO,GAAMi0C,GAEf37C,KAAK2wD,iBAAmBjpD,IAAIA,EAAIJ,KAAKA,EAAK0L,MAAMA,EAAMC,OAAOA,EAAO29C,MAAMA,GAG5CvqD,SAA1BrG,KAAK6O,QAAQgtC,UAAoD,OAA1B77C,KAAK6O,QAAQgtC,UAA+C,SAA1B77C,KAAK6O,QAAQgtC,WACxF11B,EAAIiB,UAAYpnB,KAAK6O,QAAQgtC,SAC7B11B,EAAIktC,SAAS/rD,EAAMI,EAAKsL,EAAOC,IAIjCkT,EAAIiB,UAAYpnB,KAAK6O,QAAQ6sC,WAAa,QAC1Cv1B,EAAIuB,UAAYmkB,GAAS,SACzB1lB,EAAIwB,aAAekzC,GAAY,QAC/B,KAAK,GAAIx1D,GAAI,EAAO8tD,EAAJ9tD,EAAeA,IAC7B8gB,EAAIyB,SAAS0d,EAAMjgC,GAAImN,EAAGo+C,GAC1BA,GAASjV,IAMft4C,EAAKsQ,UAAUumD,YAAc,SAAS/zC,GACpC,GAAmB9f,SAAfrG,KAAK6nB,MAAqB,CAC5B1B,EAAIQ,MAAQ3mB,KAAK4vC,SAAW,QAAU,IAAM5vC,KAAK6O,QAAQ8sC,SAAW,MAAQ37C,KAAK6O,QAAQ+sC,QAMzF,KAAK,GAJDtW,GAAQtlC,KAAK6nB,MAAM9f,MAAM,MACzBkL,GAAUlP,OAAO/D,KAAK6O,QAAQ8sC,UAAY,GAAKrW,EAAM9/B,OACrDwN,EAAQ,EAEH3N,EAAI,EAAG86B,EAAOmF,EAAM9/B,OAAY26B,EAAJ96B,EAAUA,IAC7C2N,EAAQjO,KAAKiI,IAAIgG,EAAOmT,EAAIitC,YAAY9tB,EAAMjgC,IAAI2N,MAGpD,QAAQA,MAASA,EAAOC,OAAUA,GAGlC,OAAQD,MAAS,EAAGC,OAAU,IAUlC5P,EAAKsQ,UAAUg5C,OAAS,WACtB,MAAmBtmD,UAAfrG,KAAKgT,MACDhT,KAAKwS,EAAIxS,KAAKgT,MAAOhT,KAAK8yD,iBAAoB9yD,KAAK8hD,cAActvC,GACjExS,KAAKwS,EAAIxS,KAAKgT,MAAOhT,KAAK8yD,gBAAoB9yD,KAAK+hD,kBAAkBvvC,GACrExS,KAAKyS,EAAIzS,KAAKiT,OAAOjT,KAAK8yD,iBAAoB9yD,KAAK8hD,cAAcrvC,GACjEzS,KAAKyS,EAAIzS,KAAKiT,OAAOjT,KAAK8yD,gBAAoB9yD,KAAK+hD,kBAAkBtvC,GAGpE,GAQXpP,EAAKsQ,UAAUonD,OAAS,WACtB,MAAQ/6D,MAAKwS,GAAKxS,KAAK8hD,cAActvC,GAC7BxS,KAAKwS,EAAIxS,KAAK+hD,kBAAkBvvC,GAChCxS,KAAKyS,GAAKzS,KAAK8hD,cAAcrvC,GAC7BzS,KAAKyS,EAAIzS,KAAK+hD,kBAAkBtvC,GAW1CpP,EAAKsQ,UAAU+4C,eAAiB,SAASrwC,EAAMylC,EAAcC,GAC3D/hD,KAAK8yD,gBAAkB,EAAIz2C,EAC3Brc,KAAK23D,aAAet7C,EACpBrc,KAAK8hD,cAAgBA,EACrB9hD,KAAK+hD,kBAAoBA,GAS3B1+C,EAAKsQ,UAAUyuB,SAAW,SAAS/lB,GACjCrc,KAAK8yD,gBAAkB,EAAIz2C,EAC3Brc,KAAK23D,aAAet7C,GAQtBhZ,EAAKsQ,UAAUqnD,cAAgB,WAC7Bh7D,KAAKk3D,GAAK,EACVl3D,KAAKm3D,GAAK,GASZ9zD,EAAKsQ,UAAUsnD,eAAiB,SAASC,GACvC,GAAIC,GAAen7D,KAAKk3D,GAAKl3D,KAAKk3D,GAAKgE,CAEvCl7D,MAAKk3D,GAAKnyD,KAAKqqB,KAAK+rC,EAAan7D,KAAK6O,QAAQwsC,MAC9C8f,EAAen7D,KAAKm3D,GAAKn3D,KAAKm3D,GAAK+D,EAEnCl7D,KAAKm3D,GAAKpyD,KAAKqqB,KAAK+rC,EAAan7D,KAAK6O,QAAQwsC,OAGhDx7C,EAAOD,QAAUyD,GAKb,SAASxD,GAWb,QAASyD,GAAMyV,EAAWvG,EAAGC,EAAGkW,EAAMrb,GAElCtN,KAAK+Y,UADHA,EACeA,EAGA/G,SAASsiB,KAIdjuB,SAAViH,IACe,gBAANkF,IACTlF,EAAQkF,EACRA,EAAInM,QACqB,gBAATsiB,IAChBrb,EAAQqb,EACRA,EAAOtiB,QAGPiH,GACEouC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVjxC,OACEkB,OAAQ,OACRD,WAAY,aAMpB5L,KAAKwS,EAAI,EACTxS,KAAKyS,EAAI,EACTzS,KAAKojB,QAAU,EAEL/c,SAANmM,GAAyBnM,SAANoM,GACrBzS,KAAKyqD,YAAYj4C,EAAGC,GAETpM,SAATsiB,GACF3oB,KAAK0qD,QAAQ/hC,GAIf3oB,KAAK0e,MAAQ1M,SAASM,cAAc,MACpC,IAAI8oD,GAAYp7D,KAAK0e,MAAMpR,KAC3B8tD,GAAUp4C,SAAW,WACrBo4C,EAAUpkC,WAAa,SACvBokC,EAAUvvD,OAAS,aAAeyB,EAAM3C,MAAMkB,OAC9CuvD,EAAUzwD,MAAQ2C,EAAMouC,UACxB0f,EAAUzf,SAAWruC,EAAMquC,SAAW,KACtCyf,EAAUC,WAAa/tD,EAAMsuC,SAC7Bwf,EAAUh4C,QAAUpjB,KAAKojB,QAAU,KACnCg4C,EAAUr8C,gBAAkBzR,EAAM3C,MAAMiB,WACxCwvD,EAAU3rC,aAAe,MACzB2rC,EAAU1pC,gBAAkB,MAC5B0pC,EAAUE,mBAAqB,MAC/BF,EAAU1rC,UAAY,wCACtB0rC,EAAUG,WAAa,SACvBv7D,KAAK+Y,UAAU7G,YAAYlS,KAAK0e,OAOlCpb,EAAMqQ,UAAU82C,YAAc,SAASj4C,EAAGC,GACxCzS,KAAKwS,EAAI0X,SAAS1X,GAClBxS,KAAKyS,EAAIyX,SAASzX,IAOpBnP,EAAMqQ,UAAU+2C,QAAU,SAASr7B,GAC7BA,YAAmBgb,UACrBrqC,KAAK0e,MAAM2E,UAAY,GACvBrjB,KAAK0e,MAAMxM,YAAYmd,IAGvBrvB,KAAK0e,MAAM2E,UAAYgM,GAQ3B/rB,EAAMqQ,UAAU0yB,KAAO,SAAUA,GAK/B,GAJahgC,SAATggC,IACFA,GAAO,GAGLA,EAAM,CACR,GAAIpzB,GAASjT,KAAK0e,MAAMuF,aACpBjR,EAAShT,KAAK0e,MAAME,YACpBuV,EAAYn0B,KAAK0e,MAAM9U,WAAWqa,aAClCu3C,EAAWx7D,KAAK0e,MAAM9U,WAAWgV,YAEjClX,EAAO1H,KAAKyS,EAAIQ,CAChBvL,GAAMuL,EAASjT,KAAKojB,QAAU+Q,IAChCzsB,EAAMysB,EAAYlhB,EAASjT,KAAKojB,SAE9B1b,EAAM1H,KAAKojB,UACb1b,EAAM1H,KAAKojB,QAGb,IAAI9b,GAAOtH,KAAKwS,CACZlL,GAAO0L,EAAQhT,KAAKojB,QAAUo4C,IAChCl0D,EAAOk0D,EAAWxoD,EAAQhT,KAAKojB,SAE7B9b,EAAOtH,KAAKojB,UACd9b,EAAOtH,KAAKojB,SAGdpjB,KAAK0e,MAAMpR,MAAMhG,KAAOA,EAAO,KAC/BtH,KAAK0e,MAAMpR,MAAM5F,IAAMA,EAAM,KAC7B1H,KAAK0e,MAAMpR,MAAM0pB,WAAa,cAG9Bh3B,MAAKomC,QAOT9iC,EAAMqQ,UAAUyyB,KAAO,WACrBpmC,KAAK0e,MAAMpR,MAAM0pB,WAAa,UAGhCn3B,EAAOD,QAAU0D,GAKb,SAASzD,EAAQD,GAarB,QAAS67D,GAAUtoD,GAEjB,MADAoc,GAAMpc,EACCuoD,IAoCT,QAASr6B,KACPl5B,EAAQ,EACR1H,EAAI8uB,EAAI/K,OAAO,GAQjB,QAASiD,KACPtf,IACA1H,EAAI8uB,EAAI/K,OAAOrc,GAOjB,QAASwzD,KACP,MAAOpsC,GAAI/K,OAAOrc,EAAQ,GAS5B,QAASyzD,GAAen7D,GACtB,MAAOo7D,GAAkBztD,KAAK3N,GAShC,QAASq7D,GAAO12D,EAAGa,GAKjB,GAJKb,IACHA,MAGEa,EACF,IAAK,GAAIuQ,KAAQvQ,GACXA,EAAEN,eAAe6Q,KACnBpR,EAAEoR,GAAQvQ,EAAEuQ,GAIlB,OAAOpR,GAeT,QAAS+S,GAASiK,EAAKgnB,EAAMliC,GAG3B,IAFA,GAAIuG,GAAO27B,EAAKrhC,MAAM,KAClBg0D,EAAI35C,EACD3U,EAAKjI,QAAQ,CAClB,GAAIkD,GAAM+E,EAAKsE,OACXtE,GAAKjI,QAEFu2D,EAAErzD,KACLqzD,EAAErzD,OAEJqzD,EAAIA,EAAErzD,IAINqzD,EAAErzD,GAAOxB,GAWf,QAAS80D,GAAQnrC,EAAO6yB,GAOtB,IANA,GAAIr+C,GAAGC,EACHs0B,EAAU,KAGVqiC,GAAUprC,GACVnxB,EAAOmxB,EACJnxB,EAAKkkC,QACVq4B,EAAOj0D,KAAKtI,EAAKkkC,QACjBlkC,EAAOA,EAAKkkC,MAId,IAAIlkC,EAAK07C,MACP,IAAK/1C,EAAI,EAAGC,EAAM5F,EAAK07C,MAAM51C,OAAYF,EAAJD,EAASA,IAC5C,GAAIq+C,EAAKrjD,KAAOX,EAAK07C,MAAM/1C,GAAGhF,GAAI,CAChCu5B,EAAUl6B,EAAK07C,MAAM/1C,EACrB,OAiBN,IAZKu0B,IAEHA,GACEv5B,GAAIqjD,EAAKrjD,IAEPwwB,EAAM6yB,OAER9pB,EAAQsiC,KAAOJ,EAAMliC,EAAQsiC,KAAMrrC,EAAM6yB,QAKxCr+C,EAAI42D,EAAOz2D,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACvC,GAAIoH,GAAIwvD,EAAO52D,EAEVoH,GAAE2uC,QACL3uC,EAAE2uC,UAE4B,IAA5B3uC,EAAE2uC,MAAM50C,QAAQozB,IAClBntB,EAAE2uC,MAAMpzC,KAAK4xB,GAKb8pB,EAAKwY,OACPtiC,EAAQsiC,KAAOJ,EAAMliC,EAAQsiC,KAAMxY,EAAKwY,OAS5C,QAASC,GAAQtrC,EAAOy5B,GAKtB,GAJKz5B,EAAMorB,QACTprB,EAAMorB,UAERprB,EAAMorB,MAAMj0C,KAAKsiD,GACbz5B,EAAMy5B,KAAM,CACd,GAAI4R,GAAOJ,KAAUjrC,EAAMy5B,KAC3BA,GAAK4R,KAAOJ,EAAMI,EAAM5R,EAAK4R,OAajC,QAASE,GAAWvrC,EAAOrI,EAAMC,EAAI9hB,EAAMu1D,GACzC,GAAI5R,IACF9hC,KAAMA,EACNC,GAAIA,EACJ9hB,KAAMA,EAQR,OALIkqB,GAAMy5B,OACRA,EAAK4R,KAAOJ,KAAUjrC,EAAMy5B,OAE9BA,EAAK4R,KAAOJ,EAAMxR,EAAK4R,SAAYA,GAE5B5R,EAOT,QAAS+R,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGI,KAALh8D,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CgnB,GAGF,GAAG,CACD,GAAIi1C,IAAY,CAGhB,IAAS,KAALj8D,EAAU,CAGZ,IADA,GAAI4E,GAAI8C,EAAQ,EACQ,KAAjBonB,EAAI/K,OAAOnf,IAA8B,KAAjBkqB,EAAI/K,OAAOnf,IACxCA,GAEF,IAAqB,MAAjBkqB,EAAI/K,OAAOnf,IAA+B,IAAjBkqB,EAAI/K,OAAOnf,GAAU,CAEhD,KAAY,IAAL5E,GAAgB,MAALA,GAChBgnB,GAEFi1C,IAAY,GAGhB,GAAS,KAALj8D,GAA6B,KAAjBk7D,IAAsB,CAEpC,KAAY,IAALl7D,GAAgB,MAALA,GAChBgnB,GAEFi1C,IAAY,EAEd,GAAS,KAALj8D,GAA6B,KAAjBk7D,IAAsB,CAEpC,KAAY,IAALl7D,GAAS,CACd,GAAS,KAALA,GAA6B,KAAjBk7D,IAAsB,CAEpCl0C,IACAA,GACA,OAGAA,IAGJi1C,GAAY,EAId,KAAY,KAALj8D,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CgnB,UAGGi1C,EAGP,IAAS,IAALj8D,EAGF,YADA67D,EAAYC,EAAUI,UAKxB,IAAIC,GAAKn8D,EAAIk7D,GACb,IAAIkB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACRn1C,QACAA,IAKF,IAAIo1C,EAAWp8D,GAIb,MAHA67D,GAAYC,EAAUI,UACtBF,EAAQh8D,MACRgnB,IAMF,IAAIm0C,EAAen7D,IAAW,KAALA,EAAU,CAIjC,IAHAg8D,GAASh8D,EACTgnB,IAEOm0C,EAAen7D,IACpBg8D,GAASh8D,EACTgnB,GAYF,OAVa,SAATg1C,EACFA,GAAQ,EAEQ,QAATA,EACPA,GAAQ,EAEAl4D,MAAMR,OAAO04D,MACrBA,EAAQ14D,OAAO04D,SAEjBH,EAAYC,EAAUO,YAKxB,GAAS,KAALr8D,EAAU,CAEZ,IADAgnB,IACY,IAALhnB,IAAiB,KAALA,GAAkB,KAALA,GAA6B,KAAjBk7D,MAC1Cc,GAASh8D,EACA,KAALA,GACFgnB,IAEFA,GAEF,IAAS,KAALhnB,EACF,KAAMs8D,GAAe,2BAIvB,OAFAt1C,UACA60C,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAALv8D,GACLg8D,GAASh8D,EACTgnB,GAEF,MAAM,IAAIzO,aAAY,yBAA2BikD,EAAKR,EAAO,IAAM,KAOrE,QAASf,KACP,GAAI7qC,KAwBJ,IAtBAwQ,IACAg7B,IAGa,UAATI,IACF5rC,EAAMqsC,QAAS,EACfb,MAIW,SAATI,GAA6B,WAATA,KACtB5rC,EAAMlqB,KAAO81D,EACbJ,KAIEC,GAAaC,EAAUO,aACzBjsC,EAAMxwB,GAAKo8D,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgBtsC,GAGH,KAAT4rC,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGOxrC,GAAM6yB,WACN7yB,GAAMy5B,WACNz5B,GAAMA,MAENA,EAOT,QAASssC,GAAiBtsC,GACxB,KAAiB,KAAV4rC,GAAyB,KAATA,GACrBW,EAAevsC,GACF,KAAT4rC,GACFJ,IAWN,QAASe,GAAevsC,GAEtB,GAAIwsC,GAAWC,EAAczsC,EAC7B,IAAIwsC,EAIF,WAFAE,GAAU1sC,EAAOwsC,EAMnB,IAAInB,GAAOsB,EAAwB3sC,EACnC,KAAIqrC,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAI18D,GAAKo8D,CAGT,IAFAJ,IAEa,KAATI,EAAc,CAGhB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBlsC,GAAMxwB,GAAMo8D,EACZJ,QAIAoB,GAAmB5sC,EAAOxwB,IAS9B,QAASi9D,GAAezsC,GACtB,GAAIwsC,GAAW,IAgBf,IAba,YAATZ,IACFY,KACAA,EAAS12D,KAAO,WAChB01D,IAGIC,GAAaC,EAAUO,aACzBO,EAASh9D,GAAKo8D,EACdJ,MAKS,KAATI,EAAc,CAehB,GAdAJ,IAEKgB,IACHA,MAEFA,EAASz5B,OAAS/S,EAClBwsC,EAAS3Z,KAAO7yB,EAAM6yB,KACtB2Z,EAAS/S,KAAOz5B,EAAMy5B,KACtB+S,EAASxsC,MAAQA,EAAMA,MAGvBssC,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAAS3Z,WACT2Z,GAAS/S,WACT+S,GAASxsC,YACTwsC,GAASz5B,OAGX/S,EAAM6sC,YACT7sC,EAAM6sC,cAER7sC,EAAM6sC,UAAU11D,KAAKq1D,GAGvB,MAAOA,GAYT,QAASG,GAAyB3sC,GAEhC,MAAa,QAAT4rC,GACFJ,IAGAxrC,EAAM6yB,KAAOia,IACN,QAES,QAATlB,GACPJ,IAGAxrC,EAAMy5B,KAAOqT,IACN,QAES,SAATlB,GACPJ,IAGAxrC,EAAMA,MAAQ8sC,IACP,SAGF,KAQT,QAASF,GAAmB5sC,EAAOxwB,GAEjC,GAAIqjD,IACFrjD,GAAIA,GAEF67D,EAAOyB,GACPzB,KACFxY,EAAKwY,KAAOA,GAEdF,EAAQnrC,EAAO6yB,GAGf6Z,EAAU1sC,EAAOxwB,GAQnB,QAASk9D,GAAU1sC,EAAOrI,GACxB,KAAgB,MAATi0C,GAA0B,MAATA,GAAe,CACrC,GAAIh0C,GACA9hB,EAAO81D,CACXJ;GAEA,IAAIgB,GAAWC,EAAczsC,EAC7B,IAAIwsC,EACF50C,EAAK40C,MAEF,CACH,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvBt0C,GAAKg0C,EACLT,EAAQnrC,GACNxwB,GAAIooB,IAEN4zC,IAIF,GAAIH,GAAOyB,IAGPrT,EAAO8R,EAAWvrC,EAAOrI,EAAMC,EAAI9hB,EAAMu1D,EAC7CC,GAAQtrC,EAAOy5B,GAEf9hC,EAAOC,GASX,QAASk1C,KAGP,IAFA,GAAIzB,GAAO,KAEK,KAATO,GAAc,CAGnB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAIvmD,GAAOimD,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAI71D,GAAQu1D,CACZtkD,GAAS+jD,EAAM1lD,EAAMtP,GAErBm1D,IACY,KAARI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAI5kD,aAAY4kD,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAat0D,EAAQ,KAStF,QAAS80D,GAAMt0C,EAAMk1C,GACnB,MAAQl1C,GAAKnjB,QAAUq4D,EAAal1C,EAAQA,EAAK7d,OAAO,EAAG,IAAM,MASnE,QAASgzD,GAASC,EAAQC,EAAQrwB,GAC5B7nC,MAAMC,QAAQg4D,GAChBA,EAAO11D,QAAQ,SAAU41D,GACnBn4D,MAAMC,QAAQi4D,GAChBA,EAAO31D,QAAQ,SAAU61D,GACvBvwB,EAAGswB,EAAOC,KAIZvwB,EAAGswB,EAAOD,KAKVl4D,MAAMC,QAAQi4D,GAChBA,EAAO31D,QAAQ,SAAU61D,GACvBvwB,EAAGowB,EAAQG,KAIbvwB,EAAGowB,EAAQC,GAWjB,QAASjZ,GAAY5xC,GA+BjB,QAASgrD,GAAYC,GACnB,GAAIC,IACF71C,KAAM41C,EAAQ51C,KACdC,GAAI21C,EAAQ31C,GAId,OAFAqzC,GAAMuC,EAAWD,EAAQlC,MACzBmC,EAAU/wD,MAAyB,MAAhB8wD,EAAQz3D,KAAgB,QAAU,OAC9C03D,EApCX,GAAIvZ,GAAU2W,EAAStoD,GACnBmrD,GACFljB,SACAa,SACAptC,WAkFF,OA9EIi2C,GAAQ1J,OACV0J,EAAQ1J,MAAM/yC,QAAQ,SAAUk2D,GAC9B,GAAIC,IACFn+D,GAAIk+D,EAAQl+D,GACZwnB,MAAO5jB,OAAOs6D,EAAQ12C,OAAS02C,EAAQl+D,IAEzCy7D,GAAM0C,EAAWD,EAAQrC,MACrBsC,EAAU/iB,QACZ+iB,EAAUhjB,MAAQ,SAEpB8iB,EAAUljB,MAAMpzC,KAAKw2D,KAKrB1Z,EAAQ7I,OAgBV6I,EAAQ7I,MAAM5zC,QAAQ,SAAU+1D,GAC9B,GAAI51C,GAAMC,CAERD,GADE41C,EAAQ51C,eAAgBpiB,QACnBg4D,EAAQ51C,KAAK4yB,OAIlB/6C,GAAI+9D,EAAQ51C,MAKdC,EADE21C,EAAQ31C,aAAcriB,QACnBg4D,EAAQ31C,GAAG2yB,OAId/6C,GAAI+9D,EAAQ31C,IAIZ21C,EAAQ51C,eAAgBpiB,SAAUg4D,EAAQ51C,KAAKyzB,OACjDmiB,EAAQ51C,KAAKyzB,MAAM5zC,QAAQ,SAAUo2D,GACnC,GAAIJ,GAAYF,EAAYM,EAC5BH,GAAUriB,MAAMj0C,KAAKq2D,KAIzBP,EAASt1C,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAIg2C,GAAUrC,EAAWkC,EAAW91C,EAAKnoB,GAAIooB,EAAGpoB,GAAI+9D,EAAQz3D,KAAMy3D,EAAQlC,MACtEmC,EAAYF,EAAYM,EAC5BH,GAAUriB,MAAMj0C,KAAKq2D,KAGnBD,EAAQ31C,aAAcriB,SAAUg4D,EAAQ31C,GAAGwzB,OAC7CmiB,EAAQ31C,GAAGwzB,MAAM5zC,QAAQ,SAAUo2D,GACjC,GAAIJ,GAAYF,EAAYM,EAC5BH,GAAUriB,MAAMj0C,KAAKq2D,OAOzBvZ,EAAQoX,OACVoC,EAAUzvD,QAAUi2C,EAAQoX,MAGvBoC,EAnyBT,GAAI/B,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,GAGJ3vC,EAAM,GACNpnB,EAAQ,EACR1H,EAAI,GACJg8D,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBX,EAAoB,iBA2uBxBj8D,GAAQ67D,SAAWA,EACnB77D,EAAQmlD,WAAaA,GAKjB,SAASllD,EAAQD,GAGrB,QAASslD,GAAWia,EAAWtwD,GAC7B,GAAIotC,MACAb,IACJp7C,MAAK6O,SACHotC,OACEO,cAAc,GAEhBpB,OACEgkB,eAAe,EACf10D,YAAY,IAIArE,SAAZwI,IACF7O,KAAK6O,QAAQusC,MAAqB,cAAIvsC,EAAQuwD,eAAgB,EAC9Dp/D,KAAK6O,QAAQusC,MAAkB,WAAOvsC,EAAQnE,YAAgB,EAC9D1K,KAAK6O,QAAQotC,MAAoB,aAAKptC,EAAQ2tC,cAAgB,EAKhE,KAAK,GAFD6iB,GAASF,EAAUljB,MACnBqjB,EAASH,EAAU/jB,MACd/1C,EAAI,EAAGA,EAAIg6D,EAAO75D,OAAQH,IAAK,CACtC,GAAIilD,MACAiV,EAAQF,EAAOh6D,EACnBilD,GAAS,GAAIiV,EAAMl/D,GACnBiqD,EAAW,KAAIiV,EAAMC,OACrBlV,EAAS,GAAIiV,EAAM91D,OACnB6gD,EAAiB,WAAIiV,EAAMhmB,WAG3B+Q,EAAY,MAAIiV,EAAM50D,MACtB2/C,EAAmB,aAAsBjkD,SAAlBikD,EAAY,OAAkB,EAAQtqD,KAAK6O,QAAQ2tC,aAC1EP,EAAMj0C,KAAKsiD,GAGb,IAAK,GAAIjlD,GAAI,EAAGA,EAAIi6D,EAAO95D,OAAQH,IAAK,CACtC,GAAIq+C,MACA+b,EAAQH,EAAOj6D,EACnBq+C,GAAS,GAAI+b,EAAMp/D,GACnBqjD,EAAiB,WAAI+b,EAAMlmB,WAC3BmK,EAAQ,EAAI+b,EAAMjtD,EAClBkxC,EAAQ,EAAI+b,EAAMhtD,EAClBixC,EAAY,MAAI+b,EAAM53C,MAEpB67B,EAAY,MADuB,GAAjC1jD,KAAK6O,QAAQusC,MAAM1wC,WACL+0D,EAAM90D,MAGUtE,SAAhBo5D,EAAM90D,OAAuBiB,WAAW6zD,EAAM90D,MAAOkB,OAAO4zD,EAAM90D,OAAStE,OAE7Fq9C,EAAa,OAAI+b,EAAM3sD,KACvB4wC,EAAqB,eAAI1jD,KAAK6O,QAAQusC,MAAMgkB,cAC5C1b,EAAqB,eAAI1jD,KAAK6O,QAAQusC,MAAMgkB,cAC5ChkB,EAAMpzC,KAAK07C,GAGb,OAAQtI,MAAMA,EAAOa,MAAMA,GAG7Br8C,EAAQslD,WAAaA,GAIjB,SAASrlD,EAAQD,EAASM,GAI9BL,EAAOD,QAA6B,mBAAX2H,SAA2BA,OAAe,QAAKrH,EAAoB,KAKxF,SAASL,EAAQD,EAASM,GAK5BL,EAAOD,QADa,mBAAX2H,QACQA,OAAe,QAAKrH,EAAoB,IAGxC,WACf,KAAMwD,OAAM,+DAOZ,SAAS7D,EAAQD,EAASM,GAsB9B,QAAS01B,MApBT,GAAIzZ,GAAUjc,EAAoB,IAC9BkkC,EAASlkC,EAAoB,IAC7BS,EAAOT,EAAoB,GAQ3BkjD,GAPUljD,EAAoB,GACnBA,EAAoB,GACvBA,EAAoB,IACjBA,EAAoB,IACjBA,EAAoB,IACrBA,EAAoB,IACvBA,EAAoB,IAClBA,EAAoB,KAChCwB,EAAWxB,EAAoB,GAYnCic,GAAQyZ,EAAKjiB,WASbiiB,EAAKjiB,UAAU0gB,QAAU,SAAUtb,GACjC/Y,KAAKwvB,OAELxvB,KAAKwvB,IAAI9vB,KAAuBsS,SAASM,cAAc,OACvDtS,KAAKwvB,IAAI5jB,WAAuBoG,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIqU,mBAAuB7xB,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIoX,qBAAuB50B,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIkI,gBAAuB1lB,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIkwC,cAAuB1tD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAImwC,eAAuB3tD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIjE,OAAuBvZ,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIloB,KAAuB0K,SAASM,cAAc,OACvDtS,KAAKwvB,IAAI/I,MAAuBzU,SAASM,cAAc,OACvDtS,KAAKwvB,IAAI9nB,IAAuBsK,SAASM,cAAc,OACvDtS,KAAKwvB,IAAI9M,OAAuB1Q,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIowC,UAAuB5tD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIqwC,aAAuB7tD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIswC,cAAuB9tD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIuwC,iBAAuB/tD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIwwC,eAAuBhuD,SAASM,cAAc,OACvDtS,KAAKwvB,IAAIywC,kBAAuBjuD,SAASM,cAAc,OAEvDtS,KAAKwvB,IAAI9vB,KAAKmI,UAA4B,oBAC1C7H,KAAKwvB,IAAI5jB,WAAW/D,UAAsB,sBAC1C7H,KAAKwvB,IAAIqU,mBAAmBh8B,UAAc,+BAC1C7H,KAAKwvB,IAAIoX,qBAAqB/+B,UAAY,iCAC1C7H,KAAKwvB,IAAIkI,gBAAgB7vB,UAAiB,kBAC1C7H,KAAKwvB,IAAIkwC,cAAc73D,UAAmB,gBAC1C7H,KAAKwvB,IAAImwC,eAAe93D,UAAkB,iBAC1C7H,KAAKwvB,IAAI9nB,IAAIG,UAA6B,eAC1C7H,KAAKwvB,IAAI9M,OAAO7a,UAA0B,kBAC1C7H,KAAKwvB,IAAIloB,KAAKO,UAA4B,UAC1C7H,KAAKwvB,IAAIjE,OAAO1jB,UAA0B,UAC1C7H,KAAKwvB,IAAI/I,MAAM5e,UAA2B,UAC1C7H,KAAKwvB,IAAIowC,UAAU/3D,UAAuB,aAC1C7H,KAAKwvB,IAAIqwC,aAAah4D,UAAoB,gBAC1C7H,KAAKwvB,IAAIswC,cAAcj4D,UAAmB,aAC1C7H,KAAKwvB,IAAIuwC,iBAAiBl4D,UAAgB,gBAC1C7H,KAAKwvB,IAAIwwC,eAAen4D,UAAkB,aAC1C7H,KAAKwvB,IAAIywC,kBAAkBp4D,UAAe,gBAE1C7H,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAI5jB,YACnC5L,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAIqU,oBACnC7jC,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAIoX,sBACnC5mC,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAIkI,iBACnC13B,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAIkwC,eACnC1/D,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAImwC,gBACnC3/D,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAI9nB,KACnC1H,KAAKwvB,IAAI9vB,KAAKwS,YAAYlS,KAAKwvB,IAAI9M,QAEnC1iB,KAAKwvB,IAAIkI,gBAAgBxlB,YAAYlS,KAAKwvB,IAAIjE,QAC9CvrB,KAAKwvB,IAAIkwC,cAAcxtD,YAAYlS,KAAKwvB,IAAIloB,MAC5CtH,KAAKwvB,IAAImwC,eAAeztD,YAAYlS,KAAKwvB,IAAI/I,OAE7CzmB,KAAKwvB,IAAIkI,gBAAgBxlB,YAAYlS,KAAKwvB,IAAIowC,WAC9C5/D,KAAKwvB,IAAIkI,gBAAgBxlB,YAAYlS,KAAKwvB,IAAIqwC,cAC9C7/D,KAAKwvB,IAAIkwC,cAAcxtD,YAAYlS,KAAKwvB,IAAIswC,eAC5C9/D,KAAKwvB,IAAIkwC,cAAcxtD,YAAYlS,KAAKwvB,IAAIuwC,kBAC5C//D,KAAKwvB,IAAImwC,eAAeztD,YAAYlS,KAAKwvB,IAAIwwC,gBAC7ChgE,KAAKwvB,IAAImwC,eAAeztD,YAAYlS,KAAKwvB,IAAIywC,mBAE7CjgE,KAAK4T,GAAG,cAAe5T,KAAK6gB,OAAO4T,KAAKz0B,OACxCA,KAAK4T,GAAG,SAAU5T,KAAK6gB,OAAO4T,KAAKz0B,OACnCA,KAAK4T,GAAG,QAAS5T,KAAK09B,SAASjJ,KAAKz0B,OACpCA,KAAK4T,GAAG,QAAS5T,KAAK29B,SAASlJ,KAAKz0B,OACpCA,KAAK4T,GAAG,YAAa5T,KAAKq9B,aAAa5I,KAAKz0B,OAC5CA,KAAK4T,GAAG,OAAQ5T,KAAKs9B,QAAQ7I,KAAKz0B,OAIlCA,KAAK4D,OAASwgC,EAAOpkC,KAAKwvB,IAAI9vB,MAC5B2J,gBAAgB,IAElBrJ,KAAKkgE,YAEL,IAAI1rD,GAAKxU,KACLmgE,GACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBAgChB,IA9BAA,EAAO93D,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAIs3D,IAAQ92D,GAAO+K,OAAOvO,MAAM6N,UAAU8oB,MAAMl8B,KAAKgF,UAAW,GAC5DiP,GAAGmyC,YACLnyC,EAAG2Y,KAAK7U,MAAM9D,EAAI4rD,GAGtB5rD,GAAG5Q,OAAOgQ,GAAGtK,EAAOR,GACpB0L,EAAG0rD,UAAU52D,GAASR,IAIxB9I,KAAK6F,OACHnG,QACAkM,cACA8rB,mBACAgoC,iBACAC,kBACAp0C,UACAjkB,QACAmf,SACA/e,OACAgb,UACA7W,UACAw0D,UAAW,EACXC,aAAc,GAEhBtgE,KAAKm9B,UAGApkB,EAAW,KAAM,IAAIrV,OAAM,wBAChCqV,GAAU7G,YAAYlS,KAAKwvB,IAAI9vB,OA4BjCk2B,EAAKjiB,UAAUuI,WAAa,SAAUrN,GACpC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cAAe,aAAc,iBAAkB,cACxI3N,GAAKiF,gBAAgB0I,EAAQtO,KAAK6O,QAASA,GAEvC,eAAiB7O,MAAK6O,SACxBnN,EAASu1B,qBAAqBj3B,KAAKs0B,KAAMt0B,KAAK6O,QAAQ6lB,aAGpD,cAAgB7lB,KACdA,EAAQk3C,WACV/lD,KAAKgmD,UAAY,GAAI5C,GAAUpjD,KAAKwvB,IAAI9vB,MAGpCM,KAAKgmD,YACPhmD,KAAKgmD,UAAU5iB,gBACRpjC,MAAKgmD,YAMlBhmD,KAAKugE,kBASP,GALAvgE,KAAK+B,WAAWsG,QAAQ,SAAUm4D,GAChCA,EAAUtkD,WAAWrN,KAInBA,GAAWA,EAAQkH,MACrB,KAAM,IAAIrS,OAAM,wEAIlB1D,MAAK6gB,UAOP+U,EAAKjiB,UAAUgzC,SAAW,WACxB,OAAQ3mD,KAAKgmD,WAAahmD,KAAKgmD,UAAUoK,QAM3Cx6B,EAAKjiB,UAAUyvB,QAAU,WAEvBpjC,KAAKgX,QAGLhX,KAAK+T,MAGL/T,KAAKygE,kBAGDzgE,KAAKwvB,IAAI9vB,KAAKkK,YAChB5J,KAAKwvB,IAAI9vB,KAAKkK,WAAWgI,YAAY5R,KAAKwvB,IAAI9vB,MAEhDM,KAAKwvB,IAAM,KAGPxvB,KAAKgmD,YACPhmD,KAAKgmD,UAAU5iB,gBACRpjC,MAAKgmD,UAId,KAAK,GAAI18C,KAAStJ,MAAKkgE,UACjBlgE,KAAKkgE,UAAUv6D,eAAe2D,UACzBtJ,MAAKkgE,UAAU52D,EAG1BtJ,MAAKkgE,UAAY,KACjBlgE,KAAK4D,OAAS,KAGd5D,KAAK+B,WAAWsG,QAAQ,SAAUm4D,GAChCA,EAAUp9B,YAGZpjC,KAAKs0B,KAAO,MAQdsB,EAAKjiB,UAAU4wB,cAAgB,SAAUlK,GACvC,IAAKr6B,KAAKs1B,WACR,KAAM,IAAI5xB,OAAM,yDAGlB1D,MAAKs1B,WAAWiP,cAAclK,IAOhCzE,EAAKjiB,UAAU6wB,cAAgB,WAC7B,IAAKxkC,KAAKs1B,WACR,KAAM,IAAI5xB,OAAM,yDAGlB,OAAO1D,MAAKs1B,WAAWkP,iBAQzB5O,EAAKjiB,UAAUq6B,gBAAkB,WAC/B,MAAOhuC,MAAKu1B,SAAWv1B,KAAKu1B,QAAQyY,uBAetCpY,EAAKjiB,UAAUqD,MAAQ,SAAS0pD,KAEzBA,GAAQA,EAAK1+D,QAChBhC,KAAK21B,SAAS,QAIX+qC,GAAQA,EAAK5sC,SAChB9zB,KAAK01B,UAAU,QAIZgrC,GAAQA,EAAK7xD,WAChB7O,KAAK+B,WAAWsG,QAAQ,SAAUm4D,GAChCA,EAAUtkD,WAAWskD,EAAUxsC,kBAGjCh0B,KAAKkc,WAAWlc,KAAKg0B,kBAazB4B,EAAKjiB,UAAUsiB,IAAM,SAASpnB,GAE5B,GAAI8xD,GAAY3gE,KAAKu2B,eAGjB1mB,EAAQ8wD,EAAUp1D,IAClB+E,EAAMqwD,EAAU3zD,GACpB,IAAa,MAAT6C,GAAwB,MAAPS,EAAa,CAChC,GAAI8hB,GAAY9hB,EAAIzJ,UAAYgJ,EAAMhJ,SACtB,IAAZurB,IAEFA,EAAW,OAEbviB,EAAQ,GAAI1L,MAAK0L,EAAMhJ,UAAuB,IAAXurB,GACnC9hB,EAAM,GAAInM,MAAKmM,EAAIzJ,UAAuB,IAAXurB,GAIjC,GAAc,OAAVviB,GAA0B,OAARS,EAAtB,CAIA,GAAI0lB,GAAWnnB,GAA+BxI,SAApBwI,EAAQmnB,QAAyBnnB,EAAQmnB,SAAU,CAC7Eh2B,MAAKiP,MAAMkkB,SAAStjB,EAAOS,EAAK0lB,KAsBlCJ,EAAKjiB,UAAUoiB,UAAY,SAASlmB,EAAOS,EAAKzB,GAC9C,GAAImnB,GAAWnnB,GAA+BxI,SAApBwI,EAAQmnB,QAAyBnnB,EAAQmnB,SAAU,CAC7E,IAAwB,GAApBzwB,UAAUC,OAAa,CACzB,GAAIyJ,GAAQ1J,UAAU,EACtBvF,MAAKiP,MAAMkkB,SAASlkB,EAAMY,MAAOZ,EAAMqB,IAAK0lB,OAG5Ch2B,MAAKiP,MAAMkkB,SAAStjB,EAAOS,EAAK0lB,IAcpCJ,EAAKjiB,UAAUsT,OAAS,SAASoT,EAAMxrB,GACrC,GAAIujB,GAAWpyB,KAAKiP,MAAMqB,IAAMtQ,KAAKiP,MAAMY,MACvC3B,EAAIvN,EAAK+F,QAAQ2zB,EAAM,QAAQxzB,UAE/BgJ,EAAQ3B,EAAIkkB,EAAW,EACvB9hB,EAAMpC,EAAIkkB,EAAW,EACrB4D,EAAWnnB,GAA+BxI,SAApBwI,EAAQmnB,QAAyBnnB,EAAQmnB,SAAU,CAE7Eh2B,MAAKiP,MAAMkkB,SAAStjB,EAAOS,EAAK0lB,IAOlCJ,EAAKjiB,UAAUitD,UAAY,WACzB,GAAI3xD,GAAQjP,KAAKiP,MAAM0vB,UACvB,QACE9uB,MAAO,GAAI1L,MAAK8K,EAAMY,OACtBS,IAAK,GAAInM,MAAK8K,EAAMqB,OAQxBslB,EAAKjiB,UAAUkN,OAAS,WACtB,GAAIyiB,IAAU,EACVz0B,EAAU7O,KAAK6O,QACfhJ,EAAQ7F,KAAK6F,MACb2pB,EAAMxvB,KAAKwvB,GAEf,IAAKA,EAAL,CAEA9tB,EAAS+1B,kBAAkBz3B,KAAKs0B,KAAMt0B,KAAK6O,QAAQ6lB,aAGxB,OAAvB7lB,EAAQqlB,aACVvzB,EAAKiH,aAAa4nB,EAAI9vB,KAAM,OAC5BiB,EAAKuH,gBAAgBsnB,EAAI9vB,KAAM,YAG/BiB,EAAKuH,gBAAgBsnB,EAAI9vB,KAAM,OAC/BiB,EAAKiH,aAAa4nB,EAAI9vB,KAAM,WAI9B8vB,EAAI9vB,KAAK4N,MAAM6mB,UAAYxzB,EAAKkJ,OAAOK,OAAO2E,EAAQslB,UAAW,IACjE3E,EAAI9vB,KAAK4N,MAAM8mB,UAAYzzB,EAAKkJ,OAAOK,OAAO2E,EAAQulB,UAAW,IACjE5E,EAAI9vB,KAAK4N,MAAM0F,MAAQrS,EAAKkJ,OAAOK,OAAO2E,EAAQmE,MAAO,IAGzDnN,EAAMgG,OAAOvE,MAAUkoB,EAAIkI,gBAAgB7H,YAAcL,EAAIkI,gBAAgB9Y,aAAe,EAC5F/Y,EAAMgG,OAAO4a,MAAS5gB,EAAMgG,OAAOvE,KACnCzB,EAAMgG,OAAOnE,KAAU8nB,EAAIkI,gBAAgB3H,aAAeP,EAAIkI,gBAAgBzT,cAAgB,EAC9Fpe,EAAMgG,OAAO6W,OAAS7c,EAAMgG,OAAOnE,GACnC,IAAIm5D,GAAkBrxC,EAAI9vB,KAAKqwB,aAAeP,EAAI9vB,KAAKukB,aACnD68C,EAAkBtxC,EAAI9vB,KAAKmwB,YAAcL,EAAI9vB,KAAKkf,WAIb,KAArC4Q,EAAIkI,gBAAgBzT,eACtBpe,EAAMgG,OAAOvE,KAAOzB,EAAMgG,OAAOnE,IACjC7B,EAAMgG,OAAO4a,MAAS5gB,EAAMgG,OAAOvE,MAEP,IAA1BkoB,EAAI9vB,KAAKukB,eACX68C,EAAkBD,GAKpBh7D,EAAM0lB,OAAOtY,OAASuc,EAAIjE,OAAOwE,aACjClqB,EAAMyB,KAAK2L,OAAWuc,EAAIloB,KAAKyoB,aAC/BlqB,EAAM4gB,MAAMxT,OAAUuc,EAAI/I,MAAMsJ,aAChClqB,EAAM6B,IAAIuL,OAAYuc,EAAI9nB,IAAIuc,eAAoBpe,EAAMgG,OAAOnE,IAC/D7B,EAAM6c,OAAOzP,OAASuc,EAAI9M,OAAOuB,eAAiBpe,EAAMgG,OAAO6W,MAM/D,IAAIoN,GAAgB/qB,KAAKiI,IAAInH,EAAMyB,KAAK2L,OAAQpN,EAAM0lB,OAAOtY,OAAQpN,EAAM4gB,MAAMxT,QAC7E8tD,EAAal7D,EAAM6B,IAAIuL,OAAS6c,EAAgBjqB,EAAM6c,OAAOzP,OAC/D4tD,EAAmBh7D,EAAMgG,OAAOnE,IAAM7B,EAAMgG,OAAO6W,MACrD8M,GAAI9vB,KAAK4N,MAAM2F,OAAStS,EAAKkJ,OAAOK,OAAO2E,EAAQoE,OAAQ8tD,EAAa,MAGxEl7D,EAAMnG,KAAKuT,OAASuc,EAAI9vB,KAAKqwB,aAC7BlqB,EAAM+F,WAAWqH,OAASpN,EAAMnG,KAAKuT,OAAS4tD,CAC9C,IAAI7lC,GAAkBn1B,EAAMnG,KAAKuT,OAASpN,EAAM6B,IAAIuL,OAASpN,EAAM6c,OAAOzP,OACxE4tD,CACFh7D,GAAM6xB,gBAAgBzkB,OAAU+nB,EAChCn1B,EAAM65D,cAAczsD,OAAY+nB,EAChCn1B,EAAM85D,eAAe1sD,OAAWpN,EAAM65D,cAAczsD,OAGpDpN,EAAMnG,KAAKsT,MAAQwc,EAAI9vB,KAAKmwB,YAC5BhqB,EAAM+F,WAAWoH,MAAQnN,EAAMnG,KAAKsT,MAAQ8tD,EAC5Cj7D,EAAMyB,KAAK0L,MAAQwc,EAAIkwC,cAAc9gD,cAAkB/Y,EAAMgG,OAAOvE,KACpEzB,EAAM65D,cAAc1sD,MAAQnN,EAAMyB,KAAK0L,MACvCnN,EAAM4gB,MAAMzT,MAAQwc,EAAImwC,eAAe/gD,cAAgB/Y,EAAMgG,OAAO4a,MACpE5gB,EAAM85D,eAAe3sD,MAAQnN,EAAM4gB,MAAMzT,KACzC,IAAIguD,GAAcn7D,EAAMnG,KAAKsT,MAAQnN,EAAMyB,KAAK0L,MAAQnN,EAAM4gB,MAAMzT,MAAQ8tD,CAC5Ej7D,GAAM0lB,OAAOvY,MAAiBguD,EAC9Bn7D,EAAM6xB,gBAAgB1kB,MAAQguD,EAC9Bn7D,EAAM6B,IAAIsL,MAAoBguD,EAC9Bn7D,EAAM6c,OAAO1P,MAAiBguD,EAG9BxxC,EAAI5jB,WAAW0B,MAAM2F,OAAmBpN,EAAM+F,WAAWqH,OAAS,KAClEuc,EAAIqU,mBAAmBv2B,MAAM2F,OAAWpN,EAAM+F,WAAWqH,OAAS,KAClEuc,EAAIoX,qBAAqBt5B,MAAM2F,OAASpN,EAAM6xB,gBAAgBzkB,OAAS,KACvEuc,EAAIkI,gBAAgBpqB,MAAM2F,OAAcpN,EAAM6xB,gBAAgBzkB,OAAS,KACvEuc,EAAIkwC,cAAcpyD,MAAM2F,OAAgBpN,EAAM65D,cAAczsD,OAAS,KACrEuc,EAAImwC,eAAeryD,MAAM2F,OAAepN,EAAM85D,eAAe1sD,OAAS,KAEtEuc,EAAI5jB,WAAW0B,MAAM0F,MAAmBnN,EAAM+F,WAAWoH,MAAQ,KACjEwc,EAAIqU,mBAAmBv2B,MAAM0F,MAAWnN,EAAM6xB,gBAAgB1kB,MAAQ,KACtEwc,EAAIoX,qBAAqBt5B,MAAM0F,MAASnN,EAAM+F,WAAWoH,MAAQ,KACjEwc,EAAIkI,gBAAgBpqB,MAAM0F,MAAcnN,EAAM0lB,OAAOvY,MAAQ,KAC7Dwc,EAAI9nB,IAAI4F,MAAM0F,MAA0BnN,EAAM6B,IAAIsL,MAAQ,KAC1Dwc,EAAI9M,OAAOpV,MAAM0F,MAAuBnN,EAAM6c,OAAO1P,MAAQ,KAG7Dwc,EAAI5jB,WAAW0B,MAAMhG,KAAiB,IACtCkoB,EAAI5jB,WAAW0B,MAAM5F,IAAiB,IACtC8nB,EAAIqU,mBAAmBv2B,MAAMhG,KAAUzB,EAAMyB,KAAK0L,MAAQnN,EAAMgG,OAAOvE,KAAQ,KAC/EkoB,EAAIqU,mBAAmBv2B,MAAM5F,IAAS,IACtC8nB,EAAIoX,qBAAqBt5B,MAAMhG,KAAO,IACtCkoB,EAAIoX,qBAAqBt5B,MAAM5F,IAAO7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAIkI,gBAAgBpqB,MAAMhG,KAAYzB,EAAMyB,KAAK0L,MAAQ,KACzDwc,EAAIkI,gBAAgBpqB,MAAM5F,IAAY7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAIkwC,cAAcpyD,MAAMhG,KAAc,IACtCkoB,EAAIkwC,cAAcpyD,MAAM5F,IAAc7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAImwC,eAAeryD,MAAMhG,KAAczB,EAAMyB,KAAK0L,MAAQnN,EAAM0lB,OAAOvY,MAAS,KAChFwc,EAAImwC,eAAeryD,MAAM5F,IAAa7B,EAAM6B,IAAIuL,OAAS,KACzDuc,EAAI9nB,IAAI4F,MAAMhG,KAAwBzB,EAAMyB,KAAK0L,MAAQ,KACzDwc,EAAI9nB,IAAI4F,MAAM5F,IAAwB,IACtC8nB,EAAI9M,OAAOpV,MAAMhG,KAAqBzB,EAAMyB,KAAK0L,MAAQ,KACzDwc,EAAI9M,OAAOpV,MAAM5F,IAAsB7B,EAAM6B,IAAIuL,OAASpN,EAAM6xB,gBAAgBzkB,OAAU,KAI1FjT,KAAKihE,kBAGL,IAAIl4C,GAAS/oB,KAAK6F,MAAMw6D,SACG,WAAvBxxD,EAAQqlB,cACVnL,GAAUhkB,KAAKiI,IAAIhN,KAAK6F,MAAM6xB,gBAAgBzkB,OAASjT,KAAK6F,MAAM0lB,OAAOtY,OACvEjT,KAAK6F,MAAMgG,OAAOnE,IAAM1H,KAAK6F,MAAMgG,OAAO6W,OAAQ,IAEtD8M,EAAIjE,OAAOje,MAAMhG,KAAO,IACxBkoB,EAAIjE,OAAOje,MAAM5F,IAAOqhB,EAAS,KACjCyG,EAAIloB,KAAKgG,MAAMhG,KAAS,IACxBkoB,EAAIloB,KAAKgG,MAAM5F,IAASqhB,EAAS,KACjCyG,EAAI/I,MAAMnZ,MAAMhG,KAAQ,IACxBkoB,EAAI/I,MAAMnZ,MAAM5F,IAAQqhB,EAAS,IAGjC,IAAIm4C,GAAwC,GAAxBlhE,KAAK6F,MAAMw6D,UAAiB,SAAW,GACvDc,EAAmBnhE,KAAK6F,MAAMw6D,WAAargE,KAAK6F,MAAMy6D,aAAe,SAAW,EACpF9wC,GAAIowC,UAAUtyD,MAAM0pB,WAAsBkqC,EAC1C1xC,EAAIqwC,aAAavyD,MAAM0pB,WAAmBmqC,EAC1C3xC,EAAIswC,cAAcxyD,MAAM0pB,WAAkBkqC,EAC1C1xC,EAAIuwC,iBAAiBzyD,MAAM0pB,WAAemqC,EAC1C3xC,EAAIwwC,eAAe1yD,MAAM0pB,WAAiBkqC,EAC1C1xC,EAAIywC,kBAAkB3yD,MAAM0pB,WAAcmqC,EAG1CnhE,KAAK+B,WAAWsG,QAAQ,SAAUm4D,GAChCl9B,EAAUk9B,EAAU3/C,UAAYyiB,IAE9BA,GAEFtjC,KAAK6gB,WAKT+U,EAAKjiB,UAAUytD,QAAU,WACvB,KAAM,IAAI19D,OAAM,wDAUlBkyB,EAAKjiB,UAAUqwB,eAAiB,SAAS3J,GACvC,IAAKr6B,KAAKq1B,YACR,KAAM,IAAI3xB,OAAM,sCAGlB1D,MAAKq1B,YAAY2O,eAAe3J,IAQlCzE,EAAKjiB,UAAUswB,eAAiB,WAC9B,IAAKjkC,KAAKq1B,YACR,KAAM,IAAI3xB,OAAM,sCAGlB,OAAO1D,MAAKq1B,YAAY4O,kBAU1BrO,EAAKjiB,UAAUshB,QAAU,SAASziB,GAChC,MAAO9Q,GAASszB,OAAOh1B,KAAKs0B,KAAMt0B,KAAKiP,MAAOuD,EAAGxS,KAAK6F,MAAM0lB,OAAOvY,QA0BrE4iB,EAAKjiB,UAAUwhB,cAAgB,SAAS3iB,GACtC,MAAO9Q,GAASszB,OAAOh1B,KAAKs0B,KAAMt0B,KAAKiP,MAAOuD,EAAGxS,KAAK6F,MAAMnG,KAAKsT,QAanE4iB,EAAKjiB,UAAUkhB,UAAY,SAASwF,GAClC,MAAO34B,GAASkzB,SAAS50B,KAAMq6B,EAAMr6B,KAAK6F,MAAM0lB,OAAOvY,QAczD4iB,EAAKjiB,UAAUohB,gBAAkB,SAASsF,GACxC,MAAO34B,GAASkzB,SAAS50B,KAAMq6B,EAAMr6B,KAAK6F,MAAMnG,KAAKsT,QAUvD4iB,EAAKjiB,UAAU4sD,gBAAkB,WACA,GAA3BvgE,KAAK6O,QAAQolB,WACfj0B,KAAKqhE,mBAGLrhE,KAAKygE,mBAST7qC,EAAKjiB,UAAU0tD,iBAAmB,WAChC,GAAI7sD,GAAKxU,IAETA,MAAKygE,kBAELzgE,KAAKshE,UAAY,WACf,MAA6B,IAAzB9sD,EAAG3F,QAAQolB,eAEbzf,GAAGisD,uBAIDjsD,EAAGgb,IAAI9vB,OAKJ8U,EAAGgb,IAAI9vB,KAAKmwB,aAAerb,EAAG3O,MAAM0oC,WACtC/5B,EAAGgb,IAAI9vB,KAAKqwB,cAAgBvb,EAAG3O,MAAM07D,cACtC/sD,EAAG3O,MAAM0oC,UAAY/5B,EAAGgb,IAAI9vB,KAAKmwB,YACjCrb,EAAG3O,MAAM07D,WAAa/sD,EAAGgb,IAAI9vB,KAAKqwB,aAElCvb,EAAG2Y,KAAK,aAMdxsB,EAAKgI,iBAAiBpB,OAAQ,SAAUvH,KAAKshE,WAE7CthE,KAAKwhE,WAAaC,YAAYzhE,KAAKshE,UAAW,MAOhD1rC,EAAKjiB,UAAU8sD,gBAAkB,WAC3BzgE,KAAKwhE,aACPnvC,cAAcryB,KAAKwhE,YACnBxhE,KAAKwhE,WAAan7D,QAIpB1F,EAAKwI,oBAAoB5B,OAAQ,SAAUvH,KAAKshE,WAChDthE,KAAKshE,UAAY,MAQnB1rC,EAAKjiB,UAAU+pB,SAAW,WACxB19B,KAAKm9B,MAAM2B,eAAgB,GAQ7BlJ,EAAKjiB,UAAUgqB,SAAW,WACxB39B,KAAKm9B,MAAM2B,eAAgB,GAQ7BlJ,EAAKjiB,UAAU0pB,aAAe,WAC5Br9B,KAAKm9B,MAAMukC,iBAAmB1hE,KAAK6F,MAAMw6D,WAQ3CzqC,EAAKjiB,UAAU2pB,QAAU,SAAUh0B,GAGjC,GAAKtJ,KAAKm9B,MAAM2B,cAAhB,CAEA,GAAI5Q,GAAQ5kB,EAAMy1B,QAAQE,OAEtB0iC,EAAe3hE,KAAK4hE,gBACpBC,EAAe7hE,KAAK8hE,cAAc9hE,KAAKm9B,MAAMukC,iBAAmBxzC,EAEhE2zC,IAAgBF,GAClB3hE,KAAK6gB,WAUT+U,EAAKjiB,UAAUmuD,cAAgB,SAAUzB,GAGvC,MAFArgE,MAAK6F,MAAMw6D,UAAYA,EACvBrgE,KAAKihE,mBACEjhE,KAAK6F,MAAMw6D,WAQpBzqC,EAAKjiB,UAAUstD,iBAAmB,WAEhC,GAAIX,GAAev7D,KAAKwG,IAAIvL,KAAK6F,MAAM6xB,gBAAgBzkB,OAASjT,KAAK6F,MAAM0lB,OAAOtY,OAAQ,EAc1F,OAbIqtD,IAAgBtgE,KAAK6F,MAAMy6D,eAGG,UAA5BtgE,KAAK6O,QAAQqlB,cACfl0B,KAAK6F,MAAMw6D,WAAcC,EAAetgE,KAAK6F,MAAMy6D,cAErDtgE,KAAK6F,MAAMy6D,aAAeA,GAIxBtgE,KAAK6F,MAAMw6D,UAAY,IAAGrgE,KAAK6F,MAAMw6D,UAAY,GACjDrgE,KAAK6F,MAAMw6D,UAAYC,IAActgE,KAAK6F,MAAMw6D,UAAYC,GAEzDtgE,KAAK6F,MAAMw6D,WAQpBzqC,EAAKjiB,UAAUiuD,cAAgB,WAC7B,MAAO5hE,MAAK6F,MAAMw6D,WAGpBxgE,EAAOD,QAAUg2B,GAKb,SAAS/1B,EAAQD,EAASM,GAE9B,GAAIkkC,GAASlkC,EAAoB,GAOjCN,GAAQy/B,YAAc,SAASz2B,EAASU,GACtC,GAAIy4D,GAAY,KAMZriC,EAAU0E,EAAO96B,MAAM04D,aAAa14D,EAAOy4D,GAC3ChjC,EAAUqF,EAAO96B,MAAM24D,iBAAiBjiE,KAAM+hE,EAAWriC,EAASp2B,EAWtE,OAPI/E,OAAMw6B,EAAQxT,OAAOuS,SACvBiB,EAAQxT,OAAOuS,MAAQx0B,EAAMw0B,OAE3Bv5B,MAAMw6B,EAAQxT,OAAOwS,SACvBgB,EAAQxT,OAAOwS,MAAQz0B,EAAMy0B,OAGxBgB,IAML,SAASl/B,EAAQD,GAGrBA,EAAY,IACVo7C,KAAM,OACNG,IAAK,kBACL+mB,KAAM,OACNlG,QAAS,WACTG,QAAS,WACTgG,SAAU,YACVlnB,SAAU,YACVmnB,eAAgB,+CAChBC,gBAAiB,qEACjBC,oBAAqB,wEACrBC,gBAAiB,kCACjBC,mBAAoB,+BAEtB5iE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVo7C,KAAM,WACNG,IAAK,uBACL+mB,KAAM,QACNlG,QAAS,iBACTG,QAAS,iBACTgG,SAAU,gBACVlnB,SAAU,gBACVmnB,eAAgB,uDAChBC,gBAAiB,6EACjBC,oBAAqB,kFACrBC,gBAAiB,wCACjBC,mBAAoB,2CAEtB5iE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,WAKoC,mBAA7B6iE,4BAKTA,yBAAyB9uD,UAAU6mD,OAAS,SAAShoD,EAAGC,EAAGjG,GACzDxM,KAAKgnB,YACLhnB,KAAK+qB,IAAIvY,EAAGC,EAAGjG,EAAG,EAAG,EAAEzH,KAAKimB,IAAI,IASlCy3C,yBAAyB9uD,UAAU+uD,OAAS,SAASlwD,EAAGC,EAAGjG,GACzDxM,KAAKgnB,YACLhnB,KAAKkT,KAAKV,EAAIhG,EAAGiG,EAAIjG,EAAO,EAAJA,EAAW,EAAJA,IASjCi2D,yBAAyB9uD,UAAU6a,SAAW,SAAShc,EAAGC,EAAGjG,GAE3DxM,KAAKgnB,WAEL,IAAI3b,GAAQ,EAAJmB,EACJm2D,EAAKt3D,EAAI,EACTu3D,EAAK79D,KAAKqqB,KAAK,GAAK,EAAI/jB,EACxBD,EAAIrG,KAAKqqB,KAAK/jB,EAAIA,EAAIs3D,EAAKA,EAE/B3iE,MAAKinB,OAAOzU,EAAGC,GAAKrH,EAAIw3D,IACxB5iE,KAAKknB,OAAO1U,EAAImwD,EAAIlwD,EAAImwD,GACxB5iE,KAAKknB,OAAO1U,EAAImwD,EAAIlwD,EAAImwD,GACxB5iE,KAAKknB,OAAO1U,EAAGC,GAAKrH,EAAIw3D,IACxB5iE,KAAKqnB,aASPo7C,yBAAyB9uD,UAAUkvD,aAAe,SAASrwD,EAAGC,EAAGjG,GAE/DxM,KAAKgnB,WAEL,IAAI3b,GAAQ,EAAJmB,EACJm2D,EAAKt3D,EAAI,EACTu3D,EAAK79D,KAAKqqB,KAAK,GAAK,EAAI/jB,EACxBD,EAAIrG,KAAKqqB,KAAK/jB,EAAIA,EAAIs3D,EAAKA,EAE/B3iE,MAAKinB,OAAOzU,EAAGC,GAAKrH,EAAIw3D,IACxB5iE,KAAKknB,OAAO1U,EAAImwD,EAAIlwD,EAAImwD,GACxB5iE,KAAKknB,OAAO1U,EAAImwD,EAAIlwD,EAAImwD,GACxB5iE,KAAKknB,OAAO1U,EAAGC,GAAKrH,EAAIw3D,IACxB5iE,KAAKqnB,aASPo7C,yBAAyB9uD,UAAUmvD,KAAO,SAAStwD,EAAGC,EAAGjG,GAEvDxM,KAAKgnB,WAEL,KAAK,GAAI+7C,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAIj4C,GAAUi4C,EAAI,IAAM,EAAS,IAAJv2D,EAAc,GAAJA,CACvCxM,MAAKknB,OACD1U,EAAIsY,EAAS/lB,KAAKyY,IAAQ,EAAJulD,EAAQh+D,KAAKimB,GAAK,IACxCvY,EAAIqY,EAAS/lB,KAAK4Y,IAAQ,EAAJolD,EAAQh+D,KAAKimB,GAAK,KAI9ChrB,KAAKqnB,aAMPo7C,yBAAyB9uD,UAAU0mD,UAAY,SAAS7nD,EAAGC,EAAGw5C,EAAG7gD,EAAGoB,GAClE,GAAIw2D,GAAMj+D,KAAKimB,GAAG,GACE,GAAhBihC,EAAM,EAAIz/C,IAAYA,EAAMy/C,EAAI,GAChB,EAAhB7gD,EAAM,EAAIoB,IAAYA,EAAMpB,EAAI,GACpCpL,KAAKgnB,YACLhnB,KAAKinB,OAAOzU,EAAEhG,EAAEiG,GAChBzS,KAAKknB,OAAO1U,EAAEy5C,EAAEz/C,EAAEiG,GAClBzS,KAAK+qB,IAAIvY,EAAEy5C,EAAEz/C,EAAEiG,EAAEjG,EAAEA,EAAM,IAAJw2D,EAAY,IAAJA,GAAQ,GACrChjE,KAAKknB,OAAO1U,EAAEy5C,EAAEx5C,EAAErH,EAAEoB,GACpBxM,KAAK+qB,IAAIvY,EAAEy5C,EAAEz/C,EAAEiG,EAAErH,EAAEoB,EAAEA,EAAE,EAAM,GAAJw2D,GAAO,GAChChjE,KAAKknB,OAAO1U,EAAEhG,EAAEiG,EAAErH,GAClBpL,KAAK+qB,IAAIvY,EAAEhG,EAAEiG,EAAErH,EAAEoB,EAAEA,EAAM,GAAJw2D,EAAW,IAAJA,GAAQ,GACpChjE,KAAKknB,OAAO1U,EAAEC,EAAEjG,GAChBxM,KAAK+qB,IAAIvY,EAAEhG,EAAEiG,EAAEjG,EAAEA,EAAM,IAAJw2D,EAAY,IAAJA,GAAQ,IAMrCP,yBAAyB9uD,UAAU+mD,QAAU,SAASloD,EAAGC,EAAGw5C,EAAG7gD,GAC7D,GAAI63D,GAAQ,SACRC,EAAMjX,EAAI,EAAKgX,EACfE,EAAM/3D,EAAI,EAAK63D,EACfG,EAAK5wD,EAAIy5C,EACToX,EAAK5wD,EAAIrH,EACTk4D,EAAK9wD,EAAIy5C,EAAI,EACbsX,EAAK9wD,EAAIrH,EAAI,CAEjBpL,MAAKgnB,YACLhnB,KAAKinB,OAAOzU,EAAG+wD,GACfvjE,KAAKwjE,cAAchxD,EAAG+wD,EAAKJ,EAAIG,EAAKJ,EAAIzwD,EAAG6wD,EAAI7wD,GAC/CzS,KAAKwjE,cAAcF,EAAKJ,EAAIzwD,EAAG2wD,EAAIG,EAAKJ,EAAIC,EAAIG,GAChDvjE,KAAKwjE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDrjE,KAAKwjE,cAAcF,EAAKJ,EAAIG,EAAI7wD,EAAG+wD,EAAKJ,EAAI3wD,EAAG+wD,IAQjDd,yBAAyB9uD,UAAU2mD,SAAW,SAAS9nD,EAAGC,EAAGw5C,EAAG7gD,GAC9D,GAAImB,GAAI,EAAE,EACNk3D,EAAWxX,EACXyX,EAAWt4D,EAAImB,EAEf02D,EAAQ,SACRC,EAAMO,EAAW,EAAKR,EACtBE,EAAMO,EAAW,EAAKT,EACtBG,EAAK5wD,EAAIixD,EACTJ,EAAK5wD,EAAIixD,EACTJ,EAAK9wD,EAAIixD,EAAW,EACpBF,EAAK9wD,EAAIixD,EAAW,EACpBC,EAAMlxD,GAAKrH,EAAIs4D,EAAS,GACxBE,EAAMnxD,EAAIrH,CAEdpL,MAAKgnB,YACLhnB,KAAKinB,OAAOm8C,EAAIG,GAEhBvjE,KAAKwjE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDrjE,KAAKwjE,cAAcF,EAAKJ,EAAIG,EAAI7wD,EAAG+wD,EAAKJ,EAAI3wD,EAAG+wD,GAE/CvjE,KAAKwjE,cAAchxD,EAAG+wD,EAAKJ,EAAIG,EAAKJ,EAAIzwD,EAAG6wD,EAAI7wD,GAC/CzS,KAAKwjE,cAAcF,EAAKJ,EAAIzwD,EAAG2wD,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhDvjE,KAAKknB,OAAOk8C,EAAIO,GAEhB3jE,KAAKwjE,cAAcJ,EAAIO,EAAMR,EAAIG,EAAKJ,EAAIU,EAAKN,EAAIM,GACnD5jE,KAAKwjE,cAAcF,EAAKJ,EAAIU,EAAKpxD,EAAGmxD,EAAMR,EAAI3wD,EAAGmxD,GAEjD3jE,KAAKknB,OAAO1U,EAAG+wD,IAOjBd,yBAAyB9uD,UAAUogD,MAAQ,SAASvhD,EAAGC,EAAGu4C,EAAOxlD,GAE/D,GAAIq+D,GAAKrxD,EAAIhN,EAAST,KAAK4Y,IAAIqtC,GAC3B8Y,EAAKrxD,EAAIjN,EAAST,KAAKyY,IAAIwtC,GAI3B+Y,EAAKvxD,EAAa,GAAThN,EAAeT,KAAK4Y,IAAIqtC,GACjCgZ,EAAKvxD,EAAa,GAATjN,EAAeT,KAAKyY,IAAIwtC,GAGjCiZ,EAAKJ,EAAKr+D,EAAS,EAAIT,KAAK4Y,IAAIqtC,EAAQ,GAAMjmD,KAAKimB,IACnDk5C,EAAKJ,EAAKt+D,EAAS,EAAIT,KAAKyY,IAAIwtC,EAAQ,GAAMjmD,KAAKimB,IAGnDm5C,EAAKN,EAAKr+D,EAAS,EAAIT,KAAK4Y,IAAIqtC,EAAQ,GAAMjmD,KAAKimB,IACnDo5C,EAAKN,EAAKt+D,EAAS,EAAIT,KAAKyY,IAAIwtC,EAAQ,GAAMjmD,KAAKimB,GAEvDhrB,MAAKgnB,YACLhnB,KAAKinB,OAAOzU,EAAGC,GACfzS,KAAKknB,OAAO+8C,EAAIC,GAChBlkE,KAAKknB,OAAO68C,EAAIC,GAChBhkE,KAAKknB,OAAOi9C,EAAIC,GAChBpkE,KAAKqnB,aASPo7C,yBAAyB9uD,UAAUigD,WAAa,SAASphD,EAAEC,EAAE+hD,EAAGC,EAAG4P,GAC5DA,IAAWA,GAAW,GAAG,IACd,GAAZC,IAAeA,EAAa,KAChC,IAAIC,GAAYF,EAAU7+D,MAC1BxF,MAAKinB,OAAOzU,EAAGC,EAKf,KAJA,GAAIuL,GAAMw2C,EAAGhiD,EAAIyL,EAAMw2C,EAAGhiD,EACtB+xD,EAAQvmD,EAAGD,EACXymD,EAAgB1/D,KAAKqqB,KAAMpR,EAAGA,EAAKC,EAAGA,GACtCymD,EAAU,EAAG9X,GAAK,EACf6X,GAAe,IAAI,CACxB,GAAIH,GAAaD,EAAUK,IAAYH,EACnCD,GAAaG,IAAeH,EAAaG,EAC7C,IAAIvpD,GAAQnW,KAAKqqB,KAAMk1C,EAAWA,GAAc,EAAIE,EAAMA,GACnD,GAAHxmD,IAAM9C,GAASA,GACnB1I,GAAK0I,EACLzI,GAAK+xD,EAAMtpD,EACXlb,KAAK4sD,EAAO,SAAW,UAAUp6C,EAAEC,GACnCgyD,GAAiBH,EACjB1X,GAAQA,MAUV,SAAS/sD,EAAQD,GAGrBA,EAAY,IACVg6B,QAAS,UACTS,KAAM,QAERz6B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACV+kE,OAAQ,aACRtqC,KAAM,QAERz6B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,SAASC,EAAQD,EAASM,GAE9B,GAAI0kE,GAAe1kE,EAAoB,IACnC2kE,EAAe3kE,EAAoB,IACnC4kE,EAAe5kE,EAAoB,IACnC6kE,EAAiB7kE,EAAoB,IACrC8kE,EAAoB9kE,EAAoB,IACxC+kE,EAAkB/kE,EAAoB,IACtCglE,EAA0BhlE,EAAoB,GAQlDN,GAAQulE,WAAa,SAAUC,GAC7B,IAAK,GAAIC,KAAiBD,GACpBA,EAAez/D,eAAe0/D,KAChCrlE,KAAKqlE,GAAiBD,EAAeC,KAY3CzlE,EAAQ0lE,YAAc,SAAUF,GAC9B,IAAK,GAAIC,KAAiBD,GACpBA,EAAez/D,eAAe0/D,KAChCrlE,KAAKqlE,GAAiBh/D,SAW5BzG,EAAQqhD,mBAAqB,WAC3BjhD,KAAKmlE,WAAWP,GAChB5kE,KAAKulE,2BACkC,GAAnCvlE,KAAK4/C,UAAUnD,kBACjBz8C,KAAKwlE,6BAUT5lE,EAAQuhD,mBAAqB,WAC3BnhD,KAAKs3D,eAAiB,EACtBt3D,KAAKylE,aAAe,EACpBzlE,KAAKmlE,WAAWN,IASlBjlE,EAAQshD,kBAAoB,WAC1BlhD,KAAK8rD,WACL9rD,KAAK0lE,cAAgB,WACrB1lE,KAAK8rD,QAAgB,UACrB9rD,KAAK8rD,QAAgB,OAAE,YAAc1Q,SACnCa,SACA4F,eACA+V,eAAkB,EAClB+N,YAAet/D,QACjBrG,KAAK8rD,QAAgB,UACrB9rD,KAAK8rD,QAAiB,SAAK1Q,SACzBa,SACA4F,eACA+V,eAAkB,EAClB+N,YAAet/D,QAEjBrG,KAAK6hD,YAAc7hD,KAAK8rD,QAAgB,OAAE,WAAwB,YAElE9rD,KAAKmlE,WAAWL,IASlBllE,EAAQwhD,qBAAuB,WAC7BphD,KAAKkoD,cAAgB9M,SAAWa,UAEhCj8C,KAAKmlE,WAAWJ,IASlBnlE,EAAQumD,wBAA0B,WAEhCnmD,KAAK4lE,8BAA+B,EACpC5lE,KAAK6lE,sBAAuB,EAEmB,GAA3C7lE,KAAK4/C,UAAUnB,iBAAiB3vC,SAELzI,SAAzBrG,KAAK8lE,kBACP9lE,KAAK8lE,gBAAkB9zD,SAASM,cAAc,OAC9CtS,KAAK8lE,gBAAgBj+D,UAAY,0BACjC7H,KAAK8lE,gBAAgBzlE,GAAK,0BAExBL,KAAK8lE,gBAAgBx4D,MAAMi5B,QADR,GAAjBvmC,KAAK4lD,SAC8B,QAGA,OAEvC5lD,KAAK0e,MAAMxM,YAAYlS,KAAK8lE,kBAGLz/D,SAArBrG,KAAK+lE,cACP/lE,KAAK+lE,YAAc/zD,SAASM,cAAc,OAC1CtS,KAAK+lE,YAAYl+D,UAAY,gCAC7B7H,KAAK+lE,YAAY1lE,GAAK,gCAEpBL,KAAK+lE,YAAYz4D,MAAMi5B,QADJ,GAAjBvmC,KAAK4lD,SAC0B,OAGA,QAEnC5lD,KAAK0e,MAAMxM,YAAYlS,KAAK+lE,cAGR1/D,SAAlBrG,KAAKgmE,WACPhmE,KAAKgmE,SAAWh0D,SAASM,cAAc,OACvCtS,KAAKgmE,SAASn+D,UAAY,gCAC1B7H,KAAKgmE,SAAS3lE,GAAK,gCACnBL,KAAKgmE,SAAS14D,MAAMi5B,QAAUvmC,KAAK8lE,gBAAgBx4D,MAAMi5B,QACzDvmC,KAAK0e,MAAMxM,YAAYlS,KAAKgmE,WAI9BhmE,KAAKmlE,WAAWH,GAGhBhlE,KAAKqnD,yBAGwBhhD,SAAzBrG,KAAK8lE,kBAEP9lE,KAAKqnD,wBAGLrnD,KAAK0e,MAAM9M,YAAY5R,KAAK8lE,iBAC5B9lE,KAAK0e,MAAM9M,YAAY5R,KAAK+lE,aAC5B/lE,KAAK0e,MAAM9M,YAAY5R,KAAKgmE,UAE5BhmE,KAAK8lE,gBAAkBz/D,OACvBrG,KAAK+lE,YAAc1/D,OACnBrG,KAAKgmE,SAAW3/D,OAEhBrG,KAAKslE,YAAYN,KAWvBplE,EAAQsmD,wBAA0B,WAChClmD,KAAKmlE,WAAWF,GAEhBjlE,KAAKimE,mBACoC,GAArCjmE,KAAK4/C,UAAUtB,WAAWxvC,SAC5B9O,KAAKkmE,2BAUTtmE,EAAQyhD,qBAAuB,WAC7BrhD,KAAKmlE,WAAWD,KAMd,SAASrlE,EAAQD,EAASM,GAiB9B,QAASkjD,GAAUrqC,GACjB/Y,KAAKowD,QAAS,EAEdpwD,KAAKwvB,KACHzW,UAAWA,GAGb/Y,KAAKwvB,IAAI22C,QAAUn0D,SAASM,cAAc,OAC1CtS,KAAKwvB,IAAI22C,QAAQt+D,UAAY,UAE7B7H,KAAKwvB,IAAIzW,UAAU7G,YAAYlS,KAAKwvB,IAAI22C,SAExCnmE,KAAK4D,OAASwgC,EAAOpkC,KAAKwvB,IAAI22C,SAAU7hC,iBAAiB,IACzDtkC,KAAK4D,OAAOgQ,GAAG,MAAO5T,KAAKomE,cAAc3xC,KAAKz0B,MAG9C,IAAIwU,GAAKxU,KACLmgE,GACF,QAAS,QACT,YAAa,OACb,YAAa,OAAQ,UACrB,aAAc,iBAEhBA,GAAO93D,QAAQ,SAAUiB,GACvBkL,EAAG5Q,OAAOgQ,GAAGtK,EAAO,SAAUA,GAC5BA,EAAMm7B,sBAKVzkC,KAAKqmE,aAAejiC,EAAO78B,QAAS+8B,iBAAiB,IACrDtkC,KAAKqmE,aAAazyD,GAAG,MAAO,SAAUtK,GAE/Bg9D,EAAWh9D,EAAMG,OAAQsP,IAC5BvE,EAAG+xD,eAKPvmE,KAAKwmE,YAAcxmE,KAAKumE,WAAW9xC,KAAKz0B,MAiF1C,QAASsmE,GAAW19D,EAASg7B,GAC3B,KAAOh7B,GAAS,CACd,GAAIA,IAAYg7B,EACd,OAAO,CAETh7B,GAAUA,EAAQgB,WAEpB,OAAO,EA9IT,GAAIs5C,GAAYhjD,EAAoB,IAChCic,EAAUjc,EAAoB,IAC9BkkC,EAASlkC,EAAoB,IAC7BS,EAAOT,EAAoB,EAuD/Bic,GAAQinC,EAAUzvC,WAGlByvC,EAAUxpB,QAAU,KAKpBwpB,EAAUzvC,UAAUyvB,QAAU,WAC5BpjC,KAAKumE,aAGLvmE,KAAKwvB,IAAI22C,QAAQv8D,WAAWgI,YAAY5R,KAAKwvB,IAAI22C,SAGjDnmE,KAAK4D,OAAS,KACd5D,KAAKqmE,aAAe,MAQtBjjB,EAAUzvC,UAAU8yD,SAAW,WAEzBrjB,EAAUxpB,SACZwpB,EAAUxpB,QAAQ2sC,aAEpBnjB,EAAUxpB,QAAU55B,KAEpBA,KAAKowD,QAAS,EACdpwD,KAAKwvB,IAAI22C,QAAQ74D,MAAMi5B,QAAU,OACjC5lC,EAAKiH,aAAa5H,KAAKwvB,IAAIzW,UAAW,cAEtC/Y,KAAKmtB,KAAK,UACVntB,KAAKmtB,KAAK,YAIV+1B,EAAUzuB,KAAK,MAAOz0B,KAAKwmE,cAO7BpjB,EAAUzvC,UAAU4yD,WAAa,WAC/BvmE,KAAKowD,QAAS,EACdpwD,KAAKwvB,IAAI22C,QAAQ74D,MAAMi5B,QAAU,GACjC5lC,EAAKuH,gBAAgBlI,KAAKwvB,IAAIzW,UAAW,cACzCmqC,EAAUwjB,OAAO,MAAO1mE,KAAKwmE,aAE7BxmE,KAAKmtB,KAAK,UACVntB,KAAKmtB,KAAK,eAQZi2B,EAAUzvC,UAAUyyD,cAAgB,SAAU98D,GAE5CtJ,KAAKymE,WACLn9D,EAAMm7B,mBAsBR5kC,EAAOD,QAAUwjD,GAKb,SAASvjD,GAeb,QAASsc,GAAQiG,GACf,MAAIA,GAAY8sC,EAAM9sC,GAAtB,OAWF,QAAS8sC,GAAM9sC,GACb,IAAK,GAAI1Z,KAAOyT,GAAQxI,UACtByO,EAAI1Z,GAAOyT,EAAQxI,UAAUjL,EAE/B,OAAO0Z,GAxBTviB,EAAOD,QAAUuc,EAoCjBA,EAAQxI,UAAUC,GAClBuI,EAAQxI,UAAUhL,iBAAmB,SAASW,EAAOqkC,GAInD,MAHA3tC,MAAK2mE,WAAa3mE,KAAK2mE,gBACtB3mE,KAAK2mE,WAAWr9D,GAAStJ,KAAK2mE,WAAWr9D,QACvCtB,KAAK2lC,GACD3tC,MAaTmc,EAAQxI,UAAUizD,KAAO,SAASt9D,EAAOqkC,GAIvC,QAAS/5B,KACPizD,EAAK9yD,IAAIzK,EAAOsK,GAChB+5B,EAAGr1B,MAAMtY,KAAMuF,WALjB,GAAIshE,GAAO7mE,IAUX,OATAA,MAAK2mE,WAAa3mE,KAAK2mE,eAOvB/yD,EAAG+5B,GAAKA,EACR3tC,KAAK4T,GAAGtK,EAAOsK,GACR5T,MAaTmc,EAAQxI,UAAUI,IAClBoI,EAAQxI,UAAUmzD,eAClB3qD,EAAQxI,UAAUozD,mBAClB5qD,EAAQxI,UAAUxK,oBAAsB,SAASG,EAAOqkC,GAItD,GAHA3tC,KAAK2mE,WAAa3mE,KAAK2mE,eAGnB,GAAKphE,UAAUC,OAEjB,MADAxF,MAAK2mE,cACE3mE,IAIT,IAAIgnE,GAAYhnE,KAAK2mE,WAAWr9D,EAChC,KAAK09D,EAAW,MAAOhnE,KAGvB,IAAI,GAAKuF,UAAUC,OAEjB,aADOxF,MAAK2mE,WAAWr9D,GAChBtJ,IAKT,KAAK,GADDinE,GACK5hE,EAAI,EAAGA,EAAI2hE,EAAUxhE,OAAQH,IAEpC,GADA4hE,EAAKD,EAAU3hE,GACX4hE,IAAOt5B,GAAMs5B,EAAGt5B,KAAOA,EAAI,CAC7Bq5B,EAAU5+D,OAAO/C,EAAG,EACpB,OAGJ,MAAOrF,OAWTmc,EAAQxI,UAAUwZ,KAAO,SAAS7jB,GAChCtJ,KAAK2mE,WAAa3mE,KAAK2mE,cACvB,IAAIvG,MAAU3jC,MAAMl8B,KAAKgF,UAAW,GAChCyhE,EAAYhnE,KAAK2mE,WAAWr9D,EAEhC,IAAI09D,EAAW,CACbA,EAAYA,EAAUvqC,MAAM,EAC5B,KAAK,GAAIp3B,GAAI,EAAGC,EAAM0hE,EAAUxhE,OAAYF,EAAJD,IAAWA,EACjD2hE,EAAU3hE,GAAGiT,MAAMtY,KAAMogE,GAI7B,MAAOpgE,OAWTmc,EAAQxI,UAAUusD,UAAY,SAAS52D,GAErC,MADAtJ,MAAK2mE,WAAa3mE,KAAK2mE,eAChB3mE,KAAK2mE,WAAWr9D,QAWzB6S,EAAQxI,UAAUuzD,aAAe,SAAS59D,GACxC,QAAUtJ,KAAKkgE,UAAU52D,GAAO9D,SAM9B,SAAS3F,EAAQD,EAASM,GAE9B,GAAIinE,IAA0D,SAASC,EAAQvnE,IAM/E,SAAWwG,GA0RP,QAASghE,GAAIjiE,EAAGa,EAAGxF,GACf,OAAQ8E,UAAUC,QACd,IAAK,GAAG,MAAY,OAALJ,EAAYA,EAAIa,CAC/B,KAAK,GAAG,MAAY,OAALb,EAAYA,EAAS,MAALa,EAAYA,EAAIxF,CAC/C,SAAS,KAAM,IAAIiD,OAAM,iBAIjC,QAAS4jE,GAAWliE,EAAGa,GACnB,MAAON,IAAepF,KAAK6E,EAAGa,GAGlC,QAASshE,KAGL,OACIC,OAAQ,EACRC,gBACAC,eACAzkD,SAAW,GACX0kD,cAAgB,EAChBC,WAAY,EACZC,aAAe,KACfC,eAAgB,EAChBC,iBAAkB,EAClBC,KAAK,GAIb,QAASC,GAASC,GACVvkE,GAAOwkE,+BAAgC,GAChB,mBAAZr4D,UAA2BA,QAAQs4D,MAC9Ct4D,QAAQs4D,KAAK,wBAA0BF,GAI/C,QAASG,GAAUH,EAAKv6B,GACpB,GAAI26B,IAAY,CAChB,OAAOnjE,GAAO,WAKV,MAJImjE,KACAL,EAASC,GACTI,GAAY,GAET36B,EAAGr1B,MAAMtY,KAAMuF,YACvBooC,GAGP,QAAS46B,GAAgB/xD,EAAM0xD,GACtBM,GAAahyD,KACdyxD,EAASC,GACTM,GAAahyD,IAAQ,GAI7B,QAASiyD,GAASC,EAAMnxD,GACpB,MAAO,UAAUnS,GACb,MAAOujE,GAAaD,EAAKnoE,KAAKP,KAAMoF,GAAImS,IAGhD,QAASqxD,GAAgBF,EAAMG,GAC3B,MAAO,UAAUzjE,GACb,MAAOpF,MAAK8oE,aAAaC,QAAQL,EAAKnoE,KAAKP,KAAMoF,GAAIyjE,IAmB7D,QAASG,MAIT,QAASC,GAAOC,EAAQC,GAChBA,KAAiB,GACjBC,EAAcF,GAElBG,EAAWrpE,KAAMkpE,GACjBlpE,KAAKspE,GAAK,GAAInlE,OAAM+kE,EAAOI,IAI/B,QAASC,GAASh5D,GACd,GAAIi5D,GAAkBC,EAAqBl5D,GACvCm5D,EAAQF,EAAgB1vC,MAAQ,EAChC6vC,EAAWH,EAAgBI,SAAW,EACtCC,EAASL,EAAgBxvC,OAAS,EAClC8vC,EAAQN,EAAgBO,MAAQ,EAChCvyC,EAAOgyC,EAAgBQ,KAAO,EAC9B3xC,EAAQmxC,EAAgBS,MAAQ,EAChC7xC,EAAUoxC,EAAgBU,QAAU,EACpC/xC,EAAUqxC,EAAgBW,QAAU,EACpCjyC,EAAesxC,EAAgBY,aAAe,CAGlDpqE,MAAKqqE,eAAiBnyC,EACR,IAAVC,EACU,IAAVC,EACQ,KAARC,EAGJr4B,KAAKsqE,OAAS9yC,EACF,EAARsyC,EAIJ9pE,KAAKuqE,SAAWV,EACD,EAAXF,EACQ,GAARD,EAEJ1pE,KAAKqT,SAELrT,KAAKwqE,QAAU7mE,GAAOmlE,aAEtB9oE,KAAKyqE,UAQT,QAAStlE,GAAOC,EAAGa,GACf,IAAK,GAAIZ,KAAKY,GACNqhE,EAAWrhE,EAAGZ,KACdD,EAAEC,GAAKY,EAAEZ,GAYjB,OARIiiE,GAAWrhE,EAAG,cACdb,EAAEF,SAAWe,EAAEf,UAGfoiE,EAAWrhE,EAAG,aACdb,EAAEyB,QAAUZ,EAAEY,SAGXzB,EAGX,QAASikE,GAAW5gD,EAAID,GACpB,GAAInjB,GAAGK,EAAMglE,CAiCb,IA/BqC,mBAA1BliD,GAAKmiD,mBACZliD,EAAGkiD,iBAAmBniD,EAAKmiD,kBAER,mBAAZniD,GAAKoiD,KACZniD,EAAGmiD,GAAKpiD,EAAKoiD,IAEM,mBAAZpiD,GAAKqiD,KACZpiD,EAAGoiD,GAAKriD,EAAKqiD,IAEM,mBAAZriD,GAAKsiD,KACZriD,EAAGqiD,GAAKtiD,EAAKsiD,IAEW,mBAAjBtiD,GAAKuiD,UACZtiD,EAAGsiD,QAAUviD,EAAKuiD,SAEG,mBAAdviD,GAAKwiD,OACZviD,EAAGuiD,KAAOxiD,EAAKwiD,MAEQ,mBAAhBxiD,GAAKyiD,SACZxiD,EAAGwiD,OAASziD,EAAKyiD,QAEO,mBAAjBziD,GAAK0iD,UACZziD,EAAGyiD,QAAU1iD,EAAK0iD,SAEE,mBAAb1iD,GAAK2iD,MACZ1iD,EAAG0iD,IAAM3iD,EAAK2iD,KAEU,mBAAjB3iD,GAAKgiD,UACZ/hD,EAAG+hD,QAAUhiD,EAAKgiD,SAGlBY,GAAiB5lE,OAAS,EAC1B,IAAKH,IAAK+lE,IACN1lE,EAAO0lE,GAAiB/lE,GACxBqlE,EAAMliD,EAAK9iB,GACQ,mBAARglE,KACPjiD,EAAG/iB,GAAQglE,EAKvB,OAAOjiD,GAGX,QAAS4iD,GAASC,GACd,MAAa,GAATA,EACOvmE,KAAK0uC,KAAK63B,GAEVvmE,KAAKC,MAAMsmE,GAM1B,QAAS3C,GAAa2C,EAAQC,EAAcC,GAIxC,IAHA,GAAIC,GAAS,GAAK1mE,KAAKklB,IAAIqhD,GACvB78C,EAAO68C,GAAU,EAEdG,EAAOjmE,OAAS+lE,GACnBE,EAAS,IAAMA,CAEnB,QAAQh9C,EAAQ+8C,EAAY,IAAM,GAAM,KAAOC,EAGnD,QAASC,GAA0BC,EAAMlmE,GACrC,GAAI60B,IAAOpC,aAAc,EAAG2xC,OAAQ,EAUpC,OARAvvC,GAAIuvC,OAASpkE,EAAMu0B,QAAU2xC,EAAK3xC,QACC,IAA9Bv0B,EAAMq0B,OAAS6xC,EAAK7xC,QACrB6xC,EAAK/uC,QAAQlpB,IAAI4mB,EAAIuvC,OAAQ,KAAK+B,QAAQnmE,MACxC60B,EAAIuvC,OAGVvvC,EAAIpC,cAAgBzyB,GAAUkmE,EAAK/uC,QAAQlpB,IAAI4mB,EAAIuvC,OAAQ,KAEpDvvC,EAGX,QAASuxC,GAAkBF,EAAMlmE,GAC7B,GAAI60B,EAUJ,OATA70B,GAAQqmE,EAAOrmE,EAAOkmE,GAClBA,EAAKI,SAAStmE,GACd60B,EAAMoxC,EAA0BC,EAAMlmE,IAEtC60B,EAAMoxC,EAA0BjmE,EAAOkmE,GACvCrxC,EAAIpC,cAAgBoC,EAAIpC,aACxBoC,EAAIuvC,QAAUvvC,EAAIuvC,QAGfvvC,EAIX,QAAS0xC,GAAYnxC,EAAWrkB,GAC5B,MAAO,UAAUk0D,EAAK7B,GAClB,GAAIoD,GAAKC,CAUT,OARe,QAAXrD,GAAoBtkE,OAAOskE,KAC3BN,EAAgB/xD,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5G01D,EAAMxB,EAAKA,EAAM7B,EAAQA,EAASqD,GAGtCxB,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCuB,EAAMtoE,GAAO4M,SAASm6D,EAAK7B,GAC3BsD,EAAgCnsE,KAAMisE,EAAKpxC,GACpC76B,MAIf,QAASmsE,GAAgCC,EAAK77D,EAAU87D,EAAUC,GAC9D,GAAIp0C,GAAe3nB,EAAS85D,cACxB7yC,EAAOjnB,EAAS+5D,MAChBT,EAASt5D,EAASg6D,OACtB+B,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzCp0C,GACAk0C,EAAI9C,GAAGiD,SAASH,EAAI9C,GAAKpxC,EAAem0C,GAExC70C,GACAg1C,GAAUJ,EAAK,OAAQK,GAAUL,EAAK,QAAU50C,EAAO60C,GAEvDxC,GACA6C,GAAeN,EAAKK,GAAUL,EAAK,SAAWvC,EAASwC,GAEvDC,GACA3oE,GAAO2oE,aAAaF,EAAK50C,GAAQqyC,GAKzC,QAAS9jE,GAAQ4mE,GACb,MAAiD,mBAA1CvmE,OAAOuN,UAAUzO,SAAS3E,KAAKosE,GAG1C,QAASzoE,GAAOyoE,GACZ,MAAiD,kBAA1CvmE,OAAOuN,UAAUzO,SAAS3E,KAAKosE,IAClCA,YAAiBxoE,MAIzB,QAASyoE,GAAc7O,EAAQC,EAAQ6O,GACnC,GAGIxnE,GAHAC,EAAMP,KAAKwG,IAAIwyD,EAAOv4D,OAAQw4D,EAAOx4D,QACrCsnE,EAAa/nE,KAAKklB,IAAI8zC,EAAOv4D,OAASw4D,EAAOx4D,QAC7CunE,EAAQ,CAEZ,KAAK1nE,EAAI,EAAOC,EAAJD,EAASA,KACZwnE,GAAe9O,EAAO14D,KAAO24D,EAAO34D,KACnCwnE,GAAeG,EAAMjP,EAAO14D,MAAQ2nE,EAAMhP,EAAO34D,MACnD0nE,GAGR,OAAOA,GAAQD,EAGnB,QAASG,GAAeC,GACpB,GAAIA,EAAO,CACP,GAAIC,GAAUD,EAAMve,cAAcziD,QAAQ,QAAS,KACnDghE,GAAQE,GAAYF,IAAUG,GAAeF,IAAYA,EAE7D,MAAOD,GAGX,QAASzD,GAAqB6D,GAC1B,GACIC,GACA7nE,EAFA8jE,IAIJ,KAAK9jE,IAAQ4nE,GACLhG,EAAWgG,EAAa5nE,KACxB6nE,EAAiBN,EAAevnE,GAC5B6nE,IACA/D,EAAgB+D,GAAkBD,EAAY5nE,IAK1D,OAAO8jE,GAGX,QAASgE,GAASt+D,GACd,GAAIqI,GAAOk2D,CAEX,IAA8B,IAA1Bv+D,EAAM1I,QAAQ,QACd+Q,EAAQ,EACRk2D,EAAS,UAER,CAAA,GAA+B,IAA3Bv+D,EAAM1I,QAAQ,SAKnB,MAJA+Q,GAAQ,GACRk2D,EAAS,QAMb9pE,GAAOuL,GAAS,SAAUg0B,EAAQ/6B,GAC9B,GAAI9C,GAAGqoE,EACHC,EAAShqE,GAAO6mE,QAAQt7D,GACxB0+D,IAYJ,IAVsB,gBAAX1qC,KACP/6B,EAAQ+6B,EACRA,EAAS78B,GAGbqnE,EAAS,SAAUroE,GACf,GAAI7E,GAAImD,KAASkqE,MAAMC,IAAIL,EAAQpoE,EACnC,OAAOsoE,GAAOptE,KAAKoD,GAAO6mE,QAAShqE,EAAG0iC,GAAU,KAGvC,MAAT/6B,EACA,MAAOulE,GAAOvlE,EAGd,KAAK9C,EAAI,EAAOkS,EAAJlS,EAAWA,IACnBuoE,EAAQ5lE,KAAK0lE,EAAOroE,GAExB,OAAOuoE,IAKnB,QAASZ,GAAMe,GACX,GAAIC,IAAiBD,EACjB7mE,EAAQ,CAUZ,OARsB,KAAlB8mE,GAAuBC,SAASD,KAE5B9mE,EADA8mE,GAAiB,EACTjpE,KAAKC,MAAMgpE,GAEXjpE,KAAK0uC,KAAKu6B,IAInB9mE,EAGX,QAASgnE,GAAYp0C,EAAME,GACvB,MAAO,IAAI71B,MAAKA,KAAKgqE,IAAIr0C,EAAME,EAAQ,EAAG,IAAIo0C,aAGlD,QAASC,GAAYv0C,EAAMw0C,EAAKC,GAC5B,MAAOC,IAAW7qE,IAAQm2B,EAAM,GAAI,GAAKw0C,EAAMC,IAAOD,EAAKC,GAAKxE,KAGpE,QAAS0E,GAAW30C,GAChB,MAAO40C,GAAW50C,GAAQ,IAAM,IAGpC,QAAS40C,GAAW50C,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,QAASsvC,GAAc5oE,GACnB,GAAIyiB,EACAziB,GAAEmuE,IAAyB,KAAnBnuE,EAAE2qE,IAAIloD,WACdA,EACIziB,EAAEmuE,GAAGxtC,IAAS,GAAK3gC,EAAEmuE,GAAGxtC,IAAS,GAAKA,GACtC3gC,EAAEmuE,GAAGC,IAAQ,GAAKpuE,EAAEmuE,GAAGC,IAAQV,EAAY1tE,EAAEmuE,GAAGvtC,IAAO5gC,EAAEmuE,GAAGxtC,KAAUytC,GACtEpuE,EAAEmuE,GAAG1tC,IAAQ,GAAKzgC,EAAEmuE,GAAG1tC,IAAQ,GAAKA,GACpCzgC,EAAEmuE,GAAG3tC,IAAU,GAAKxgC,EAAEmuE,GAAG3tC,IAAU,GAAKA,GACxCxgC,EAAEmuE,GAAG5tC,IAAU,GAAKvgC,EAAEmuE,GAAG5tC,IAAU,GAAKA,GACxCvgC,EAAEmuE,GAAG7tC,IAAe,GAAKtgC,EAAEmuE,GAAG7tC,IAAe,IAAMA,GACnD,GAEAtgC,EAAE2qE,IAAI0D,qBAAkCztC,GAAXne,GAAmBA,EAAW2rD,MAC3D3rD,EAAW2rD,IAGfpuE,EAAE2qE,IAAIloD,SAAWA,GAIzB,QAAS6rD,GAAQtuE,GAgBb,MAfkB,OAAdA,EAAEuuE,WACFvuE,EAAEuuE,UAAYxqE,MAAM/D,EAAE8oE,GAAG0F,YACrBxuE,EAAE2qE,IAAIloD,SAAW,IAChBziB,EAAE2qE,IAAI3D,QACNhnE,EAAE2qE,IAAItD,eACNrnE,EAAE2qE,IAAIvD,YACNpnE,EAAE2qE,IAAIrD,gBACNtnE,EAAE2qE,IAAIpD,gBAEPvnE,EAAEuqE,UACFvqE,EAAEuuE,SAAWvuE,EAAEuuE,UACa,IAAxBvuE,EAAE2qE,IAAIxD,eACwB,IAA9BnnE,EAAE2qE,IAAI1D,aAAajiE,SAGxBhF,EAAEuuE,SAGb,QAASE,GAAgBvmE,GACrB,MAAOA,GAAMA,EAAIimD,cAAcziD,QAAQ,IAAK,KAAOxD,EAMvD,QAASwmE,GAAaC,GAGlB,IAFA,GAAWlkD,GAAGxD,EAAMkc,EAAQ57B,EAAxB1C,EAAI,EAEDA,EAAI8pE,EAAM3pE,QAAQ,CAKrB,IAJAuC,EAAQknE,EAAgBE,EAAM9pE,IAAI0C,MAAM,KACxCkjB,EAAIljB,EAAMvC,OACViiB,EAAOwnD,EAAgBE,EAAM9pE,EAAI,IACjCoiB,EAAOA,EAAOA,EAAK1f,MAAM,KAAO,KACzBkjB,EAAI,GAAG,CAEV,GADA0Y,EAASyrC,EAAWrnE,EAAM00B,MAAM,EAAGxR,GAAGhjB,KAAK,MAEvC,MAAO07B,EAEX,IAAIlc,GAAQA,EAAKjiB,QAAUylB,GAAK2hD,EAAc7kE,EAAO0f,GAAM,IAASwD,EAAI,EAEpE,KAEJA,KAEJ5lB,IAEJ,MAAO,MAGX,QAAS+pE,GAAW54D,GAChB,GAAI64D,GAAY,IAChB,KAAK3rC,GAAQltB,IAAS84D,GAClB,IACID,EAAY1rE,GAAOggC,UACjB,WAAkC,GAAIr3B,GAAI,GAAI5I,OAAM,gCAAiE,MAA7B4I,GAAEijE,KAAO,mBAA0BjjE,KAE7H3I,GAAOggC,OAAO0rC,GAChB,MAAO/iE,IAEb,MAAOo3B,IAAQltB,GAInB,QAASs1D,GAAOa,EAAO6C,GACnB,MAAOA,GAAMvE,OAAStnE,GAAOgpE,GAAO8C,KAAKD,EAAMtE,SAAW,GACtDvnE,GAAOgpE,GAAO+C,QAoMtB,QAASC,GAAuBhD,GAC5B,MAAIA,GAAMvoE,MAAM,YACLuoE,EAAMzgE,QAAQ,WAAY,IAE9BygE,EAAMzgE,QAAQ,MAAO,IAGhC,QAAS0jE,GAAmB1sC,GACxB,GAA4C79B,GAAGG,EAA3CgD,EAAQ06B,EAAO9+B,MAAMyrE,GAEzB,KAAKxqE,EAAI,EAAGG,EAASgD,EAAMhD,OAAYA,EAAJH,EAAYA,IAEvCmD,EAAMnD,GADNyqE,GAAqBtnE,EAAMnD,IAChByqE,GAAqBtnE,EAAMnD,IAE3BsqE,EAAuBnnE,EAAMnD,GAIhD,OAAO,UAAU+mE,GACb,GAAIX,GAAS,EACb,KAAKpmE,EAAI,EAAOG,EAAJH,EAAYA,IACpBomE,GAAUjjE,EAAMnD,YAAcuoC,UAAWplC,EAAMnD,GAAG9E,KAAK6rE,EAAKlpC,GAAU16B,EAAMnD,EAEhF,OAAOomE,IAKf,QAASsE,GAAavvE,EAAG0iC,GACrB,MAAK1iC,GAAEsuE,WAIP5rC,EAAS8sC,EAAa9sC,EAAQ1iC,EAAEsoE,cAE3BmH,GAAgB/sC,KACjB+sC,GAAgB/sC,GAAU0sC,EAAmB1sC,IAG1C+sC,GAAgB/sC,GAAQ1iC,IATpBA,EAAEsoE,aAAaoH,cAY9B,QAASF,GAAa9sC,EAAQS,GAG1B,QAASwsC,GAA4BxD,GACjC,MAAOhpC,GAAOysC,eAAezD,IAAUA,EAH3C,GAAItnE,GAAI,CAOR,KADAgrE,GAAsBC,UAAY,EAC3BjrE,GAAK,GAAKgrE,GAAsBjiE,KAAK80B,IACxCA,EAASA,EAAOh3B,QAAQmkE,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClCjrE,GAAK,CAGT,OAAO69B,GAUX,QAASqtC,GAAsB9T,EAAOyM,GAClC,GAAI9jE,GAAG83D,EAASgM,EAAO6B,OACvB,QAAQtO,GACR,IAAK,IACD,MAAO+T,GACX,KAAK,OACD,MAAOC,GACX,KAAK,OACL,IAAK,OACL,IAAK,OACD,MAAOvT,GAASwT,GAAuBC,EAC3C,KAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOC,GACX,KAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAO1T,GAAS2T,GAAsBC,EAC1C,KAAK,IACD,GAAI5T,EACA,MAAOsT,GAGf,KAAK,KACD,GAAItT,EACA,MAAO6T,GAGf,KAAK,MACD,GAAI7T,EACA,MAAOuT,GAGf,KAAK,MACD,MAAOO,GACX,KAAK,MACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,OACD,MAAOC,GACX,KAAK,IACL,IAAK,IACD,MAAO/H,GAAOsB,QAAQ0G,cAC1B,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,MAAOpU,GAAS6T,GAAsBQ,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,MAAOC,GACX,SAEI,MADApsE,GAAI,GAAIqsE,QAAOC,GAAaC,GAAelV,EAAMvwD,QAAQ,KAAM,KAAM,OAK7E,QAAS0lE,GAA0BC,GAC/BA,EAASA,GAAU,EACnB,IAAIC,GAAqBD,EAAOztE,MAAMgtE,QAClCW,EAAUD,EAAkBA,EAAkBtsE,OAAS,OACvDgI,GAASukE,EAAU,IAAI3tE,MAAM4tE,MAA0B,IAAK,EAAG,GAC/D55C,IAAuB,GAAX5qB,EAAM,IAAWw/D,EAAMx/D,EAAM,GAE7C,OAAoB,MAAbA,EAAM,IAAc4qB,EAAUA,EAIzC,QAAS65C,GAAwBxV,EAAOkQ,EAAOzD,GAC3C,GAAI9jE,GAAG8sE,EAAgBhJ,EAAOyF,EAE9B,QAAQlS,GAER,IAAK,IACY,MAATkQ,IACAuF,EAAc/wC,IAA8B,GAApB6rC,EAAML,GAAS,GAE3C,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACAuF,EAAc/wC,IAAS6rC,EAAML,GAAS,EAE1C,MACJ,KAAK,MACL,IAAK,OACDvnE,EAAI8jE,EAAOsB,QAAQ2H,YAAYxF,GAEtB,MAALvnE,EACA8sE,EAAc/wC,IAAS/7B,EAEvB8jE,EAAOiC,IAAItD,aAAe8E,CAE9B,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACAuF,EAActD,IAAQ5B,EAAML,GAEhC,MACJ,KAAK,KACY,MAATA,IACAuF,EAActD,IAAQ5B,EAAM9iD,SAASyiD,EAAO,KAEhD,MAEJ,KAAK,MACL,IAAK,OACY,MAATA,IACAzD,EAAOkJ,WAAapF,EAAML,GAG9B,MAEJ;IAAK,KACDuF,EAAc9wC,IAAQz9B,GAAO0uE,kBAAkB1F,EAC/C,MACJ,KAAK,OACL,IAAK,QACL,IAAK,SACDuF,EAAc9wC,IAAQ4rC,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,IACDzD,EAAOoJ,MAAQpJ,EAAOsB,QAAQ+H,KAAK5F,EACnC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACDuF,EAAcjxC,IAAQ+rC,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,KACDuF,EAAclxC,IAAUgsC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACDuF,EAAcnxC,IAAUisC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACDuF,EAAcpxC,IAAeksC,EAAuB,KAAhB,KAAOL,GAC3C,MAEJ,KAAK,IACDzD,EAAOI,GAAK,GAAInlE,MAAyB,IAApBsgB,WAAWkoD,GAChC,MAEJ,KAAK,IACL,IAAK,KACDzD,EAAOsJ,SAAU,EACjBtJ,EAAO8B,KAAO4G,EAA0BjF,EACxC,MAEJ,KAAK,KACL,IAAK,MACL,IAAK,OACDvnE,EAAI8jE,EAAOsB,QAAQiI,cAAc9F,GAExB,MAALvnE,GACA8jE,EAAOwJ,GAAKxJ,EAAOwJ,OACnBxJ,EAAOwJ,GAAM,EAAIttE,GAEjB8jE,EAAOiC,IAAIwH,eAAiBhG,CAEhC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACDlQ,EAAQA,EAAM3xD,OAAO,EAAG,EAE5B,KAAK,OACL,IAAK,OACL,IAAK,QACD2xD,EAAQA,EAAM3xD,OAAO,EAAG,GACpB6hE,IACAzD,EAAOwJ,GAAKxJ,EAAOwJ,OACnBxJ,EAAOwJ,GAAGjW,GAASuQ,EAAML,GAE7B,MACJ,KAAK,KACL,IAAK,KACDzD,EAAOwJ,GAAKxJ,EAAOwJ,OACnBxJ,EAAOwJ,GAAGjW,GAAS94D,GAAO0uE,kBAAkB1F,IAIpD,QAASiG,GAAsB1J,GAC3B,GAAIjd,GAAG4mB,EAAU9I,EAAM+I,EAASxE,EAAKC,EAAKwE,CAE1C9mB,GAAIid,EAAOwJ,GACC,MAARzmB,EAAE+mB,IAAqB,MAAP/mB,EAAEgnB,GAAoB,MAAPhnB,EAAEinB,GACjC5E,EAAM,EACNC,EAAM,EAMNsE,EAAWxL,EAAIpb,EAAE+mB,GAAI9J,EAAOyF,GAAGvtC,IAAOotC,GAAW7qE,KAAU,EAAG,GAAGm2B,MACjEiwC,EAAO1C,EAAIpb,EAAEgnB,EAAG,GAChBH,EAAUzL,EAAIpb,EAAEinB,EAAG,KAEnB5E,EAAMpF,EAAOsB,QAAQ2I,MAAM7E,IAC3BC,EAAMrF,EAAOsB,QAAQ2I,MAAM5E,IAE3BsE,EAAWxL,EAAIpb,EAAEmnB,GAAIlK,EAAOyF,GAAGvtC,IAAOotC,GAAW7qE,KAAU2qE,EAAKC,GAAKz0C,MACrEiwC,EAAO1C,EAAIpb,EAAEA,EAAG,GAEL,MAAPA,EAAE5/C,GAEFymE,EAAU7mB,EAAE5/C,EACEiiE,EAAVwE,KACE/I,GAIN+I,EAFc,MAAP7mB,EAAE3/C,EAEC2/C,EAAE3/C,EAAIgiE,EAGNA,GAGlByE,EAAOM,GAAmBR,EAAU9I,EAAM+I,EAASvE,EAAKD,GAExDpF,EAAOyF,GAAGvtC,IAAQ2xC,EAAKj5C,KACvBovC,EAAOkJ,WAAaW,EAAK74C,UAO7B,QAASo5C,GAAepK,GACpB,GAAI7jE,GAAG29B,EAAkBuwC,EAAaC,EAAzB7G,IAEb,KAAIzD,EAAOI,GAAX,CA6BA,IAzBAiK,EAAcE,EAAiBvK,GAG3BA,EAAOwJ,IAAyB,MAAnBxJ,EAAOyF,GAAGC,KAAqC,MAApB1F,EAAOyF,GAAGxtC,KAClDyxC,EAAsB1J,GAItBA,EAAOkJ,aACPoB,EAAYnM,EAAI6B,EAAOyF,GAAGvtC,IAAOmyC,EAAYnyC,KAEzC8nC,EAAOkJ,WAAa3D,EAAW+E,KAC/BtK,EAAOiC,IAAI0D,oBAAqB,GAGpC7rC,EAAO0wC,GAAYF,EAAW,EAAGtK,EAAOkJ,YACxClJ,EAAOyF,GAAGxtC,IAAS6B,EAAK2wC,cACxBzK,EAAOyF,GAAGC,IAAQ5rC,EAAKorC,cAQtB/oE,EAAI,EAAO,EAAJA,GAAyB,MAAhB6jE,EAAOyF,GAAGtpE,KAAcA,EACzC6jE,EAAOyF,GAAGtpE,GAAKsnE,EAAMtnE,GAAKkuE,EAAYluE,EAI1C,MAAW,EAAJA,EAAOA,IACV6jE,EAAOyF,GAAGtpE,GAAKsnE,EAAMtnE,GAAsB,MAAhB6jE,EAAOyF,GAAGtpE,GAAqB,IAANA,EAAU,EAAI,EAAK6jE,EAAOyF,GAAGtpE,EAGrF6jE,GAAOI,IAAMJ,EAAOsJ,QAAUkB,GAAcE,IAAUt7D,MAAM,KAAMq0D,GAG/C,MAAfzD,EAAO8B,MACP9B,EAAOI,GAAGuK,cAAc3K,EAAOI,GAAGwK,gBAAkB5K,EAAO8B,OAInE,QAAS+I,GAAe7K,GACpB,GAAIM,EAEAN,GAAOI,KAIXE,EAAkBC,EAAqBP,EAAO0B,IAC9C1B,EAAOyF,IACHnF,EAAgB1vC,KAChB0vC,EAAgBxvC,MAChBwvC,EAAgBQ,IAChBR,EAAgBS,KAChBT,EAAgBU,OAChBV,EAAgBW,OAChBX,EAAgBY,aAGpBkJ,EAAepK,IAGnB,QAASuK,GAAiBvK,GACtB,GAAIvsC,GAAM,GAAIx4B,KACd,OAAI+kE,GAAOsJ,SAEH71C,EAAIq3C,iBACJr3C,EAAIg3C,cACJh3C,EAAIyxC,eAGAzxC,EAAI4E,cAAe5E,EAAIwF,WAAYxF,EAAIuF,WAKvD,QAAS+xC,GAA4B/K,GACjC,GAAIA,EAAO2B,KAAOlnE,GAAOuwE,SAErB,WADAC,IAASjL,EAIbA,GAAOyF,MACPzF,EAAOiC,IAAI3D,OAAQ,CAGnB,IACIniE,GAAG+uE,EAAaC,EAAQ5X,EAAO6X,EAD/BzC,EAAS,GAAK3I,EAAO0B,GAErB2J,EAAe1C,EAAOrsE,OACtBgvE,EAAyB,CAI7B,KAFAH,EAASrE,EAAa9G,EAAO2B,GAAI3B,EAAOsB,SAASpmE,MAAMyrE,QAElDxqE,EAAI,EAAGA,EAAIgvE,EAAO7uE,OAAQH,IAC3Bo3D,EAAQ4X,EAAOhvE,GACf+uE,GAAevC,EAAOztE,MAAMmsE,EAAsB9T,EAAOyM,SAAgB,GACrEkL,IACAE,EAAUzC,EAAO/mE,OAAO,EAAG+mE,EAAOrrE,QAAQ4tE,IACtCE,EAAQ9uE,OAAS,GACjB0jE,EAAOiC,IAAIzD,YAAY1/D,KAAKssE,GAEhCzC,EAASA,EAAOp1C,MAAMo1C,EAAOrrE,QAAQ4tE,GAAeA,EAAY5uE,QAChEgvE,GAA0BJ,EAAY5uE,QAGtCsqE,GAAqBrT,IACjB2X,EACAlL,EAAOiC,IAAI3D,OAAQ,EAGnB0B,EAAOiC,IAAI1D,aAAaz/D,KAAKy0D,GAEjCwV,EAAwBxV,EAAO2X,EAAalL,IAEvCA,EAAO6B,UAAYqJ,GACxBlL,EAAOiC,IAAI1D,aAAaz/D,KAAKy0D,EAKrCyM,GAAOiC,IAAIxD,cAAgB4M,EAAeC,EACtC3C,EAAOrsE,OAAS,GAChB0jE,EAAOiC,IAAIzD,YAAY1/D,KAAK6pE,GAI5B3I,EAAOoJ,OAASpJ,EAAOyF,GAAG1tC,IAAQ,KAClCioC,EAAOyF,GAAG1tC,KAAS,IAGnBioC,EAAOoJ,SAAU,GAA6B,KAApBpJ,EAAOyF,GAAG1tC,MACpCioC,EAAOyF,GAAG1tC,IAAQ,GAGtBqyC,EAAepK,GACfE,EAAcF,GAGlB,QAASyI,IAAetmE,GACpB,MAAOA,GAAEa,QAAQ,sCAAuC,SAAUuoE,EAASr+B,EAAIC,EAAIC,EAAIo+B,GACnF,MAAOt+B,IAAMC,GAAMC,GAAMo+B,IAKjC,QAAShD,IAAarmE,GAClB,MAAOA,GAAEa,QAAQ,yBAA0B,QAI/C,QAASyoE,IAA2BzL,GAChC,GAAI0L,GACAC,EAEAC,EACAzvE,EACA0vE,CAEJ,IAAyB,IAArB7L,EAAO2B,GAAGrlE,OAGV,MAFA0jE,GAAOiC,IAAIrD,eAAgB,OAC3BoB,EAAOI,GAAK,GAAInlE,MAAK6wE,KAIzB,KAAK3vE,EAAI,EAAGA,EAAI6jE,EAAO2B,GAAGrlE,OAAQH,IAC9B0vE,EAAe,EACfH,EAAavL,KAAeH,GACN,MAAlBA,EAAOsJ,UACPoC,EAAWpC,QAAUtJ,EAAOsJ,SAEhCoC,EAAWzJ,IAAM5D,IACjBqN,EAAW/J,GAAK3B,EAAO2B,GAAGxlE,GAC1B4uE,EAA4BW,GAEvB9F,EAAQ8F,KAKbG,GAAgBH,EAAWzJ,IAAIxD,cAG/BoN,GAAqD,GAArCH,EAAWzJ,IAAI1D,aAAajiE,OAE5CovE,EAAWzJ,IAAI8J,MAAQF,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrBzvE,GAAO+jE,EAAQ2L,GAAcD,GAIjC,QAAST,IAASjL,GACd,GAAI7jE,GAAG6vE,EACHrD,EAAS3I,EAAO0B,GAChBxmE,EAAQ+wE,GAAS7wE,KAAKutE,EAE1B,IAAIztE,EAAO,CAEP,IADA8kE,EAAOiC,IAAInD,KAAM,EACZ3iE,EAAI,EAAG6vE,EAAIE,GAAS5vE,OAAY0vE,EAAJ7vE,EAAOA,IACpC,GAAI+vE,GAAS/vE,GAAG,GAAGf,KAAKutE,GAAS,CAE7B3I,EAAO2B,GAAKuK,GAAS/vE,GAAG,IAAMjB,EAAM,IAAM,IAC1C,OAGR,IAAKiB,EAAI,EAAG6vE,EAAIG,GAAS7vE,OAAY0vE,EAAJ7vE,EAAOA,IACpC,GAAIgwE,GAAShwE,GAAG,GAAGf,KAAKutE,GAAS,CAC7B3I,EAAO2B,IAAMwK,GAAShwE,GAAG,EACzB,OAGJwsE,EAAOztE,MAAMgtE,MACblI,EAAO2B,IAAM,KAEjBoJ,EAA4B/K,OAE5BA,GAAO6F,UAAW,EAK1B,QAASuG,IAAmBpM,GACxBiL,GAASjL,GACLA,EAAO6F,YAAa,UACb7F,GAAO6F,SACdprE,GAAO4xE,wBAAwBrM,IAIvC,QAASx7D,IAAIgrC,EAAK/K,GACd,GAActoC,GAAVi1B,IACJ,KAAKj1B,EAAI,EAAGA,EAAIqzC,EAAIlzC,SAAUH,EAC1Bi1B,EAAItyB,KAAK2lC,EAAG+K,EAAIrzC,GAAIA,GAExB,OAAOi1B,GAGX,QAASk7C,IAAkBtM,GACvB,GAAuBuL,GAAnB9H,EAAQzD,EAAO0B,EACf+B,KAAUtmE,EACV6iE,EAAOI,GAAK,GAAInlE,MACTD,EAAOyoE,GACdzD,EAAOI,GAAK,GAAInlE,OAAMwoE,GAC6B,QAA3C8H,EAAUgB,GAAgBnxE,KAAKqoE,IACvCzD,EAAOI,GAAK,GAAInlE,OAAMswE,EAAQ,IACN,gBAAV9H,GACd2I,GAAmBpM,GACZnjE,EAAQ4mE,IACfzD,EAAOyF,GAAKjhE,GAAIi/D,EAAMlwC,MAAM,GAAI,SAAUra,GACtC,MAAO8H,UAAS9H,EAAK,MAEzBkxD,EAAepK,IACU,gBAAZ,GACb6K,EAAe7K,GACU,gBAAZ,GAEbA,EAAOI,GAAK,GAAInlE,MAAKwoE,GAErBhpE,GAAO4xE,wBAAwBrM,GAIvC,QAAS0K,IAASnhE,EAAGjS,EAAG6L,EAAGjB,EAAG2rC,EAAG1rC,EAAGqqE,GAGhC,GAAI1yC,GAAO,GAAI7+B,MAAKsO,EAAGjS,EAAG6L,EAAGjB,EAAG2rC,EAAG1rC,EAAGqqE,EAMtC,OAHQ,MAAJjjE,GACAuwB,EAAK1B,YAAY7uB,GAEduwB,EAGX,QAAS0wC,IAAYjhE,GACjB,GAAIuwB,GAAO,GAAI7+B,MAAKA,KAAKgqE,IAAI71D,MAAM,KAAM/S,WAIzC,OAHQ,MAAJkN,GACAuwB,EAAK2yC,eAAeljE,GAEjBuwB,EAGX,QAAS4yC,IAAajJ,EAAOhpC,GACzB,GAAqB,gBAAVgpC,GACP,GAAKpoE,MAAMooE,IAKP,GADAA,EAAQhpC,EAAO8uC,cAAc9F,GACR,gBAAVA,GACP,MAAO,UALXA,GAAQziD,SAASyiD,EAAO,GAShC,OAAOA,GASX,QAASkJ,IAAkBhE,EAAQvG,EAAQwK,EAAeC,EAAUpyC,GAChE,MAAOA,GAAOqyC,aAAa1K,GAAU,IAAKwK,EAAejE,EAAQkE,GAGrE,QAASC,IAAaC,EAAgBH,EAAenyC,GACjD,GAAIpzB,GAAW5M,GAAO4M,SAAS0lE,GAAgBhsD,MAC3CkO,EAAUlL,GAAM1c,EAASme,GAAG,MAC5B0J,EAAUnL,GAAM1c,EAASme,GAAG,MAC5B2J,EAAQpL,GAAM1c,EAASme,GAAG,MAC1B8I,EAAOvK,GAAM1c,EAASme,GAAG,MACzBm7C,EAAS58C,GAAM1c,EAASme,GAAG,MAC3Bg7C,EAAQz8C,GAAM1c,EAASme,GAAG,MAE1B0xC,EAAOjoC,EAAU+9C,GAAuB7qE,IAAM,IAAK8sB,IACnC,IAAZC,IAAkB,MAClBA,EAAU89C,GAAuB11E,IAAM,KAAM43B,IACnC,IAAVC,IAAgB,MAChBA,EAAQ69C,GAAuB9qE,IAAM,KAAMitB,IAClC,IAATb,IAAe,MACfA,EAAO0+C,GAAuB7pE,IAAM,KAAMmrB,IAC/B,IAAXqyC,IAAiB,MACjBA,EAASqM,GAAuBn/B,IAAM,KAAM8yB,IAClC,IAAVH,IAAgB,OAAS,KAAMA,EAKvC,OAHAtJ,GAAK,GAAK0V,EACV1V,EAAK,IAAM6V,EAAiB,EAC5B7V,EAAK,GAAKz8B,EACHkyC,GAAkBv9D,SAAU8nD,GAgBvC,QAASoO,IAAWpC,EAAK+J,EAAgBC,GACrC,GAEIC,GAFA/lE,EAAM8lE,EAAuBD,EAC7BG,EAAkBF,EAAuBhK,EAAIpC,KAajD,OATIsM,GAAkBhmE,IAClBgmE,GAAmB,GAGDhmE,EAAM,EAAxBgmE,IACAA,GAAmB,GAGvBD,EAAiB1yE,GAAOyoE,GAAK14D,IAAI4iE,EAAiB,MAE9CvM,KAAMhlE,KAAK0uC,KAAK4iC,EAAen8C,YAAc,GAC7CJ,KAAMu8C,EAAev8C,QAK7B,QAASu5C,IAAmBv5C,EAAMiwC,EAAM+I,EAASsD,EAAsBD,GACnE,GAA6CI,GAAWr8C,EAApD7tB,EAAIqnE,GAAY55C,EAAM,EAAG,GAAG08C,WAOhC,OALAnqE,GAAU,IAANA,EAAU,EAAIA,EAClBymE,EAAqB,MAAXA,EAAkBA,EAAUqD,EACtCI,EAAYJ,EAAiB9pE,GAAKA,EAAI+pE,EAAuB,EAAI,IAAUD,EAAJ9pE,EAAqB,EAAI,GAChG6tB,EAAY,GAAK6vC,EAAO,IAAM+I,EAAUqD,GAAkBI,EAAY,GAGlEz8C,KAAMI,EAAY,EAAIJ,EAAOA,EAAO,EACpCI,UAAWA,EAAY,EAAKA,EAAYu0C,EAAW30C,EAAO,GAAKI,GAQvE,QAASu8C,IAAWvN,GAChB,GAAIyD,GAAQzD,EAAO0B,GACf1nC,EAASgmC,EAAO2B,EAIpB,OAFA3B,GAAOsB,QAAUtB,EAAOsB,SAAW7mE,GAAOmlE,WAAWI,EAAO4B,IAE9C,OAAV6B,GAAmBzpC,IAAW78B,GAAuB,KAAVsmE,EACpChpE,GAAO+yE,SAAS9O,WAAW,KAGjB,gBAAV+E,KACPzD,EAAO0B,GAAK+B,EAAQzD,EAAOsB,QAAQmM,SAAShK,IAG5ChpE,GAAOmD,SAAS6lE,GACT,GAAI1D,GAAO0D,GAAO,IAClBzpC,EACHn9B,EAAQm9B,GACRyxC,GAA2BzL,GAE3B+K,EAA4B/K,GAGhCsM,GAAkBtM,GAGf,GAAID,GAAOC,KAyCtB,QAAS0N,IAAOjpC,EAAIkpC,GAChB,GAAIv8C,GAAKj1B,CAIT,IAHuB,IAAnBwxE,EAAQrxE,QAAgBO,EAAQ8wE,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQrxE,OACT,MAAO7B,KAGX,KADA22B,EAAMu8C,EAAQ,GACTxxE,EAAI,EAAGA,EAAIwxE,EAAQrxE,SAAUH,EAC1BwxE,EAAQxxE,GAAGsoC,GAAIrT,KACfA,EAAMu8C,EAAQxxE,GAGtB,OAAOi1B,GAgsBX,QAASoyC,IAAeN,EAAKllE,GACzB,GAAI4vE,EAGJ,OAAqB,gBAAV5vE,KACPA,EAAQklE,EAAItD,aAAaqJ,YAAYjrE,GAEhB,gBAAVA,IACAklE,GAIf0K,EAAa/xE,KAAKwG,IAAI6gE,EAAIppC,OAClBkrC,EAAY9B,EAAItyC,OAAQ5yB,IAChCklE,EAAI9C,GAAG,OAAS8C,EAAInB,OAAS,MAAQ,IAAM,SAAS/jE,EAAO4vE,GACpD1K,GAGX,QAASK,IAAUL,EAAK2K,GACpB,MAAO3K,GAAI9C,GAAG,OAAS8C,EAAInB,OAAS,MAAQ,IAAM8L,KAGtD,QAASvK,IAAUJ,EAAK2K,EAAM7vE,GAC1B,MAAa,UAAT6vE,EACOrK,GAAeN,EAAKllE,GAEpBklE,EAAI9C,GAAG,OAAS8C,EAAInB,OAAS,MAAQ,IAAM8L,GAAM7vE,GAIhE,QAAS8vE,IAAaD,EAAME,GACxB,MAAO,UAAU/vE,GACb,MAAa,OAATA,GACAslE,GAAUxsE,KAAM+2E,EAAM7vE,GACtBvD,GAAO2oE,aAAatsE,KAAMi3E,GACnBj3E,MAEAysE,GAAUzsE,KAAM+2E,IAkCnC,QAASG,IAAa1/C,GAElB,MAAc,KAAPA,EAAa,OAGxB,QAAS2/C,IAAazN,GAGlB,MAAe,QAARA,EAAiB,IAmL5B,QAAS0N,IAAmB5gE,GACxB7S,GAAO4M,SAASo9B,GAAGn3B,GAAQ,WACvB,MAAOxW,MAAKqT,MAAMmD,IA0D1B,QAAS6gE,IAAWC,GAEK,mBAAVC,SAGXC,GAAkBC,GAAY9zE,OAE1B8zE,GAAY9zE,OADZ2zE,EACqBjP,EACb,uGAGA1kE,IAEaA,IAl7E7B,IAtVA,GAAIA,IAIA6zE,GAGAnyE,GANAqyE,GAAU,QAEVD,GAAgC,mBAAXrQ,GAAyBA,EAASpnE,KAEvDitB,GAAQloB,KAAKkoB,MACbtnB,GAAiBS,OAAOuN,UAAUhO,eAGlCy7B,GAAO,EACPD,GAAQ,EACRytC,GAAO,EACP3tC,GAAO,EACPD,GAAS,EACTD,GAAS,EACTD,GAAc,EAGd4C,MAGA0nC,MAGAkE,GAA+B,mBAAXzvE,IAA0BA,EAAOD,QAGrD61E,GAAkB,sBAClBkC,GAA0B,uDAI1BC,GAAmB,gIAGnB/H,GAAmB,mKACnBQ,GAAwB,yCAGxBkB,GAA2B,QAC3BP,GAA6B,UAC7BL,GAA4B,UAC5BG,GAA2B,gBAC3BQ,GAAmB,MACnBL,GAAiB,mHACjBG,GAAqB,uBACrBC,GAAc,KACdF,GAAwB,yBACxBK,GAAoB,UAGpBhB,GAAqB,KACrBO,GAAsB,OACtBN,GAAwB,QACxBC,GAAuB,QACvBG,GAAsB,aACtBD,GAAyB,WAIzBuE,GAAW,4IAEX0C,GAAY,uBAEZzC,KACK,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIjBC,KACK,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAIXrD,GAAuB,kBAIvB8F,IADyB,0CAA0C/vE,MAAM,MAErEgwE,aAAiB,EACjBC,QAAY,IACZC,QAAY,IACZC,MAAU,KACVC,KAAS,MACTC,OAAW,OACXC,MAAU,UAGdjL,IACIsI,GAAK,cACLrqE,EAAI,SACJ7K,EAAI,SACJ4K,EAAI,OACJiB,EAAI,MACJisE,EAAI,OACJrsB,EAAI,OACJgnB,EAAI,UACJl8B,EAAI,QACJwhC,EAAI,UACJ9lE,EAAI,OACJ+lE,IAAM,YACNlsE,EAAI,UACJ4mE,EAAI,aACJE,GAAI,WACJJ,GAAI,eAGR3F,IACIoL,UAAY,YACZC,WAAa,aACbC,QAAU,UACVC,SAAW,WACXC,YAAc,eAIlB5I,MAGAiG,IACI7qE,EAAG,GACH7K,EAAG,GACH4K,EAAG,GACHiB,EAAG,GACH0qC,EAAG,IAIP+hC,GAAmB,gBAAgB/wE,MAAM,KACzCgxE,GAAe,kBAAkBhxE,MAAM,KAEvC+nE,IACI/4B,EAAO,WACH,MAAO/2C,MAAKg6B,QAAU,GAE1Bg/C,IAAO,SAAU91C,GACb,MAAOljC,MAAK8oE,aAAamQ,YAAYj5E,KAAMkjC,IAE/Cg2C,KAAO,SAAUh2C,GACb,MAAOljC,MAAK8oE,aAAae,OAAO7pE,KAAMkjC,IAE1Co1C,EAAO,WACH,MAAOt4E,MAAKgjC,QAEhBw1C,IAAO,WACH,MAAOx4E,MAAKk6B,aAEhB7tB,EAAO,WACH,MAAOrM,MAAKgqE,OAEhBmP,GAAO,SAAUj2C,GACb,MAAOljC,MAAK8oE,aAAasQ,YAAYp5E,KAAMkjC,IAE/Cm2C,IAAO,SAAUn2C,GACb,MAAOljC,MAAK8oE,aAAawQ,cAAct5E,KAAMkjC,IAEjDq2C,KAAO,SAAUr2C,GACb,MAAOljC,MAAK8oE,aAAa0Q,SAASx5E,KAAMkjC,IAE5C+oB,EAAO,WACH,MAAOjsD,MAAK+pE,QAEhBkJ,EAAO,WACH,MAAOjzE,MAAKy5E,WAEhBC,GAAO,WACH,MAAO/Q,GAAa3oE,KAAK85B,OAAS,IAAK,IAE3C6/C,KAAO,WACH,MAAOhR,GAAa3oE,KAAK85B,OAAQ,IAErC8/C,MAAQ,WACJ,MAAOjR,GAAa3oE,KAAK85B,OAAQ,IAErC+/C,OAAS,WACL,GAAIpnE,GAAIzS,KAAK85B,OAAQrL,EAAOhc,GAAK,EAAI,IAAM,GAC3C,OAAOgc,GAAOk6C,EAAa5jE,KAAKklB,IAAIxX,GAAI,IAE5C2gE,GAAO,WACH,MAAOzK,GAAa3oE,KAAK6yE,WAAa,IAAK,IAE/CiH,KAAO,WACH,MAAOnR,GAAa3oE,KAAK6yE,WAAY,IAEzCkH,MAAQ,WACJ,MAAOpR,GAAa3oE,KAAK6yE,WAAY,IAEzCG,GAAO,WACH,MAAOrK,GAAa3oE,KAAKg6E,cAAgB,IAAK,IAElDC,KAAO,WACH,MAAOtR,GAAa3oE,KAAKg6E,cAAe,IAE5CE,MAAQ,WACJ,MAAOvR,GAAa3oE,KAAKg6E,cAAe,IAE5C1tE,EAAI,WACA,MAAOtM,MAAK8yE,WAEhBI,EAAI,WACA,MAAOlzE,MAAKi4B,cAEhB7yB,EAAO,WACH,MAAOpF,MAAK8oE,aAAaqR,SAASn6E,KAAKq4B,QAASr4B,KAAKo4B,WAAW,IAEpEye,EAAO,WACH,MAAO72C,MAAK8oE,aAAaqR,SAASn6E,KAAKq4B,QAASr4B,KAAKo4B,WAAW,IAEpE5O,EAAO,WACH,MAAOxpB,MAAKq4B,SAEhBjtB,EAAO,WACH,MAAOpL,MAAKq4B,QAAU,IAAM,IAEhC73B,EAAO,WACH,MAAOR,MAAKo4B,WAEhB/sB,EAAO,WACH,MAAOrL,MAAKm4B,WAEhB1O,EAAO,WACH,MAAOujD,GAAMhtE,KAAKk4B,eAAiB,MAEvCkiD,GAAO,WACH,MAAOzR,GAAaqE,EAAMhtE,KAAKk4B,eAAiB,IAAK,IAEzDmiD,IAAO,WACH,MAAO1R,GAAa3oE,KAAKk4B,eAAgB,IAE7CoiD,KAAO,WACH,MAAO3R,GAAa3oE,KAAKk4B,eAAgB,IAE7CqiD,EAAO,WACH,GAAIn1E,IAAKpF,KAAKyvE,OACVxpE,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAI0iE,EAAaqE,EAAM5nE,EAAI,IAAK,GAAK,IAAMujE,EAAaqE,EAAM5nE,GAAK,GAAI,IAElFo1E,GAAO,WACH,GAAIp1E,IAAKpF,KAAKyvE,OACVxpE,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAI0iE,EAAaqE,EAAM5nE,EAAI,IAAK,GAAKujE,EAAaqE,EAAM5nE,GAAK,GAAI,IAE5EkX,EAAI,WACA,MAAOtc,MAAKy6E,YAEhBC,GAAK,WACD,MAAO16E,MAAK26E,YAEhB3wD,EAAO,WACH,MAAOhqB,MAAK46E,QAEhBrC,EAAI,WACA,MAAOv4E,MAAK4pE,YAIpBpB,MAEAqS,IAAS,SAAU,cAAe,WAAY,gBAAiB,eAqE5D/B,GAAiBtzE,QACpBH,GAAIyzE,GAAiBngC,MACrBm3B,GAAqBzqE,GAAI,KAAOujE,EAAgBkH,GAAqBzqE,IAAIA,GAE7E,MAAO0zE,GAAavzE,QAChBH,GAAI0zE,GAAapgC,MACjBm3B,GAAqBzqE,GAAIA,IAAKojE,EAASqH,GAAqBzqE,IAAI,EAEpEyqE,IAAqBgL,KAAOrS,EAASqH,GAAqB0I,IAAK,GA2a/DrzE,EAAO6jE,EAAOr1D,WAEVm6D,IAAM,SAAU5E,GACZ,GAAIxjE,GAAML,CACV,KAAKA,IAAK6jE,GACNxjE,EAAOwjE,EAAO7jE,GACM,kBAATK,GACP1F,KAAKqF,GAAKK,EAEV1F,KAAK,IAAMqF,GAAKK,GAK5B6kE,QAAU,wFAAwFxiE,MAAM,KACxG8hE,OAAS,SAAUrpE,GACf,MAAOR,MAAKuqE,QAAQ/pE,EAAEw5B,UAG1B+gD,aAAe,kDAAkDhzE,MAAM,KACvEkxE,YAAc,SAAUz4E,GACpB,MAAOR,MAAK+6E,aAAav6E,EAAEw5B,UAG/Bm4C,YAAc,SAAU6I,GACpB,GAAI31E,GAAG+mE,EAAK6O,CAMZ,KAJKj7E,KAAKk7E,eACNl7E,KAAKk7E,iBAGJ71E,EAAI,EAAO,GAAJA,EAAQA,IAQhB,GANKrF,KAAKk7E,aAAa71E,KACnB+mE,EAAMzoE,GAAOkqE,KAAK,IAAMxoE,IACxB41E,EAAQ,IAAMj7E,KAAK6pE,OAAOuC,EAAK,IAAM,KAAOpsE,KAAKi5E,YAAY7M,EAAK,IAClEpsE,KAAKk7E,aAAa71E,GAAK,GAAIosE,QAAOwJ,EAAM/uE,QAAQ,IAAK,IAAK,MAG1DlM,KAAKk7E,aAAa71E,GAAG+I,KAAK4sE,GAC1B,MAAO31E,IAKnB81E,UAAY,2DAA2DpzE,MAAM,KAC7EyxE,SAAW,SAAUh5E,GACjB,MAAOR,MAAKm7E,UAAU36E,EAAEwpE,QAG5BoR,eAAiB,8BAA8BrzE,MAAM,KACrDuxE,cAAgB,SAAU94E,GACtB,MAAOR,MAAKo7E,eAAe56E,EAAEwpE,QAGjCqR,aAAe,uBAAuBtzE,MAAM,KAC5CqxE,YAAc,SAAU54E,GACpB,MAAOR,MAAKq7E,aAAa76E,EAAEwpE,QAG/ByI,cAAgB,SAAU6I,GACtB,GAAIj2E,GAAG+mE,EAAK6O,CAMZ,KAJKj7E,KAAKu7E,iBACNv7E,KAAKu7E,mBAGJl2E,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANKrF,KAAKu7E,eAAel2E,KACrB+mE,EAAMzoE,IAAQ,IAAM,IAAIqmE,IAAI3kE,GAC5B41E,EAAQ,IAAMj7E,KAAKw5E,SAASpN,EAAK,IAAM,KAAOpsE,KAAKs5E,cAAclN,EAAK,IAAM,KAAOpsE,KAAKo5E,YAAYhN,EAAK,IACzGpsE,KAAKu7E,eAAel2E,GAAK,GAAIosE,QAAOwJ,EAAM/uE,QAAQ,IAAK,IAAK,MAG5DlM,KAAKu7E,eAAel2E,GAAG+I,KAAKktE,GAC5B,MAAOj2E,IAKnBm2E,iBACIC,GAAK,SACLC,EAAI,aACJC,GAAK,eACLC,IAAM,kBACNC,KAAO,yBAEXzL,eAAiB,SAAU1nE,GACvB,GAAI+iE,GAASzrE,KAAKw7E,gBAAgB9yE,EAOlC,QANK+iE,GAAUzrE,KAAKw7E,gBAAgB9yE,EAAIyD,iBACpCs/D,EAASzrE,KAAKw7E,gBAAgB9yE,EAAIyD,eAAeD,QAAQ,mBAAoB,SAAUw+D,GACnF,MAAOA,GAAIjuC,MAAM,KAErBz8B,KAAKw7E,gBAAgB9yE,GAAO+iE,GAEzBA,GAGX8G,KAAO,SAAU5F,GAGb,MAAiD,OAAxCA,EAAQ,IAAIhe,cAAcnqC,OAAO,IAG9C0sD,eAAiB,gBACjBiJ,SAAW,SAAU9hD,EAAOD,EAAS0jD,GACjC,MAAIzjD,GAAQ,GACDyjD,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAIhCC,WACIC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAEfC,SAAW,SAAU5zE,EAAK0jE,GACtB,GAAIX,GAASzrE,KAAK+7E,UAAUrzE,EAC5B,OAAyB,kBAAX+iE,GAAwBA,EAAOnzD,MAAM8zD,GAAOX,GAG9D8Q,eACIC,OAAS,QACTC,KAAO,SACPpxE,EAAI,gBACJ7K,EAAI,WACJk8E,GAAK,aACLtxE,EAAI,UACJuxE,GAAK,WACLtwE,EAAI,QACJ8sE,GAAK,UACLpiC,EAAI,UACJ6lC,GAAK,YACLnqE,EAAI,SACJoqE,GAAK,YAGT7G,aAAe,SAAU1K,EAAQwK,EAAejE,EAAQkE,GACpD,GAAItK,GAASzrE,KAAKu8E,cAAc1K,EAChC,OAA0B,kBAAXpG,GACXA,EAAOH,EAAQwK,EAAejE,EAAQkE,GACtCtK,EAAOv/D,QAAQ,MAAOo/D,IAG9BwR,WAAa,SAAUpxD,EAAM+/C,GACzB,GAAIvoC,GAASljC,KAAKu8E,cAAc7wD,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAXwX,GAAwBA,EAAOuoC,GAAUvoC,EAAOh3B,QAAQ,MAAOu/D,IAGjF1C,QAAU,SAAUuC,GAChB,MAAOtrE,MAAK+8E,SAAS7wE,QAAQ,KAAMo/D,IAEvCyR,SAAW,KAEXpG,SAAW,SAAU9E,GACjB,MAAOA,IAGXmL,WAAa,SAAUnL,GACnB,MAAOA,IAGX9H,KAAO,SAAUqC,GACb,MAAOoC,IAAWpC,EAAKpsE,KAAKmzE,MAAM7E,IAAKtuE,KAAKmzE,MAAM5E,KAAKxE,MAG3DoJ,OACI7E,IAAM,EACNC,IAAM,GAGV0O,aAAc,eACd/M,YAAa,WACT,MAAOlwE,MAAKi9E,gBA6wBpBt5E,GAAS,SAAUgpE,EAAOzpC,EAAQS,EAAQu5B,GACtC,GAAIz8D,EAiBJ,OAfuB,iBAAb,KACNy8D,EAASv5B,EACTA,EAASt9B,GAIb5F,KACAA,EAAEkqE,kBAAmB,EACrBlqE,EAAEmqE,GAAK+B,EACPlsE,EAAEoqE,GAAK3nC,EACPziC,EAAEqqE,GAAKnnC,EACPljC,EAAEsqE,QAAU7N,EACZz8D,EAAEwqE,QAAS,EACXxqE,EAAE0qE,IAAM5D,IAEDkP,GAAWh2E,IAGtBkD,GAAOwkE,6BAA8B,EAErCxkE,GAAO4xE,wBAA0BlN,EAC7B,4LAIA,SAAUa,GACNA,EAAOI,GAAK,GAAInlE,MAAK+kE,EAAO0B,MA0BpCjnE,GAAO4H,IAAM,WACT,GAAI60D,MAAU3jC,MAAMl8B,KAAKgF,UAAW,EAEpC,OAAOqxE,IAAO,WAAYxW,IAG9Bz8D,GAAOqJ,IAAM,WACT,GAAIozD,MAAU3jC,MAAMl8B,KAAKgF,UAAW,EAEpC,OAAOqxE,IAAO,UAAWxW,IAI7Bz8D,GAAOkqE,IAAM,SAAUlB,EAAOzpC,EAAQS,EAAQu5B,GAC1C,GAAIz8D,EAkBJ,OAhBuB,iBAAb,KACNy8D,EAASv5B,EACTA,EAASt9B,GAIb5F,KACAA,EAAEkqE,kBAAmB,EACrBlqE,EAAE+xE,SAAU,EACZ/xE,EAAEwqE,QAAS,EACXxqE,EAAEqqE,GAAKnnC,EACPljC,EAAEmqE,GAAK+B,EACPlsE,EAAEoqE,GAAK3nC,EACPziC,EAAEsqE,QAAU7N,EACZz8D,EAAE0qE,IAAM5D,IAEDkP,GAAWh2E,GAAGotE,OAIzBlqE,GAAOi3E,KAAO,SAAUjO,GACpB,MAAOhpE,IAAe,IAARgpE,IAIlBhpE,GAAO4M,SAAW,SAAUo8D,EAAOjkE,GAC/B,GAGI+lB,GACAyuD,EACAC,EACAC,EANA7sE,EAAWo8D,EAEXvoE,EAAQ,IA+DZ,OAzDIT,IAAO05E,WAAW1Q,GAClBp8D,GACImlE,GAAI/I,EAAMtC,cACVh+D,EAAGsgE,EAAMrC,MACTvzB,EAAG41B,EAAMpC,SAEW,gBAAVoC,IACdp8D,KACI7H,EACA6H,EAAS7H,GAAOikE,EAEhBp8D,EAAS2nB,aAAey0C,IAElBvoE,EAAQuzE,GAAwBrzE,KAAKqoE,KAC/Cl+C,EAAqB,MAAbrqB,EAAM,GAAc,GAAK,EACjCmM,GACIkC,EAAG,EACHpG,EAAG2gE,EAAM5oE,EAAMwqE,KAASngD,EACxBrjB,EAAG4hE,EAAM5oE,EAAM68B,KAASxS,EACxBjuB,EAAGwsE,EAAM5oE,EAAM48B,KAAWvS,EAC1BpjB,EAAG2hE,EAAM5oE,EAAM28B,KAAWtS,EAC1BinD,GAAI1I,EAAM5oE,EAAM08B,KAAgBrS,KAE1BrqB,EAAQwzE,GAAiBtzE,KAAKqoE,KACxCl+C,EAAqB,MAAbrqB,EAAM,GAAc,GAAK,EACjC+4E,EAAW,SAAUG,GAIjB,GAAIhjD,GAAMgjD,GAAO74D,WAAW64D,EAAIpxE,QAAQ,IAAK,KAE7C,QAAQ3H,MAAM+1B,GAAO,EAAIA,GAAO7L,GAEpCle,GACIkC,EAAG0qE,EAAS/4E,EAAM,IAClB2yC,EAAGomC,EAAS/4E,EAAM,IAClBiI,EAAG8wE,EAAS/4E,EAAM,IAClBgH,EAAG+xE,EAAS/4E,EAAM,IAClB5D,EAAG28E,EAAS/4E,EAAM,IAClBiH,EAAG8xE,EAAS/4E,EAAM,IAClB6nD,EAAGkxB,EAAS/4E,EAAM,MAEK,gBAAbmM,KACT,QAAUA,IAAY,MAAQA,MACnC6sE,EAAUvR,EAAkBloE,GAAO4M,EAASiY,MAAO7kB,GAAO4M,EAASkY,KAEnElY,KACAA,EAASmlE,GAAK0H,EAAQllD,aACtB3nB,EAASwmC,EAAIqmC,EAAQvT,QAGzBqT,EAAM,GAAI3T,GAASh5D,GAEf5M,GAAO05E,WAAW1Q,IAAUrF,EAAWqF,EAAO,aAC9CuQ,EAAI1S,QAAUmC,EAAMnC,SAGjB0S,GAIXv5E,GAAO45E,QAAU7F,GAGjB/zE,GAAO65E,cAAgB3F,GAGvBl0E,GAAOuwE,SAAW,aAIlBvwE,GAAOynE,iBAAmBA,GAI1BznE,GAAO2oE,aAAe,aAGtB3oE,GAAO85E,sBAAwB,SAAUC,EAAWC,GAChD,MAAIzH,IAAuBwH,KAAer3E,GAC/B,EAEPs3E,IAAUt3E,EACH6vE,GAAuBwH,IAElCxH,GAAuBwH,GAAaC,GAC7B,IAGXh6E,GAAOg0C,KAAO0wB,EACV,wDACA,SAAU3/D,EAAKxB,GACX,MAAOvD,IAAOggC,OAAOj7B,EAAKxB,KAOlCvD,GAAOggC,OAAS,SAAUj7B,EAAK2O,GAC3B,GAAIlE,EAcJ,OAbIzK,KAEIyK,EADmB,mBAAb,GACCxP,GAAOi6E,aAAal1E,EAAK2O,GAGzB1T,GAAOmlE,WAAWpgE,GAGzByK,IACAxP,GAAO4M,SAASi6D,QAAU7mE,GAAO6mE,QAAUr3D,IAI5CxP,GAAO6mE,QAAQqT,OAG1Bl6E,GAAOi6E,aAAe,SAAUpnE,EAAMa,GAClC,MAAe,QAAXA,GACAA,EAAOymE,KAAOtnE,EACTktB,GAAQltB,KACTktB,GAAQltB,GAAQ,GAAIwyD,IAExBtlC,GAAQltB,GAAMs3D,IAAIz2D,GAGlB1T,GAAOggC,OAAOntB,GAEPktB,GAAQltB,WAGRktB,IAAQltB,GACR,OAIf7S,GAAOo6E,SAAW1V,EACd,gEACA,SAAU3/D,GACN,MAAO/E,IAAOmlE,WAAWpgE,KAKjC/E,GAAOmlE,WAAa,SAAUpgE,GAC1B,GAAIi7B,EAMJ,IAJIj7B,GAAOA,EAAI8hE,SAAW9hE,EAAI8hE,QAAQqT,QAClCn1E,EAAMA,EAAI8hE,QAAQqT,QAGjBn1E,EACD,MAAO/E,IAAO6mE,OAGlB,KAAKzkE,EAAQ2C,GAAM,CAGf,GADAi7B,EAASyrC,EAAW1mE,GAEhB,MAAOi7B,EAEXj7B,IAAOA,GAGX,MAAOwmE,GAAaxmE,IAIxB/E,GAAOmD,SAAW,SAAUsb,GACxB,MAAOA,aAAe6mD,IACV,MAAP7mD,GAAeklD,EAAWllD,EAAK,qBAIxCze,GAAO05E,WAAa,SAAUj7D,GAC1B,MAAOA,aAAemnD,GAG1B,KAAKlkE,GAAIw1E,GAAMr1E,OAAS,EAAGH,IAAK,IAAKA,GACjCmoE,EAASqN,GAAMx1E,IAGnB1B,IAAOspE,eAAiB,SAAUC,GAC9B,MAAOD,GAAeC,IAG1BvpE,GAAO+yE,QAAU,SAAUsH,GACvB,GAAIx9E,GAAImD,GAAOkqE,IAAImH,IAQnB,OAPa,OAATgJ,EACA74E,EAAO3E,EAAE2qE,IAAK6S,GAGdx9E,EAAE2qE,IAAIpD,iBAAkB,EAGrBvnE,GAGXmD,GAAOs6E,UAAY,WACf,MAAOt6E,IAAO2U,MAAM,KAAM/S,WAAW04E,aAGzCt6E,GAAO0uE,kBAAoB,SAAU1F,GACjC,MAAOK,GAAML,IAAUK,EAAML,GAAS,GAAK,KAAO,MAQtDxnE,EAAOxB,GAAOgqC,GAAKs7B,EAAOt1D,WAEtBipB,MAAQ,WACJ,MAAOj5B,IAAO3D,OAGlB6G,QAAU,WACN,OAAQ7G,KAAKspE,GAA4B,KAArBtpE,KAAKkrE,SAAW,IAGxC0P,KAAO,WACH,MAAO71E,MAAKC,OAAOhF,KAAO,MAG9BkF,SAAW,WACP,MAAOlF,MAAK48B,QAAQ+G,OAAO,MAAMT,OAAO,qCAG5Cn8B,OAAS,WACL,MAAO/G,MAAKkrE,QAAU,GAAI/mE,OAAMnE,MAAQA,KAAKspE,IAGjDriE,YAAc,WACV,GAAIzG,GAAImD,GAAO3D,MAAM6tE,KACrB,OAAI,GAAIrtE,EAAEs5B,QAAUt5B,EAAEs5B,QAAU,KACrBi2C,EAAavvE,EAAG,gCAEhBuvE,EAAavvE,EAAG,mCAI/B+H,QAAU,WACN,GAAI/H,GAAIR,IACR,QACIQ,EAAEs5B,OACFt5B,EAAEw5B,QACFx5B,EAAEwiC,OACFxiC,EAAE63B,QACF73B,EAAE43B,UACF53B,EAAE23B,UACF33B,EAAE03B,iBAIV42C,QAAU,WACN,MAAOA,GAAQ9uE,OAGnBk+E,aAAe,WACX,MAAIl+E,MAAK2uE,GACE3uE,KAAK8uE,WAAalC,EAAc5sE,KAAK2uE,IAAK3uE,KAAKirE,OAAStnE,GAAOkqE,IAAI7tE,KAAK2uE,IAAMhrE,GAAO3D,KAAK2uE,KAAKpmE,WAAa,GAGhH,GAGX41E,aAAe,WACX,MAAOh5E,MAAWnF,KAAKmrE,MAG3BiT,UAAW,WACP,MAAOp+E,MAAKmrE,IAAIloD,UAGpB4qD,IAAM,SAAUwQ,GACZ,MAAOr+E,MAAKyvE,KAAK,EAAG4O,IAGxB3O,MAAQ,SAAU2O,GASd,MARIr+E,MAAKirE,SACLjrE,KAAKyvE,KAAK,EAAG4O,GACbr+E,KAAKirE,QAAS,EAEVoT,GACAr+E,KAAK0T,IAAI1T,KAAKs+E,gBAAiB,MAGhCt+E,MAGXkjC,OAAS,SAAUq7C,GACf,GAAI9S,GAASsE,EAAa/vE,KAAMu+E,GAAe56E,GAAO65E,cACtD,OAAOx9E,MAAK8oE,aAAakU,WAAWvR,IAGxC/3D,IAAMs4D,EAAY,EAAG,OAErBthD,SAAWshD,EAAY,GAAI,YAE3BtgD,KAAO,SAAUihD,EAAOO,EAAOsR,GAC3B,GAEI9yD,GAAM+/C,EAAQgT,EAFdC,EAAO5S,EAAOa,EAAO3sE,MACrB2+E,EAAyC,KAA7B3+E,KAAKyvE,OAASiP,EAAKjP,OA8BnC,OA3BAvC,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAEpBxhD,EAAmD,OAA3C1rB,KAAKkuE,cAAgBwQ,EAAKxQ,eAElCzC,EAAwC,IAA7BzrE,KAAK85B,OAAS4kD,EAAK5kD,SAAiB95B,KAAKg6B,QAAU0kD,EAAK1kD,SAGnEykD,EAAcz+E,KAAO2D,GAAO3D,MAAM4+E,QAAQ,UACrCF,EAAO/6E,GAAO+6E,GAAME,QAAQ,UAEjCH,GACgE,KADhDz+E,KAAKyvE,OAAS9rE,GAAO3D,MAAM4+E,QAAQ,SAASnP,QACnDiP,EAAKjP,OAAS9rE,GAAO+6E,GAAME,QAAQ,SAASnP,SACrDhE,GAAUgT,EAAa/yD,EACT,SAAVwhD,IACAzB,GAAkB,MAGtB//C,EAAQ1rB,KAAO0+E,EACfjT,EAAmB,WAAVyB,EAAqBxhD,EAAO,IACvB,WAAVwhD,EAAqBxhD,EAAO,IAClB,SAAVwhD,EAAmBxhD,EAAO,KAChB,QAAVwhD,GAAmBxhD,EAAOizD,GAAY,MAC5B,SAAVzR,GAAoBxhD,EAAOizD,GAAY,OACvCjzD,GAED8yD,EAAU/S,EAASJ,EAASI,IAGvCjjD,KAAO,SAAU6R,EAAMy7C,GACnB,MAAOnyE,IAAO4M,UAAUkY,GAAIzoB,KAAMwoB,KAAM6R,IAAOsJ,OAAO3jC,KAAK2jC,UAAUk7C,UAAU/I,IAGnFgJ,QAAU,SAAUhJ,GAChB,MAAO91E,MAAKwoB,KAAK7kB,KAAUmyE,IAG/BwG,SAAW,SAAUjiD,GAGjB,GAAIsC,GAAMtC,GAAQ12B,KACdo7E,EAAMjT,EAAOnvC,EAAK38B,MAAM4+E,QAAQ,OAChClzD,EAAO1rB,KAAK0rB,KAAKqzD,EAAK,QAAQ,GAC9B77C,EAAgB,GAAPxX,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAO1rB,MAAKkjC,OAAOljC,KAAK8oE,aAAawT,SAASp5C,EAAQljC,QAG1D0uE,WAAa,WACT,MAAOA,GAAW1uE,KAAK85B,SAG3BklD,MAAQ,WACJ,MAAQh/E,MAAKyvE,OAASzvE,KAAK48B,QAAQ5C,MAAM,GAAGy1C,QACxCzvE,KAAKyvE,OAASzvE,KAAK48B,QAAQ5C,MAAM,GAAGy1C,QAG5CzF,IAAM,SAAU2C,GACZ,GAAI3C,GAAMhqE,KAAKirE,OAASjrE,KAAKspE,GAAGkN,YAAcx2E,KAAKspE,GAAG2V,QACtD,OAAa,OAATtS,GACAA,EAAQiJ,GAAajJ,EAAO3sE,KAAK8oE,cAC1B9oE,KAAK0T,IAAIi5D,EAAQ3C,EAAK,MAEtBA,GAIfhwC,MAAQg9C,GAAa,SAAS,GAE9B4H,QAAU,SAAU1R,GAIhB,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACDltE,KAAKg6B,MAAM,EAEf,KAAK,UACL,IAAK,QACDh6B,KAAKgjC,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACDhjC,KAAKq4B,MAAM,EAEf,KAAK,OACDr4B,KAAKo4B,QAAQ,EAEjB,KAAK,SACDp4B,KAAKm4B,QAAQ,EAEjB,KAAK,SACDn4B,KAAKk4B,aAAa,GAgBtB,MAXc,SAAVg1C,EACAltE,KAAK8yE,QAAQ,GACI,YAAV5F,GACPltE,KAAKi4B,WAAW,GAIN,YAAVi1C,GACAltE,KAAKg6B,MAAqC,EAA/Bj1B,KAAKC,MAAMhF,KAAKg6B,QAAU,IAGlCh6B,MAGXk/E,MAAO,SAAUhS,GAEb,MADAA,GAAQD,EAAeC,GAChBltE,KAAK4+E,QAAQ1R,GAAOx5D,IAAI,EAAc,YAAVw5D,EAAsB,OAASA,GAAQxiD,SAAS,EAAG,OAG1FkhD,QAAS,SAAUe,EAAOO,GAEtB,MADAA,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQhpE,GAAOmD,SAAS6lE,GAASA,EAAQhpE,GAAOgpE,IACxC3sE,MAAQ2sE,IAER3sE,KAAK48B,QAAQgiD,QAAQ1R,IAAUvpE,GAAOgpE,GAAOiS,QAAQ1R,IAIrEnB,SAAU,SAAUY,EAAOO,GAEvB,MADAA,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQhpE,GAAOmD,SAAS6lE,GAASA,EAAQhpE,GAAOgpE,IAChCA,GAAR3sE,OAEAA,KAAK48B,QAAQgiD,QAAQ1R,IAAUvpE,GAAOgpE,GAAOiS,QAAQ1R,IAIrEiS,OAAQ,SAAUxS,EAAOO,GAErB,MADAA,GAAQD,EAAeC,GAAS,eAClB,gBAAVA,GACAP,EAAQhpE,GAAOmD,SAAS6lE,GAASA,EAAQhpE,GAAOgpE,IACxC3sE,QAAU2sE,IAEV3sE,KAAK48B,QAAQgiD,QAAQ1R,MAAYpB,EAAOa,EAAO3sE,MAAM4+E,QAAQ1R,IAI7E3hE,IAAK88D,EACI,mGACA,SAAU5iE,GAEN,MADAA,GAAQ9B,GAAO2U,MAAM,KAAM/S,WACZvF,KAARyF,EAAezF,KAAOyF,IAI1CuH,IAAKq7D,EACG,mGACA,SAAU5iE,GAEN,MADAA,GAAQ9B,GAAO2U,MAAM,KAAM/S,WACpBE,EAAQzF,KAAOA,KAAOyF,IAczCgqE,KAAO,SAAU9C,EAAO0R,GACpB,GACIe,GADAr2D,EAAS/oB,KAAKkrE,SAAW,CAE7B,OAAa,OAATyB,EA0BO3sE,KAAKirE,OAASliD,EAAS/oB,KAAKs+E,iBAzBd,gBAAV3R,KACPA,EAAQiF,EAA0BjF,IAElC5nE,KAAKklB,IAAI0iD,GAAS,KAClBA,EAAgB,GAARA,IAEP3sE,KAAKirE,QAAUoT,IAChBe,EAAcp/E,KAAKs+E,iBAEvBt+E,KAAKkrE,QAAUyB,EACf3sE,KAAKirE,QAAS,EACK,MAAfmU,GACAp/E,KAAK0qB,SAAS00D,EAAa,KAE3Br2D,IAAW4jD,KACN0R,GAAiBr+E,KAAKq/E,kBACvBlT,EAAgCnsE,KACxB2D,GAAO4M,SAASwY,EAAS4jD,EAAO,KAAM,GAAG,GACzC3sE,KAAKq/E,oBACbr/E,KAAKq/E,mBAAoB,EACzB17E,GAAO2oE,aAAatsE,MAAM,GAC1BA,KAAKq/E,kBAAoB,OAM9Br/E,OAGXy6E,SAAW,WACP,MAAOz6E,MAAKirE,OAAS,MAAQ,IAGjC0P,SAAW,WACP,MAAO36E,MAAKirE,OAAS,6BAA+B,IAGxDgT,UAAY,WAMR,MALIj+E,MAAKgrE,KACLhrE,KAAKyvE,KAAKzvE,KAAKgrE,MACW,gBAAZhrE,MAAK4qE,IACnB5qE,KAAKyvE,KAAKzvE,KAAK4qE,IAEZ5qE,MAGXs/E,qBAAuB,SAAU3S,GAQ7B,MAHIA,GAJCA,EAIOhpE,GAAOgpE,GAAO8C,OAHd,GAMJzvE,KAAKyvE,OAAS9C,GAAS,KAAO,GAG1CuB,YAAc,WACV,MAAOA,GAAYluE,KAAK85B,OAAQ95B,KAAKg6B,UAGzCE,UAAY,SAAUyyC,GAClB,GAAIzyC,GAAYjN,IAAOtpB,GAAO3D,MAAM4+E,QAAQ,OAASj7E,GAAO3D,MAAM4+E,QAAQ,SAAW,OAAS,CAC9F,OAAgB,OAATjS,EAAgBzyC,EAAYl6B,KAAK0T,IAAKi5D,EAAQzyC,EAAY,MAGrE0vC,QAAU,SAAU+C,GAChB,MAAgB,OAATA,EAAgB5nE,KAAK0uC,MAAMzzC,KAAKg6B,QAAU,GAAK,GAAKh6B,KAAKg6B,MAAoB,GAAb2yC,EAAQ,GAAS3sE,KAAKg6B,QAAU,IAG3G64C,SAAW,SAAUlG,GACjB,GAAI7yC,GAAO00C,GAAWxuE,KAAMA,KAAK8oE,aAAaqK,MAAM7E,IAAKtuE,KAAK8oE,aAAaqK,MAAM5E,KAAKz0C,IACtF,OAAgB,OAAT6yC,EAAgB7yC,EAAO95B,KAAK0T,IAAKi5D,EAAQ7yC,EAAO,MAG3DkgD,YAAc,SAAUrN,GACpB,GAAI7yC,GAAO00C,GAAWxuE,KAAM,EAAG,GAAG85B,IAClC,OAAgB,OAAT6yC,EAAgB7yC,EAAO95B,KAAK0T,IAAKi5D,EAAQ7yC,EAAO,MAG3DiwC,KAAO,SAAU4C,GACb,GAAI5C,GAAO/pE,KAAK8oE,aAAaiB,KAAK/pE,KAClC,OAAgB,OAAT2sE,EAAgB5C,EAAO/pE,KAAK0T,IAAqB,GAAhBi5D,EAAQ5C,GAAW,MAG/D0P,QAAU,SAAU9M,GAChB,GAAI5C,GAAOyE,GAAWxuE,KAAM,EAAG,GAAG+pE,IAClC,OAAgB,OAAT4C,EAAgB5C,EAAO/pE,KAAK0T,IAAqB,GAAhBi5D,EAAQ5C,GAAW,MAG/D+I,QAAU,SAAUnG,GAChB,GAAImG,IAAW9yE,KAAKgqE,MAAQ,EAAIhqE,KAAK8oE,aAAaqK,MAAM7E,KAAO,CAC/D,OAAgB,OAAT3B,EAAgBmG,EAAU9yE,KAAK0T,IAAIi5D,EAAQmG,EAAS,MAG/D76C,WAAa,SAAU00C,GAInB,MAAgB,OAATA,EAAgB3sE,KAAKgqE,OAAS,EAAIhqE,KAAKgqE,IAAIhqE,KAAKgqE,MAAQ,EAAI2C,EAAQA,EAAQ,IAGvF4S,eAAiB,WACb,MAAOlR,GAAYruE,KAAK85B,OAAQ,EAAG,IAGvCu0C,YAAc,WACV,GAAImR,GAAWx/E,KAAK8oE,aAAaqK,KACjC,OAAO9E,GAAYruE,KAAK85B,OAAQ0lD,EAASlR,IAAKkR,EAASjR,MAG3D/4D,IAAM,SAAU03D,GAEZ,MADAA,GAAQD,EAAeC,GAChBltE,KAAKktE,MAGhBY,IAAM,SAAUZ,EAAOhmE,GAKnB,MAJAgmE,GAAQD,EAAeC,GACI,kBAAhBltE,MAAKktE,IACZltE,KAAKktE,GAAOhmE,GAETlH,MAMX2jC,OAAS,SAAUj7B,GACf,GAAI+2E,EAEJ,OAAI/2E,KAAQrC,EACDrG,KAAKwqE,QAAQqT,OAEpB4B,EAAgB97E,GAAOmlE,WAAWpgE,GACb,MAAjB+2E,IACAz/E,KAAKwqE,QAAUiV,GAEZz/E,OAIf23C,KAAO0wB,EACH,oEACA,SAAU3/D,GACN,MAAIA,KAAQrC,EACDrG,KAAK8oE,aAEL9oE,KAAK2jC,OAAOj7B,KAK/BogE,WAAa,WACT,MAAO9oE,MAAKwqE,SAGhB8T,cAAgB,WAGZ,MAAsD,IAA/Cv5E,KAAKkoB,MAAMjtB,KAAKspE,GAAGoW,oBAAsB,OA8CxD/7E,GAAOgqC,GAAGy8B,YAAczmE,GAAOgqC,GAAGzV,aAAe8+C,GAAa,gBAAgB,GAC9ErzE,GAAOgqC,GAAGw8B,OAASxmE,GAAOgqC,GAAGxV,QAAU6+C,GAAa,WAAW,GAC/DrzE,GAAOgqC,GAAGu8B,OAASvmE,GAAOgqC,GAAGvV,QAAU4+C,GAAa,WAAW,GAK/DrzE,GAAOgqC,GAAGs8B,KAAOtmE,GAAOgqC,GAAGtV,MAAQ2+C,GAAa,SAAS,GAEzDrzE,GAAOgqC,GAAG3K,KAAOg0C,GAAa,QAAQ,GACtCrzE,GAAOgqC,GAAGrU,MAAQ+uC,EAAU,kDAAmD2O,GAAa,QAAQ,IACpGrzE,GAAOgqC,GAAG7T,KAAOk9C,GAAa,YAAY,GAC1CrzE,GAAOgqC,GAAG+7B,MAAQrB,EAAU,kDAAmD2O,GAAa,YAAY,IAGxGrzE,GAAOgqC,GAAGnW,KAAO7zB,GAAOgqC,GAAGq8B,IAC3BrmE,GAAOgqC,GAAGk8B,OAASlmE,GAAOgqC,GAAG3T,MAC7Br2B,GAAOgqC,GAAGm8B,MAAQnmE,GAAOgqC,GAAGo8B,KAC5BpmE,GAAOgqC,GAAGgyC,SAAWh8E,GAAOgqC,GAAG8rC,QAC/B91E,GAAOgqC,GAAGg8B,SAAWhmE,GAAOgqC,GAAGi8B,QAG/BjmE,GAAOgqC,GAAGiyC,OAASj8E,GAAOgqC,GAAG1mC,YAkB7B9B,EAAOxB,GAAO4M,SAASo9B,GAAK47B,EAAS51D,WAEjC82D,QAAU,WACN,GAIItyC,GAASC,EAASC,EAJlBH,EAAel4B,KAAKqqE,cACpB7yC,EAAOx3B,KAAKsqE,MACZT,EAAS7pE,KAAKuqE,QACdp3D,EAAOnT,KAAKqT,MACaq2D,EAAQ,CAIrCv2D,GAAK+kB,aAAeA,EAAe,IAEnCC,EAAUkzC,EAASnzC,EAAe,KAClC/kB,EAAKglB,QAAUA,EAAU,GAEzBC,EAAUizC,EAASlzC,EAAU,IAC7BhlB,EAAKilB,QAAUA,EAAU,GAEzBC,EAAQgzC,EAASjzC,EAAU,IAC3BjlB,EAAKklB,MAAQA,EAAQ,GAErBb,GAAQ6zC,EAAShzC,EAAQ,IAGzBqxC,EAAQ2B,EAAS6L,GAAY1/C,IAC7BA,GAAQ6zC,EAAS8L,GAAYzN,IAI7BG,GAAUwB,EAAS7zC,EAAO,IAC1BA,GAAQ,GAGRkyC,GAAS2B,EAASxB,EAAS,IAC3BA,GAAU,GAEV12D,EAAKqkB,KAAOA,EACZrkB,EAAK02D,OAASA,EACd12D,EAAKu2D,MAAQA,GAGjBz/C,IAAM,WAYF,MAXAjqB,MAAKqqE,cAAgBtlE,KAAKklB,IAAIjqB,KAAKqqE,eACnCrqE,KAAKsqE,MAAQvlE,KAAKklB,IAAIjqB,KAAKsqE,OAC3BtqE,KAAKuqE,QAAUxlE,KAAKklB,IAAIjqB,KAAKuqE,SAE7BvqE,KAAKqT,MAAM6kB,aAAenzB,KAAKklB,IAAIjqB,KAAKqT,MAAM6kB,cAC9Cl4B,KAAKqT,MAAM8kB,QAAUpzB,KAAKklB,IAAIjqB,KAAKqT,MAAM8kB,SACzCn4B,KAAKqT,MAAM+kB,QAAUrzB,KAAKklB,IAAIjqB,KAAKqT,MAAM+kB,SACzCp4B,KAAKqT,MAAMglB,MAAQtzB,KAAKklB,IAAIjqB,KAAKqT,MAAMglB,OACvCr4B,KAAKqT,MAAMw2D,OAAS9kE,KAAKklB,IAAIjqB,KAAKqT,MAAMw2D,QACxC7pE,KAAKqT,MAAMq2D,MAAQ3kE,KAAKklB,IAAIjqB,KAAKqT,MAAMq2D,OAEhC1pE,MAGX8pE,MAAQ,WACJ,MAAOuB,GAASrrE,KAAKw3B,OAAS,IAGlC3wB,QAAU,WACN,MAAO7G,MAAKqqE,cACG,MAAbrqE,KAAKsqE,MACJtqE,KAAKuqE,QAAU,GAAM,OACK,QAA3ByC,EAAMhtE,KAAKuqE,QAAU,KAG3BsU,SAAW,SAAUgB,GACjB,GAAIpU,GAASuK,GAAah2E,MAAO6/E,EAAY7/E,KAAK8oE,aAMlD,OAJI+W,KACApU,EAASzrE,KAAK8oE,aAAagU,YAAY98E,KAAMyrE,IAG1CzrE,KAAK8oE,aAAakU,WAAWvR,IAGxC/3D,IAAM,SAAUi5D,EAAOjC,GAEnB,GAAIuB,GAAMtoE,GAAO4M,SAASo8D,EAAOjC,EAQjC,OANA1qE,MAAKqqE,eAAiB4B,EAAI5B,cAC1BrqE,KAAKsqE,OAAS2B,EAAI3B,MAClBtqE,KAAKuqE,SAAW0B,EAAI1B,QAEpBvqE,KAAKyqE,UAEEzqE,MAGX0qB,SAAW,SAAUiiD,EAAOjC,GACxB,GAAIuB,GAAMtoE,GAAO4M,SAASo8D,EAAOjC,EAQjC,OANA1qE,MAAKqqE,eAAiB4B,EAAI5B,cAC1BrqE,KAAKsqE,OAAS2B,EAAI3B,MAClBtqE,KAAKuqE,SAAW0B,EAAI1B,QAEpBvqE,KAAKyqE,UAEEzqE,MAGXwV,IAAM,SAAU03D,GAEZ,MADAA,GAAQD,EAAeC,GAChBltE,KAAKktE,EAAMve,cAAgB,QAGtCjgC,GAAK,SAAUw+C,GACX,GAAI11C,GAAMqyC,CAGV,IAFAqD,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFA11C,GAAOx3B,KAAKsqE,MAAQtqE,KAAKqqE,cAAgB,MACzCR,EAAS7pE,KAAKuqE,QAA8B,GAApB2M,GAAY1/C,GACnB,UAAV01C,EAAoBrD,EAASA,EAAS,EAI7C,QADAryC,EAAOx3B,KAAKsqE,MAAQ6M,GAAYn3E,KAAKuqE,QAAU,IACvC2C,GACJ,IAAK,OAAQ,MAAO11C,GAAO,EAAIx3B,KAAKqqE,cAAgB,MACpD,KAAK,MAAO,MAAO7yC,GAAOx3B,KAAKqqE,cAAgB,KAC/C,KAAK,OAAQ,MAAc,IAAP7yC,EAAYx3B,KAAKqqE,cAAgB,IACrD,KAAK,SAAU,MAAc,IAAP7yC,EAAY,GAAKx3B,KAAKqqE,cAAgB,GAC5D,KAAK,SAAU,MAAc,IAAP7yC,EAAY,GAAK,GAAKx3B,KAAKqqE,cAAgB,GAEjE,KAAK,cAAe,MAAOtlE,MAAKC,MAAa,GAAPwyB,EAAY,GAAK,GAAK,KAAQx3B,KAAKqqE,aACzE,SAAS,KAAM,IAAI3mE,OAAM,gBAAkBwpE,KAKvDv1B,KAAOh0C,GAAOgqC,GAAGgK,KACjBhU,OAAShgC,GAAOgqC,GAAGhK,OAEnBm8C,YAAczX,EACV,sFAEA,WACI,MAAOroE,MAAKiH,gBAIpBA,YAAc,WAEV,GAAIyiE,GAAQ3kE,KAAKklB,IAAIjqB,KAAK0pE,SACtBG,EAAS9kE,KAAKklB,IAAIjqB,KAAK6pE,UACvBryC,EAAOzyB,KAAKklB,IAAIjqB,KAAKw3B,QACrBa,EAAQtzB,KAAKklB,IAAIjqB,KAAKq4B,SACtBD,EAAUrzB,KAAKklB,IAAIjqB,KAAKo4B,WACxBD,EAAUpzB,KAAKklB,IAAIjqB,KAAKm4B,UAAYn4B,KAAKk4B,eAAiB,IAE9D,OAAKl4B,MAAK+/E,aAMF//E,KAAK+/E,YAAc,EAAI,IAAM,IACjC,KACCrW,EAAQA,EAAQ,IAAM,KACtBG,EAASA,EAAS,IAAM,KACxBryC,EAAOA,EAAO,IAAM,KACnBa,GAASD,GAAWD,EAAW,IAAM,KACtCE,EAAQA,EAAQ,IAAM,KACtBD,EAAUA,EAAU,IAAM,KAC1BD,EAAUA,EAAU,IAAM,IAXpB,OAcf2wC,WAAa,WACT,MAAO9oE,MAAKwqE,WAIpB7mE,GAAO4M,SAASo9B,GAAGzoC,SAAWvB,GAAO4M,SAASo9B,GAAG1mC,WAQjD,KAAK5B,KAAKyyE,IACFxQ,EAAWwQ,GAAwBzyE,KACnC+xE,GAAmB/xE,GAAEspD,cAI7BhrD,IAAO4M,SAASo9B,GAAGqyC,eAAiB,WAChC,MAAOhgF,MAAK0uB,GAAG,OAEnB/qB,GAAO4M,SAASo9B,GAAGoyC,UAAY,WAC3B,MAAO//E,MAAK0uB,GAAG,MAEnB/qB,GAAO4M,SAASo9B,GAAGsyC,UAAY,WAC3B,MAAOjgF,MAAK0uB,GAAG,MAEnB/qB,GAAO4M,SAASo9B,GAAGuyC,QAAU,WACzB,MAAOlgF,MAAK0uB,GAAG,MAEnB/qB,GAAO4M,SAASo9B,GAAGwyC,OAAS,WACxB,MAAOngF,MAAK0uB,GAAG,MAEnB/qB,GAAO4M,SAASo9B,GAAGyyC,QAAU,WACzB,MAAOpgF,MAAK0uB,GAAG,UAEnB/qB,GAAO4M,SAASo9B,GAAG0yC,SAAW,WAC1B,MAAOrgF,MAAK0uB,GAAG,MAEnB/qB,GAAO4M,SAASo9B,GAAG2yC,QAAU,WACzB,MAAOtgF,MAAK0uB,GAAG,MASnB/qB,GAAOggC,OAAO,MACVolC,QAAU,SAAUuC,GAChB,GAAIrlE,GAAIqlE,EAAS,GACbG,EAAuC,IAA7BuB,EAAM1B,EAAS,IAAM,IAAa,KACrC,IAANrlE,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOqlE,GAASG,KA4BpB6D,GACAzvE,EAAOD,QAAU+D,IAEfwjE,EAAgC,SAAUoZ,EAAS3gF,EAASC,GAM1D,MALIA,GAAOqpE,QAAUrpE,EAAOqpE,UAAYrpE,EAAOqpE,SAASsX,YAAa,IAEjE/I,GAAY9zE,OAAS6zE,IAGlB7zE,IACTpD,KAAKX,EAASM,EAAqBN,EAASC,KAASsnE,IAAkC9gE,IAAcxG,EAAOD,QAAUunE,IACxHkQ,IAAW,MAIhB92E,KAAKP,QAEqBO,KAAKX,EAAU,WAAa,MAAOI,SAAYE,EAAoB,IAAIL,KAIhG,SAASA,EAAQD,EAASM,GAE9B,GAAIinE,IAMJ,SAAU5/D,EAAQlB,GAChB,YA2OF,SAASo6E,KACFr8C,EAAOs8C,QAKVC,EAAMC,sBAGNC,EAAMC,KAAK18C,EAAO28C,SAAU,SAAShiD,GACjCiiD,EAAUC,SAASliD,KAIvB4hD,EAAMO,QAAQ98C,EAAO+8C,SAAUC,EAAYJ,EAAUK,QACrDV,EAAMO,QAAQ98C,EAAO+8C,SAAUG,EAAWN,EAAUK,QAGpDj9C,EAAOs8C,OAAQ,GAxOnB,GAAIt8C,GAAS,QAASA,GAAOx7B,EAASiG,GAClC,MAAO,IAAIu1B,GAAOm9C,SAAS34E,EAASiG,OAUxCu1B,GAAOszC,QAAU,QAgBjBtzC,EAAOo9C,UAOHC,UAQIC,WAAY,OASZC,YAAa,QAUbC,aAAc,OAQdC,eAAgB,OAShBC,SAAU,OAaVC,kBAAmB,kBAU3B39C,EAAO+8C,SAAWnvE,SAOlBoyB,EAAO49C,kBAAoBh5E,UAAUi5E,gBAAkBj5E,UAAUk5E,iBAOjE99C,EAAO+9C,gBAAmB,gBAAkB56E,GAO5C68B,EAAOg+C,UAAY,6CAA6Ch0E,KAAKpF,UAAUC,WAO/Em7B,EAAOi+C,eAAkBj+C,EAAO+9C,iBAAmB/9C,EAAOg+C,WAAch+C,EAAO49C,kBAQ/E59C,EAAOk+C,mBAAqB,EAU5B,IAAIC,MASAC,EAAiBp+C,EAAOo+C,eAAiB,OACzCC,EAAiBr+C,EAAOq+C,eAAiB,OACzCC,EAAet+C,EAAOs+C,aAAe,KACrCC,EAAkBv+C,EAAOu+C,gBAAkB,QAS3CC,EAAgBx+C,EAAOw+C,cAAgB,QACvCC,EAAgBz+C,EAAOy+C,cAAgB,QACvCC,EAAc1+C,EAAO0+C,YAAc,MASnCC,EAAc3+C,EAAO2+C,YAAc,QACnC3B,EAAah9C,EAAOg9C,WAAa,OACjCE,EAAYl9C,EAAOk9C,UAAY,MAC/B0B,EAAgB5+C,EAAO4+C,cAAgB,UACvCC,EAAc7+C,EAAO6+C,YAAc,OASvC7+C,GAAOs8C,OAAQ,EAOft8C,EAAO8+C,QAAU9+C,EAAO8+C,YAQxB9+C,EAAO28C,SAAW38C,EAAO28C,YAkCzB,IAAIF,GAAQz8C,EAAO++C,OAUfh+E,OAAQ,SAAgBi+E,EAAM5/B,EAAKsY,GAC/B,IAAI,GAAIpzD,KAAO86C,IACPA,EAAI79C,eAAe+C,IAAS06E,EAAK16E,KAASrC,GAAay1D,IAG3DsnB,EAAK16E,GAAO86C,EAAI96C,GAEpB,OAAO06E,IAUXxvE,GAAI,SAAYhL,EAASjC,EAAM08E,GAC3Bz6E,EAAQD,iBAAiBhC,EAAM08E,GAAS,IAU5CtvE,IAAK,SAAanL,EAASjC,EAAM08E,GAC7Bz6E,EAAQO,oBAAoBxC,EAAM08E,GAAS,IAa/CvC,KAAM,SAAc1+D,EAAKkhE,EAAUC,GAC/B,GAAIl+E,GAAGC,CAGP,IAAG,WAAa8c,GACZA,EAAI/Z,QAAQi7E,EAAUC,OAEnB,IAAGnhE,EAAI5c,SAAWa,GACrB,IAAIhB,EAAI,EAAGC,EAAM8c,EAAI5c,OAAYF,EAAJD,EAASA,IAClC,GAAGi+E,EAAS/iF,KAAKgjF,EAASnhE,EAAI/c,GAAIA,EAAG+c,MAAS,EAC1C,WAKR,KAAI/c,IAAK+c,GACL,GAAGA,EAAIzc,eAAeN,IAClBi+E,EAAS/iF,KAAKgjF,EAASnhE,EAAI/c,GAAIA,EAAG+c,MAAS,EAC3C,QAahBohE,MAAO,SAAehgC,EAAKigC,GACvB,MAAOjgC,GAAIh9C,QAAQi9E,GAAQ,IAU/BC,QAAS,SAAiBlgC,EAAKigC,GAC3B,GAAGjgC,EAAIh9C,QAAS,CACZ,GAAI2B,GAAQq7C,EAAIh9C,QAAQi9E,EACxB,OAAkB,KAAVt7E,GAAgB,EAAQA,EAEhC,IAAI,GAAI9C,GAAI,EAAGC,EAAMk+C,EAAIh+C,OAAYF,EAAJD,EAASA,IACtC,GAAGm+C,EAAIn+C,KAAOo+E,EACV,MAAOp+E,EAGf,QAAO,GAUfkD,QAAS,SAAiB6Z,GACtB,MAAOtc,OAAM6N,UAAU8oB,MAAMl8B,KAAK6hB,EAAK,IAU3CuhE,UAAW,SAAmBjgC,EAAM9f,GAChC,KAAM8f,GAAM,CACR,GAAGA,GAAQ9f,EACP,OAAO,CAEX8f,GAAOA,EAAK95C,WAEhB,OAAO,GASXg6E,UAAW,SAAmBlkD,GAC1B,GAAI5B,MACAC,KACA5N,KACAE,KACA9kB,EAAMxG,KAAKwG,IACXyB,EAAMjI,KAAKiI,GAGf,OAAsB,KAAnB0yB,EAAQl6B,QAEHs4B,MAAO4B,EAAQ,GAAG5B,MAClBC,MAAO2B,EAAQ,GAAG3B,MAClB5N,QAASuP,EAAQ,GAAGvP,QACpBE,QAASqP,EAAQ,GAAGrP,UAI5BwwD,EAAMC,KAAKphD,EAAS,SAASvC,GACzBW,EAAM91B,KAAKm1B,EAAMW,OACjBC,EAAM/1B,KAAKm1B,EAAMY,OACjB5N,EAAQnoB,KAAKm1B,EAAMhN,SACnBE,EAAQroB,KAAKm1B,EAAM9M,YAInByN,OAAQvyB,EAAI+M,MAAMvT,KAAM+4B,GAAS9wB,EAAIsL,MAAMvT,KAAM+4B,IAAU,EAC3DC,OAAQxyB,EAAI+M,MAAMvT,KAAMg5B,GAAS/wB,EAAIsL,MAAMvT,KAAMg5B,IAAU,EAC3D5N,SAAU5kB,EAAI+M,MAAMvT,KAAMorB,GAAWnjB,EAAIsL,MAAMvT,KAAMorB,IAAY,EACjEE,SAAU9kB,EAAI+M,MAAMvT,KAAMsrB,GAAWrjB,EAAIsL,MAAMvT,KAAMsrB,IAAY,KAYzEwzD,YAAa,SAAqBC,EAAW9kD,EAAQC,GACjD,OACIzsB,EAAGzN,KAAKklB,IAAI+U,EAAS8kD,IAAc,EACnCrxE,EAAG1N,KAAKklB,IAAIgV,EAAS6kD,IAAc,IAW3CC,SAAU,SAAkBC,EAAQC,GAChC,GAAIzxE,GAAIyxE,EAAO9zD,QAAU6zD,EAAO7zD,QAC5B1d,EAAIwxE,EAAO5zD,QAAU2zD,EAAO3zD,OAEhC,OAA0B,KAAnBtrB,KAAK+uD,MAAMrhD,EAAGD,GAAWzN,KAAKimB,IAUzCk5D,aAAc,SAAsBF,EAAQC,GACxC,GAAIzxE,GAAIzN,KAAKklB,IAAI+5D,EAAO7zD,QAAU8zD,EAAO9zD,SACrC1d,EAAI1N,KAAKklB,IAAI+5D,EAAO3zD,QAAU4zD,EAAO5zD,QAEzC,OAAG7d,IAAKC,EACGuxE,EAAO7zD,QAAU8zD,EAAO9zD,QAAU,EAAIsyD,EAAiBE,EAE3DqB,EAAO3zD,QAAU4zD,EAAO5zD,QAAU,EAAIqyD,EAAeF,GAUhE1oB,YAAa,SAAqBkqB,EAAQC,GACtC,GAAIzxE,GAAIyxE,EAAO9zD,QAAU6zD,EAAO7zD,QAC5B1d,EAAIwxE,EAAO5zD,QAAU2zD,EAAO3zD,OAEhC,OAAOtrB,MAAKqqB,KAAM5c,EAAIA,EAAMC,EAAIA,IAWpC49C,SAAU,SAAkBxgD,EAAOS,GAE/B,MAAGT,GAAMrK,QAAU,GAAK8K,EAAI9K,QAAU,EAC3BxF,KAAK85D,YAAYxpD,EAAI,GAAIA,EAAI,IAAMtQ,KAAK85D,YAAYjqD,EAAM,GAAIA,EAAM,IAExE,GAUXs0E,YAAa,SAAqBt0E,EAAOS,GAErC,MAAGT,GAAMrK,QAAU,GAAK8K,EAAI9K,QAAU,EAC3BxF,KAAK+jF,SAASzzE,EAAI,GAAIA,EAAI,IAAMtQ,KAAK+jF,SAASl0E,EAAM,GAAIA,EAAM,IAElE,GASXu0E,WAAY,SAAoBvpD,GAC5B,MAAOA,IAAa6nD,GAAgB7nD,GAAa2nD,GAWrD6B,eAAgB,SAAwBz7E,EAASlD,EAAMwB,EAAOo9E,GAC1D,GAAIC,IAAY,GAAI,SAAU,MAAO,IAAK,KAC1C7+E,GAAOm7E,EAAM2D,YAAY9+E,EAEzB,KAAI,GAAIL,GAAI,EAAGA,EAAIk/E,EAAS/+E,OAAQH,IAAK,CACrC,GAAI3E,GAAIgF,CAOR,IALG6+E,EAASl/E,KACR3E,EAAI6jF,EAASl/E,GAAK3E,EAAE+7B,MAAM,EAAG,GAAGtwB,cAAgBzL,EAAE+7B,MAAM,IAIzD/7B,IAAKkI,GAAQ0E,MAAO,CACnB1E,EAAQ0E,MAAM5M,IAAgB,MAAV4jF,GAAkBA,IAAWp9E,GAAS,EAC1D,UAeZu9E,eAAgB,SAAwB77E,EAAS/C,EAAOy+E,GACpD,GAAIz+E,GAAU+C,GAAYA,EAAQ0E,MAAlC,CAKAuzE,EAAMC,KAAKj7E,EAAO,SAASqB,EAAOxB,GAC9Bm7E,EAAMwD,eAAez7E,EAASlD,EAAMwB,EAAOo9E,IAG/C,IAAII,GAAUJ,GAAU,WACpB,OAAO,EAIY,SAApBz+E,EAAM67E,aACL94E,EAAQ+7E,cAAgBD,GAGP,QAAlB7+E,EAAMi8E,WACLl5E,EAAQg8E,YAAcF,KAU9BF,YAAa,SAAqBK,GAC9B,MAAOA,GAAI34E,QAAQ,eAAgB,SAASb,GACxC,MAAOA,GAAE,GAAGc,kBAapBw0E,EAAQv8C,EAAO96B,OAQfw7E,oBAAoB,EAQpBC,SAAS,EAQTC,cAAc,EAWdpxE,GAAI,SAAYhL,EAASjC,EAAM08E,EAAS4B,GACpC,GAAIxtE,GAAQ9Q,EAAKoB,MAAM,IACvB84E,GAAMC,KAAKrpE,EAAO,SAAS9Q,GACvBk6E,EAAMjtE,GAAGhL,EAASjC,EAAM08E,GACxB4B,GAAQA,EAAKt+E,MAarBoN,IAAK,SAAanL,EAASjC,EAAM08E,EAAS4B,GACtC,GAAIxtE,GAAQ9Q,EAAKoB,MAAM,IACvB84E,GAAMC,KAAKrpE,EAAO,SAAS9Q,GACvBk6E,EAAM9sE,IAAInL,EAASjC,EAAM08E,GACzB4B,GAAQA,EAAKt+E,MAarBu6E,QAAS,SAAiBt4E,EAASm5D,EAAWshB,GAC1C,GAAIxc,GAAO7mE,KAEPklF,EAAiB,SAAwBC,GACzC,GAGIC,GAHAC,EAAUF,EAAGx+E,KAAKgoD,cAClB22B,EAAYlhD,EAAO49C,kBACnBuD,EAAU1E,EAAM2C,MAAM6B,EAAS,QAKhCE,IAAW1e,EAAKie,qBAITS,GAAWxjB,GAAaghB,GAA6B,IAAdoC,EAAGr5D,QAChD+6C,EAAKie,oBAAqB,EAC1Bje,EAAKme,cAAe,GACdM,GAAavjB,GAAaghB,EAChClc,EAAKme,aAA+B,IAAfG,EAAGK,SAAiBC,EAAaC,UAAU7C,EAAesC,GAExEI,GAAWxjB,GAAaghB,IAC/Blc,EAAKie,oBAAqB,EAC1Bje,EAAKme,cAAe,GAIrBM,GAAavjB,GAAauf,GACzBmE,EAAaE,cAAc5jB,EAAWojB,GAIvCte,EAAKme,eACJI,EAAcve,EAAK+e,SAASrlF,KAAKsmE,EAAMse,EAAIpjB,EAAWn5D,EAASy6E,IAKhE+B,GAAe9D,IACdza,EAAKie,oBAAqB,EAC1Bje,EAAKme,cAAe,EACpBS,EAAa/+B,SAId4+B,GAAavjB,GAAauf,GACzBmE,EAAaE,cAAc5jB,EAAWojB,IAK9C,OADAnlF,MAAK4T,GAAGhL,EAAS25E,EAAYxgB,GAAYmjB,GAClCA,GAaXU,SAAU,SAAkBT,EAAIpjB,EAAWn5D,EAASy6E,GAChD,GAAIwC,GAAY7lF,KAAKgiE,aAAamjB,EAAIpjB,GAClC+jB,EAAkBD,EAAUrgF,OAC5B4/E,EAAcrjB,EACdgkB,EAAgBF,EAAUG,QAC1BC,EAAgBH,CAGjB/jB,IAAaghB,EACZgD,EAAgB9C,EAEVlhB,GAAauf,IACnByE,EAAgB/C,EAGhBiD,EAAgBJ,EAAUrgF,QAAW2/E,EAAiB,eAAIA,EAAGe,eAAe1gF,OAAS,IAMtFygF,EAAgB,GAAKjmF,KAAK+kF,UACzBK,EAAchE,GAIlBphF,KAAK+kF,SAAU,CAGf,IAAIoB,GAASnmF,KAAKiiE,iBAAiBr5D,EAASw8E,EAAaS,EAAWV,EA4BpE,OAxBGpjB,IAAauf,GACZ+B,EAAQ9iF,KAAKygF,EAAWmF,GAIzBJ,IACCI,EAAOF,cAAgBA,EACvBE,EAAOpkB,UAAYgkB,EAEnB1C,EAAQ9iF,KAAKygF,EAAWmF,GAExBA,EAAOpkB,UAAYqjB,QACZe,GAAOF,eAIfb,GAAe9D,IACd+B,EAAQ9iF,KAAKygF,EAAWmF,GAIxBnmF,KAAK+kF,SAAU,GAGZK,GAUXxE,oBAAqB,WACjB,GAAInpE,EAgCJ,OA7BQA,GAFL2sB,EAAO49C,kBACHz6E,EAAOk+E,cAEF,cACA,cACA,+CAIA,gBACA,gBACA,oDAGFrhD,EAAOi+C,gBAET,aACA,YACA,yBAIA,uBACA,sBACA,gCAIRE,EAAYQ,GAAetrE,EAAM,GACjC8qE,EAAYnB,GAAc3pE,EAAM,GAChC8qE,EAAYjB,GAAa7pE,EAAM,GACxB8qE,GAUXvgB,aAAc,SAAsBmjB,EAAIpjB,GAEpC,GAAG39B,EAAO49C,kBACN,MAAOyD,GAAazjB,cAIxB,IAAGmjB,EAAGzlD,QAAS,CACX,GAAGqiC,GAAaqf,EACZ,MAAO+D,GAAGzlD,OAGd,IAAI0mD,MACA/xE,KAAYA,OAAOwsE,EAAMt4E,QAAQ48E,EAAGzlD,SAAUmhD,EAAMt4E,QAAQ48E,EAAGe,iBAC/DL,IASJ,OAPAhF,GAAMC,KAAKzsE,EAAQ,SAAS8oB,GACrB0jD,EAAM6C,QAAQ0C,EAAajpD,EAAMkpD,eAAgB,GAChDR,EAAU79E,KAAKm1B,GAEnBipD,EAAYp+E,KAAKm1B,EAAMkpD,cAGpBR,EAKX,MADAV,GAAGkB,WAAa,GACRlB,IAYZljB,iBAAkB,SAA0Br5D,EAASm5D,EAAWriC,EAASylD,GAErE,GAAImB,GAAczD,CAOlB,OANGhC,GAAM2C,MAAM2B,EAAGx+E,KAAM,UAAY8+E,EAAaC,UAAU9C,EAAeuC,GACtEmB,EAAc1D,EACR6C,EAAaC,UAAU5C,EAAaqC,KAC1CmB,EAAcxD,IAIdv3D,OAAQs1D,EAAM+C,UAAUlkD,GACxB6mD,UAAWpiF,KAAKw4B,MAChBlzB,OAAQ07E,EAAG17E,OACXi2B,QAASA,EACTqiC,UAAWA,EACXukB,YAAaA,EACbh2C,SAAU60C,EAMV97E,eAAgB,WACZ,GAAIinC,GAAWtwC,KAAKswC,QACpBA,GAASk2C,qBAAuBl2C,EAASk2C,sBACzCl2C,EAASjnC,gBAAkBinC,EAASjnC,kBAMxCo7B,gBAAiB,WACbzkC,KAAKswC,SAAS7L,mBAQlBgiD,WAAY,WACR,MAAOzF,GAAUyF,iBAa7BhB,EAAerhD,EAAOqhD,cAMtBiB,YAOA1kB,aAAc,WACV,GAAI2kB,KAKJ,OAHA9F,GAAMC,KAAK9gF,KAAK0mF,SAAU,SAASpnD,GAC/BqnD,EAAU3+E,KAAKs3B,KAEZqnD,GASXhB,cAAe,SAAuB5jB,EAAW6kB,GAC1C7kB,GAAauf,GAAcvf,GAAauf,GAAsC,IAAzBsF,EAAapB,cAC1DxlF,MAAK0mF,SAASE,EAAaC,YAElCD,EAAaP,WAAaO,EAAaC,UACvC7mF,KAAK0mF,SAASE,EAAaC,WAAaD,IAUhDlB,UAAW,SAAmBY,EAAanB,GACvC,IAAIA,EAAGmB,YACH,OAAO,CAGX,IAAIQ,GAAK3B,EAAGmB,YACR7uE,IAKJ,OAHAA,GAAMmrE,GAAkBkE,KAAQ3B,EAAG4B,sBAAwBnE,GAC3DnrE,EAAMorE,GAAkBiE,KAAQ3B,EAAG6B,sBAAwBnE,GAC3DprE,EAAMqrE,GAAgBgE,KAAQ3B,EAAG8B,oBAAsBnE,GAChDrrE,EAAM6uE,IAOjB5/B,MAAO,WACH1mD,KAAK0mF,cAWT1F,EAAY58C,EAAO8iD,WAEnBnG,YAGAnnD,QAAS,KAIT4C,SAAU,KAGV2qD,SAAS,EAQTC,YAAa,SAAqBC,EAAMC,GAEjCtnF,KAAK45B,UAIR55B,KAAKmnF,SAAU,EAGfnnF,KAAK45B,SACDytD,KAAMA,EACNE,WAAY1G,EAAM17E,UAAWmiF,GAC7BE,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,gBACAnxE,KAAM,IAGVxW,KAAKqhF,OAAOiG;EAShBjG,OAAQ,SAAgBiG,GACpB,GAAItnF,KAAK45B,UAAW55B,KAAKmnF,QAAzB,CAKAG,EAAYtnF,KAAK4nF,gBAAgBN,EAGjC,IAAID,GAAOrnF,KAAK45B,QAAQytD,KACpBQ,EAAcR,EAAKx4E,OAmBvB,OAhBAgyE,GAAMC,KAAK9gF,KAAK+gF,SAAU,SAAwBhiD,IAE1C/+B,KAAKmnF,SAAWE,EAAKv4E,SAAW+4E,EAAY9oD,EAAQvoB,OACpDuoB,EAAQskD,QAAQ9iF,KAAKw+B,EAASuoD,EAAWD,IAE9CrnF,MAGAA,KAAK45B,UACJ55B,KAAK45B,QAAQ4tD,UAAYF,GAG1BA,EAAUvlB,WAAauf,GACtBthF,KAAKymF,aAGFa,IASXb,WAAY,WAGRzmF,KAAKw8B,SAAWqkD,EAAM17E,UAAWnF,KAAK45B,SAGtC55B,KAAK45B,QAAU,KACf55B,KAAKmnF,SAAU,GAYnBW,kBAAmB,SAA2B3C,EAAI55D,EAAQu4D,EAAW9kD,EAAQC,GACzE,GAAIiZ,GAAMl4C,KAAK45B,QACXmuD,GAAS,EACTC,EAAS9vC,EAAIuvC,cACbQ,EAAW/vC,EAAIyvC,YAEhBK,IAAU7C,EAAGoB,UAAYyB,EAAOzB,UAAYniD,EAAOk+C,qBAClD/2D,EAASy8D,EAAOz8D,OAChBu4D,EAAYqB,EAAGoB,UAAYyB,EAAOzB,UAClCvnD,EAASmmD,EAAG55D,OAAO4E,QAAU63D,EAAOz8D,OAAO4E,QAC3C8O,EAASkmD,EAAG55D,OAAO8E,QAAU23D,EAAOz8D,OAAO8E,QAC3C03D,GAAS,IAGV5C,EAAGpjB,WAAakhB,GAAekC,EAAGpjB,WAAaihB,KAC9C9qC,EAAIwvC,gBAAkBvC,KAGtBjtC,EAAIuvC,eAAiBM,KACrBE,EAASpuB,SAAWgnB,EAAMgD,YAAYC,EAAW9kD,EAAQC,GACzDgpD,EAASj9B,MAAQ61B,EAAMkD,SAASx4D,EAAQ45D,EAAG55D,QAC3C08D,EAASptD,UAAYgmD,EAAMqD,aAAa34D,EAAQ45D,EAAG55D,QAEnD2sB,EAAIuvC,cAAgBvvC,EAAIwvC,iBAAmBvC,EAC3CjtC,EAAIwvC,gBAAkBvC,GAG1BA,EAAG+C,UAAYD,EAASpuB,SAASrnD,EACjC2yE,EAAGgD,UAAYF,EAASpuB,SAASpnD,EACjC0yE,EAAGiD,aAAeH,EAASj9B,MAC3Bm6B,EAAGkD,iBAAmBJ,EAASptD,WASnC+sD,gBAAiB,SAAyBzC,GACtC,GAAIjtC,GAAMl4C,KAAK45B,QACX0uD,EAAUpwC,EAAIqvC,WACdgB,EAASrwC,EAAIsvC,WAAac,GAG3BnD,EAAGpjB,WAAakhB,GAAekC,EAAGpjB,WAAaihB,KAC9CsF,EAAQ5oD,WACRmhD,EAAMC,KAAKqE,EAAGzlD,QAAS,SAASvC,GAC5BmrD,EAAQ5oD,QAAQ13B,MACZmoB,QAASgN,EAAMhN,QACfE,QAAS8M,EAAM9M,YAK3B,IAAIyzD,GAAYqB,EAAGoB,UAAY+B,EAAQ/B,UACnCvnD,EAASmmD,EAAG55D,OAAO4E,QAAUm4D,EAAQ/8D,OAAO4E,QAC5C8O,EAASkmD,EAAG55D,OAAO8E,QAAUi4D,EAAQ/8D,OAAO8E,OAkBhD,OAhBArwB,MAAK8nF,kBAAkB3C,EAAIoD,EAAOh9D,OAAQu4D,EAAW9kD,EAAQC,GAE7D4hD,EAAM17E,OAAOggF,GACToC,WAAYe,EAEZxE,UAAWA,EACX9kD,OAAQA,EACRC,OAAQA,EAERla,SAAU87D,EAAM/mB,YAAYwuB,EAAQ/8D,OAAQ45D,EAAG55D,QAC/Cy/B,MAAO61B,EAAMkD,SAASuE,EAAQ/8D,OAAQ45D,EAAG55D,QACzCsP,UAAWgmD,EAAMqD,aAAaoE,EAAQ/8D,OAAQ45D,EAAG55D,QACjDlP,MAAOwkE,EAAMxwB,SAASi4B,EAAQ5oD,QAASylD,EAAGzlD,SAC1C8oD,SAAU3H,EAAMsD,YAAYmE,EAAQ5oD,QAASylD,EAAGzlD,WAG7CylD,GASXlE,SAAU,SAAkBliD,GAExB,GAAIlwB,GAAUkwB,EAAQyiD,YAyBtB,OAxBG3yE,GAAQkwB,EAAQvoB,QAAUnQ,IACzBwI,EAAQkwB,EAAQvoB,OAAQ,GAI5BqqE,EAAM17E,OAAOi/B,EAAOo9C,SAAU3yE,GAAS,GAGvCkwB,EAAQ52B,MAAQ42B,EAAQ52B,OAAS,IAGjCnI,KAAK+gF,SAAS/4E,KAAK+2B,GAGnB/+B,KAAK+gF,SAAStqE,KAAK,SAASrR,EAAGa,GAC3B,MAAGb,GAAE+C,MAAQlC,EAAEkC,MACJ,GAER/C,EAAE+C,MAAQlC,EAAEkC,MACJ,EAEJ,IAGJnI,KAAK+gF,UAmBpB38C,GAAOm9C,SAAW,SAAS34E,EAASiG,GAChC,GAAIg4D,GAAO7mE,IAIXygF,KAMAzgF,KAAK4I,QAAUA,EAOf5I,KAAK8O,SAAU,EAQf+xE,EAAMC,KAAKjyE,EAAS,SAAS3H,EAAOsP,SACzB3H,GAAQ2H,GACf3H,EAAQgyE,EAAM2D,YAAYhuE,IAAStP,IAGvClH,KAAK6O,QAAUgyE,EAAM17E,OAAO07E,EAAM17E,UAAWi/B,EAAOo9C,UAAW3yE,OAG5D7O,KAAK6O,QAAQ4yE,UACZZ,EAAM4D,eAAezkF,KAAK4I,QAAS5I,KAAK6O,QAAQ4yE,UAAU,GAQ9DzhF,KAAKyoF,kBAAoB9H,EAAMO,QAAQt4E,EAASm6E,EAAa,SAASoC,GAC/Dte,EAAK/3D,SAAWq2E,EAAGpjB,WAAaghB,EAC/B/B,EAAUoG,YAAYvgB,EAAMse,GACtBA,EAAGpjB,WAAakhB,GACtBjC,EAAUK,OAAO8D,KASzBnlF,KAAK0oF,kBAGTtkD,EAAOm9C,SAAS5tE,WASZC,GAAI,SAAiBmtE,EAAUsC,GAC3B,GAAIxc,GAAO7mE,IAIX,OAHA2gF,GAAM/sE,GAAGizD,EAAKj+D,QAASm4E,EAAUsC,EAAS,SAAS18E,GAC/CkgE,EAAK6hB,cAAc1gF,MAAO+2B,QAASp4B,EAAM08E,QAASA,MAE/Cxc,GAUX9yD,IAAK,SAAkBgtE,EAAUsC,GAC7B,GAAIxc,GAAO7mE,IAQX,OANA2gF,GAAM5sE,IAAI8yD,EAAKj+D,QAASm4E,EAAUsC,EAAS,SAAS18E,GAChD,GAAIwB,GAAQ04E,EAAM6C,SAAU3kD,QAASp4B,EAAM08E,QAASA,GACjDl7E,MAAU,GACT0+D,EAAK6hB,cAActgF,OAAOD,EAAO,KAGlC0+D,GAUXmf,QAAS,SAAsBjnD,EAASuoD,GAEhCA,IACAA,KAIJ,IAAIh+E,GAAQ86B,EAAO+8C,SAASwH,YAAY,QACxCr/E,GAAMs/E,UAAU7pD,GAAS,GAAM,GAC/Bz1B,EAAMy1B,QAAUuoD,CAIhB,IAAI1+E,GAAU5I,KAAK4I,OAMnB,OALGi4E,GAAM8C,UAAU2D,EAAU79E,OAAQb,KACjCA,EAAU0+E,EAAU79E,QAGxBb,EAAQigF,cAAcv/E,GACftJ,MASXwiC,OAAQ,SAAgBsmD,GAEpB,MADA9oF,MAAK8O,QAAUg6E,EACR9oF,MAQX+oF,QAAS,WACL,GAAI1jF,GAAG2jF,CAMP,KAHAnI,EAAM4D,eAAezkF,KAAK4I,QAAS5I,KAAK6O,QAAQ4yE,UAAU,GAGtDp8E,EAAI,GAAK2jF,EAAKhpF,KAAK0oF,gBAAgBrjF,IACnCw7E,EAAM9sE,IAAI/T,KAAK4I,QAASogF,EAAGjqD,QAASiqD,EAAG3F,QAQ3C,OALArjF,MAAK0oF,iBAGL/H,EAAM5sE,IAAI/T,KAAK4I,QAAS25E,EAAYQ,GAAc/iF,KAAKyoF,mBAEhD,OAqDf,SAAUjyE,GAGN,QAASyyE,GAAY9D,EAAIkC,GACrB,GAAInvC,GAAM8oC,EAAUpnD,OAGpB,MAAGytD,EAAKx4E,QAAQq6E,eAAiB,GAC7B/D,EAAGzlD,QAAQl6B,OAAS6hF,EAAKx4E,QAAQq6E,gBAIrC,OAAO/D,EAAGpjB,WACN,IAAKghB,GACDoG,GAAY,CACZ,MAEJ,KAAK/H,GAGD,GAAG+D,EAAGpgE,SAAWsiE,EAAKx4E,QAAQu6E,iBAC1BlxC,EAAI1hC,MAAQA,EACZ,MAGJ,IAAI6yE,GAAcnxC,EAAIqvC,WAAWh8D,MAGjC,IAAG2sB,EAAI1hC,MAAQA,IACX0hC,EAAI1hC,KAAOA,EACR6wE,EAAKx4E,QAAQy6E,wBAA0BnE,EAAGpgE,SAAW,GAAG,CAIvD,GAAIu/B,GAASv/C,KAAKklB,IAAIo9D,EAAKx4E,QAAQu6E,gBAAkBjE,EAAGpgE,SACxDskE,GAAYvrD,OAASqnD,EAAGnmD,OAASslB,EACjC+kC,EAAYtrD,OAASonD,EAAGlmD,OAASqlB,EACjC+kC,EAAYl5D,SAAWg1D,EAAGnmD,OAASslB,EACnC+kC,EAAYh5D,SAAW80D,EAAGlmD,OAASqlB,EAGnC6gC,EAAKnE,EAAU4G,gBAAgBzC,IAKpCjtC,EAAIsvC,UAAU+B,gBACXlC,EAAKx4E,QAAQ06E,gBACXlC,EAAKx4E,QAAQ26E,qBAAuBrE,EAAGpgE,YAE3CogE,EAAGoE,gBAAiB,EAIxB,IAAIE,GAAgBvxC,EAAIsvC,UAAU3sD,SAC/BsqD,GAAGoE,gBAAkBE,IAAkBtE,EAAGtqD,YAErCsqD,EAAGtqD,UADJgmD,EAAMuD,WAAWqF,GACAtE,EAAGlmD,OAAS,EAAKyjD,EAAeF,EAEhC2C,EAAGnmD,OAAS,EAAKyjD,EAAiBE,GAKtDwG,IACA9B,EAAKrB,QAAQxvE,EAAO,QAAS2uE,GAC7BgE,GAAY,GAIhB9B,EAAKrB,QAAQxvE,EAAM2uE,GACnBkC,EAAKrB,QAAQxvE,EAAO2uE,EAAGtqD,UAAWsqD,EAElC,IAAIf,GAAavD,EAAMuD,WAAWe,EAAGtqD,YAGjCwsD,EAAKx4E,QAAQ66E,mBAAqBtF,GACjCiD,EAAKx4E,QAAQ86E,sBAAwBvF,IACtCe,EAAG97E,gBAEP,MAEJ,KAAK25E,GACEmG,GAAahE,EAAGc,eAAiBoB,EAAKx4E,QAAQq6E,iBAC7C7B,EAAKrB,QAAQxvE,EAAO,MAAO2uE,GAC3BgE,GAAY,EAEhB,MAEJ,KAAK7H,GACD6H,GAAY,GAzFxB,GAAIA,IAAY,CA8FhB/kD,GAAO28C,SAAS6I,MACZpzE,KAAMA,EACNrO,MAAO,GACPk7E,QAAS4F,EACTzH,UAOI4H,gBAAiB,GAWjBE,wBAAwB,EAQxBJ,eAAgB,EAUhBS,qBAAqB,EAQrBD,mBAAmB,EASnBH,gBAAgB,EAShBC,oBAAqB,MAG9B,QAgBHplD,EAAO28C,SAAS8I,SACZrzE,KAAM,UACNrO,MAAO,KACPk7E,QAAS,SAAwB8B,EAAIkC,GACjCA,EAAKrB,QAAQhmF,KAAKwW,KAAM2uE,KAqBhC,SAAU3uE,GAGN,QAASszE,GAAY3E,EAAIkC,GACrB,GAAIx4E,GAAUw4E,EAAKx4E,QACf+qB,EAAUonD,EAAUpnD,OAExB,QAAOurD,EAAGpjB,WACN,IAAKghB,GACDv1D,aAAas1B,GAGblpB,EAAQpjB,KAAOA,EAIfssC,EAAQj1B,WAAW,WACZ+L,GAAWA,EAAQpjB,MAAQA,GAC1B6wE,EAAKrB,QAAQxvE,EAAM2uE,IAExBt2E,EAAQk7E,YACX,MAEJ,KAAK3I,GACE+D,EAAGpgE,SAAWlW,EAAQm7E,eACrBx8D,aAAas1B,EAEjB,MAEJ,KAAKkgC,GACDx1D,aAAas1B,IA7BzB,GAAIA,EAkCJ1e,GAAO28C,SAASkJ,MACZzzE,KAAMA,EACNrO,MAAO,GACPq5E,UAMIuI,YAAa,IAQbC,cAAe,GAEnB3G,QAASyG,IAEd,QAeH1lD,EAAO28C,SAASmJ,SACZ1zE,KAAM,UACNrO,MAAOgiF,IACP9G,QAAS,SAAwB8B,EAAIkC,GAC9BlC,EAAGpjB,WAAaihB,GACfqE,EAAKrB,QAAQhmF,KAAKwW,KAAM2uE,KAyCpC/gD,EAAO28C,SAASqJ,OACZ5zE,KAAM,QACNrO,MAAO,GACPq5E,UAMI6I,gBAAiB,EAOjBC,gBAAiB,EAQjBC,eAAgB,GAQhBC,eAAgB,IAGpBnH,QAAS,SAAsB8B,EAAIkC,GAC/B,GAAGlC,EAAGpjB,WAAaihB,EAAe,CAC9B,GAAItjD,GAAUylD,EAAGzlD,QAAQl6B,OACrBqJ,EAAUw4E,EAAKx4E,OAGnB,IAAG6wB,EAAU7wB,EAAQw7E,iBACjB3qD,EAAU7wB,EAAQy7E,gBAClB,QAKDnF,EAAG+C,UAAYr5E,EAAQ07E,gBACtBpF,EAAGgD,UAAYt5E,EAAQ27E,kBAEvBnD,EAAKrB,QAAQhmF,KAAKwW,KAAM2uE,GACxBkC,EAAKrB,QAAQhmF,KAAKwW,KAAO2uE,EAAGtqD,UAAWsqD,OA2BvD,SAAU3uE,GAGN,QAASi0E,GAAWtF,EAAIkC,GACpB,GAGIqD,GACAC,EAJA97E,EAAUw4E,EAAKx4E,QACf+qB,EAAUonD,EAAUpnD,QACpBpI,EAAOwvD,EAAUxkD,QAIrB,QAAO2oD,EAAGpjB,WACN,IAAKghB,GACD6H,GAAW,CACX,MAEJ,KAAKxJ,GACDwJ,EAAWA,GAAazF,EAAGpgE,SAAWlW,EAAQg8E,cAC9C,MAEJ,KAAKvJ,IACGT,EAAM2C,MAAM2B,EAAG70C,SAAS3pC,KAAM,WAAaw+E,EAAGrB,UAAYj1E,EAAQi8E,aAAeF,IAEjFF,EAAYl5D,GAAQA,EAAKg2D,WAAarC,EAAGoB,UAAY/0D,EAAKg2D,UAAUjB,UACpEoE,GAAe,EAGZn5D,GAAQA,EAAKhb,MAAQA,GACnBk0E,GAAaA,EAAY77E,EAAQk8E,mBAClC5F,EAAGpgE,SAAWlW,EAAQm8E,oBACtB3D,EAAKrB,QAAQ,YAAab,GAC1BwF,GAAe,KAIfA,GAAgB97E,EAAQo8E,aACxBrxD,EAAQpjB,KAAOA,EACf6wE,EAAKrB,QAAQpsD,EAAQpjB,KAAM2uE,MAnC/C,GAAIyF,IAAW,CA0CfxmD,GAAO28C,SAASmK,KACZ10E,KAAMA,EACNrO,MAAO,IACPk7E,QAASoH,EACTjJ,UAOIsJ,WAAY,IAQZD,eAAgB,GAQhBI,WAAW,EAQXD,kBAAmB,GAQnBD,kBAAmB,OAG5B,OAeH3mD,EAAO28C,SAASoK,OACZ30E,KAAM,QACNrO,OAAQgiF,IACR3I,UASIn4E,gBAAgB,EAQhB+hF,cAAc,GAElB/H,QAAS,SAAsB8B,EAAIkC,GAC/B,MAAGA,GAAKx4E,QAAQu8E,cAAgBjG,EAAGmB,aAAe1D,MAC9CuC,GAAGsB,cAIJY,EAAKx4E,QAAQxF,gBACZ87E,EAAG97E,sBAGJ87E,EAAGpjB,WAAakhB,GACfoE,EAAKrB,QAAQ,QAASb,OA4ClC,SAAU3uE,GAGN,QAAS60E,GAAiBlG,EAAIkC,GAC1B,OAAOlC,EAAGpjB,WACN,IAAKghB,GACDoG,GAAY,CACZ,MAEJ,KAAK/H,GAED,GAAG+D,EAAGzlD,QAAQl6B,OAAS,EACnB,MAGJ,IAAI8lF,GAAiBvmF,KAAKklB,IAAI,EAAIk7D,EAAG9oE,OACjCkvE,EAAoBxmF,KAAKklB,IAAIk7D,EAAGqD,SAIpC,IAAG8C,EAAiBjE,EAAKx4E,QAAQ28E,mBAC7BD,EAAoBlE,EAAKx4E,QAAQ48E,qBACjC,MAIJzK,GAAUpnD,QAAQpjB,KAAOA,EAGrB2yE,IACA9B,EAAKrB,QAAQxvE,EAAO,QAAS2uE,GAC7BgE,GAAY,GAGhB9B,EAAKrB,QAAQxvE,EAAM2uE,GAGhBoG,EAAoBlE,EAAKx4E,QAAQ48E,sBAChCpE,EAAKrB,QAAQ,SAAUb,GAIxBmG,EAAiBjE,EAAKx4E,QAAQ28E,oBAC7BnE,EAAKrB,QAAQ,QAASb,GACtBkC,EAAKrB,QAAQ,SAAWb,EAAG9oE,MAAQ,EAAI,KAAO,OAAQ8oE,GAE1D,MAEJ,KAAKnC,GACEmG,GAAahE,EAAGc,cAAgB,IAC/BoB,EAAKrB,QAAQxvE,EAAO,MAAO2uE,GAC3BgE,GAAY,IAlD5B,GAAIA,IAAY,CAwDhB/kD,GAAO28C,SAAS2K,WACZl1E,KAAMA,EACNrO,MAAO,GACPq5E,UAOIgK,kBAAmB,IAQnBC,qBAAsB,GAG1BpI,QAASgI,IAEd,aAQGlkB,EAAgC,WAC9B,MAAO/iC,IACT7jC,KAAKX,EAASM,EAAqBN,EAASC,KAASsnE,IAAkC9gE,IAAcxG,EAAOD,QAAUunE,KASzH5/D,SAIC,SAAS1H,EAAQD,GAYrBA,EAAQqjD,oBAAsB,WAE7BjjD,KAAK2rF,aAAa3rF,KAAK4/C,UAAUvC,WAAWC,iBAAiB,GAG7Dt9C,KAAKorD,eAIDprD,KAAKs/C,WACPt/C,KAAKulD,aAEPvlD,KAAK6P,SASNjQ,EAAQ+rF,aAAe,SAASC,EAAkBC,GAOhD,IANA,GAAIxnC,GAAgBrkD,KAAK6hD,YAAYr8C,OAEjCsmF,EAAY,GACZhwC,EAAQ,EAGLuI,EAAgBunC,GAA4BE,EAARhwC,GACrCA,EAAQ,GAAK,GACf97C,KAAK+rF,oBAAmB,GACxB/rF,KAAKgsF,0BAGLhsF,KAAKisF,uBAGP5nC,EAAgBrkD,KAAK6hD,YAAYr8C,OACjCs2C,GAAS,CAIPA,GAAQ,GAAmB,GAAd+vC,GACf7rF,KAAKksF,kBAEPlsF,KAAKirD,2BASPrrD,EAAQusF,YAAc,SAASzoC,GAC7B,GAAI0oC,GAA2BpsF,KAAK6iD,MACpC,IAAIa,EAAKmU,YAAc73D,KAAK4/C,UAAUvC,WAAWM,iBAAmB39C,KAAKqsF,kBAAkB3oC,KACrE,WAAlB1jD,KAAKssF,WAAqD,GAA3BtsF,KAAK6hD,YAAYr8C,QAAc,CAEhExF,KAAKusF,WAAW7oC,EAIhB,KAHA,GAAI5H,GAAQ,EAGJ97C,KAAK6hD,YAAYr8C,OAASxF,KAAK4/C,UAAUvC,WAAWC,iBAA6B,GAARxB,GAC/E97C,KAAKwsF,uBACL1wC,GAAS,MAKX97C,MAAKysF,mBAAmB/oC,GAAK,GAAM,GAGnC1jD,KAAK2kD,uBACL3kD,KAAK0sF,sBACL1sF,KAAKirD,0BACLjrD,KAAKorD,cAIHprD,MAAK6iD,QAAUupC,GACjBpsF,KAAK6P,SAQTjQ,EAAQ2pD,sBAAwB,WACW,GAArCvpD,KAAK4/C,UAAUvC,WAAWvuC,SAC5B9O,KAAK2sF,eAAe,GAAE,GAAM,IAUhC/sF,EAAQqsF,qBAAuB,WAC7BjsF,KAAK2sF,eAAe,IAAG,GAAM,IAS/B/sF,EAAQ4sF,qBAAuB,WAC7BxsF,KAAK2sF,eAAe,GAAE,GAAM,IAgB9B/sF,EAAQ+sF,eAAiB,SAASC,EAAcC,EAAU3sD,EAAM4sD,GAC9D,GAAIV,GAA2BpsF,KAAK6iD,OAChCkqC,EAAgB/sF,KAAK6hD,YAAYr8C,MAGjCxF,MAAKkiD,cAAgBliD,KAAKqc,OAA0B,GAAjBuwE,GACrC5sF,KAAKgtF,kBAIHhtF,KAAKkiD,cAAgBliD,KAAKqc,OAA0B,IAAjBuwE,EAGrC5sF,KAAKitF,cAAc/sD,IAEZlgC,KAAKkiD,cAAgBliD,KAAKqc,OAA0B,GAAjBuwE,KAC7B,GAAT1sD,EAGFlgC,KAAKktF,cAAcL,EAAU3sD,GAI7BlgC,KAAKmtF,uBAGTntF,KAAK2kD,uBAGD3kD,KAAK6hD,YAAYr8C,QAAUunF,IAAkB/sF,KAAKkiD,cAAgBliD,KAAKqc,OAA0B,IAAjBuwE,KAClF5sF,KAAKotF,eAAeltD,GACpBlgC,KAAK2kD,yBAIH3kD,KAAKkiD,cAAgBliD,KAAKqc,OAA0B,IAAjBuwE,KACrC5sF,KAAKqtF,eACLrtF,KAAK2kD,wBAGP3kD,KAAKkiD,cAAgBliD,KAAKqc,MAG1Brc,KAAK0sF,sBACL1sF,KAAKorD,eAGDprD,KAAK6hD,YAAYr8C,OAASunF,IAC5B/sF,KAAKs3D,gBAAkB,EAEvBt3D,KAAKgsF,2BAGW,GAAdc,GAAsCzmF,SAAfymF,IAErB9sF,KAAK6iD,QAAUupC,GACjBpsF,KAAK6P,QAIT7P,KAAKirD,2BAMPrrD,EAAQytF,aAAe,WAErB,GAAIC,GAAkBttF,KAAKutF,mBACvBD,GAAkBttF,KAAK4/C,UAAUvC,WAAWI,gBAC9Cz9C,KAAKwtF,sBAAsB,EAAIxtF,KAAK4/C,UAAUvC,WAAWI,eAAiB6vC,IAW9E1tF,EAAQwtF,eAAiB,SAASltD,GAChClgC,KAAKytF,cACLztF,KAAK0tF,mBAAmBxtD,GAAM,IAQhCtgC,EAAQmsF,mBAAqB,SAASe,GACpC,GAAIV,GAA2BpsF,KAAK6iD,OAChCkqC,EAAgB/sF,KAAK6hD,YAAYr8C,MAErCxF,MAAKotF,gBAAe,GAGpBptF,KAAK2kD,uBACL3kD,KAAK0sF,sBACL1sF,KAAKorD,eAGDprD,KAAK6hD,YAAYr8C,QAAUunF,IAC7B/sF,KAAKs3D,gBAAkB,IAGP,GAAdw1B,GAAsCzmF,SAAfymF,IAErB9sF,KAAK6iD,QAAUupC,GACjBpsF,KAAK6P,SAUXjQ,EAAQutF,oBAAsB,WAC5B,IAAK,GAAIppC,KAAU/jD,MAAKo7C,MACtB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC,GAAIL,GAAO1jD,KAAKo7C,MAAM2I,EACD,IAAjBL,EAAKqX,WACFrX,EAAK1wC,MAAMhT,KAAKqc,MAAQrc,KAAK4/C,UAAUvC,WAAWO,oBAAsB59C,KAAK0e,MAAMC,OAAOC,aAC1F8kC,EAAKzwC,OAAOjT,KAAKqc,MAAQrc,KAAK4/C,UAAUvC,WAAWO,oBAAsB59C,KAAK0e,MAAMC,OAAOsF,eAC9FjkB,KAAKmsF,YAAYzoC,KAc3B9jD,EAAQstF,cAAgB,SAASL,EAAU3sD,GACzC,IAAK,GAAI76B,GAAI,EAAGA,EAAIrF,KAAK6hD,YAAYr8C,OAAQH,IAAK,CAChD,GAAIq+C,GAAO1jD,KAAKo7C,MAAMp7C,KAAK6hD,YAAYx8C,GACvCrF,MAAKysF,mBAAmB/oC,EAAKmpC,EAAU3sD,GACvClgC,KAAKirD,4BAeTrrD,EAAQ6sF,mBAAqB,SAAS7iF,EAAYijF,EAAW3sD,EAAOytD,GAElE,GAAI/jF,EAAWiuD,YAAc,IAEvBjuD,EAAWiuD,YAAc73D,KAAK4/C,UAAUvC,WAAWM,kBACrDgwC,GAAU,GAEZd,EAAYc,GAAU,EAAOd,EAGzBjjF,EAAWguD,eAAiB53D,KAAKqc,OAAkB,GAAT6jB,GAE5C,IAAK,GAAI0tD,KAAmBhkF,GAAWkuD,eACrC,GAAIluD,EAAWkuD,eAAenyD,eAAeioF,GAAkB,CAC7D,GAAIC,GAAYjkF,EAAWkuD,eAAe81B,EAI7B,IAAT1tD,GACE2tD,EAAUv2B,gBAAkB1tD,EAAWouD,gBAAgBpuD,EAAWouD,gBAAgBxyD,OAAO,IACtFmoF,IACL3tF,KAAK8tF,sBAAsBlkF,EAAWgkF,EAAgBf,EAAU3sD,EAAMytD,GAIpE3tF,KAAKqsF,kBAAkBziF,IACzB5J,KAAK8tF,sBAAsBlkF,EAAWgkF,EAAgBf,EAAU3sD,EAAMytD,KAwBpF/tF,EAAQkuF,sBAAwB,SAASlkF,EAAYgkF,EAAiBf,EAAW3sD,EAAOytD,GACtF,GAAIE,GAAYjkF,EAAWkuD,eAAe81B,EAG1C,IAAIC,EAAUj2B,eAAiB53D,KAAKqc,OAAkB,GAAT6jB,EAAe,CAE1DlgC,KAAK+tF,eAGL/tF,KAAKo7C,MAAMwyC,GAAmBC,EAG9B7tF,KAAKguF,uBAAuBpkF,EAAWikF,GAGvC7tF,KAAKiuF,wBAAwBrkF,EAAWikF,GAGxC7tF,KAAKkuF,eAAetkF,GAGpBA,EAAWiF,QAAQwsC,MAAQwyC,EAAUh/E,QAAQwsC,KAC7CzxC,EAAWiuD,aAAeg2B,EAAUh2B,YACpCjuD,EAAWiF,QAAQ8sC,SAAW52C,KAAKwG,IAAIvL,KAAK4/C,UAAUvC,WAAWS,YAAa99C,KAAK4/C,UAAUxE,MAAMO,SAAW37C,KAAK4/C,UAAUvC,WAAWQ,oBAAoBj0C,EAAWiuD,YAAY,IACnLjuD,EAAWytD,mBAAqBztD,EAAWmiD,aAAavmD,OAGxDqoF,EAAUr7E,EAAI5I,EAAW4I,EAAI5I,EAAW8tD,iBAAmB,GAAM3yD,KAAKE,UACtE4oF,EAAUp7E,EAAI7I,EAAW6I,EAAI7I,EAAW8tD,iBAAmB,GAAM3yD,KAAKE,gBAG/D2E,GAAWkuD,eAAe81B,EAGjC,IAAIO,IAAgB,CACpB,KAAK,GAAIC,KAAexkF,GAAWkuD,eACjC,GAAIluD,EAAWkuD,eAAenyD,eAAeyoF,IACvCxkF,EAAWkuD,eAAes2B,GAAa92B,gBAAkBu2B,EAAUv2B,eAAgB,CACrF62B,GAAgB,CAChB,OAKe,GAAjBA,GACFvkF,EAAWouD,gBAAgBrf,MAG7B34C,KAAKquF,uBAAuBR,GAI5BA,EAAUv2B,eAAiB,EAG3B1tD,EAAW6vD,iBAGXz5D,KAAK6iD,QAAS,EAIC,GAAbgqC,GACF7sF,KAAKysF,mBAAmBoB,EAAUhB,EAAU3sD,EAAMytD,IAWtD/tF,EAAQyuF,uBAAyB,SAAS3qC,GACxC,IAAK,GAAIr+C,GAAI,EAAGA,EAAIq+C,EAAKqI,aAAavmD,OAAQH,IAC5Cq+C,EAAKqI,aAAa1mD,GAAG4pD,sBAczBrvD,EAAQqtF,cAAgB,SAAS/sD,GAClB,GAATA,EACFlgC,KAAKsuF,sBAGLtuF,KAAKuuF,wBAUT3uF,EAAQ0uF,oBAAsB,WAC5B,GAAItwE,GAAGC,EAAGzY,EACNgpF,EAAYxuF,KAAK4/C,UAAUvC,WAAWK,qBAAqB19C,KAAKqc,KAIpE,KAAK,GAAI0tC,KAAU/pD,MAAKi8C,MACtB,GAAIj8C,KAAKi8C,MAAMt2C,eAAeokD,GAAS,CACrC,GAAIO,GAAOtqD,KAAKi8C,MAAM8N,EACtB,IAAIO,EAAKC,WACHD,EAAKmG,MAAQnG,EAAKkG,SACpBxyC,EAAMssC,EAAK7hC,GAAGjW,EAAI83C,EAAK9hC,KAAKhW,EAC5ByL,EAAMqsC,EAAK7hC,GAAGhW,EAAI63C,EAAK9hC,KAAK/V,EAC5BjN,EAAST,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAGrBuwE,EAAThpF,GAAoB,CAEtB,GAAIoE,GAAa0gD,EAAK9hC,KAClBqlE,EAAYvjC,EAAK7hC,EACjB6hC,GAAK7hC,GAAG5Z,QAAQwsC,KAAOiP,EAAK9hC,KAAK3Z,QAAQwsC,OAC3CzxC,EAAa0gD,EAAK7hC,GAClBolE,EAAYvjC,EAAK9hC,MAGiB,GAAhCqlE,EAAUx2B,mBACZr3D,KAAKyuF,cAAc7kF,EAAWikF,GAAU,GAEA,GAAjCjkF,EAAWytD,oBAClBr3D,KAAKyuF,cAAcZ,EAAUjkF,GAAW,MAetDhK,EAAQ2uF,qBAAuB,WAC7B,IAAK,GAAIxqC,KAAU/jD,MAAKo7C,MAEtB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC,GAAI8pC,GAAY7tF,KAAKo7C,MAAM2I,EAG3B,IAAoC,GAAhC8pC,EAAUx2B,oBAA4D,GAAjCw2B,EAAU9hC,aAAavmD,OAAa,CAC3E,GAAI8kD,GAAOujC,EAAU9hC,aAAa,GAC9BniD,EAAc0gD,EAAKmG,MAAQo9B,EAAUxtF,GAAML,KAAKo7C,MAAMkP,EAAKkG,QAAUxwD,KAAKo7C,MAAMkP,EAAKmG,KAGrFo9B,GAAUxtF,IAAMuJ,EAAWvJ,KACzBuJ,EAAWiF,QAAQwsC,KAAOwyC,EAAUh/E,QAAQwsC,KAC9Cr7C,KAAKyuF,cAAc7kF,EAAWikF,GAAU,GAGxC7tF,KAAKyuF,cAAcZ,EAAUjkF,GAAW,OAgBpDhK,EAAQ8uF,4BAA8B,SAAShrC,GAG7C,IAAK,GAFDirC,GAAoB,GACpBC,EAAwB,KACnBvpF,EAAI,EAAGA,EAAIq+C,EAAKqI,aAAavmD,OAAQH,IAC5C,GAA6BgB,SAAzBq9C,EAAKqI,aAAa1mD,GAAkB,CACtC,GAAIwpF,GAAY,IACZnrC,GAAKqI,aAAa1mD,GAAGmrD,QAAU9M,EAAKrjD,GACtCwuF,EAAYnrC,EAAKqI,aAAa1mD,GAAGmjB,KAE1Bk7B,EAAKqI,aAAa1mD,GAAGorD,MAAQ/M,EAAKrjD,KACzCwuF,EAAYnrC,EAAKqI,aAAa1mD,GAAGojB,IAIlB,MAAbomE,GAAqBF,EAAoBE,EAAU72B,gBAAgBxyD,SACrEmpF,EAAoBE,EAAU72B,gBAAgBxyD,OAC9CopF,EAAwBC,GAKb,MAAbA,GAAkDxoF,SAA7BrG,KAAKo7C,MAAMyzC,EAAUxuF,KAC5CL,KAAKyuF,cAAcI,EAAWnrC,GAAM,IAYxC9jD,EAAQ8tF,mBAAqB,SAASxtD,EAAO4uD,GAE3C,IAAK,GAAI/qC,KAAU/jD,MAAKo7C,MAElBp7C,KAAKo7C,MAAMz1C,eAAeo+C,IAC5B/jD,KAAK+uF,oBAAoB/uF,KAAKo7C,MAAM2I,GAAQ7jB,EAAM4uD,IAcxDlvF,EAAQmvF,oBAAsB,SAASC,EAAS9uD,EAAO4uD,EAAWG,GAKhE,GAJ6B5oF,SAAzB4oF,IACFA,EAAuB,GAGpBD,EAAQ33B,oBAAsBr3D,KAAKylE,cAA6B,GAAbqpB,GACrDE,EAAQ33B,oBAAsBr3D,KAAKylE,cAA6B,GAAbqpB,EAAoB,CASxE,IAAK,GAPD9wE,GAAGC,EAAGzY,EACNgpF,EAAYxuF,KAAK4/C,UAAUvC,WAAWK,qBAAqB19C,KAAKqc,MAChE6yE,GAAe,EAGfC,KACAC,EAAuBJ,EAAQjjC,aAAavmD,OACvCylB,EAAI,EAAOmkE,EAAJnkE,EAA0BA,IACxCkkE,EAAannF,KAAKgnF,EAAQjjC,aAAa9gC,GAAG5qB,GAK5C,IAAa,GAAT6/B,EAEF,IADAgvD,GAAe,EACVjkE,EAAI,EAAOmkE,EAAJnkE,EAA0BA,IAAK,CACzC,GAAIq/B,GAAOtqD,KAAKi8C,MAAMkzC,EAAalkE,GACnC,IAAa5kB,SAATikD,GACEA,EAAKC,WACHD,EAAKmG,MAAQnG,EAAKkG,SACpBxyC,EAAMssC,EAAK7hC,GAAGjW,EAAI83C,EAAK9hC,KAAKhW,EAC5ByL,EAAMqsC,EAAK7hC,GAAGhW,EAAI63C,EAAK9hC,KAAK/V,EAC5BjN,EAAST,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAErBuwE,EAAThpF,GAAoB,CACtB0pF,GAAe,CACf,QASZ,IAAMhvD,GAASgvD,GAAiBhvD,EAE9B,IAAKjV,EAAI,EAAOmkE,EAAJnkE,EAA0BA,IAGpC,GAFAq/B,EAAOtqD,KAAKi8C,MAAMkzC,EAAalkE,IAElB5kB,SAATikD,EAAoB,CACtB,GAAIujC,GAAY7tF,KAAKo7C,MAAOkP,EAAKkG,QAAUw+B,EAAQ3uF,GAAMiqD,EAAKmG,KAAOnG,EAAKkG,OAErEq9B,GAAU9hC,aAAavmD,QAAWxF,KAAKylE,aAAewpB,GACtDpB,EAAUxtF,IAAM2uF,EAAQ3uF,IAC3BL,KAAKyuF,cAAcO,EAAQnB,EAAU3tD,MAkBjDtgC,EAAQ6uF,cAAgB,SAAS7kF,EAAYikF,EAAW3tD,GAEtDt2B,EAAWkuD,eAAe+1B,EAAUxtF,IAAMwtF,CAG1C,KAAK,GAAIxoF,GAAI,EAAGA,EAAIwoF,EAAU9hC,aAAavmD,OAAQH,IAAK,CACtD,GAAIilD,GAAOujC,EAAU9hC,aAAa1mD,EAC9BilD,GAAKmG,MAAQ7mD,EAAWvJ,IAAMiqD,EAAKkG,QAAU5mD,EAAWvJ,GAC1DL,KAAKqvF,qBAAqBzlF,EAAWikF,EAAUvjC,GAG/CtqD,KAAKsvF,sBAAsB1lF,EAAWikF,EAAUvjC,GAIpDujC,EAAU9hC,gBAGV/rD,KAAKuvF,8BAA8B3lF,EAAWikF,SAIvC7tF,MAAKo7C,MAAMyyC,EAAUxtF,GAG5B,IAAImvF,GAAa5lF,EAAWiF,QAAQwsC,IACpCwyC,GAAUv2B,eAAiBt3D,KAAKs3D,eAChC1tD,EAAWiF,QAAQwsC,MAAQwyC,EAAUh/E,QAAQwsC,KAC7CzxC,EAAWiuD,aAAeg2B,EAAUh2B,YACpCjuD,EAAWiF,QAAQ8sC,SAAW52C,KAAKwG,IAAIvL,KAAK4/C,UAAUvC,WAAWS,YAAa99C,KAAK4/C,UAAUxE,MAAMO,SAAW37C,KAAK4/C,UAAUvC,WAAWQ,mBAAmBj0C,EAAWiuD,aAGlKjuD,EAAWouD,gBAAgBpuD,EAAWouD,gBAAgBxyD,OAAS,IAAMxF,KAAKs3D,gBAC5E1tD,EAAWouD,gBAAgBhwD,KAAKhI,KAAKs3D,gBAMrC1tD,EAAWguD,eAFA,GAAT13B,EAE0B,EAGAlgC,KAAKqc,MAInCzS,EAAW6vD,iBAGX7vD,EAAWkuD,eAAe+1B,EAAUxtF,IAAIu3D,eAAiBhuD,EAAWguD,eAGpEi2B,EAAU7yB,gBAGVpxD,EAAWqxD,eAAeu0B,GAG1BxvF,KAAK6iD,QAAS,GAUhBjjD,EAAQ8sF,oBAAsB,WAC5B,IAAK,GAAIrnF,GAAI,EAAGA,EAAIrF,KAAK6hD,YAAYr8C,OAAQH,IAAK,CAChD,GAAIq+C,GAAO1jD,KAAKo7C,MAAMp7C,KAAK6hD,YAAYx8C,GACvCq+C,GAAK2T,mBAAqB3T,EAAKqI,aAAavmD,MAG5C,IAAIiqF,GAAa,CACjB,IAAI/rC,EAAK2T,mBAAqB,EAC5B,IAAK,GAAIpsC,GAAI,EAAGA,EAAIy4B,EAAK2T,mBAAqB,EAAGpsC,IAG/C,IAAK,GAFDykE,GAAWhsC,EAAKqI,aAAa9gC,GAAGwlC,KAChCk/B,EAAajsC,EAAKqI,aAAa9gC,GAAGulC,OAC7Bo/B,EAAI3kE,EAAE,EAAG2kE,EAAIlsC,EAAK2T,mBAAoBu4B,KACxClsC,EAAKqI,aAAa6jC,GAAGn/B,MAAQi/B,GAAYhsC,EAAKqI,aAAa6jC,GAAGp/B,QAAUm/B,GACxEjsC,EAAKqI,aAAa6jC,GAAGp/B,QAAUk/B,GAAYhsC,EAAKqI,aAAa6jC,GAAGn/B,MAAQk/B,KAC3EF,GAAc,EAKtB/rC,GAAK2T,oBAAsBo4B,IAa/B7vF,EAAQyvF,qBAAuB,SAASzlF,EAAYikF,EAAWvjC,GAEvD1gD,EAAWmuD,eAAepyD,eAAekoF,EAAUxtF,MACvDuJ,EAAWmuD,eAAe81B,EAAUxtF,QAGtCuJ,EAAWmuD,eAAe81B,EAAUxtF,IAAI2H,KAAKsiD,SAGtCtqD,MAAKi8C,MAAMqO,EAAKjqD,GAGvB,KAAK,GAAIgF,GAAI,EAAGA,EAAIuE,EAAWmiD,aAAavmD,OAAQH,IAClD,GAAIuE,EAAWmiD,aAAa1mD,GAAGhF,IAAMiqD,EAAKjqD,GAAI,CAC5CuJ,EAAWmiD,aAAa3jD,OAAO/C,EAAE,EACjC,SAcNzF,EAAQ0vF,sBAAwB,SAAS1lF,EAAYikF,EAAWvjC,GAE1DA,EAAKmG,MAAQnG,EAAKkG,OACpBxwD,KAAKqvF,qBAAqBzlF,EAAYikF,EAAWvjC,IAG7CA,EAAKmG,MAAQo9B,EAAUxtF,IACzBiqD,EAAKyG,aAAa/oD,KAAK6lF,EAAUxtF,IACjCiqD,EAAK7hC,GAAK7e,EACV0gD,EAAKmG,KAAO7mD,EAAWvJ,KAIvBiqD,EAAKwG,eAAe9oD,KAAK6lF,EAAUxtF,IACnCiqD,EAAK9hC,KAAO5e,EACZ0gD,EAAKkG,OAAS5mD,EAAWvJ,IAG3BL,KAAK6vF,oBAAoBjmF,EAAWikF,EAAUvjC,KAalD1qD,EAAQ2vF,8BAAgC,SAAS3lF,EAAYikF,GAE3D,IAAK,GAAIxoF,GAAI,EAAGA,EAAIuE,EAAWmiD,aAAavmD,OAAQH,IAAK,CACvD,GAAIilD,GAAO1gD,EAAWmiD,aAAa1mD,EAE/BilD,GAAKmG,MAAQnG,EAAKkG,QACpBxwD,KAAKqvF,qBAAqBzlF,EAAYikF,EAAWvjC,KAcvD1qD,EAAQiwF,oBAAsB,SAASjmF,EAAYikF,EAAWvjC,GAGtD1gD,EAAW4sD,cAAc7wD,eAAekoF,EAAUxtF,MACtDuJ,EAAW4sD,cAAcq3B,EAAUxtF,QAErCuJ,EAAW4sD,cAAcq3B,EAAUxtF,IAAI2H,KAAKsiD,GAG5C1gD,EAAWmiD,aAAa/jD,KAAKsiD,IAY/B1qD,EAAQquF,wBAA0B,SAASrkF,EAAYikF,GACrD,GAAIjkF,EAAW4sD,cAAc7wD,eAAekoF,EAAUxtF,IAAK,CACzD,IAAK,GAAIgF,GAAI,EAAGA,EAAIuE,EAAW4sD,cAAcq3B,EAAUxtF,IAAImF,OAAQH,IAAK,CACtE,GAAIilD,GAAO1gD,EAAW4sD,cAAcq3B,EAAUxtF,IAAIgF,EAC9CilD,GAAKwG,eAAexG,EAAKwG,eAAetrD,OAAO,IAAMqoF,EAAUxtF,IACjEiqD,EAAKwG,eAAenY,MACpB2R,EAAKkG,OAASq9B,EAAUxtF,GACxBiqD,EAAK9hC,KAAOqlE,IAGZvjC,EAAKyG,aAAapY,MAClB2R,EAAKmG,KAAOo9B,EAAUxtF,GACtBiqD,EAAK7hC,GAAKolE,GAIZA,EAAU9hC,aAAa/jD,KAAKsiD,EAG5B,KAAK,GAAIr/B,GAAI,EAAGA,EAAIrhB,EAAWmiD,aAAavmD,OAAQylB,IAClD,GAAIrhB,EAAWmiD,aAAa9gC,GAAG5qB,IAAMiqD,EAAKjqD,GAAI,CAC5CuJ,EAAWmiD,aAAa3jD,OAAO6iB,EAAE,EACjC,cAKCrhB,GAAW4sD,cAAcq3B,EAAUxtF,MAa9CT,EAAQsuF,eAAiB,SAAStkF,GAChC,IAAK,GAAIvE,GAAI,EAAGA,EAAIuE,EAAWmiD,aAAavmD,OAAQH,IAAK,CACvD,GAAIilD,GAAO1gD,EAAWmiD,aAAa1mD,EAC/BuE,GAAWvJ,IAAMiqD,EAAKmG,MAAQ7mD,EAAWvJ,IAAMiqD,EAAKkG,QACtD5mD,EAAWmiD,aAAa3jD,OAAO/C,EAAE,KAcvCzF,EAAQouF,uBAAyB,SAASpkF,EAAYikF,GACpD,IAAK,GAAIxoF,GAAI,EAAGA,EAAIuE,EAAWmuD,eAAe81B,EAAUxtF,IAAImF,OAAQH,IAAK,CACvE,GAAIilD,GAAO1gD,EAAWmuD,eAAe81B,EAAUxtF,IAAIgF,EAGnDrF,MAAKi8C,MAAMqO,EAAKjqD,IAAMiqD,EAGtBujC,EAAU9hC,aAAa/jD,KAAKsiD,GAC5B1gD,EAAWmiD,aAAa/jD,KAAKsiD,SAGxB1gD,GAAWmuD,eAAe81B,EAAUxtF,KAa7CT,EAAQwrD,aAAe,WACrB,GAAIrH,EAEJ,KAAKA,IAAU/jD,MAAKo7C,MAClB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC,GAAIL,GAAO1jD,KAAKo7C,MAAM2I,EAClBL,GAAKmU,YAAc,IACrBnU,EAAK77B,MAAQ,IAAIxT,OAAOpQ,OAAOy/C,EAAKmU,aAAa,MAMvD,IAAK9T,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GACM,GAApBL,EAAKmU,cAELnU,EAAK77B,MADoBxhB,SAAvBq9C,EAAKuU,cACMvU,EAAKuU,cAGLh0D,OAAOy/C,EAAKrjD,OAuBnCT,EAAQosF,uBAAyB,WAC/B,GAGIjoC,GAHA+rC,EAAW,EACXC,EAAW,IACXC,EAAe,CAInB,KAAKjsC,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BisC,EAAehwF,KAAKo7C,MAAM2I,GAAQiU,gBAAgBxyD,OACnCwqF,EAAXF,IAA0BA,EAAWE,GACrCD,EAAWC,IAAeD,EAAWC,GAI7C,IAAIF,EAAWC,EAAW/vF,KAAK4/C,UAAUvC,WAAWgB,uBAAwB,CAC1E,GAAI0uC,GAAgB/sF,KAAK6hD,YAAYr8C,OACjCyqF,EAAcH,EAAW9vF,KAAK4/C,UAAUvC,WAAWgB,sBAEvD,KAAK0F,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,IACxB/jD,KAAKo7C,MAAM2I,GAAQiU,gBAAgBxyD,OAASyqF,GAC9CjwF,KAAK0uF,4BAA4B1uF,KAAKo7C,MAAM2I,GAIlD/jD,MAAK2kD,uBACL3kD,KAAK0sF,sBAED1sF,KAAK6hD,YAAYr8C,QAAUunF,IAC7B/sF,KAAKs3D,gBAAkB,KAe7B13D,EAAQysF,kBAAoB,SAAS3oC,GACnC,MACE3+C,MAAKklB,IAAIy5B,EAAKlxC,EAAIxS,KAAKiiD,WAAWzvC,IAAMxS,KAAK4/C,UAAUvC,WAAWe,kBAAkBp+C,KAAKqc,OAEzFtX,KAAKklB,IAAIy5B,EAAKjxC,EAAIzS,KAAKiiD,WAAWxvC,IAAMzS,KAAK4/C,UAAUvC,WAAWe,kBAAkBp+C,KAAKqc,OAU7Fzc,EAAQssF,gBAAkB,WACxB,IAAK,GAAI7mF,GAAI,EAAGA,EAAIrF,KAAK6hD,YAAYr8C,OAAQH,IAAK,CAChD,GAAIq+C,GAAO1jD,KAAKo7C,MAAMp7C,KAAK6hD,YAAYx8C,GACvC,IAAoB,GAAfq+C,EAAKyE,QAAkC,GAAfzE,EAAK0E,OAAkB,CAClD,GAAIt9B,GAAS,EAAS9qB,KAAK6hD,YAAYr8C,OAAST,KAAKwG,IAAI,IAAIm4C,EAAK70C,QAAQwsC,MACtE2P,EAAQ,EAAIjmD,KAAKimB,GAAKjmB,KAAKE,QACZ,IAAfy+C,EAAKyE,SAAkBzE,EAAKlxC,EAAIsY,EAAS/lB,KAAK4Y,IAAIqtC,IACnC,GAAftH,EAAK0E,SAAkB1E,EAAKjxC,EAAIqY,EAAS/lB,KAAKyY,IAAIwtC,IACtDhrD,KAAKquF,uBAAuB3qC,MAYlC9jD,EAAQ6tF,YAAc,WAMpB,IAAK,GALDyC,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAERhrF,EAAI,EAAGA,EAAIrF,KAAK6hD,YAAYr8C,OAAQH,IAAK,CAEhD,GAAIq+C,GAAO1jD,KAAKo7C,MAAMp7C,KAAK6hD,YAAYx8C,GACnCq+C,GAAK2T,mBAAqBg5B,IAC5BA,EAAa3sC,EAAK2T,oBAEpB64B,GAAWxsC,EAAK2T,mBAChB84B,GAAkBprF,KAAK0uB,IAAIiwB,EAAK2T,mBAAmB,GACnD+4B,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBprF,KAAK0uB,IAAIy8D,EAAQ,GAE7CK,EAAoBxrF,KAAKqqB,KAAKkhE,EAElCtwF,MAAKylE,aAAe1gE,KAAKC,MAAMkrF,EAAU,EAAEK,GAGvCvwF,KAAKylE,aAAe4qB,IACtBrwF,KAAKylE,aAAe4qB,IAexBzwF,EAAQ4tF,sBAAwB,SAASgD,GACvCxwF,KAAKylE,aAAe,CACpB,IAAIgrB,GAAe1rF,KAAKC,MAAMhF,KAAK6hD,YAAYr8C,OAASgrF,EACxD,KAAK,GAAIzsC,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,IACiB,GAAzC/jD,KAAKo7C,MAAM2I,GAAQsT,oBAA2Br3D,KAAKo7C,MAAM2I,GAAQgI,aAAavmD,QAAU,GACtFirF,EAAe,IACjBzwF,KAAK+uF,oBAAoB/uF,KAAKo7C,MAAM2I,IAAQ,GAAK,EAAK,GACtD0sC,GAAgB,IAa1B7wF,EAAQ2tF,kBAAoB,WAC1B,GAAImD,GAAS,EACTC,EAAQ,CACZ,KAAK,GAAI5sC,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,KACiB,GAAzC/jD,KAAKo7C,MAAM2I,GAAQsT,oBAA2Br3D,KAAKo7C,MAAM2I,GAAQgI,aAAavmD,QAAU,IAC1FkrF,GAAU,GAEZC,GAAS,EAGb,OAAOD,GAAOC,IAMZ,SAAS9wF,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BmD,EAAOnD,EAAoB,GAgB/BN,GAAQylD,iBAAmB,WACzBrlD,KAAK8rD,QAAgB,OAAE9rD,KAAKssF,WAAWlxC,MAAQp7C,KAAKo7C,MACpDp7C,KAAK8rD,QAAgB,OAAE9rD,KAAKssF,WAAWrwC,MAAQj8C,KAAKi8C,MACpDj8C,KAAK8rD,QAAgB,OAAE9rD,KAAKssF,WAAWzqC,YAAc7hD,KAAK6hD,aAa5DjiD,EAAQgxF,gBAAkB,SAASC,EAAUC,GACxBzqF,SAAfyqF,GAA0C,UAAdA,EAC9B9wF,KAAK+wF,sBAAsBF,GAG3B7wF,KAAKgxF,sBAAsBH,IAY/BjxF,EAAQmxF,sBAAwB,SAASF,GACvC7wF,KAAK6hD,YAAc7hD,KAAK8rD,QAAgB,OAAE+kC,GAAuB,YACjE7wF,KAAKo7C,MAAcp7C,KAAK8rD,QAAgB,OAAE+kC,GAAiB,MAC3D7wF,KAAKi8C,MAAcj8C,KAAK8rD,QAAgB,OAAE+kC,GAAiB,OAU7DjxF,EAAQqxF,uBAAyB,WAC/BjxF,KAAK6hD,YAAc7hD,KAAK8rD,QAAiB,QAAe,YACxD9rD,KAAKo7C,MAAcp7C,KAAK8rD,QAAiB,QAAS,MAClD9rD,KAAKi8C,MAAcj8C,KAAK8rD,QAAiB,QAAS,OAWpDlsD,EAAQoxF,sBAAwB,SAASH,GACvC7wF,KAAK6hD,YAAc7hD,KAAK8rD,QAAgB,OAAE+kC,GAAuB,YACjE7wF,KAAKo7C,MAAcp7C,KAAK8rD,QAAgB,OAAE+kC,GAAiB,MAC3D7wF,KAAKi8C,MAAcj8C,KAAK8rD,QAAgB,OAAE+kC,GAAiB,OAU7DjxF,EAAQsxF,kBAAoB,WAC1BlxF,KAAK4wF,gBAAgB5wF,KAAKssF,YAU5B1sF,EAAQ0sF,QAAU,WAChB,MAAOtsF,MAAK0lE,aAAa1lE,KAAK0lE,aAAalgE,OAAO,IAUpD5F,EAAQuxF,gBAAkB,WACxB,GAAInxF,KAAK0lE,aAAalgE,OAAS,EAC7B,MAAOxF,MAAK0lE,aAAa1lE,KAAK0lE,aAAalgE,OAAO,EAGlD,MAAM,IAAIU,WAAU,iEAaxBtG,EAAQwxF,iBAAmB,SAASC,GAClCrxF,KAAK0lE,aAAa19D,KAAKqpF,IAUzBzxF,EAAQ0xF,kBAAoB,WAC1BtxF,KAAK0lE,aAAa/sB,OAWpB/4C,EAAQ2xF,iBAAmB,SAASF,GAElCrxF,KAAK8rD,QAAgB,OAAEulC,IAAUj2C,SACAa,SACA4F,eACA+V,eAAkB53D,KAAKqc,MACvBspD,YAAet/D,QAGhDrG,KAAK8rD,QAAgB,OAAEulC,GAAoB,YAAI,GAAIhuF,IAC9ChD,GAAGgxF,EACF1mF,OACEiB,WAAY,UACZC,OAAQ,iBAEJ7L,KAAK4/C,WACjB5/C,KAAK8rD,QAAgB,OAAEulC,GAAoB,YAAEx5B,YAAc,GAW7Dj4D,EAAQ4xF,oBAAsB,SAASX,SAC9B7wF,MAAK8rD,QAAgB,OAAE+kC,IAWhCjxF,EAAQ6xF,oBAAsB,SAASZ,SAC9B7wF,MAAK8rD,QAAgB,OAAE+kC,IAWhCjxF,EAAQ8xF,cAAgB,SAASb,GAE/B7wF,KAAK8rD,QAAgB,OAAE+kC,GAAY7wF,KAAK8rD,QAAgB,OAAE+kC,GAG1D7wF,KAAKwxF,oBAAoBX,IAW3BjxF,EAAQ+xF,gBAAkB,SAASd,GAEjC7wF,KAAK8rD,QAAgB,OAAE+kC,GAAY7wF,KAAK8rD,QAAgB,OAAE+kC,GAG1D7wF,KAAKyxF,oBAAoBZ,IAa3BjxF,EAAQgyF,qBAAuB,SAASf,GAEtC,IAAK,GAAI9sC,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5B/jD,KAAK8rD,QAAgB,OAAE+kC,GAAiB,MAAE9sC,GAAU/jD,KAAKo7C,MAAM2I,GAKnE,KAAK,GAAIgG,KAAU/pD,MAAKi8C,MAClBj8C,KAAKi8C,MAAMt2C,eAAeokD,KAC5B/pD,KAAK8rD,QAAgB,OAAE+kC,GAAiB,MAAE9mC,GAAU/pD,KAAKi8C,MAAM8N,GAKnE,KAAK,GAAI1kD,GAAI,EAAGA,EAAIrF,KAAK6hD,YAAYr8C,OAAQH,IAC3CrF,KAAK8rD,QAAgB,OAAE+kC,GAAuB,YAAE7oF,KAAKhI,KAAK6hD,YAAYx8C,KAW1EzF,EAAQiyF,6BAA+B,WACrC7xF,KAAK2rF,aAAa,GAAE,IAUtB/rF,EAAQ2sF,WAAa,SAAS7oC,GAE5B,GAAIouC,GAAS9xF,KAAKssF,gBAWXtsF,MAAKo7C,MAAMsI,EAAKrjD,GAEvB,IAAI0xF,GAAmBpxF,EAAKkE,YAG5B7E,MAAK0xF,cAAcI,GAGnB9xF,KAAKuxF,iBAAiBQ,GAGtB/xF,KAAKoxF,iBAAiBW,GAGtB/xF,KAAK4wF,gBAAgB5wF,KAAKssF,WAG1BtsF,KAAKo7C,MAAMsI,EAAKrjD,IAAMqjD,GAUxB9jD,EAAQotF,gBAAkB,WAExB,GAAI8E,GAAS9xF,KAAKssF,SAGlB,IAAc,WAAVwF,IAC8B,GAA3B9xF,KAAK6hD,YAAYr8C,QACpBxF,KAAK8rD,QAAgB,OAAEgmC,GAAqB,YAAE9+E,MAAMhT,KAAKqc,MAAQrc,KAAK4/C,UAAUvC,WAAWO,oBAAsB59C,KAAK0e,MAAMC,OAAOC,aACnI5e,KAAK8rD,QAAgB,OAAEgmC,GAAqB,YAAE7+E,OAAOjT,KAAKqc,MAAQrc,KAAK4/C,UAAUvC,WAAWO,oBAAsB59C,KAAK0e,MAAMC,OAAOsF,cAAe,CACnJ,GAAI+tE,GAAiBhyF,KAAKmxF,iBAG1BnxF,MAAK6xF,+BAIL7xF,KAAK4xF,qBAAqBI,GAI1BhyF,KAAKwxF,oBAAoBM,GAGzB9xF,KAAK2xF,gBAAgBK,GAGrBhyF,KAAK4wF,gBAAgBoB,GAGrBhyF,KAAKsxF,oBAGLtxF,KAAK2kD,uBAGL3kD,KAAKirD,4BAeXrrD,EAAQkuD,sBAAwB,SAASmkC,EAAYC,GACnD,GAAIC,KACJ,IAAiB9rF,SAAb6rF,EACF,IAAK,GAAIJ,KAAU9xF,MAAK8rD,QAAgB,OAClC9rD,KAAK8rD,QAAgB,OAAEnmD,eAAemsF,KAExC9xF,KAAK+wF,sBAAsBe,GAC3BK,EAAanqF,KAAMhI,KAAKiyF,WAK5B,KAAK,GAAIH,KAAU9xF,MAAK8rD,QAAgB,OACtC,GAAI9rD,KAAK8rD,QAAgB,OAAEnmD,eAAemsF,GAAS,CAEjD9xF,KAAK+wF,sBAAsBe,EAC3B,IAAI1xB,GAAOt6D,MAAM6N,UAAUvL,OAAO7H,KAAKgF,UAAW,EAEhD4sF,GAAanqF,KADXo4D,EAAK56D,OAAS,EACGxF,KAAKiyF,GAAa7xB,EAAK,GAAGA,EAAK,IAG/BpgE,KAAKiyF,GAAaC,IAO7C,MADAlyF,MAAKkxF,oBACEiB,GAaTvyF,EAAQouD,mBAAqB,SAASikC,EAAYC,GAChD,GAAIC,IAAe,CACnB,IAAiB9rF,SAAb6rF,EACFlyF,KAAKixF,yBACLkB,EAAenyF,KAAKiyF,SAEjB,CACHjyF,KAAKixF,wBACL,IAAI7wB,GAAOt6D,MAAM6N,UAAUvL,OAAO7H,KAAKgF,UAAW,EAEhD4sF,GADE/xB,EAAK56D,OAAS,EACDxF,KAAKiyF,GAAa7xB,EAAK,GAAGA,EAAK,IAG/BpgE,KAAKiyF,GAAaC,GAKrC,MADAlyF,MAAKkxF,oBACEiB,GAaTvyF,EAAQwyF,sBAAwB,SAASH,EAAYC,GACnD,GAAiB7rF,SAAb6rF,EACF,IAAK,GAAIJ,KAAU9xF,MAAK8rD,QAAgB,OAClC9rD,KAAK8rD,QAAgB,OAAEnmD,eAAemsF,KAExC9xF,KAAKgxF,sBAAsBc,GAC3B9xF,KAAKiyF,UAKT,KAAK,GAAIH,KAAU9xF,MAAK8rD,QAAgB,OACtC,GAAI9rD,KAAK8rD,QAAgB,OAAEnmD,eAAemsF,GAAS,CAEjD9xF,KAAKgxF,sBAAsBc,EAC3B,IAAI1xB,GAAOt6D,MAAM6N,UAAUvL,OAAO7H,KAAKgF,UAAW,EAC9C66D,GAAK56D,OAAS,EAChBxF,KAAKiyF,GAAa7xB,EAAK,GAAGA,EAAK,IAG/BpgE,KAAKiyF,GAAaC,GAK1BlyF,KAAKkxF,qBAaPtxF,EAAQwsD,gBAAkB,SAAS6lC,EAAYC,GAC7C,GAAI9xB,GAAOt6D,MAAM6N,UAAUvL,OAAO7H,KAAKgF,UAAW,EACjCc,UAAb6rF,GACFlyF,KAAK8tD,sBAAsBmkC,GAC3BjyF,KAAKoyF,sBAAsBH,IAGvB7xB,EAAK56D,OAAS,GAChBxF,KAAK8tD,sBAAsBmkC,EAAY7xB,EAAK,GAAGA,EAAK,IACpDpgE,KAAKoyF,sBAAsBH,EAAY7xB,EAAK,GAAGA,EAAK,MAGpDpgE,KAAK8tD,sBAAsBmkC,EAAYC,GACvClyF,KAAKoyF,sBAAsBH,EAAYC,KAY7CtyF,EAAQglD,oBAAsB,WAC5B,GAAIktC,GAAS9xF,KAAKssF,SAClBtsF,MAAK8rD,QAAgB,OAAEgmC,GAAqB,eAC5C9xF,KAAK6hD,YAAc7hD,KAAK8rD,QAAgB,OAAEgmC,GAAqB,aAWjElyF,EAAQyyF,iBAAmB,SAASlsE,EAAI2qE,GACtC,GAAsDptC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAIguC,KAAU9xF,MAAK8rD,QAAQglC,GAC9B,GAAI9wF,KAAK8rD,QAAQglC,GAAYnrF,eAAemsF,IACczrF,SAApDrG,KAAK8rD,QAAQglC,GAAYgB,GAAqB,YAAiB,CAEjE9xF,KAAK4wF,gBAAgBkB,EAAOhB,GAE5BntC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAC5C,KAAK,GAAIC,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GAClBL,EAAKiP,OAAOxsC,GACR09B,EAAOH,EAAKlxC,EAAI,GAAMkxC,EAAK1wC,QAAQ6wC,EAAOH,EAAKlxC,EAAI,GAAMkxC,EAAK1wC,OAC9D8wC,EAAOJ,EAAKlxC,EAAI,GAAMkxC,EAAK1wC,QAAQ8wC,EAAOJ,EAAKlxC,EAAI,GAAMkxC,EAAK1wC,OAC9D2wC,EAAOD,EAAKjxC,EAAI,GAAMixC,EAAKzwC,SAAS0wC,EAAOD,EAAKjxC,EAAI,GAAMixC,EAAKzwC,QAC/D2wC,EAAOF,EAAKjxC,EAAI,GAAMixC,EAAKzwC,SAAS2wC,EAAOF,EAAKjxC,EAAI,GAAMixC,EAAKzwC,QAGvEywC,GAAO1jD,KAAK8rD,QAAQglC,GAAYgB,GAAqB,YACrDpuC,EAAKlxC,EAAI,IAAOsxC,EAAOD,GACvBH,EAAKjxC,EAAI,IAAOmxC,EAAOD,GACvBD,EAAK1wC,MAAQ,GAAK0wC,EAAKlxC,EAAIqxC,GAC3BH,EAAKzwC,OAAS,GAAKywC,EAAKjxC,EAAIkxC,GAC5BD,EAAK70C,QAAQic,OAAS/lB,KAAKqqB,KAAKrqB,KAAK0uB,IAAI,GAAIiwB,EAAK1wC,MAAM,GAAKjO,KAAK0uB,IAAI,GAAIiwB,EAAKzwC,OAAO,IACtFywC,EAAKthB,SAASpiC,KAAKqc,OACnBqnC,EAAKgV,YAAYvyC,KAMzBvmB,EAAQ0yF,oBAAsB,SAASnsE,GACrCnmB,KAAKqyF,iBAAiBlsE,EAAI,UAC1BnmB,KAAKqyF,iBAAiBlsE,EAAI,UAC1BnmB,KAAKkxF,sBAMH,SAASrxF,EAAQD,EAASM,GAE9B,GAAImD,GAAOnD,EAAoB,GAS/BN,GAAQ2yF,yBAA2B,SAASzuF,EAAQ0uF,GAClD,GAAIp3C,GAAQp7C,KAAKo7C,KACjB,KAAK,GAAI2I,KAAU3I,GACbA,EAAMz1C,eAAeo+C,IACnB3I,EAAM2I,GAAQsG,kBAAkBvmD,IAClC0uF,EAAiBxqF,KAAK+7C,IAY9BnkD,EAAQ6yF,4BAA8B,SAAU3uF,GAC9C,GAAI0uF,KAEJ,OADAxyF,MAAK8tD,sBAAsB,2BAA2BhqD,EAAO0uF,GACtDA,GAWT5yF,EAAQ8yF,yBAA2B,SAASpzD,GAC1C,GAAI9sB,GAAIxS,KAAKuoD,qBAAqBjpB,EAAQ9sB,GACtCC,EAAIzS,KAAKyoD,qBAAqBnpB,EAAQ7sB,EAE1C,QACEnL,KAAQkL,EACR9K,IAAQ+K,EACRgU,MAAQjU,EACRkQ,OAAQjQ,IAYZ7S,EAAQgoD,WAAa,SAAUtoB,GAE7B,GAAIqzD,GAAiB3yF,KAAK0yF,yBAAyBpzD,GAC/CkzD,EAAmBxyF,KAAKyyF,4BAA4BE,EAIxD,OAAIH,GAAiBhtF,OAAS,EACpBxF,KAAKo7C,MAAMo3C,EAAiBA,EAAiBhtF,OAAS,IAGvD,MAWX5F,EAAQgzF,yBAA2B,SAAU9uF,EAAQ+uF,GACnD,GAAI52C,GAAQj8C,KAAKi8C,KACjB,KAAK,GAAI8N,KAAU9N,GACbA,EAAMt2C,eAAeokD,IACnB9N,EAAM8N,GAAQM,kBAAkBvmD,IAClC+uF,EAAiB7qF,KAAK+hD,IAa9BnqD,EAAQkzF,4BAA8B,SAAUhvF,GAC9C,GAAI+uF,KAEJ,OADA7yF,MAAK8tD,sBAAsB,2BAA2BhqD,EAAO+uF,GACtDA,GAWTjzF,EAAQoqD,WAAa,SAAS1qB,GAC5B,GAAIqzD,GAAiB3yF,KAAK0yF,yBAAyBpzD,GAC/CuzD,EAAmB7yF,KAAK8yF,4BAA4BH,EAExD,OAAIE,GAAiBrtF,OAAS,EACrBxF,KAAKi8C,MAAM42C,EAAiBA,EAAiBrtF,OAAS,IAGtD,MAWX5F,EAAQmzF,gBAAkB,SAAS3wE,GAC7BA,YAAe/e,GACjBrD,KAAKkoD,aAAa9M,MAAMh5B,EAAI/hB,IAAM+hB,EAGlCpiB,KAAKkoD,aAAajM,MAAM75B,EAAI/hB,IAAM+hB,GAUtCxiB,EAAQozF,YAAc,SAAS5wE,GACzBA,YAAe/e,GACjBrD,KAAK6/C,SAASzE,MAAMh5B,EAAI/hB,IAAM+hB,EAG9BpiB,KAAK6/C,SAAS5D,MAAM75B,EAAI/hB,IAAM+hB,GAWlCxiB,EAAQqzF,qBAAuB,SAAS7wE,GAClCA,YAAe/e,SACVrD,MAAKkoD,aAAa9M,MAAMh5B,EAAI/hB,UAG5BL,MAAKkoD,aAAajM,MAAM75B,EAAI/hB,KAUvCT,EAAQmuF,aAAe,SAASmF,GACT7sF,SAAjB6sF,IACFA,GAAe,EAEjB,KAAI,GAAInvC,KAAU/jD,MAAKkoD,aAAa9M,MAC/Bp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,IACxC/jD,KAAKkoD,aAAa9M,MAAM2I,GAAQjW,UAGpC,KAAI,GAAIic,KAAU/pD,MAAKkoD,aAAajM,MAC/Bj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,IACxC/pD,KAAKkoD,aAAajM,MAAM8N,GAAQjc,UAIpC9tC,MAAKkoD,cAAgB9M,SAASa,UAEV,GAAhBi3C,GACFlzF,KAAKmtB,KAAK,SAAUntB,KAAKo2B,iBAU7Bx2B,EAAQuzF,kBAAoB,SAASD,GACd7sF,SAAjB6sF,IACFA,GAAe,EAGjB,KAAK,GAAInvC,KAAU/jD,MAAKkoD,aAAa9M,MAC/Bp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,IACrC/jD,KAAKkoD,aAAa9M,MAAM2I,GAAQ8T,YAAc,IAChD73D,KAAKkoD,aAAa9M,MAAM2I,GAAQjW,WAChC9tC,KAAKizF,qBAAqBjzF,KAAKkoD,aAAa9M,MAAM2I,IAKpC,IAAhBmvC,GACFlzF,KAAKmtB,KAAK,SAAUntB,KAAKo2B,iBAW7Bx2B,EAAQwzF,sBAAwB,WAC9B,GAAI77E,GAAQ,CACZ,KAAK,GAAIwsC,KAAU/jD,MAAKkoD,aAAa9M,MAC/Bp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,KACzCxsC,GAAS,EAGb,OAAOA,IAST3X,EAAQyzF,iBAAmB,WACzB,IAAK,GAAItvC,KAAU/jD,MAAKkoD,aAAa9M,MACnC,GAAIp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,GACzC,MAAO/jD,MAAKkoD,aAAa9M,MAAM2I,EAGnC,OAAO,OASTnkD,EAAQ0zF,iBAAmB,WACzB,IAAK,GAAIvpC,KAAU/pD,MAAKkoD,aAAajM,MACnC,GAAIj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,GACzC,MAAO/pD,MAAKkoD,aAAajM,MAAM8N,EAGnC,OAAO,OAUTnqD,EAAQ2zF,sBAAwB,WAC9B,GAAIh8E,GAAQ,CACZ,KAAK,GAAIwyC,KAAU/pD,MAAKkoD,aAAajM,MAC/Bj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,KACzCxyC,GAAS,EAGb,OAAOA,IAUT3X,EAAQ4zF,wBAA0B,WAChC,GAAIj8E,GAAQ,CACZ,KAAI,GAAIwsC,KAAU/jD,MAAKkoD,aAAa9M,MAC/Bp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,KACxCxsC,GAAS,EAGb,KAAI,GAAIwyC,KAAU/pD,MAAKkoD,aAAajM,MAC/Bj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,KACxCxyC,GAAS,EAGb,OAAOA,IAST3X,EAAQ6zF,kBAAoB,WAC1B,IAAI,GAAI1vC,KAAU/jD,MAAKkoD,aAAa9M,MAClC,GAAGp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,GACxC,OAAO,CAGX,KAAI,GAAIgG,KAAU/pD,MAAKkoD,aAAajM,MAClC,GAAGj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,GACxC,OAAO,CAGX,QAAO,GAUTnqD,EAAQ8zF,oBAAsB,WAC5B,IAAI,GAAI3vC,KAAU/jD,MAAKkoD,aAAa9M,MAClC,GAAGp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,IACpC/jD,KAAKkoD,aAAa9M,MAAM2I,GAAQ8T,YAAc,EAChD,OAAO,CAIb,QAAO,GASTj4D,EAAQ+zF,sBAAwB,SAASjwC,GACvC,IAAK,GAAIr+C,GAAI,EAAGA,EAAIq+C,EAAKqI,aAAavmD,OAAQH,IAAK,CACjD,GAAIilD,GAAO5G,EAAKqI,aAAa1mD,EAC7BilD,GAAKvc,SACL/tC,KAAK+yF,gBAAgBzoC,KAUzB1qD,EAAQg0F,qBAAuB,SAASlwC,GACtC,IAAK,GAAIr+C,GAAI,EAAGA,EAAIq+C,EAAKqI,aAAavmD,OAAQH,IAAK,CACjD,GAAIilD,GAAO5G,EAAKqI,aAAa1mD,EAC7BilD,GAAKv+C,OAAQ,EACb/L,KAAKgzF,YAAY1oC,KAWrB1qD,EAAQi0F,wBAA0B,SAASnwC,GACzC,IAAK,GAAIr+C,GAAI,EAAGA,EAAIq+C,EAAKqI,aAAavmD,OAAQH,IAAK,CACjD,GAAIilD,GAAO5G,EAAKqI,aAAa1mD,EAC7BilD,GAAKxc,WACL9tC,KAAKizF,qBAAqB3oC,KAgB9B1qD,EAAQmoD,cAAgB,SAASjkD,EAAQgwF,EAAQZ,EAAca,GACxC1tF,SAAjB6sF,IACFA,GAAe,GAEM7sF,SAAnB0tF,IACFA,GAAiB,GAGa,GAA5B/zF,KAAKyzF,qBAA0C,GAAVK,GAAgD,GAA7B9zF,KAAK6lE,sBAC/D7lE,KAAK+tF,cAAa,GAGG,GAAnBjqF,EAAO8rC,UACT9rC,EAAOiqC,SACP/tC,KAAK+yF,gBAAgBjvF,GACjBA,YAAkBT,IAA6C,GAArCrD,KAAK4lE,8BAA2D,GAAlBmuB,GAC1E/zF,KAAK2zF,sBAAsB7vF,KAI7BA,EAAOgqC,WACP9tC,KAAKizF,qBAAqBnvF,IAGR,GAAhBovF,GACFlzF,KAAKmtB,KAAK,SAAUntB,KAAKo2B,iBAY7Bx2B,EAAQsqD,YAAc,SAASpmD,GACT,GAAhBA,EAAOiI,QACTjI,EAAOiI,OAAQ,EACf/L,KAAKmtB,KAAK,YAAYu2B,KAAK5/C,EAAOzD,OAWtCT,EAAQqqD,aAAe,SAASnmD,GACV,GAAhBA,EAAOiI,QACTjI,EAAOiI,OAAQ,EACf/L,KAAKgzF,YAAYlvF,GACbA,YAAkBT,IACpBrD,KAAKmtB,KAAK,aAAau2B,KAAK5/C,EAAOzD,MAGnCyD,YAAkBT,IACpBrD,KAAK4zF,qBAAqB9vF,IAa9BlE,EAAQ8nD,aAAe,aAUvB9nD,EAAQgpD,WAAa,SAAStpB,GAC5B,GAAiC,GAA7Bt/B,KAAK4/C,UAAU7T,WAAoB,CACrC,GAAI2X,GAAO1jD,KAAK4nD,WAAWtoB,EAC3B,IAAY,MAARokB,EACF1jD,KAAK+nD,cAAcrE,GAAM,OAEtB,CACH,GAAI4G,GAAOtqD,KAAKgqD,WAAW1qB,EACf,OAARgrB,EACFtqD,KAAK+nD,cAAcuC,GAAM,GAGzBtqD,KAAK+tF,eAGT/tF,KAAKmtB,KAAK,QAASntB,KAAKo2B,gBACxBp2B,KAAK6gD,YAWTjhD,EAAQipD,iBAAmB,SAASvpB,GAClC,GAAIokB,GAAO1jD,KAAK4nD,WAAWtoB,EACf,OAARokB,GAAyBr9C,SAATq9C,IAElB1jD,KAAKiiD,YAAezvC,EAAMxS,KAAKuoD,qBAAqBjpB,EAAQ9sB,GACxCC,EAAMzS,KAAKyoD,qBAAqBnpB,EAAQ7sB,IAC5DzS,KAAKmsF,YAAYzoC,IAEnB1jD,KAAKmtB,KAAK,cAAentB,KAAKo2B,iBAUhCx2B,EAAQkpD,cAAgB,SAASxpB,GAC/B,GAAIokB,GAAO1jD,KAAK4nD,WAAWtoB,EAC3B,IAAY,MAARokB,EACF1jD,KAAK+nD,cAAcrE,GAAK,OAErB,CACH,GAAI4G,GAAOtqD,KAAKgqD,WAAW1qB,EACf,OAARgrB,GACFtqD,KAAK+nD,cAAcuC,GAAK,GAG5BtqD,KAAK6gD,WAUPjhD,EAAQmpD,iBAAmB,SAASzpB,GAClCt/B,KAAKg0F,6BAA6B10D,GAClCt/B,KAAKi0F,2BAA2B30D,IAGlC1/B,EAAQo0F,6BAA+B,aACvCp0F,EAAQq0F,2BAA6B,aAOrCr0F,EAAQw2B,aAAe,WACrB,GAAI4xB,GAAUhoD,KAAKk0F,mBACfC,EAAUn0F,KAAKo0F,kBACnB,QAAQh5C,MAAM4M,EAAS/L,MAAMk4C,IAS/Bv0F,EAAQs0F,iBAAmB,WACzB,GAAIG,KACJ,KAAI,GAAItwC,KAAU/jD,MAAKkoD,aAAa9M,MAC/Bp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,IACxCswC,EAAQrsF,KAAK+7C,EAGjB,OAAOswC,IASTz0F,EAAQw0F,iBAAmB,WACzB,GAAIC,KACJ,KAAI,GAAItqC,KAAU/pD,MAAKkoD,aAAajM,MAC/Bj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,IACxCsqC,EAAQrsF,KAAK+hD,EAGjB,OAAOsqC,IASTz0F,EAAQs2B,aAAe,SAAS+W,GAC9B,GAAI5nC,GAAG86B,EAAM9/B,CAEb,KAAK4sC,GAAkC5mC,QAApB4mC,EAAUznC,OAC3B,KAAM,qCAKR,KAFAxF,KAAK+tF,cAAa,GAEb1oF,EAAI,EAAG86B,EAAO8M,EAAUznC,OAAY26B,EAAJ96B,EAAUA,IAAK,CAClDhF,EAAK4sC,EAAU5nC,EAEf,IAAIq+C,GAAO1jD,KAAKo7C,MAAM/6C,EACtB,KAAKqjD,EACH,KAAM,IAAI4wC,YAAW,iBAAmBj0F,EAAK,cAE/CL,MAAK+nD,cAAcrE,GAAK,GAAK,GAG/B5zC,QAAQC,IAAI,+DAEZ/P,KAAK6gB,UAUPjhB,EAAQ20F,YAAc,SAAStnD,EAAW8mD,GACxC,GAAI1uF,GAAG86B,EAAM9/B,CAEb,KAAK4sC,GAAkC5mC,QAApB4mC,EAAUznC,OAC3B,KAAM,qCAKR,KAFAxF,KAAK+tF,cAAa,GAEb1oF,EAAI,EAAG86B,EAAO8M,EAAUznC,OAAY26B,EAAJ96B,EAAUA,IAAK,CAClDhF,EAAK4sC,EAAU5nC,EAEf,IAAIq+C,GAAO1jD,KAAKo7C,MAAM/6C,EACtB,KAAKqjD,EACH,KAAM,IAAI4wC,YAAW,iBAAmBj0F,EAAK,cAE/CL,MAAK+nD,cAAcrE,GAAK,GAAK,EAAKqwC,GAEpC/zF,KAAK6gB,UASPjhB,EAAQ40F,YAAc,SAASvnD,GAC7B,GAAI5nC,GAAG86B,EAAM9/B,CAEb,KAAK4sC,GAAkC5mC,QAApB4mC,EAAUznC,OAC3B,KAAM,qCAKR,KAFAxF,KAAK+tF,cAAa,GAEb1oF,EAAI,EAAG86B,EAAO8M,EAAUznC,OAAY26B,EAAJ96B,EAAUA,IAAK,CAClDhF,EAAK4sC,EAAU5nC,EAEf,IAAIilD,GAAOtqD,KAAKi8C,MAAM57C,EACtB,KAAKiqD,EACH,KAAM,IAAIgqC,YAAW,iBAAmBj0F,EAAK,cAE/CL,MAAK+nD,cAAcuC,GAAK,GAAK,EAAKypC,gBAEpC/zF,KAAK6gB,UAOPjhB,EAAQmrD,iBAAmB,WACzB,IAAI,GAAIhH,KAAU/jD,MAAKkoD,aAAa9M,MAC/Bp7C,KAAKkoD,aAAa9M,MAAMz1C,eAAeo+C,KACnC/jD,KAAKo7C,MAAMz1C,eAAeo+C,UACtB/jD,MAAKkoD,aAAa9M,MAAM2I,GAIrC,KAAI,GAAIgG,KAAU/pD,MAAKkoD,aAAajM,MAC/Bj8C,KAAKkoD,aAAajM,MAAMt2C,eAAeokD,KACnC/pD,KAAKi8C,MAAMt2C,eAAeokD,UACtB/pD,MAAKkoD,aAAajM,MAAM8N,MASnC,SAASlqD,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BmD,EAAOnD,EAAoB,IAC3BgD,EAAOhD,EAAoB,GAO/BN,GAAQ60F,qBAAuB,WAC7B,KAAOz0F,KAAK8lE,gBAAgBhjD,iBAC1B9iB,KAAK8lE,gBAAgBl0D,YAAY5R,KAAK8lE,gBAAgB/iD,WAGxD/iB,MAAKg0F,6BAA+B,mBAC7Bh0F,MAAK8rD,QAAiB,QAAS,MAAc,iBAC7C9rD,MAAK8rD,QAAiB,QAAS,MAAiB,cACvD9rD,KAAK8/C,oBAAqB,GAU5BlgD,EAAQ80F,4BAA8B,WACpC,IAAK,GAAIC,KAAgB30F,MAAKwhD,gBACxBxhD,KAAKwhD,gBAAgB77C,eAAegvF,KACtC30F,KAAK20F,GAAgB30F,KAAKwhD,gBAAgBmzC,KAUhD/0F,EAAQg1F,gBAAkB,WACxB50F,KAAK4lD,UAAY5lD,KAAK4lD,QACtB,IAAIivC,GAAU7iF,SAAS8iF,eAAe,2BAClC9uB,EAAWh0D,SAAS8iF,eAAe,iCACnC/uB,EAAc/zD,SAAS8iF,eAAe,gCACrB,IAAjB90F,KAAK4lD,UACPivC,EAAQvnF,MAAMi5B,QAAQ,QACtBy/B,EAAS14D,MAAMi5B,QAAQ,QACvBw/B,EAAYz4D,MAAMi5B,QAAQ,OAC1By/B,EAASp0C,QAAU5xB,KAAK40F,gBAAgBngE,KAAKz0B,QAG7C60F,EAAQvnF,MAAMi5B,QAAQ,OACtBy/B,EAAS14D,MAAMi5B,QAAQ,OACvBw/B,EAAYz4D,MAAMi5B,QAAQ,QAC1By/B,EAASp0C,QAAU,MAErB5xB,KAAKqnD,yBAQPznD,EAAQynD,sBAAwB,WAE1BrnD,KAAK+0F,eACP/0F,KAAK+T,IAAI,SAAU/T,KAAK+0F,cAG1B;GAAIpxD,GAAS3jC,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,OAmBnD,IAjB6Bt9B,SAAzBrG,KAAKg1F,kBACPh1F,KAAKg1F,gBAAgBx/B,uBACrBx1D,KAAKg1F,gBAAkB3uF,OACvBrG,KAAKi1F,oBAAsB,KAC3Bj1F,KAAK8/C,oBAAqB,GAI5B9/C,KAAK00F,8BAGL10F,KAAKuhD,kBAAmB,EAGxBvhD,KAAK4lE,8BAA+B,EACpC5lE,KAAK6lE,sBAAuB,EAEP,GAAjB7lE,KAAK4lD,SAAkB,CACzB,KAAO5lD,KAAK8lE,gBAAgBhjD,iBAC1B9iB,KAAK8lE,gBAAgBl0D,YAAY5R,KAAK8lE,gBAAgB/iD,WAIxD/iB,MAAK8lE,gBAAgBziD,UAAY,oHAEcsgB,EAAgB,QAAG,mLAGnBA,EAAgB,QAAG,iBAC9B,GAAhC3jC,KAAKozF,yBAAgCpzF,KAAK+6C,iBAAiBC,KAC7Dh7C,KAAK8lE,gBAAgBziD,WAAa,+JAGasgB,EAAiB,SAAG,iBAE5B,GAAhC3jC,KAAKuzF,yBAAgE,GAAhCvzF,KAAKozF,0BACjDpzF,KAAK8lE,gBAAgBziD,WAAa,+JAGWsgB,EAAiB,SAAG,kBAEnC,GAA5B3jC,KAAKyzF,sBACPzzF,KAAK8lE,gBAAgBziD,WAAa,+JAGasgB,EAAY,IAAG,iBAKhE,IAAIuxD,GAAgBljF,SAAS8iF,eAAe,6BAC5CI,GAActjE,QAAU5xB,KAAKm1F,sBAAsB1gE,KAAKz0B,KACxD,IAAIo1F,GAAgBpjF,SAAS8iF,eAAe,iCAE5C,IADAM,EAAcxjE,QAAU5xB,KAAKq1F,sBAAsB5gE,KAAKz0B,MACpB,GAAhCA,KAAKozF,yBAAgCpzF,KAAK+6C,iBAAiBC,KAAM,CACnE,GAAIs6C,GAAatjF,SAAS8iF,eAAe,8BACzCQ,GAAW1jE,QAAU5xB,KAAKu1F,UAAU9gE,KAAKz0B,UAEtC,IAAoC,GAAhCA,KAAKuzF,yBAAgE,GAAhCvzF,KAAKozF,wBAA8B,CAC/E,GAAIkC,GAAatjF,SAAS8iF,eAAe,8BACzCQ,GAAW1jE,QAAU5xB,KAAKw1F,uBAAuB/gE,KAAKz0B,MAExD,GAAgC,GAA5BA,KAAKyzF,oBAA8B,CACrC,GAAIz6C,GAAehnC,SAAS8iF,eAAe,4BAC3C97C,GAAapnB,QAAU5xB,KAAKsnD,gBAAgB7yB,KAAKz0B,MAEnD,GAAIgmE,GAAWh0D,SAAS8iF,eAAe,gCACvC9uB,GAASp0C,QAAU5xB,KAAK40F,gBAAgBngE,KAAKz0B,MAE7CA,KAAK+0F,cAAgB/0F,KAAKqnD,sBAAsB5yB,KAAKz0B,MACrDA,KAAK4T,GAAG,SAAU5T,KAAK+0F,mBAEpB,CACH/0F,KAAK+lE,YAAY1iD,UAAY,qIAEkBsgB,EAAa,KAAI,gBAChE,IAAI8xD,GAAiBzjF,SAAS8iF,eAAe,oCAC7CW,GAAe7jE,QAAU5xB,KAAK40F,gBAAgBngE,KAAKz0B,QAWvDJ,EAAQu1F,sBAAwB,WAE9Bn1F,KAAKy0F,uBACDz0F,KAAK+0F,eACP/0F,KAAK+T,IAAI,SAAU/T,KAAK+0F,cAG1B,IAAIpxD,GAAS3jC,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,OAGnD3jC,MAAK8lE,gBAAgBziD,UAAY,kHAEcsgB,EAAa,KAAI,wMAGaA,EAAuB,eAAI,gBAGxG,IAAI+xD,GAAa1jF,SAAS8iF,eAAe,0BACzCY,GAAW9jE,QAAU5xB,KAAKqnD,sBAAsB5yB,KAAKz0B,MAGrDA,KAAK+0F,cAAgB/0F,KAAK21F,SAASlhE,KAAKz0B,MACxCA,KAAK4T,GAAG,SAAU5T,KAAK+0F,gBASzBn1F,EAAQy1F,sBAAwB,WAE9Br1F,KAAKy0F,uBACLz0F,KAAK+tF,cAAa,GAClB/tF,KAAKuhD,kBAAmB,CAExB,IAAI5d,GAAS3jC,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,OAE/C3jC,MAAK+0F,eACP/0F,KAAK+T,IAAI,SAAU/T,KAAK+0F,eAG1B/0F,KAAK+tF,eACL/tF,KAAK6lE,sBAAuB,EAC5B7lE,KAAK4lE,8BAA+B,EAEpC5lE,KAAK8lE,gBAAgBziD,UAAY,kHAEgBsgB,EAAa,KAAI,wMAGaA,EAAwB,gBAAI,gBAG3G,IAAI+xD,GAAa1jF,SAAS8iF,eAAe,0BACzCY,GAAW9jE,QAAU5xB,KAAKqnD,sBAAsB5yB,KAAKz0B,MAGrDA,KAAK+0F,cAAgB/0F,KAAK41F,eAAenhE,KAAKz0B,MAC9CA,KAAK4T,GAAG,SAAU5T,KAAK+0F,eAGvB/0F,KAAKwhD,gBAA8B,aAAIxhD,KAAK0nD,aAC5C1nD,KAAKwhD,gBAA8C,6BAAIxhD,KAAKg0F,6BAC5Dh0F,KAAKwhD,gBAAkC,iBAAIxhD,KAAK2nD,iBAChD3nD,KAAKwhD,gBAAgC,eAAIxhD,KAAK2oD,eAC9C3oD,KAAK0nD,aAAe1nD,KAAK41F,eACzB51F,KAAKg0F,6BAA+B,aACpCh0F,KAAK2nD,iBAAmB,aACxB3nD,KAAK2oD,eAAiB3oD,KAAK61F,eAG3B71F,KAAK6gD,WAQPjhD,EAAQ41F,uBAAyB,WAE/Bx1F,KAAKy0F,uBACLz0F,KAAK8/C,oBAAqB,EAEtB9/C,KAAK+0F,eACP/0F,KAAK+T,IAAI,SAAU/T,KAAK+0F,eAG1B/0F,KAAKg1F,gBAAkBh1F,KAAKszF,mBAC5BtzF,KAAKg1F,gBAAgBz/B,qBAErB,IAAI5xB,GAAS3jC,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,OAEnD3jC,MAAK8lE,gBAAgBziD,UAAY,kHAEcsgB,EAAa,KAAI,wMAGaA,EAA4B,oBAAI,gBAG7G,IAAI+xD,GAAa1jF,SAAS8iF,eAAe,0BACzCY,GAAW9jE,QAAU5xB,KAAKqnD,sBAAsB5yB,KAAKz0B,MAGrDA,KAAKwhD,gBAA8B,aAASxhD,KAAK0nD,aACjD1nD,KAAKwhD,gBAA8C,6BAAKxhD,KAAKg0F,6BAC7Dh0F,KAAKwhD,gBAA4B,WAAWxhD,KAAK4oD,WACjD5oD,KAAKwhD,gBAAkC,iBAAKxhD,KAAK2nD,iBACjD3nD,KAAKwhD,gBAA+B,cAAQxhD,KAAKqoD,cACjDroD,KAAK0nD,aAAmB1nD,KAAK81F,mBAC7B91F,KAAK4oD,WAAmB,aACxB5oD,KAAKqoD,cAAmBroD,KAAK+1F,iBAC7B/1F,KAAK2nD,iBAAmB,aACxB3nD,KAAKg0F,6BAA+Bh0F,KAAKg2F,oBAGzCh2F,KAAK6gD,WAUPjhD,EAAQk2F,mBAAqB,SAASx2D,GACpCt/B,KAAKg1F,gBAAgB7jC,aAAa3oC,KAAKslB,WACvC9tC,KAAKg1F,gBAAgB7jC,aAAa1oC,GAAGqlB,WACrC9tC,KAAKi1F,oBAAsBj1F,KAAKg1F,gBAAgBv/B,wBAAwBz1D,KAAKuoD,qBAAqBjpB,EAAQ9sB,GAAGxS,KAAKyoD,qBAAqBnpB,EAAQ7sB,IAC9G,OAA7BzS,KAAKi1F,sBACPj1F,KAAKi1F,oBAAoBlnD,SACzB/tC,KAAKuhD,kBAAmB,GAE1BvhD,KAAK6gD,WAUPjhD,EAAQm2F,iBAAmB,SAASzsF,GAClC,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OACZ,QAA7BvrB,KAAKi1F,qBAA6D5uF,SAA7BrG,KAAKi1F,sBAC5Cj1F,KAAKi1F,oBAAoBziF,EAAIxS,KAAKuoD,qBAAqBjpB,EAAQ9sB,GAC/DxS,KAAKi1F,oBAAoBxiF,EAAIzS,KAAKyoD,qBAAqBnpB,EAAQ7sB,IAEjEzS,KAAK6gD,WAGPjhD,EAAQo2F,oBAAsB,SAAS12D,GACrC,GAAI22D,GAAUj2F,KAAK4nD,WAAWtoB,EACf,OAAX22D,GACqD,GAAnDj2F,KAAKg1F,gBAAgB7jC,aAAa3oC,KAAKonB,WACzC5vC,KAAKk2F,UAAUD,EAAQ51F,GAAIL,KAAKg1F,gBAAgBvsE,GAAGpoB,IACnDL,KAAKg1F,gBAAgB7jC,aAAa3oC,KAAKslB,YAEY,GAAjD9tC,KAAKg1F,gBAAgB7jC,aAAa1oC,GAAGmnB,WACvC5vC,KAAKk2F,UAAUl2F,KAAKg1F,gBAAgBxsE,KAAKnoB,GAAI41F,EAAQ51F,IACrDL,KAAKg1F,gBAAgB7jC,aAAa1oC,GAAGqlB,aAIvC9tC,KAAKg1F,gBAAgBp/B,uBAEvB51D,KAAKuhD,kBAAmB,EACxBvhD,KAAK6gD,WASPjhD,EAAQg2F,eAAiB,SAASt2D,GAChC,GAAoC,GAAhCt/B,KAAKozF,wBAA8B,CACrC,GAAI1vC,GAAO1jD,KAAK4nD,WAAWtoB,EAE3B,IAAY,MAARokB,EACF,GAAIA,EAAKmU,YAAc,EACrBs+B,MAAMn2F,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,QAAyB,qBAElE,CACH3jC,KAAK+nD,cAAcrE,GAAK,EACxB,IAAI0yC,GAAep2F,KAAK8rD,QAAiB,QAAS,KAGlDsqC,GAAyB,WAAI,GAAI/yF,IAAMhD,GAAG,oBAAoBL,KAAK4/C,UACnE,IAAIy2C,GAAaD,EAAyB,UAC1CC,GAAW7jF,EAAIkxC,EAAKlxC,EACpB6jF,EAAW5jF,EAAIixC,EAAKjxC,EAGpBzS,KAAKi8C,MAAsB,eAAI,GAAI/4C,IAAM7C,GAAG,iBAAiBmoB,KAAKk7B,EAAKrjD,GAAGooB,GAAG4tE,EAAWh2F,IAAKL,KAAMA,KAAK4/C,UACxG,IAAI02C,GAAiBt2F,KAAKi8C,MAAsB,cAChDq6C,GAAe9tE,KAAOk7B,EACtB4yC,EAAe/rC,WAAY,EAC3B+rC,EAAeznF,QAAQmwC,cAAgBlwC,SAAS,EAC5CmwC,SAAS,EACTt4C,KAAM,aACNu4C,UAAW,IAEfo3C,EAAe1mD,UAAW,EAC1B0mD,EAAe7tE,GAAK4tE,EAEpBr2F,KAAKwhD,gBAA+B,cAAIxhD,KAAKqoD,cAC7CroD,KAAKqoD,cAAgB,SAAS/+C,GAC5B,GAAIg2B,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,QACzC+qE,EAAiBt2F,KAAKi8C,MAAsB,cAChDq6C,GAAe7tE,GAAGjW,EAAIxS,KAAKuoD,qBAAqBjpB,EAAQ9sB,GACxD8jF,EAAe7tE,GAAGhW,EAAIzS,KAAKyoD,qBAAqBnpB,EAAQ7sB,IAG1DzS,KAAK6iD,QAAS,EACd7iD,KAAK6P,WAMbjQ,EAAQi2F,eAAiB,SAASvsF,GAChC,GAAoC,GAAhCtJ,KAAKozF,wBAA8B,CACrC,GAAI9zD,GAAUt/B,KAAKunD,YAAYj+C,EAAMy1B,QAAQxT,OAE7CvrB,MAAKqoD,cAAgBroD,KAAKwhD,gBAA+B,oBAClDxhD,MAAKwhD,gBAA+B,aAG3C,IAAI+0C,GAAgBv2F,KAAKi8C,MAAsB,eAAEuU,aAG1CxwD,MAAKi8C,MAAsB,qBAC3Bj8C,MAAK8rD,QAAiB,QAAS,MAAc,iBAC7C9rD,MAAK8rD,QAAiB,QAAS,MAAiB,aAEvD,IAAIpI,GAAO1jD,KAAK4nD,WAAWtoB,EACf,OAARokB,IACEA,EAAKmU,YAAc,EACrBs+B,MAAMn2F,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,QAAyB,kBAGrE3jC,KAAKw2F,YAAYD,EAAc7yC,EAAKrjD,IACpCL,KAAKqnD,0BAGTrnD,KAAK+tF,iBAQTnuF,EAAQ+1F,SAAW,WACjB,GAAI31F,KAAKyzF,qBAAwC,GAAjBzzF,KAAK4lD,SAAkB,CACrD,GAAI+sC,GAAiB3yF,KAAK0yF,yBAAyB1yF,KAAKgiD,iBACpDy0C,GAAep2F,GAAGM,EAAKkE,aAAa2N,EAAEmgF,EAAerrF,KAAKmL,EAAEkgF,EAAejrF,IAAImgB,MAAM,MAAMynC,gBAAe,EAAKC,gBAAe,EAClI,IAAIvvD,KAAK+6C,iBAAiBrnC,IAAK,CAC7B,GAAwC,GAApC1T,KAAK+6C,iBAAiBrnC,IAAIlO,OAU5B,KAAM,IAAI9B,OAAM,sEAThB,IAAI8Q,GAAKxU,IACTA,MAAK+6C,iBAAiBrnC,IAAI+iF,EAAa,SAASC,GAC9CliF,EAAG2tC,UAAUzuC,IAAIgjF,GACjBliF,EAAG6yC,wBACH7yC,EAAGquC,QAAS,EACZruC,EAAG3E,cAWP7P,MAAKmiD,UAAUzuC,IAAI+iF,GACnBz2F,KAAKqnD,wBACLrnD,KAAK6iD,QAAS,EACd7iD,KAAK6P,UAWXjQ,EAAQ42F,YAAc,SAASG,EAAaC,GAC1C,GAAqB,GAAjB52F,KAAK4lD,SAAkB,CACzB,GAAI6wC,IAAejuE,KAAKmuE,EAAcluE,GAAGmuE,EACzC,IAAI52F,KAAK+6C,iBAAiBG,QAAS,CACjC,GAA4C,GAAxCl7C,KAAK+6C,iBAAiBG,QAAQ11C,OAShC,KAAM,IAAI9B,OAAM,0EARhB,IAAI8Q,GAAKxU,IACTA,MAAK+6C,iBAAiBG,QAAQu7C,EAAa,SAASC,GAClDliF,EAAG4tC,UAAU1uC,IAAIgjF,GACjBliF,EAAGquC,QAAS,EACZruC,EAAG3E,cAUP7P,MAAKoiD,UAAU1uC,IAAI+iF,GACnBz2F,KAAK6iD,QAAS,EACd7iD,KAAK6P,UAUXjQ,EAAQs2F,UAAY,SAASS,EAAaC,GACxC,GAAqB,GAAjB52F,KAAK4lD,SAAkB,CACzB,GAAI6wC,IAAep2F,GAAIL,KAAKg1F,gBAAgB30F,GAAImoB,KAAKmuE,EAAcluE,GAAGmuE,EACtE,IAAI52F,KAAK+6C,iBAAiBE,SAAU,CAClC,GAA6C,GAAzCj7C,KAAK+6C,iBAAiBE,SAASz1C,OASjC,KAAM,IAAI9B,OAAM,wEARhB,IAAI8Q,GAAKxU,IACTA,MAAK+6C,iBAAiBE,SAASw7C,EAAa,SAASC,GACnDliF,EAAG4tC,UAAUjtC,OAAOuhF,GACpBliF,EAAGquC,QAAS,EACZruC,EAAG3E,cAUP7P,MAAKoiD,UAAUjtC,OAAOshF,GACtBz2F,KAAK6iD,QAAS,EACd7iD,KAAK6P,UAUXjQ,EAAQ21F,UAAY,WAClB,IAAIv1F,KAAK+6C,iBAAiBC,MAAyB,GAAjBh7C,KAAK4lD,SA4BrC,KAAM,IAAIliD,OAAM,iDA3BhB,IAAIggD,GAAO1jD,KAAKqzF,mBACZlgF,GAAQ9S,GAAGqjD,EAAKrjD,GAClBwnB,MAAO67B,EAAK77B,MACZnV,MAAOgxC,EAAK70C,QAAQ6D,MACpB8oC,MAAOkI,EAAK70C,QAAQ2sC,MACpB7wC,OACEiB,WAAW83C,EAAK70C,QAAQlE,MAAMiB,WAC9BC,OAAO63C,EAAK70C,QAAQlE,MAAMkB,OAC1BC,WACEF,WAAW83C,EAAK70C,QAAQlE,MAAMmB,UAAUF,WACxCC,OAAO63C,EAAK70C,QAAQlE,MAAMmB,UAAUD,SAG1C,IAAyC,GAArC7L,KAAK+6C,iBAAiBC,KAAKx1C,OAU7B,KAAM,IAAI9B,OAAM,wEAThB,IAAI8Q,GAAKxU,IACTA,MAAK+6C,iBAAiBC,KAAK7nC,EAAM,SAAUujF,GACzCliF,EAAG2tC,UAAUhtC,OAAOuhF,GACpBliF,EAAG6yC,wBACH7yC,EAAGquC,QAAS,EACZruC,EAAG3E,WAoBXjQ,EAAQ0nD,gBAAkB,WACxB,IAAKtnD,KAAKyzF,qBAAwC,GAAjBzzF,KAAK4lD,SACpC,GAAK5lD,KAAK0zF,sBA4BRyC,MAAMn2F,KAAK4/C,UAAUlc,QAAQ1jC,KAAK4/C,UAAUjc,QAA4B,wBA5BzC,CAC/B,GAAIkzD,GAAgB72F,KAAKk0F,mBACrB4C,EAAgB92F,KAAKo0F,kBACzB,IAAIp0F,KAAK+6C,iBAAiBI,IAAK,CAC7B,GAAI3mC,GAAKxU,KACLmT,GAAQioC,MAAOy7C,EAAe56C,MAAO66C,EACzC,MAAI92F,KAAK+6C,iBAAiBI,IAAI31C,OAAS,GAUrC,KAAM,IAAI9B,OAAM,0EAThB1D,MAAK+6C,iBAAiBI,IAAIhoC,EAAM,SAAUujF,GACxCliF,EAAG4tC,UAAUxrC,OAAO8/E,EAAcz6C,OAClCznC,EAAG2tC,UAAUvrC,OAAO8/E,EAAct7C,OAClC5mC,EAAGu5E,eACHv5E,EAAGquC,QAAS,EACZruC,EAAG3E,cAQP7P,MAAKoiD,UAAUxrC,OAAOkgF,GACtB92F,KAAKmiD,UAAUvrC,OAAOigF,GACtB72F,KAAK+tF,eACL/tF,KAAK6iD,QAAS,EACd7iD,KAAK6P,WAYT,SAAShQ,EAAQD,EAASM,GAE9B,GACIkkC,IADOlkC,EAAoB,GAClBA,EAAoB,IAEjCN,GAAQqmE,iBAAmB,WAEzB,GAA8C,GAA1CjmE,KAAK+/C,kBAAkBC,SAASx6C,OAAa,CAC/C,IAAK,GAAIH,GAAI,EAAGA,EAAIrF,KAAK+/C,kBAAkBC,SAASx6C,OAAQH,IAC1DrF,KAAK+/C,kBAAkBC,SAAS36C,GAAG0jF,SAErC/oF,MAAK+/C,kBAAkBC,YAGzBhgD,KAAKi0F,2BAA6B,YAGlC,IAAI8C,GAAU/kF,SAAS8iF,eAAe,6BAClCiC,IAAWA,EAAQntF,YACrBmtF,EAAQntF,WAAWgI,YAAYmlF,IAYnCn3F,EAAQsmE,wBAA0B,WAChClmE,KAAKimE,mBAELjmE,KAAKg3F,iBACL,IAAIA,IAAkB,KAAK,OAAO,OAAO,QAAQ,SAAS,UAAU,eAChEC,GAAwB,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,cAEhGj3F,MAAKg3F,eAAwB,QAAIhlF,SAASM,cAAc,OACxDtS,KAAKg3F,eAAwB,QAAE32F,GAAK,6BACpCL,KAAK0e,MAAMxM,YAAYlS,KAAKg3F,eAAwB,QAEpD,KAAK,GAAI3xF,GAAI,EAAGA,EAAI2xF,EAAexxF,OAAQH,IAAK,CAC9CrF,KAAKg3F,eAAeA,EAAe3xF,IAAM2M,SAASM,cAAc,OAChEtS,KAAKg3F,eAAeA,EAAe3xF,IAAIhF,GAAK,sBAAwB22F,EAAe3xF,GACnFrF,KAAKg3F,eAAeA,EAAe3xF,IAAIwC,UAAY,sBAAwBmvF,EAAe3xF,GAC1FrF,KAAKg3F,eAAwB,QAAE9kF,YAAYlS,KAAKg3F,eAAeA,EAAe3xF,IAE9E,IAAIzB,GAASwgC,EAAOpkC,KAAKg3F,eAAeA,EAAe3xF,KAAMi/B,iBAAiB,GAC9E1gC,GAAOgQ,GAAG,QAAS5T,KAAKi3F,EAAqB5xF,IAAIovB,KAAKz0B,OACtDA,KAAK+/C,kBAAkBE,IAAIj4C,KAAKpE,GAGlC5D,KAAKi0F,2BAA6Bj0F,KAAKk3F,cAEvCl3F,KAAK+/C,kBAAkBC,SAAWhgD,KAAK+/C,kBAAkBE,KAS3DrgD,EAAQu3F,YAAc,SAAS7tF,GAC7BtJ,KAAKgjD,YAAYzyC,SAAS,MAC1BjH,EAAMm7B,mBAQR7kC,EAAQs3F,cAAgB,WACtBl3F,KAAKgnD,eACLhnD,KAAK6mD,eACL7mD,KAAKmnD,aAYPvnD,EAAQgnD,QAAU,SAASt9C,GACzBtJ,KAAK+gD,WAAa/gD,KAAK4/C,UAAUrB,SAASC,MAAM/rC,EAChDzS,KAAK6P,QACLvG,EAAMD,kBAQRzJ,EAAQknD,UAAY,SAASx9C,GAC3BtJ,KAAK+gD,YAAc/gD,KAAK4/C,UAAUrB,SAASC,MAAM/rC,EACjDzS,KAAK6P,QACLvG,EAAMD,kBAQRzJ,EAAQmnD,UAAY,SAASz9C,GAC3BtJ,KAAK8gD,WAAa9gD,KAAK4/C,UAAUrB,SAASC,MAAMhsC,EAChDxS,KAAK6P,QACLvG,EAAMD,kBAQRzJ,EAAQqnD,WAAa,SAAS39C,GAC5BtJ,KAAK8gD,YAAc9gD,KAAK4/C,UAAUrB,SAASC,MAAM/rC,EACjDzS,KAAK6P,QACLvG,EAAMD,kBAQRzJ,EAAQsnD,QAAU,SAAS59C,GACzBtJ,KAAKghD,cAAgBhhD,KAAK4/C,UAAUrB,SAASC,MAAM/e,KACnDz/B,KAAK6P,QACLvG,EAAMD,kBAQRzJ,EAAQwnD,SAAW,SAAS99C,GAC1BtJ,KAAKghD,eAAiBhhD,KAAK4/C,UAAUrB,SAASC,MAAM/e,KACpDz/B,KAAK6P,QACLvG,EAAMD,kBAQRzJ,EAAQunD,UAAY,SAAS79C,GAC3BtJ,KAAKghD,cAAgB,EACrB13C,GAASA,EAAMD,kBAQjBzJ,EAAQinD,aAAe,SAASv9C,GAC9BtJ,KAAK+gD,WAAa,EAClBz3C,GAASA,EAAMD,kBAQjBzJ,EAAQonD,aAAe,SAAS19C,GAC9BtJ,KAAK8gD,WAAa,EAClBx3C,GAASA,EAAMD,mBAMb,SAASxJ,EAAQD,GAErBA,EAAQ0lD,aAAe,WACrB,IAAK,GAAIvB,KAAU/jD,MAAKo7C,MACtB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC,GAAIL,GAAO1jD,KAAKo7C,MAAM2I,EACO,IAAzBL,EAAKoT,mBACPpT,EAAK5H,MAAQ,GACb4H,EAAKqT,qBAAsB,KAYnCn3D,EAAQmjD,yBAA2B,WACjC,GAAiD,GAA7C/iD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAmB9O,KAAK6hD,YAAYr8C,OAAS,EAAG,CACjC,MAA/CxF,KAAK4/C,UAAUjB,mBAAmB9jB,WAAoE,MAA/C76B,KAAK4/C,UAAUjB,mBAAmB9jB,UAC3F76B,KAAK4/C,UAAUjB,mBAAmBC,iBAAmB,GAGrD5+C,KAAK4/C,UAAUjB,mBAAmBC,gBAAkB75C,KAAKklB,IAAIjqB,KAAK4/C,UAAUjB,mBAAmBC,iBAG9C,MAA/C5+C,KAAK4/C,UAAUjB,mBAAmB9jB,WAAoE,MAA/C76B,KAAK4/C,UAAUjB,mBAAmB9jB,UAChD,GAAvC76B,KAAK4/C,UAAUZ,aAAalwC,UAC9B9O,KAAK4/C,UAAUZ,aAAar4C,KAAO,YAIM,GAAvC3G,KAAK4/C,UAAUZ,aAAalwC,UAC9B9O,KAAK4/C,UAAUZ,aAAar4C,KAAO,aAIvC,IACI+8C,GAAMK,EADNqzC,EAAU,EAEVC,GAAe,EACfC,GAAiB,CAErB,KAAKvzC,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GACA,IAAdL,EAAK5H,MACPu7C,GAAe,EAGfC,GAAiB,EAEfF,EAAU1zC,EAAKzH,MAAMz2C,SACvB4xF,EAAU1zC,EAAKzH,MAAMz2C,QAM3B,IAAsB,GAAlB8xF,GAA0C,GAAhBD,EAC5B,KAAM,IAAI3zF,OAAM,wHAQhB1D,MAAKu3F,mBAGiB,GAAlBD,IAC8C,WAA5Ct3F,KAAK4/C,UAAUjB,mBAAmBG,OACpC9+C,KAAKw3F,iBAAiBJ,GAGtBp3F,KAAKy3F,2BAKT,IAAIC,GAAe13F,KAAK23F,kBAGxB33F,MAAK43F,uBAAuBF,GAG5B13F,KAAK6P,UAYXjQ,EAAQg4F,uBAAyB,SAASF,GACxC,GAAI3zC,GAAQL,CAGZ,KAAK,GAAI5H,KAAS47C,GAChB,GAAIA,EAAa/xF,eAAem2C,GAE9B,IAAKiI,IAAU2zC,GAAa57C,GAAOV,MAC7Bs8C,EAAa57C,GAAOV,MAAMz1C,eAAeo+C,KAC3CL,EAAOg0C,EAAa57C,GAAOV,MAAM2I,GACkB,MAA/C/jD,KAAK4/C,UAAUjB,mBAAmB9jB,WAAoE,MAA/C76B,KAAK4/C,UAAUjB,mBAAmB9jB,UACvF6oB,EAAKyE,SACPzE,EAAKlxC,EAAIklF,EAAa57C,GAAO+7C,OAC7Bn0C,EAAKyE,QAAS,EAEduvC,EAAa57C,GAAO+7C,QAAUH,EAAa57C,GAAO+C,aAIhD6E,EAAK0E,SACP1E,EAAKjxC,EAAIilF,EAAa57C,GAAO+7C,OAC7Bn0C,EAAK0E,QAAS,EAEdsvC,EAAa57C,GAAO+7C,QAAUH,EAAa57C,GAAO+C,aAGtD7+C,KAAK83F,kBAAkBp0C,EAAKzH,MAAMyH,EAAKrjD,GAAGq3F,EAAah0C,EAAK5H,OAOpE97C,MAAKulD,cAUP3lD,EAAQ+3F,iBAAmB,WACzB,GACI5zC,GAAQL,EAAM5H,EADd47C,IAKJ,KAAK3zC,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GAClBL,EAAKyE,QAAS,EACdzE,EAAK0E,QAAS,EACqC,MAA/CpoD,KAAK4/C,UAAUjB,mBAAmB9jB,WAAoE,MAA/C76B,KAAK4/C,UAAUjB,mBAAmB9jB,UAC3F6oB,EAAKjxC,EAAIzS,KAAK4/C,UAAUjB,mBAAmBC,gBAAgB8E,EAAK5H,MAGhE4H,EAAKlxC,EAAIxS,KAAK4/C,UAAUjB,mBAAmBC,gBAAgB8E,EAAK5H,MAEjCz1C,SAA7BqxF,EAAah0C,EAAK5H,SACpB47C,EAAah0C,EAAK5H,QAAUxG,OAAQ,EAAG8F,SAAWy8C,OAAO,EAAGh5C,YAAY,IAE1E64C,EAAah0C,EAAK5H,OAAOxG,QAAU,EACnCoiD,EAAah0C,EAAK5H,OAAOV,MAAM2I,GAAUL,EAK7C,IAAIq0C,GAAW,CACf,KAAKj8C,IAAS47C,GACRA,EAAa/xF,eAAem2C,IAC1Bi8C,EAAWL,EAAa57C,GAAOxG,SACjCyiD,EAAWL,EAAa57C,GAAOxG,OAMrC,KAAKwG,IAAS47C,GACRA,EAAa/xF,eAAem2C,KAC9B47C,EAAa57C,GAAO+C,aAAek5C,EAAW,GAAK/3F,KAAK4/C,UAAUjB,mBAAmBE,YACrF64C,EAAa57C,GAAO+C,aAAgB64C,EAAa57C,GAAOxG,OAAS,EACjEoiD,EAAa57C,GAAO+7C,OAASH,EAAa57C,GAAO+C,YAAe,IAAO64C,EAAa57C,GAAOxG,OAAS,GAAKoiD,EAAa57C,GAAO+C,YAIjI,OAAO64C,IAUT93F,EAAQ43F,iBAAmB,SAASJ,GAClC,GAAIrzC,GAAQL,CAGZ,KAAKK,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GACdL,EAAKzH,MAAMz2C,QAAU4xF,IACvB1zC,EAAK5H,MAAQ,GAMnB,KAAKiI,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GACA,GAAdL,EAAK5H,OACP97C,KAAKg4F,UAAU,EAAEt0C,EAAKzH,MAAMyH,EAAKrjD,MAYzCT,EAAQ63F,yBAA2B,WACjC,GAAI1zC,GAAQL,CAGZ,KAAKK,IAAU/jD,MAAKo7C,MAClB,GAAIp7C,KAAKo7C,MAAMz1C,eAAeo+C,GAAS,CACrC/jD,KAAKo7C,MAAM2I,GAAQjI,MAAQ,GAC3B,OAKJ,IAAKiI,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GACA,KAAdL,EAAK5H,OACP97C,KAAKi4F,kBAAkB,IAAMv0C,EAAKzH,MAAMyH,EAAKrjD,IAOnD,IAAI0vF,GAAW,GACf,KAAKhsC,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GAClBgsC,EAAWrsC,EAAK5H,MAAQi0C,EAAWrsC,EAAK5H,MAAQi0C,EAKpD,KAAKhsC,IAAU/jD,MAAKo7C,MACdp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5BL,EAAO1jD,KAAKo7C,MAAM2I,GAClBL,EAAK5H,OAASi0C,IAepBnwF,EAAQ23F,iBAAmB,WACzBv3F,KAAK4/C,UAAUvC,WAAWvuC,SAAU,EACpC9O,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SAAU,EAC3C9O,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,SAAU,EACvD9O,KAAKulE,2BACsC,GAAvCvlE,KAAK4/C,UAAUZ,aAAalwC,UAC9B9O,KAAK4/C,UAAUZ,aAAaC,SAAU,GAExCj/C,KAAKomD,0BAcPxmD,EAAQk4F,kBAAoB,SAAS77C,EAAOi8C,EAAUR,EAAcS,GAClE,IAAK,GAAI9yF,GAAI,EAAGA,EAAI42C,EAAMz2C,OAAQH,IAAK,CACrC,GAAIwoF,GAAY,IAEdA,GADE5xC,EAAM52C,GAAGorD,MAAQynC,EACPj8C,EAAM52C,GAAGmjB,KAGTyzB,EAAM52C,GAAGojB,EAIvB,IAAI2vE,IAAY,CACmC,OAA/Cp4F,KAAK4/C,UAAUjB,mBAAmB9jB,WAAoE,MAA/C76B,KAAK4/C,UAAUjB,mBAAmB9jB,UACvFgzD,EAAU1lC,QAAU0lC,EAAU/xC,MAAQq8C,IACxCtK,EAAU1lC,QAAS,EACnB0lC,EAAUr7E,EAAIklF,EAAa7J,EAAU/xC,OAAO+7C,OAC5CO,GAAY,GAIVvK,EAAUzlC,QAAUylC,EAAU/xC,MAAQq8C,IACxCtK,EAAUzlC,QAAS,EACnBylC,EAAUp7E,EAAIilF,EAAa7J,EAAU/xC,OAAO+7C,OAC5CO,GAAY,GAIC,GAAbA,IACFV,EAAa7J,EAAU/xC,OAAO+7C,QAAUH,EAAa7J,EAAU/xC,OAAO+C,YAClEgvC,EAAU5xC,MAAMz2C,OAAS,GAC3BxF,KAAK83F,kBAAkBjK,EAAU5xC,MAAM4xC,EAAUxtF,GAAGq3F,EAAa7J,EAAU/xC,UAenFl8C,EAAQo4F,UAAY,SAASl8C,EAAOG,EAAOi8C,GACzC,IAAK,GAAI7yF,GAAI,EAAGA,EAAI42C,EAAMz2C,OAAQH,IAAK,CACrC,GAAIwoF,GAAY,IAEdA,GADE5xC,EAAM52C,GAAGorD,MAAQynC,EACPj8C,EAAM52C,GAAGmjB,KAGTyzB,EAAM52C,GAAGojB,IAEA,IAAnBolE,EAAU/xC,OAAe+xC,EAAU/xC,MAAQA,KAC7C+xC,EAAU/xC,MAAQA,EACd+xC,EAAU5xC,MAAMz2C,OAAS,GAC3BxF,KAAKg4F,UAAUl8C,EAAM,EAAG+xC,EAAU5xC,MAAO4xC,EAAUxtF,OAe3DT,EAAQq4F,kBAAoB,SAASn8C,EAAOG,EAAOi8C,GACjDl4F,KAAKo7C,MAAM88C,GAAUnhC,qBAAsB,CAC3C,KAAK,GAAI1xD,GAAI,EAAGA,EAAI42C,EAAMz2C,OAAQH,IAAK,CACrC,GAAIwoF,GAAY,KACZhzD,EAAY,CACZohB,GAAM52C,GAAGorD,MAAQynC,GACnBrK,EAAY5xC,EAAM52C,GAAGmjB,KACrBqS,EAAY,IAGZgzD,EAAY5xC,EAAM52C,GAAGojB,GAEA,IAAnBolE,EAAU/xC,QACZ+xC,EAAU/xC,MAAQA,EAAQjhB,GAI9B,IAAK,GAAIx1B,GAAI,EAAGA,EAAI42C,EAAMz2C,OAAQH,IAAK,CACrC,GAAIwoF,GAAY,IACgBA,GAA5B5xC,EAAM52C,GAAGorD,MAAQynC,EAAuBj8C,EAAM52C,GAAGmjB,KACnCyzB,EAAM52C,GAAGojB,GACvBolE,EAAU5xC,MAAMz2C,OAAS,GAAKqoF,EAAU92B,uBAAwB,GAClE/2D,KAAKi4F,kBAAkBpK,EAAU/xC,MAAO+xC,EAAU5xC,MAAO4xC,EAAUxtF,MAWzET,EAAQy4F,cAAgB,WACtB,IAAK,GAAIt0C,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5B/jD,KAAKo7C,MAAM2I,GAAQoE,QAAS,EAC5BnoD,KAAKo7C,MAAM2I,GAAQqE,QAAS,KAQ9B,SAASvoD,GA8MX,QAASy4F,GAAUx0F,EAAQ6C,EAAM2B,GAC7B,MAAIxE,GAAO6E,iBACA7E,EAAO6E,iBAAiBhC,EAAM2B,GAAU,OAGnDxE,GAAOoF,YAAY,KAAOvC,EAAM2B,GASpC,QAASiwF,GAAoBjsF,GAGzB,MAAc,YAAVA,EAAE3F,KACK1C,OAAOu0F,aAAalsF,EAAEuf,OAI7B4sE,EAAKnsF,EAAEuf,OACA4sE,EAAKnsF,EAAEuf,OAGd6sE,EAAapsF,EAAEuf,OACR6sE,EAAapsF,EAAEuf,OAInB5nB,OAAOu0F,aAAalsF,EAAEuf,OAAO8iC,cASxC,QAASgqC,GAAMrsF,GACX,GAAI1D,GAAU0D,EAAE7C,QAAU6C,EAAE5C,WACxBkvF,EAAWhwF,EAAQiwF,OAGvB,QAAK,IAAMjwF,EAAQf,UAAY,KAAKrB,QAAQ,eAAiB,IAClD,EAIQ,SAAZoyF,GAAmC,UAAZA,GAAoC,YAAZA,GAA2BhwF,EAAQkwF,iBAA8C,QAA3BlwF,EAAQkwF,gBAUxH,QAASC,GAAgBC,EAAYC,GACjC,MAAOD,GAAWviF,OAAOxO,KAAK,OAASgxF,EAAWxiF,OAAOxO,KAAK,KASlE,QAASixF,GAAgBC,GACrBA,EAAeA,KAEf,IACIzwF,GADA0wF,GAAmB,CAGvB,KAAK1wF,IAAO2wF,GACJF,EAAazwF,GACb0wF,GAAmB,EAGvBC,EAAiB3wF,GAAO,CAGvB0wF,KACDE,GAAmB,GAe3B,QAASC,GAAYC,EAAWC,EAAW5wF,EAAQ+N,EAAQ8iF,GACvD,GAAIr0F,GACAiD,EACAqxF,IAGJ,KAAKhzB,EAAW6yB,GACZ,QAUJ,KANc,SAAV3wF,GAAqB+wF,EAAYJ,KACjCC,GAAaD,IAKZn0F,EAAI,EAAGA,EAAIshE,EAAW6yB,GAAWh0F,SAAUH,EAC5CiD,EAAWq+D,EAAW6yB,GAAWn0F,GAI7BiD,EAASuxF,KAAOR,EAAiB/wF,EAASuxF,MAAQvxF,EAASwzC,OAM3DjzC,GAAUP,EAASO,SAOT,YAAVA,GAAwBkwF,EAAgBU,EAAWnxF,EAASmxF,cAIxD7iF,GAAUtO,EAASwxF,OAASJ,GAC5B/yB,EAAW6yB,GAAWpxF,OAAO/C,EAAG,GAGpCs0F,EAAQ3xF,KAAKM,GAIrB,OAAOqxF,GASX,QAASI,GAAgBztF,GACrB,GAAImtF,KAkBJ,OAhBIntF,GAAEikC,UACFkpD,EAAUzxF,KAAK,SAGfsE,EAAE0tF,QACFP,EAAUzxF,KAAK,OAGfsE,EAAE+jC,SACFopD,EAAUzxF,KAAK,QAGfsE,EAAE2tF,SACFR,EAAUzxF,KAAK,QAGZyxF,EAaX,QAASS,GAAc5xF,EAAUgE,GACzBhE,EAASgE,MAAO,IACZA,EAAEjD,gBACFiD,EAAEjD,iBAGFiD,EAAEm4B,iBACFn4B,EAAEm4B,kBAGNn4B,EAAE/C,aAAc,EAChB+C,EAAE6tF,cAAe,GAWzB,QAASC,GAAiBZ,EAAWltF,GAGjC,IAAIqsF,EAAMrsF,GAAV,CAIA,GACIjH,GADA2hE,EAAYuyB,EAAYC,EAAWO,EAAgBztF,GAAIA,EAAE3F,MAEzDwyF,KACAkB,GAA8B,CAGlC,KAAKh1F,EAAI,EAAGA,EAAI2hE,EAAUxhE,SAAUH,EAO5B2hE,EAAU3hE,GAAGw0F,KACbQ,GAA8B,EAG9BlB,EAAanyB,EAAU3hE,GAAGw0F,KAAO,EACjCK,EAAclzB,EAAU3hE,GAAGiD,SAAUgE,IAMpC+tF,GAAgCf,GACjCY,EAAclzB,EAAU3hE,GAAGiD,SAAUgE,EAOzCA,GAAE3F,MAAQ2yF,GAAqBM,EAAYJ,IAC3CN,EAAgBC,IAUxB,QAASmB,GAAWhuF,GAIhBA,EAAEuf,MAA0B,gBAAXvf,GAAEuf,MAAoBvf,EAAEuf,MAAQvf,EAAEiuF,OAEnD,IAAIf,GAAYjB,EAAoBjsF,EAGpC,IAAKktF,EAIL,MAAc,SAAVltF,EAAE3F,MAAmB6zF,GAAsBhB,OAC3CgB,GAAqB,OAIzBJ,GAAiBZ,EAAWltF,GAShC,QAASstF,GAAYlxF,GACjB,MAAc,SAAPA,GAAyB,QAAPA,GAAwB,OAAPA,GAAuB,QAAPA,EAW9D,QAAS+xF,KACLjtE,aAAaktE,GACbA,EAAe7sE,WAAWqrE,EAAiB,KAS/C,QAASyB,KACL,IAAKC,EAAc,CACfA,IACA,KAAK,GAAIlyF,KAAO+vF,GAIR/vF,EAAM,IAAY,IAANA,GAIZ+vF,EAAK9yF,eAAe+C,KACpBkyF,EAAanC,EAAK/vF,IAAQA,GAItC,MAAOkyF,GAUX,QAASC,GAAgBnyF,EAAK+wF,EAAW5wF,GAcrC,MAVKA,KACDA,EAAS8xF,IAAiBjyF,GAAO,UAAY,YAKnC,YAAVG,GAAwB4wF,EAAUj0F,SAClCqD,EAAS,WAGNA,EAYX,QAASiyF,GAAchB,EAAOrsF,EAAMnF,EAAUO,GAI1CwwF,EAAiBS,GAAS,EAIrBjxF,IACDA,EAASgyF,EAAgBptF,EAAK,OAUlC,IA2BIpI,GA3BA01F,EAAoB,WAChBzB,EAAmBzwF,IACjBwwF,EAAiBS,GACnBW,KAUJO,EAAoB,SAAS1uF,GACzB4tF,EAAc5xF,EAAUgE,GAKT,UAAXzD,IACA2xF,EAAqBjC,EAAoBjsF,IAK7CuhB,WAAWqrE,EAAiB,IAOpC,KAAK7zF,EAAI,EAAGA,EAAIoI,EAAKjI,SAAUH,EAC3B41F,EAAYxtF,EAAKpI,GAAIA,EAAIoI,EAAKjI,OAAS,EAAIu1F,EAAoBC,EAAmBnyF,EAAQixF,EAAOz0F,GAczG,QAAS41F,GAAYvB,EAAapxF,EAAUO,EAAQqyF,EAAep/C,GAG/D49C,EAAcA,EAAYxtF,QAAQ,OAAQ,IAE1C,IACI7G,GACAqD,EACA+E,EAHA0tF,EAAWzB,EAAY3xF,MAAM,KAI7B0xF,IAIJ,IAAI0B,EAAS31F,OAAS,EAClB,MAAOs1F,GAAcpB,EAAayB,EAAU7yF,EAAUO,EAO1D,KAFA4E,EAAuB,MAAhBisF,GAAuB,KAAOA,EAAY3xF,MAAM,KAElD1C,EAAI,EAAGA,EAAIoI,EAAKjI,SAAUH,EAC3BqD,EAAM+E,EAAKpI,GAGP+1F,EAAiB1yF,KACjBA,EAAM0yF,EAAiB1yF,IAMvBG,GAAoB,YAAVA,GAAwBwyF,EAAW3yF,KAC7CA,EAAM2yF,EAAW3yF,GACjB+wF,EAAUzxF,KAAK,UAIf4xF,EAAYlxF,IACZ+wF,EAAUzxF,KAAKU,EAMvBG,GAASgyF,EAAgBnyF,EAAK+wF,EAAW5wF,GAIpC89D,EAAWj+D,KACZi+D,EAAWj+D,OAIf6wF,EAAY7wF,EAAK+wF,EAAW5wF,GAASqyF,EAAexB,GAQpD/yB,EAAWj+D,GAAKwyF,EAAgB,UAAY,SACxC5yF,SAAUA,EACVmxF,UAAWA,EACX5wF,OAAQA,EACRgxF,IAAKqB,EACLp/C,MAAOA,EACPg+C,MAAOJ,IAYf,QAAS4B,GAAcC,EAAcjzF,EAAUO,GAC3C,IAAK,GAAIxD,GAAI,EAAGA,EAAIk2F,EAAa/1F,SAAUH,EACvC41F,EAAYM,EAAal2F,GAAIiD,EAAUO,GAjhB/C,IAAK,GAlDD+xF,GA6BAF,EArIAjC,GACI+C,EAAG,YACHC,EAAG,MACHC,GAAI,QACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,WACJC,GAAI,MACJC,GAAI,QACJC,GAAI,SACJC,GAAI,WACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,GAAI,KACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,IAAK,QAWTnE,GACIoE,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,IACLC,IAAK,KAaTxC,GACIyC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,EAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,EAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,MAST5D,GACIvxF,OAAU,MACVo1F,QAAW,OACXC,SAAU,QACVC,OAAU,OAiBdx4B,KAOAy4B,KAQA/F,KAcAmB,GAAqB,EAQrBlB,GAAmB,EAMdj0F,EAAI,EAAO,GAAJA,IAAUA,EACtBozF,EAAK,IAAMpzF,GAAK,IAAMA,CAM1B,KAAKA,EAAI,EAAQ,GAALA,IAAUA,EAClBozF,EAAKpzF,EAAI,IAAMA,CA8gBnBizF,GAAUtmF,SAAU,WAAYsoF,GAChChC,EAAUtmF,SAAU,UAAWsoF,GAC/BhC,EAAUtmF,SAAU,QAASsoF,EAE7B,IAAIp3C,IAiBAzuB,KAAM,SAAShnB,EAAMnF,EAAUO,GAG3B,MAFAyyF,GAAc7tF,YAAgB3H,OAAQ2H,GAAQA,GAAOnF,EAAUO,GAC/Du2F,EAAY3xF,EAAO,IAAM5E,GAAUP,EAC5BtI,MAoBX0mE,OAAQ,SAASj5D,EAAM5E,GAKnB,MAJIu2F,GAAY3xF,EAAO,IAAM5E,WAClBu2F,GAAY3xF,EAAO,IAAM5E,GAChC7I,KAAKy0B,KAAKhnB,EAAM,aAAe5E,IAE5B7I,MAUXgmF,QAAS,SAASv4E,EAAM5E,GAEpB,MADAu2F,GAAY3xF,EAAO,IAAM5E,KAClB7I,MAUX0mD,MAAO,WAGH,MAFAigB,MACAy4B,KACOp/F,MAIjBH,GAAOD,QAAUsjD,GAMb,SAASrjD,EAAQD,EAASM,GAuf9B,QAASm/F,KACPr/F,KAAK4/C,UAAUZ,aAAalwC,SAAW9O,KAAK4/C,UAAUZ,aAAalwC,OACnE,IAAIwwF,GAAqBttF,SAAS8iF,eAAe,qBACCwK,GAAmBhyF,MAAM1B,WAAhC,GAAvC5L,KAAK4/C,UAAUZ,aAAalwC,QAAwD,UACR,UAEhF9O,KAAKomD,wBAAuB,GAO9B,QAASm5C,KACP,IAAK,GAAIx7C,KAAU/jD,MAAK2hD,iBAClB3hD,KAAK2hD,iBAAiBh8C,eAAeo+C,KACvC/jD,KAAK2hD,iBAAiBoC,GAAQmT,GAAK,EAAIl3D,KAAK2hD,iBAAiBoC,GAAQoT,GAAK,EAC1En3D,KAAK2hD,iBAAiBoC,GAAQiT,GAAK,EAAIh3D,KAAK2hD,iBAAiBoC,GAAQkT,GAAK,EAG7B,IAA7Cj3D,KAAK4/C,UAAUjB,mBAAmB7vC,SACpC9O,KAAK+iD,2BACLy8C,EAAiBj/F,KAAKP,KAAM,aAAc,EAAG,8CAC7Cw/F,EAAiBj/F,KAAKP,KAAM,aAAc,EAAG,0BAC7Cw/F,EAAiBj/F,KAAKP,KAAM,aAAc,EAAG,0BAC7Cw/F,EAAiBj/F,KAAKP,KAAM,aAAc,EAAG,wBAC7Cw/F,EAAiBj/F,KAAKP,KAAM,eAAgB,EAAG,oBAG/CA,KAAKksF,kBAEPlsF,KAAK6iD,QAAS,EACd7iD,KAAK6P,QAMP,QAAS4vF,KACP,GAAI5wF,GAAU,gDACV6wF,KACAC,EAAe3tF,SAAS8iF,eAAe,wBACvC8K,EAAe5tF,SAAS8iF,eAAe,uBAC3C,IAA4B,GAAxB6K,EAAaE,QAAiB,CAMhC,GALI7/F,KAAK4/C,UAAUlD,QAAQC,UAAUE,uBAAyB78C,KAAK8/F,gBAAgBpjD,QAAQC,UAAUE,uBAAwB6iD,EAAgB13F,KAAK,0BAA4BhI,KAAK4/C,UAAUlD,QAAQC,UAAUE,uBAC3M78C,KAAK4/C,UAAUlD,QAAQI,gBAAkB98C,KAAK8/F,gBAAgBpjD,QAAQC,UAAUG,gBAAyC4iD,EAAgB13F,KAAK,mBAAqBhI,KAAK4/C,UAAUlD,QAAQI,gBAC1L98C,KAAK4/C,UAAUlD,QAAQK,cAAgB/8C,KAAK8/F,gBAAgBpjD,QAAQC,UAAUI,cAA2C2iD,EAAgB13F,KAAK,iBAAmBhI,KAAK4/C,UAAUlD,QAAQK,cACxL/8C,KAAK4/C,UAAUlD,QAAQM,gBAAkBh9C,KAAK8/F,gBAAgBpjD,QAAQC,UAAUK,gBAAyC0iD,EAAgB13F,KAAK,mBAAqBhI,KAAK4/C,UAAUlD,QAAQM,gBAC1Lh9C,KAAK4/C,UAAUlD,QAAQO,SAAWj9C,KAAK8/F,gBAAgBpjD,QAAQC,UAAUM,SAAgDyiD,EAAgB13F,KAAK,YAAchI,KAAK4/C,UAAUlD,QAAQO,SACzJ,GAA1ByiD,EAAgBl6F,OAAa,CAC/BqJ,EAAU,kBACVA,GAAW,wBACX,KAAK,GAAIxJ,GAAI,EAAGA,EAAIq6F,EAAgBl6F,OAAQH,IAC1CwJ,GAAW6wF,EAAgBr6F,GACvBA,EAAIq6F,EAAgBl6F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,KAET7O,KAAK4/C,UAAUZ,aAAalwC,SAAW9O,KAAK8/F,gBAAgB9gD,aAAalwC,UAC7C,GAA1B4wF,EAAgBl6F,OAAcqJ,EAAU,kBACtCA,GAAW,KACjBA,GAAW,iBAAmB7O,KAAK4/C,UAAUZ,aAAalwC,SAE7C,iDAAXD,IACFA,GAAW,UAGV,IAA4B,GAAxB+wF,EAAaC,QAAiB,CAQrC,GAPAhxF,EAAU,kBACVA,GAAW,wCACP7O,KAAK4/C,UAAUlD,QAAQQ,UAAUC,cAAgBn9C,KAAK8/F,gBAAgBpjD,QAAQQ,UAAUC,cAAgBuiD,EAAgB13F,KAAK,iBAAmBhI,KAAK4/C,UAAUlD,QAAQQ,UAAUC,cACjLn9C,KAAK4/C,UAAUlD,QAAQI,gBAAkB98C,KAAK8/F,gBAAgBpjD,QAAQQ,UAAUJ,gBAAwB4iD,EAAgB13F,KAAK,mBAAqBhI,KAAK4/C,UAAUlD,QAAQI,gBACzK98C,KAAK4/C,UAAUlD,QAAQK,cAAgB/8C,KAAK8/F,gBAAgBpjD,QAAQQ,UAAUH,cAA0B2iD,EAAgB13F,KAAK,iBAAmBhI,KAAK4/C,UAAUlD,QAAQK,cACvK/8C,KAAK4/C,UAAUlD,QAAQM,gBAAkBh9C,KAAK8/F,gBAAgBpjD,QAAQQ,UAAUF,gBAAwB0iD,EAAgB13F,KAAK,mBAAqBhI,KAAK4/C,UAAUlD,QAAQM,gBACzKh9C,KAAK4/C,UAAUlD,QAAQO,SAAWj9C,KAAK8/F,gBAAgBpjD,QAAQQ,UAAUD,SAA+ByiD,EAAgB13F,KAAK,YAAchI,KAAK4/C,UAAUlD,QAAQO,SACxI,GAA1ByiD,EAAgBl6F,OAAa,CAC/BqJ,GAAW,gBACX,KAAK,GAAIxJ,GAAI,EAAGA,EAAIq6F,EAAgBl6F,OAAQH,IAC1CwJ,GAAW6wF,EAAgBr6F,GACvBA,EAAIq6F,EAAgBl6F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,KAEiB,GAA1B6wF,EAAgBl6F,SAAcqJ,GAAW,KACzC7O,KAAK4/C,UAAUZ,cAAgBh/C,KAAK8/F,gBAAgB9gD,eACtDnwC,GAAW,mBAAqB7O,KAAK4/C,UAAUZ,cAEjDnwC,GAAW,SAER,CAOH,GANAA,EAAU,kBACN7O,KAAK4/C,UAAUlD,QAAQU,sBAAsBD,cAAgBn9C,KAAK8/F,gBAAgBpjD,QAAQU,sBAAsBD,cAAgBuiD,EAAgB13F,KAAK,iBAAmBhI,KAAK4/C,UAAUlD,QAAQU,sBAAsBD,cACrNn9C,KAAK4/C,UAAUlD,QAAQI,gBAAkB98C,KAAK8/F,gBAAgBpjD,QAAQU,sBAAsBN,gBAAwB4iD,EAAgB13F,KAAK,mBAAqBhI,KAAK4/C,UAAUlD,QAAQI,gBACrL98C,KAAK4/C,UAAUlD,QAAQK,cAAgB/8C,KAAK8/F,gBAAgBpjD,QAAQU,sBAAsBL,cAA0B2iD,EAAgB13F,KAAK,iBAAmBhI,KAAK4/C,UAAUlD,QAAQK,cACnL/8C,KAAK4/C,UAAUlD,QAAQM,gBAAkBh9C,KAAK8/F,gBAAgBpjD,QAAQU,sBAAsBJ,gBAAwB0iD,EAAgB13F,KAAK,mBAAqBhI,KAAK4/C,UAAUlD,QAAQM,gBACrLh9C,KAAK4/C,UAAUlD,QAAQO,SAAWj9C,KAAK8/F,gBAAgBpjD,QAAQU,sBAAsBH,SAA+ByiD,EAAgB13F,KAAK,YAAchI,KAAK4/C,UAAUlD,QAAQO,SACpJ,GAA1ByiD,EAAgBl6F,OAAa,CAC/BqJ,GAAW,oCACX,KAAK,GAAIxJ,GAAI,EAAGA,EAAIq6F,EAAgBl6F,OAAQH,IAC1CwJ,GAAW6wF,EAAgBr6F,GACvBA,EAAIq6F,EAAgBl6F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,MAOb,GALAA,GAAW,wBACX6wF,KACI1/F,KAAK4/C,UAAUjB,mBAAmB9jB,WAAa76B,KAAK8/F,gBAAgBnhD,mBAAmB9jB,WAAkC6kE,EAAgB13F,KAAK,cAAgBhI,KAAK4/C,UAAUjB,mBAAmB9jB,WAChM91B,KAAKklB,IAAIjqB,KAAK4/C,UAAUjB,mBAAmBC,kBAAoB5+C,KAAK8/F,gBAAgBnhD,mBAAmBC,iBAAkB8gD,EAAgB13F,KAAK,oBAAsBhI,KAAK4/C,UAAUjB,mBAAmBC,iBACtM5+C,KAAK4/C,UAAUjB,mBAAmBE,aAAe7+C,KAAK8/F,gBAAgBnhD,mBAAmBE,aAAgC6gD,EAAgB13F,KAAK,gBAAkBhI,KAAK4/C,UAAUjB,mBAAmBE,aACxK,GAA1B6gD,EAAgBl6F,OAAa,CAC/B,IAAK,GAAIH,GAAI,EAAGA,EAAIq6F,EAAgBl6F,OAAQH,IAC1CwJ,GAAW6wF,EAAgBr6F,GACvBA,EAAIq6F,EAAgBl6F,OAAS,IAC/BqJ,GAAW,KAGfA,IAAW,QAGXA,IAAW,eAEbA,IAAW,KAIb7O,KAAK+/F,WAAW18E,UAAYxU,EAO9B,QAASmxF,KACP,GAAIvqF,IAAO,iBAAkB,gBAAiB,iBAC1CwqF,EAAcjuF,SAASkuF,cAAc,6CAA6Ch5F,MAClFi5F,EAAU,SAAWF,EAAc,SACnCG,EAAQpuF,SAAS8iF,eAAeqL,EACpCC,GAAM9yF,MAAMi5B,QAAU,OACtB,KAAK,GAAIlhC,GAAI,EAAGA,EAAIoQ,EAAIjQ,OAAQH,IAC1BoQ,EAAIpQ,IAAM86F,IACZC,EAAQpuF,SAAS8iF,eAAer/E,EAAIpQ,IACpC+6F,EAAM9yF,MAAMi5B,QAAU,OAG1BvmC,MAAKq4F,gBACc,KAAf4H,GACFjgG,KAAK4/C,UAAUjB,mBAAmB7vC,SAAU,EAC5C9O,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,SAAU,EACvD9O,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SAAU,GAErB,KAAfmxF,EAC0C,GAA7CjgG,KAAK4/C,UAAUjB,mBAAmB7vC,UACpC9O,KAAK4/C,UAAUjB,mBAAmB7vC,SAAU,EAC5C9O,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,SAAU,EACvD9O,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SAAU,EAC3C9O,KAAK4/C,UAAUZ,aAAalwC,SAAU,EACtC9O,KAAK+iD,6BAIP/iD,KAAK4/C,UAAUjB,mBAAmB7vC,SAAU,EAC5C9O,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,SAAU,EACvD9O,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SAAU,GAE7C9O,KAAKulE,0BACL,IAAI+5B,GAAqBttF,SAAS8iF,eAAe,qBACCwK,GAAmBhyF,MAAM1B,WAAhC,GAAvC5L,KAAK4/C,UAAUZ,aAAalwC,QAAwD,UACR,UAChF9O,KAAK6iD,QAAS,EACd7iD,KAAK6P,QAWP,QAAS2vF,GAAkBn/F,EAAGqN,EAAI2yF,GAChC,GAAIC,GAAUjgG,EAAK,SACfkgG,EAAavuF,SAAS8iF,eAAez0F,GAAI6G,KAEzCpB,OAAMC,QAAQ2H,IAChBsE,SAAS8iF,eAAewL,GAASp5F,MAAQwG,EAAIwc,SAASq2E,IACtDvgG,KAAKwgG,yBAAyBH,EAAsB3yF,EAAIwc,SAASq2E,OAGjEvuF,SAAS8iF,eAAewL,GAASp5F,MAAQgjB,SAASxc,GAAO+W,WAAW87E,GACpEvgG,KAAKwgG,yBAAyBH,EAAuBn2E,SAASxc,GAAO+W,WAAW87E,MAGrD,gCAAzBF,GACuB,sCAAzBA,GACyB,kCAAzBA,IACArgG,KAAK+iD,2BAEP/iD,KAAK6iD,QAAS,EACd7iD,KAAK6P,QAlsBP,GAAIlP,GAAOT,EAAoB,GAC3BugG,EAAiBvgG,EAAoB,IACrCwgG,EAA4BxgG,EAAoB,IAChDygG,EAAiBzgG,EAAoB,GAOzCN,GAAQghG,iBAAmB,WACzB5gG,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SAAW9O,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,QAC7E9O,KAAKulE,2BACLvlE,KAAK6iD,QAAS,EACd7iD,KAAK6P,SASPjQ,EAAQ2lE,yBAA2B,WAEe,GAA5CvlE,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,SACnC9O,KAAKslE,YAAYm7B,GACjBzgG,KAAKslE,YAAYo7B,GAEjB1gG,KAAK4/C,UAAUlD,QAAQI,eAAiB98C,KAAK4/C,UAAUlD,QAAQC,UAAUG,eACzE98C,KAAK4/C,UAAUlD,QAAQK,aAAe/8C,KAAK4/C,UAAUlD,QAAQC,UAAUI,aACvE/8C,KAAK4/C,UAAUlD,QAAQM,eAAiBh9C,KAAK4/C,UAAUlD,QAAQC,UAAUK,eACzEh9C,KAAK4/C,UAAUlD,QAAQO,QAAUj9C,KAAK4/C,UAAUlD,QAAQC,UAAUM,QAElEj9C,KAAKmlE,WAAWw7B,IAE+C,GAAxD3gG,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,SACpD9O,KAAKslE,YAAYq7B,GACjB3gG,KAAKslE,YAAYm7B,GAEjBzgG,KAAK4/C,UAAUlD,QAAQI,eAAiB98C,KAAK4/C,UAAUlD,QAAQU,sBAAsBN,eACrF98C,KAAK4/C,UAAUlD,QAAQK,aAAe/8C,KAAK4/C,UAAUlD,QAAQU,sBAAsBL,aACnF/8C,KAAK4/C,UAAUlD,QAAQM,eAAiBh9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBJ,eACrFh9C,KAAK4/C,UAAUlD,QAAQO,QAAUj9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBH,QAE9Ej9C,KAAKmlE,WAAWu7B,KAGhB1gG,KAAKslE,YAAYq7B,GACjB3gG,KAAKslE,YAAYo7B,GACjB1gG,KAAK6gG,cAAgBx6F,OAErBrG,KAAK4/C,UAAUlD,QAAQI,eAAiB98C,KAAK4/C,UAAUlD,QAAQQ,UAAUJ,eACzE98C,KAAK4/C,UAAUlD,QAAQK,aAAe/8C,KAAK4/C,UAAUlD,QAAQQ,UAAUH,aACvE/8C,KAAK4/C,UAAUlD,QAAQM,eAAiBh9C,KAAK4/C,UAAUlD,QAAQQ,UAAUF,eACzEh9C,KAAK4/C,UAAUlD,QAAQO,QAAUj9C,KAAK4/C,UAAUlD,QAAQQ,UAAUD,QAElEj9C,KAAKmlE,WAAWs7B,KAUpB7gG,EAAQkhG,4BAA8B,WAEL,GAA3B9gG,KAAK6hD,YAAYr8C,OACnBxF,KAAKo7C,MAAMp7C,KAAK6hD,YAAY,IAAI6X,UAAU,EAAG,IAIzC15D,KAAK6hD,YAAYr8C,OAASxF,KAAK4/C,UAAUvC,WAAWE,kBAAyD,GAArCv9C,KAAK4/C,UAAUvC,WAAWvuC,SACpG9O,KAAK2rF,aAAa3rF,KAAK4/C,UAAUvC,WAAWG,eAAe,GAI7Dx9C,KAAK+gG,qBAUTnhG,EAAQmhG,iBAAmB,WAKzB/gG,KAAKghG,gCACLhhG,KAAKihG,uBAEDjhG,KAAK4/C,UAAUlD,QAAQM,eAAiB,IACC,GAAvCh9C,KAAK4/C,UAAUZ,aAAalwC,SAA0D,GAAvC9O,KAAK4/C,UAAUZ,aAAaC,QAC7Ej/C,KAAKkhG,oCAGuD,GAAxDlhG,KAAK4/C,UAAUlD,QAAQU,sBAAsBtuC,QAC/C9O,KAAKmhG,qCAGLnhG,KAAKohG,2BAebxhG,EAAQqrD,wBAA0B,WAChC,GAA2C,GAAvCjrD,KAAK4/C,UAAUZ,aAAalwC,SAA0D,GAAvC9O,KAAK4/C,UAAUZ,aAAaC,QAAiB,CAC9Fj/C,KAAK2hD,oBACL3hD,KAAK4hD,yBAEL,KAAK,GAAImC,KAAU/jD,MAAKo7C,MAClBp7C,KAAKo7C,MAAMz1C,eAAeo+C,KAC5B/jD,KAAK2hD,iBAAiBoC,GAAU/jD,KAAKo7C,MAAM2I,GAG/C,IAAIqyC,GAAep2F,KAAK8rD,QAAiB,QAAS,KAClD,KAAK,GAAIu1C,KAAiBjL,GACpBA,EAAazwF,eAAe07F,KAC1BrhG,KAAKi8C,MAAMt2C,eAAeywF,EAAaiL,GAAetyC,cACxD/uD,KAAK2hD,iBAAiB0/C,GAAiBjL,EAAaiL,GAGpDjL,EAAaiL,GAAe3nC,UAAU,EAAG,GAK/C,KAAK,GAAI7U,KAAO7kD,MAAK2hD,iBACf3hD,KAAK2hD,iBAAiBh8C,eAAek/C,IACvC7kD,KAAK4hD,uBAAuB55C,KAAK68C,OAKrC7kD,MAAK2hD,iBAAmB3hD,KAAKo7C,MAC7Bp7C,KAAK4hD,uBAAyB5hD,KAAK6hD,aAUvCjiD,EAAQohG,8BAAgC,WACtC,GAAIhjF,GAAIC,EAAI8G,EAAU2+B,EAAMr+C,EACxB+1C,EAAQp7C,KAAK2hD,iBACb2/C,EAAUthG,KAAK4/C,UAAUlD,QAAQI,eACjCykD,EAAe,CAEnB,KAAKl8F,EAAI,EAAGA,EAAIrF,KAAK4hD,uBAAuBp8C,OAAQH,IAClDq+C,EAAOtI,EAAMp7C,KAAK4hD,uBAAuBv8C,IACzCq+C,EAAKzG,QAAUj9C,KAAK4/C,UAAUlD,QAAQO,QAEhB,WAAlBj9C,KAAKssF,WAAqC,GAAXgV,GACjCtjF,GAAM0lC,EAAKlxC,EACXyL,GAAMylC,EAAKjxC,EACXsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpCsjF,EAA4B,GAAZx8E,EAAiB,EAAKu8E,EAAUv8E,EAChD2+B,EAAKsT,GAAKh5C,EAAKujF,EACf79C,EAAKuT,GAAKh5C,EAAKsjF,IAGf79C,EAAKsT,GAAK,EACVtT,EAAKuT,GAAK,IAahBr3D,EAAQwhG,uBAAyB,WAC/B,GAAII,GAAYl3C,EAAMP,EAClB/rC,EAAIC,EAAI+4C,EAAIC,EAAIwqC,EAAa18E,EAC7Bk3B,EAAQj8C,KAAKi8C,KAGjB,KAAK8N,IAAU9N,GACTA,EAAMt2C,eAAeokD,KACvBO,EAAOrO,EAAM8N,GACTO,EAAKC,WAEHvqD,KAAKo7C,MAAMz1C,eAAe2kD,EAAKmG,OAASzwD,KAAKo7C,MAAMz1C,eAAe2kD,EAAKkG,UACzEgxC,EAAal3C,EAAK5N,QAAQK,aAE1BykD,IAAel3C,EAAK7hC,GAAGovC,YAAcvN,EAAK9hC,KAAKqvC,YAAc,GAAK73D,KAAK4/C,UAAUvC,WAAWY,WAE5FjgC,EAAMssC,EAAK9hC,KAAKhW,EAAI83C,EAAK7hC,GAAGjW,EAC5ByL,EAAMqsC,EAAK9hC,KAAK/V,EAAI63C,EAAK7hC,GAAGhW,EAC5BsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIb08E,EAAczhG,KAAK4/C,UAAUlD,QAAQM,gBAAkBwkD,EAAaz8E,GAAYA,EAEhFiyC,EAAKh5C,EAAKyjF,EACVxqC,EAAKh5C,EAAKwjF,EAEVn3C,EAAK9hC,KAAKwuC,IAAMA,EAChB1M,EAAK9hC,KAAKyuC,IAAMA,EAChB3M,EAAK7hC,GAAGuuC,IAAMA,EACd1M,EAAK7hC,GAAGwuC,IAAMA;EAexBr3D,EAAQshG,kCAAoC,WAC1C,GAAIM,GAAYl3C,EAAMP,EAAQ23C,EAC1BzlD,EAAQj8C,KAAKi8C,KAGjB,KAAK8N,IAAU9N,GACb,GAAIA,EAAMt2C,eAAeokD,KACvBO,EAAOrO,EAAM8N,GACTO,EAAKC,WAEHvqD,KAAKo7C,MAAMz1C,eAAe2kD,EAAKmG,OAASzwD,KAAKo7C,MAAMz1C,eAAe2kD,EAAKkG,SACzD,MAAZlG,EAAKuB,KAAa,CACpB,GAAI81C,GAAQr3C,EAAK7hC,GACbm5E,EAAQt3C,EAAKuB,IACbg2C,EAAQv3C,EAAK9hC,IAEjBg5E,GAAal3C,EAAK5N,QAAQK,aAE1B2kD,EAAsBC,EAAM9pC,YAAcgqC,EAAMhqC,YAAc,EAG9D2pC,GAAcE,EAAsB1hG,KAAK4/C,UAAUvC,WAAWY,WAC9Dj+C,KAAK8hG,sBAAsBH,EAAOC,EAAO,GAAMJ,GAC/CxhG,KAAK8hG,sBAAsBF,EAAOC,EAAO,GAAML,KAiB3D5hG,EAAQkiG,sBAAwB,SAAUH,EAAOC,EAAOJ,GACtD,GAAIxjF,GAAIC,EAAI+4C,EAAIC,EAAIwqC,EAAa18E,CAEjC/G,GAAM2jF,EAAMnvF,EAAIovF,EAAMpvF,EACtByL,EAAM0jF,EAAMlvF,EAAImvF,EAAMnvF,EACtBsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIb08E,EAAczhG,KAAK4/C,UAAUlD,QAAQM,gBAAkBwkD,EAAaz8E,GAAYA,EAEhFiyC,EAAKh5C,EAAKyjF,EACVxqC,EAAKh5C,EAAKwjF,EAEVE,EAAM3qC,IAAMA,EACZ2qC,EAAM1qC,IAAMA,EACZ2qC,EAAM5qC,IAAMA,EACZ4qC,EAAM3qC,IAAMA,GAQdr3D,EAAQ4lE,0BAA4B,WAClC,GAAkCn/D,SAA9BrG,KAAK+hG,qBAAoC,CAC3C/hG,KAAK8/F,mBACLn/F,EAAK2F,WAAWtG,KAAK8/F,gBAAgB9/F,KAAK4/C,UAE1C,IAAIoiD,IAAgC,KAAM,KAAM,KAAM,KACtDhiG,MAAK+hG,qBAAuB/vF,SAASM,cAAc,OACnDtS,KAAK+hG,qBAAqBl6F,UAAY,uBACtC7H,KAAK+hG,qBAAqB1+E,UAAY,onBAW2E,GAAKrjB,KAAK4/C,UAAUlD,QAAQC,UAAUE,sBAAyB,wGAA2G,GAAK78C,KAAK4/C,UAAUlD,QAAQC,UAAUE,sBAAyB,4JAGpP78C,KAAK4/C,UAAUlD,QAAQC,UAAUG,eAAiB,wFAA0F98C,KAAK4/C,UAAUlD,QAAQC,UAAUG,eAAiB,2JAG/L98C,KAAK4/C,UAAUlD,QAAQC,UAAUI,aAAe,sFAAwF/8C,KAAK4/C,UAAUlD,QAAQC,UAAUI,aAAe,6JAGtL/8C,KAAK4/C,UAAUlD,QAAQC,UAAUK,eAAiB,0FAA4Fh9C,KAAK4/C,UAAUlD,QAAQC,UAAUK,eAAiB,sJAGvMh9C,KAAK4/C,UAAUlD,QAAQC,UAAUM,QAAU,4FAA8Fj9C,KAAK4/C,UAAUlD,QAAQC,UAAUM,QAAU,sPAM/Kj9C,KAAK4/C,UAAUlD,QAAQQ,UAAUC,aAAe,kGAAoGn9C,KAAK4/C,UAAUlD,QAAQQ,UAAUC,aAAe,2JAGnMn9C,KAAK4/C,UAAUlD,QAAQQ,UAAUJ,eAAiB,uFAAyF98C,KAAK4/C,UAAUlD,QAAQQ,UAAUJ,eAAiB,0JAG9L98C,KAAK4/C,UAAUlD,QAAQQ,UAAUH,aAAe,qFAAuF/8C,KAAK4/C,UAAUlD,QAAQQ,UAAUH,aAAe,4JAGrL/8C,KAAK4/C,UAAUlD,QAAQQ,UAAUF,eAAiB,yFAA2Fh9C,KAAK4/C,UAAUlD,QAAQQ,UAAUF,eAAiB,qJAGtMh9C,KAAK4/C,UAAUlD,QAAQQ,UAAUD,QAAU,2FAA6Fj9C,KAAK4/C,UAAUlD,QAAQQ,UAAUD,QAAU,oQAM9Kj9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBD,aAAe,kGAAoGn9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBD,aAAe,2JAG3Nn9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBN,eAAiB,uFAAyF98C,KAAK4/C,UAAUlD,QAAQU,sBAAsBN,eAAiB,0JAGtN98C,KAAK4/C,UAAUlD,QAAQU,sBAAsBL,aAAe,qFAAuF/8C,KAAK4/C,UAAUlD,QAAQU,sBAAsBL,aAAe,4JAG7M/8C,KAAK4/C,UAAUlD,QAAQU,sBAAsBJ,eAAiB,yFAA2Fh9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBJ,eAAiB,qJAG9Nh9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBH,QAAU,2FAA6Fj9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBH,QAAU,uJAG3M+kD,EAA6Bx7F,QAAQxG,KAAK4/C,UAAUjB,mBAAmB9jB,WAAa,0FAA4F76B,KAAK4/C,UAAUjB,mBAAmB9jB,UAAY,oKAGtN76B,KAAK4/C,UAAUjB,mBAAmBC,gBAAkB,yFAA2F5+C,KAAK4/C,UAAUjB,mBAAmBC,gBAAkB,6JAGvM5+C,KAAK4/C,UAAUjB,mBAAmBE,YAAc,wFAA0F7+C,KAAK4/C,UAAUjB,mBAAmBE,YAAc,odAU9R7+C,KAAKiZ,iBAAiBgpF,cAAc5vF,aAAarS,KAAK+hG,qBAAsB/hG,KAAKiZ,kBACjFjZ,KAAK+/F,WAAa/tF,SAASM,cAAc,OACzCtS,KAAK+/F,WAAWzyF,MAAMquC,SAAW,OACjC37C,KAAK+/F,WAAWzyF,MAAM+tD,WAAa,UACnCr7D,KAAKiZ,iBAAiBgpF,cAAc5vF,aAAarS,KAAK+/F,WAAY//F,KAAKiZ,iBAEvE,IAAIipF,EACJA,GAAelwF,SAAS8iF,eAAe,eACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,cAAe,GAAI,2CACvEkiG,EAAelwF,SAAS8iF,eAAe,eACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,cAAe,EAAG,0BACtEkiG,EAAelwF,SAAS8iF,eAAe,eACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,cAAe,EAAG,0BACtEkiG,EAAelwF,SAAS8iF,eAAe,eACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,cAAe,EAAG,wBACtEkiG,EAAelwF,SAAS8iF,eAAe,iBACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,gBAAiB,EAAG,mBAExEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,kCACrEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,0BACrEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,0BACrEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,wBACrEkiG,EAAelwF,SAAS8iF,eAAe,gBACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,eAAgB,EAAG,mBAEvEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,8CACrEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,0BACrEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,0BACrEkiG,EAAelwF,SAAS8iF,eAAe,cACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,aAAc,EAAG,wBACrEkiG,EAAelwF,SAAS8iF,eAAe,gBACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,eAAgB,EAAG,mBACvEkiG,EAAelwF,SAAS8iF,eAAe,qBACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,oBAAqBgiG,EAA8B,gCACvGE,EAAelwF,SAAS8iF,eAAe,kBACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,iBAAkB,EAAG,sCACzEkiG,EAAelwF,SAAS8iF,eAAe,iBACvCoN,EAAaj6E,SAAWu3E,EAAiB/qE,KAAKz0B,KAAM,gBAAiB,EAAG,iCAExE,IAAI2/F,GAAe3tF,SAAS8iF,eAAe,wBACvC8K,EAAe5tF,SAAS8iF,eAAe,wBACvCqN,EAAenwF,SAAS8iF,eAAe,uBAC3C8K,GAAaC,SAAU,EACnB7/F,KAAK4/C,UAAUlD,QAAQC,UAAU7tC,UACnC6wF,EAAaE,SAAU,GAErB7/F,KAAK4/C,UAAUjB,mBAAmB7vC,UACpCqzF,EAAatC,SAAU,EAGzB,IAAIP,GAAqBttF,SAAS8iF,eAAe,sBAC7CsN,EAAwBpwF,SAAS8iF,eAAe,yBAChDuN,EAAwBrwF,SAAS8iF,eAAe,wBAEpDwK,GAAmB1tE,QAAUytE,EAAwB5qE,KAAKz0B,MAC1DoiG,EAAsBxwE,QAAU2tE,EAAqB9qE,KAAKz0B,MAC1DqiG,EAAsBzwE,QAAU6tE,EAAqBhrE,KAAKz0B,MAExDs/F,EAAmBhyF,MAAM1B,WADQ,GAA/B5L,KAAK4/C,UAAUZ,cAA8D,GAAtCh/C,KAAK4/C,UAAUT,oBAClB,UAGA,UAIxC6gD,EAAqB1nF,MAAMtY,MAE3B2/F,EAAa13E,SAAW+3E,EAAqBvrE,KAAKz0B,MAClD4/F,EAAa33E,SAAW+3E,EAAqBvrE,KAAKz0B,MAClDmiG,EAAal6E,SAAW+3E,EAAqBvrE,KAAKz0B,QAWtDJ,EAAQ4gG,yBAA2B,SAAUH,EAAuBn5F,GAClE,GAAIo7F,GAAYjC,EAAsBt4F,MAAM,IACpB,IAApBu6F,EAAU98F,OACZxF,KAAK4/C,UAAU0iD,EAAU,IAAMp7F,EAEJ,GAApBo7F,EAAU98F,OACjBxF,KAAK4/C,UAAU0iD,EAAU,IAAIA,EAAU,IAAMp7F,EAElB,GAApBo7F,EAAU98F,SACjBxF,KAAK4/C,UAAU0iD,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAMp7F,KA2N3D,SAASrH,EAAQD,GAQrBA,EAAQqhG,qBAAuB,WAC7B,GAAIjjF,GAAIC,EAAW8G,EAAUiyC,EAAIC,EAAIyqC,EACnCa,EAAgBZ,EAAOC,EAAOv8F,EAAG4lB,EAE/BmwB,EAAQp7C,KAAK2hD,iBACbE,EAAc7hD,KAAK4hD,uBAGnB4gD,EAAS,GAAK,EACdv8F,EAAI,EAAI,EAGRk3C,EAAen9C,KAAK4/C,UAAUlD,QAAQQ,UAAUC,aAChDslD,EAAkBtlD,CAItB,KAAK93C,EAAI,EAAGA,EAAIw8C,EAAYr8C,OAAS,EAAGH,IAEtC,IADAs8F,EAAQvmD,EAAMyG,EAAYx8C,IACrB4lB,EAAI5lB,EAAI,EAAG4lB,EAAI42B,EAAYr8C,OAAQylB,IAAK,CAC3C22E,EAAQxmD,EAAMyG,EAAY52B,IAC1By2E,EAAsBC,EAAM9pC,YAAc+pC,EAAM/pC,YAAc,EAE9D75C,EAAK4jF,EAAMpvF,EAAImvF,EAAMnvF,EACrByL,EAAK2jF,EAAMnvF,EAAIkvF,EAAMlvF,EACrBsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpCwkF,EAA0C,GAAvBf,EAA4BvkD,EAAgBA,GAAgB,EAAIukD,EAAsB1hG,KAAK4/C,UAAUvC,WAAWW,sBACnI,IAAI54C,GAAIo9F,EAASC,CACF,GAAIA,EAAf19E,IAEAw9E,EADa,GAAME,EAAjB19E,EACe,EAGA3f,EAAI2f,EAAW9e,EAIlCs8F,GAA0C,GAAvBb,EAA4B,EAAI,EAAIA,EAAsB1hG,KAAK4/C,UAAUvC,WAAWU,mBACvGwkD,GAAkCx9E,EAElCiyC,EAAKh5C,EAAKukF,EACVtrC,EAAKh5C,EAAKskF,EAEVZ,EAAM3qC,IAAMA,EACZ2qC,EAAM1qC,IAAMA,EACZ2qC,EAAM5qC,IAAMA,EACZ4qC,EAAM3qC,IAAMA,MAShB,SAASp3D,EAAQD,GAQrBA,EAAQqhG,qBAAuB,WAC7B,GAAIjjF,GAAIC,EAAI8G,EAAUiyC,EAAIC,EACxBsrC,EAAgBZ,EAAOC,EAAOv8F,EAAG4lB,EAE/BmwB,EAAQp7C,KAAK2hD,iBACbE,EAAc7hD,KAAK4hD,uBAGnBzE,EAAen9C,KAAK4/C,UAAUlD,QAAQU,sBAAsBD,YAIhE,KAAK93C,EAAI,EAAGA,EAAIw8C,EAAYr8C,OAAS,EAAGH,IAEtC,IADAs8F,EAAQvmD,EAAMyG,EAAYx8C,IACrB4lB,EAAI5lB,EAAI,EAAG4lB,EAAI42B,EAAYr8C,OAAQylB,IAItC,GAHA22E,EAAQxmD,EAAMyG,EAAY52B,IAGtB02E,EAAM7lD,OAAS8lD,EAAM9lD,MAAO,CAE9B99B,EAAK4jF,EAAMpvF,EAAImvF,EAAMnvF,EACrByL,EAAK2jF,EAAMnvF,EAAIkvF,EAAMlvF,EACrBsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,EAGpC,IAAIykF,GAAY,GAEdH,GADaplD,EAAXp4B,GACgBhgB,KAAK0uB,IAAIivE,EAAU39E,EAAS,GAAKhgB,KAAK0uB,IAAIivE,EAAUvlD,EAAa,GAGlE,EAGD,GAAZp4B,EACFA,EAAW,IAGXw9E,GAAkCx9E,EAEpCiyC,EAAKh5C,EAAKukF,EACVtrC,EAAKh5C,EAAKskF,EAEVZ,EAAM3qC,IAAMA,EACZ2qC,EAAM1qC,IAAMA,EACZ2qC,EAAM5qC,IAAMA,EACZ4qC,EAAM3qC,IAAMA,IAYtBr3D,EAAQuhG,mCAAqC,WAS3C,IAAK,GARDK,GAAYl3C,EAAMP,EAClB/rC,EAAIC,EAAI+4C,EAAIC,EAAIwqC,EAAa18E,EAC7Bk3B,EAAQj8C,KAAKi8C,MAEbb,EAAQp7C,KAAK2hD,iBACbE,EAAc7hD,KAAK4hD,uBAGdv8C,EAAI,EAAGA,EAAIw8C,EAAYr8C,OAAQH,IAAK,CAC3C,GAAIs8F,GAAQvmD,EAAMyG,EAAYx8C,GAC9Bs8F,GAAMgB,SAAW,EACjBhB,EAAMiB,SAAW,EAKnB,IAAK74C,IAAU9N,GACb,GAAIA,EAAMt2C,eAAeokD,KACvBO,EAAOrO,EAAM8N,GACTO,EAAKC,WAEHvqD,KAAKo7C,MAAMz1C,eAAe2kD,EAAKmG,OAASzwD,KAAKo7C,MAAMz1C,eAAe2kD,EAAKkG,SAqBzE,GApBAgxC,EAAal3C,EAAK5N,QAAQK,aAE1BykD,IAAel3C,EAAK7hC,GAAGovC,YAAcvN,EAAK9hC,KAAKqvC,YAAc,GAAK73D,KAAK4/C,UAAUvC,WAAWY,WAE5FjgC,EAAMssC,EAAK9hC,KAAKhW,EAAI83C,EAAK7hC,GAAGjW,EAC5ByL,EAAMqsC,EAAK9hC,KAAK/V,EAAI63C,EAAK7hC,GAAGhW,EAC5BsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIb08E,EAAczhG,KAAK4/C,UAAUlD,QAAQM,gBAAkBwkD,EAAaz8E,GAAYA,EAEhFiyC,EAAKh5C,EAAKyjF,EACVxqC,EAAKh5C,EAAKwjF,EAINn3C,EAAK7hC,GAAGqzB,OAASwO,EAAK9hC,KAAKszB,MAC7BwO,EAAK7hC,GAAGk6E,UAAY3rC,EACpB1M,EAAK7hC,GAAGm6E,UAAY3rC,EACpB3M,EAAK9hC,KAAKm6E,UAAY3rC,EACtB1M,EAAK9hC,KAAKo6E,UAAY3rC,MAEnB,CACH,GAAI3S,GAAS,EACbgG,GAAK7hC,GAAGuuC,IAAM1S,EAAO0S,EACrB1M,EAAK7hC,GAAGwuC,IAAM3S,EAAO2S,EACrB3M,EAAK9hC,KAAKwuC,IAAM1S,EAAO0S,EACvB1M,EAAK9hC,KAAKyuC,IAAM3S,EAAO2S,EAQjC,GACI0rC,GAAUC,EADVnB,EAAc,CAElB,KAAKp8F,EAAI,EAAGA,EAAIw8C,EAAYr8C,OAAQH,IAAK,CACvC,GAAIq+C,GAAOtI,EAAMyG,EAAYx8C,GAC7Bs9F,GAAW59F,KAAKwG,IAAIk2F,EAAY18F,KAAKiI,KAAKy0F,EAAY/9C,EAAKi/C,WAC3DC,EAAW79F,KAAKwG,IAAIk2F,EAAY18F,KAAKiI,KAAKy0F,EAAY/9C,EAAKk/C,WAE3Dl/C,EAAKsT,IAAM2rC,EACXj/C,EAAKuT,IAAM2rC,EAIb,GAAIC,GAAU,EACVC,EAAU,CACd,KAAKz9F,EAAI,EAAGA,EAAIw8C,EAAYr8C,OAAQH,IAAK,CACvC,GAAIq+C,GAAOtI,EAAMyG,EAAYx8C,GAC7Bw9F,IAAWn/C,EAAKsT,GAChB8rC,GAAWp/C,EAAKuT,GAElB,GAAI8rC,GAAeF,EAAUhhD,EAAYr8C,OACrCw9F,EAAeF,EAAUjhD,EAAYr8C,MAEzC,KAAKH,EAAI,EAAGA,EAAIw8C,EAAYr8C,OAAQH,IAAK,CACvC,GAAIq+C,GAAOtI,EAAMyG,EAAYx8C,GAC7Bq+C,GAAKsT,IAAM+rC,EACXr/C,EAAKuT,IAAM+rC,KAOX,SAASnjG,EAAQD,GAQrBA,EAAQqhG,qBAAuB,WAC7B,GAA8D,GAA1DjhG,KAAK4/C,UAAUlD,QAAQC,UAAUE,sBAA4B,CAC/D,GAAI6G,GACAtI,EAAQp7C,KAAK2hD,iBACbE,EAAc7hD,KAAK4hD,uBACnBqhD,EAAYphD,EAAYr8C,MAE5BxF,MAAKkjG,mBAAmB9nD,EAAMyG,EAK9B,KAAK,GAHDg/C,GAAgB7gG,KAAK6gG,cAGhBx7F,EAAI,EAAO49F,EAAJ59F,EAAeA,IAC7Bq+C,EAAOtI,EAAMyG,EAAYx8C,IACrBq+C,EAAK70C,QAAQwsC,KAAO,IAEtBr7C,KAAKmjG,sBAAsBtC,EAAcnhG,KAAK0jG,SAASC,GAAG3/C,GAC1D1jD,KAAKmjG,sBAAsBtC,EAAcnhG,KAAK0jG,SAASE,GAAG5/C,GAC1D1jD,KAAKmjG,sBAAsBtC,EAAcnhG,KAAK0jG,SAASG,GAAG7/C,GAC1D1jD,KAAKmjG,sBAAsBtC,EAAcnhG,KAAK0jG,SAASI,GAAG9/C,MAelE9jD,EAAQujG,sBAAwB,SAASM,EAAa//C,GAEpD,GAAI+/C,EAAaC,cAAgB,EAAG,CAClC,GAAI1lF,GAAGC,EAAG8G,CAUV,IAPA/G,EAAKylF,EAAaE,aAAanxF,EAAIkxC,EAAKlxC,EACxCyL,EAAKwlF,EAAaE,aAAalxF,EAAIixC,EAAKjxC,EACxCsS,EAAWhgB,KAAKqqB,KAAKpR,EAAKA,EAAKC,EAAKA,GAKhC8G,EAAW0+E,EAAaG,SAAW5jG,KAAK4/C,UAAUlD,QAAQC,UAAUC,MAAO,CAE7D,GAAZ73B,IACFA,EAAW,GAAIhgB,KAAKE,SACpB+Y,EAAK+G,EAEP,IAAIw8E,GAAevhG,KAAK4/C,UAAUlD,QAAQC,UAAUE,sBAAwB4mD,EAAapoD,KAAOqI,EAAK70C,QAAQwsC,MAAQt2B,EAAWA,EAAWA,GACvIiyC,EAAKh5C,EAAKujF,EACVtqC,EAAKh5C,EAAKsjF,CACd79C,GAAKsT,IAAMA,EACXtT,EAAKuT,IAAMA,MAIX,IAAkC,GAA9BwsC,EAAaC,cACf1jG,KAAKmjG,sBAAsBM,EAAaL,SAASC,GAAG3/C,GACpD1jD,KAAKmjG,sBAAsBM,EAAaL,SAASE,GAAG5/C,GACpD1jD,KAAKmjG,sBAAsBM,EAAaL,SAASG,GAAG7/C,GACpD1jD,KAAKmjG,sBAAsBM,EAAaL,SAASI,GAAG9/C,OAGpD,IAAI+/C,EAAaL,SAASjwF,KAAK9S,IAAMqjD,EAAKrjD,GAAI,CAE5B,GAAZ0kB,IACFA,EAAW,GAAIhgB,KAAKE,SACpB+Y,EAAK+G,EAEP,IAAIw8E,GAAevhG,KAAK4/C,UAAUlD,QAAQC,UAAUE,sBAAwB4mD,EAAapoD,KAAOqI,EAAK70C,QAAQwsC,MAAQt2B,EAAWA,EAAWA,GACvIiyC,EAAKh5C,EAAKujF,EACVtqC,EAAKh5C,EAAKsjF,CACd79C,GAAKsT,IAAMA,EACXtT,EAAKuT,IAAMA,KAcrBr3D,EAAQsjG,mBAAqB,SAAS9nD,EAAMyG,GAU1C,IAAK,GATD6B,GACAu/C,EAAYphD,EAAYr8C,OAExBq+C,EAAO9/C,OAAO8/F,UAChBlgD,EAAO5/C,OAAO8/F,UACd//C,GAAO//C,OAAO8/F,UACdjgD,GAAO7/C,OAAO8/F,UAGPx+F,EAAI,EAAO49F,EAAJ59F,EAAeA,IAAK,CAClC,GAAImN,GAAI4oC,EAAMyG,EAAYx8C,IAAImN,EAC1BC,EAAI2oC,EAAMyG,EAAYx8C,IAAIoN,CAC1B2oC,GAAMyG,EAAYx8C,IAAIwJ,QAAQwsC,KAAO,IAC/BwI,EAAJrxC,IAAYqxC,EAAOrxC,GACnBA,EAAIsxC,IAAQA,EAAOtxC,GACfmxC,EAAJlxC,IAAYkxC,EAAOlxC,GACnBA,EAAImxC,IAAQA,EAAOnxC,IAI3B,GAAIqxF,GAAW/+F,KAAKklB,IAAI65B,EAAOD,GAAQ9+C,KAAKklB,IAAI25B,EAAOD,EACnDmgD,GAAW,GAAIngD,GAAQ,GAAMmgD,EAAUlgD,GAAQ,GAAMkgD,IACtCjgD,GAAQ,GAAMigD,EAAUhgD,GAAQ,GAAMggD,EAGzD,IAAIC,GAAkB,KAClBC,EAAWj/F,KAAKiI,IAAI+2F,EAAgBh/F,KAAKklB,IAAI65B,EAAOD,IACpDogD,EAAe,GAAMD,EACrBE,EAAU,IAAOrgD,EAAOC,GAAOqgD,EAAU,IAAOxgD,EAAOC,GAGvDi9C,GACFnhG,MACEikG,cAAenxF,EAAE,EAAGC,EAAE,GACtB4oC,KAAK,EACLpsC,OACE40C,KAAMqgD,EAAQD,EAAangD,KAAKogD,EAAQD,EACxCtgD,KAAMwgD,EAAQF,EAAargD,KAAKugD,EAAQF,GAE1CnxF,KAAMkxF,EACNJ,SAAU,EAAII,EACdZ,UAAYjwF,KAAK,MACjBqoD,SAAU,EACV1f,MAAO,EACP4nD,cAAe,GAMnB,KAHA1jG,KAAKokG,aAAavD,EAAcnhG,MAG3B2F,EAAI,EAAO49F,EAAJ59F,EAAeA,IACzBq+C,EAAOtI,EAAMyG,EAAYx8C,IACrBq+C,EAAK70C,QAAQwsC,KAAO,GACtBr7C,KAAKqkG,aAAaxD,EAAcnhG,KAAKgkD,EAKzC1jD,MAAK6gG,cAAgBA,GAWvBjhG,EAAQ0kG,kBAAoB,SAASb,EAAc//C,GACjD,GAAI6gD,GAAYd,EAAapoD,KAAOqI,EAAK70C,QAAQwsC,KAC7CmpD,EAAe,EAAED,CAErBd,GAAaE,aAAanxF,EAAIixF,EAAaE,aAAanxF,EAAIixF,EAAapoD,KAAOqI,EAAKlxC,EAAIkxC,EAAK70C,QAAQwsC,KACtGooD,EAAaE,aAAanxF,GAAKgyF,EAE/Bf,EAAaE,aAAalxF,EAAIgxF,EAAaE,aAAalxF,EAAIgxF,EAAapoD,KAAOqI,EAAKjxC,EAAIixC,EAAK70C,QAAQwsC,KACtGooD,EAAaE,aAAalxF,GAAK+xF,EAE/Bf,EAAapoD,KAAOkpD,CACpB,IAAIE,GAAc1/F,KAAKiI,IAAIjI,KAAKiI,IAAI02C,EAAKzwC,OAAOywC,EAAK54B,QAAQ44B,EAAK1wC,MAClEywF,GAAajoC,SAAYioC,EAAajoC,SAAWipC,EAAeA,EAAchB,EAAajoC,UAa7F57D,EAAQykG,aAAe,SAASZ,EAAa//C,EAAKghD,IAC1B,GAAlBA,GAA6Cr+F,SAAnBq+F,IAE5B1kG,KAAKskG,kBAAkBb,EAAa//C,GAGlC+/C,EAAaL,SAASC,GAAGp0F,MAAM60C,KAAOJ,EAAKlxC,EACzCixF,EAAaL,SAASC,GAAGp0F,MAAM20C,KAAOF,EAAKjxC,EAC7CzS,KAAK2kG,eAAelB,EAAa//C,EAAK,MAGtC1jD,KAAK2kG,eAAelB,EAAa//C,EAAK,MAIpC+/C,EAAaL,SAASC,GAAGp0F,MAAM20C,KAAOF,EAAKjxC,EAC7CzS,KAAK2kG,eAAelB,EAAa//C,EAAK,MAGtC1jD,KAAK2kG,eAAelB,EAAa//C,EAAK,OAc5C9jD,EAAQ+kG,eAAiB,SAASlB,EAAa//C,EAAKkhD,GAClD,OAAQnB,EAAaL,SAASwB,GAAQlB,eACpC,IAAK,GACHD,EAAaL,SAASwB,GAAQxB,SAASjwF,KAAOuwC,EAC9C+/C,EAAaL,SAASwB,GAAQlB,cAAgB,EAC9C1jG,KAAKskG,kBAAkBb,EAAaL,SAASwB,GAAQlhD,EACrD,MACF,KAAK,GAGC+/C,EAAaL,SAASwB,GAAQxB,SAASjwF,KAAKX,GAAKkxC,EAAKlxC,GACtDixF,EAAaL,SAASwB,GAAQxB,SAASjwF,KAAKV,GAAKixC,EAAKjxC,GACxDixC,EAAKlxC,GAAKzN,KAAKE,SACfy+C,EAAKjxC,GAAK1N,KAAKE,WAGfjF,KAAKokG,aAAaX,EAAaL,SAASwB,IACxC5kG,KAAKqkG,aAAaZ,EAAaL,SAASwB,GAAQlhD,GAElD,MACF,KAAK,GACH1jD,KAAKqkG,aAAaZ,EAAaL,SAASwB,GAAQlhD,KAatD9jD,EAAQwkG,aAAe,SAASX,GAE9B,GAAIoB,GAAgB,IACc,IAA9BpB,EAAaC,gBACfmB,EAAgBpB,EAAaL,SAASjwF,KACtCswF,EAAapoD,KAAO,EAAGooD,EAAaE,aAAanxF,EAAI,EAAGixF,EAAaE,aAAalxF,EAAI,GAExFgxF,EAAaC,cAAgB,EAC7BD,EAAaL,SAASjwF,KAAO,KAC7BnT,KAAK8kG,cAAcrB,EAAa,MAChCzjG,KAAK8kG,cAAcrB,EAAa,MAChCzjG,KAAK8kG,cAAcrB,EAAa,MAChCzjG,KAAK8kG,cAAcrB,EAAa,MAEX,MAAjBoB,GACF7kG,KAAKqkG,aAAaZ,EAAaoB,IAenCjlG,EAAQklG,cAAgB,SAASrB,EAAcmB,GAC7C,GAAI/gD,GAAKC,EAAKH,EAAKC,EACfmhD,EAAY,GAAMtB,EAAa3wF,IACnC,QAAQ8xF,GACN,IAAK,KACH/gD,EAAO4/C,EAAax0F,MAAM40C,KAC1BC,EAAO2/C,EAAax0F,MAAM40C,KAAOkhD,EACjCphD,EAAO8/C,EAAax0F,MAAM00C,KAC1BC,EAAO6/C,EAAax0F,MAAM00C,KAAOohD,CACjC,MACF,KAAK,KACHlhD,EAAO4/C,EAAax0F,MAAM40C,KAAOkhD,EACjCjhD,EAAO2/C,EAAax0F,MAAM60C,KAC1BH,EAAO8/C,EAAax0F,MAAM00C,KAC1BC,EAAO6/C,EAAax0F,MAAM00C,KAAOohD,CACjC,MACF,KAAK,KACHlhD,EAAO4/C,EAAax0F,MAAM40C,KAC1BC,EAAO2/C,EAAax0F,MAAM40C,KAAOkhD,EACjCphD,EAAO8/C,EAAax0F,MAAM00C,KAAOohD,EACjCnhD,EAAO6/C,EAAax0F,MAAM20C,IAC1B,MACF,KAAK,KACHC,EAAO4/C,EAAax0F,MAAM40C,KAAOkhD,EACjCjhD,EAAO2/C,EAAax0F,MAAM60C,KAC1BH,EAAO8/C,EAAax0F,MAAM00C,KAAOohD,EACjCnhD,EAAO6/C,EAAax0F,MAAM20C,KAK9B6/C,EAAaL,SAASwB,IACpBjB,cAAcnxF,EAAE,EAAEC,EAAE,GACpB4oC,KAAK,EACLpsC,OAAO40C,KAAKA,EAAKC,KAAKA,EAAKH,KAAKA,EAAKC,KAAKA,GAC1C9wC,KAAM,GAAM2wF,EAAa3wF,KACzB8wF,SAAU,EAAIH,EAAaG,SAC3BR,UAAWjwF,KAAK,MAChBqoD,SAAU,EACV1f,MAAO2nD,EAAa3nD,MAAM,EAC1B4nD,cAAe,IAYnB9jG,EAAQolG,UAAY,SAAS7+E,EAAIxb,GACJtE,SAAvBrG,KAAK6gG,gBAEP16E,EAAIO,UAAY,EAEhB1mB,KAAKilG,YAAYjlG,KAAK6gG,cAAcnhG,KAAKymB,EAAIxb,KAajD/K,EAAQqlG,YAAc,SAASC,EAAO/+E,EAAIxb,GAC1BtE,SAAVsE,IACFA,EAAQ,WAGkB,GAAxBu6F,EAAOxB,gBACT1jG,KAAKilG,YAAYC,EAAO9B,SAASC,GAAGl9E,GACpCnmB,KAAKilG,YAAYC,EAAO9B,SAASE,GAAGn9E,GACpCnmB,KAAKilG,YAAYC,EAAO9B,SAASI,GAAGr9E,GACpCnmB,KAAKilG,YAAYC,EAAO9B,SAASG,GAAGp9E,IAEtCA,EAAIY,YAAcpc,EAClBwb,EAAIa,YACJb,EAAIc,OAAOi+E,EAAOj2F,MAAM40C,KAAKqhD,EAAOj2F,MAAM00C,MAC1Cx9B,EAAIe,OAAOg+E,EAAOj2F,MAAM60C,KAAKohD,EAAOj2F,MAAM00C,MAC1Cx9B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOi+E,EAAOj2F,MAAM60C,KAAKohD,EAAOj2F,MAAM00C,MAC1Cx9B,EAAIe,OAAOg+E,EAAOj2F,MAAM60C,KAAKohD,EAAOj2F,MAAM20C,MAC1Cz9B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOi+E,EAAOj2F,MAAM60C,KAAKohD,EAAOj2F,MAAM20C,MAC1Cz9B,EAAIe,OAAOg+E,EAAOj2F,MAAM40C,KAAKqhD,EAAOj2F,MAAM20C,MAC1Cz9B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOi+E,EAAOj2F,MAAM40C,KAAKqhD,EAAOj2F,MAAM20C,MAC1Cz9B,EAAIe,OAAOg+E,EAAOj2F,MAAM40C,KAAKqhD,EAAOj2F,MAAM00C,MAC1Cx9B,EAAIlH,WAaF,SAASpf,GAEb,QAASslG,GAAeC,GACvB,KAAM,IAAI1hG,OAAM,uBAAyB0hG,EAAM,MAEhDD,EAAeE,QAAUF,EACzBA,EAAe13F,KAAO,WAAa,UACnC5N,EAAOD,QAAUulG,GAKb,SAAStlG,GAEbA,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAOylG,kBACVzlG,EAAOwoE,UAAY,aACnBxoE,EAAO0lG,SAEP1lG,EAAOujG,YACPvjG,EAAOylG,gBAAkB,GAEnBzlG"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index d305079e..1c827cd1 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.5.0 - * @date 2014-10-06 + * @date 2014-10-10 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -24,15 +24,15 @@ */ !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.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DateUtil:i(14),DataStep:i(15),Range:i(16),stack:i(17),TimeStep:i(18),components:{items:{Item:i(29),BackgroundItem:i(30),BoxItem:i(31),PointItem:i(32),RangeItem:i(33)},Component:i(19),CurrentTime:i(20),CustomTime:i(21),DataAxis:i(22),GraphGroup:i(23),Group:i(24),ItemSet:i(25),Legend:i(26),LineGraph:i(27),TimeAxis:i(28)}},e.Network=i(34),e.network={Edge:i(35),Groups:i(36),Images:i(37),Node:i(38),Popup:i(39),dotparser:i(40),gephiParser:i(41)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(42),e.hammer=i(43)},function(module,exports,__webpack_require__){var moment=__webpack_require__(42);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.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},exports.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},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){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(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.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},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.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)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.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)},exports.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)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.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},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t)){if(exports.isValidRGB(t)){var i=t.substr(4).substr(0,t.length-5).split(",");t=exports.RGBToHex(i[0],i[1],i[2])}if(exports.isValidHex(t)){var s=exports.hexToHSV(t),o={h:s.h,s:.45*s.s,v:Math.min(1,1.05*s.v)},n={h:s.h,s:Math.min(1,1.25*s.v),v:.6*s.v},r=exports.HSVToHex(n.h,n.h,n.v),a=exports.HSVToHex(o.h,o.s,o.v);e={background:t,border:r,highlight:{background:a,border:r},hover:{background:a,border:r}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.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 cssUtil={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("; ")}};exports.addCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e),o=exports.extend(i,s);t.style.cssText=cssUtil.join(o)},exports.removeCssText=function(t,e){var i=cssUtil.split(t.style.cssText),s=cssUtil.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=cssUtil.join(i)},exports.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)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,f=p,m=u,g=Math.floor(.5*(u+p));if(0==u)g=-1;else if(1==u)r=l[g][i],g=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,g-1)][i],r=l[g][i],a=l[Math.min(l.length-1,g+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(g=Math.max(0,g-1)):e>r&&a>e&&(g=Math.min(l.length-1,g+1)))):(e>r?f=Math.floor(.5*(u+p)):m=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==f&&u==m?(g=-1,c=!0):(u=m,p=f,g=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return g},exports.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)},exports.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){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},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._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)}var o=i(1);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 f=h[p];c[f]=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 f={},m=0,g=c.length;g>m;m++){var v=c[m];f[v]=t.getValue(p,m)}h(f)}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,f=i&&i.filter,m=[];if(void 0!=t)d=n._getItem(t,u),f&&!f(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!f||f(d))&&m.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!f||f(d))&&m.push(d));if(i&&i.order&&void 0==t&&this._sort(m,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=m.length;p>c;c++)m[c]=this._filterFields(m[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(m[c]);return s}return m},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){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],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},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._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._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._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;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))}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,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 l,this.eye=new h(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)}var o=i(51),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(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)/(f-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 u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(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 u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(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 u(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 h(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 h(n,r,this.zMin)),e=this._convert3Dto2D(new h(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 h(this.xMin,this.yMin,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(f.x,f.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(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 h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(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 h(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&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(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 M=this.zLabel;M.length>0&&(d=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 h(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-d,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,d,l,c,p,u,f,m=this.frame.canvas,g=m.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(f=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(f-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,g.lineWidth=l,g.fillStyle=a,g.strokeStyle=d,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,f,m;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(f=this.colorDot,m=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),f=this._hsv2rgb(u,1,1),m=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=m,i.fillStyle=f,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=getMouseX(t),this.startMouseY=getMouseY(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)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/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 d(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 l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,f=[u[0].screen,u[1].screen,u[2].screen],m=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))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)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.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()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.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=Camera},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,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=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:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},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.body.util.snap=this.timeAxis.snap.bind(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,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(51),i(43),i(1)),n=i(3),r=i(4),a=i(16),h=i(44),d=i(28),l=i(20),c=i(21),p=i(25);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.itemSet&&this.itemSet.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.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)},util:{snap:null,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.body.util.snap=this.timeAxis.snap.bind(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(51),i(43),i(1)),n=i(3),r=i(4),a=i(16),h=i(44),d=i(28),l=i(20),c=i(21),p=i(27);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(42);e.convertHiddenOptions=function(t){var e=t.options.hide;if(1==Array.isArray(e)){for(var i=0;i=r&&a>o){i=!0;break}}1==i&&o=e.start&&n=e.start&&h=h&&(n+=h-a))}return i-=n,{duration:o,time:i,offset:n}},e.snapAwayFromHidden=function(t,e,i,s,o,n){n=n||!1;for(var r=i,a=s,h=0;h=d&&l>i)return e.deltaDifference+=o,e.previousDelta-o>0&&0==n||1==n&&e.previousDelta-o<0?(console.log("start from left, snap to right"),r=l+1):(console.log("start from right, snap to left"),r=d-1),{newStart:r,newEnd:a};if(s>=d&&l>s)return e.deltaDifference+=o,e.previousDelta-o<0?(console.log("end from right, snap to left"),a=d-1):(console.log("end from left, snap to right"),a=l+1),{newStart:r,newEnd:a}}return!1},e.isHidden=function(t,e){for(var i=!1,s=0;s=o&&n>t){i=!0;break}}return{hidden:i,startDate:o,endDate:n}}},function(t){function e(t,e,i,s,o){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.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),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,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(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},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.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(45),h=i(42),d=i(19),l=i(14);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hide"];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){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-c,i=e>l,f=i||null===o?o:r.easeInOutQuad(e,h,o,l),m=i||null===n?n:r.easeInOutQuad(e,d,n,l);u=a._applyRange(f,m),p=p||u,u&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end)}),i?p&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}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,l="number"==typeof i?i:500,c=(new Date).valueOf(),p=!1;return s()}var u=this._applyRange(o,n);if(u){var f={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",f),this.body.emitter.emit("rangechanged",f)}},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,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(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 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){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){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.getHiddenDuration(this.body.hiddenDates,this);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,this,h,d,i);if(c!==!1)return this.props.touch.start=c.newStart,this.props.touch.end=c.newEnd,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)})}}},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)}))},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},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,i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDuration(this.body.hiddenDates,this),o=i+(this.props.touch.start-i)*e,r=i+s+(this.props.touch.end-(i+s))*e;this.previousDelta=1;var a=l.snapAwayFromHidden(this.body.hiddenDates,this,o,r,t.gesture.scale,!0);a!==!1&&(this.props.touch.start=a.newStart,this.props.touch.end=a.newEnd,o=a.newStart,r=a.newEnd),this.setRange(o,r)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width,n=l.getHiddenDuration(this.body.hiddenDates,this);return e=this.conversion(s,n),t.x/e.scale+e.offset}var r=this.body.domProps.center.height;return e=this.conversion(r),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDuration(this.body.hiddenDates,this),o=e+(this.start-e)*t,n=e+s+(this.end-(e+s))*t;this.previousDelta=0;var r=l.snapAwayFromHidden(this.body.hiddenDates,this,o,n,i,!0);r!==!1&&(o=r.newStart,n=r.newEnd),this.setRange(o,n)},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(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&&0==l.ignoreStacking&&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){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.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=s.SCALE.DAY,this.step=1,this.setRange(t,e,i),this.hiddenDates=o,void 0===o&&(this.hiddenDates=[])}var o=i(42),n=i(14);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},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 s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.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 s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.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 s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),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,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o) -}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},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(19),r=i(42),a=i(46);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"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(43),n=i(1),r=i(19),a=i(42),h=i(46);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},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",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{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,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},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.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(19),a=i(15);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"];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.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)},s.prototype.show=function(){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.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){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;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"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},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.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,f=this.visibleItems.length;f>u;u++){var m=this.visibleItems[u];m.repositionY()}return s},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),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;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},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,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[f];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.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")},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._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),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")},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"))},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==f)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(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")},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")},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.groupsData?t.data.group:f,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.groupsData?t.data.group:f,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);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},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.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(19);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._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",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(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="0px",this.svg.style.right=""):(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="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(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"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(i+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=i,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,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;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.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(19),d=i(22),l=i(23),c=i(26),p="__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","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},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&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.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;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){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),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=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight"))}},s.prototype._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=o0){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,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&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h,d=[],l={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,this.svgElements,this.svg)}},s.prototype._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.prototype._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.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;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.prototype._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,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>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,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},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.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),m=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>m)&&this._repaintMajorText(0,f,t)}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){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px" -},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},s.prototype.snap=function(t){return this.step.snap(t)},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,this.ignoreStacking=!1}var o=i(43),n=i(1);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),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.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=n.prototype.show,s.prototype.hide=n.prototype.hide,s.prototype.repositionX=n.prototype.repositionX,s.prototype.repositionY=function(){var t="top"===this.options.orientation;this.dom.content.style.top=t?"":"0",this.dom.content.style.bottom=t?"0":"";var e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height);this.dom.box.style.top=t?"0":"",this.dom.box.style.bottom=t?"":"0",this.dom.box.style.height=e+"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(29);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.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,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,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?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-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,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{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,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,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},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},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},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,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},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),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.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,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){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.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(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(51),n=i(43),r=i(52),a=i(1),h=i(45),d=i(3),l=i(4),c=i(40),p=i(41),u=i(36),f=i(37),m=i(38),g=i(35),v=i(39),y=i(49),b=i(50),_=i(47);i(48),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.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.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(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()):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),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))),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=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._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,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.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},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){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.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,t.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){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(),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);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r); -for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);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=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1;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.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},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 m(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 m(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)},s.prototype._removeNodes=function(t){for(var e=this.nodes,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++){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;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.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)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},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._physicsTick=function(){if(!this.freezeSimulation&&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;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,i.startedStabilization=!1,setTimeout(function(){i.emit("stabilized",s)},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.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,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 m({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(){var t={};for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e];t[e]={x:Math.round(i.x),y:Math.round(i.y)}}return t},s.prototype.focusOnNode=function(t,e){if(this.nodes.hasOwnProperty(t)){void 0===e&&(e={});var i={x:this.nodes[t].x,y:this.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("This nodeId cannot be found.")},s.prototype.moveTo=function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this._getScale()),void 0===t.position&&(t.position=this._getTranslation()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))},s.prototype.animateView=function(t){if(void 0===t)return void(t={});this.releaseNode(),1==t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(1),this.sourceScale=this._getScale(),this.sourceTranslation=this._getTranslation(),this.targetScale=t.scale,this._setScale(this.targetScale);var e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0==t.animation.duration?null!=this.lockedOnNodeId?(this._classicRedraw=this._redraw,this._redraw=this._lockedRedraw):(this._setScale(this.targetScale),this._setTranslation(this.targetTranslation.x,this.targetTranslation.y),this._redraw()):(this.animationSpeed=1/(this.renderRefreshRate*t.animation.duration*.001)||1/this.renderRefreshRate,this.animationEasingFunction=t.animation.easingFunction,this._classicRedraw=this._redraw,this._redraw=this._transitionRedraw,this._redraw(),this.moving=!0,this.start())},s.prototype._lockedRedraw=function(){var t={x:this.nodes[this.lockedOnNodeId].x,y:this.nodes[this.lockedOnNodeId].y},e=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},s=this._getTranslation(),o={x:s.x+i.x*this.scale+this.lockedOnNodeOffset.x,y:s.y+i.y*this.scale+this.lockedOnNodeOffset.y};this._setTranslation(o.x,o.y),this._classicRedraw()},s.prototype.releaseNode=function(){null!=this.lockedOnNodeId&&(this._redraw=this._classicRedraw,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null)},s.prototype._transitionRedraw=function(t){this.easingTime=t||this.easingTime+this.animationSpeed,this.easingTime+=this.animationSpeed;var e=a.easingFunctions[this.animationEasingFunction](this.easingTime);this._setScale(this.sourceScale+(this.targetScale-this.sourceScale)*e),this._setTranslation(this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e),this._classicRedraw(),this.moving=!0,this.easingTime>=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})},t.exports=s},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.from=null,this.to=null,this.via=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(38);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];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){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,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(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),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(){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);return"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)):"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}}void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle",o=this.labelDimensions.yLine;for(var d=0;r>d;d++)t.fillText(n[d],i,o),o+=a}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){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],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}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(1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),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._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.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,f,m,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,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-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)) -},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:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,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.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){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.getControlNodePositions=function(t){var e,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,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=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"}}],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){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,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},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,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},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.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,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.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,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.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),this.dynamicEdgesLength=this.dynamicEdges.length},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),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];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),void 0!==t.y&&(this.y=t.y),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 this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}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&&(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"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;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.discreteStep=function(t){if(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.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){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}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._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},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.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),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._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._drawCircle=function(t){this._resizeCircle(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.circle(this.x,this.y,this.options.radius+2*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.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),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._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.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},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)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==t.textBaseline&&(g+=.5*d),this.labelDimensions={top:g,left:m,width:c,height:f,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height: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(k=D.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=D.DELIMITER);var i=O+n();if(C[i])return k=D.DELIMITER,L=i,o(),void o();if(C[O])return k=D.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=D.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=D.IDENTIFIER)}for(k=D.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==D.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=D.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=D.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==D.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)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"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(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(;"->"==L||"--"==L;){var i,s=L;p();var o=g(t);if(o)i=o;else{if(k!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=D.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=D.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}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 M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=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 i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=D.NULL,N=/[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;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else 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(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){"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 d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,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 l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,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 c=this.props.scrollTop;"bottom"==e.orientation&&(c+=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=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){return h.toTime(this.body,this.range,t,this.props.center.width)},s.prototype._toGlobalTime=function(t){return h.toTime(this.body,this.range,t,this.props.root.width)},s.prototype._toScreen=function(t){return h.toScreen(this,t,this.props.center.width)},s.prototype._toGlobalScreen=function(t){return h.toScreen(this,t,this.props.root.width)},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;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,f=e+(s-r/2),m=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,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),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){var s=i(61),o=i(55),n=i(56),r=i(57),a=i(58),h=i(59),d=i(60);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(52),r=i(51),a=i(43),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},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){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in C)t[e]?i=!0:C[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},D={},C={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),D[t+":"+i]=e,this},unbind:function(t,e){return D[t+":"+e]&&(delete D[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return D[t+":"+e](),this},reset:function(){return M={},D={},this}};t.exports=L},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 Le.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){Me.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(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=Me.localeData(),this._bubble()}function v(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 y(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),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Me[t]=function(s,o){var r,a,h=Me._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Me().utc().set(i,t);return h.call(Me._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(Me([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(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._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=Me.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Me.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?Me(t).zone(e._offset||0):Me(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(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 j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break;case"YY":o[ke]=Me.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(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]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Me.parseTwoDigitYear(e)}}function q(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[ke],pe(Me(),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[ke],pe(Me(),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=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=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];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===Me.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(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)); -v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Me.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(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 le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=Me.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Me(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(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:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||Me.localeData(t._l),null===e||i===n&&""===e?Me.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Me.isMoment(e)?new m(e,!0):(i?D(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&D(e[0])&&(e=e[0]),!e.length)return Me();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(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 k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_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){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=Me.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_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=Me([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:{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){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_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",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Me=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(),fe(o)},Me.suppressDeprecationWarnings=!1,Me.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)}),Me.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},Me.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},Me.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(),fe(o).utc()},Me.unix=function(t){return Me(1e3*t)},Me.duration=function(t,e){var i,s,o,n,r=t,h=null;return Me.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.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])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Me(r.from),Me(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Me.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Me.version=Ee,Me.defaultFormat=di,Me.ISO_8601=function(){},Me.momentProperties=He,Me.updateOffset=function(){},Me.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},Me.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Me.locale(t,e)}),Me.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Me.defineLocale(t,e):Me.localeData(t),i&&(Me.duration._locale=Me._locale=i)),Me._locale._abbr},Me.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),Me.locale(t),Fe[t]):(delete Fe[t],null)},Me.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Me.localeData(t)}),Me.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Me._locale;if(!D(t)){if(e=Y(t))return e;t=[t]}return H(t)},Me.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Me.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);Me.normalizeUnits=function(t){return T(t)},Me.invalid=function(t){var e=Me.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Me.parseZone=function(){return Me.apply(null,arguments).parseZone()},Me.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Me.fn=m.prototype,{clone:function(){return Me(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=Me(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||Me.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-Me(this).startOf("month")-(r-Me(r).startOf("month")),n-=6e4*(this.zone()-Me(this).startOf("month").zone()-(r.zone()-Me(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return Me.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Me(),t)},calendar:function(t){var e=t||Me(),i=B(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))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+Me(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+t>+this):+this.clone().startOf(e)<+Me(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Me.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Me.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?Me(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((Me(this).startOf("day")-Me(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=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(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=pe(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 I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Me.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),Me.fn.millisecond=Me.fn.milliseconds=be("Milliseconds",!1),Me.fn.second=Me.fn.seconds=be("Seconds",!1),Me.fn.minute=Me.fn.minutes=be("Minutes",!1),Me.fn.hour=Me.fn.hours=be("Hours",!0),Me.fn.date=be("Date",!0),Me.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),Me.fn.year=be("FullYear",!0),Me.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),Me.fn.days=Me.fn.day,Me.fn.months=Me.fn.month,Me.fn.weeks=Me.fn.week,Me.fn.isoWeeks=Me.fn.isoWeek,Me.fn.quarters=Me.fn.quarter,Me.fn.toJSON=Me.fn.toISOString,v(Me.duration.fn=g.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=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(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 b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Me.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=Me.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(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:Me.fn.lang,locale:Me.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}}),Me.duration.fn.toString=Me.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());Me.duration.fn.asMilliseconds=function(){return this.as("ms")},Me.duration.fn.asSeconds=function(){return this.as("s")},Me.duration.fn.asMinutes=function(){return this.as("m")},Me.duration.fn.asHours=function(){return this.as("h")},Me.duration.fn.asDays=function(){return this.as("d")},Me.duration.fn.asWeeks=function(){return this.as("weeks")},Me.duration.fn.asMonths=function(){return this.as("M")},Me.duration.fn.asYears=function(){return this.as("y")},Me.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=Me:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=De),Me}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(66)(t))},function(t,e,i){var s;!function(o,n){"use strict";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 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",f=a.POINTER_TOUCH="touch",m=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 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=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{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()}}}},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[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),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){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.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(),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._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&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;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),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._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){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&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&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.dynamicEdgesLength&&0!=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.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==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)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(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.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,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].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&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].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(38);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;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;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)}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,highlightEdges)}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(38),n=i(35);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction); -var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),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._handleTouch=this._handleConnect,this._manipulationReleaseOverload=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.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),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._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(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,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(!(this.triggerFunctions.del.length=2))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(43));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");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=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.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(){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 e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.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){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.resolve=e,e.keys=function(){return[]},t.exports=e},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,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,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.theta){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)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},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}}])}); +},t.exports=s},function(t){Point2d=function(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0},t.exports=Point2d},function(t){function e(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}e.subtract=function(t,i){var s=new e;return s.x=t.x-i.x,s.y=t.y-i.y,s.z=t.z-i.z,s},e.add=function(t,i){var s=new e;return s.x=t.x+i.x,s.y=t.y+i.y,s.z=t.z+i.z,s},e.avg=function(t,i){return new e((t.x+i.x)/2,(t.y+i.y)/2,(t.z+i.z)/2)},e.crossProduct=function(t,i){var s=new e;return s.x=t.y*i.z-t.z*i.y,s.y=t.z*i.x-t.x*i.z,s.z=t.x*i.y-t.y*i.x,s},e.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=e},function(t,e,i){function s(t,e){if(void 0===t)throw"Error: No container element defined";if(this.container=t,this.visible=e&&void 0!=e.visible?e.visible:!0,this.visible){this.frame=document.createElement("DIV"),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);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var o=i(1);s.prototype.prev=function(){var t=this.getIndex();t>0&&(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,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=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:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},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.body.util.snap=this.timeAxis.snap.bind(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,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(51),i(43),i(1)),n=i(3),r=i(4),a=i(16),h=i(44),d=i(28),l=i(20),c=i(21),p=i(25);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.itemSet&&this.itemSet.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.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)},util:{snap:null,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.body.util.snap=this.timeAxis.snap.bind(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(51),i(43),i(1)),n=i(3),r=i(4),a=i(16),h=i(44),d=i(28),l=i(20),c=i(21),p=i(27);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(42);e.convertHiddenOptions=function(t,e){var i=e.specific;if(i)if(1==Array.isArray(i)){for(var o=0;oo&&h.isoWeekday(c-7),d>o&&d.isoWeekday(p-7),h.milliseconds(0),h.seconds(0),h.minutes(0),h.hours(0),d.milliseconds(0),d.seconds(0),d.minutes(0),d.hours(0),h>d&&d.isoWeekday(p+7);var u=d-h;if(4*a>u)break;for(;n>h;)t.hiddenDates.push({start:h.valueOf(),end:d.valueOf()}),h.isoWeekday(c+7),d.isoWeekday(p+7);t.hiddenDates.push({start:h.valueOf(),end:d.valueOf()})}if(i.periodic.times){var h=s(t.range.start),d=s(t.range.start);n=n.valueOf();for(var l=0;lu)break;for(h-=6048e5,d-=6048e5;n+6048e5>h;)t.hiddenDates.push({start:h.valueOf(),end:d.valueOf()}),h+=864e5,d+=864e5}}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=n&&r>i){e=!0;break}}if(1==e&&i<=t._end.valueOf()){var a=s(r);t.current=a.toDate()}},e.toScreen=function(t,i,s){var o=e.isHidden(i,t.body.hiddenDates);1==o.hidden&&(i=o.startDate);var n=e.correctTimeForDuration(t.body.hiddenDates,t.range,i),r=n.duration;i=n.time;var a=t.range.conversion(s,r);return(i.valueOf()-a.offset)*a.scale},e.toTime=function(t,i,s,o){var n=e.getHiddenDuration(t.hiddenDates,i),r=i.conversion(o,n);return new Date(s/r.scale+r.offset)},e.getHiddenDuration=function(t,e){for(var i=0,s=0;s=e.start&&n=e.start&&h=h&&(n+=h-a))}return i-=n,{duration:o,time:i,offset:n}},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=!1,s=0;s=o&&n>t){i=!0;break}}return{hidden:i,startDate:o,endDate:n}}},function(t){function e(t,e,i,s,o){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.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),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,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(){var t=""+Number(this.current).toPrecision(5);if(-1!=t.indexOf(",")||-1!=t.indexOf("."))for(var e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},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(45),h=i(42),d=i(19),l=i(14);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){function s(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,m=i||null===o?o:r.easeInOutQuad(e,h,o,c),g=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(m,g),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)}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end)}):a.animateTimer=setTimeout(s,20)}}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;return s()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var m={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",m),this.body.emitter.emit("rangechanged",m)}},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,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(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 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){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){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.getHiddenDuration(this.body.hiddenDates,this);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)})}}},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)}))},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.getHiddenDuration(this.body.hiddenDates,this),o=i+(this.props.touch.start-i)*e,r=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var a=l.snapAwayFromHidden(this.body.hiddenDates,o,1-e,!1),h=l.snapAwayFromHidden(this.body.hiddenDates,r,e-1,!1);(a!=o||h!=r)&&(this.props.touch.start=a,this.props.touch.end=h,this.scaleOffset=1-t.gesture.scale,o=a,r=h),this.setRange(o,r),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width,n=l.getHiddenDuration(this.body.hiddenDates,this);return e=this.conversion(s,n),t.x/e.scale+e.offset}var r=this.body.domProps.center.height;return e=this.conversion(r),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDuration(this.body.hiddenDates,this),o=e+(this.start-e)*t,n=e+s+(this.end-(e+s))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var r=l.snapAwayFromHidden(this.body.hiddenDates,o,i,!0),a=l.snapAwayFromHidden(this.body.hiddenDates,n,-i,!0);(r!=o||a!=n)&&(o=r,n=a),this.setRange(o,n),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(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&&0==l.ignoreStacking&&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;for(s=0,o=t.length;o>s;s++)t[s].top=void 0!==t[s].data.subgroup?e.axis+(i[t[s].data.subgroup].height+e.item.vertical)*t[s].data.subgroup:e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.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=s.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=[])}var o=i(42),n=i(14);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},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 s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.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 s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.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 s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),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,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1) +}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case s.SCALE.YEAR:case s.SCALE.MONTH:case s.SCALE.WEEKDAY:case s.SCALE.DAY:case s.SCALE.HOUR:case s.SCALE.MINUTE:case s.SCALE.SECOND:case s.SCALE.MILLISECOND:return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case s.SCALE.WEEKDAY:case s.SCALE.DAY:case s.SCALE.HOUR:case s.SCALE.MINUTE:case s.SCALE.SECOND:case s.SCALE.MILLISECOND:return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case s.SCALE.MILLISECOND:case s.SCALE.SECOND:case s.SCALE.MINUTE:case s.SCALE.HOUR:return!0;default:return!1}switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},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(19),r=i(42),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"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(43),n=i(1),r=i(19),a=i(42),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},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",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{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,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},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.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(19),a=i(15);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"];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.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)},s.prototype.show=function(){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.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){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;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"):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation]);this.step=i;var s=(this.dom.frame.offsetHeight-i.deadSpace*(this.dom.frame.offsetHeight/i.marginRange))/((i.marginRange-i.deadSpace)/i.step);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.dom.frame.offsetHeight/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}else o+=.25;this.valueAtZero=i.marginEnd;var d=0,l=1;this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),l++}this.conversionFactor=0==this.master?c/(this.valueAtZero-i.current):this.dom.frame.offsetHeight/i.marginRange;var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),!1)},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.maxLabelSizee.axis){var u=c-e.axis;p-=u,o.forEach(h,function(t){t.top-=u})}a=p+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var f=this.dom.foreground;this.top=f.offsetTop,this.left=f.offsetLeft,this.width=f.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var m=0,g=this.visibleItems.length;g>m;m++){var v=this.visibleItems[m];v.repositionY(e)}return s},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}),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;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},f={item:t.item,axis:t.item.vertical/2},m=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:f,s=t.redraw(e,i,c);r=s||r,m+=t.height}),m=Math.max(m,g),this.stackDirty=!1,a.style.height=i(m),this.props.width=a.offsetWidth,this.props.height=m,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[f];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[f];if(this.groupsData)t&&(t.hide(),delete this.groups[f]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[f]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]); +t.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")},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._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),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")},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"))},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==f)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(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")},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")},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.groupsData?t.data.group:f,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.groupsData?t.data.group:f,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);var i=this.groupsData?t.data.group:f,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},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.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(19);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._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",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(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="0px",this.svg.style.right=""):(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="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(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"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var i="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(i+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=i,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,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;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.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(19),d=i(22),l=i(23),c=i(26),p="__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","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},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&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.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;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){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),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=[],d=[];if(t.length>0){for(n=0;n0)if(o=this.groups[t[n]],"line"==o.options.style||"stack"!=o.options.barChart.handleOverlap){var l=s[0].y,c=s[0].y;for(r=0;rs[r].y?s[r].y:l,c=c0&&(h.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,h),i.__barchartLeft=this._getStackedBarYRange(p,h),i.__barchartLeft.yAxisOrientation="left",t.push("__barchartLeft")),d.length>0&&(d.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x}),p={},this._getDataIntersections(p,d),i.__barchartRight=this._getStackedBarYRange(p,d),i.__barchartRight.yAxisOrientation="right",t.push("__barchartRight"))}},s.prototype._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=o0){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,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&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraphs=function(t,e){var i,s,o,r,a,h,d=[],l={},c=0;for(a=0;a0&&(i=Math.min(i,Math.abs(d[a-1].x-s))),o=this._getSafeDrawData(i,r,p);else{var f=a+(l[s].amount-l[s].resolved),m=a-(l[s].resolved+1);f0&&(i=Math.min(i,Math.abs(d[m].x-s))),o=this._getSafeDrawData(i,r,p),l[s].resolved+=1,"stack"==r.options.barChart.handleOverlap?(u=l[s].accumulated,l[s].accumulated+=r.zeroPosition-d[a].y):"sideBySide"==r.options.barChart.handleOverlap&&(o.width=o.width/l[s].amount,o.offset+=l[s].resolved*o.width-.5*o.width*(l[s].amount+1),"left"==r.options.barChart.align?o.offset-=.5*o.width:"right"==r.options.barChart.align&&(o.offset+=.5*o.width))}n.drawBar(d[a].x+o.offset,d[a].y-u,o.width,r.zeroPosition-d[a].y,r.className+" bar",this.svgElements,this.svg),1==r.options.drawPoints.enabled&&n.drawPoint(d[a].x+o.offset,d[a].y-u,r,this.svgElements,this.svg)}},s.prototype._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.prototype._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.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rl;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.prototype._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,f,m,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>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,f=3*x*(x+v),f>0&&(f=1/f),m=3*g*(g+v),m>0&&(m=1/m),a={x:(-b*s.x+p*o.x+_*n.x)*f,y:(-b*s.y+p*o.y+_*n.y)*f},h={x:(y*o.x+u*n.x-b*r.x)*m,y:(y*o.y+u*n.y-b*r.y)*m},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.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),f=n.getLabelMajor(u),m=f.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>m)&&this._repaintMajorText(0,f,t)}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){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},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},s.prototype.snap=function(t){return this.step.snap(t)},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,this.ignoreStacking=!1}var o=i(43),n=i(1);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),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.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=n.prototype.show,s.prototype.hide=n.prototype.hide,s.prototype.repositionX=n.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;if(i=this.parent.subgroups[s].height+t.item.vertical,1==e){i+=0==s?t.axis-.5*t.item.vertical:0;var o=this.parent.top+s*i;o+=0!=s?t.axis-.5*t.item.vertical:0,this.dom.box.style.top=o+"px",this.dom.box.style.bottom=""}else{var n=this.parent.visibleSubgroups-1;this.dom.box.style.top=(n-s)*i+this.parent.top+"px",this.dom.box.style.bottom=""}}else void 0!==this.data.group?(i=this.parent.height,1==e?(this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom=""):(this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="")):(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0");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(29);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.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,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,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?Math.max(-s,0):0>s?Math.min(-s,o-s-this.props.content.width-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,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{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,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,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},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},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},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,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},this.constants=a.extend({},this.defaultOptions),this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],"new":[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null;var o=this;this.groups=new u,this.images=new f,this.images.setOnloadCallback(function(){o._redraw()}),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.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,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){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.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(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(51),n=i(43),r=i(60),a=i(1),h=i(45),d=i(3),l=i(4),c=i(40),p=i(41),u=i(36),f=i(37),m=i(38),g=i(35),v=i(39),y=i(49),b=i(50),_=i(46);i(47),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.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.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(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()):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),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))),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=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._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,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.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},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){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.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,t.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){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(),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);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);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=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new v(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&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.frame.canvas.height=this.frame.canvas.clientHeight,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth&&(this.frame.canvas.width=this.frame.canvas.clientWidth,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight&&(this.frame.canvas.height=this.frame.canvas.clientHeight,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height,oldWidth:s,oldHeight:o})},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 m(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 m(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)},s.prototype._removeNodes=function(t){for(var e=this.nodes,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++){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;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.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)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},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._physicsTick=function(){if(!this.freezeSimulation&&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;s0){var i=this,s={iterations:i.stabilizationIterations};i.stabilizationIterations=0,i.startedStabilization=!1,setTimeout(function(){i.emit("stabilized",s)},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.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,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 m({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.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})},t.exports=s},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.from=null,this.to=null,this.via=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(38);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor"];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){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,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(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),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(){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);return"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)):"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}}void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)),t.fillStyle=this.options.fontColor||"black",t.textAlign="center",t.textBaseline="middle",o=this.labelDimensions.yLine;for(var d=0;r>d;d++)t.fillText(n[d],i,o),o+=a}},s.prototype._drawDashLine=function(t){t.strokeStyle=1==this.selected?this.options.color.highlight:1==this.hover?this.options.color.hover:this.options.color.color,t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.mozDash||void 0!==t.setLineDash){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],"undefined"!=typeof t.setLineDash?(t.setLineDash(i),t.lineDashOffset=0):(t.mozDash=i,t.mozDashOffset=0),e=this._line(t),"undefined"!=typeof t.setLineDash?(t.setLineDash([0]),t.lineDashOffset=0):(t.mozDash=[0],t.mozDashOffset=0)}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(1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),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._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.options.color.highlight,t.fillStyle=this.options.color.highlight):1==this.hover?(t.strokeStyle=this.options.color.hover,t.fillStyle=this.options.color.hover):(t.strokeStyle=this.options.color.color,t.fillStyle=this.options.color.color),t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?s=this.via:1==this.options.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),f=(r-u)/r;if(1==this.options.smoothCurves.enabled&&null!=s.x?(c=(1-f)*s.x+f*this.to.x,p=(1-f)*s.y+f*this.to.y):(c=(1-f)*this.from.x+f*this.to.x,p=(1-f)*this.from.y+f*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.options.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var m;if(1==this.options.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));m={x:g,y:v}}else m=this._pointOnLine(.5);this._label(t,this.label,m.x,m.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.physics.springLength);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(m=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,m.x,m.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,f,m,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,f=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(m,g,u,f,o,n),v=v>l?l:v),m=u,g=f;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,f,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,f=x.y-_):(u=x.x+_,f=x.y-.5*x.height),y=u-o,b=f-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))},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:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,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.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){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.getControlNodePositions=function(t){var e,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,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled?e=this.via:1==this.options.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.options.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.options.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=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"}}],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){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,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},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,this.images[t]=i,i.onload=function(){s.callback&&s.callback(this)},i.onerror=function(){this.src=e,s.callback&&s.callback(this)},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.fontDrawThreshold=3,this.id=void 0,this.x=null,this.y=null,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.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,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.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),this.dynamicEdgesLength=this.dynamicEdges.length},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),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","group","mass"];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),void 0!==t.y&&(this.y=t.y),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 this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);for(var n in s)s.hasOwnProperty(n)&&(this.options[n]=s[n])}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&&(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"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;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.discreteStep=function(t){if(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.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){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}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._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},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.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),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._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._drawCircle=function(t){this._resizeCircle(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.circle(this.x,this.y,this.options.radius+2*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.circle(this.x,this.y,this.options.radius),t.fill(),t.stroke(),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._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.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},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)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize)+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var f=this.options.fontSize*h,m=i-c/2,g=s-f/2;"top"==t.textBaseline&&(g+=.5*d),this.labelDimensions={top:g,left:m,width:c,height:f,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(m,g,c,f)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";for(var p=0;h>p;p++)t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height: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(k=D.NULL,L="";" "==O||" "==O||"\n"==O||"\r"==O;)o();do{var t=!1;if("#"==O){for(var e=T-1;" "==E.charAt(e)||" "==E.charAt(e);)e--;if("\n"==E.charAt(e)||""==E.charAt(e)){for(;""!=O&&"\n"!=O;)o();t=!0}}if("/"==O&&"/"==n()){for(;""!=O&&"\n"!=O;)o();t=!0}if("/"==O&&"*"==n()){for(;""!=O;){if("*"==O&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==O||" "==O||"\n"==O||"\r"==O;)o()}while(t);if(""==O)return void(k=D.DELIMITER);var i=O+n();if(C[i])return k=D.DELIMITER,L=i,o(),void o();if(C[O])return k=D.DELIMITER,L=O,void o();if(r(O)||"-"==O){for(L+=O,o();r(O);)L+=O,o();return"false"==L?L=!1:"true"==L?L=!0:isNaN(Number(L))||(L=Number(L)),void(k=D.IDENTIFIER)}if('"'==O){for(o();""!=O&&('"'!=O||'"'==O&&'"'==n());)L+=O,'"'==O&&o(),o();if('"'!=O)throw x('End of string " expected');return o(),void(k=D.IDENTIFIER)}for(k=D.UNKNOWN;""!=O;)L+=O,o();throw new SyntaxError('Syntax error in part "'+w(L,30)+'"')}function u(){var t={};if(s(),p(),"strict"==L&&(t.strict=!0,p()),("graph"==L||"digraph"==L)&&(t.type=L,p()),k==D.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),f(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==L&&"}"!=L;)m(t),";"==L&&p()}function m(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=D.IDENTIFIER)throw x("Identifier expected");var s=L;if(p(),"="==L){if(p(),k!=D.IDENTIFIER)throw x("Identifier expected");t[s]=L,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==L&&(e={},e.type="subgraph",p(),k==D.IDENTIFIER&&(e.id=L,p())),"{"==L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=L)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"==L?(p(),t.node=_(),"node"):"edge"==L?(p(),t.edge=_(),"edge"):"graph"==L?(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(;"->"==L||"--"==L;){var i,s=L; +p();var o=g(t);if(o)i=o;else{if(k!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==L;){for(p(),t={};""!==L&&"]"!=L;){if(k!=D.IDENTIFIER)throw x("Attribute name expected");var e=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),k!=D.IDENTIFIER)throw x("Attribute value expected");var i=L;h(t,e,i),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(L,30)+'" (char '+T+")")}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 M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=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 i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},E="",T=0,O="",L="",k=D.NULL,N=/[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;r=o&&(o=864e5),i=new Date(i.valueOf()-.05*o),s=new Date(s.valueOf()+.05*o)}if(null!==i||null!==s){var n=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(i,s,n)}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else 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(){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":"",f=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=f,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=f,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=f,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},s.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},s.prototype._toTime=function(t){return h.toTime(this.body,this.range,t,this.props.center.width)},s.prototype._toGlobalTime=function(t){return h.toTime(this.body,this.range,t,this.props.root.width)},s.prototype._toScreen=function(t){return h.toScreen(this,t,this.props.center.width)},s.prototype._toGlobalScreen=function(t){return h.toScreen(this,t,this.props.root.width)},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.offsetWidth!=t.props.lastWidth||t.dom.root.offsetHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTops;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,f=e+(s-r/2),m=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,f),this.bezierCurveTo(l,f+d,p+h,m,p,m),this.bezierCurveTo(p-h,m,t,f+d,t,f),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){e.en={current:"current",time:"time"},e.en_EN=e.en,e.en_US=e.en,e.nl={custom:"aangepaste",time:"tijd"},e.nl_NL=e.nl,e.nl_BE=e.nl},function(t,e,i){var s=i(61),o=i(54),n=i(55),r=i(56),a=i(57),h=i(58),d=i(59);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.frame.appendChild(this.closeDiv)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.frame.removeChild(this.manipulationDiv),this.frame.removeChild(this.editModeDiv),this.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t,e,i){function s(t){this.active=!1,this.dom={container:t},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay,{prevent_default:!1}),this.hammer.on("tap",this._onTapOverlay.bind(this));var e=this,i=["touch","pinch","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];i.forEach(function(t){e.hammer.on(t,function(t){t.stopPropagation()})}),this.windowHammer=a(window,{prevent_default:!1}),this.windowHammer.on("tap",function(i){o(i.target,t)||e.deactivate()}),this.escListener=this.deactivate.bind(this)}function o(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}var n=i(60),r=i(51),a=i(43),h=i(1);r(s.prototype),s.current=null,s.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.hammer=null,this.windowHammer=null},s.prototype.activate=function(){s.current&&s.current.deactivate(),s.current=this,this.active=!0,this.dom.overlay.style.display="none",h.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),n.bind("esc",this.escListener)},s.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",h.removeClassName(this.dom.container,"vis-active"),n.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},s.prototype._onTapOverlay=function(t){this.activate(),t.stopPropagation()},t.exports=s},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 Le.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){Me.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return v(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){xi[t]||(d(e),xi[t]=!0)}function p(t,e){return function(i){return _(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function f(){}function m(t,e){e!==!1&&P(t),y(this,t),this._d=new Date(+t._d)}function g(t){var e=O(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=Me.localeData(),this._bubble()}function v(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 y(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),He.length>0)for(i in He)s=He[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function b(t){return 0>t?Math.ceil(t):Math.floor(t)}function _(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&k(t[s])!==k(e[s]))&&r++;return r+n}function T(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=fi[t]||mi[e]||e}return t}function O(t){var e,i,s={};for(i in t)a(t,i)&&(e=T(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Me[t]=function(s,o){var r,a,h=Me._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Me().utc().set(i,t);return h.call(Me._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function k(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function N(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function I(t,e,i){return pe(Me([t,11,31+e-i]),e,i).week}function A(t){return z(t)?366:365}function z(t){return t%4===0&&t%100!==0||t%400===0}function P(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Ne]<0||t._a[Ne]>11?Ne:t._a[Ie]<1||t._a[Ie]>N(t._a[ke],t._a[Ne])?Ie:t._a[Ae]<0||t._a[Ae]>23?Ae:t._a[ze]<0||t._a[ze]>59?ze:t._a[Pe]<0||t._a[Pe]>59?Pe:t._a[Re]<0||t._a[Re]>999?Re:-1,t._pf._overflowDayOfYear&&(ke>e||e>Ie)&&(e=Ie),t._pf.overflow=e)}function R(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._isValid}function F(t){return t?t.toLowerCase().replace("_","-"):t}function H(t){for(var e,i,s,o,n=0;n0;){if(s=Y(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function Y(t){var e=null;if(!Fe[t]&&Ye)try{e=Me.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Me.locale(e)}catch(i){}return Fe[t]}function B(t,e){return e._isUTC?Me(t).zone(e._offset||0):Me(t).local()}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,s=t.match(je);for(e=0,i=s.length;i>e;e++)s[e]=_i[s[e]]?_i[s[e]]:W(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 j(t,e){return t.isValid()?(e=U(e,t.localeData()),gi[e]||(gi[e]=G(e)),gi[e](t)):t.localeData().invalidDate()}function U(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Ue.lastIndex=0;s>=0&&Ue.test(t);)t=t.replace(Ue,i),Ue.lastIndex=0,s-=1;return t}function V(t,e){var i,s=e._strict;switch(t){case"Q":return ii;case"DDDD":return oi;case"YYYY":case"GGGG":case"gggg":return s?ni:Ze;case"Y":case"G":case"g":return ai;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?ri:qe;case"S":if(s)return ii;case"SS":if(s)return si;case"SSS":if(s)return oi;case"DDD":return Xe;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Qe;case"a":case"A":return e._locale._meridiemParse;case"X":return ti;case"Z":case"ZZ":return $e;case"T":return Je;case"SSSS":return Ke;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?si:Ve;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Ve;case"Do":return ei;default:return i=new RegExp(ee(te(t.replace("\\","")),"i"))}}function X(t){t=t||"";var e=t.match($e)||[],i=e[e.length-1]||[],s=(i+"").match(pi)||["-",0,0],o=+(60*s[1])+k(s[2]);return"+"===s[0]?-o:o}function Z(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Ne]=3*(k(e)-1));break;case"M":case"MM":null!=e&&(o[Ne]=k(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e),null!=s?o[Ne]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ie]=k(e));break;case"Do":null!=e&&(o[Ie]=k(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=k(e));break; +case"YY":o[ke]=Me.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[ke]=k(e);break;case"a":case"A":i._isPm=i._locale.isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ae]=k(e);break;case"m":case"mm":o[ze]=k(e);break;case"s":case"ss":o[Pe]=k(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Re]=k(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=X(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]=k(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Me.parseTwoDigitYear(e)}}function q(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[ke],pe(Me(),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[ke],pe(Me(),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=ue(i,s,o,a,n),t._a[ke]=h.year,t._dayOfYear=h.dayOfYear}function K(t){var e,i,s,o,n=[];if(!t._d){for(s=$(t),t._w&&null==t._a[Ie]&&null==t._a[Ne]&&q(t),t._dayOfYear&&(o=r(t._a[ke],s[ke]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=he(o,0,t._dayOfYear),t._a[Ne]=i.getUTCMonth(),t._a[Ie]=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];t._d=(t._useUTC?he:ae).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function Q(t){var e;t._d||(e=O(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],K(t))}function $(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function J(t){if(t._f===Me.ISO_8601)return void se(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=""+t._i,a=r.length,h=0;for(s=U(t._f,t._locale).match(je)||[],e=0;e0&&t._pf.unusedInput.push(n),r=r.slice(r.indexOf(i)+i.length),h+=i.length),_i[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Z(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=a-h,r.length>0&&t._pf.unusedInput.push(r),t._isPm&&t._a[Ae]<12&&(t._a[Ae]+=12),t._isPm===!1&&12===t._a[Ae]&&(t._a[Ae]=0),K(t),P(t)}function te(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function ee(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ie(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));v(t,i||e)}function se(t){var e,i,s=t._i,o=hi.exec(s);if(o){for(t._pf.iso=!0,e=0,i=li.length;i>e;e++)if(li[e][1].exec(s)){t._f=li[e][0]+(o[6]||" ");break}for(e=0,i=ci.length;i>e;e++)if(ci[e][1].exec(s)){t._f+=ci[e][0];break}s.match($e)&&(t._f+="Z"),J(t)}else t._isValid=!1}function oe(t){se(t),t._isValid===!1&&(delete t._isValid,Me.createFromInputFallback(t))}function ne(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function he(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function de(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 le(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ce(t,e,i){var s=Me.duration(t).abs(),o=Oe(s.as("s")),n=Oe(s.as("m")),r=Oe(s.as("h")),a=Oe(s.as("d")),h=Oe(s.as("M")),d=Oe(s.as("y")),l=o0,l[4]=i,le.apply({},l)}function pe(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Me(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ue(t,e,i,s,o){var n,r,a=he(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:A(t-1)+r}}function fe(t){var e=t._i,i=t._f;return t._locale=t._locale||Me.localeData(t._l),null===e||i===n&&""===e?Me.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),Me.isMoment(e)?new m(e,!0):(i?D(i)?ie(t):J(t):re(t),new m(t)))}function me(t,e){var i,s;if(1===e.length&&D(e[0])&&(e=e[0]),!e.length)return Me();for(i=e[0],s=1;s=0?"+":"-";return e+_(Math.abs(t),6)},gg:function(){return _(this.weekYear()%100,2)},gggg:function(){return _(this.weekYear(),4)},ggggg:function(){return _(this.weekYear(),5)},GG:function(){return _(this.isoWeekYear()%100,2)},GGGG:function(){return _(this.isoWeekYear(),4)},GGGGG:function(){return _(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 k(this.milliseconds()/100)},SS:function(){return _(k(this.milliseconds()/10),2)},SSS:function(){return _(this.milliseconds(),3)},SSSS:function(){return _(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+":"+_(k(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+_(k(t/60),2)+_(k(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},xi={},wi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];yi.length;)Ce=yi.pop(),_i[Ce+"o"]=u(_i[Ce],Ce);for(;bi.length;)Ce=bi.pop(),_i[Ce+Ce]=p(_i[Ce],2);_i.DDDD=p(_i.DDD,3),v(f.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_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){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=Me.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_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=Me([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:{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){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_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",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return pe(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Me=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(),fe(o)},Me.suppressDeprecationWarnings=!1,Me.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)}),Me.min=function(){var t=[].slice.call(arguments,0);return me("isBefore",t)},Me.max=function(){var t=[].slice.call(arguments,0);return me("isAfter",t)},Me.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(),fe(o).utc()},Me.unix=function(t){return Me(1e3*t)},Me.duration=function(t,e){var i,s,o,n,r=t,h=null;return Me.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=We.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:k(h[Ie])*i,h:k(h[Ae])*i,m:k(h[ze])*i,s:k(h[Pe])*i,ms:k(h[Re])*i}):(h=Ge.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])}):"object"==typeof r&&("from"in r||"to"in r)&&(n=w(Me(r.from),Me(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new g(r),Me.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Me.version=Ee,Me.defaultFormat=di,Me.ISO_8601=function(){},Me.momentProperties=He,Me.updateOffset=function(){},Me.relativeTimeThreshold=function(t,e){return vi[t]===n?!1:e===n?vi[t]:(vi[t]=e,!0)},Me.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Me.locale(t,e)}),Me.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Me.defineLocale(t,e):Me.localeData(t),i&&(Me.duration._locale=Me._locale=i)),Me._locale._abbr},Me.defineLocale=function(t,e){return null!==e?(e.abbr=t,Fe[t]||(Fe[t]=new f),Fe[t].set(e),Me.locale(t),Fe[t]):(delete Fe[t],null)},Me.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Me.localeData(t)}),Me.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Me._locale;if(!D(t)){if(e=Y(t))return e;t=[t]}return H(t)},Me.isMoment=function(t){return t instanceof m||null!=t&&a(t,"_isAMomentObject")},Me.isDuration=function(t){return t instanceof g};for(Ce=wi.length-1;Ce>=0;--Ce)L(wi[Ce]);Me.normalizeUnits=function(t){return T(t)},Me.invalid=function(t){var e=Me.utc(0/0);return null!=t?v(e._pf,t):e._pf.userInvalidated=!0,e},Me.parseZone=function(){return Me.apply(null,arguments).parseZone()},Me.parseTwoDigitYear=function(t){return k(t)+(k(t)>68?1900:2e3)},v(Me.fn=m.prototype,{clone:function(){return Me(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=Me(this).utc();return 00:!1},parsingFlags:function(){return v({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.zone(0,t)},local:function(t){return this._isUTC&&(this.zone(0,t),this._isUTC=!1,t&&this.add(this._dateTzOffset(),"m")),this},format:function(t){var e=j(this,t||Me.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n,r=B(t,this),a=6e4*(this.zone()-r.zone());return e=T(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),o=12*(this.year()-r.year())+(this.month()-r.month()),n=this-Me(this).startOf("month")-(r-Me(r).startOf("month")),n-=6e4*(this.zone()-Me(this).startOf("month").zone()-(r.zone()-Me(r).startOf("month").zone())),o+=n/s,"year"===e&&(o/=12)):(s=this-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),i?o:b(o)},from:function(t,e){return Me.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Me(),t)},calendar:function(t){var e=t||Me(),i=B(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))},isLeapYear:function(){return z(this.year())},isDST:function(){return this.zone()+t):+this.clone().startOf(e)>+Me(t).startOf(e)},isBefore:function(t,e){return e=T("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+t>+this):+this.clone().startOf(e)<+Me(t).startOf(e)},isSame:function(t,e){return e=T(e||"millisecond"),"millisecond"===e?(t=Me.isMoment(t)?t:Me(t),+this===+t):+this.clone().startOf(e)===+B(t,this).startOf(e)},min:l("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),this>t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Me.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i,s=this._offset||0;return null==t?this._isUTC?s:this._dateTzOffset():("string"==typeof t&&(t=X(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateTzOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.subtract(i,"m"),s!==t&&(!e||this._changeInProgress?M(this,Me.duration(s-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Me.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?Me(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return N(this.year(),this.month())},dayOfYear:function(t){var e=Oe((Me(this).startOf("day")-Me(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=pe(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=pe(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=pe(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 I(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return I(this.year(),t.dow,t.doy)},get:function(t){return t=T(t),this[t]()},set:function(t,e){return t=T(t),"function"==typeof this[t]&&this[t](e),this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Me.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Use moment().localeData() instead.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),Me.fn.millisecond=Me.fn.milliseconds=be("Milliseconds",!1),Me.fn.second=Me.fn.seconds=be("Seconds",!1),Me.fn.minute=Me.fn.minutes=be("Minutes",!1),Me.fn.hour=Me.fn.hours=be("Hours",!0),Me.fn.date=be("Date",!0),Me.fn.dates=l("dates accessor is deprecated. Use date instead.",be("Date",!0)),Me.fn.year=be("FullYear",!0),Me.fn.years=l("years accessor is deprecated. Use year instead.",be("FullYear",!0)),Me.fn.days=Me.fn.day,Me.fn.months=Me.fn.month,Me.fn.weeks=Me.fn.week,Me.fn.isoWeeks=Me.fn.isoWeek,Me.fn.quarters=Me.fn.quarter,Me.fn.toJSON=Me.fn.toISOString,v(Me.duration.fn=g.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=b(s/1e3),r.seconds=t%60,e=b(t/60),r.minutes=e%60,i=b(e/60),r.hours=i%24,o+=b(i/24),a=b(_e(o)),o-=b(xe(a)),n+=b(o/30),o%=30,a+=b(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 b(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12)},humanize:function(t){var e=ce(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Me.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=Me.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=T(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=T(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*_e(e),"month"===t?i:i/12;switch(e=this._days+xe(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:Me.fn.lang,locale:Me.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}}),Me.duration.fn.toString=Me.duration.fn.toISOString;for(Ce in ui)a(ui,Ce)&&we(Ce.toLowerCase());Me.duration.fn.asMilliseconds=function(){return this.as("ms")},Me.duration.fn.asSeconds=function(){return this.as("s")},Me.duration.fn.asMinutes=function(){return this.as("m")},Me.duration.fn.asHours=function(){return this.as("h")},Me.duration.fn.asDays=function(){return this.as("d")},Me.duration.fn.asWeeks=function(){return this.as("weeks")},Me.duration.fn.asMonths=function(){return this.as("M")},Me.duration.fn.asYears=function(){return this.as("y")},Me.locale("en",{ordinal:function(t){var e=t%10,i=1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ye?o.exports=Me:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(Te.moment=De),Me}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(66)(t))},function(t,e,i){var s;!function(o,n){"use strict";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 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",f=a.POINTER_TOUCH="touch",m=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 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=f;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(m,s)&&(o=m),{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()}}}},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[f]=i===(e.MSPOINTER_TYPE_TOUCH||f),s[m]=i===(e.MSPOINTER_TYPE_PEN||m),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){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.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(),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._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&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;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),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._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){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&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&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.dynamicEdgesLength&&0!=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.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==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)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(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.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,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].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&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].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(38);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;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;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)}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,highlightEdges)}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(38),n=i(35);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction); +var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+t.addNode+"
"+t.addEdge+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+t.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+t.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+t.del+"");var e=document.getElementById("network-manipulate-addNode");e.onclick=this._createAddNodeToolbar.bind(this);var i=document.getElementById("network-manipulate-connectNode");if(i.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var s=document.getElementById("network-manipulate-editNode");s.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var s=document.getElementById("network-manipulate-editEdge");s.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var o=document.getElementById("network-manipulate-delete");o.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+t.edit+"";var r=document.getElementById("network-manipulate-editModeButton");r.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDiv.innerHTML=""+t.back+"
"+t.addDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0;var t=this.constants.locales[this.constants.locale];this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+t.back+"
"+t.edgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),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._handleTouch=this._handleConnect,this._manipulationReleaseOverload=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.manipulationDiv.innerHTML=""+t.back+"
"+t.editEdgeDescription+"";var e=document.getElementById("network-manipulate-back");e.onclick=this._createManipulatorBar.bind(this),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._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(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,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(!(this.triggerFunctions.del.length=2))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(43));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");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=0;s1&&o.hierarchyEnumerated===!1&&this._setLevelDirected(o.level,o.edges,o.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,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in C)t[e]?i=!0:C[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function f(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function m(t,e,s,o){C[t]=0,o||(o=f(e[0],[]));var r,a=function(){T=o,++C[t],p()},d=function(t){h(s,t),"keyup"!==o&&(E=i(t)),setTimeout(n,10)};for(r=0;r1)return m(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},D={},C={},E=!1,T=!1,O=1;20>O;++O)_[111+O]="f"+O;for(O=0;9>=O;++O)_[O+96]=O;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var L={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),D[t+":"+i]=e,this},unbind:function(t,e){return D[t+":"+e]&&(delete D[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return D[t+":"+e](),this},reset:function(){return M={},D={},this}};t.exports=L},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 e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.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._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,f=4/3,m=this.constants.physics.repulsion.nodeDistance,g=m;for(d=0;di&&(r=.5*g>i?1:v*i+f,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,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.theta){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)),f=.5*u,m=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:g-f,maxY:g+f},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.resolve=e,e.keys=function(){return[]},t.exports=e},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map \ No newline at end of file diff --git a/examples/timeline/25_background_areas.html b/examples/timeline/25_background_areas.html index 955c452d..777baa9c 100644 --- a/examples/timeline/25_background_areas.html +++ b/examples/timeline/25_background_areas.html @@ -27,16 +27,7 @@
+ + + + +

This example demonstrates the item type "background" when using groups.

+
    +
  • Background items having a group are displayed in that group
  • +
  • Background items without a group are spread over the whole timeline
  • +
  • Background items with a non-existing group are not displayed
  • +
+
+ + + + \ No newline at end of file diff --git a/examples/timeline/index.html b/examples/timeline/index.html index 695c27a2..c02c1182 100644 --- a/examples/timeline/index.html +++ b/examples/timeline/index.html @@ -41,6 +41,7 @@

27_templates.html

29_hiding_times.html

30_subgroups.html

+

31_background_areas_with_groups.html

requirejs_example.html

diff --git a/index.js b/index.js index 8fd80d4a..211d73ca 100644 --- a/index.js +++ b/index.js @@ -42,6 +42,7 @@ exports.timeline = { DataAxis: require('./lib/timeline/component/DataAxis'), GraphGroup: require('./lib/timeline/component/GraphGroup'), Group: require('./lib/timeline/component/Group'), + BackgroundGroup: require('./lib/timeline/component/BackgroundGroup'), ItemSet: require('./lib/timeline/component/ItemSet'), Legend: require('./lib/timeline/component/Legend'), LineGraph: require('./lib/timeline/component/LineGraph'), diff --git a/lib/timeline/component/BackgroundGroup.js b/lib/timeline/component/BackgroundGroup.js new file mode 100644 index 00000000..766d623d --- /dev/null +++ b/lib/timeline/component/BackgroundGroup.js @@ -0,0 +1,57 @@ +var util = require('../../util'); +var Group = require('./Group'); + +/** + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet + */ +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); + +/** + * 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; + + 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; +}; + +/** + * 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; diff --git a/lib/timeline/component/Group.js b/lib/timeline/component/Group.js index 386646ec..d25987f7 100644 --- a/lib/timeline/component/Group.js +++ b/lib/timeline/component/Group.js @@ -167,6 +167,41 @@ Group.prototype.redraw = function(range, margin, restack) { stack.nostack(this.visibleItems, margin, this.subgroups); } + // 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); + } + + 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; @@ -204,29 +239,7 @@ Group.prototype.redraw = function(range, margin, restack) { } height = Math.max(height, this.props.label.height); - // 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); - } - - return resized; + return height; }; /** @@ -304,7 +317,7 @@ Group.prototype.resetSubgroups = function() { this.subgroups[subgroup].visible = false; } } -} +}; /** * Remove an item from the group diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 0cbe8277..9ebba84e 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -4,14 +4,15 @@ var DataSet = require('../../DataSet'); var DataView = require('../../DataView'); var Component = require('./Component'); var Group = require('./Group'); +var BackgroundGroup = require('./BackgroundGroup'); var BoxItem = require('./item/BoxItem'); var PointItem = require('./item/PointItem'); var RangeItem = require('./item/RangeItem'); var BackgroundItem = require('./item/BackgroundItem'); -var DateUtil = require('../DateUtil'); -var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items +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 @@ -171,6 +172,11 @@ ItemSet.prototype._create = function(){ // 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 @@ -497,7 +503,10 @@ ItemSet.prototype.redraw = function() { this.lastVisibleInterval = visibleInterval; this.props.lastWidth = this.props.width; - // redraw all groups + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + + // redraw all regular groups var restack = this.stackDirty, firstGroup = this._firstGroup(), firstMargin = { @@ -560,12 +569,24 @@ ItemSet.prototype._firstGroup = function() { */ 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]; + +// var background = this.groups[BACKGROUND]; +// for (itemId in this.items) { +// if (this.items.hasOwnProperty(itemId)) { +// item = this.items[itemId]; +// if ((item instanceof BackgroundItem)) { +// background.add(item); +// } +// } +// } } } else { @@ -576,9 +597,15 @@ ItemSet.prototype._updateUngrouped = function() { ungrouped = new Group(id, data, this); this.groups[UNGROUPED] = ungrouped; - for (var itemId in this.items) { + for (itemId in this.items) { if (this.items.hasOwnProperty(itemId)) { - ungrouped.add(this.items[itemId]); + item = this.items[itemId]; + if (item instanceof BackgroundItem) { + background.add(item); + } + else { + ungrouped.add(item); + } } } @@ -730,6 +757,33 @@ ItemSet.prototype.removeItem = function(id) { } }; +/** + * 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'); +}; + + +/** + * 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') { + return itemData.group != undefined ? itemData.group : BACKGROUND; + } + else { + return this.groupsData ? itemData.group : UNGROUPED; + } +}; + /** * Handle updated items * @param {Number[]} ids @@ -739,9 +793,9 @@ ItemSet.prototype._onUpdate = function(ids) { var me = this; ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions), - item = me.items[id], - type = itemData.type || me.options.type || (itemData.end ? 'range' : 'box'); + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); var constructor = ItemSet.types[type]; @@ -846,7 +900,7 @@ ItemSet.prototype._onAddGroups = function(ids) { if (!group) { // check for reserved ids - if (id == UNGROUPED) { + if (id == UNGROUPED || id == BACKGROUND) { throw new Error('Illegal group id. ' + id + ' is a reserved id.'); } @@ -945,7 +999,7 @@ ItemSet.prototype._addItem = function(item) { this.items[item.id] = item; // add to group - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.add(item); }; @@ -967,7 +1021,7 @@ ItemSet.prototype._updateItem = function(item, itemData) { var oldGroup = this.groups[oldGroupId]; if (oldGroup) oldGroup.remove(item); - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.add(item); } @@ -991,7 +1045,7 @@ ItemSet.prototype._removeItem = function(item) { if (index != -1) this.selection.splice(index, 1); // remove from group - var groupId = this.groupsData ? item.data.group : UNGROUPED; + var groupId = this._getGroupId(item.data); var group = this.groups[groupId]; if (group) group.remove(item); };