@syncfusion/ej2-layouts 33.1.44 → 33.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ej2-layouts.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js.map +1 -1
- package/dist/es6/ej2-layouts.es2015.js +44 -15
- package/dist/es6/ej2-layouts.es2015.js.map +1 -1
- package/dist/es6/ej2-layouts.es5.js +45 -15
- package/dist/es6/ej2-layouts.es5.js.map +1 -1
- package/dist/global/ej2-layouts.min.js +2 -2
- package/dist/global/ej2-layouts.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +2 -2
- package/src/splitter/splitter.js +45 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js","../../src/timeline/timeline.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\nvar splitterDefaultLocale = {\n 'ToggleNavigation': 'Toggle navigation'\n};\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'locale':\n this.localeSetModelOption(newProp);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, this.locale);\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n var toggleLabel = this.getLocaleText('ToggleNavigation');\n arrow1.setAttribute('aria-label', toggleLabel);\n arrow2.setAttribute('aria-label', toggleLabel);\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n var proxy = null || this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n if (draggedPos > nextPaneRange - pane2MinSize) {\n if (isNullOrUndefined(pane1MaxSize) || validatedSize !== prePaneRange + pane1MaxSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n if (isNullOrUndefined(pane2MaxSize) || validatedSize !== nextPaneRange - pane2MaxSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n Splitter.prototype.getLocaleText = function (text) {\n var locale = this.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n };\n Splitter.prototype.localeSetModelOption = function (newProp) {\n var newLocale = newProp && newProp.locale && typeof newProp.locale === 'object' ? newProp.locale : this.locale;\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, newLocale);\n this.refresh();\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow >= eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = this.getChangedPanels(removed);\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.getChangedPanels = function (removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', 'e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n args.panels = this.getChangingPanels();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","splitterDefaultLocale","ToggleNavigation","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","localeSetModelOption","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","localeObj","L10n","getModuleName","locale","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","toggleLabel","getLocaleText","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","text","getConstant","newLocale","refresh","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","dragging","drag","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","closest","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","upTarget","getChangingPanels","undefined","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","panel","updatedPanel","updatedRows","getElementById","updatedHeight","getRowColumn","setHeightWidth","heightValue","entirePanelsY","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","shadowSize","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan","TimelineOrientation","TimelineAlign","TimelineItem","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","_b","cssClasses","align","haveOneSidecontent","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotContainer","dotEleCss","dotCss","DOTCONTENT","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","classArray","updateContent","updateItems","oldPropItems","_c","_d","oppositeEle","timelineItemElements","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js","../../src/timeline/timeline.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\nvar splitterDefaultLocale = {\n 'ToggleNavigation': 'Toggle navigation'\n};\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'locale':\n this.localeSetModelOption(newProp);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, this.locale);\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var _this = this;\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n var toggleLabel = this.getLocaleText('ToggleNavigation');\n arrow1.setAttribute('aria-label', toggleLabel);\n arrow2.setAttribute('aria-label', toggleLabel);\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.delegateFocusHandler = function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n _this.currentSeparator = separator;\n _this.getPaneDetails();\n };\n separator.delegateBlurHandler = function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n };\n separator.addEventListener('focus', separator.delegateFocusHandler);\n separator.addEventListener('blur', separator.delegateBlurHandler);\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.delegateMouseEnterHandler = function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n };\n separator.delegateMouseLeaveHandler = function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n };\n separator.delegateMouseOutHandler = function () {\n clearTimeout(hoverTimeOut);\n };\n separator.delegateMouseOverHandler = function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n };\n separator.addEventListener('mouseenter', separator.delegateMouseEnterHandler);\n separator.addEventListener('mouseleave', separator.delegateMouseLeaveHandler);\n separator.addEventListener('mouseout', separator.delegateMouseOutHandler);\n separator.addEventListener('mouseover', separator.delegateMouseOverHandler);\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n if (draggedPos > nextPaneRange - pane2MinSize) {\n if (isNullOrUndefined(pane1MaxSize) || validatedSize !== prePaneRange + pane1MaxSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n if (isNullOrUndefined(pane2MaxSize) || validatedSize !== nextPaneRange - pane2MaxSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n if (separators[i].delegateFocusHandler) {\n separators[i].removeEventListener('focus', separators[i].delegateFocusHandler);\n separators[i].delegateFocusHandler = null;\n }\n if (separators[i].delegateBlurHandler) {\n separators[i].removeEventListener('blur', separators[i].delegateBlurHandler);\n separators[i].delegateBlurHandler = null;\n }\n if (separators[i].delegateMouseEnterHandler) {\n separators[i].removeEventListener('mouseenter', separators[i].delegateMouseEnterHandler);\n separators[i].delegateMouseEnterHandler = null;\n }\n if (separators[i].delegateMouseLeaveHandler) {\n separators[i].removeEventListener('mouseleave', separators[i].delegateMouseLeaveHandler);\n separators[i].delegateMouseLeaveHandler = null;\n }\n if (separators[i].delegateMouseOutHandler) {\n separators[i].removeEventListener('mouseout', separators[i].delegateMouseOutHandler);\n separators[i].delegateMouseOutHandler = null;\n }\n if (separators[i].delegateMouseOverHandler) {\n separators[i].removeEventListener('mouseover', separators[i].delegateMouseOverHandler);\n separators[i].delegateMouseOverHandler = null;\n }\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n Splitter.prototype.getLocaleText = function (text) {\n var locale = this.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n };\n Splitter.prototype.localeSetModelOption = function (newProp) {\n var newLocale = newProp && newProp.locale && typeof newProp.locale === 'object' ? newProp.locale : this.locale;\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, newLocale);\n this.refresh();\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow >= eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = this.getChangedPanels(removed);\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.getChangedPanels = function (removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', 'e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n args.panels = this.getChangingPanels();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","splitterDefaultLocale","ToggleNavigation","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","localeSetModelOption","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","localeObj","L10n","getModuleName","locale","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","toggleLabel","getLocaleText","addMouseActions","delegateFocusHandler","getPaneDetails","delegateBlurHandler","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","delegateMouseEnterHandler","setTimeout","delegateMouseLeaveHandler","clearTimeout","delegateMouseOutHandler","delegateMouseOverHandler","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","text","getConstant","newLocale","refresh","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","dragging","drag","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","closest","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","upTarget","getChangingPanels","undefined","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","panel","updatedPanel","updatedRows","getElementById","updatedHeight","getRowColumn","setHeightWidth","heightValue","entirePanelsY","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","shadowSize","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan","TimelineOrientation","TimelineAlign","TimelineItem","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","_b","cssClasses","align","haveOneSidecontent","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotContainer","dotEleCss","dotCss","DOTCONTENT","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","classArray","updateContent","updateItems","oldPropItems","_c","_d","oppositeEle","timelineItemElements","itemLength","itemPropLength","Vertical","After"],"mappings":"8DAAA,IAAIA,GAAwC,WACxC,GAAIC,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,uBAA2BC,QAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIK,KAAKL,GAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,GAE5B,OAAO,UAAUD,EAAGC,GAEhB,QAASO,KAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,GAAIH,QAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,GAA2HjB,GAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,CACrH,IAAuB,gBAAZM,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,OACpH,KAAK,GAAIQ,GAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,EAChJ,OAAOH,GAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAM5DM,EAAO,aAGPC,EAAO,SACPC,EAAe,oBACfC,EAAe,kBACfC,EAAY,cAGZC,EAAc,gBAEdC,EAAa,mBAYbC,EAAa,eACbC,EAAW,aACXC,EAAa,eACbC,EAAY,gBAOZC,GACAC,iBAAoB,qBAKpBC,EAAgC,SAAUC,GAE1C,QAASD,KACL,MAAkB,QAAXC,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KA0B/D,MA5BAX,GAAU0C,EAAgBC,GAI1B5B,GACI8B,cACDH,EAAe7B,UAAW,WAAQ,IACrCE,GACI8B,YAAS,IACVH,EAAe7B,UAAW,kBAAe,IAC5CE,GACI8B,YAAS,IACVH,EAAe7B,UAAW,gBAAa,IAC1CE,GACI8B,YAAS,IACVH,EAAe7B,UAAW,gBAAa,IAC1CE,GACI8B,WAAS,OACVH,EAAe7B,UAAW,UAAO,IACpCE,GACI8B,WAAS,OACVH,EAAe7B,UAAW,UAAO,IACpCE,GACI8B,cACDH,EAAe7B,UAAW,cAAW,IACxCE,GACI8B,WAAS,KACVH,EAAe7B,UAAW,eAAY,IAClC6B,GACTI,iBAsBEC,EAA0B,SAAUJ,GAQpC,QAASI,GAASC,EAASC,GACvB,GAAIC,GAAQP,EAAOQ,KAAKxC,KAAMqC,EAASC,IAAYtC,IAEnD,OADAuC,GAAME,SAAU,EACTF,EA4zEX,MAt0EAlD,GAAU+C,EAAUJ,GAoBpBI,EAASlC,UAAUwC,kBAAoB,SAAUC,EAASC,GACtD,GAAK5C,KAAKsC,QAAQO,UAAUC,SAAS5B,GAGrC,IAAK,GAAI6B,GAAK,EAAGC,EAAKvD,OAAOwD,KAAKN,GAAUI,EAAKC,EAAGrC,OAAQoC,IAExD,OADWC,EAAGD,IAEV,IAAK,SACD/C,KAAKkD,gBAAgBlD,KAAKsC,QAASK,EAAQQ,OAAQ,SACnD,MACJ,KAAK,QACDnD,KAAKkD,gBAAgBlD,KAAKsC,QAASK,EAAQS,MAAO,QAClD,MACJ,KAAK,WACDpD,KAAKqD,YAAYrD,KAAKsC,QAASK,EAAQW,SACvC,MACJ,KAAK,UACDtD,KAAKuD,UAAUvD,KAAKwD,QACpB,MACJ,KAAK,qBACDxD,KAAKyD,gBACL,MACJ,KAAK,gBACDzD,KAAK0D,iBAAiBf,EAAQgB,cAC9B,MACJ,KAAK,cACD3D,KAAK4D,kBAAkBjB,EAAQkB,YAC/B,MACJ,KAAK,eACD,GAAMlB,EAAQmB,uBAAwBlE,QAASgD,EAAQkB,uBAAwBlE,OA8D3EI,KAAK+D,gBACL/D,KAAKgE,sBACLhE,KAAKiE,WACLjE,KAAKkE,YACLlE,KAAKmE,gBAAgBnE,KAAKsC,SAC1BtC,KAAKoE,aAAapE,KAAKsC,SACvBtC,KAAKqE,qBACLrE,KAAKsE,OAAOtE,KAAKuE,WACjBvE,KAAKwE,kBAtE8E,CACnF,GAAIC,GAAahF,OAAOwD,KAAKN,EAAQmB,cACjCY,EAAuBD,EAAWE,KAAK,SAAUC,GACjD,OAAQC,oBAAkBlC,EAAQmB,aAAac,GAAOE,UAE1D,IAAI9E,KAAK+E,SAAWL,EAAsB,CAEtC,IAAK,GADDM,GAAa,EACRC,EAAI,EAAGA,EAAIjF,KAAK8D,aAAanD,OAAQsE,IACI,kBAAlCjF,MAAK8D,aAAamB,aAC1BD,GAA0B,EAGdA,KAAehF,KAAK8D,aAAanD,QAEjDX,KAAK+D,gBAGb,IAAK,GAAI/C,GAAI,EAAGA,EAAIyD,EAAW9D,OAAQK,IAGnC,IAAK,GAFDkE,GAAQC,SAAS1F,OAAOwD,KAAKN,EAAQmB,cAAc9C,GAAI,IACvDoE,EAAoB3F,OAAOwD,KAAKN,EAAQmB,aAAaoB,IAAQvE,OACxD0E,EAAI,EAAGA,EAAID,EAAmBC,IAAK,CACxC,GAAIC,GAAW7F,OAAOwD,KAAKN,EAAQmB,aAAaoB,IAAQG,EACxD,QAAQC,GACJ,IAAK,UACD,GAAIC,GAAW9F,OAAOkD,EAAQmB,aAAaoB,IAAQ,GAAKI,EACnDT,qBAAkBU,KACnBvF,KAAKkE,SAASgB,GAAOM,UAAY,GACjCxF,KAAKyF,YAAYF,EAAUvF,KAAKkE,SAASgB,IAE7C,MAEJ,KAAK,YACD,GAAIQ,GAASjG,OAAOkD,EAAQmB,aAAaoB,IAAQ,GAAKI,EACtDtF,MAAK2F,eAAeT,EAAOQ,EAC3B,MAEJ,KAAK,cACD1F,KAAK4F,uBAAuBV,EAC5B,MACJ,KAAK,YACGvC,EAAQmB,aAAaoB,GAAOW,UAC5B7F,KAAKwE,YAAYU,GAGjBlF,KAAK8F,kBAAkBZ,EAE3B,MACJ,KAAK,WACDlF,KAAKqD,YAAYrD,KAAKkE,SAASgB,GAAQvC,EAAQmB,aAAaoB,GAAO5B,SACnE,MACJ,KAAK,OACD,GAAIyC,GAAatG,OAAOkD,EAAQmB,aAAaoB,IAAQ,GAAKI,EACvC,MAAfS,GAAsBlB,oBAAkBkB,IACxC/F,KAAKgG,eAAeD,EAAYb,KAmBxD,KAEJ,KAAK,YACDlF,KAAKsE,OAAO3B,EAAQ4B,UACpB,MACJ,KAAK,SACDvE,KAAKiG,qBAAqBtD,KAK1CP,EAASlC,UAAU8F,eAAiB,SAAUD,EAAYb,GACtDlF,KAAKkE,SAASgB,GAAOgB,MAAMC,UAAYJ,CAIvC,KAAK,GAFDK,GADAC,KAEAC,EAAY,EACPtF,EAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACjChB,KAAK8D,aAAa9C,GAAGuF,MAAyC,KAA/BvG,KAAKkE,SAASlD,GAAGwF,UAI5CxG,KAAK8D,aAAa9C,GAAGuF,OAC1BH,EAAuC,eAArBpG,KAAK6D,YAA+B7D,KAAKkE,SAASgB,GAAOuB,YAAczG,KAAKkE,SAASgB,GAAOwB,eAJ9GL,EAAgBC,GAAatF,EAC7BsF,IAMRF,GAAuC,eAArBpG,KAAK6D,YAAgC7D,KAAKiE,QAAQ,GAAGwC,YAAczG,KAAKiE,QAAQtD,OAAUyF,EACvGpG,KAAKiE,QAAQ,GAAGyC,aAAe1G,KAAKiE,QAAQtD,OAAUyF,CAI3D,KAAK,GADDO,KAFsC,eAArB3G,KAAK6D,YAA+B7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,cAC3FN,EAAiC,EAAdpG,KAAK4G,QACKP,EAAgB1F,OAC1C0E,EAAI,EAAGA,EAAIgB,EAAgB1F,OAAQ0E,IACkB,KAAtDrF,KAAKkE,SAASmC,EAAgBhB,IAAIa,MAAMC,YACxCnG,KAAKkE,SAASmC,EAAgBhB,IAAIa,MAAMC,UAAYQ,EAAe,KAG3E3G,MAAKkE,SAASgB,GAAOrC,UAAUgE,IAAItF,IAEvCa,EAASlC,UAAU4G,iBAAmB,WAClC9G,KAAKkE,YACLlE,KAAK+G,aACL/G,KAAKgH,kBACLhH,KAAKiE,WACLjE,KAAKiH,uBACLjH,KAAKkH,sBACLlH,KAAKmH,2BAA4B,EACjCnH,KAAKoH,4BAA6B,EAClCpH,KAAKqH,mBACLrH,KAAK4G,OAAS,EACd5G,KAAKsH,qBAAuB,YAAa,WAAY,WAAY,mBAC7D,iBAAkB,eAAgB,kBACtCtH,KAAKuH,wBAA0B,mBAAoB,aAAc,eACjEvH,KAAKwH,WAAa,IAClBxH,KAAKyH,mBACLzH,KAAK0H,cAAe,EACpB1H,KAAK2H,YAAa,GAEtBvF,EAASlC,UAAU0H,UAAY,WAC3B5H,KAAK8G,mBACL9G,KAAK6H,UAAY,GAAIC,QAAK9H,KAAK+H,gBAAiBlG,EAAuB7B,KAAKgI,QAC5EhI,KAAKiI,mBAAqBjI,KAAKkI,iBAAiBC,KAAKnI,MACrDA,KAAKoI,mBAAqBpI,KAAKqI,YAAYF,KAAKnI,MAChDA,KAAKsI,iBAAmBtI,KAAKuI,UAAUJ,KAAKnI,MAC5CA,KAAKwI,mBAAqBxI,KAAKqI,YAAYF,KAAKnI,MAChDA,KAAKyI,kBAAoBzI,KAAKuI,UAAUJ,KAAKnI,MAC7CA,KAAK0I,QAAU1I,KAAKsC,QAAQqG,WAAU,GACtC3I,KAAK4I,cAAgB5I,KAAKsC,QAAQuG,cAClCC,eAAa9I,KAAK0I,UAAW,YAAa,QAASxH,GACnD,IAAI2C,GAAmC,eAArB7D,KAAK6D,YAvRT,wBACF,qBAuRZkF,aAAU/I,KAAKsC,SAAUuB,EACzB,IACImF,GAAgB,SADTC,UAAQC,KAAKC,KACM,OAAS,EACvCnJ,MAAKqD,YAAYrD,KAAKsC,QAAS0G,GAC3BC,UAAQG,UACRL,YAAU/I,KAAKsC,SA9QT,qBAiRdF,EAASlC,UAAUmJ,eAAiB,WAChC,MAAOrJ,MAAKsJ,cAAc,kBAQ9BlH,EAASlC,UAAU6H,cAAgB,WAC/B,MAAO,YAQX3F,EAASlC,UAAUqJ,OAAS,WACxBvJ,KAAKwJ,sBACLxJ,KAAKqD,YAAYrD,KAAKsC,QAAStC,KAAKsD,UACpCtD,KAAKuD,UAAUvD,KAAKwD,SACpBxD,KAAKyJ,aAAazJ,KAAK0J,UAAU1J,KAAKsC,SAAUtC,KAAK2J,SAAS3J,KAAKsC,UACnEtC,KAAKmE,gBAAgBnE,KAAKsC,SAC1BtC,KAAKoE,aAAapE,KAAKsC,SACvBtC,KAAKqE,qBACLrE,KAAK4J,kBACL5J,KAAKsE,OAAOtE,KAAKuE,WACbvE,KAAK6J,oBACL7J,KAAKyD,iBAETzD,KAAK0H,cAAe,EACpB1H,KAAKwE,cACLxE,KAAK0H,cAAe,EACpBoC,eAAajD,IAAIkD,SAAU,mBAAoB/J,KAAKgK,gBAAiBhK,MACrEA,KAAKiK,iBACLjK,KAAKsC,QAAQ4H,cAAcC,YAAYC,iBAAiB,SAAUpK,KAAKiI,oBAAoB,GAC3F6B,eAAajD,IAAI7G,KAAKsC,QAAS,UAAWtC,KAAKqK,OAAQrK,OAE3DoC,EAASlC,UAAU8J,gBAAkB,SAAUM,GACtCA,EAAEhK,OAAOuC,UAAUC,SAASxB,IAAeuD,oBAAkB7E,KAAKuK,oBACnEvK,KAAKuK,iBAAiB1H,UAAU2H,OA7TtB,qBA8TVxK,KAAKuK,iBAAiB1H,UAAU2H,OA7TrB,wBAgUnBpI,EAASlC,UAAUuK,cAAgB,SAAUH,GACzC,GAAII,GAAmC,eAArB1K,KAAK6D,YAA+B7D,KAAK2K,aAAalE,YAAczG,KAAK2K,aAAajE,aACpGkE,EAAoC,eAArB5K,KAAK6D,YAA+B7D,KAAK6K,SAASpE,YAAczG,KAAK6K,SAASnE,aAC7FoE,EAAejG,oBAAkB7E,KAAK2D,eAjT3B,EAiT+D3D,KAAK2D,aACnF,IAAK3D,KAAK2K,aAAazE,MAAMC,UAAU4E,QAAQ,KAAO,GAAK/K,KAAK2K,aAAazE,MAAMC,UAAU4E,QAAQ,KAAO,GAAK/K,KAAK6K,SAAS3E,MAAMC,UAAU4E,QAAQ,KAAO,EAAI,CAC9J,GAAIC,GAAoBhL,KAAKiL,oBAAoBjL,KAAK2K,cAClDO,EAAgBlL,KAAKiL,oBAAoBjL,KAAK6K,SAClD7K,MAAKmL,aAAeH,EAAoBE,EACxClL,KAAKoL,WAAapL,KAAKqL,yBAAyBrL,KAAKmL,aAAe,KACrD,YAAXb,EAAEgB,MAAwBzG,oBAAkByF,EAAEiB,YAC3B,KAAdjB,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBX,EAAe,GAC1D5K,KAAKwL,cAAcxL,KAAK8D,aAAa9D,KAAKyL,eAAeC,KACtD1L,KAAKqL,yBAA0BH,EAAgB,EAAK,MACxDlL,KAAK2K,aAAazE,MAAMC,UAAa6E,EAAoB,EAAK,IAC9DhL,KAAK6K,SAAS3E,MAAMC,UAAa+E,EAAgB,EAAK,MAElC,KAAdZ,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBb,EAAc,GAC9D1K,KAAKwL,cAAcxL,KAAK8D,aAAa9D,KAAK2L,eAAeD,KACtD1L,KAAKqL,yBAA0BL,EAAoB,EAAK,OAC5DhL,KAAK2K,aAAazE,MAAMC,UAAa6E,EAAoB,EAAK,IAC9DhL,KAAK6K,SAAS3E,MAAMC,UAAa+E,EAAgB,EAAK,UAK9DlL,MAAKoL,WAAmC,eAArBpL,KAAK6D,YAAgC7D,KAAK2K,aAAalE,YAAczG,KAAK6K,SAASpE,YAClGzG,KAAK2K,aAAajE,aAAe1G,KAAK6K,SAASnE,aACpC,YAAX4D,EAAEgB,MAAwBzG,oBAAkByF,EAAEiB,YAC3B,KAAdjB,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBX,EAAe,GAC1D5K,KAAKwL,cAAcxL,KAAK8D,aAAa9D,KAAKyL,eAAeC,KAAQd,EAAeE,GACjF9K,KAAK4L,qBACL5L,KAAK2K,aAAazE,MAAMC,UAAauE,EAAcI,EAAgB,KACnE9K,KAAK6K,SAAS3E,MAAMC,UAAayE,EAAeE,EAAgB,MAC3DF,EAAeE,EAAgB,OAEhB,KAAdR,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBb,EAAc,GAC9D1K,KAAKwL,cAAcxL,KAAK8D,aAAa9D,KAAK2L,eAAeD,KAAQhB,EAAcI,IAChF9K,KAAK4L,qBACL5L,KAAK2K,aAAazE,MAAMC,UAAauE,EAAcI,EAAgB,MAC9DJ,EAAcI,EAAgB,KACnC9K,KAAK6K,SAAS3E,MAAMC,UAAayE,EAAeE,EAAgB,QAKhF1I,EAASlC,UAAUmK,OAAS,SAAUwB,GAClC,GAAI7L,KAAKkE,SAASvD,OAAS,EAAG,CAC1B,GAAIuE,GAAQlF,KAAK8L,kBAAkB9L,KAAKuK,kBACpCwB,EAAsB/L,KAAK2K,aAAa9H,UAAUC,SAlW9C,eAmWJkJ,EAAqBhM,KAAK2K,aAAa9H,UAAUC,SApW/C,cAqWFmJ,EAAsBjM,KAAK6K,SAAShI,UAAUC,SApW1C,gBAqWmB,eAArB9C,KAAK6D,aAAkD,KAAlBgI,EAAMN,SAAyC,eAArBvL,KAAK6D,aACpD,KAAlBgI,EAAMN,SACgB,eAArBvL,KAAK6D,aAAkD,KAAlBgI,EAAMN,SAAyC,eAArBvL,KAAK6D,aAAkD,KAAlBgI,EAAMN,YACtGS,IAAuBC,IAAwBF,GAAuB,IAAyBE,IACpGlC,SAASmC,cAAcrJ,UAAUC,SAASxB,IAAetB,KAAK8D,aAAaoB,GAAOiH,WAClFnM,KAAK8D,aAAaoB,EAAQ,GAAGiH,WAC7BN,EAAMO,iBACNpM,KAAKyK,cAAcoB,GACnB7L,KAAKqM,gBAAgBR,IAEE,KAAlBA,EAAMN,SAAkBvL,KAAK8D,aAAaoB,GAAOoH,aACtDvC,SAASmC,cAAcrJ,UAAUC,SAASxB,IAActB,KAAKuK,iBAAiB1H,UAAUC,SA9XjF,wBA+XF9C,KAAK2K,aAAa9H,UAAUC,SAjX7B,gBAsXA9C,KAAKuM,OAAOrH,GACZ6D,YAAU/I,KAAKuK,kBArYZ,wBAgYHvK,KAAKwM,SAAStH,GACd6D,YAAU/I,KAAKuK,kBAjYZ,0BA0YnBnI,EAASlC,UAAUsL,cAAgB,SAAUiB,GACzC,GAAI5H,oBAAkB4H,GAClB,MAAO,EAEX,IAAIC,GAAe1M,KAAK2M,qBAAqBF,EAASG,WAKtD,OAJIH,GAAS1B,QAAQ,KAAO,IACxB2B,EAAe1M,KAAKqL,yBAAyBoB,IAEvCzM,KAAK2M,qBAAqB,EAAeC,aAQvDxK,EAASlC,UAAU2M,eAAiB,SAAUC,GAC1C,GAAI9M,KAAK+M,oBAAqB,CAC1B,GAAIC,GAAOC,qBAAmBC,iBAC1BC,GACAC,QAAQ,EACRC,OAAQ,KAEZC,UAAON,EAAMA,EAAMG,GACnBnN,KAAKuN,QAAQ,qBAAsBP,GAC/BA,EAAKI,SAAWvI,oBAAkBmI,EAAKK,QACvCP,EAAQE,EAAKK,OAAOP,GAEdE,EAAKI,SACXN,EAAQG,qBAAmBO,eAAeR,EAAMF,IAGxD,MAAOA,IAEX1K,EAASlC,UAAUsJ,oBAAsB,WAIrC,IAAK,GAHDiE,GACAX,EAEKY,EAAY,EAAGA,EAAY1N,KAAKuH,uBAAuB5G,OAAQ+M,IACpEZ,EAAQ9M,KAAKsC,QAAQqL,aAAa3N,KAAKuH,uBAAuBmG,IACzD7I,oBAAkBiI,KAGnB9M,KAFAyN,EAAMzN,KAAK4N,iBAAiB5N,KAAKuH,uBAAuBmG,KAE5CZ,EAIpB,KAAK,GAAIe,GAAY,EAAGA,EAAY7N,KAAKsC,QAAQwL,SAASnN,OAAQkN,IAC9D,IAAK,GAAIE,GAAW,EAAGA,EAAW/N,KAAKsH,oBAAoB3G,OAAQoN,IAE/D,GADAjB,EAAQ9M,KAAKsC,QAAQwL,SAASD,GAAWF,aAAa3N,KAAKsH,oBAAoByG,KAC1ElJ,oBAAkBiI,GAAQ,CAE3BA,EAAiB,iBADjBW,EAAMzN,KAAK4N,iBAAiB5N,KAAKsH,oBAAoByG,MACX,cAARN,EAAkC,SAAVX,EAAoBA,EAC1EjI,oBAAkB7E,KAAK8D,aAAa+J,MACpC7N,KAAK8D,aAAa+J,IACdtH,KAAM,GACNmF,IAAK,KACLsC,IAAK,KACLlJ,QAAS,GACTqH,WAAW,EACXG,aAAa,EACbzG,WAAW,GAInB,IAAIoI,GAAUjO,KAAK8D,aAAa+J,GAAWJ,EAC/B,eAARA,GAA+B,gBAARA,GAAiC,cAARA,IAEhDzN,KAAK8D,aAAa+J,GAAWJ,GAAOX,IAEpCjI,oBAAkBoJ,IAAwB,KAAZA,KAE9BjO,KAAK8D,aAAa+J,GAAWJ,GAAOX,KAMxD1K,EAASlC,UAAU8D,oBAAsB,cAClCkK,MAAM1L,KAAKxC,KAAKsC,QAAQwL,UAAUK,QAAQ,SAAUC,GACnDC,SAAOD,KAEXpO,KAAKsO,eAETlM,EAASlC,UAAU0J,gBAAkB,WAajC,IAAK,GAZD2E,GAAavO,KAAKkE,SAASvD,OAC3B6N,KACAC,GACAlI,KAAM,GACNmF,IAAK,KACLsC,IAAK,KACLlJ,QAAS,GACTqH,WAAW,EACXtG,WAAW,EACXyG,aAAa,EACbhJ,SAAU,IAELtC,EAAI,EAAGA,EAAIuN,EAAYvN,IACxB6D,oBAAkB7E,KAAK8D,aAAa9C,IACpCwN,EAAexN,GAAKyN,EAGpBD,EAAexN,GAAKhB,KAAK8D,aAAa9C,EAG9ChB,MAAK0O,eAAgB5K,aAAgB0K,IAAkB,IAE3DpM,EAASlC,UAAUyO,WAAa,SAAUd,EAAWe,GACjD,MAAQ5O,MAAKiE,QAAQ4J,GAAWgB,cAAc,qBAA6BD,IAE/ExM,EAASlC,UAAU0N,iBAAmB,SAAUkB,GAC5C,MAAOA,GAAUZ,MAAMY,EAAUC,YAAY,KAAO,IAExD3M,EAASlC,UAAUoE,OAAS,SAAU0K,GAC9BA,EACAjG,YAAU/I,KAAKsC,SAzfjB,SA4fEwG,eAAa9I,KAAKsC,SA5fpB,UA+fNF,EAASlC,UAAUuD,eAAiB,WAChCzD,KAAKkE,SAAWlE,KAAKkE,SAAS+K,UAC9BjP,KAAKiE,QAAUjE,KAAKiE,QAAQgL,UAC5BlG,YAAU/I,KAAKiE,QAAQjE,KAAKiE,QAAQtD,OAAS,IArftC,cAsfPmI,eAAa9I,KAAKiE,QAAQ,IAtfnB,cAufPjE,KAAK0O,eAAgB5K,aAAgB9D,KAAK8D,aAAamL,YAAa,GAChEjP,KAAK6J,mBACL7J,KAAKsC,QAAQ4M,aAAa,MAAO,OAGjClP,KAAKsC,QAAQ6M,gBAAgB,QAGrC/M,EAASlC,UAAUgD,gBAAkB,SAAUZ,EAASiE,EAAMjB,GAC1D,GAAIY,GAAqB,UAAbZ,GAAyBlC,MAASgM,aAAW7I,KAAYpD,OAAUiM,aAAW7I,GAC1F8I,qBAAkB/M,EAAS4D,IAE/B9D,EAASlC,UAAUmE,mBAAqB,WACpC,IAAK,GAAIa,GAAQ,EAAGA,EAAQlF,KAAKkE,SAASvD,OAAQuE,IACrB,eAArBlF,KAAK6D,YACL7D,KAAKqH,gBAAgBiI,KAAKtP,KAAKkE,SAASgB,GAAOqK,wBAAwBnM,OAGvEpD,KAAKqH,gBAAgBiI,KAAKtP,KAAKkE,SAASgB,GAAOqK,wBAAwBpM,SAInFf,EAASlC,UAAUmD,YAAc,SAAUf,EAASkN,GAC5CA,GACAzG,YAAUzG,GAAUkN,EAAUC,MAAMD,EAAUzE,QAAQ,MAAQ,EAAI,IAAM,OAGhF3I,EAASlC,UAAUwP,YAAc,SAAUpP,GACvCyI,YAAU4G,SAAO,IAAMnO,EAAYlB,IAniBxB,mBAqiBf8B,EAASlC,UAAU0P,YAAc,SAAUtP,IAClCuE,oBAAkB7E,KAAK2K,eAAiB3K,KAAK2K,aAAa9H,UAAUC,SAvhB5D,iBAwhBR+B,oBAAkB7E,KAAK6K,WAAa7K,KAAK6K,SAAShI,UAAUC,SAxhBpD,gBAyhBTgG,eAAa6G,SAAO,IAAMnO,EAAYlB,IAxiB/B,mBA2iBf8B,EAASlC,UAAUyF,eAAiB,SAAUT,EAAOQ,GACjD,GAAImI,GAAa3I,IAAWlF,KAAKiE,QAAe,OAAKiB,EAAQ,EAAKA,EAC9DlE,EAAIkE,CACR4E,gBAAaU,OAAOxK,KAAKiE,QAAQ4J,GAAY,YAAa7N,KAAK6P,aAC3DnK,GACAoE,eAAajD,IAAI7G,KAAKiE,QAAQ4J,GAAY,YAAa7N,KAAK6P,YAAa7P,MACrEA,KAAK8P,gBACL9P,KAAK4P,YAAY5P,KAAKiE,QAAQ4J,IAC9B/E,eAAa6G,SAAO,IAAMnO,EAAYxB,KAAKiE,QAAQ4J,KAnjBhD,kBAojBH7N,KAAKiE,QAAQ4J,GAAWhL,UAAUgE,IAvjB9B,yBAwjBA3B,IAAWlF,KAAKiE,QAAe,OAC/BjE,KAAKkE,SAASgB,GAAOrC,UAAUgE,IAviB9B,eA0iBD7G,KAAKkE,SAAS2J,GAAWhL,UAAUgE,IA1iBlC,eA4iBL7G,KAAK+P,qBAAqB/O,MAI9BhB,KAAK+P,qBAAqB/O,GAC1BhB,KAAK0P,YAAY1P,KAAKiE,QAAQ4J,IAC9B7N,KAAKiE,QAAQ4J,GAAWhL,UAAU2H,OApkB1B,yBAqkBJtF,IAAWlF,KAAKiE,QAAe,OAC/BjE,KAAKkE,SAASgB,GAAOrC,UAAU2H,OApjB1B,eAujBLxK,KAAKkE,SAAS2J,GAAWhL,UAAU2H,OAvjB9B,iBA2jBjBpI,EAASlC,UAAU0F,uBAAyB,SAAUV,GAClD,GAAI2I,GAAY3I,IAAWlF,KAAKiE,eAAmBiB,EAAQ,EAAKA,EAC5D8K,EAA+B,eAArBhQ,KAAK6D,YACb7D,KAAK2O,WAAWd,EAAWpM,GAAczB,KAAK2O,WAAWd,EAAWnM,GACtEuO,EAA+B,eAArBjQ,KAAK6D,YACb7D,KAAK2O,WAAWd,EAxkBZ,iBAwkBsC7N,KAAK2O,WAAWd,EAAWlM,EAC3E3B,MAAKkQ,gBAAgBlQ,KAAKkE,SAASgB,GAAQA,GAC3ClF,KAAKmQ,oBAAoBtC,EAAWoC,EAAQD,IAEhD5N,EAASlC,UAAUkQ,cAAgB,SAAUC,EAAUC,GACnD,MAAOC,aAAU,IAAMD,EAAOtQ,KAAKiE,QAAQoM,IAAW,IAE1DjO,EAASlC,UAAUsQ,kBAAoB,SAAUtL,EAAOkL,EAAeK,GACnE,IAAK5L,oBAAkBK,GAAQ,CAC3B,GACIwL,GAAgBxL,IAAUlF,KAAKiE,QAAQtD,OACvC0P,EAAWK,EAAexL,EAAQ,EAAIA,IACrCwL,GAAgB1Q,KAAKkE,SAASgB,EAAQ,GAAGrC,UAAUC,SA9kBhD,gBA8kBqF,IAAVoC,EACnElF,KAAKoQ,cAAcC,EAAW,EAAGI,GAGjC,EAAiBzQ,KAAKoQ,cAAcC,EAAUI,GAAgBzQ,KAAKoQ,cAAcC,EAAUD,IAEjGO,UAGlBvO,EAASlC,UAAUsE,YAAc,SAAUU,GACvC,GAAI3C,GAAQvC,IACZ,IAAK6E,oBAAkBK,KAAUlF,KAAK8D,aAAaoB,GAAOW,YACnDhB,oBAAkB7E,KAAKkE,SAASgB,GAAOrC,UAAUC,SA1lB5C,gBAylBZ,CAKA,GADA9C,KAAK2H,YAAa,EACb9C,oBAAkBK,GA4ClB,CACD,IAAS0L,EAAI,EAAGA,EAAI5Q,KAAKkE,SAASvD,OAAQiQ,KACjC/L,oBAAkB7E,KAAK8D,aAAa8M,KAAO5Q,KAAK8D,aAAa8M,GAAG/K,WACjE7F,KAAKwQ,kBAAkBI,EAAG5Q,KAAK6Q,eAAeT,cAAepQ,KAAK6Q,eAAeJ,aAGzF,KAAK,GAAIG,GAAI5Q,KAAKkE,SAASvD,OAAS,EAAGiQ,GAAK,EAAGA,IAC3C,IAAK/L,oBAAkB7E,KAAK8D,aAAa8M,KAAO5Q,KAAK8D,aAAa8M,GAAG/K,YAChE7F,KAAKkE,SAAS0M,GAAG/N,UAAUC,SAlpB5B,eAkpBqD,CACrD,GAAIsN,GAAqC,eAArBpQ,KAAK6D,YAzpB3B,gBAypBwElC,CAC5D,KAANiP,IACIE,EAAY9Q,KAAKoQ,cAAcQ,EAAI,EAAGR,IAChCO,QAET3Q,KAAK6K,SAAShI,UAAUC,SAxpB7B,iBAypBQgO,EAAY9Q,KAAKoQ,cAAcQ,EAAI,EAAGR,IAChCO,aA5DK,CAC3B3Q,KAAK0H,cAAe,CACpB,IAAIoJ,OAAY,GACZJ,EAAgBxL,IAAUlF,KAAKiE,QAAQtD,OACvC0P,EAAWK,EAAexL,EAAQ,EAAIA,EAQtC6L,GAAYzQ,OANZwQ,GADCJ,GAAgB1Q,KAAKkE,SAASgB,EAAQ,GAAGrC,UAAUC,SAnmBhD,gBAmmBqF,IAAVoC,EACnElF,KAAKoQ,cAAcC,EAAW,EAAGrQ,KAAK6Q,eAAeJ,cAGrD,EAAiBzQ,KAAKoQ,cAAcC,EAAUrQ,KAAK6Q,eAAeJ,cAC1EzQ,KAAKoQ,cAAcC,EAAUrQ,KAAK6Q,eAAeT,gBAGrDY,EAAYhR,KAAKiR,aAAaF,EAClC/Q,MAAKuN,QAAQ,iBAAkByD,EAAW,SAAUE,GAChD,IAAKA,EAAmB9D,OAAQ,CAC5B,GAAI+D,KACJA,GAAe,GAAKjM,CAEpB,KAAK,GADDG,GAAI,EACCrE,EAAI,EAAGA,EAAIuB,EAAM2B,SAASvD,OAAQK,IACnCuB,EAAM2B,SAASlD,GAAG6B,UAAUC,SAlnBpC,iBAmnBQqO,EAAe9L,GAAKrE,EACpBqE,IAGR8L,GAAiBA,EAAeC,OAChC7O,EAAMiO,kBAAkBtL,EAAO3C,EAAMsO,eAAeT,cAAe7N,EAAMsO,eAAeJ,aACxF,KAASzP,EAAI,EAAGA,EAAImQ,EAAexQ,OAAQK,IAClCuB,EAAM2B,SAASiN,EAAenQ,IAAI6B,UAAUC,SA1nBrD,gBA2nBQP,EAAMiO,kBAAkBW,EAAenQ,GAAIuB,EAAMsO,eAAeT,cAAe7N,EAAMsO,eAAeJ,aAG5G,KAASzP,EAAImQ,EAAexQ,OAAQK,EAAI,EAAGA,IACvC,IAAKuB,EAAM2B,SAASiN,EAAenQ,EAAI,IAAI6B,UAAUC,SA/nBzD,eA+nBkF,CAC1E,GAAI8L,GAAcrM,EAAMsO,cACxBtO,GAAMiO,kBAAkBW,EAAenQ,EAAI,GAAI4N,EAAYwB,cAAexB,EAAY6B,cAG9F,GAAIY,GAAoB9O,EAAM+O,YAAYP,EAC1CxO,GAAMgL,QAAQ,YAAa8D,GAC3B9O,EAAMmF,cAAe,KAyBjC1H,KAAK2H,YAAa,IAEtBvF,EAASlC,UAAU2Q,aAAe,WAE9B,MADA7Q,MAAKuR,oBAEDnB,cAAqC,eAArBpQ,KAAK6D,YAAgCpC,EAAaC,EAClE+O,aAAoC,aAArBzQ,KAAK6D,YAA8BlC,EA3qB5C,kBA8qBdS,EAASlC,UAAU4F,kBAAoB,SAAUZ,GACxCL,oBAAkB7E,KAAK8D,aAAaoB,KAAYL,oBAAkB7E,KAAK8D,aAAaoB,GAAOW,aACzF7F,KAAKkE,SAASgB,GAAOrC,UAAUC,SA1qB1B,gBA2qBR9C,KAAKwQ,kBAAkBtL,EAAOlF,KAAK6Q,eAAeJ,aAAczQ,KAAK6Q,eAAeT,gBAG5FhO,EAASlC,UAAUqD,UAAY,SAAUC,GACjCA,EACAsF,eAAa9I,KAAKsC,SA3rBf,cA8rBHyG,YAAU/I,KAAKsC,SA9rBZ,eAisBXF,EAASlC,UAAUwD,iBAAmB,SAAU6C,GAG5C,IAAK,GAFDiL,GAAY3M,oBAAkB0B,GAAQ,OAASA,EAAO,KACtDkL,EAAiC,eAArBzR,KAAK6D,YA7sBX,yBACA,uBA6sBDqB,EAAQ,EAAGA,EAAQlF,KAAKiE,QAAQtD,OAAQuE,IAAS,CACtD,GAAIwM,GAAWnB,YAAU,IAAMkB,EAAWzR,KAAKsC,SAAS4C,GACpDyM,EAAYpB,YAAU,IAAM/O,EAAYkQ,GAAU,EAC7B,gBAArB1R,KAAK6D,aACL6N,EAASxL,MAAM9C,MAAQoO,EAClB3M,oBAAkB8M,KACnBA,EAAUzL,MAAM9C,MAAQoO,KAI5BE,EAASxL,MAAM/C,OAASqO,EACnB3M,oBAAkB8M,KACnBA,EAAUzL,MAAM/C,OAASqO,MAKzCpP,EAASlC,UAAU0D,kBAAoB,SAAUC,GAC7C,GAAI+N,GAA6B,aAAhB/N,CACjB7D,MAAKsC,QAAQO,UAAU2H,OAAOoH,EAvuBhB,wBACF,uBAuuBZ5R,KAAKsC,QAAQO,UAAUgE,IAAI+K,EAvuBf,sBADE,wBAyuBd,KAAS1M,EAAQ,EAAGA,EAAQlF,KAAKkE,SAASvD,OAAQuE,IAC9ClF,KAAKkE,SAASgB,GAAOrC,UAAU2H,OAAOoH,EAAaxQ,EAAeC,GAClErB,KAAKkE,SAASgB,GAAOrC,UAAUgE,IAAI+K,EAAavQ,EAAeD,EAEnE,KAAK,GAAI8D,GAAQ,EAAGA,EAAQlF,KAAKiE,QAAQtD,OAAQuE,IAC7CmJ,SAAOrO,KAAKiE,QAAQiB,GAExBlF,MAAKiE,WACLjE,KAAKoE,aAAapE,KAAKsC,UAE3BF,EAASlC,UAAU2R,eAAiB,SAAUC,EAAYC,GAEtD,MADc/R,MAAKgS,aAAaF,EAAWjJ,cAAciF,UAAUiE,IAGvE3P,EAASlC,UAAU8R,aAAe,SAAUC,GAExC,IAAK,GADDC,MACKlR,EAAI,EAAGA,EAAIiR,EAAWtR,OAAQK,IAC/BiR,EAAWjR,GAAG6B,UAAUC,SAAS3B,IACjC+Q,EAAS5C,KAAK2C,EAAWjR,GAGjC,OAAOkR,IAEX9P,EAASlC,UAAUiS,YAAc,SAAUC,GACvC,MAAOpS,MAAK6J,mBAAqB7J,KAAKqS,aAAaD,EAAQ,GAAKpS,KAAKqS,aAAaD,EAAQ,IAE9FhQ,EAASlC,UAAUoS,YAAc,SAAUF,GACvC,MAAOpS,MAAK6J,mBAAqB7J,KAAKqS,aAAaD,EAAQ,GAAKpS,KAAKqS,aAAaD,EAAQ,IAE9FhQ,EAASlC,UAAUmS,aAAe,SAAUD,GAExC,IAAK,GADDG,GACKvR,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQwL,SAASnN,OAAQK,IAC1CmE,SAASnF,KAAKsC,QAAQwL,SAAS9M,GAAGkF,MAAMkM,MAAO,MAAQA,IACvDG,EAAOvS,KAAKsC,QAAQwL,SAAS9M,GAGrC,OAAOuR,IAEXnQ,EAASlC,UAAUsS,cAAgB,SAAUJ,EAAO9G,GAChD,GAAIpG,GACAuN,CAEAA,GADS,SAATnH,EACQtL,KAAKkE,SAGLlE,KAAKiE,OAEjB,KAAK,GAAIjD,GAAI,EAAGA,EAAIyR,EAAM9R,OAAQK,IAC1BmE,SAASsN,EAAMzR,GAAGkF,MAAMkM,MAAO,MAAQA,IACvClN,EAAQlE,EAGhB,OAAOkE,IAEX9C,EAASlC,UAAUwS,oBAAsB,SAAUC,GAC/C,GAAInB,GAAY3M,oBAAkB7E,KAAK2D,eAAiB,MAAQ3D,KAAK2D,cAAgB,IAC5D,gBAArB3D,KAAK6D,YACL8O,EAAczM,MAAM9C,MAAQoO,EAG5BmB,EAAczM,MAAM/C,OAASqO,GAGrCpP,EAASlC,UAAU0S,iBAAmB,SAAUd,GAC5C,GAAIa,GAAgB3S,KAAK6S,cAAc,MACvC9J,aAAU4J,IAAiBnR,EAxxBrB,YAyxBNxB,KAAK0S,oBAAoBC,GACzBb,EAAWgB,YAAYH,IAE3BvQ,EAASlC,UAAUwJ,UAAY,SAAUpJ,GACxBN,KAAKmD,MAElB,OADiC,KAAxB7C,EAAO4F,MAAM/C,QAAiC,SAAhBnD,KAAKmD,OAAoB7C,EAAO4F,MAAM/C,OAASnD,KAAKmD,QAG/Ff,EAASlC,UAAUyJ,SAAW,SAAUrJ,GACxBN,KAAKoD,KAEjB,OAD+B,KAAvB9C,EAAO4F,MAAM9C,OAA+B,SAAfpD,KAAKoD,MAAmB9C,EAAO4F,MAAM9C,MAAQpD,KAAKoD,OAG3FhB,EAASlC,UAAUuJ,aAAe,SAAUtG,EAAQC,GAChDiM,oBAAkBrP,KAAKsC,SAAWa,OAAUA,EAAQC,MAASA,KAEjEhB,EAASlC,UAAUiQ,oBAAsB,SAAUjL,EAAO+K,EAAQD,GACzDnL,oBAAkB7E,KAAK8D,aAAaoB,KAChCL,oBAAkB7E,KAAK8D,aAAaoB,GAAOoH,eACxCtM,KAAK8D,aAAaoB,GAAOoH,YACzBxD,eAAakH,IAAUpO,IAGvBmH,YAAUiH,IAAUpO,IAEnBiD,oBAAkB7E,KAAK8D,aAAaoB,EAAQ,MACzClF,KAAK8D,aAAaoB,EAAQ,GAAGoH,YAC7BxD,eAAamH,IAAUrO,IAGvBmH,YAAUkH,IAAUrO,KAGvBiD,oBAAkB7E,KAAK8D,aAAaoB,EAAQ,KACxClF,KAAK8D,aAAaoB,EAAQ,iBACvBlF,KAAK8D,aAAaoB,EAAQ,GAAGoH,YAC7BxD,eAAamH,IAAUrO,IAGvBmH,YAAUkH,IAAUrO,OAO5CQ,EAASlC,UAAU6S,gBAAkB,WACR,eAArB/S,KAAK6D,aACL7D,KAAKgT,UAAYvR,EACjBzB,KAAKiT,WAv0BC,kBA00BNjT,KAAKgT,UAAYtR,EACjB1B,KAAKiT,WAAatR,IAG1BS,EAASlC,UAAUgT,gBAAkB,SAAUlS,GAC3C,GAAIuB,GAAQvC,KACRyR,EAAYzR,KAAK6S,cAAc,MACnC7S,MAAKiE,QAAQqL,KAAKmC,EAClB,IAAIxB,GAASjQ,KAAK6S,cAAc,UAC5B7C,EAAShQ,KAAK6S,cAAc,SAChC5C,GAAOf,aAAa,WAAY,MAChCc,EAAOd,aAAa,WAAY,KAChC,IAAIiE,GAAcnT,KAAKoT,cAAc,mBACrCnD,GAAOf,aAAa,aAAciE,GAClCnD,EAAOd,aAAa,aAAciE,GAClClD,EAAOf,aAAa,OAAQ,UAC5Bc,EAAOd,aAAa,OAAQ,SAC5B,IAAI3I,GAAO1B,oBAAkB7E,KAAK2D,eAAiB,MAAQ3D,KAAK2D,cAAgB,IAsChF,OArCyB,eAArB3D,KAAK6D,aACL7D,KAAK+S,kBACLhK,YAAUiH,IA/1BD,mBA+1B2BvO,EAAYG,IAChDmH,YAAUkH,IAh2BD,mBACH,gBA+1B2CrO,IACjDmH,YAAU0I,IAAanQ,EA/2BjB,2BAg3BNmQ,EAAUvL,MAAM9C,MAAQmD,IAGxBwC,YAAUkH,IAr2BD,mBAq2B2BtO,EAAYC,IAChDmH,YAAUiH,IAt2BD,mBAs2B2BtO,EAAUE,IAC9CmH,YAAU0I,IAAanQ,EAp3BjB,yBAq3BNtB,KAAK+S,kBACLtB,EAAUvL,MAAM/C,OAASoD,GAE7BvG,KAAKqT,gBAAgB5B,GACrBA,EAAUqB,YAAY9C,GACtBhQ,KAAK4S,iBAAiBnB,GACtBA,EAAUqB,YAAY7C,GACtBjQ,KAAKmQ,oBAAoBnP,EAAGiP,EAAQD,GACpCyB,EAAUvC,aAAa,WAAY,MACnCuC,EAAUvC,aAAa,cAAe,QAClClP,KAAK6J,mBACL4H,EAAUvC,aAAa,MAAO,OAG9BuC,EAAUtC,gBAAgB,OAE9BsC,EAAU6B,qBAAuB,WAC7B7B,EAAU5O,UAAUgE,IAh4BT,sBAi4BXtE,EAAMgI,iBAAmBkH,EACzBlP,EAAMgR,kBAEV9B,EAAU+B,oBAAsB,WAC5B/B,EAAU5O,UAAU2H,OAr4BT,uBAu4BfiH,EAAUrH,iBAAiB,QAASqH,EAAU6B,sBAC9C7B,EAAUrH,iBAAiB,OAAQqH,EAAU+B,qBACtC/B,GAEXrP,EAASlC,UAAU6P,qBAAuB,SAAU7K,GAChDlF,KAAKuT,iBACDvT,KAAK8P,cACL9P,KAAKkE,SAASgB,GAAOrC,UAAUgE,IA93BtB,eAi4BT7G,KAAKkE,SAASgB,GAAOrC,UAAU2H,OAj4BtB,gBAo4BjBpI,EAASlC,UAAUkE,aAAe,SAAU9D,GAIxC,IAAK,GADDmR,GAFAlD,EAAavO,KAAKkE,SAASvD,OAC3B8S,EAAYnT,EAAOwN,SAEd9M,EAAI,EAAGA,EAAIuN,EAAYvN,IAC5B,GAAIA,EAAIuN,EAAa,GAYjB,GAXAkD,EAAYzR,KAAKkT,gBAAgBlS,GACjCqO,oBAAkBoC,GAAaW,MAAc,EAAJpR,EAAS,IAClDhB,KAAKgH,eAAesI,KAAU,EAAJtO,EAAS,GACnCyS,EAAUzS,GAAG0S,WAAWZ,YAAYrB,GACpCzR,KAAKuK,iBAAmBkH,EACxBA,EAAUvC,aAAa,OAAQ,aAC/BuC,EAAUvC,aAAa,gBAAiBlO,EAAE4L,YACrC/H,oBAAkB7E,KAAK6D,cACxB4N,EAAUvC,aAAa,mBAAoBlP,KAAK6D,YAAY8P,eAEhE3T,KAAK4T,mBACA/O,oBAAkB4M,GACnB,GAAIzR,KAAK8P,cAAe,CACpBhG,eAAajD,IAAI4K,EAAW,YAAazR,KAAK6P,YAAa7P,KAC3D,IAAI6T,GAAmC,SAAtB5K,UAAQC,KAAKC,KAAmB,cAAgB,YACjEW,gBAAajD,IAAI4K,EAAWoC,EAAW7T,KAAK6P,YAAa7P,MACzDyR,EAAU5O,UAAUgE,IA56BxB,yBA66BI7G,KAAK+P,qBAAqB/O,OAG1B+H,aAAU4G,SAAO,IAAMnO,EAAYiQ,IA76BxC,sBAk7BCA,IACA1I,YAAU0I,GAn6Bf,cAq6BKlD,EAAa,GACbvO,KAAK+P,qBAAqB/O,EAItC,IAA0B,SAAtBiI,UAAQC,KAAKC,KAEb,IAAK,GADD2K,GAAS9T,KAAKsC,QAAQyR,iBAAiB,iCAClC/S,EAAI,EAAGA,EAAI8S,EAAOnT,OAAQK,IAAK,CACpC,GAAIgT,GAAUnP,oBAAkB7E,KAAK2D,eAAiB,EAAI3D,KAAK2D,aAC/DmQ,GAAO9S,GAAGkF,MAAM+N,YAAcD,EAAU,EAAI,KAC5CF,EAAO9S,GAAGkF,MAAMgO,aAAeF,EAAU,EAAI,OAIzD5R,EAASlC,UAAU4P,YAAc,WAC7B,GAAI3D,IAAY,CAQhB,SAPMtH,oBAAkB7E,KAAK8D,aAAa9D,KAAKmU,0BAC3CnU,KAAK8D,aAAa9D,KAAKmU,wBAAwBhI,YAC9CtH,oBAAkB7E,KAAK8D,aAAa9D,KAAKoU,sBAC1CpU,KAAK8D,aAAa9D,KAAKoU,oBAAoBjI,WAC3CtH,oBAAkB7E,KAAK8D,aAAa9D,KAAKoU,wBACzCjI,GAAY,GAETA,GAEX/J,EAASlC,UAAUmT,gBAAkB,SAAU5B,GAC3C,GACI4C,GACAC,EAFA/R,EAAQvC,IAGZyR,GAAU8C,0BAA4B,WAElCF,EAAQG,WAAW,WACfzL,YAAU0I,IAv9BJ,uBAw9BPlP,EAAMiF,aAEbiK,EAAUgD,0BAA4B,WAClCC,aAAaL,GACbvL,eAAa2I,IA59BH,uBA89BdA,EAAUkD,wBAA0B,WAChCD,aAAaJ,IAEjB7C,EAAUmD,yBAA2B,WAEjCN,EAAeE,WAAW,WACtBzL,YAAU0I,IAp+BJ,yBAu+BdA,EAAUrH,iBAAiB,aAAcqH,EAAU8C,2BACnD9C,EAAUrH,iBAAiB,aAAcqH,EAAUgD,2BACnDhD,EAAUrH,iBAAiB,WAAYqH,EAAUkD,yBACjDlD,EAAUrH,iBAAiB,YAAaqH,EAAUmD,2BAEtDxS,EAASlC,UAAU2U,aAAe,SAAUvK,GACxC,MAAQA,GAAES,QAAQ,UAAY,EAAK,QAAU,SAEjD3I,EAASlC,UAAU4U,uBAAyB,SAAUxU,GAClDN,KAAKuK,iBAAmBvK,KAAK+U,YAAYzU,GAAUA,EAAOuI,cAAgBvI,GAE9E8B,EAASlC,UAAU6U,YAAc,SAAUzU,GACvC,OAAQA,EAAOuC,UAAUC,SAASxB,IAEtCc,EAASlC,UAAU8U,aAAe,SAAU1K,GACxC,GAAI2K,IAAU,CAKd,QAJkC,UAA9BjV,KAAK6U,aAAavK,EAAEgB,QAAuBzG,oBAAkByF,EAAE4K,cAC1B,UAArClV,KAAK6U,aAAavK,EAAE4K,gBACpBD,GAAU,GAEPA,GAEX7S,EAASlC,UAAUiV,qBAAuB,SAAU7K,EAAGgB,GACnD,GAAItL,KAAKgV,aAAa1K,GAClBtK,KAAKoV,mBAAoBC,EAAG/K,EAAEgL,MAAOC,EAAGjL,EAAEkL,OAASlK,OAElD,CACD,GAAImK,GAAkC,SAAtBxM,UAAQC,KAAKC,KAAkBmB,EAAEoL,QAAQ,GAAKpL,CAC9DtK,MAAKoV,mBAAoBC,EAAGI,EAAUH,MAAOC,EAAGE,EAAUD,OAASlK,KAG3ElJ,EAASlC,UAAUkV,kBAAoB,SAAUO,EAAarK,GAC7C,aAATA,EACAtL,KAAKiH,oBAAsB0O,EAG3B3V,KAAKkH,mBAAqByO,GAGlCvT,EAASlC,UAAUgI,iBAAmB,WAClC,GAAI3F,GAAQvC,KACR4V,EAAY5V,KAAKkE,SAASvD,MAC9B,KAAKoJ,SAAS8L,KAAK/S,SAAS9C,KAAKsC,SAE7B,WADAyH,UAASI,YAAY2L,oBAAoB,SAAU9V,KAAKiI,mBAG5D,KAAK,GAAIjH,GAAI,EAAGA,EAAI4U,EAAW5U,IACvB6D,oBAAkB7E,KAAK8D,aAAa9C,GAAGuF,OACvCvG,KAAKkE,SAASlD,GAAG6B,UAAU2H,OAAOjJ,GAElCqU,EAAY,IAAM5U,GACIhB,KAAKsC,QAAQyR,iBAAiB,IAAMxS,GAAaZ,SAC/CiV,GACqB,KAArC5V,KAAKkE,SAASlD,GAAGkF,MAAMC,WACvB2C,eAAa9I,KAAKkE,SAASlD,IAAKO,EAK5CqU,GAAY,GACZpB,WAAW,WACPjS,EAAMwT,oBAAmB,IAC1B,MAGX3T,EAASlC,UAAU6V,mBAAqB,SAAUC,GAK9C,IAAK,GAJD5K,GAAa,EACb/E,KACAC,EAAY,EACZwH,EAAW9N,KAAKsC,QAAQwL,SACnB9M,EAAI,EAAGiV,EAAMnI,EAASnN,OAAQK,EAAIiV,EAAKjV,IAC5CoK,GAAmC,eAArBpL,KAAK6D,YAA+BiK,EAAS9M,GAAGyF,YAC1DqH,EAAS9M,GAAG0F,YAEpB,KAAK,GAAIrB,GAAI,EAAG4Q,EAAMjW,KAAKiE,QAAQtD,OAAQ0E,EAAI4Q,EAAK5Q,IAChD+F,GAAmC,eAArBpL,KAAK6D,YAA+BsB,SAAS+Q,iBAAiBlW,KAAKiE,QAAQoB,IAAI8Q,WAAY,IACrGhR,SAAS+Q,iBAAiBlW,KAAKiE,QAAQoB,IAAI8Q,WAAY,IACvDhR,SAAS+Q,iBAAiBlW,KAAKiE,QAAQoB,IAAI+Q,UAAW,IAClDjR,SAAS+Q,iBAAiBlW,KAAKiE,QAAQoB,IAAIgR,aAAc,GAKrE,KAAK,GAHDC,GAA4B,eAArBtW,KAAK6D,YAA+B7D,KAAKsC,QAAQmE,aACxC,EAAdzG,KAAK4G,OAAcwE,GACrBpL,KAAKsC,QAAQoE,cAA+B,EAAd1G,KAAK4G,OAAcwE,GAC5CpK,EAAI,EAAGiV,EAAMjW,KAAKkE,SAASvD,OAAQK,EAAIiV,EAAKjV,KACd,KAA/BhB,KAAKkE,SAASlD,GAAGwF,UAAqBxG,KAAK8D,aAAa9C,SAA6C,KAA/BhB,KAAKkE,SAASlD,GAAGwF,UACnFxG,KAAK8D,aAAa9C,SAA6C,KAA/BhB,KAAKkE,SAASlD,GAAGwF,aACrDH,EAAgBC,GAAatF,EAC7BsF,IAIR,KAAK,GADDK,GAAe2P,EAAOjQ,EAAgB1F,OACjC0E,EAAI,EAAG4Q,EAAM5P,EAAgB1F,OAAQ0E,EAAI4Q,EAAK5Q,IACO,KAAtDrF,KAAKkE,SAASmC,EAAgBhB,IAAIa,MAAMC,YACxCnG,KAAKkE,SAASmC,EAAgBhB,IAAIa,MAAMC,UAAiC,eAArBnG,KAAK6D,YACpD7D,KAAKkE,SAASmC,EAAgBhB,IAAIoB,YAAcE,EAAgB,KAChE3G,KAAKkE,SAASmC,EAAgBhB,IAAIqB,aAAeC,EAAgB,KAG9E,IAA6B,IAAzB3G,KAAKkE,SAASvD,QAAgBqV,EAO9B,IAAK,GANDJ,GAAY5V,KAAKkE,SAASvD,OAC1B8L,MAAW,GACXC,MAAe,GAEf6J,MAAa,GACbC,MAAW,GACNxV,EAAI,EAAGA,EAAI4U,EAAW5U,IAC3B,IAAK6D,oBAAkB7E,KAAK8D,aAAa9C,GAAG0K,OACxCgB,EAAe1M,KAAK2M,qBAAsB3M,KAAK8D,aAAa9C,OAAQ4L,YAChE5M,KAAK8D,aAAa9C,GAAG0K,IAAIX,QAAQ,KAAO,IACxC2B,EAAe1M,KAAKqL,yBAAyBrL,KAAK8D,aAAa9C,GAAG0K,MAEtEe,EAAWzM,KAAK2M,qBAAqB,EAAeC,aAC1B,eAArB5M,KAAK6D,YAA+B7D,KAAKkE,SAASlD,GAAGyF,YAAczG,KAAKkE,SAASlD,GAAG0F,cAAgB+F,GAAU,CAV3G,IAWAzL,GACAuV,EAAavW,KAAKkE,SAASlD,GAC3BwV,EAAWxW,KAAKkE,SAASlD,EAAI,KAG7BuV,EAAavW,KAAKkE,SAASlD,GAC3BwV,EAAWxW,KAAKkE,SAASlD,EAAI,GAEjC,IAAIyV,GAAWhK,GAAiC,eAArBzM,KAAK6D,YAC5B7D,KAAKkE,SAASlD,GAAGyF,YAAczG,KAAKkE,SAASlD,GAAG0F,cAChDgQ,EAAYH,EAAWrQ,MAAMC,UAAU4E,QAAQ,MAAQ,EACvD4L,EAAwC,eAArB3W,KAAK6D,YAA+B0S,EAAW9P,YAAc8P,EAAW7P,cAC1F7B,oBAAkB0R,IAA8C,KAA/BA,EAAWrQ,MAAMC,WAAoBoQ,EAAW1T,UAAUC,SAASvB,KACrGgV,EAAWrQ,MAAMC,UAAYuQ,EAAY1W,KAAK4W,yBAAyBD,EAAmBF,GAAY,IAC/FE,EAAmBF,EAAY,KAE1C,IAAII,GAAsC,eAArB7W,KAAK6D,YAA+B2S,EAAS/P,YAAc+P,EAAS9P,YACpF7B,qBAAkB2R,IAA0C,KAA7BA,EAAStQ,MAAMC,WAAqBqQ,EAAS3T,UAAUC,SAASvB,KAChGiV,EAAStQ,MAAMC,UAAYqQ,EAAStQ,MAAMC,UAAU4E,QAAQ,MAAQ,EAChE/K,KAAK4W,yBAAyBC,EAAiBJ,GAAY,IAAOI,EAAiBJ,EAAY,QAO3HrU,EAASlC,UAAU4W,iBAAmB,WAClC/M,SAASK,iBAAiB,YAAapK,KAAKoI,oBAAoB,GAChE2B,SAASK,iBAAiB,UAAWpK,KAAKsI,kBAAkB,EAC5D,IAAIyO,GAAwC,SAAtB9N,UAAQC,KAAKC,KAAmB,cAAgB,YAClE6N,EAAuC,SAAtB/N,UAAQC,KAAKC,KAAmB,YAAc,UACnEY,UAASK,iBAAiB2M,EAAgB/W,KAAKwI,oBAAoB,GACnEuB,SAASK,iBAAiB4M,EAAehX,KAAKyI,mBAAmB,IAErErG,EAASlC,UAAU+W,mBAAqB,WACpCjX,KAAKsC,QAAQ4H,cAAcC,YAAY2L,oBAAoB,SAAU9V,KAAKiI,mBAC1E,IAAI8O,GAAwC,SAAtB9N,UAAQC,KAAKC,KAAmB,cAAgB,YAClE6N,EAAuC,SAAtB/N,UAAQC,KAAKC,KAAmB,YAAc,UACnEY,UAAS+L,oBAAoB,YAAa9V,KAAKoI,oBAAoB,GACnE2B,SAAS+L,oBAAoB,UAAW9V,KAAKsI,kBAAkB,GAC/DyB,SAAS+L,oBAAoBiB,EAAgB/W,KAAKwI,oBAAoB,GACtEuB,SAAS+L,oBAAoBkB,EAAehX,KAAKyI,mBAAmB,IAExErG,EAASlC,UAAU0T,gBAAkB,WACjC9J,eAAajD,IAAI7G,KAAKuK,iBAAkB,mBAAoBvK,KAAKkX,aAAclX,OAEnFoC,EAASlC,UAAUgX,aAAe,SAAU5M,GACxC,IAAKA,EAAEhK,OAAOuC,UAAUC,SA/nCX,oBA+nCqC,CAC9C,GAAIqU,GAAY5G,YAAU,+CACtB4G,GAAUxW,OAAS,GACnBmI,cAAYqO,EA1oCN,qBA4oCV7M,EAAEhK,OAAOuC,UAAUgE,IA5oCT,qBA8oCd7G,KAAKoX,gBAAgB9M,EACrB,IAAI+M,GAAO/M,EAAEhK,QACT+W,EAAKxU,UAAUC,SAASrB,IAAe4V,EAAKxU,UAAUC,SAvoChD,kBAwoCNuU,EAAKxU,UAAUC,SAASnB,IAAe0V,EAAKxU,UAAUC,SAASpB,MAC1D1B,KAAK6K,SAAShI,UAAUC,SAloCvB,kBAkoCiD9C,KAAK2K,aAAa9H,UAAUC,SAloC7E,iBAsoCF9C,KAAKsX,aAAahN,GAHlBtK,KAAKuX,eAAejN,GAKxBtK,KAAK+V,uBAGb3T,EAASlC,UAAUoX,aAAe,SAAUhN,GACxC,GAAI/H,GAAQvC,KACRgR,EAAYhR,KAAKiR,aAAa3G,EAC9BtK,MAAK2H,WACL3H,KAAKuN,QAAQ,eAAgByD,EAAW,SAAUwG,GACzCA,EAAiBpK,QAClB7K,EAAMkV,WAAWnN,EAErB,IAAIoN,GAAkBnV,EAAM+O,YAAYhH,EACxC/H,GAAMgL,QAAQ,WAAYmK,KAI9B1X,KAAKyX,WAAWnN,IAGxBlI,EAASlC,UAAUyX,QAAU,SAAUrN,GAInC,MAHkBA,GAAEhK,OAAOkP,UAAUC,MAAM,KAAKmI,OAAO,SAAUpI,GAC7D,MArqCS,qBAqqCFA,GAAgCA,IAAc5N,IAEtC,IAEvBQ,EAASlC,UAAUuX,WAAa,SAAUnN,GACtCtK,KAAK6X,mBACL,IAAIC,GAAgB9X,KAAKsC,QAAQyR,iBAAiB,gBAAqBpT,OACnEoX,GAAe/X,KAAK2K,aAAa9H,UAAUC,SArqCnC,gBAsqCR9C,KAAK2K,aAAa9H,UAAUC,SAASvB,KAAiBvB,KAAK6K,SAAShI,UAAUC,SAtqCtE,iBAuqCP9C,KAAK6K,SAAShI,UAAUC,SAxqCnB,eAwqC4C9C,KAAK6K,SAASmN,mBAAmBnV,UAAUC,SAAS3B,KACrGnB,KAAK6K,SAASmN,mBAAmBnV,UAAUC,SAASvB,MAAkBuW,IAAkB9X,KAAKkE,SAASvD,OAAS,GAChHsX,GAzqCQ,cACF,iBAyqCNZ,EAAOrX,KAAK2X,QAAQrN,GACpB4N,EAAab,IAAS5V,GAAc4V,IAAS3V,EAC7CyW,EAAeD,EAAalY,KAAK6K,SAAW7K,KAAK2K,aACjD8M,EAAaS,EAAalY,KAAK2K,aAAe3K,KAAK6K,SACnDuN,EAAkBF,EAAalY,KAAKyL,cAAgBzL,KAAK2L,aAC7D7C,gBAAaqP,GAAeF,GAC5BE,EAAajJ,aAAa,cAAe,QAEzC,IAAImJ,GAASrY,KAAKsC,QAAQyR,iBAAiB,gBAAqBpT,MAChE,IAAI0X,EAAS,EACJZ,EAAW5U,UAAUC,SAprClB,iBAqrCJiG,YAAU0O,GAtrCR,cAurCFA,EAAWvI,aAAa,gBAAiB,aAG5C,IAAe,IAAXmJ,EACL,IAAK,GAAIrX,GAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACjChB,KAAKkE,SAASlD,GAAG6B,UAAUC,SA3rC5B,iBA4rCAgG,eAAa9I,KAAKkE,SAASlD,IA7rC7B,cA8rCEhB,KAAKkE,SAASlD,GAAGkO,aAAa,gBAAiB,SAIvDlP,MAAK2H,YACL3H,KAAKsY,mBAAmBF,GAAiB,GAE7CpY,KAAKuY,oBAAoBjO,EAAG+M,GAC5BrX,KAAKwY,iBACDT,IACA/X,KAAK2K,aAAa9H,UAAU2H,OAxsCtB,cAysCNxK,KAAK2K,aAAauE,aAAa,gBAAiB,SAChDlP,KAAK2K,aAAazE,MAAMuS,SAAW,KAG3CrW,EAASlC,UAAUsY,eAAiB,WAEhC,IAAK,GADDV,GAAgB,EACXzS,EAAI,EAAGA,EAAIrF,KAAKsC,QAAQwL,SAASnN,OAAQ0E,IAC1CrF,KAAKsC,QAAQwL,SAASzI,GAAGxC,UAAUC,SA/sC/B,iBAgtCJgV,GAAgC,EAKxC,KAAK,GAFDY,GAAcZ,IAAkB9X,KAAKkE,SAASvD,OAAS,EACvD8R,EAAQzS,KAAKkE,SACRlD,EAAI,EAAGA,EAAIyR,EAAM9R,OAAQK,IAC9ByR,EAAMzR,GAAGkF,MAAMuS,SAAW,GACtBC,GAAe1Y,KAAKkE,SAASlD,GAAG6B,UAAUC,SAvtCtC,gBAutCiE9C,KAAK8D,aAAa9C,GAAGuF,MAC1FvF,IAAMhB,KAAKkE,SAASvD,OAAS,IAC7B8R,EAAMzR,GAAGkF,MAAMuS,SAAW,IAE1BhG,EAAMzR,GAAG6B,UAAUC,SA5tCjB,cA6tCF2P,EAAMzR,GAAGkF,MAAMuS,SAAW,IAErBhG,EAAMzR,GAAG6B,UAAUC,SA9tCpB,iBA+tCJ2P,EAAMzR,GAAGkF,MAAMuS,SAAW,MAItCrW,EAASlC,UAAUyY,kBAAoB,SAAUC,EAAWhK,GACxD7F,YAAU4G,SAAO,IAAMf,EAAagK,IAAahX,IAErDQ,EAASlC,UAAU2Y,kBAAoB,SAAUD,EAAWhK,GACxD9F,eAAa6G,SAAO,IAAMf,EAAagK,IAAahX,IAExDQ,EAASlC,UAAU4Y,sBAAwB,SAAUxO,EAAGyO,GACpD/Y,KAAKuR,kBACL,IAAIyH,GAAahZ,KAAKsQ,MAClB2I,EAAWjZ,KAAKkZ,kBAAqBlZ,KAAKiE,QAAQtD,OAAS,EAAKX,KAAKmZ,QAAUnZ,KAAKoZ,QACpFC,EAAgBrZ,KAAKkZ,kBAAqBlZ,KAAKiE,QAAQtD,OAAS,EAAKX,KAAKkZ,gBAAkB,EAC1FlZ,KAAKkZ,gBAAkB,CAC7B,IAAK5O,EAAEhK,OAAOuC,UAAUC,SAASlB,GAkC7B5B,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,GACrCrU,oBAAkBoU,IACnBjZ,KAAK2F,eAAe0T,GAAe,GAElCrZ,KAAK8D,aAAa9D,KAAK2L,eAAeW,aAAgBtM,KAAK8D,aAAa9D,KAAKyL,eAAea,aAOxFzH,oBAAkBoU,IACnBjZ,KAAK2Y,kBAAkBM,EAAUD,GAErChZ,KAAK6Y,kBAAkB7Y,KAAKuK,iBAAkByO,KATzCnU,oBAAkBoU,IACnBjZ,KAAK2Y,kBAAkBM,EAAUF,GAErC/Y,KAAK2Y,kBAAkB3Y,KAAKuK,iBAAkByO,QAzClD,IAAIhZ,KAAKsZ,cAAcC,mBAAqBvZ,KAAKsZ,cAAcE,kBAC3D,GAAIxZ,KAAK8D,aAAa9D,KAAK2L,eAAeW,aAAetM,KAAK8D,aAAa9D,KAAKyL,eAAea,aAG3F,GAFAtM,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,GAC1ClZ,KAAK2Y,kBAAkB3Y,KAAKuK,iBAAkBwO,IACzClU,oBAAkBoU,GAAW,CAC9B,GAAIQ,GAAqBJ,EACrBK,EAAqBL,EAAgB,EACrCM,EAAgB3Z,KAAK4Z,iBAAiBH,EAAoBC,EAC1D1Z,MAAK8D,aAAa2V,GAAoBnN,aACtCtM,KAAK8D,aAAa4V,GAAoBpN,cAChB,IAAlBqN,GACA3Z,KAAK2Y,kBAAkBM,EAAUD,GACjChZ,KAAK2F,eAAe0T,GAAe,IAEZ,IAAlBM,IACL3Z,KAAK6Z,aAAaZ,GAClBjZ,KAAK2F,eAAe0T,GAAe,IAElCrZ,KAAK8D,aAAa2V,GAAoBnN,aACtCtM,KAAK8D,aAAa4V,GAAoBpN,aACvCtM,KAAK2Y,kBAAkBM,EAAUF,SAM7C/Y,MAAK6Y,kBAAkB7Y,KAAKuK,iBAAkByO,GAC9ChZ,KAAK2Y,kBAAkB3Y,KAAKuK,iBAAkBwO,GAC9C/Y,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,IAuB1D9W,EAASlC,UAAUqX,eAAiB,SAAUjN,GAC1C,GAAI/H,GAAQvC,KACRgR,EAAYhR,KAAKiR,aAAa3G,EAC9BtK,MAAK0H,aACL1H,KAAKmY,aAAa7N,GAGlBtK,KAAKuN,QAAQ,iBAAkByD,EAAW,SAAUE,GAChD,IAAKA,EAAmB9D,OAAQ,CAC5B7K,EAAM4V,aAAa7N,EACnB,IAAI+G,GAAoB9O,EAAM+O,YAAYhH,EAC1C/H,GAAMgL,QAAQ,YAAa8D,OAK3CjP,EAASlC,UAAUiY,aAAe,SAAU7N,GACxCtK,KAAK6X,mBACL,IAAIC,GAAgB9X,KAAKsC,QAAQyR,iBAAiB,gBAAqBpT,OACnEoX,EAAc/X,KAAK2K,aAAa9H,UAAUC,SAASvB,KAClDvB,KAAK2K,aAAa9H,UAAUC,SAvzCrB,iBAuzCiD9C,KAAK6K,SAAShI,UAAUC,SAvzCzE,gBAwzCR9C,KAAK6K,SAASmN,mBAAmBnV,UAAUC,SAAS3B,KACnDnB,KAAK6K,SAASmN,mBAAmBnV,UAAUC,SAASvB,KACpDvB,KAAK6K,SAASmN,mBAAmBnV,UAAUC,SA1zCpC,kBA2zCNgV,IAAkB9X,KAAKkE,SAASvD,OAAS,IAAQX,KAAK6K,SAAShI,UAAUC,SA3zCnE,iBA4zCP9C,KAAK2K,aAAa9H,UAAUC,SAASvB,IAAgBvB,KAAK6K,SAAShI,UAAUC,SAASvB,GACvF0W,GA7zCQ,cACF,iBA6zCNZ,EAAOrX,KAAK2X,QAAQrN,GACpB4N,EAAab,IAAS5V,GAAc4V,IAAS3V,EAC7CyW,EAAeD,EAAalY,KAAK2K,aAAe3K,KAAK6K,SACrD4M,EAAaS,EAAalY,KAAK6K,SAAW7K,KAAK2K,aAC/CmP,EAAoB5B,EAAalY,KAAK2L,cAAgB3L,KAAKyL,aAM/D,IALA3C,eAAaqP,GAp0CH,cAq0CVA,EAAajJ,aAAa,gBAAiB,SAC3CnG,YAAUoP,GAAeF,GACzBE,EAAajJ,aAAa,cAAe,QACS,KAAjCiJ,EAAajS,MAAMC,UAEhC4C,YAAU0O,GA10CJ,cA20CNA,EAAWvI,aAAa,gBAAiB,YAExC,CAED,IAAK,GADD6K,IAAmB,EACd/Y,EAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACtC,IAAKhB,KAAKkE,SAASlD,GAAG6B,UAAUC,SA/0C5B,gBAg1CyC,KAArC9C,KAAKkE,SAASlD,GAAGkF,MAAMC,YAAqBnG,KAAKkE,SAASlD,GAAG6B,UAAUC,SAh1C3E,iBAi1CQ9C,KAAKkE,SAASlD,GAAG6B,UAAUC,SAl1CrC,cAk1C4D,CACtDiG,YAAU/I,KAAKkE,SAASlD,IAn1C9B,cAo1CMhB,KAAKkE,SAASlD,GAAGkO,aAAa,gBAAiB,QAC/C6K,GAAmB,CACnB,OAIRA,IACAhR,YAAU0O,GA31CR,cA41CFA,EAAWvI,aAAa,gBAAiB,SAG5ClP,KAAK0H,cACN1H,KAAKsY,mBAAmBwB,GAAmB,GAE/C9Z,KAAK8Y,sBAAsBxO,EAAG+M,GAC9BrX,KAAKwY,iBACDT,IACA/X,KAAK6K,SAAShI,UAAU2H,OAr2ClB,cAs2CNxK,KAAK6K,SAAS3E,MAAMuS,SAAW,KAGvCrW,EAASlC,UAAU2X,kBAAoB,WACnC,IAAK,GAAI7W,GAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IAClC6D,oBAAkB7E,KAAK8D,aAAa9C,GAAGuF,OACvCvG,KAAKkE,SAASlD,GAAG6B,UAAU2H,OAAOjJ,IAI9Ca,EAASlC,UAAU+Q,aAAe,SAAU3G,GASxC,OAPIhI,QAAStC,KAAKsC,QACduJ,MAAOvB,EACPiI,MAAOvS,KAAK2K,aAAc3K,KAAK6K,UAC/B3F,OAAQlF,KAAK2L,cAAe3L,KAAKyL,eACjCgG,UAAWzR,KAAKuK,iBAChB6C,QAAQ,IAIhBhL,EAASlC,UAAUoY,mBAAqB,SAAUpT,EAAOW,GACrD,GAAImU,GAAaha,KAAK8D,YACtBkW,GAAW9U,GAAOW,UAAYA,EAC9B7F,KAAK0O,eAAgB5K,aAAgBkW,IAAc,IAEvD5X,EAASlC,UAAUqR,iBAAmB,WAClCvR,KAAKsZ,eACDJ,gBAAiBlZ,KAAKkZ,gBACtBe,oBAAqBja,KAAK6K,SAAShI,UAAUC,SA14CvC,iBA24CNoX,oBAAqBla,KAAK2K,aAAa9H,UAAUC,SA34C3C,iBA44CNqX,iBAAkBna,KAAK2K,aAAa9H,UAAUC,SAr4CxC,cAs4CNsX,iBAAkBpa,KAAK6K,SAAShI,UAAUC,SAt4CpC,cAu4CN0W,kBAAmBxZ,KAAK6K,SAAShI,UAAUC,SAt4CnC,eAu4CRyW,kBAAmBvZ,KAAK2K,aAAa9H,UAAUC,SAv4CvC,eAw4CR2I,cAAezL,KAAKoU,mBACpBzI,cAAe3L,KAAKmU,uBACpBkG,gBAAiBra,KAAK6K,SAASmN,mBAC/BsC,eAAgBta,KAAK2K,aAAa4P,yBAG1CnY,EAASlC,UAAUsa,oBAAsB,WACrC1R,eAAa6G,SAAO,IAAM3P,KAAKsQ,MAAOtQ,KAAKuK,mBAAoB3I,IAEnEQ,EAASlC,UAAU2Z,aAAe,SAAUY,GACxC1R,YAAU4G,SAAO,IAAM3P,KAAKsQ,MAAOmK,IAAO7Y,IAE9CQ,EAASlC,UAAU0Z,iBAAmB,SAAUjO,EAAeF,GAC3D,GAAIkO,GAAgB,CAOpB,OANI3Z,MAAKkE,SAASyH,GAAe9I,UAAUC,SAt5C/B,iBAu5CR6W,GAAgC,GAEhC3Z,KAAKkE,SAASuH,GAAe5I,UAAUC,SAz5C/B,iBA05CR6W,GAAgC,GAE7BA,GAEXvX,EAASlC,UAAUwa,mBAAqB,SAAU/O,EAAeF,GAC7D,SAAIzL,KAAK8D,aAAa6H,GAAeQ,YAAanM,KAAK8D,aAAa2H,GAAeU,YAOvF/J,EAASlC,UAAUqY,oBAAsB,SAAUjO,EAAGyO,GAClD/Y,KAAKuR,kBACL,IAAIoJ,GAAW3a,KAAKsQ,MAChB2I,EAAWjZ,KAAKkZ,kBAAqBlZ,KAAKiE,QAAQtD,OAAS,EAAKX,KAAKmZ,QAAUnZ,KAAKoZ,QACpFC,EAAgBrZ,KAAKkZ,kBAAqBlZ,KAAKiE,QAAQtD,OAAS,EAChEX,KAAKkZ,gBAAkB,EAAIlZ,KAAKkZ,gBAAkB,CACtD,IAAK5O,EAAEhK,OAAOuC,UAAUC,SAASlB,GAuDxB5B,KAAK8D,aAAa9D,KAAK2L,eAAeW,aAAgBtM,KAAK8D,aAAa9D,KAAKyL,eAAea,aACzFtM,KAAK0a,mBAAmB1a,KAAK2L,cAAe3L,KAAKyL,gBACjDzL,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,OAvDlD,KAAKlZ,KAAKsZ,cAAcC,oBAAsBvZ,KAAKsZ,cAAcE,kBAC7D,GAAIxZ,KAAK8D,aAAa9D,KAAK2L,eAAeW,aAAetM,KAAK8D,aAAa9D,KAAKyL,eAAea,aAQ3F,GAPAtM,KAAKwa,sBACDxa,KAAK0a,mBAAmB1a,KAAK2L,cAAe3L,KAAKyL,eACjDzL,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,GAG1ClZ,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,IAEzCrU,oBAAkBoU,GAAW,CAC9B,GAAIQ,GAAqBJ,EACrBK,EAAqBL,EAAgB,EACrCM,EAAgB3Z,KAAK4Z,iBAAiBH,EAAoBC,EAC1D1Z,MAAK8D,aAAa2V,GAAoBnN,aACtCtM,KAAK8D,aAAa4V,GAAoBpN,cAChB,IAAlBqN,GACA3Z,KAAK6Y,kBAAkBI,EAAUF,GACjC/Y,KAAK6Y,kBAAkBI,EAAU0B,GAC7B3a,KAAK0a,mBAAmBjB,EAAoBC,IAC5C1Z,KAAK2F,eAAe0T,GAAe,IAGhB,IAAlBM,IACL3Z,KAAK6Z,aAAaZ,GAEdjZ,KAAKkE,SAASuV,GAAoB5W,UAAUC,SAx8C9D,eAy8CkB9C,KAAKkE,SAASwV,GAAoB7W,UAAUC,SAz8C9D,cA08CkB9C,KAAK6Y,kBAAkBI,EAAU0B,GAIjC3a,KAAK6Y,kBAAkBI,EAAUF,GAErC/Y,KAAK2F,eAAe0T,GAAe,UAM/CrZ,MAAK2Y,kBAAkB3Y,KAAKuK,iBAAkBwO,GAC9C/Y,KAAK6Y,kBAAkB7Y,KAAKuK,iBAAkBoQ,GACzC3a,KAAKsZ,cAAcC,mBAAsBvZ,KAAKsZ,cAAcE,kBAM7DxZ,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,GALtClZ,KAAK0a,mBAAmB1a,KAAK2L,cAAe3L,KAAKyL,gBACjDzL,KAAK2F,eAAe3F,KAAKkZ,iBAAiB,IAiBlE9W,EAASlC,UAAUoR,YAAc,SAAUhH,GAQvC,OANIhI,QAAStC,KAAKsC,QACduJ,MAAOvB,EACPiI,MAAOvS,KAAK2K,aAAc3K,KAAK6K,UAC/B3F,OAAQlF,KAAK2L,cAAe3L,KAAKyL,eACjCgG,UAAWzR,KAAKuK,mBAIxBnI,EAASlC,UAAU0a,aAAe,SAAUtQ,GACxCtK,KAAKkZ,gBAAkBlZ,KAAKwS,cAAcrN,SAASmF,EAAEhK,OAAOuI,cAAc3C,MAAMkM,MAAO,IAAK,aAEhGhQ,EAASlC,UAAU4L,kBAAoB,SAAUxL,GAC7C,GAAIua,MAAW3M,MAAM1L,KAAKxC,KAAKiE,QAE/B,QADA4W,EAAQ7a,KAAK6J,mBAAqBgR,EAAM5L,UAAY4L,GACvC9P,QAAQzK,IAEzB8B,EAASlC,UAAU4a,WAAa,SAAUhJ,GAEtC,MADc9R,MAAKiE,QAAS6N,EAAa,IAG7C1P,EAASlC,UAAU6a,WAAa,SAAUjJ,GAEtC,MADc9R,MAAKiE,QAAS6N,EAAa,IAG7C1P,EAASlC,UAAU8a,WAAa,SAAU9V,GACtClF,KAAKmZ,QAAUnZ,KAAK8a,WAAW5V,GAC/BlF,KAAKoZ,QAAUpZ,KAAK+a,WAAW7V,IAEnC9C,EAASlC,UAAUkX,gBAAkB,SAAU9M,GAClB,eAArBtK,KAAK6D,YACL7D,KAAKsQ,MAAQhG,EAAEhK,OAAOuC,UAAUC,SAASrB,GAhhDnC,gBAghD+DA,EAGrEzB,KAAKsQ,MAAQhG,EAAEhK,OAAOuC,UAAUC,SAASpB,GAAYC,EAAaD,EAEtE1B,KAAK8U,uBAAuBxK,EAAEhK,QAC9BN,KAAK4a,aAAatQ,GAClBtK,KAAKgb,WAAWhb,KAAKkZ,iBACrBlZ,KAAKuT,kBAETnR,EAASlC,UAAUmM,gBAAkB,SAAU/B,GAC3C,GAAI0G,IACA1O,QAAStC,KAAKsC,QACduJ,MAAOvB,EACPiI,MAAOvS,KAAK2K,aAAc3K,KAAK6K,UAC/B3F,OAAQlF,KAAK2L,cAAe3L,KAAKyL,eACjCwP,UAAWjb,KAAKkb,gBAAiBlb,KAAKmb,mBACtC1J,UAAWzR,KAAKuK,iBAEpBvK,MAAKuN,QAAQ,WAAYyD,IAE7B5O,EAASlC,UAAU2P,YAAc,SAAUvF,GACvC,GAAI/H,GAAQvC,IACZsK,GAAE8B,gBACF,IAAI9L,GAASgK,EAAEhK,MACf,KAAIA,EAAOuC,UAAUC,SA1iDR,oBA0iDb,CAGA9C,KAAK8U,uBAAuBxU,GAC5ByI,YAAU/I,KAAKuK,kBArjDA,sBAsjDfvK,KAAKmV,qBAAqB7K,EAAG,YAC7BtK,KAAKuT,gBASL,KAAK,GARDvC,IACA1O,QAAStC,KAAKsC,QACduJ,MAAOvB,EACPiI,MAAOvS,KAAK2K,aAAc3K,KAAK6K,UAC/B3F,OAAQlF,KAAKmU,uBAAwBnU,KAAKoU,oBAC1C3C,UAAWzR,KAAKuK,iBAChB6C,QAAQ,GAEHpM,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQyR,iBAAiB,UAAUpT,OAAQK,IAChEhB,KAAKsC,QAAQyR,iBAAiB,UAAU/S,GAAGkF,MAAMkV,cAAgB,MAErEpb,MAAKuN,QAAQ,cAAeyD,EAAW,SAAUqK,GACxCA,EAAgBjO,SACjB7K,EAAMuU,mBACNvU,EAAMkI,cAAcH,QAIhClI,EAASlC,UAAU+K,oBAAsB,SAAUsH,GAC/C,GAAI+I,EACJ,IAAI/I,EAAKrM,MAAMC,UAAU4E,QAAQ,KAAO,EACpCuQ,EAAWtb,KAAKub,qBAAqBhJ,EAAKrM,MAAMC,eAGhD,IAA6B,KAAzBoM,EAAKrM,MAAMC,UACXmV,EAAWtb,KAAK4W,yBAAyB5W,KAAK2M,qBAAqB4F,EAAKrM,MAAMC,gBAE7E,CACD,GAAIqV,GAA+B,eAArBxb,KAAK6D,YAAiC0O,cAAqBA,EAAkB,YAC3F+I,GAAWtb,KAAK4W,yBAAyB4E,GAGjD,MAAOF,IAEXlZ,EAASlC,UAAUqb,qBAAuB,SAAUzO,GAChD,MAAO2O,YAAW3O,EAAMoB,MAAM,EAAGpB,EAAM/B,QAAQ,QAEnD3I,EAASlC,UAAUmL,yBAA2B,SAAUyB,EAAO4O,GAC3D,GACIC,GADAC,EAAa9O,EAAMF,UAEvB,IAAIgP,EAAW7Q,QAAQ,MAAQ,EAAG,CAC9B4Q,EAAiBF,WAAWG,EAAW1N,MAAM,EAAG0N,EAAW7Q,QAAQ,MACnE,IAAI8Q,OAAc,EAKdA,GAJChX,oBAAkB6W,GAIiB,eAArB1b,KAAK6D,YAAgC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,aAH9E1G,KAAKqH,gBAAgBrH,KAAKkE,SAAS6G,QAAQ2Q,IAK7DC,EAAiBG,KAAKC,KAAKF,GAAeF,EAAiB,UAG3DA,GAAiBxW,SAASyW,EAAY,GAE1C,OAAOD,IAEXvZ,EAASlC,UAAU0W,yBAA2B,SAAU9J,GAEpD,MAAQA,IADgC,eAArB9M,KAAK6D,YAAgC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,cACjE,KAEnCtE,EAASlC,UAAUyM,qBAAuB,SAAUG,GAEhD,MADAA,GAAQA,EAAMF,WACVE,EAAM/B,QAAQ,MAAQ,EACf0Q,WAAW3O,EAAMoB,MAAM,EAAGpB,EAAM/B,QAAQ,OAGxC0Q,WAAW3O,IAG1B1K,EAASlC,UAAU8b,iBAAmB,SAAUC,EAAWJ,GACvD,GAEIpK,EAGJ,OAFAA,IAH6C,eAArBzR,KAAK6D,YAAgC7D,KAAKkH,mBAAmBmO,EAAI4G,EACpFjc,KAAKkH,mBAAmBqO,EAAI0G,GAEDJ,GAChCpK,EAAaA,EAAY,EAAK,EAAKA,EAAY,EAAK,EAAIA,GACrCoK,GAEvBzZ,EAASlC,UAAUgc,qBAAuB,SAAU5R,GAChDtK,KAAKmV,qBAAqB7K,EAAG,UAC7B,IAAI6R,GAAkC,eAArBnc,KAAK6D,YAAgC7D,KAAKsC,QAAQiN,wBAAwB6M,KAAOC,OAAOC,QACrGtc,KAAKsC,QAAQiN,wBAAwBgN,IAAMF,OAAOG,QAClDC,EAA+B,eAArBzc,KAAK6D,YAAgC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,YAC3F,OAAO1G,MAAKgc,iBAAiBG,EAAWM,IAE5Cra,EAASlC,UAAUwc,UAAY,SAAU7O,EAAWvN,EAAQqc,GACxD,GAAIC,GAA2B,QAAdD,EAAsB,EAAI,KAEvClO,EAAY,IAahB,OAZkB,QAAdkO,EACK9X,oBAAkB7E,KAAK8D,aAAa+J,KACpChJ,oBAAkB7E,KAAK8D,aAAa+J,GAAWnC,OAChD+C,EAAYzO,KAAK8D,aAAa+J,GAAWnC,KAIxC7G,oBAAkB7E,KAAK8D,aAAa+J,KACpChJ,oBAAkB7E,KAAK8D,aAAa+J,GAAWG,OAChDS,EAAYzO,KAAK8D,aAAa+J,GAAWG,KAG7ChO,KAAK8D,aAAanD,OAAS,IAAMkE,oBAAkB7E,KAAK8D,aAAa+J,MACpEhJ,oBAAkB4J,IACfA,EAAU1D,QAAQ,KAAO,IACzB0D,EAAYzO,KAAKqL,yBAAyBoD,GAAW7B,YAElD5M,KAAK2M,qBAAqB8B,IAG1BmO,GAGfxa,EAASlC,UAAUiU,qBAAuB,WACtC,GAAI0I,GAAiB7c,KAAK6J,mBAAqB1E,SAASnF,KAAKuK,iBAAiBrE,MAAMkM,MAAO,IAAM,EAC7FjN,SAASnF,KAAKuK,iBAAiBrE,MAAMkM,MAAO,IAAM,CACtD,OAAOpS,MAAKwS,cAAcqK,EAAgB,SAE9Cza,EAASlC,UAAUkU,iBAAmB,WAClC,GAAIyI,GAAiB7c,KAAK6J,mBAAqB1E,SAASnF,KAAKuK,iBAAiBrE,MAAMkM,MAAO,IAAM,EAC7FjN,SAASnF,KAAKuK,iBAAiBrE,MAAMkM,MAAO,IAAM,CACtD,OAAOpS,MAAKwS,cAAcqK,EAAgB,SAE9Cza,EAASlC,UAAUqT,eAAiB,WAChC,GAAIuJ,GAAW,KACXjS,EAAW,IACf7K,MAAKoS,MAAQjN,SAASnF,KAAKuK,iBAAiBrE,MAAMkM,MAAO,IACrDpS,KAAKkE,SAASvD,OAAS,IACvBmc,EAAW9c,KAAKmS,YAAYnS,KAAKoS,OACjCvH,EAAW7K,KAAKsS,YAAYtS,KAAKoS,QAEjC0K,GAAYjS,IACZ7K,KAAK2K,aAAemS,EACpB9c,KAAK6K,SAAWA,EAChB7K,KAAK2L,cAAgB3L,KAAKmU,uBAC1BnU,KAAKyL,cAAgBzL,KAAKoU,qBAMlChS,EAASlC,UAAU6c,cAAgB,SAAUxK,GACzC,MAA8B,eAArBvS,KAAK6D,YAAgC0O,EAAK9L,YAAYmG,WAC3D2F,EAAK7L,aAAakG,YAE1BxK,EAASlC,UAAU8c,YAAc,SAAUnP,GACvC,GAAIoP,IAAU,CAMd,QALKpY,oBAAkB7E,KAAK8D,aAAa+J,MACpChJ,oBAAkB7E,KAAK8D,aAAa+J,GAAWtH,OAChDvG,KAAK8D,aAAa+J,GAAWtH,KAAKwE,QAAQ,MAAQ,IAClDkS,GAAU,GAEPA,GAEX7a,EAASlC,UAAUgd,kBAAoB,WACnCld,KAAKmd,wBAAiE,KAAtCnd,KAAK2K,aAAazE,MAAMC,UAAoBnG,KAAK+c,cAAc/c,KAAK2K,cAChG3K,KAAK2K,aAAazE,MAAMC,UAC5BnG,KAAKod,oBAAyD,KAAlCpd,KAAK6K,SAAS3E,MAAMC,UAAoBnG,KAAK+c,cAAc/c,KAAK6K,UACxF7K,KAAK6K,SAAS3E,MAAMC,UACpBnG,KAAKgd,YAAYhd,KAAK2L,iBACtB3L,KAAKmd,wBAA0Bnd,KAAKqL,yBAAyBrL,KAAKmd,yBAAyBvQ,WAC3F5M,KAAKmH,2BAA4B,GAEjCnH,KAAKgd,YAAYhd,KAAKyL,iBACtBzL,KAAKod,oBAAsBpd,KAAKqL,yBAAyBrL,KAAKod,qBAAqBxQ,WACnF5M,KAAKoH,4BAA6B,GAEtCpH,KAAKkb,gBAAkBlb,KAAK2M,qBAAqB3M,KAAKmd,wBAAwBvQ,YAC9E5M,KAAKmb,kBAAoBnb,KAAK2M,qBAAqB3M,KAAKod,oBAAoBxQ,aAEhFxK,EAASlC,UAAUmd,iBAAmB,SAAU/H,EAAOE,GACnD,GAAI8H,IAAqB,CAIzB,OAHKhI,KAAUtV,KAAKiH,oBAAoBoO,GAAKG,IAAUxV,KAAKiH,oBAAoBsO,IAC5E+H,GAAqB,GAElBA,GAEXlb,EAASlC,UAAUqd,cAAgB,SAAUjT,GAWzC,MATkC,UAA9BtK,KAAK6U,aAAavK,EAAEgB,QAAuBzG,oBAAkByF,EAAE4K,cAC1B,UAArClV,KAAK6U,aAAavK,EAAE4K,aACNlV,KAAKqd,iBAAiB/S,EAAEgL,MAAOhL,EAAEkL,OAGV,SAAtBvM,UAAQC,KAAKC,KACxBnJ,KAAKqd,iBAAiB/S,EAAEoL,QAAQ,GAAGJ,MAAOhL,EAAEoL,QAAQ,GAAGF,OACvDxV,KAAKqd,iBAAiB/S,EAAEgL,MAAOhL,EAAEkL,QAI7CpT,EAASlC,UAAUsd,UAAY,WAC3Bxd,KAAK4G,OAAS,CACd,IAAIA,GAA8B,eAArB5G,KAAK6D,aAAiC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQmb,aAAe,GACrGzd,KAAKsC,QAAQoE,aAAe1G,KAAKsC,QAAQob,cAAgB,CAC9D1d,MAAK4G,OAASA,GAElBxE,EAASlC,UAAUmI,YAAc,SAAUiC,GACvC,GAAKtK,KAAKud,cAAcjT,GAAxB,CAGAtK,KAAKuT,iBACLvT,KAAKkd,oBACLld,KAAKqM,gBAAgB/B,EACrB,IACIqT,GADAvB,EAAOpc,KAAK4d,wBAAwB5d,KAAKkc,qBAAqB5R,GAAItK,KAAKkb,gBAAiBlb,KAAKmb,kBAsCjG,IApCAnb,KAAKwd,YAEDG,EADqB,eAArB3d,KAAK6D,YACmB7D,KAAKsC,QAAQiN,wBAAwB6M,KAAOA,EAChEpc,KAAKuK,iBAAiBgF,wBAAwB6M,KAAOpc,KAAK4G,OAGtC5G,KAAKsC,QAAQiN,wBAAwBgN,IAAMH,EAC/Dpc,KAAKuK,iBAAiBgF,wBAAwBgN,IAAMvc,KAAK4G,OAEjE5G,KAAKod,oBACsC,gBAA9Bpd,2BAA0CA,KAAKod,oBAAoBrS,QAAQ,MAAQ,EACxF/K,KAAK2M,qBAAqB3M,KAAKod,qBAAuBjY,SAASnF,KAAKod,oBAAqB,IACjGpd,KAAKmd,wBAC0C,gBAAlCnd,+BAA8CA,KAAKmd,wBAAwBpS,QAAQ,MAAQ,EAChG/K,KAAK2M,qBAAqB3M,KAAKmd,yBAA2BhY,SAASnF,KAAKmd,wBAAyB,IACzGnd,KAAK6d,qBAAuBF,EAAuB3d,KAAKmd,wBACxDnd,KAAK8d,qBAAuB9d,KAAKod,oBAAsBO,EACvD3d,KAAK+d,uBACD/d,KAAK8d,qBAAuB,IAC5B9d,KAAK8d,qBAAuB,GAG5B9d,KAAK6d,qBAAuB,IAC5B7d,KAAK6d,qBAAuB,GAE3B7d,KAAK8d,qBAAuB9d,KAAK6d,qBAAwB7d,KAAKoL,aAC3DpL,KAAK8d,qBAAuB9d,KAAK6d,qBACjC7d,KAAK6d,qBAAuB7d,KAAK6d,sBAAyB7d,KAAK8d,qBAAuB9d,KAAK6d,qBACrF7d,KAAKoL,YAGXpL,KAAK8d,qBAAuB9d,KAAK8d,sBAAyB9d,KAAK8d,qBAAuB9d,KAAK6d,qBACrF7d,KAAKoL,aAIdpL,KAAK8d,qBAAuB9d,KAAK6d,qBAAwB7d,KAAKoL,WAAY,CAC3E,GAAI4S,GAAahe,KAAKoL,YAAepL,KAAK8d,qBAAuB9d,KAAK6d,qBACtE7d,MAAK8d,qBAAuB9d,KAAK8d,qBAAuBE,EAE5Dhe,KAAKie,6BACLje,KAAK4L,oBAEL,KAAK,GADDsS,GAAgB,EACXld,EAAI,EAAGA,EAAIhB,KAAK8D,aAAanD,OAAQK,IACR,KAA9BhB,KAAK8D,aAAa9C,GAAGuF,KACrB2X,GAAgC,EAEU,KAArCle,KAAKkE,SAASlD,GAAGkF,MAAMC,YAC5BnG,KAAK8D,aAAa9C,GAAGuF,KAAOvG,KAAKkE,SAASlD,GAAGkF,MAAMC,UAG3D,IAAIgY,GAAmBD,IAAkBle,KAAKkE,SAASvD,MAEvD,IAA0C,KAAtCX,KAAK2K,aAAazE,MAAMC,WAAsD,KAAlCnG,KAAK6K,SAAS3E,MAAMC,WAAqBgY,EAehFA,GACLne,KAAK2K,aAAazE,MAAMC,UAAYnG,KAAK6d,qBACzC9U,YAAU/I,KAAK2K,cAAepJ,GAC9BvB,KAAK6K,SAAS3E,MAAMC,UAAYnG,KAAK8d,qBACrC/U,YAAU/I,KAAK6K,UAAWtJ,KAGgB,KAAtCvB,KAAK2K,aAAazE,MAAMC,WAAoBnG,KAAK2K,aAAa9H,UAAUC,SAASvB,KACjFvB,KAAK2K,aAAazE,MAAMC,UAAYnG,KAAK6d,sBAEP,KAAlC7d,KAAK6K,SAAS3E,MAAMC,WAAoBnG,KAAK6K,SAAShI,UAAUC,SAASvB,KACzEvB,KAAK6K,SAAS3E,MAAMC,UAAYnG,KAAK8d,2BA1B8D,CACvG,GAAIM,GAAkBpe,KAAKkE,SAASvD,OAASX,KAAKiE,QAAQtD,MACtDX,MAAK2L,gBAAkByS,GACvBpe,KAAK6K,SAAS3E,MAAMC,UAAYnG,KAAK8d,qBACrC/U,YAAU/I,KAAK6K,UAAWtJ,IAErBvB,KAAKyL,gBAAkB2S,GAC5Bpe,KAAK2K,aAAazE,MAAMC,UAAYnG,KAAK6d,qBACzC9U,YAAU/I,KAAK2K,cAAepJ,KAG9BvB,KAAK6K,SAAS3E,MAAMC,UAAYnG,KAAK8d,qBACrC/U,YAAU/I,KAAK6K,UAAWtJ,IAiBlC,GAAI8c,GAAsD,KAAtCre,KAAK2K,aAAazE,MAAMC,WAAsD,KAAlCnG,KAAK6K,SAAS3E,MAAMC,SAC9EnG,MAAKkE,SAASvD,OAAS,IAAM0d,GAC/Bre,KAAK+V,uBAGb3T,EAASlC,UAAUoe,iBAAmB,SAAUzQ,EAAW0Q,GACvD,GACIC,GAEAC,EAHA/R,EAAe,KAEfsR,EAAa,CAkBjB,OAhBKnZ,qBAAkB7E,KAAK8D,aAAa+J,KAAgBhJ,oBAAkB7E,KAAK8D,aAAa+J,GAAWnC,OACpGgB,EAAe1M,KAAK8D,aAAa+J,GAAWnC,IAAIkB,YAE/C/H,oBAAkB6H,KACfA,EAAa3B,QAAQ,KAAO,IAC5B2B,EAAe1M,KAAKqL,yBAAyBqB,GAAcE,YAG3D2R,GADJC,EAAoBxe,KAAK2M,qBAAqBD,MAE1CsR,EAAcO,EAAmBC,GAAsB,EAAI,EACtDD,EAAmBC,EACxBxe,KAAKoL,WAAapL,KAAKoL,WAAa4S,EACpChe,KAAKmL,aAAenL,KAAK4W,yBAAyB5W,KAAKoL,YACvDqT,EAAeD,IAGhB3Z,oBAAkB4Z,GAAgBF,EAAmBE,GAEhErc,EAASlC,UAAUwe,iBAAmB,SAAU7Q,EAAW0Q,GACvD,GACII,GACAF,EAFAG,EAAe,IAiBnB,OAdK/Z,qBAAkB7E,KAAK8D,aAAa+J,KAAgBhJ,oBAAkB7E,KAAK8D,aAAa+J,GAAWG,OACpG4Q,EAAe5e,KAAK8D,aAAa+J,GAAWG,IAAIpB,YAE/C/H,oBAAkB+Z,KACfA,EAAa7T,QAAQ,KAAO,IAC5B6T,EAAe5e,KAAKqL,yBAAyBuT,GAAchS,YAG3D2R,GADJI,EAAoB3e,KAAK2M,qBAAqBiS,MAE1C5e,KAAKoL,WAAapL,KAAKoL,YAAcmT,EAAmBI,GACxD3e,KAAKmL,aAAenL,KAAK4W,yBAAyB5W,KAAKoL,YACvDqT,EAAeE,IAGhB9Z,oBAAkB4Z,GAAgBF,EAAmBE,GAEhErc,EAASlC,UAAU6d,qBAAuB,WAEtC/d,KAAK6d,qBAAuB7d,KAAKse,iBAAiBte,KAAK2L,cAAe3L,KAAK6d,sBAE3E7d,KAAK8d,qBAAuB9d,KAAKse,iBAAiBte,KAAKyL,cAAezL,KAAK8d,sBAE3E9d,KAAK6d,qBAAuB7d,KAAK0e,iBAAiB1e,KAAK2L,cAAe3L,KAAK6d,sBAE3E7d,KAAK8d,qBAAuB9d,KAAK0e,iBAAiB1e,KAAKyL,cAAezL,KAAK8d,uBAE/E1b,EAASlC,UAAU2e,iBAAmB,WAClC,GAAIb,EACChe,MAAK6d,qBAAuB7d,KAAK8d,qBAAwB9d,KAAKmL,eAC/D6S,EAAche,KAAK6d,qBAAuB7d,KAAK8d,qBAAwB9d,KAAKmL,aAC5EnL,KAAK6d,qBAAuB7d,KAAK6d,qBAAwBG,EAAa,EAAK,IAC3Ehe,KAAK8d,qBAAuB9d,KAAK8d,qBAAwBE,EAAa,EAAK,KAE1Ehe,KAAK6d,qBAAuB7d,KAAK8d,qBAAwB9d,KAAKmL,eAC/D6S,EAAahe,KAAKmL,cAAgBnL,KAAK6d,qBAAuB7d,KAAK8d,sBACnE9d,KAAK6d,qBAAuB7d,KAAK6d,qBAAwBG,EAAa,EAAK,IAC3Ehe,KAAK8d,qBAAuB9d,KAAK8d,qBAAwBE,EAAa,EAAK,MAGnF5b,EAASlC,UAAU+d,2BAA6B,WACxCje,KAAKmH,2BAA6BnH,KAAKoH,4BACvCpH,KAAK6d,qBAAuB/B,KAAKgD,MAAMC,OAAOjD,KAAKgD,MAC7C,GADmD9e,KAAK4W,yBAAyB5W,KAAK6d,uBAChF,KACZ7d,KAAK8d,qBAAuBhC,KAAKgD,MAAMC,OAAOjD,KAAKgD,MAC7C,GADmD9e,KAAK4W,yBAAyB5W,KAAK8d,uBAChF,KACsB,IAA9B9d,KAAK6d,uBACL7d,KAAK8d,qBAAuB9d,KAAKmL,cAEH,IAA9BnL,KAAK8d,uBACL9d,KAAK6d,qBAAuB7d,KAAKmL,cAEjCnL,KAAK6d,qBAAuB7d,KAAK8d,uBAAyB9d,KAAKmL,aAC/DnL,KAAK6e,oBAGL7e,KAAK6d,qBAAuB7d,KAAK6d,qBAAuB,IACxD7d,KAAK8d,qBAAuB9d,KAAK8d,qBAAuB,KAE5D9d,KAAK6d,qBAAwB7d,+BAAkCA,KAAK6d,qBAChE7d,KAAKqL,yBAAyBrL,KAAK6d,sBAAwB,KAC/D7d,KAAK8d,qBAAwB9d,gCAAmCA,KAAK8d,qBACjE9d,KAAKqL,yBAAyBrL,KAAK8d,sBAAwB,KAC/D9d,KAAKmH,2BAA4B,EACjCnH,KAAKoH,4BAA6B,IAGlCpH,KAAK6d,qBAAuB7d,KAAK6d,qBAAuB,KACxD7d,KAAK8d,qBAAuB9d,KAAK8d,qBAAuB,OAGhE1b,EAASlC,UAAU0L,mBAAqB,WAC/B5L,KAAK2K,aAAa9H,UAAUC,SAASvB,IAAwD,KAAtCvB,KAAK2K,aAAazE,MAAMC,WAAsBnG,KAAK2K,aAAa9H,UAAUC,SA/6D5H,eAg7DN9C,KAAK2K,aAAa9H,UAAUgE,IAAItF,GAE/BvB,KAAK6K,SAAShI,UAAUC,SAASvB,IAAoD,KAAlCvB,KAAK6K,SAAS3E,MAAMC,WAAsBnG,KAAK6K,SAAShI,UAAUC,SAl7DhH,eAm7DN9C,KAAK6K,SAAShI,UAAUgE,IAAItF,IAGpCa,EAASlC,UAAU0d,wBAA0B,SAAUoB,EAAYC,EAAqB7B,GACpF,GAAI8B,GAAyC,eAArBlf,KAAK6D,YAAgC7D,KAAKuK,iBAAiB4U,WAC/Enf,KAAKuK,iBAAiB6U,UACtBC,EAAeH,EAAmBD,EAClCK,EAAgBlC,EAAsB8B,EACtCK,EAAevf,KAAK0c,UAAU1c,KAAK2L,cAAe3L,KAAK2K,aAAc,OACrE6U,EAAexf,KAAK0c,UAAU1c,KAAKyL,cAAezL,KAAK6K,SAAU,OACjE4U,EAAezf,KAAK0c,UAAU1c,KAAK2L,cAAe3L,KAAK2K,aAAc,OACrE+U,EAAe1f,KAAK0c,UAAU1c,KAAKyL,cAAezL,KAAK6K,SAAU,OACjE8U,EAAgBX,CAqBpB,OApBKna,qBAAkB4a,IACfT,EAAaK,EAAeI,IAC5BE,EAAgBN,EAAeI,GAGlC5a,oBAAkB6a,IACfV,EAAaM,EAAgBI,IAC7BC,EAAgBL,EAAgBI,GAGpCV,EAAaM,EAAgBE,GACzB3a,oBAAkB4a,IAAiBE,IAAkBN,EAAeI,KACpEE,EAAgBL,EAAgBE,GAG/BR,EAAaK,EAAeE,IAC7B1a,oBAAkB6a,IAAiBC,IAAkBL,EAAgBI,KACrEC,EAAgBN,EAAeE,GAGhCI,GAEXvd,EAASlC,UAAUqI,UAAY,SAAU+B,GACrCxB,eAAa9I,KAAKuK,kBAp+DH,sBAq+DfvK,KAAKiX,oBASL,KAAK,GARDjG,IACAnF,MAAOvB,EACPhI,QAAStC,KAAKsC,QACdiQ,MAAOvS,KAAK2K,aAAc3K,KAAK6K,UAC/B3F,OAAQlF,KAAK2L,cAAe3L,KAAKyL,eACjCgG,UAAWzR,KAAKuK,iBAChB0Q,UAAWjb,KAAKkb,gBAAiBlb,KAAKmb,oBAEjCna,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQyR,iBAAiB,UAAUpT,OAAQK,IAChEhB,KAAKsC,QAAQyR,iBAAiB,UAAU/S,GAAGkF,MAAMkV,cAAgB,MAGrE,IADApb,KAAKuN,QAAQ,aAAcyD,GACvBhR,KAAK4f,kBAAmB,CACxB,GAAI5F,GAAaha,KAAK8D,YACtBkW,GAAWha,KAAKmU,wBAAwB5N,KAAOvG,KAAKkE,SAASlE,KAAKmU,wBAAwBjO,MAAMC,UAChG6T,EAAWha,KAAKoU,oBAAoB7N,KAAOvG,KAAKkE,SAASlE,KAAKoU,oBAAoBlO,MAAMC,UACxFnG,KAAK0O,eAAgB5K,aAAgBkW,IAAc,KAG3D5X,EAASlC,UAAU2f,eAAiB,SAAU3a,EAAO4a,GACjD,GACIvZ,GADAgI,EAAauR,EAAMnf,MAEvBwE,UAASnF,KAAK0J,UAAU1J,KAAKsC,SAAU,IAClCuC,oBAAkB7E,KAAK8D,aAAaoB,IAsBrCmK,oBAAkByQ,EAAM5a,IAAUkN,MAAiB,EAARlN,IArBtCL,oBAAkB7E,KAAK8D,aAAaoB,GAAOqB,OAgB5CvG,KAAK+f,UAAW,EAChB1Q,oBAAkByQ,EAAM5a,IAAUkN,MAAiB,EAARlN,MAhB3CqB,EAAOvG,KAAK8D,aAAaoB,GAAOqB,KAC5BrB,EAAQqJ,IACRc,oBAAkByQ,EAAM5a,IAAU8a,aAAczZ,EAAM6L,MAAiB,EAARlN,IAC3DA,EAAQqJ,EAAa,GAAuC,KAAlCvO,KAAK8D,aAAaoB,GAAOqB,KACnDwC,YAAU+W,EAAM5a,IAAS3D,GAEnBvB,KAAK+f,WACXD,EAAM5a,GAAOgB,MAAMC,UAAY,MAE9BjB,IAAUqJ,EAAa,GAAMvO,KAAK+f,UAA8C,KAAlC/f,KAAK8D,aAAaoB,GAAOqB,MACxEwC,YAAU+W,EAAM5a,IAAS3D,KAYzCvB,KAAK+G,UAAUuI,KAAa,EAARpK,IAExB9C,EAASlC,UAAUuF,YAAc,SAAUwa,EAAUC,GACjDA,EAAU1a,UAAY,GACtBya,EAAiC,mBAAWjgB,KAAK6M,eAAeoT,GAAYA,EAC5EjgB,KAAKmgB,gBAAgBD,EAAWD,GAE5BjgB,KAAK+E,SACL/E,KAAKogB,wBAIbhe,EAASlC,UAAUigB,gBAAkB,SAAUE,EAAKC,GAGhD,GAAIC,GAAUvgB,KAAK6S,cAAc,MACjC7S,MAAKwgB,eAAeD,EAASD,EAAK,WACA,IAA9BC,EAAQtO,WAAWtR,WAChBuN,MAAM1L,KAAK+d,EAAQtO,YAAY9D,QAAQ,SAAUsS,GAChDJ,EAAIvN,YAAY2N,MAI5Bre,EAASlC,UAAUsgB,eAAiB,SAAUH,EAAKK,EAAKC,GAGpD,GAAqB,mBACjB,GAAe,MAAXD,EAAI,IAAyB,MAAXA,EAAI,GAAY,CAClC,GAAIE,GAAS7W,SAAS8E,cAAc6R,EACpC,KAAK7b,oBAAkB+b,GASnB,MARA5gB,MAAKyH,gBAAgB6H,KAAKsR,GACG,SAAzBA,EAAO1a,MAAM2a,SACbD,EAAO1a,MAAM4a,eAAe,WAEK,KAAjCF,EAAOjT,aAAa,UACpBiT,EAAOzR,gBAAgB,aAE3BkR,GAAIvN,YAAY8N,EAIhBF,GAAMA,EAAIK,WAIdL,GAAMA,EAAIK,MAGlB,IAAIC,EAKAA,GAJCnc,oBAAkB6b,EAAIO,WAIVC,UAAQR,GAHRQ,UAAQR,EAAIO,UAK7B,IAAIE,EACCtc,qBAAkBmc,KACnBG,EAAcH,KAAehhB,KAAM2gB,EAAM3gB,KAAKsC,QAAQ8e,GAAK,UAAYphB,KAAKkE,SAASvD,OAAOiM,YAAY,KAEvG/H,oBAAkBmc,IAAeG,GAAeA,EAAYxgB,OAAS,MACnEuN,MAAM1L,KAAK2e,GAAahT,QAAQ,SAAUC,GACzCiS,EAAIvN,YAAY1E,MAI5BhM,EAASlC,UAAUgQ,gBAAkB,SAAUqC,EAAMrN,GAEjDlF,KAAK8D,aAAaoB,GAAOoH,YAAcvD,YAAUwJ,GAllEvC,iBAklE6DzJ,eAAayJ,GAllE1E,kBAolEdnQ,EAASlC,UAAUiE,gBAAkB,SAAU7D,GAE3C,IAAK,GADDiO,GAAajO,EAAOwN,SAASnN,OACxBK,EAAI,EAAGA,EAAIhB,KAAK8D,aAAanD,OAAQK,IAC1C,GAAIuN,EAAavO,KAAK8D,aAAanD,OAAQ,CACvC,GAAI0gB,GAAerhB,KAAK6S,cAAc,MACtC7S,MAAKsC,QAAQwQ,YAAYuO,GACzB9S,GAA0B,EAGlCA,EAAajO,EAAOwN,SAASnN,MAC7B,IAAImf,MAAW5R,MAAM1L,KAAKlC,EAAOwN,SAEjC,IADA9N,KAAK+f,UAAW,EACZxR,EAAa,EACb,IAASvN,EAAI,EAAGA,EAAIuN,EAAYvN,IAEF,QAAtB8e,EAAM9e,GAAGsgB,UAA4C,SAAtBxB,EAAM9e,GAAGsgB,WACxCthB,KAAKkE,SAASoL,KAAKwQ,EAAM9e,IACA,eAArBhB,KAAK6D,aACLkF,YAAU+W,EAAM9e,KAAMG,EAAMC,EAhnElC,iBAinEMpB,KAAK6f,eAAe7e,EAAG8e,KAGvB/W,YAAU+W,EAAM9e,KAAMG,EAAME,EApnElC,iBAqnEMrB,KAAK6f,eAAe7e,EAAG8e,IAEtBjb,oBAAkB7E,KAAK8D,aAAa9C,KAAQ6D,oBAAkB7E,KAAK8D,aAAa9C,GAAG8D,UACpF9E,KAAKyF,YAAYzF,KAAK8D,aAAa9C,GAAG8D,QAASgb,EAAM9e,KAEpD6D,oBAAkB7E,KAAK8D,aAAa9C,KAAOhB,KAAK8D,aAAa9C,GAAGsC,UACjEtD,KAAKqD,YAAYyc,EAAM9e,GAAIhB,KAAK8D,aAAa9C,GAAGsC,UAE/CuB,oBAAkB7E,KAAK8D,aAAa9C,KACrChB,KAAKkQ,gBAAgB4P,EAAM9e,GAAIA,KAYnDoB,EAASlC,UAAUqM,OAAS,SAAUrH,GAClClF,KAAK8F,kBAAkBZ,GACvBlF,KAAKsY,mBAAmBpT,GAAO,IAQnC9C,EAASlC,UAAUsM,SAAW,SAAUtH,GACpClF,KAAKwE,YAAYU,GACjBlF,KAAKsY,mBAAmBpT,GAAO,IAOnC9C,EAASlC,UAAUqhB,QAAU,WACzB,IAAKvhB,KAAKwhB,YAAa,CAKnB,IAJAxf,EAAO9B,UAAUqhB,QAAQ/e,KAAKxC,MAC9B8J,eAAaU,OAAOT,SAAU,mBAAoB/J,KAAKgK,iBACvDF,eAAaU,OAAOxK,KAAKsC,QAAS,UAAWtC,KAAKqK,QAClDrK,KAAKsC,QAAQ4H,cAAcC,YAAY2L,oBAAoB,SAAU9V,KAAKiI,oBAAoB,GACvFjI,KAAKsC,QAAQmf,WAAW9gB,OAAS,GACpCX,KAAKsC,QAAQ6M,gBAAgBnP,KAAKsC,QAAQmf,WAAW,GAAGtY,KAE5D,KAASnI,EAAI,EAAGA,EAAIhB,KAAK0I,QAAQ+Y,WAAW9gB,OAAQK,IAChDhB,KAAKsC,QAAQ4M,aAAalP,KAAK0I,QAAQ+Y,WAAWzgB,GAAGmI,KAAMnJ,KAAK0I,QAAQ+Y,WAAWzgB,GAAG8L,MAEtF9M,MAAK0hB,aACL3Y,YAAU/I,KAAKsC,UAAW,YAAa,QAASpB,IAChDlB,KAAKiE,WACLjE,KAAKkE,aAETlE,KAAKsO,cAEDtO,KAAK+E,SACL/E,KAAK+D,eAET,IAAI4d,GAAa3hB,KAAKsC,QAAQyR,iBAAiB,eAC/C,IAAI4N,EAAWhhB,OAAS,EACpB,IAASK,EAAI,EAAGA,EAAI2gB,EAAWhhB,OAAQK,IACnC8I,eAAaU,OAAOmX,EAAW3gB,GAAI,aAAchB,KAAKkX,cACtDpN,eAAaU,OAAOmX,EAAW3gB,GAAI,aAAchB,KAAK6P,aACtD/F,eAAaU,OAAOmX,EAAW3gB,GAAI,QAAShB,KAAKkX,cACjDpN,eAAaU,OAAOmX,EAAW3gB,GAAI,YAAahB,KAAK6P,aACjD8R,EAAW3gB,GAAGsS,uBACdqO,EAAW3gB,GAAG8U,oBAAoB,QAAS6L,EAAW3gB,GAAGsS,sBACzDqO,EAAW3gB,GAAGsS,qBAAuB,MAErCqO,EAAW3gB,GAAGwS,sBACdmO,EAAW3gB,GAAG8U,oBAAoB,OAAQ6L,EAAW3gB,GAAGwS,qBACxDmO,EAAW3gB,GAAGwS,oBAAsB,MAEpCmO,EAAW3gB,GAAGuT,4BACdoN,EAAW3gB,GAAG8U,oBAAoB,aAAc6L,EAAW3gB,GAAGuT,2BAC9DoN,EAAW3gB,GAAGuT,0BAA4B,MAE1CoN,EAAW3gB,GAAGyT,4BACdkN,EAAW3gB,GAAG8U,oBAAoB,aAAc6L,EAAW3gB,GAAGyT,2BAC9DkN,EAAW3gB,GAAGyT,0BAA4B,MAE1CkN,EAAW3gB,GAAG2T,0BACdgN,EAAW3gB,GAAG8U,oBAAoB,WAAY6L,EAAW3gB,GAAG2T,yBAC5DgN,EAAW3gB,GAAG2T,wBAA0B,MAExCgN,EAAW3gB,GAAG4T,2BACd+M,EAAW3gB,GAAG8U,oBAAoB,YAAa6L,EAAW3gB,GAAG4T,0BAC7D+M,EAAW3gB,GAAG4T,yBAA2B,MAE7C+M,EAAW3gB,GAAG0S,WAAWkO,YAAYD,EAAW3gB,GAGxD,IAAIyR,GAAQzS,KAAKsC,QAAQyR,iBAAiB,UAC1C,IAAItB,EAAM9R,OAAS,EACf,IAAK,GAAIK,GAAI,EAAGA,EAAIyR,EAAM9R,OAAQK,IAE9B,IADAyR,EAAMzR,GAAG6B,UAAU2H,OAAOpJ,EAAcC,EAAcE,EAxtExD,eAwtEkFJ,EApsE/E,cAfF,iBAKD,gBAOA,aAEA,iBAssESsR,EAAMzR,GAAGygB,WAAW9gB,OAAS,GAChC8R,EAAMzR,GAAGmO,gBAAgBsD,EAAMzR,GAAGygB,WAAW,GAAGtY,KAI5DnJ,MAAKiE,WACLjE,KAAKiE,QAAU,KACfjE,KAAKkE,YACLlE,KAAKkE,SAAW,KAChBlE,KAAK2K,aAAe,KACpB3K,KAAK6K,SAAW,KAChB7K,KAAKuK,iBAAmB,KACxBvK,KAAK0I,QAAU,KACf1I,KAAKmZ,QAAU,KACfnZ,KAAKoZ,QAAU,KACfpZ,KAAKyH,gBAAkB,OAG/BrF,EAASlC,UAAUoO,YAAc,WAC7B,GAAItO,KAAKyH,gBAAgB9G,OAAS,EAC9B,IAAK,GAAIK,GAAI,EAAGA,EAAIhB,KAAKyH,gBAAgB9G,OAAQK,IAC7ChB,KAAKyH,gBAAgBzG,GAAGkF,MAAM2a,QAAU,OACxC9W,SAAS8L,KAAK/C,YAAY9S,KAAKyH,gBAAgBzG,KAI3DoB,EAASlC,UAAU2hB,aAAe,SAAUtP,GAOxC,MANyB,eAArBvS,KAAK6D,YACLkF,YAAUwJ,IAAQpR,EAAMC,EArvElB,iBAwvEN2H,YAAUwJ,IAAQpR,EAAME,EAxvElB,iBA0vEHkR,GAEXnQ,EAASlC,UAAU4hB,iBAAmB,SAAUC,GAG5C,IAAK,GAFD9P,GAAajS,KAAKsC,QAAQ2P,WAC1BQ,KACKzR,EAAI,EAAGiR,EAAWtR,OAAS,EAAGK,IAC/BiR,EAAWjR,GAAG6B,UAAUC,SAASif,IACjCtP,EAAMnD,KAAK2C,EAAWjR,GAG9B,KAASA,EAAI,EAAGA,EAAIyR,EAAM9R,OAAQK,IAC9ByR,EAAMzR,GAAGkF,MAAM4a,eAAe,UAGtC1e,EAASlC,UAAU8hB,aAAe,WAC9B,IAAK,GAAIhhB,GAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACtChB,KAAK6f,eAAe7e,EAAGhB,KAAKkE,WAGpC9B,EAASlC,UAAU+hB,gBAAkB,WACjC,IAAK,GAAIjhB,GAAI,EAAGA,EAAIhB,KAAKiE,QAAQtD,OAAQK,IACrCqN,SAAOrO,KAAKiE,QAAQjD,GAExBhB,MAAKiE,YAET7B,EAASlC,UAAUgiB,YAAc,WAC7BliB,KAAKgiB,eACLhiB,KAAKiiB,kBACLjiB,KAAKoE,aAAapE,KAAKsC,UAE3BF,EAASlC,UAAUkT,cAAgB,SAAU+O,GACzC,GAAIna,GAAShI,KAAK6H,UAAUua,YAAYD,EACxC,OAAmB,KAAXna,EAAiBma,EAAOna,GAEpC5F,EAASlC,UAAU+F,qBAAuB,SAAUtD,GAChD,GAAI0f,GAAY1f,GAAWA,EAAQqF,QAAoC,gBAAnBrF,GAAQqF,OAAsBrF,EAAQqF,OAAShI,KAAKgI,MACxGhI,MAAK6H,UAAY,GAAIC,QAAK9H,KAAK+H,gBAAiBlG,EAAuBwgB,GACvEriB,KAAKsiB,WASTlgB,EAASlC,UAAUqiB,QAAU,SAAUC,EAAgBtd,GACnD,GAAIud,GAAUziB,KAAK6S,cAAc,MACjC4P,GAAUziB,KAAK6hB,aAAaY,GAC5Bvd,EAASA,EAAQlF,KAAKkE,SAASvD,OAAS,EAAKX,KAAKkE,SAASvD,OAASuE,CACpE,IAAIwd,IACAnc,KAAM1B,oBAAkB2d,EAAejc,MAAQ,GAAKic,EAAejc,KACnEmF,IAAK7G,oBAAkB2d,EAAe9W,KAAO,KAAO8W,EAAe9W,IACnEsC,IAAKnJ,oBAAkB2d,EAAexU,KAAO,KAAOwU,EAAexU,IACnElJ,QAASD,oBAAkB2d,EAAe1d,SAAW,GAAK0d,EAAe1d,QACzEqH,YAAWtH,oBAAkB2d,EAAerW,YAAoBqW,EAAerW,UAC/EG,aAAazH,oBAAkB2d,EAAelW,cAAuBkW,EAAelW,YACpFzG,WAAWhB,oBAAkB2d,EAAe3c,YAAqB2c,EAAe3c,UAChFvC,SAAUuB,oBAAkB2d,EAAelf,UAAY,GAAKkf,EAAelf,SAE/EtD,MAAK8D,aAAa6e,OAAOzd,EAAO,EAAGwd,GACnC1iB,KAAK0O,eAAgB5K,aAAgB9D,KAAK8D,eAAgB,GACjC,eAArB9D,KAAK6D,aACL7D,KAAKsC,QAAQsgB,aAAaH,EAASziB,KAAKsC,QAAQyR,iBAAiB,IAAM3S,GAAc8D,IACrFlF,KAAK8hB,iBAAiB1gB,KAGtBpB,KAAKsC,QAAQsgB,aAAaH,EAASziB,KAAKsC,QAAQyR,iBAAiB,IAAM1S,GAAc6D,IACrFlF,KAAK8hB,iBAAiBzgB,IAE1BrB,KAAKkE,SAASye,OAAOzd,EAAO,EAAGud,GAC/BziB,KAAKkiB,cACLliB,KAAKyF,YAAYzF,KAAK8D,aAAaoB,GAAOJ,QAAS2d,GACnDziB,KAAKqD,YAAYrD,KAAKkE,SAASgB,GAAQsd,EAAelf,UACtDtD,KAAKkE,SAASlE,KAAKkE,SAASvD,OAAS,GAAGkC,UAAU2H,OAAOjJ,IAQ7Da,EAASlC,UAAU2iB,WAAa,SAAU3d,GACtCA,EAASA,EAAQlF,KAAKkE,SAASvD,OAAS,EAAKX,KAAKkE,SAASvD,OAASuE,CACpE,IAAI4d,GAAqC,eAArB9iB,KAAK6D,YAAgCzC,EAAeC,CACpEwD,qBAAkB7E,KAAKsC,QAAQyR,iBAAiB,IAAM+O,GAAc5d,MAGxEmJ,SAAOrO,KAAKsC,QAAQyR,iBAAiB,IAAM+O,GAAc5d,IACzDlF,KAAKkE,SAASye,OAAOzd,EAAO,GAC5BlF,KAAK8hB,iBAAiBgB,GACtB9iB,KAAKkiB,cACLliB,KAAK8D,aAAa6e,OAAOzd,EAAO,GAChClF,KAAK0O,eAAgB5K,aAAgB9D,KAAK8D,eAAgB,GACtD9D,KAAKkE,SAASvD,OAAS,GACvBX,KAAKkE,SAASlE,KAAKkE,SAASvD,OAAS,GAAGkC,UAAU2H,OAAOjJ,KAGjEnB,GACI8B,WAAS,SACVE,EAASlC,UAAW,aAAU,IACjCE,GACI8B,YAAS,IACVE,EAASlC,UAAW,yBAAsB,IAC7CE,GACI8B,WAAS,SACVE,EAASlC,UAAW,YAAS,IAChCE,GACI8B,YAAS,IACVE,EAASlC,UAAW,wBAAqB,IAC5CE,GACI2iB,gBAAehhB,IAChBK,EAASlC,UAAW,mBAAgB,IACvCE,GACI8B,WAAS,eACVE,EAASlC,UAAW,kBAAe,IACtCE,GACI8B,WAAS,KACVE,EAASlC,UAAW,eAAY,IACnCE,GACI8B,YAAS,IACVE,EAASlC,UAAW,cAAW,IAClCE,GACI8B,YAAS,IACVE,EAASlC,UAAW,0BAAuB,IAC9CE,GACI8B,WAAS,OACVE,EAASlC,UAAW,oBAAiB,IACxCE,GACI4iB,WACD5gB,EAASlC,UAAW,yBAAsB,IAC7CE,GACI4iB,WACD5gB,EAASlC,UAAW,cAAW,IAClCE,GACI4iB,WACD5gB,EAASlC,UAAW,kBAAe,IACtCE,GACI4iB,WACD5gB,EAASlC,UAAW,eAAY,IACnCE,GACI4iB,WACD5gB,EAASlC,UAAW,iBAAc,IACrCE,GACI4iB,WACD5gB,EAASlC,UAAW,qBAAkB,IACzCE,GACI4iB,WACD5gB,EAASlC,UAAW,mBAAgB,IACvCE,GACI4iB,WACD5gB,EAASlC,UAAW,gBAAa,IACpCE,GACI4iB,WACD5gB,EAASlC,UAAW,eAAY,IACnCkC,EAAWhC,GACP6iB,yBACD7gB,IAEL8gB,aC17EE7jB,EAAwC,WACxC,GAAIC,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,uBAA2BC,QAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIK,KAAKL,GAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,GAE5B,OAAO,UAAUD,EAAGC,GAEhB,QAASO,KAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,GAAIH,QAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,GAA2HjB,GAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,CACrH,IAAuB,gBAAZM,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,OACpH,KAAK,GAAIQ,GAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,EAChJ,OAAOH,GAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,GAS5DuiB,EAAW,aAEXC,EAAO,SAuBPC,EAAuB,SAAUrhB,GAEjC,QAASqhB,KACL,MAAkB,QAAXrhB,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KA4C/D,MA9CAX,GAAUgkB,EAAOrhB,GAIjB5B,GACI8B,WAAS,KACVmhB,EAAMnjB,UAAW,SAAM,IAC1BE,GACI8B,WAAS,KACVmhB,EAAMnjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,KACVmhB,EAAMnjB,UAAW,aAAU,IAC9BE,GACI8B,WAAS,KACVmhB,EAAMnjB,UAAW,cAAW,IAC/BE,GACI8B,YAAS,IACVmhB,EAAMnjB,UAAW,cAAW,IAC/BE,GACI8B,WAAS,IACVmhB,EAAMnjB,UAAW,UAAO,IAC3BE,GACI8B,WAAS,IACVmhB,EAAMnjB,UAAW,UAAO,IAC3BE,GACI8B,WAAS,IACVmhB,EAAMnjB,UAAW,YAAS,IAC7BE,GACI8B,WAAS,IACVmhB,EAAMnjB,UAAW,YAAS,IAC7BE,GACI8B,WAAS,IACVmhB,EAAMnjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,IACVmhB,EAAMnjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,OACVmhB,EAAMnjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,OACVmhB,EAAMnjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,MACVmhB,EAAMnjB,UAAW,aAAU,IACvBmjB,GACTlhB,iBAgBEmhB,EAAiC,SAAUthB,GAE3C,QAASshB,GAAgBjhB,EAASC,GAC9B,GAAIC,GAAQP,EAAOQ,KAAKxC,KAAMqC,EAASC,IAAYtC,IAsBnD,OArBAuC,GAAMghB,KAAO,EACbhhB,EAAMihB,QAAU,EAChBjhB,EAAMkhB,iBAAkB,EACxBlhB,EAAMmhB,cAAe,EACrBnhB,EAAMohB,MAAQ,EACdphB,EAAMqhB,MAAQ,EACdrhB,EAAMshB,OAAS,KACfthB,EAAMuhB,QAAU,IAChBvhB,EAAMwhB,OAAS,EACfxhB,EAAMyhB,OAAS,EACfzhB,EAAM0hB,OAAS,EACf1hB,EAAM2hB,QAAU,EAChB3hB,EAAM4hB,mBAAoB,EAC1B5hB,EAAM6hB,iBAAkB,EAExB7hB,EAAM8hB,gBAAiB,EAEvB9hB,EAAM+hB,YAAc,EACpB/hB,EAAMgiB,cAAe,EACrBhiB,EAAMiiB,UAAW,EACjBC,WAAS,mBAAoBliB,EAAMmiB,sBAAuBniB,GACnDA,EA22FX,MAn4FAlD,GAAUikB,EAAiBthB,GA+B3BshB,EAAgBpjB,UAAU0H,UAAY,WAClC5H,KAAK2kB,mBACL3kB,KAAK4kB,eACL5kB,KAAK6kB,uBACL7kB,KAAK8kB,kBACL9kB,KAAK+kB,uBACL/kB,KAAKglB,0BACLhlB,KAAKilB,oBACLjlB,KAAKklB,kBACLllB,KAAKmlB,YAAe5I,IAAK,GAAIH,KAAM,GAAIjZ,OAAQ,GAAIC,MAAO,IAC1DpD,KAAKolB,cACLplB,KAAKqlB,YACLrlB,KAAKslB,aACLtlB,KAAKulB,oBACLvlB,KAAKwlB,eACLxlB,KAAKylB,oBACLzlB,KAAK0lB,wBAA0BxX,MAAM1L,KAAKxC,KAAKsC,QAAQwL,WAE3DwV,EAAgBpjB,UAAUslB,aAAe,WACrC,IAAK,GAAIxkB,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAC/BhB,KAAK2lB,OAAO3kB,GAAGogB,KAChBphB,KAAK4lB,oBAAoB5lB,KAAK2lB,OAAO3kB,IAAMogB,GAAI,UAAYphB,KAAKwjB,QAAQ5W,aACxE5M,KAAKwjB,QAAUxjB,KAAKwjB,QAAU,GAElCxjB,KAAKslB,UAAUtlB,KAAK2lB,OAAO3kB,GAAGogB,KAAQyE,IAAK7lB,KAAK2lB,OAAO3kB,GAAG6kB,IAAKC,IAAK9lB,KAAK2lB,OAAO3kB,GAAG8kB,MAG3FxC,EAAgBpjB,UAAU6lB,mBAAqB,SAAUziB,EAAU0iB,GAC/D,GAAI3F,GAAMrgB,KAAK6S,cAAc,MAO7B,OANIvP,IAAYA,EAAS3C,OAAS,GAC9BoI,YAAUsX,GAAM/c,GAEhB0iB,GACA3F,EAAInR,aAAa,KAAM8W,GAEpB3F,GAQXiD,EAAgBpjB,UAAUqJ,OAAS,WAC/BvJ,KAAKsC,QAAQ4M,aAAa,OAAQ,QAClClP,KAAKimB,aACLjmB,KAAKkmB,kBAAmB,EACpBlmB,KAAKmmB,gBAAkBnmB,KAAKomB,mBAC5BpmB,KAAKqmB,gBAETrmB,KAAKsmB,iBACLtmB,KAAKiK,iBACLjK,KAAKogB,wBAETkD,EAAgBpjB,UAAUmmB,cAAgB,WACtCrmB,KAAKumB,MAAQxc,SAAS8I,cAAc,QACpC,IAAI2T,GAAQzc,SAAS8I,cAAc,QACnC7S,MAAKumB,MAAM1jB,UAAUgE,IAAI,8BACzB7G,KAAKumB,MAAMrX,aAAa,OAAQ,eAChC,KAAK,GAAIlO,GAAI,EAAGA,EAAIhB,KAAKymB,SAAUzlB,IAAK,CAEpC,IAAK,GADD0lB,GAAK3c,SAAS8I,cAAc,MACvBxN,EAAI,EAAGA,EAAIrF,KAAK2mB,QAASthB,IAAK,CACnC,GAAIuhB,GAAK7c,SAAS8I,cAAc,KAChC+T,GAAG/jB,UAAUgE,IAAI,wBACjB7G,KAAK6mB,eAAgB/Z,OAAS+Y,IAAK7kB,EAAE4L,WAAYkZ,IAAKzgB,EAAEuH,WAAYka,MAAO,IAAKC,MAAO,MAASH,GAChG5mB,KAAKgnB,iBAAiBJ,EAAI5lB,EAAGqE,GAC7BrF,KAAKinB,kBAAkBL,GAAMf,IAAK7kB,EAAG8kB,IAAKzgB,EAAGyhB,MAAO,EAAGC,MAAO,IAC9DL,EAAG5T,YAAY8T,GAEnBJ,EAAM1T,YAAY4T,GAEtB1mB,KAAKumB,MAAMzT,YAAY0T,GACvBxmB,KAAKsC,QAAQwQ,YAAY9S,KAAKumB,OAC9BvmB,KAAKogB,wBAETkD,EAAgBpjB,UAAU+lB,WAAa,WAEnC,GADAjmB,KAAKknB,kBACDlnB,KAAKsC,QAAQ6kB,kBAAoB,GAAKnnB,KAAKsC,QAAQyR,iBAAiB,YAAYpT,OAAS,EAAG,CAC5F,GAAIymB,KACJpnB,MAAK0O,eAAgBiX,YAAc,GACnC3lB,KAAKmkB,mBAAoB,CACzB,KAASnjB,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQyR,iBAAiB,YAAYpT,OAAQK,IAClEomB,EAAc9X,KAAMtP,KAAKsC,QAAQyR,iBAAiB,YAAY/S,GAElE,KAASA,EAAI,EAAGA,EAAIomB,EAAczmB,OAAQK,IAAK,CACvCqmB,EAAeD,EAAcpmB,EAC7BhB,MAAKuE,WACLwE,YAAUse,GAAe,SAE7BrnB,KAAKsnB,gBAAgBD,GACrBrnB,KAAKunB,SACLvnB,KAAKymB,SAET,IAAK,GAAIzlB,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAAK,CACzC,GAAIqmB,GAAernB,KAAKsC,QAAQuM,cAAc,IAAM7O,KAAK2lB,OAAO3kB,GAAGogB,GAEnE,IADAphB,KAAKwnB,gBAAgBxnB,KAAK2lB,OAAO3kB,IAC7BhB,KAAKynB,eAAiBznB,KAAK2lB,OAAO3kB,GAAG8kB,KACrC9lB,KAAKynB,eAAkBznB,KAAK2lB,OAAO3kB,GAAG8kB,IAAM9lB,KAAK2lB,OAAO3kB,GAAG8lB,MAAQ,CACnE,GAAIY,GAAW1nB,KAAKynB,eAAiBznB,KAAK2lB,OAAO3kB,GAAG8lB,KACpD9mB,MAAK4lB,oBAAoB5lB,KAAK2lB,OAAO3kB,IAAM8kB,IAAK4B,EAAW,EAAI,EAAIA,IAEvE1nB,KAAK2nB,gBAAgBN,EAAcrnB,KAAK2lB,OAAO3kB,GAC/C,IAAI4mB,GAAU5nB,KAAK6nB,aAAaR,EAAcrnB,KAAK2lB,OAAO3kB,GAAIhB,KAAK2lB,OAAO3kB,GAAGogB,IAAI,EACjFphB,MAAK2kB,gBAAgBrV,KAAKsY,GAC1B5nB,KAAKinB,kBAAkBI,EAAcrnB,KAAK2lB,OAAO3kB,IACjDhB,KAAK8nB,WAAa9nB,KACdA,KAAK+nB,aAAe1L,OAAO2L,WAAW,IAAMhoB,KAAK+nB,WAAa,KAAKE,UACnEjoB,KAAKgnB,iBAAiBK,EAAcrnB,KAAK2lB,OAAO3kB,GAAG6kB,IAAK7lB,KAAK2lB,OAAO3kB,GAAG8kB,KACvE9lB,KAAKkoB,YAAcb,EACnBrnB,KAAKmoB,kBAAkBd,EAAcrnB,KAAK2lB,OAAO3kB,IACjDhB,KAAKkoB,YAAc,MAEvBloB,KAAKooB,YAAYf,IAErBrnB,KAAKqoB,qBACDroB,KAAKomB,mBACLpmB,KAAKsoB,4BAITtoB,MAAKuoB,qBAAqBvoB,KAAK2lB,SAE/B3lB,KAAKwoB,eAAkBxoB,KAAK+nB,YAAc1L,OAAO2L,WAAW,IAAMhoB,KAAK+nB,WAAa,KAAKE,SACzFjoB,KAAKyoB,sBAAsBzoB,KAAK2kB,iBAEpC3kB,KAAK0oB,cACL1oB,KAAK2oB,aACL3oB,KAAK4oB,eACL5oB,KAAK6oB,yBACL7oB,KAAK8oB,iBAAmB9oB,KAAKynB,eACvBznB,KAAKomB,mBACPpmB,KAAK+oB,wBAET/oB,KAAKgpB,gBAET1F,EAAgBpjB,UAAUkmB,gBAAkB,WACxC,MAAQpmB,MAAK+nB,YAAc1L,OAAO2L,WAAW,IAAMhoB,KAAK+nB,WAAa,KAAKE,SAE9E3E,EAAgBpjB,UAAUulB,kBAAoB,WAC1CzlB,KAAKipB,YACAjpB,KAAKomB,kBACNpmB,KAAKipB,SAAS,GAAKjpB,KAAKsC,QAAQuG,eACvB7I,KAAKsC,QAAQuG,0BAA8B7I,KAAKkpB,iBAGzDlpB,KAAKipB,SAAS,GAAKjpB,KAAKsC,QAAQuG,eAC1B7I,KAAKsC,QAAQuG,cAA2B,YACzChE,oBAAkB7E,KAAKmpB,eACxBnpB,KAAKipB,SAAS,GAAKjpB,KAAKsC,QAAQuG,gBACvB7I,KAAKsC,QAAQuG,cAAcpC,aAAgBzG,KAAKunB,SAAW,GAAKvnB,KAAKmpB,YAAY,IAC/EnpB,KAAKunB,UAEpBvnB,KAAKipB,SAAS,GAAKjpB,KAAKipB,SAAS,GAAKjpB,KAAKkpB,kBAGnD5F,EAAgBpjB,UAAUumB,OAAS,SAAU2C,GACzC,GAAI3C,GAAS,CACb,IAAIzmB,KAAKujB,KAAO,GAAK1e,oBAAkBukB,GAEnC,MADA3C,GAASzmB,KAAKujB,IAGlB,KAAK,GAAIviB,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAChChB,KAAK2lB,OAAO3kB,GAAG+lB,MAAQ/mB,KAAK2lB,OAAO3kB,GAAG6kB,IAAMY,IAC5CA,EAASzmB,KAAK2lB,OAAO3kB,GAAG+lB,MAAQ/mB,KAAK2lB,OAAO3kB,GAAG6kB,IAMvD,OAH2B,KAAvB7lB,KAAK2lB,OAAOhlB,SACZ8lB,EAASzmB,KAAK2mB,SAEXF,GAEXnD,EAAgBpjB,UAAUqnB,OAAS,WAC/B,GAAIA,GAAS,CAGb,OAFAA,GAASvnB,KAAK2mB,QACd3mB,KAAKynB,eAAiBF,EACfA,GAEXjE,EAAgBpjB,UAAUmoB,mBAAqB,WAC3C,IAAK,GAAIrnB,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAAK,CACzC,GAAIogB,GAAKphB,KAAK2lB,OAAO3kB,GAAGogB,EACxB,IAAIphB,KAAKsC,QAAQuM,cAAc,QAAWuS,EAAK,MAA/C,CACI,GAAIyE,GAAM1gB,SAASnF,KAAKsC,QAAQuM,cAAc,QAAWuS,EAAK,MAAOzT,aAAa,YAAa,IAC3FmY,EAAM3gB,SAASnF,KAAKsC,QAAQuM,cAAc,QAAWuS,EAAK,MAAOzT,aAAa,YAAa,GAC/F3N,MAAKslB,UAAUtlB,KAAK2lB,OAAO3kB,GAAGogB,KAAQyE,IAAKA,EAAKC,IAAKA,MAOjExC,EAAgBpjB,UAAUmpB,iBAAmB,SAAU/lB,EAAU0iB,EAASxW,GACtE,GAAIlN,GAAUtC,KAAK6S,cAAc,MAUjC,OATIrD,IACAzG,YAAUzG,IAAWkN,IAErBlM,GAAYA,EAAS3C,OAAS,GAC9BoI,YAAUzG,GAAUgB,GAEpB0iB,GACA1jB,EAAQ4M,aAAa,KAAM8W,GAExB1jB,GAEXghB,EAAgBpjB,UAAUopB,eAAiB,SAAUrJ,GACjD,GAAIA,EACA,IACI,MAAwB,kBAAbA,IAA2BlW,SAASgK,iBAAiBkM,GAAUtf,OAC/DugB,UAAQnX,SAAS8E,cAAcoR,GAAUza,UAAUub,QAGnDG,UAAQjB,GAGvB,MAAOsJ,GACH,GAAIC,GAAiBvc,qBAAmBwc,SAASxJ,EACjD,OAAOiB,WAASlhB,KAAK+M,qBAA6C,mBAAYyc,EAAiBvJ,KAK3GqD,EAAgBpjB,UAAUwpB,eAAiB,SAAU5kB,EAAS6kB,EAAere,EAAMse,EAAkBjJ,GACjG,GAAIK,GAAahhB,KAAKspB,eAAexkB,GACjC+kB,IACJ,IAAoB,MAAf/kB,EAAQ,IAA6B,MAAfA,EAAQ,IACa,WAA5CiF,SAAS8E,cAAc/J,GAASglB,QAgB/B,CACD,GAAIC,GAAa/I,KAAehhB,KAAM2gB,EAAMrV,EAAMse,EAAkB,KAAMD,EAC1E,IAAII,EAAY,CACZ,IAAK,GAAIhnB,GAAK,EAAGinB,EAAeD,EAAYhnB,EAAKinB,EAAarpB,OAAQoC,IAAM,CACxE,GAAIiK,GAAOgd,EAAajnB,EACxB8mB,GAAiBva,KAAKtC,GAE1Bid,YAAU/b,MAAM1L,KAAKqnB,GAAmBF,QAvBU,CACtD,GAAI/I,GAAS7W,SAAS8E,cAAc/J,EACpC,KAAKD,oBAAkB+b,GAQnB,MAP6B,SAAzBA,EAAO1a,MAAM2a,SACbD,EAAO1a,MAAM4a,eAAe,WAEK,KAAjCF,EAAOjT,aAAa,UACpBiT,EAAOzR,gBAAgB,aAE3Bwa,GAAc7W,YAAY8N,EAI1B9b,GAAUA,EAAQic,SAc9BuC,EAAgBpjB,UAAU2nB,aAAe,SAAUqC,EAAaC,EAAYC,EAASR,GACjF7gB,YAAUmhB,IArWN,UAKU,uBAiWdA,EAAYhb,aAAa,OAAQ,YAC7BlP,KAAKwoB,eACL0B,EAAYhb,aAAa,eAAgB,QAE7C,IAAI5L,GAAW6mB,EAAW7mB,SAAW6mB,EAAW7mB,SAASmM,MAAM,KAAO,IAQtE,IAPAzP,KAAKqqB,aAAeH,EAAYrb,cAAc,sBAC1Cqb,EAAYrb,cAAc,sBAC1B7O,KAAKqpB,iBAAiB/lB,EAAU4mB,EAAY9I,GAAK,WA3WxC,qBA4Wb8I,EAAYpX,YAAY9S,KAAKqqB,cACxBF,EAAW3mB,SACZxD,KAAKsqB,aAAaJ,GAElBC,EAAWI,OAAQ,CACnB,GAAIC,GAAwBN,EAAYrb,cAAc,mBAClDqb,EAAYrb,cAAc,mBAAqB7O,KAAKqpB,oBAAqBa,EAAY9I,GAAK,WAAY,GAE1G,IADArY,YAAUyhB,IAjXT,oBAkXIN,EAAYrb,cAAc,mBAAoB,CAC3CuS,EAAKphB,KAAKsC,QAAQ8e,GAAK,iBAAmBgJ,CAC9CpqB,MAAK0pB,eAAeS,EAAWI,OAAQC,EAAuBpJ,EAAIwI,EAAkB,UACpF5pB,KAAKqqB,aAAavX,YAAY0X,GAC9BxqB,KAAKogB,wBAGb,GAAI+J,EAAWrlB,QAAS,CACpB,GAAI2lB,GAAaN,EAAW7mB,SAAW6mB,EAAW7mB,SAASmM,MAAM,KAAO,IACxEzP,MAAK0qB,UAAYR,EAAYrb,cAAc,oBAAsBqb,EAAYrb,cAAc,oBACvF7O,KAAKqpB,iBAAiBoB,EAAYP,EAAY9I,GAAK,QA/XhD,kBAgYP,IAEIuJ,GAAqB,iBAFN3qB,KAAKqqB,aAAaxb,cAAc,mBAC/CwN,OAAOnG,iBAAiBlW,KAAKqqB,aAAaxb,cAAc,oBAAoB1L,OAAS,OAC/B,GAE1D,IADAynB,oBAAS5qB,KAAK0qB,WAAavnB,OAAQwnB,KAC9BT,EAAYrb,cAAc,oBAAqB,CAChD,GAAIuS,GAAKphB,KAAKsC,QAAQ8e,GAAK,kBAAoBgJ,CAC/CpqB,MAAK0pB,eAAeS,EAAWrlB,QAAS9E,KAAK0qB,UAAWtJ,EAAIwI,EAAkB,WAC9E5pB,KAAKqqB,aAAavX,YAAY9S,KAAK0qB,WACnC1qB,KAAKogB,wBAGb,MAAO8J,IAEX5G,EAAgBpjB,UAAUoqB,aAAe,SAAUjD,GAC/Cte,YAAUse,IA5YJ,gBA8YV/D,EAAgBpjB,UAAUonB,gBAAkB,SAAUD,GAClD,GAAIwD,IACA/D,MAAOO,EAAayD,aAAa,cAAgB3lB,SAASkiB,EAAa1Z,aAAa,cAAe,IAAM,EACzGoZ,MAAOM,EAAayD,aAAa,cAAgB3lB,SAASkiB,EAAa1Z,aAAa,cAAe,IAAM,EACzGod,SAAU1D,EAAayD,aAAa,iBAAmB3lB,SAASkiB,EAAa1Z,aAAa,iBAAkB,IAAM,EAClHqd,SAAU3D,EAAayD,aAAa,iBAAmB3lB,SAASkiB,EAAa1Z,aAAa,iBAAkB,IAAM,EAClHsd,SAAU5D,EAAayD,aAAa,iBAAmB3lB,SAASkiB,EAAa1Z,aAAa,iBAAkB,IAAM,KAClHud,SAAU7D,EAAayD,aAAa,iBAAmB3lB,SAASkiB,EAAa1Z,aAAa,iBAAkB,IAAM,KAClHkY,IAAKwB,EAAayD,aAAa,YAAc3lB,SAASkiB,EAAa1Z,aAAa,YAAa,IAAM,EACnGmY,IAAKuB,EAAayD,aAAa,YAAc3lB,SAASkiB,EAAa1Z,aAAa,YAAa,IAAM,EACnGyT,GAAIiG,EAAa1Z,aAAa,MAC9Bwd,OAAQ9D,EAAayD,aAAa,eAAiB3lB,SAASkiB,EAAa1Z,aAAa,eAAgB,IAAM,IAC5G4c,OAAQlD,EAAaxY,cAAc,oBAAsB,kBACzD/J,QAASuiB,EAAaxY,cAAc,qBAAuB,mBAE1Dgc,GAAMzJ,KACPyJ,EAAMzJ,GAAK,UAAYphB,KAAKwjB,QAAQ5W,WACpCya,EAAanY,aAAa,KAAM2b,EAAMzJ,IACtCphB,KAAKwjB,QAAUxjB,KAAKwjB,QAAU,GAE9B4H,cAAYP,EAAMrnB,WAClBqnB,EAAMrnB,SAAU,GAEpB6jB,EAAanhB,MAAMilB,OAAS,GAAKN,EAAMM,MACvC,IAAIE,GAAY,GAAIhI,GAAMrjB,KAAM,SAAU6qB,GAAO,EACjD7qB,MAAK2lB,OAAOrW,KAAK+b,GACjBrrB,KAAKslB,UAAUuF,EAAMzJ,KAAQyE,IAAKgF,EAAMhF,IAAKC,IAAK+E,EAAM/E,MAE5DxC,EAAgBpjB,UAAUorB,aAAe,WACrC,GAAItrB,KAAKurB,cAEL,IAAK,GADDnE,GAAgBpnB,KAAKsC,QAAQyR,iBAAiB,yCACzC/S,EAAI,EAAGA,EAAIomB,EAAczmB,OAAQK,IAAK,CAC3C,GAAI6S,GAAmC,SAAtB5K,UAAQC,KAAKC,KAAmB,wBAA0B,WAC3EW,gBAAajD,IAAIugB,EAAcpmB,GAAI6S,EAAW7T,KAAKwrB,kBAAmBxrB,MAC5C,SAAtBiJ,UAAQC,KAAKC,MACbW,eAAajD,IAAIugB,EAAcpmB,GAAI,aAAchB,KAAKyrB,uBAAwBzrB,QAK9FsjB,EAAgBpjB,UAAUyoB,WAAa,WACnC3oB,KAAK0rB,gBAAkB1rB,KAAKsiB,QAAQna,KAAKnI,MACzC8J,eAAajD,IAAIwV,OAAQ,SAAUrc,KAAK0rB,iBACxC1rB,KAAKsrB,gBAEThI,EAAgBpjB,UAAUsrB,kBAAoB,SAAUlhB,GAEpD,IAAK,GADD8D,GAAKud,UAASrhB,gBAAkB,YAC3BtJ,EAAI,EAAGhB,KAAK2lB,OAAOhlB,OAASK,EAAGA,IACpC,GAAIhB,KAAK2lB,OAAO3kB,GAAGwC,SAAWxD,KAAK2lB,OAAO3kB,GAAGogB,KAAOhT,EAAGgT,GAAI,CACvDphB,KAAK4rB,YAAYthB,GACjBtK,KAAK6rB,WAAavhB,EAAEgL,MACpBtV,KAAK8rB,WAAaxhB,EAAEkL,KACpB,IAAIuW,GAAuC,SAAtB9iB,UAAQC,KAAKC,KAAmB,wBAA0B,YAC3E6iB,EAAqC,SAAtB/iB,UAAQC,KAAKC,KAAmB,oBAAsB,SACpEnJ,MAAKisB,mBACNniB,eAAajD,IAAIkD,SAAUgiB,EAAe/rB,KAAKksB,kBAAmBlsB,MAClEA,KAAKisB,kBAAmB,GAEvBjsB,KAAKmsB,iBACNriB,eAAajD,IAAIkD,SAAUiiB,EAAahsB,KAAKosB,gBAAiBpsB,MAC9DA,KAAKmsB,gBAAiB,KAKtC7I,EAAgBpjB,UAAU0rB,YAAc,SAAUthB,GAC9CtK,KAAK0jB,cAAe,EACpB1jB,KAAKqsB,mBAAqBrsB,KAAKssB,YAAYtsB,KAAK2lB,OAChD,IAAIvX,GAAKud,UAASrhB,gBAAkB,YAChCiiB,GAAS1gB,MAAOvB,EAAGhI,QAAS8L,EAAIoe,cAAc,EAClDxsB,MAAKuN,QAAQ,cAAegf,GAC5BvsB,KAAKysB,WAAaniB,EAAEoiB,cACpB1sB,KAAK2sB,UAAY5iB,SAAS8I,cAAc,OACxC7S,KAAK2sB,UAAU9pB,UAAUgE,IAAI,YAC7BkC,YAAU/I,KAAKsC,UA5eH,cA6eZtC,KAAKsC,QAAQwQ,YAAY9S,KAAK2sB,WAC9B3sB,KAAKogB,uBACLpgB,KAAK4sB,SAAWnR,WAAWrN,EAAGlI,MAAMkW,MACpCpc,KAAK6sB,SAAWpR,WAAWrN,EAAGlI,MAAMqW,KACpCvc,KAAK8sB,aAAe1e,EAAG3H,YACvBzG,KAAK+sB,cAAgB3e,EAAG1H,aACxB1G,KAAKgtB,cAAgBhtB,KAAKitB,gBAAgB7e,EAAGgT,IAAI0F,MACjD9mB,KAAKktB,eAAiBltB,KAAKitB,gBAAgB7e,EAAGgT,IAAI2F,MAClD/mB,KAAKmtB,YAAcntB,KAAKitB,gBAAgB7e,EAAGgT,IAAIyE,KAEnDvC,EAAgBpjB,UAAUurB,uBAAyB,SAAUnhB,GACzDtK,KAAK4rB,YAAYthB,GACjBtK,KAAK6rB,WAAavhB,EAAE8iB,eAAe,GAAG9X,MACtCtV,KAAK8rB,WAAaxhB,EAAE8iB,eAAe,GAAG5X,MACjCxV,KAAKisB,mBACNniB,eAAajD,IAAIkD,SAAU,YAAa/J,KAAKqtB,uBAAwBrtB,MACrEA,KAAKisB,kBAAmB,GAEvBjsB,KAAKmsB,iBACNriB,eAAajD,IAAIkD,SAAU,WAAY/J,KAAKosB,gBAAiBpsB,MAC7DA,KAAKmsB,gBAAiB,IAG9B7I,EAAgBpjB,UAAUotB,YAAc,WACpC,OAAQttB,KAAKipB,SAAS,GAAIjpB,KAAKipB,SAAS,KAE5C3F,EAAgBpjB,UAAUqtB,iBAAmB,SAAUjjB,GACnDtK,KAAKwtB,WAAaxtB,KAAKysB,UACvB,IACIF,IAAS1gB,MAAOvB,EAAGhI,QADdqpB,UAAS3rB,gBAAkB,YACAwsB,cAAc,EAClDxsB,MAAKuN,QAAQ,SAAUgf,IAE3BjJ,EAAgBpjB,UAAUutB,oBAAsB,SAAUrf,GACtDpO,KAAK0tB,QAAU1tB,KAAKsC,QAAQmE,YAAc,EAC1CzG,KAAK6jB,OAAS7jB,KAAKipB,SAAS,GAAKjpB,KAAK8jB,QAAU,EAChDhb,eAAasF,GAAK,sBAClBrF,YAAUqF,IAAM+U,GAEhB,KAAK,GADDwK,IA3gBD,SACA,SACC,UACA,UAII,eADA,eAEA,eACA,gBAmgBC3sB,EAAI,EAAGA,EAAIhB,KAAKwtB,WAAW3qB,UAAUlC,OAAQK,KACS,IAAvD2sB,EAAY5iB,QAAQ/K,KAAKwtB,WAAW3qB,UAAU7B,MAC9ChB,KAAK4tB,YAAe5tB,KAAKwtB,WAAW3qB,UAAU7B,KAI1DsiB,EAAgBpjB,UAAUgsB,kBAAoB,SAAU5hB,GACpDtK,KAAKutB,iBAAiBjjB,EACtB,IAAI8D,GAAKud,UAAS3rB,gBAAkB,WACpC,IAAIA,KAAK6rB,aAAevhB,EAAEgL,OAAStV,KAAK8rB,aAAexhB,EAAEkL,MAAzD,CAGAxV,KAAKytB,oBAAoBrf,EACzB,IAAI+b,GAAanqB,KAAKitB,gBAAgB7e,EAAGT,aAAa,MACtD3N,MAAK+jB,OAASzZ,EAAEgL,MAChBtV,KAAKgkB,OAAS1Z,EAAEkL,KAChB,IAAIqY,GAAQ7tB,KAAKgkB,OAAShkB,KAAK8rB,WAAa9rB,KAAK4jB,MAC7CkK,EAAQ9tB,KAAK+jB,OAAS/jB,KAAK6rB,WAAa7rB,KAAK2jB,KACjD3jB,MAAK2jB,MAAQ3jB,KAAK4jB,MAAQ,EAC1B5jB,KAAK8rB,WAAa9rB,KAAKgkB,OACvBhkB,KAAK6rB,WAAa7rB,KAAK+jB,OACvB/jB,KAAK+tB,cAAc3f,EAAI+b,EAAY2D,EAAOD,KAE9CvK,EAAgBpjB,UAAUmtB,uBAAyB,SAAU/iB,GACzDtK,KAAKutB,iBAAiBjjB,EACtB,IAAI8D,GAAKud,UAAS3rB,gBAAkB,WACpC,IAAIA,KAAK6rB,aAAevhB,EAAE8iB,eAAe,GAAG9X,OAAStV,KAAK8rB,aAAexhB,EAAE8iB,eAAe,GAAG5X,MAA7F,CAGAxV,KAAKytB,oBAAoBrf,EACzB,IAAI+b,GAAanqB,KAAKitB,gBAAgB7e,EAAGT,aAAa,MACtD3N,MAAK+jB,OAASzZ,EAAE8iB,eAAe,GAAG9X,MAClCtV,KAAKgkB,OAAS1Z,EAAE8iB,eAAe,GAAG5X,KAClC,IAAIsY,GAAQ9tB,KAAK+jB,OAAS/jB,KAAK6rB,WAAa7rB,KAAK2jB,MAC7CkK,EAAQ7tB,KAAKgkB,OAAShkB,KAAK8rB,WAAa9rB,KAAK4jB,KACjD5jB,MAAK2jB,MAAQ3jB,KAAK4jB,MAAQ,EAC1B5jB,KAAK6rB,WAAa7rB,KAAK+jB,OACvB/jB,KAAK8rB,WAAa9rB,KAAKgkB,OACvBhkB,KAAK+tB,cAAc3f,EAAI+b,EAAY2D,EAAOD,KAG9CvK,EAAgBpjB,UAAU6tB,cAAgB,SAAU3f,EAAI+b,EAAY6D,EAAUC,GAC1E,GAAIC,GAAWluB,KAAKitB,gBAAgB7e,EAAGgT,IAAI0F,MACvCqH,EAAWnuB,KAAKitB,gBAAgB7e,EAAGgT,IAAI2F,MACvCqH,EAAKH,EACLI,EAAKL,CA4CT,IA3CIhuB,KAAK4tB,YAAY7iB,QAAQ,UAAY,IACjC/K,KAAK+sB,cAAgBqB,EAAKpuB,KAAKsuB,aAAanE,IAC5C8D,EAAWjuB,KAAK+sB,cAAgB/sB,KAAKsuB,aAAanE,GAClDnqB,KAAK4jB,MAAQwK,EAAKH,GAEb9D,EAAWe,UAAYlrB,KAAK+sB,cAAgBqB,EAAKpuB,KAAKuuB,aAAapE,IACxE8D,EAAWjuB,KAAK+sB,cAAgB/sB,KAAKuuB,aAAapE,GAClDnqB,KAAK4jB,MAAQwK,EAAKH,GAEbjuB,KAAK6sB,SAAWuB,EAAKpuB,KAAKikB,SAC/BgK,EAAWjuB,KAAKikB,OAASjkB,KAAK6sB,SAC9B7sB,KAAK4jB,MAAQwK,EAAKH,GAEtBjuB,KAAK6sB,UAAYoB,EACjBjuB,KAAK+sB,eAAiBkB,GAEtBjuB,KAAK4tB,YAAY7iB,QAAQ,UAAY,IACjC/K,KAAK+sB,cAAgBqB,EAAKpuB,KAAKsuB,aAAanE,IAC5C8D,EAAWjuB,KAAKsuB,aAAanE,GAAcnqB,KAAK+sB,cAChD/sB,KAAK4jB,MAAQwK,EAAKH,GAEb9D,EAAWe,UAAYlrB,KAAK+sB,cAAgBqB,EAAKpuB,KAAKuuB,aAAapE,KACxE8D,EAAWjuB,KAAKuuB,aAAapE,GAAcnqB,KAAK+sB,cAChD/sB,KAAK4jB,MAAQwK,EAAKH,GAEtBjuB,KAAK+sB,eAAiBkB,GAEtBjuB,KAAK4tB,YAAY7iB,QAAQ,SAAW,IAChC/K,KAAK8sB,aAAeuB,EAAKruB,KAAKwuB,YAAYrE,IAC1C6D,EAAWhuB,KAAK8sB,aAAe9sB,KAAKwuB,YAAYrE,GAChDnqB,KAAK2jB,MAAQ0K,EAAKL,GAEb7D,EAAWc,UAAYjrB,KAAK8sB,aAAeuB,EAAKruB,KAAKyuB,YAAYtE,IACtE6D,EAAWhuB,KAAK8sB,aAAe9sB,KAAKyuB,YAAYtE,GAChDnqB,KAAK2jB,MAAQ0K,EAAKL,GAEbhuB,KAAK4sB,SAAWyB,EAAKruB,KAAKkkB,UAC/B8J,EAAWhuB,KAAKkkB,QAAUlkB,KAAK4sB,SAC/B5sB,KAAK2jB,MAAQ0K,EAAKL,GAEtBhuB,KAAK4sB,UAAYoB,EACjBhuB,KAAK8sB,cAAgBkB,GAErBhuB,KAAK4tB,YAAY7iB,QAAQ,SAAW,EAAG,CACnC/K,KAAK8sB,aAAeuB,EAAKruB,KAAKwuB,YAAYrE,IAC1C6D,EAAWhuB,KAAKwuB,YAAYrE,GAAcnqB,KAAK8sB,aAC/C9sB,KAAK2jB,MAAQ0K,EAAKL,GAEb7D,EAAWc,UAAYjrB,KAAK8sB,aAAeuB,EAAKruB,KAAKyuB,YAAYtE,KACtE6D,EAAWhuB,KAAKyuB,YAAYtE,GAAcnqB,KAAK8sB,aAC/C9sB,KAAK2jB,MAAQ0K,EAAKL,EAEtB,IAAIU,GAAe1uB,KAAK8sB,YACxB9sB,MAAK8sB,cAAgBkB,CACrB,IAAIW,GAAW3uB,KAAK4uB,gBAAgB5uB,KAAK8sB,aAAgB3C,QAAoBnqB,KAAKmpB,YAAY,IAAI,EAC9FnpB,MAAK2mB,QAAUwD,EAAWrE,IAAM6I,IAChC3uB,KAAK8sB,aAAe4B,GAG5BtgB,EAAGlI,MAAMqW,IAAMvc,KAAK6sB,SAAW,KAC/Bze,EAAGlI,MAAMkW,KAAOpc,KAAK4sB,SAAW,KAChCxe,EAAGlI,MAAM9C,MAAQpD,KAAK8sB,aAAe,KACrC1e,EAAGlI,MAAM/C,OAASnD,KAAK+sB,cAAgB,IACvC,IAAI/f,GAAOhN,KAAK6uB,mBAAmB1E,EAanC,IAZInd,EAAK8Y,IAAM9Y,EAAK8Z,MAAQ9mB,KAAK2mB,SAC7B3mB,KAAK4lB,oBAAoB5Y,GAAQ8Z,MAAO9Z,EAAK8Z,MAAQ,IAEzD9mB,KAAK2sB,UAAUzmB,MAAMqW,IAAQvP,EAAK6Y,IAAM7lB,KAAKstB,cAAc,GAAMtgB,EAAK6Y,IAAM7lB,KAAKmpB,YAAY,GAAQ,KACjGnpB,KAAK4tB,YAAY7iB,QAAQ,SAAW,EACpC/K,KAAK2sB,UAAUzmB,MAAMkW,KAASpP,EAAK8Y,IAAM9lB,KAAKstB,cAAc,IAAQtgB,EAAK8Y,IAAM,GAAK9lB,KAAKmpB,YAAY,GAAO,KAG5GnpB,KAAK2sB,UAAUzmB,MAAMkW,KAASpP,EAAK8Y,IAAM9lB,KAAKstB,cAAc,GAAQtgB,MAAYhN,KAAKmpB,YAAY,GAAO,KAE5GnpB,KAAK2sB,UAAUzmB,MAAM/C,OAAW6J,EAAK+Z,OAAS/mB,KAAKstB,cAAc,GAAMttB,KAAKmpB,YAAY,IAAS,KACjGnpB,KAAK2sB,UAAUzmB,MAAM9C,MAAU4J,EAAK8Z,OAAS9mB,KAAKstB,cAAc,GAAMttB,KAAKmpB,YAAY,IAAS,KAC5F+E,IAAalhB,EAAK8Z,OAASqH,IAAanhB,EAAK+Z,MAAO,CACpDmH,EAAWlhB,EAAK8Z,MAChBqH,EAAWnhB,EAAK+Z,KAChB,IAAI8D,GAAQ7qB,KAAKitB,gBAAgB7e,EAAGgT,IAChCtU,GACA2U,YACIoE,IAAKgF,EAAMhF,IAAIjZ,WACfkZ,IAAK+E,EAAM/E,IAAIlZ,WACfka,MAAO+D,EAAM/D,MAAMla,WACnBma,MAAO8D,EAAM9D,MAAMna,YAG3B5M,MAAK6mB,cAAc/Z,EAAOsB,GAC1BpO,KAAKkoB,YAAc9Z,EACnBpO,KAAK8uB,kBACL9uB,KAAKmoB,kBAAkB/Z,EAAIpO,KAAKitB,gBAAgB7e,EAAGgT,KACnDphB,KAAKqoB,qBACLroB,KAAK0oB,gBAGbpF,EAAgBpjB,UAAUksB,gBAAkB,SAAU9hB,GAClD,IAAIzF,oBAAkB7E,KAAKysB,YAA3B,CAGAzsB,KAAK+uB,SAAW/uB,KAAKysB,UACrB,IAAIre,GAAKud,UAAS3rB,cAAgB,YAC9BusB,GAAS1gB,MAAOvB,EAAGhI,QAAS8L,EAAIoe,cAAc,EAClD,IAAIpe,EAAI,CACJrF,YAAUqF,GAAK,qBACf,IAAI2d,GAAuC,SAAtB9iB,UAAQC,KAAKC,KAAmB,wBAA0B,YAC3E6iB,EAAqC,SAAtB/iB,UAAQC,KAAKC,KAAmB,oBAAsB,SACzEW,gBAAaU,OAAOT,SAAUgiB,EAAe/rB,KAAKksB,mBAClDpiB,eAAaU,OAAOT,SAAUiiB,EAAahsB,KAAKosB,iBACtB,SAAtBnjB,UAAQC,KAAKC,OACbW,eAAaU,OAAOT,SAAU,YAAa/J,KAAKqtB,wBAChDvjB,eAAaU,OAAOT,SAAU,WAAY/J,KAAKosB,kBAEnDpsB,KAAKmsB,gBAAiB,EACtBnsB,KAAKisB,kBAAmB,EACpBjsB,KAAK2sB,WACLte,SAAOrO,KAAK2sB,WAEhB3sB,KAAK2sB,UAAY,IACjB,IAAIxC,GAAanqB,KAAKitB,gBAAgB7e,EAAGT,aAAa,MACtD3N,MAAKgnB,iBAAiB5Y,EAAI+b,EAAWtE,IAAKsE,EAAWrE,KACrD9lB,KAAKinB,kBAAkB7Y,EAAI+b,GAE/BrhB,eAAasF,IAAM+U,IACnBoJ,EAAK5G,OAAS3lB,KAAKgvB,oBACnBhvB,KAAKuN,QAAQ,aAAcgf,GAC3BvsB,KAAK0jB,cAAe,EACpB1jB,KAAK6rB,WAAa7rB,KAAK8rB,eAAamD,GACpCjvB,KAAK2jB,MAAQ3jB,KAAK4jB,MAAQ,EAC1B5jB,KAAKkoB,YAAc,KACfloB,KAAKkvB,eACLlvB,KAAKmvB,mBAETnvB,KAAK4oB,eACL5oB,KAAK6oB,yBACL7oB,KAAKovB,iBAAgB,KAEzB9L,EAAgBpjB,UAAU8uB,kBAAoB,WAI1C,MAHKhvB,MAAK0jB,cACN1jB,KAAK4oB,eAEF5oB,KAAKqvB,oBAEhB/L,EAAgBpjB,UAAU2uB,mBAAqB,SAAU7hB,GACrD,GAAIsiB,IAAY,EACZxJ,EAAM9Y,EAAK8Y,KAC+C,KAAzD,SAAU,gBAAgB/a,QAAQ/K,KAAK4tB,eACxC9H,EAAM9lB,KAAK4uB,gBAAgB5uB,KAAK4sB,UAAU,GAE9C,IAAI/G,GAAM7Y,EAAK6Y,KACgC,KAA1C,WAAW9a,QAAQ/K,KAAK4tB,eACzB/H,EAAM7lB,KAAKuvB,aAAavvB,KAAK6sB,UAAU,GACnC7sB,KAAKmtB,cAAgBtH,IACrB7lB,KAAKmtB,YAActH,EACnByJ,GAAY,GAGpB,IAAIxI,GAAQ9Z,EAAK8Z,OACyC,KAArD,UAAW,WAAW/b,QAAQ/K,KAAK4tB,eACpC9G,EAAQ9mB,KAAK4uB,gBAAgB5uB,KAAK8sB,aAAe,EAAU9sB,KAAKmpB,YAAY,IAAI,GAEpF,IAAIpC,GAAQ/Z,EAAK+Z,KAcjB,QAbwD,KAAnD,SAAU,UAAUhc,QAAQ/K,KAAK4tB,eACT,YAArB5tB,KAAK4tB,aAA4B0B,KACjCvI,EAAQ/mB,KAAKuvB,aAAavvB,KAAK+sB,cAAgB,EAAU/sB,KAAKmpB,YAAY,IAAI,IAGlFnc,EAAK8Y,IAAMgB,EAAQ9mB,KAAK2mB,UACxB3Z,EAAK8Z,MAAQA,EAAQ,IAETjB,GAAO,GAAKC,GAAO,GAAKgB,EAAQhB,GAAO9lB,KAAKunB,UAAYR,EAAQlB,GAAO7lB,KAAKymB,UACK,IAA/EzmB,KAAKwvB,WAAW3J,EAAKC,EAAKgB,EAAOC,EAAO/mB,KAAKyvB,aAAaziB,EAAKoU,KAAKzgB,SACzD,IAAtBX,KAAK0vB,eACR1vB,KAAK4lB,oBAAoB5Y,GAAQ6Y,IAAKA,EAAKC,IAAKA,EAAKgB,MAAOA,EAAOC,MAAOA,IAEvE/Z,GAEXsW,EAAgBpjB,UAAU0uB,gBAAkB,SAAUe,EAAQC,GAC1D,MAAIA,GACO9T,KAAKC,KAAK4T,EAAS3vB,KAAKipB,SAAS,IAGjCnN,KAAK+T,MAAMF,GAAU3vB,KAAKipB,SAAS,GAAKjpB,KAAKmpB,YAAY,MAGxE7F,EAAgBpjB,UAAUqvB,aAAe,SAAUI,EAAQC,GACvD,MAAIA,GACO9T,KAAKgD,MAAM6Q,EAAS3vB,KAAKipB,SAAS,IAGlCnN,KAAKgD,MAAM6Q,GAAU3vB,KAAKipB,SAAS,GAAKjpB,KAAKmpB,YAAY,MAGxE7F,EAAgBpjB,UAAUsuB,YAAc,SAAUxhB,GAC9C,MAAUA,YAAiBhN,KAAKstB,cAAc,IAAOtgB,EAAK+d,SAAW,GAAK/qB,KAAKmpB,YAAY,IAE/F7F,EAAgBpjB,UAAUuuB,YAAc,SAAUzhB,GAC9C,MAAQA,YAAiBhN,KAAKstB,cAAc,IAEhDhK,EAAgBpjB,UAAUouB,aAAe,SAAUthB,GAC/C,MAAUA,YAAiBhN,KAAKstB,cAAc,IAAOtgB,EAAKge,SAAW,GAAKhrB,KAAKmpB,YAAY,IAE/F7F,EAAgBpjB,UAAUquB,aAAe,SAAUvhB,GAC/C,MAAQA,YAAiBhN,KAAKstB,cAAc,IAEhDhK,EAAgBpjB,UAAUwoB,YAAc,WACpC1oB,KAAK4kB,cACL,KAAK,GAAI5jB,GAAI,EAAG8uB,EAAI9vB,KAAK2kB,gBAAgBhkB,OAAQK,EAAI8uB,IAAK9uB,EACtDhB,KAAK+vB,SAAS/vB,KAAK2kB,gBAAgB3jB,KAG3CsiB,EAAgBpjB,UAAUivB,iBAAmB,WACzC,IAA2B,IAAvBnvB,KAAKkvB,cAAT,CAGA,IAAK,GAAIc,GAAW,EAAGF,EAAI9vB,KAAK4kB,YAAYjkB,OAAQqvB,EAAWF,IAAKE,EAAU,CAC1E,GAAIrJ,GAAU3mB,KAAK4kB,YAAYoL,EAC/B,IAAKrJ,EAGL,IAAK,GAAIsJ,GAAW,EAAGha,EAAM0Q,EAAQhmB,OAAQsvB,EAAWha,IAAOga,EAAU,CACrE,GAAIjjB,GAAO2Z,EAAQsJ,EACfjjB,IACAhN,KAAKkwB,gBAAgBljB,IAIjChN,KAAKmwB,oBAET7M,EAAgBpjB,UAAUgwB,gBAAkB,SAAUljB,GAClD,IAA2B,IAAvBhN,KAAKkvB,eAA2BliB,IAAShN,KAAKkoB,YAAlD,CASA,IANA,GAAI+H,GAAWjwB,KAAKitB,gBAAgBjgB,EAAKoU,IAAI0E,IACzCiB,EAAQ5hB,SAAS6H,EAAKW,aAAa,cAAe,IAClDmZ,EAAQ3hB,SAAS6H,EAAKW,aAAa,cAAe,IAClDyiB,EAAe,KACfC,EAAkB,KAClBL,EAAW7qB,SAAS6H,EAAKW,aAAa,YAAa,IAAM,EACtDqiB,GAAY,GAEM,IADThwB,KAAKwvB,WAAWQ,EAAUC,EAAUnJ,EAAOC,EAAO/Z,GACpDrM,QAGVyvB,EAAeJ,EACfK,EAAkBJ,IAChBD,CAEe,QAAjBI,GACApwB,KAAK+vB,SAAS/iB,EAAMojB,EAAcC,KAG1C/M,EAAgBpjB,UAAU6vB,SAAW,SAAU/iB,EAAMsjB,EAAUC,GAC3DvwB,KAAK8kB,iBACL,IAAI0L,GAASrrB,SAAS6H,EAAKW,aAAa,YAAa,IACjDkY,EAAM1gB,SAAS6H,EAAKW,aAAa,YAAa,GAKlD,IAJK3N,KAAK4kB,YAAYiB,KAClB7lB,KAAK4kB,YAAYiB,OAErB7lB,KAAK4kB,YAAYiB,GAAK2K,GAAUxjB,MACnBiiB,KAATjiB,OAAmCiiB,KAAbqB,OAA0CrB,KAAhBsB,EAA2B,CAC3E,OAAgCtB,KAA5BjvB,KAAKslB,UAAUtY,EAAKoU,KAAqD,OAAhCphB,KAAKslB,UAAUtY,EAAKoU,IAAIyE,SAC1B,KAAhC7lB,KAAKslB,UAAUtY,EAAKoU,IAAI0E,IAAqB,CAEhD,GAAI2K,GAASzwB,KAAK4kB,YAAY5kB,KAAKslB,UAAUtY,EAAKoU,IAAIyE,IAClD7lB,MAAKslB,UAAUtY,EAAKoU,KAAOqP,EAAOzwB,KAAKslB,UAAUtY,EAAKoU,IAAI0E,OAAS9Y,UAC5DyjB,GAAOzwB,KAAKslB,UAAUtY,EAAKoU,IAAI0E,KACtC9lB,KAAKqoB,qBACLroB,KAAK0oB,eAIjB1oB,KAAKslB,UAAUtY,EAAKoU,IAAIyE,IAAMyK,EAC9BtwB,KAAKslB,UAAUtY,EAAKoU,IAAIyE,IAAM0K,EACzBvwB,KAAK4kB,YAAYiB,KAClB7lB,KAAK4kB,YAAYiB,OAErB7lB,KAAK4kB,YAAYiB,GAAK2K,GAAUxjB,GACK,IAAjChN,KAAKqlB,SAASta,QAAQiC,IACtBhN,KAAKqlB,SAAS/V,KAAKtC,GAEvBhN,KAAK4lB,oBAAoB5lB,KAAKitB,gBAAgBjgB,EAAKoU,KAAOyE,IAAKyK,EAAUxK,IAAKyK,GAC9E,IAAIpG,GAAanqB,KAAKitB,gBAAgBjgB,EAAKoU,GAC3CphB,MAAK6mB,eAAgB/Z,OAASgZ,IAAKqE,EAAWrE,IAAIlZ,WAAYiZ,IAAKsE,EAAWtE,IAAIjZ,aAAgBI,GAClGhN,KAAK0wB,aAAa1jB,EAAMhN,KAAKitB,gBAAgBjgB,EAAKoU,OAG1DkC,EAAgBpjB,UAAUwwB,aAAe,SAAUpuB,EAAS6nB,GACxDnqB,KAAKgnB,iBAAiB1kB,EAAS6nB,EAAWtE,IAAKsE,EAAWrE,KAC1D9lB,KAAKinB,kBAAkB3kB,EAAS6nB,GAChCnqB,KAAKknB,kBACLlnB,KAAK0oB,eAETpF,EAAgBpjB,UAAUoiB,QAAU,WAGhC,GAFAtiB,KAAKskB,YAAc,EACnBtkB,KAAKsmB,iBACDtmB,KAAKomB,kBACLpmB,KAAKsoB,4BAEJ,CACD,GAAItoB,KAAKsC,QAAQO,UAAUC,SAv2BtB,gBAu2B4C,CAC7CgG,eAAa9I,KAAKsC,UAx2BjB,gBA02BD,KAAK,GADDquB,GAAiB3wB,KAAKsC,QAAQyR,kBAAmB/T,KAAKsC,WAAc,IAAMtC,KAAKsC,QAAQ8e,GAAK,MAAQ,IAAM,YACrGpgB,EAAI,EAAGA,EAAI2vB,EAAehwB,OAAQK,IAAK,CAC5C,GAAIqf,GAAMsQ,EAAe3vB,GACrB4vB,EAAe5wB,KAAKitB,gBAAgB5M,EAAIe,IACxCyE,EAAM1gB,SAASkb,EAAI1S,aAAa,YAAa,IAC7CmY,EAAM3gB,SAASkb,EAAI1S,aAAa,YAAa,GACjD3N,MAAK4lB,oBAAoBgL,GAAgB/K,IAAKA,EAAKC,IAAKA,IACxD9lB,KAAKinB,kBAAkB5G,EAAKrgB,KAAKitB,gBAAgB5M,EAAIe,KACrDphB,KAAKgnB,iBAAiB3G,EAAKwF,EAAKC,GAChC9lB,KAAKknB,mBAGblnB,KAAK+oB,wBACL/oB,KAAKmwB,kBAEJtrB,oBAAkB7E,KAAK2kB,mBACxB3kB,KAAK6wB,oBAAoB7wB,KAAK2kB,iBAC9B3kB,KAAKooB,WAAWpoB,KAAK2kB,kBAEzB3kB,KAAKsrB,eACAzmB,oBAAkB7E,KAAK2kB,kBACxB3kB,KAAK8wB,cAAc9wB,KAAKklB,iBAGhC5B,EAAgBpjB,UAAUiwB,gBAAkB,WACpCnwB,KAAKsC,QAAQuM,cAAc,iCACvB7O,KAAKumB,OACLlY,SAAOrO,KAAKumB,OAEhBvmB,KAAKqmB,kBAGb/C,EAAgBpjB,UAAU4wB,cAAgB,SAAU5L,GAChD,GAAIllB,KAAKomB,oBAAsBpmB,KAAKwoB,cAChC,IAASxnB,EAAI,EAAGA,EAAIkkB,EAAevkB,OAAQK,IACvCkkB,EAAelkB,GAAGugB,cAGrB,CACD,IAAK,GAAIvgB,GAAI,EAAGA,EAAIkkB,EAAevkB,OAAQK,IACvCkkB,EAAelkB,GAAGugB,SAEtBvhB,MAAKyoB,sBAAsBzoB,KAAK2kB,mBAGxCrB,EAAgBpjB,UAAU6wB,WAAa,WAenC,IAAK,GAdDlG,MAaAmG,EAAShxB,KACJ6lB,EAAM,EAAGA,GAAO7lB,KAAKujB,KAAMsC,KAbtB,SAAUA,GAQpB,IAAK,GAAIC,GAAM,EAAGA,EAAMkL,EAAOrK,QAASb,KAP1B,SAAUA,GACpBkL,EAAOrL,OAAO/N,OAAO,SAAUqZ,GACvBA,EAAMpL,MAAQA,GAAOoL,EAAMnL,MAAQA,GACnC+E,EAAMvb,KAAK2hB,MAKXnL,IAKJD,EAEZ,OAAOgF,IAEXvH,EAAgBpjB,UAAUooB,sBAAwB,WAC9Cvf,YAAU/I,KAAKsC,UA36BN,gBA46BT,IAAI4uB,EAEAA,GADAlxB,KAAKqkB,gBAAkBrkB,KAAK2lB,OACb3lB,KAAK2lB,OAGL3lB,KAAK+wB,aAExB/wB,KAAKmxB,YAAcD,EAAavwB,MAChC,KAAK,GAAIK,GAAI,EAAGA,EAAIkwB,EAAavwB,OAAQK,IAAK,CAC1C,GAAIqmB,GAAetd,SAASqnB,eAAeF,EAAalwB,GAAGogB,IACvDiQ,MAAgB,EAChBhK,KACAuD,oBAASvD,GAAgBjkB,MAAS,SAClCikB,EAAanhB,MAAM/C,OAAS,KAAQnD,KAAKsC,QAAQuG,eAC1C7I,KAAKsC,QAAQuG,cAAcpC,YAAczG,KAAKkpB,iBAAmBgI,EAAalwB,GAAG+lB,MAAS,KAC7FmK,EAAalwB,GAAG+lB,MAAQ,IACxBsK,GAAkBrxB,KAAKsC,QAAQuG,eACxB7I,KAAKsC,QAAQuG,cAAcpC,YAAczG,KAAKkpB,iBAAmBgI,EAAalwB,GAAG+lB,MACpF5hB,UAAU2W,KAAKgD,MAAMoS,EAAalwB,GAAG+lB,MAAQ,GAAK/mB,KAAKmpB,YAAY,IAAIvc,WAAY,IACvFya,EAAanhB,MAAM/C,OAAckuB,EAAgB,MAErDrxB,KAAKukB,cAAe,EACpBvkB,KAAK4lB,oBAAoBsL,EAAalwB,IAAM6kB,IAAK7kB,EAAG8kB,IAAK,IACzD9lB,KAAKgnB,iBAAiBK,EAAc6J,EAAalwB,GAAG6kB,IAAKqL,EAAalwB,GAAG8kB,KACzE9lB,KAAKskB,YAActkB,KAAKskB,YAAc4M,EAAalwB,GAAG+lB,MACjDliB,oBAAkB7E,KAAK2kB,mBACxB3kB,KAAKooB,WAAWpoB,KAAK2kB,iBACrB3kB,KAAK6wB,oBAAoB7wB,KAAK2kB,kBAE7B9f,oBAAkB7E,KAAKklB,iBACxBllB,KAAK8wB,cAAc9wB,KAAKklB,iBAIpCllB,KAAKknB,mBAET5D,EAAgBpjB,UAAU6oB,sBAAwB,WAC9C/oB,KAAKsC,QAAQO,UAAUgE,IAAI,gBAC3B7G,KAAKylB,mBACL,KAASzkB,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQyR,iBAAiB,YAAYpT,OAAQK,IAAK,CACvE,GAAIqf,GAAMrgB,KAAKsC,QAAQyR,iBAAiB,YAAY/S,GAChDmpB,EAAanqB,KAAKitB,gBAAgB5M,EAAIe,GAC1CphB,MAAKinB,kBAAkB5G,EAAK8J,GAEhC,IAAK,GAAInpB,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IACpChB,KAAKgnB,iBAAiBjd,SAASqnB,eAAepxB,KAAK2lB,OAAO3kB,GAAGogB,IAAKphB,KAAK2lB,OAAO3kB,GAAG6kB,IAAK7lB,KAAK2lB,OAAO3kB,GAAG8kB,IAEzG9lB,MAAKknB,mBAET5D,EAAgBpjB,UAAUgnB,gBAAkB,WACxClnB,KAAKsxB,eACLtxB,KAAKuxB,kBAETjO,EAAgBpjB,UAAUqxB,eAAiB,WACvC,GAAIC,EACJ,MAAI3sB,oBAAkB7E,KAAKmpB,cAAwC,IAAvBnpB,KAAK2lB,OAAOhlB,QAAgBX,KAAK2kB,iBACzC,IAAhC3kB,KAAK2kB,gBAAgBhkB,QADzB,CAIA,GAAIX,KAAKomB,kBAAmB,CAExB,IAAK,GADDqL,GAAgB,EACXzwB,EAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAChChB,KAAK2lB,OAAO3kB,GAAG+lB,QACf0K,GAAiBzxB,KAAK2lB,OAAO3kB,GAAG+lB,MAGxCyK,GAAe,GACVxxB,KAAKsC,QAAQuG,eAAmB7I,KAAKsC,QAAQuG,0BAA8B7I,KAAKkpB,kBAChFuI,EAAgB,GAAKzxB,KAAKmpB,YAAY,GAAM,SAGjDqI,GAAgBxxB,KAAKymB,UAChBzmB,KAAKipB,SAAS,GAAKjpB,KAAKkpB,kBAAoBlpB,KAAKymB,SAAW,GAAKzmB,KAAKmpB,YAAY,GAAM,IAEjGyB,qBAAS5qB,KAAKsC,SAAWa,OAAUquB,GACnC,IAAIE,GAAarV,OAAOnG,iBAAiBlW,KAAKsC,SAASc,KACvDwnB,qBAAS5qB,KAAKsC,SAAWc,MAASsuB,MAEtCpO,EAAgBpjB,UAAUyxB,qBAAuB,WAC7C3xB,KAAKsC,QAAQ4D,MAAM4a,eAAe,UAClC9gB,KAAKsC,QAAQ4D,MAAM4a,eAAe,UAEtCwC,EAAgBpjB,UAAU+mB,kBAAoB,SAAUI,EAAc8C,GAClES,oBAASvD,GAAgBlkB,OAAUiM,aAAWpP,KAAK4xB,gBAAgBzH,GAAY,MAC/ES,oBAASvD,GAAgBjkB,MAASgM,aAAWpP,KAAK4xB,gBAAgBzH,GAAY,OAElF7G,EAAgBpjB,UAAU2xB,WAAa,SAAUZ,EAAOrH,EAAkB1kB,GACtE,GAAIglB,EACJlqB,MAAKolB,WAAaplB,KAAK4xB,gBAAgBX,GACnC7F,cAAY6F,EAAMztB,WAClBytB,EAAMztB,SAAU,GAEhBxD,KAAK0lB,qBAAqB/kB,OAAS,IAAMkE,oBAAkBK,IAC3DglB,EAAclqB,KAAK0lB,qBAAqBxgB,GACpC+rB,EAAM3tB,UACNyF,YAAUmhB,IAAe+G,EAAM3tB,WAE/B2tB,EAAM7P,IACN8I,EAAYhb,aAAa,KAAM+hB,EAAM7P,KAIzC8I,EAAclqB,KAAK+lB,mBAAmBkL,EAAM3tB,SAAW2tB,EAAM3tB,SAASmM,MAAM,KAAO,KAAMwhB,EAAM7P,IAEnG8I,EAAYhkB,MAAMilB,OAAS,GAAK8F,EAAM9F,OACtCnrB,KAAKsC,QAAQwQ,YAAYoX,GACzBlqB,KAAKogB,sBACL,IAAI0R,GAAgB9xB,KAAK6nB,aAAaqC,EAAa+G,EAAOA,EAAM7P,GAAIwI,EAIpE,OAHA5pB,MAAK2kB,gBAAgBrV,KAAKwiB,GAC1B9xB,KAAK2nB,gBAAgBuC,EAAa+G,GAClCjxB,KAAKinB,kBAAkBiD,EAAa+G,GAC7B/G,GAEX5G,EAAgBpjB,UAAU8mB,iBAAmB,SAAUkD,EAAarE,EAAKC,GACrE,GAAKoE,EAAL,CAGIlqB,KAAKomB,mBACLpmB,KAAKylB,mBAET,IAAI+L,GAAcxxB,KAAKstB,cAAc,GACjCoE,EAAa1xB,KAAKstB,cAAc,GAChClR,EAAe,IAAR0J,EAAY,EAAM,GAAS,EAAe9lB,KAAKmpB,YAAY,IAClE5M,EAAc,IAARsJ,EAAY,EAAM,GAAS,EAAgB7lB,KAAKmpB,YAAY,GAClEnpB,MAAKomB,oBACL7J,EAAc,IAARsJ,EAAY,EAAM7lB,kBAAqB,EAAgBA,KAAKmpB,YAAY,KAElFyB,oBAASV,GAAe9N,KAAQA,EAAO,KAAMG,IAAOA,EAAM,SAE9D+G,EAAgBpjB,UAAUoxB,aAAe,WAErC,GADAtxB,KAAKujB,KAAO,KACRvjB,KAAKsC,QAAQyR,iBAAiB,YAAYpT,OAAS,IAAMX,KAAKmxB,YAE9D,IAAK,GADD/J,GAAgBpnB,KAAKsC,QAAQyR,iBAAiB,YACzC/S,EAAI,EAAGA,EAAIomB,EAAczmB,OAAQK,IAAK,CAC3C,GAAIqmB,GAAeD,EAAcpmB,GAC7BsvB,EAAWnrB,SAASkiB,EAAa1Z,aAAa,YAAa,IAC3DokB,EAAS5sB,SAASkiB,EAAa1Z,aAAa,cAAe,GAC/D3N,MAAKujB,KAAOzH,KAAK9N,IAAIhO,KAAKujB,KAAO+M,EAAWyB,OAG/C,CACG/xB,KAAKmxB,cACLnxB,KAAKujB,KAAOvjB,KAAKmxB,YACjBnxB,KAAKmxB,YAAc,KAEvB,KAASnwB,EAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IACpChB,KAAKujB,KAAOzH,KAAK9N,IAAIhO,KAAKujB,KAAMvjB,KAAK2lB,OAAO3kB,GAAG6kB,OAI3DvC,EAAgBpjB,UAAUsnB,gBAAkB,SAAUyJ,IAC7CA,EAAMnK,OAASmK,EAAMnK,MAAQmK,EAAMlG,SACpC/qB,KAAK4lB,oBAAoBqL,GAASnK,MAAOmK,EAAMlG,WAEzCkG,EAAMhG,UAAYgG,EAAMnK,MAAQmK,EAAMhG,SAC5CjrB,KAAK4lB,oBAAoBqL,GAASnK,MAAOmK,EAAMhG,WAE1CgG,EAAMnK,MAAQ9mB,KAAK2mB,QACxB3mB,KAAK4lB,oBAAoBqL,GAASnK,MAAO9mB,KAAK2mB,UAG9C3mB,KAAK4lB,oBAAoBqL,GAASnK,MAAOmK,EAAMnK,SAE9CmK,EAAMlK,OAASkK,EAAMlK,MAAQkK,EAAMjG,SACpChrB,KAAK4lB,oBAAoBqL,GAASlK,MAAOkK,EAAMjG,WAE1CiG,EAAM/F,UAAY+F,EAAMlK,MAAQkK,EAAM/F,SAC3ClrB,KAAK4lB,oBAAoBqL,GAASlK,MAAOkK,EAAM/F,WAG/ClrB,KAAK4lB,oBAAoBqL,GAASlK,MAAOkK,EAAMlK,SAGvDzD,EAAgBpjB,UAAU8xB,kBAAoB,SAAUf,GAChDA,EAAMnL,IAAMmL,EAAMnK,MAAQ9mB,KAAK2mB,SAC/B3mB,KAAK4lB,oBAAoBqL,GAASnK,MAAOmK,EAAMnK,OAAS9mB,KAAK2mB,SAAWsK,EAAMnL,IAAMmL,EAAMnK,WAGlGxD,EAAgBpjB,UAAU0lB,oBAAsB,SAAUqL,EAAOnkB,GAC7DmkB,EAAMviB,cAAc5B,GAAO,IAE/BwW,EAAgBpjB,UAAUqoB,qBAAuB,SAAU0J,GACvD,GAAIjyB,KAAKsC,QAAQyR,iBAAiB,YAAYpT,OAAS,GAAKX,KAAK2lB,OAAOhlB,OAAS,EAC7E,IAAK,GAAI0E,GAAI,EAAGA,EAAI4sB,EAAMtxB,OAAQ0E,IAAK,CACnCrF,KAAK6kB,oBAAoBvV,KAAK2iB,EAAM5sB,IACpCrF,KAAKwnB,gBAAgByK,EAAM5sB,KACvBrF,KAAKynB,eAAiBwK,EAAM5sB,GAAGygB,KAC/B9lB,KAAKynB,eAAkBwK,EAAM5sB,GAAGygB,IAAMmM,EAAM5sB,GAAGyhB,QAC/C9mB,KAAK4lB,oBAAoBqM,EAAM5sB,IAAMygB,IAAK9lB,KAAKynB,eAAiBwK,EAAM5sB,GAAGyhB,OAE7E,IAAIoL,GAAOlyB,KAAK6xB,WAAWI,EAAM5sB,IAAI,EAAOA,EACxCrF,MAAKuE,WACLwE,YAAUmpB,GAAO,SAErBlyB,KAAKsC,QAAQwQ,YAAYof,GACzBlyB,KAAKogB,uBACDpgB,KAAKomB,mBAAqB/gB,IAAM4sB,EAAMtxB,OAAS,EAC/CX,KAAKsoB,yBAGLtoB,KAAKgnB,iBAAiBkL,EAAMD,EAAM5sB,GAAGwgB,IAAKoM,EAAM5sB,GAAGygB,KACnD9lB,KAAKkoB,YAAcgK,EACnBlyB,KAAKmoB,kBAAkB+J,EAAMD,EAAM5sB,IACnCrF,KAAKkoB,YAAc,MAI/BloB,KAAKooB,WAAWpoB,KAAK2kB,kBAEzBrB,EAAgBpjB,UAAUsvB,WAAa,SAAU3J,EAAKC,EAAKgB,EAAOC,EAAOoL,GACrE,GAAIC,KACCtL,IAAUC,IACXD,EAAQC,EAAQ,IAEhBoL,GAAYA,YAAkBvyB,SAC9BuyB,GAAUA,GAGd,KAAK,GADDnlB,GACKqlB,EAAI,EAAGA,EAAItL,IAASsL,EACzB,IAAK,GAAIC,GAAI,EAAGA,EAAIxL,IAASwL,IACzBtlB,EAAOhN,KAAKuyB,SAAS1M,EAAMwM,EAAGvM,EAAMwM,EAAGH,KACzBA,IAAsF,IAA5EA,EAAOpnB,QAAQ/K,KAAKsC,QAAQuM,cAAc,QAAW7B,EAAKoU,GAAK,SACR,IAA3EgR,EAAMrnB,QAAQ/K,KAAKsC,QAAQuM,cAAc,QAAW7B,EAAKoU,GAAK,QAC9DgR,EAAM9iB,KAAKtP,KAAKsC,QAAQuM,cAAc,QAAW7B,EAAKoU,GAAK,MAIvE,OAAOgR,IAEX9O,EAAgBpjB,UAAUsyB,wBAA0B,SAAUC,EAAa3M,EAAKzF,GAC5E,GAAI9d,GAAQvC,KACR2mB,KACA+L,IAeJ,IAdAD,EAAYtkB,QAAQ,SAAU7L,GAC1B,GAAIiuB,GAAcprB,SAAS7C,EAAQqL,aAAa,YAAa,IACzDglB,EAAaxtB,SAAS7C,EAAQqL,aAAa,cAAe,GAC9D,IAAImY,EAAMvjB,EAAMokB,SAAW4J,GAAezK,EACtC,GAAI6M,EAAa,EACb,IAAK,GAAI3xB,GAAIuvB,EAAavvB,EAAIuvB,EAAcoC,EAAY3xB,IACpD2lB,EAAQrX,KAAKtO,OAIjB2lB,GAAQrX,KAAKihB,KAIrB5J,EAAQhmB,OAAS,EACjB,IAAK,GAAIK,GAAI8kB,EAAM,EAAG9kB,GAAKhB,KAAK2mB,QAAU,EAAG3lB,KACb,IAAxB2lB,EAAQ5b,QAAQ/J,IAAaA,IAAM8kB,IACD,IAA9B4M,EAAc3nB,QAAQ/J,IACtB0xB,EAAcpjB,KAAKtO,EAKnC,IAAI4xB,GAAiB5yB,KAAK6yB,mBAAmBxS,EAc7C,OAbAuS,GAAezkB,QAAQ,SAAUuZ,GACzBA,EAAW5B,IAA4C,IAArC4M,EAAc3nB,QAAQ2c,IACxCgL,EAAc/P,OAAO+P,EAAc3nB,QAAQ2c,GAAW,KAGtC1nB,KAAK6yB,mBAAmB7yB,KAAK8yB,iBACnC3kB,QAAQ,SAAU2X,GAC5BA,EAAM3gB,SAASkb,EAAI1S,aAAa,YAAa,MAAwC,IAAjCilB,EAAe7nB,QAAQ+a,KAC3C,IAAhC4M,EAAc3nB,QAAQ+a,IACtB4M,EAAcpjB,KAAKwW,KAG3B4M,EAAgBA,EAActhB,KAAK,SAAU2hB,EAAMzX,GAAY,MAAOyX,GAAOzX,KAGjFgI,EAAgBpjB,UAAU2yB,mBAAqB,SAAUvwB,GAIrD,IAAK,GAHD0wB,MACAlM,EAAQ3hB,SAAS7C,EAAQqL,aAAa,cAAe,IACrDmY,EAAM3gB,SAAS7C,EAAQqL,aAAa,YAAa,IAC5C3M,EAAI8kB,EAAM9kB,EAAI8kB,EAAMgB,GAAS9lB,GAAKhB,KAAK2mB,QAAU3lB,IACtDgyB,EAAc1jB,KAAKtO,EAEvB,OAAOgyB,IAEX1P,EAAgBpjB,UAAU+yB,uBAAyB,SAAUR,EAAa3M,EAAKzF,GAC3E,GAAI9d,GAAQvC,KACR0yB,KACA/L,IAeJ,IAdA8L,EAAYtkB,QAAQ,SAAU7L,GAC1B,GAAIolB,GAAWviB,SAAS7C,EAAQqL,aAAa,YAAa,IACtDokB,EAAS5sB,SAAS7C,EAAQqL,aAAa,cAAe,GAC1D,IAAImY,GAAOvjB,EAAMokB,SAAWe,GAAY5B,EACpC,GAAIiM,EAAS,EACT,IAAK,GAAI/wB,GAAI0mB,EAAU1mB,EAAI0mB,EAAWqK,EAAQ/wB,IAC1C2lB,EAAQrX,KAAKtO,OAIjB2lB,GAAQrX,KAAKoY,KAIrBf,EAAQhmB,OAAS,EACjB,IAAK,GAAI0E,GAAI,EAAGA,GAAKygB,EAAKzgB,KACM,IAAxBshB,EAAQ5b,QAAQ1F,IAAaA,IAAMygB,IACD,IAA9B4M,EAAc3nB,QAAQ1F,IACtBqtB,EAAcpjB,KAAKjK,EAKnC,IAAIutB,GAAiB5yB,KAAK6yB,mBAAmBxS,EAe7C,OAdAuS,GAAezkB,QAAQ,SAAUuZ,GACzBA,EAAW5B,IAA4C,IAArC4M,EAAc3nB,QAAQ2c,IACxCgL,EAAc/P,OAAO+P,EAAc3nB,QAAQ2c,GAAW,KAGtC1nB,KAAK6yB,mBAAmB7yB,KAAK8yB,iBACnC3kB,QAAQ,SAAU2X,GAC5BA,EAAM3gB,SAASkb,EAAI1S,aAAa,YAAa,MAAwC,IAAjCilB,EAAe7nB,QAAQ+a,KAC3C,IAAhC4M,EAAc3nB,QAAQ+a,IACtB4M,EAAcpjB,KAAKwW,KAG3B4M,EAAgBA,EAActhB,KAAK,SAAU2hB,EAAMG,GAAQ,MAAOH,GAAOG,IACzER,EAAgBA,EAAczjB,WAGlCqU,EAAgBpjB,UAAUizB,oBAAsB,SAAUtN,EAAKC,EAAKiB,EAAOD,EAAOzG,GAC9ErgB,KAAKozB,mBAAiBnE,GACtBjvB,KAAKqzB,oBAAkBpE,EACvB,IACIqE,GADAC,GAAe,EAEfC,IACJxzB,MAAKyzB,kBAAgBxE,EACrB,IAAIyE,GAAWvuB,SAASkb,EAAI1S,aAAa,cAAe,IACpDgmB,EAASxuB,SAASkb,EAAI1S,aAAa,YAAa,KAEnB,KADjC6lB,EAAaxzB,KAAK4zB,eAAe5zB,KAAKwvB,WAAW3J,EAAK,EAAG7lB,KAAK2mB,QAASI,QACxDhc,QAAQsV,IACnBmT,EAAWlkB,KAAK+Q,EAEpB,IAAIwT,GAAc7zB,KAAKizB,uBAAuBO,EAAY1N,EAAKzF,EA+B/D,IA9BIwT,EAAYlzB,OAAS,GACrBX,KAAKozB,eAAiBpzB,KAAK8zB,iBAAiBD,EAAaxT,EAAKwF,EAAKC,EAAKgB,EAAOC,GAC3E/mB,KAAK+zB,oBAAsBJ,EAAS3zB,KAAKitB,gBAAgBjtB,KAAK8yB,gBAAgB1R,IAAI0F,QAClF9mB,KAAKozB,gBAAiB,GAEtBpzB,KAAKozB,eACLpzB,KAAKqzB,iBAAkB,GAGvBrzB,KAAKozB,gBAAiB,EACtBE,EAAetzB,KAAKwyB,wBAAwBgB,EAAY1N,EAAKzF,GAC7DrgB,KAAKqzB,gBAAkBC,EAAa3yB,OAAS,GAAIX,KAAKg0B,kBAAkBV,EAAcjT,EAAKwF,EAAKC,EAAKgB,EAAOC,GACxG/mB,KAAK+zB,oBAAsBL,EAAWC,IACtC3zB,KAAKqzB,iBAAkB,GAEtBrzB,KAAKqzB,kBACNrzB,KAAKqzB,iBAAkB,MAK/BC,EAAetzB,KAAKwyB,wBAAwBgB,EAAY1N,EAAKzF,GAC7DrgB,KAAKqzB,gBAAkBC,EAAa3yB,OAAS,GAAIX,KAAKg0B,kBAAkBV,EAAcjT,EAAKwF,EAAKC,EAAKgB,EAAOC,GACxG/mB,KAAK+zB,oBAAsBL,EAAWC,IACtC3zB,KAAKqzB,iBAAkB,GAEvBrzB,KAAKqzB,kBACLrzB,KAAKozB,gBAAiB,KAGzBpzB,KAAKqzB,kBAAoBrzB,KAAKozB,gBAAkBvN,EAAM,EAAG,CAC1D,GAAIoO,GAASj0B,KAAKitB,gBAAgB5M,EAAIe,IAAIyE,IACtCqO,GAAW,CACXl0B,MAAKm0B,WAAaF,IAClBC,GAAW,EAEf,KAAK,GAAI5D,GAAWzK,EAAKyK,GAAY,EAAGA,IAAY,CAChD,GAAIhuB,GAAWtC,KAAKitB,gBAAgB5M,EAAIe,IAAI2F,MAAQ,GAAKmN,EAAYl0B,KAAK8yB,gBAAkBzS,CACvFiQ,KAAa2D,GAAY3D,IAAa2D,EAASlN,GACiB,IAAjE/mB,KAAKwvB,WAAWc,EAAUxK,EAAKgB,EAAOC,EAAOzkB,GAAS3B,SACtDuzB,GAAW,EACXl0B,KAAKyzB,eAAgB,EACrBzzB,KAAKo0B,eAAiBvvB,oBAAkB7E,KAAKo0B,gBAAkB9D,EAAWtwB,KAAKo0B,eAC/Ep0B,KAAK+zB,kBAAoBjO,IAUrC,OANI9lB,KAAKqzB,iBAAmBrzB,KAAKozB,gBAAkBpzB,KAAKyzB,iBACpDF,GAAe,EACX1uB,oBAAkB7E,KAAKo0B,kBACvBp0B,KAAKo0B,eAAiBvO,IAGvB0N,GAEXjQ,EAAgBpjB,UAAUm0B,oBAAsB,SAAUC,EAASxN,GAG/D,IAAK,GAFDyN,IAAmB,EACnBC,KACKxzB,EAAI,EAAGA,EAAIszB,EAAQ3zB,OAAQK,IAChC,GAAIszB,EAAQtzB,EAAI,GAAKszB,EAAQtzB,IAAO,GAAKszB,EAAQtzB,EAAI,GAAKszB,EAAQtzB,KAAQ,GAWtE,GAVAwzB,EAAkBllB,KAAKglB,EAAQtzB,IACjB,IAAV8lB,GACA0N,EAAkBllB,KAAKglB,EAAQtzB,EAAI,IAEnCA,IAAMszB,EAAQ3zB,OAAS,IACvB6zB,EAAkBllB,KAAKglB,EAAQtzB,EAAI,IAC/BwzB,EAAkB7zB,OAASmmB,GAC3B0N,EAAkB7R,QAAQ,IAG9B6R,EAAkB7zB,SAAWmmB,EAM7B,MALAyN,IAAmB,EACnBv0B,KAAK+zB,kBAAoBS,EAAkBpjB,KAAK,SAAU2hB,EAAMzX,GAAY,MAAOyX,GAAOzX,IAAa,GACnGtb,KAAK+zB,kBAAoB,IACzB/zB,KAAK+zB,kBAAoB,GAEtBQ,MAIXC,KAIR,OAAOD,IAEXjR,EAAgBpjB,UAAU0zB,eAAiB,SAAUa,GAEjD,IAAK,GADDhC,MACKzxB,EAAI,EAAGA,EAAIyzB,EAAK9zB,OAAQK,IAC7ByxB,EAAYnjB,KAAKmlB,EAAKzzB,GAE1B,OAAOyxB,IAEXnP,EAAgBpjB,UAAU4zB,iBAAmB,SAAUY,EAAQrU,EAAKwF,EAAKC,EAAKgB,EAAOC,GACjF,GAAI4N,EACJ,IAAc,IAAV7N,GAAyB,IAAVC,GAAe2N,EAAO/zB,OAAS,EAC9CX,KAAK+zB,kBAAoBW,EAAO,GAChCC,GAAmB,MAElB,IAAI7N,EAAQ,GAAe,IAAVC,EAClB4N,EAAmB30B,KAAKq0B,oBAAoBK,EAAQ5N,OAEnD,IAAIC,EAAQ,EACb,GAAc,IAAVD,EAAa,CACb,GAAI8N,OAAU,EAId,IAHIF,EAAO/zB,QAAU,IACjBi0B,GAAU,GAEVA,EACA,IAAK,GAAI5zB,GAAI,EAAGA,EAAI0zB,EAAO/zB,OAAQK,IAAK,CAEpC,GAA8B,IADThB,KAAKwvB,WAAW3J,EAAK6O,EAAO1zB,GAAI8lB,EAAOC,EAAO/mB,KAAK8yB,iBACrDnyB,OAGf,MAFAX,MAAK+zB,kBAAoBW,EAAO1zB,GAChC2zB,GAAmB,CAInBA,IAAmB,OAM/BA,GAAmB30B,KAAK60B,WAAWH,EAAQ5N,EAAOjB,EAAKkB,EAAO1G,EAGtE,OAAOsU,IAEXrR,EAAgBpjB,UAAU8zB,kBAAoB,SAAUM,EAASjU,EAAKwF,EAAKC,EAAKgB,EAAOC,GACnF,GAAI+N,EACJ,IAAc,IAAVhO,GAAyB,IAAVC,GAAeuN,EAAQ3zB,OAAS,EAC/CX,KAAK+zB,kBAAoBO,EAAQ,GACjCQ,GAAoB,MAEnB,IAAIhO,EAAQ,GAAe,IAAVC,EAClB+N,EAAoB90B,KAAKq0B,oBAAoBC,EAASxN,OAErD,IAAIC,EAAQ,EACb,GAAc,IAAVD,EAAa,CACb,GAAI8N,OAAU,EAId,IAHIN,EAAQ3zB,QAAU,IAClBi0B,GAAU,GAEVA,EACA,IAAK,GAAI5zB,GAAI,EAAGA,EAAIszB,EAAQ3zB,OAAQK,IAAK,CAErC,IAAK,GADD+zB,GAAiB/0B,KAAKwvB,WAAW3J,EAAKyO,EAAQtzB,GAAI8lB,EAAOC,EAAO/mB,KAAK8yB,iBAChEkC,EAAY,EAAGA,EAAYD,EAAep0B,OAAQq0B,IACnD7vB,SAASkb,EAAI1S,aAAa,YAAa,MAAQ2mB,EAAQtzB,IACvD+zB,EAAepS,OAAOoS,EAAehqB,QAAQgqB,EAAeC,IAAa,EAGjF,IAA8B,IAA1BD,EAAep0B,OAGf,MAFAm0B,IAAoB,EACpB90B,KAAK+zB,kBAAoBO,EAAQtzB,GAC1B8zB,CAGPA,IAAoB,OAMhCA,GAAoB90B,KAAK60B,WAAWP,EAASxN,EAAOjB,EAAKkB,EAAO1G,EAGxE,OAAOyU,IAEXxR,EAAgBpjB,UAAU20B,WAAa,SAAUP,EAASxN,EAAOjB,EAAKkB,EAAO1G,GAGzE,IAAK,GAFDyU,GACAG,KACK5vB,EAAI,EAAGA,EAAIivB,EAAQ3zB,OAAQ0E,IAEhC,GADcrF,KAAKq0B,oBAAoBC,EAASxN,GACnC,CACT,GAAIoO,KAGJ,IAFAA,EAAW5lB,KAAKtP,KAAK8yB,iBACrBoC,EAAW5lB,KAAK+Q,GACgB,IAA5B4U,EAAiBt0B,OAEjB,MADAm0B,IAAoB,CAIpBA,IAAoB,EAIhC,MAAOA,IAEXxR,EAAgBpjB,UAAUi1B,mBAAqB,SAAUC,GAsBrD,IAAK,GApBD3C,GADAwC,KAoBAI,EAASr1B,KACJ6lB,EAAM7lB,KAAKujB,KAAO,EAAGsC,GAAO,EAAGA,KAnB1B,SAAUA,GACpB4M,KACA2C,EAAejnB,QAAQ,SAAU7L,GACzBA,GAAWA,EAAQqL,aAAa,cAAgBkY,EAAIjZ,YACpD6lB,EAAYnjB,KAAKhN,IAUzB,KAAK,GAAIkuB,GAAS6E,EAAO1O,QAAU,EAAG6J,GAAU,EAAGA,KAPrC,SAAUA,GACpBiC,EAAYtkB,QAAQ,SAAUnB,GACtBA,GAAQA,EAAKW,aAAa,cAAgB6iB,EAAO5jB,YACjDqoB,EAAiB3lB,KAAKtC,MAKtBwjB,IAKJ3K,EAEZ,OAAOoP,IAEX3R,EAAgBpjB,UAAUo1B,cAAgB,SAAUF,EAAgBjL,EAAY9J,GAC5E,GAAI9d,GAAQvC,KACRu1B,IAwBJ,OAvBKv1B,MAAKkoB,aACNloB,KAAK0oB,cAET0M,EAAejnB,QAAQ,SAAU7L,GAC7BC,EAAMuwB,gBAAkBxwB,CACxB,IAAIuoB,GAAQtoB,EAAM0qB,gBAAgB3qB,EAAQ8e,IACtCoU,GAAUjzB,EAAM4wB,oBAAoBtI,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM9D,MAAO8D,EAAM/D,MAAOzG,EACxF,IAAIwK,EAAM/D,MAAQ,GAAK0O,EACnB,IAAK,GAAIlF,GAAWzF,EAAMhF,IAAKyK,EAAWnG,EAAWtE,IAAMsE,EAAWpD,MAAOuJ,IACxD/tB,EAAMitB,WAAWc,EAAUzF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOzkB,GACtE6L,QAAQ,SAAUnB,GACrBooB,EAAerqB,QAAQiC,IAAS,IAA0C,IAArCuoB,EAAkBxqB,QAAQiC,IAC/DuoB,EAAkBjmB,KAAKtC,OAM3CuoB,EAAkBpnB,QAAQ,SAAUnB,GAC5BuoB,EAAkBxqB,QAAQiC,IAAS,GACnCooB,EAAezS,OAAOyS,EAAerqB,QAAQiC,GAAO,KAGrDooB,GAEX9R,EAAgBpjB,UAAUu1B,YAAc,SAAU5K,GAC9C,GAAI2E,GAAaxvB,KAAKwvB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAO/mB,KAAKkoB,YACtF,KAAKloB,KAAKkoB,aAAeloB,KAAK01B,gBAAkB11B,KAAK0jB,cAAgB1jB,KAAKyjB,gBACtE,MAAO+L,EAEX,IAAIxvB,KAAKkoB,aAAeloB,KAAKslB,YAActlB,KAAK21B,YAC5C,IAAK,GAAI30B,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAAK,CACzC,GAAIsB,GAAUtC,KAAKsC,QAAQuM,cAAc,QAAW7O,KAAK2lB,OAAO3kB,GAAGogB,GAAK,KACxE,IAAI9e,IAAYtC,KAAKkoB,YAArB,CAGA,GAAIoI,GAAWtwB,KAAK21B,YAAYrzB,EAAQ8e,IAAIyE,IACxC6B,EAAW1nB,KAAK21B,YAAYrzB,EAAQ8e,IAAI0E,GAC5C9lB,MAAKgnB,iBAAiB1kB,EAASguB,EAAU5I,GACzC1nB,KAAK4lB,oBAAoB5lB,KAAKitB,gBAAgB3qB,EAAQ8e,KAAOyE,IAAKyK,EAAUxK,IAAK4B,IACjF1nB,KAAK6mB,eAAgB/Z,OAASgZ,IAAK4B,EAAS9a,WAAYiZ,IAAKyK,EAAS1jB,aAAgBtK,GACtFtC,KAAKqoB,sBAWb,MARAroB,MAAK4kB,YAAc5kB,KAAK41B,WACxBpG,EAAaxvB,KAAKwvB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAO/mB,KAAKkoB,aAClFloB,KAAK0oB,cACL1oB,KAAKqoB,qBACDroB,KAAK8uB,gBAAkB9uB,KAAK8uB,eAAenuB,OAAS,IAAqD,IAAhD6uB,EAAWzkB,QAAQ/K,KAAK8uB,eAAe,KAChG9uB,KAAK21B,YAAY31B,KAAK8uB,eAAe,GAAG1N,IAAIyE,MAAQgF,EAAMhF,KAC1D2J,EAAWlgB,KAAKtP,KAAK8uB,eAAe,IAEjCU,GAEXlM,EAAgBpjB,UAAU21B,iBAAmB,SAAUrG,EAAYltB,GAG/D,IAAK,GAFDwzB,IAAY,EACZC,EAAW/1B,KAAKitB,gBAAgB3qB,EAAQ8e,IACnCxc,EAAQ,EAAGA,EAAQ4qB,EAAW7uB,OAAQiE,IAE3C,IAAK,GADDoxB,GAAeh2B,KAAKitB,gBAAgBuC,EAAW5qB,GAAOwc,IACjDpgB,EAAI,EAAGA,EAAI+0B,EAAShP,MAAO/lB,IAAK,CACrC,GAAIi1B,KAIJ,IAHAA,EAAW3mB,KAAKhN,GAChB2zB,EAAW3mB,KAAKkgB,EAAW5qB,IACX5E,KAAKwvB,WAAWuG,EAASlQ,IAAM7kB,EAAGg1B,EAAalQ,IAAKkQ,EAAalP,MAAOkP,EAAajP,MAAOkP,GAC9Ft1B,OAAS,EAEnB,MADAm1B,IAAY,GACL,EAOnB,MAAOA,IAEXxS,EAAgBpjB,UAAUg2B,iBAAmB,SAAU1G,EAAYltB,GAC/D,GAA6C,IAAzC7C,OAAOwD,KAAKjD,KAAK21B,aAAah1B,SAAiBX,KAAKkoB,aAAqC,IAAtBsH,EAAW7uB,OAC9E,OAAO,CAEX,IAAIw1B,GACAC,EAAajxB,SAASqqB,EAAW,GAAG7hB,aAAa,YAAa,GAOlE,IANI3N,KAAKm0B,SAAWiC,EAChBD,EAAY,EAEPn2B,KAAKm0B,UAAYiC,IACtBD,EAAY,IAEXn2B,KAAK61B,iBAAiBrG,EAAYltB,GACnC,OAAO,CAGX,KAAK,GADD+zB,IAAc,EACTC,EAAS,EAAGA,EAAS9G,EAAW7uB,OAAQ21B,IAC7C,GAAI9G,EAAW7uB,QAAU,GAAKX,KAAK21B,YAAY31B,KAAKkoB,YAAY9G,KAC5DphB,KAAK21B,YAAY31B,KAAKkoB,YAAY9G,IAAIyE,MAAQ7lB,KAAKslB,UAAUtlB,KAAKkoB,YAAY9G,IAAIyE,IAClF,OAAO,CAMf,KAAK,GAHD0Q,GAA2B,IAAdJ,EACbn2B,KAAKitB,gBAAgBjtB,KAAKkoB,YAAY9G,IAAIyE,IAAM7lB,KAAKitB,gBAAgBjtB,KAAKkoB,YAAY9G,IAAI2F,MACxF/mB,KAAKm0B,SACFvvB,EAAQ,EAAGA,EAAQ4qB,EAAW7uB,OAAQiE,IAAS,CACpD,GAAI4xB,GAAkBx2B,KAAKitB,gBAAgBuC,EAAW5qB,GAAOwc,IACzDqV,EAAkBz2B,KAAKitB,gBAAgB3qB,EAAQ8e,IAC/C+Q,IACJ,IAA8B,IAA1BqE,EAAgBzP,QAAsD,IAAvCoL,EAAOpnB,QAAQykB,EAAW5qB,IACzDutB,EAAO7iB,KAAKkgB,EAAW5qB,QAEtB,IAAI4xB,EAAgBzP,MAAQ,IAA4C,IAAvCoL,EAAOpnB,QAAQykB,EAAW5qB,IAC5D,GAAkB,IAAduxB,GAAmBM,EAAgB5Q,MAAS7lB,KAAK21B,YAAYa,EAAgBpV,IAAIyE,IAAM2Q,EAAgBzP,MAAQ,EAC/GoL,EAAO7iB,KAAKkgB,EAAW5qB,QAEtB,CAAA,GAAkB,IAAduxB,GAAmBM,EAAgB5Q,MAAS7lB,KAAK21B,YAAYa,EAAgBpV,IAAQ,IAI1F,OAAO,CAHP+Q,GAAO7iB,KAAKkgB,EAAW5qB,IAW/B,GALI4xB,EAAgBzP,OAAS0P,EAAgB1P,QAAgD,IAAvCoL,EAAOpnB,QAAQykB,EAAW5qB,KAC5EutB,EAAO7iB,KAAKkgB,EAAW5qB,IAE3ButB,EAAO7iB,KAAKtP,KAAKkoB,aACGloB,KAAKwvB,WAAW+G,EAAYC,EAAgB1Q,IAAK0Q,EAAgB1P,MAAO0P,EAAgBzP,MAAOoL,GACjGxxB,OAAS,EAEvB,MADA01B,IAAc,CAIVzxB,KAAU4qB,EAAW7uB,OAAS,IAC9B01B,GAAc,GAK1B,MAAOA,IAEX/S,EAAgBpjB,UAAUw2B,UAAY,SAAUlH,EAAYltB,EAAS6nB,GACjE,GACIgM,GADA5zB,EAAQvC,KAER22B,IACJA,GAAgBrnB,KAAKhN,EACrB,IAAI8zB,GAAajxB,SAASqqB,EAAW,GAAG7hB,aAAa,YAAa,GAC9D3N,MAAKm0B,SAAWiC,EAChBD,EAAY,EAEPn2B,KAAKm0B,SAAWiC,IACrBD,EAAY,EAEhB,IAAIS,GAAkC,IAAdT,EAAkBC,EAAajM,EAAWpD,MAAQ/mB,KAAKm0B,QAC/E,KAAKn0B,KAAKyjB,gBAAiB,CACvB,GAAIoT,GAAoB72B,KAAKitB,gBAAgBuC,EAAW,GAAGpO,GAC3DphB,MAAK4lB,oBAAoBuE,GAActE,IAAmB,IAAdsQ,EAAkBC,EAAaQ,EAAoBC,EAAkB9P,QAErH,IAAK,GAAIniB,GAAQ,EAAGA,EAAQ4qB,EAAW7uB,OAAQiE,IAC3C+xB,EAAgBrnB,KAAKkgB,EAAW5qB,IAChC5E,KAAKgnB,iBAAiBwI,EAAW5qB,GAAQgyB,EAAoB52B,KAAKitB,gBAAgBuC,EAAW5qB,GAAOwc,IAAK0E,KACzG9lB,KAAK4lB,oBAAoB5lB,KAAKitB,gBAAgBuC,EAAW5qB,GAAOwc,KAAOyE,IAAK+Q,IAC5EpH,EAAW5qB,GAAOsK,aAAa,WAAY0nB,EAAkBhqB,WAEjEtK,GAAQ4M,aAAa,WAAYib,EAAWtE,IAAIjZ,YAChD5M,KAAKgnB,iBAAiBhnB,KAAK2sB,UAAWxC,EAAWtE,IAAKsE,EAAWrE,IACjE,KAAK,GAAI9kB,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IACpChB,KAAKslB,UAAUtlB,KAAK2lB,OAAO3kB,GAAGogB,KAAQyE,IAAK7lB,KAAK2lB,OAAO3kB,GAAG6kB,IAAKC,IAAK9lB,KAAK2lB,OAAO3kB,GAAG8kB,IAEvF9lB,MAAKm0B,SAAWhK,EAAWtE,IAC3B7lB,KAAKqoB,qBACLsO,EAAgBxoB,QAAQ,SAAUnB,GAC9BzK,EAAMozB,YAAY3oB,EAAKoU,IAAM7e,EAAM+iB,UAAUtY,EAAKoU,GAElD,KAAK,GADD0V,GAAYv0B,EAAM0qB,gBAAgBjgB,EAAKoU,IAClCpgB,EAAI,EAAGA,EAAIuB,EAAMqiB,YAAYjkB,OAAQK,IAC1C,GAAKuB,EAAMqiB,YAAY5jB,GAGvB,IAAK,GAAIqE,GAAI,EAAGA,EAAI9C,EAAMqiB,YAAY5jB,GAAGL,OAAQ0E,IACzC9C,EAAMqiB,YAAY5jB,GAAGqE,KAAO2H,IAC5BzK,EAAMqiB,YAAY5jB,GAAGqE,OAAK4pB,GAIjC1sB,GAAMqiB,YAAYkS,EAAUjR,OAC7BtjB,EAAMqiB,YAAYkS,EAAUjR,SAEhCtjB,EAAMqiB,YAAYkS,EAAUjR,KAAKiR,EAAUhR,KAAO9Y,EAClDzK,EAAMqzB,WAAarzB,EAAMqiB,eAGjCtB,EAAgBpjB,UAAUioB,kBAAoB,SAAU7lB,EAAS6nB,GAC7D,GAAI5nB,GAAQvC,IACZA,MAAKilB,mBACL,IAAI8R,MAEAC,IAQJ,KALID,EADA/2B,KAAKkoB,aAAeloB,KAAKkmB,iBACVlmB,KAAKy1B,YAAYtL,GAGjBnqB,KAAKwvB,WAAWrF,EAAWtE,IAAKsE,EAAWrE,IAAKqE,EAAWrD,MAAOqD,EAAWpD,MAAOzkB,IAEtF3B,OAAS,EAItB,GAHAo2B,EAAe/2B,KAAKm1B,mBAAmB4B,GACvCA,EAAe/2B,KAAKs1B,cAAcyB,EAAc5M,EAAY7nB,IACvCuC,oBAAkB7E,KAAKm0B,WAAYn0B,KAAKk2B,iBAAiBa,EAAcz0B,GAExFtC,KAAK02B,UAAUK,EAAcz0B,EAAS6nB,OAGtC,KAAK,GAAInpB,GAAI,EAAGA,EAAI+1B,EAAap2B,OAAQK,IAAK,CAC1C,GAAI6pB,GAAQ7qB,KAAKitB,gBAAgB8J,EAAa/1B,GAAGogB,GAKjD,IAJAphB,KAAK8yB,gBAAkBiE,EAAa/1B,GACpChB,KAAKo0B,eAAiB,KACtBp0B,KAAK+zB,kBAAoB,KACJ/zB,KAAKmzB,oBAAoBtI,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM9D,MAAO8D,EAAM/D,MAAOxkB,KACnEuC,oBAAkB7E,KAAK+zB,mBAAoB,CAClE/zB,KAAKgnB,iBAAiB+P,EAAa/1B,GAAIhB,KAAKo0B,eAAgBp0B,KAAK+zB,mBACjE/zB,KAAKslB,UAAWyR,EAAa/1B,QAAY6kB,IAAK7lB,KAAKo0B,eAAgBtO,IAAK9lB,KAAK+zB,kBAC7E,IAAIjnB,IACA2U,YACIoE,IAAK7lB,KAAKo0B,eAAexnB,WACzBkZ,IAAK9lB,KAAK+zB,kBAAkBnnB,YAWpC,IARA5M,KAAK6mB,cAAc/Z,EAAOiqB,EAAa/1B,IACvChB,KAAK4lB,oBAAoBiF,GAAS/E,IAAK9lB,KAAK+zB,kBAAmBlO,IAAK7lB,KAAKo0B,iBAErEp0B,KAAKyzB,eAAiBzzB,KAAKkvB,gBAC3BlvB,KAAK4oB,eACL5oB,KAAK6oB,0BAET7oB,KAAKo0B,eAAiB,KAClBpzB,EAAI+1B,EAAap2B,OACjB,aAIJq2B,GAAgB1nB,KAAKynB,EAAa/1B,IAK9Cg2B,EAAgBr2B,OAAS,IACzBq2B,EAAgB7oB,QAAQ,SAAU8oB,IACe,IAAzC10B,EAAMuiB,eAAe/Z,QAAQksB,IAC7B10B,EAAMuiB,eAAexV,KAAK2nB,KAG9Bj3B,KAAK8kB,iBAA4D,IAA1C9kB,KAAK8kB,eAAe/Z,QAAQzI,IACnDtC,KAAK8kB,eAAenC,OAAO3iB,KAAK8kB,eAAe/Z,QAAQzI,GAAU,GAEjE00B,EAAgBr2B,OAAS,IACzBX,KAAKk3B,gBAAgB/M,EAAWtE,IAAK7lB,KAAK8kB,eAAgBxiB,GAC1DtC,KAAKm3B,4BAGRn3B,KAAKo3B,YACNp3B,KAAK0oB,cAET1oB,KAAKknB,kBACLlnB,KAAKmwB,mBAET7M,EAAgBpjB,UAAUi3B,wBAA0B,WAChD,IAAK,GAAIn2B,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IACpC,GAAIhB,KAAKilB,iBAAiBjlB,KAAK2lB,OAAO3kB,GAAGogB,KAAoD,OAA7CphB,KAAKilB,iBAAiBjlB,KAAK2lB,OAAO3kB,GAAGogB,IAAc,CAC/FphB,KAAK8kB,gBAAkB9kB,KAAKilB,iBAAiBjlB,KAAK2lB,OAAO3kB,GAAGogB,IAAIf,IAChE,IAAI9f,GAAMP,KAAK2lB,OAAO3kB,GAAGogB,EACzBphB,MAAKk3B,gBAAgBl3B,KAAKilB,iBAAiB,GAAK1kB,GAAKslB,IAAK7lB,KAAK8kB,eAAgB9kB,KAAKilB,iBAAiB,GAAK1kB,GAAK82B,UAI3H/T,EAAgBpjB,UAAUo3B,uBAAyB,SAAUtqB,GACzD,IAAK,GAAIpI,GAAQ,EAAGA,EAAQnF,OAAOwD,KAAKjD,KAAKilB,kBAAkBtkB,OAAQiE,IACnE5E,KAAKilB,iBAAiBjY,EAAKoU,IAAM,MAGzCkC,EAAgBpjB,UAAUg3B,gBAAkB,SAAUrR,EAAKxF,EAAKgX,GAC5D,GAAKA,EAAL,CAGA,GAAIE,GAAWpyB,SAASkyB,EAAO1pB,aAAa,cAAe,IACvD6pB,EAASryB,SAASkyB,EAAO1pB,aAAa,YAAa,GACvD3N,MAAK+kB,qBAAsB/kB,KAAK8kB,gBAAmB9kB,KAAKy3B,eAAiBz3B,KAAK8kB,eAC9E,KAAK,GAAI9jB,GAAI,EAAGA,EAAIhB,KAAK+kB,oBAAoBpkB,OAAQK,IAAK,CACtD,GAAwC,IAApChB,KAAK+kB,oBAAoBpkB,OACzB,MAEJ,KAAK,GAAI+2B,GAAM,EAAGA,EAAM13B,KAAK+kB,oBAAoBpkB,OAAQ+2B,IACrD13B,KAAKilB,iBAAiBjlB,KAAK+kB,oBAAoB2S,GAAKtW,KAChDf,IAAKrgB,KAAK+kB,oBAAoB2S,GAC9B7R,IAAKA,EACLwR,OAAQA,EAGhB,IAAId,GAAaiB,EAASD,EACtBI,EAAaxyB,SAASnF,KAAK+kB,oBAAoB/jB,GAAG2M,aAAa,cAAe,IAC9EiqB,EAAezyB,SAASnF,KAAK+kB,oBAAoB/jB,GAAG2M,aAAa,YAAa,IAC9EkqB,EAAa1yB,SAASnF,KAAK+kB,oBAAoB/jB,GAAG2M,aAAa,cAAe,IAC9E+Z,MAAW,GACXsP,MAAkB,EAOtB,KANqD,IAAjDh3B,KAAKglB,uBAAuBja,QAAQssB,IACpCr3B,KAAKglB,uBAAuB1V,KAAK+nB,IAEqC,IAAtEr3B,KAAKglB,uBAAuBja,QAAQ/K,KAAK+kB,oBAAoB/jB,KAC7DhB,KAAKglB,uBAAuB1V,KAAKtP,KAAK+kB,oBAAoB/jB,IAE1D22B,EAAa,GAAKE,EAAa,EAAG,CAClC,GAAIC,GAAsB93B,KAAKitB,gBAAgBjtB,KAAK+kB,oBAAoB/jB,GAAGogB,GAC3EsG,GAAWoQ,EAAoBhS,GAE/B,KAAK,GADDiS,GAAQhuB,SAASqnB,eAAe0G,EAAoB1W,IAC/Cnc,EAAI6yB,EAAoBjS,IAAK5gB,EAAIuyB,EAASD,EAAUtyB,IAAK,CAC9DjF,KAAKo3B,YAAa,EAClBp3B,KAAK4lB,oBAAoBkS,GAAuBjS,IAAKiS,EAAoBjS,IAAM,IAC/EkS,EAAM7oB,aAAa,WAAY4oB,EAAoBjS,IAAIjZ,YACvD5M,KAAKgnB,iBAAiB+Q,EAAOD,EAAoBjS,IAAK6B,GACtD1nB,KAAKs3B,uBAAuBS,GAC5B/3B,KAAKslB,UAAWyS,OAAelS,IAAKiS,EAAoBjS,IAAKC,IAAK4B,EAC9DyC,GAAanqB,KAAKitB,gBAAgB8K,EAAM3W,GAC5CphB,MAAK4lB,oBAAoBuE,GAAcrE,IAAK4B,EAAU7B,IAAKiS,EAAoBjS,KAC/E,IAAImS,GAAW7yB,SAAS4yB,EAAMpqB,aAAa,YAAa,IACpDgmB,EAASxuB,SAAS4yB,EAAMpqB,aAAa,YAAa,IAClDmZ,EAAQ3hB,SAAS4yB,EAAMpqB,aAAa,cAAe,IACnDoZ,EAAQ5hB,SAAS4yB,EAAMpqB,aAAa,cAAe,IACnDsqB,IACJA,GAAgB3oB,KAAKyoB,GACrBE,EAAgB3oB,KAAK+nB,GACrBL,EAAkBh3B,KAAKwvB,WAAWwI,EAAUrE,EAAQ7M,EAAOC,EAAOkR,GAC9Dj4B,KAAKkoB,cAA8D,IAA/C8O,EAAgBjsB,QAAQ/K,KAAKkoB,cACjD8O,EAAgBrU,OAAOqU,EAAgBjsB,QAAQ/K,KAAKkoB,aAAc,GAEtEloB,KAAKk4B,eAAelB,EAAiBrD,EAAQqE,EAAUD,GAE3D/3B,KAAKo3B,YAAa,MAEjB,CACGp3B,KAAK01B,iBACL11B,KAAK01B,gBAAiB,GAE1B11B,KAAK+kB,oBAAoB/jB,GAAGkO,aAAa,WAAYqnB,EAAW3pB,WAChE,IAAIqpB,KACJA,GAAW3mB,KAAKtP,KAAK+kB,oBAAoB/jB,IACzCi1B,EAAW3mB,KAAK+nB,GAChBL,EAAkBh3B,KAAKwvB,WAAW+G,EAAYqB,EAAcC,EAAYF,EAAY1B,GAChFj2B,KAAKkoB,cAA8D,IAA/C8O,EAAgBjsB,QAAQ/K,KAAKkoB,cACjD8O,EAAgBrU,OAAOqU,EAAgBjsB,QAAQ/K,KAAKkoB,aAAc,GAEtER,EAAWviB,SAASnF,KAAK+kB,oBAAoB/jB,GAAG2M,aAAa,YAAa,IAC1E3N,KAAKgnB,iBAAiBhnB,KAAK+kB,oBAAoB/jB,GAAIu1B,EAAY7O,GAC/D1nB,KAAKs3B,uBAAuBt3B,KAAK+kB,oBAAoB/jB,IACrDhB,KAAKslB,UAAWtlB,KAAK+kB,oBAAoB/jB,QAAY6kB,IAAK0Q,EAAYzQ,IAAK4B,EAC3E,IAAIyC,GAAanqB,KAAKitB,gBAAgBjtB,KAAK+kB,oBAAoB/jB,GAAGogB,GAClEphB,MAAK4lB,oBAAoBuE,GAAcrE,IAAK4B,EAAU7B,IAAK0Q,IAC3Dv2B,KAAKk4B,eAAelB,EAAiBtP,EAAU6O,EAAYv2B,KAAK+kB,oBAAoB/jB,QAIhGsiB,EAAgBpjB,UAAUg4B,eAAiB,SAAUlB,EAAiBtP,EAAU6O,EAAY4B,GACxF,GAAI51B,GAAQvC,KACRmqB,EAAanqB,KAAKitB,gBAAgBkL,EAAM/W,GAE5C,IADAphB,KAAK4lB,oBAAoBuE,GAActE,IAAK0Q,EAAYzQ,IAAK4B,IACzDsP,EAAgBr2B,OAAS,EAAG,CAC5BX,KAAK8kB,kBACL9kB,KAAKy3B,gBAAiB,EACtBT,EAAgB7oB,QAAQ,SAAU8oB,GAC9B10B,EAAMuiB,eAAexV,KAAK2nB,IAG9B,KAAK,GADDmB,GAAqBjzB,SAASgzB,EAAMxqB,aAAa,YAAa,IACzDiD,EAAI,EAAGA,EAAI5Q,KAAK8kB,eAAenkB,OAAQiQ,IAC5C5Q,KAAKk3B,gBAAgBkB,EAAoBp4B,KAAK8kB,eAAgBqT,EAElEn4B,MAAKy3B,gBAAiB,MAErB,CAID,GAHKz3B,KAAK01B,gBACN11B,KAAK0oB,cAEL1oB,KAAKglB,uBAAuBrkB,OAAS,EACrC,IAAK,GAAId,GAAI,EAAGA,EAAIG,KAAKglB,uBAAuBrkB,OAAQd,IAAK,CACzD,GAAIw4B,GAASlzB,SAASnF,KAAKglB,uBAAuBnlB,GAAG8N,aAAa,YAAa,IAC3E2qB,EAAanzB,SAASnF,KAAKglB,uBAAuBnlB,GAAG8N,aAAa,YAAa,IAC/EmZ,EAAQ3hB,SAASnF,KAAKglB,uBAAuBnlB,GAAG8N,aAAa,cAAe,IAC5EoZ,EAAQ5hB,SAASnF,KAAKglB,uBAAuBnlB,GAAG8N,aAAa,cAAe,IAC5E4qB,EAAmBv4B,KAAKwvB,WAAW6I,EAAQC,EAAYxR,EAAOC,EAAO/mB,KAAKglB,uBAC1EhlB,MAAKkoB,cAA+D,IAAhDqQ,EAAiBxtB,QAAQ/K,KAAKkoB,cAClDqQ,EAAiB5V,OAAO4V,EAAiBxtB,QAAQ/K,KAAKkoB,aAAc,GAExEqQ,EAAiBpqB,QAAQ,SAAU8oB,GAC/B10B,EAAMuiB,eAAexV,KAAK2nB,KAE1BsB,EAAiB53B,OAAS,GAC1BX,KAAKk3B,gBAAgBmB,EAAQr4B,KAAK8kB,eAAgB9kB,KAAKglB,uBAAuBnlB,IAI1FG,KAAKglB,4BAGb1B,EAAgBpjB,UAAU2wB,oBAAsB,SAAUzJ,GACtD,IAAK,GAAIpmB,GAAI,EAAGA,EAAIomB,EAAczmB,OAAQK,IAGtC,IAAK,GADDw3B,GADUpR,EAAcpmB,GACE+S,iBAAiB,aACtC0kB,EAAM,EAAGA,EAAMD,EAAgB73B,OAAQ83B,IAC5CpqB,SAAOmqB,EAAgBC,KAInCnV,EAAgBpjB,UAAUw4B,WAAa,WACnC14B,KAAK8wB,cAAc9wB,KAAKklB,eACxB,IAAIyT,GAAa34B,KAAKsC,QAAQyR,iBAAiB,IAAMqP,EACrDta,eAAY6vB,GAAavV,IACzBpjB,KAAKooB,WAAWpoB,KAAK2kB,kBAEzBrB,EAAgBpjB,UAAUkoB,WAAa,SAAUzD,GAC7C,IAAK,GAAI3jB,GAAI,EAAGA,EAAI2jB,EAAgBhkB,OAAQK,IAAK,CAC7C,GAAIsB,GAAUqiB,EAAgB3jB,GAC1B43B,EAAejU,EAAgB3jB,GAAG6N,cAAc,qBAChD7O,MAAKwoB,gBACDxoB,KAAK64B,iBAAmBv2B,EAAQyR,iBAAiB/T,KAAK64B,iBAAiB,GACvE9vB,YAAUzG,EAAQyR,iBAAiB/T,KAAK64B,iBAAiB,KAAMzV,IAG/Dra,YAAUzG,IAAW8gB,KAGzBpjB,KAAKurB,eACLvrB,KAAK+nB,aAAe/nB,KAAKomB,mBACzBpmB,KAAK84B,iBAAiBx2B,EAASs2B,KAI3CtV,EAAgBpjB,UAAU44B,iBAAmB,SAAUzY,EAAK0Y,GAExD,GADA/4B,KAAKulB,iBAAmBvlB,KAAKg5B,kBACxB3Y,EAAIxR,cAAc,aACnB,IAAK,GAAIxJ,GAAI,EAAGA,EAAIrF,KAAKulB,iBAAiB5kB,OAAQ0E,IAAK,CACnD,GAAI4zB,GAAUj5B,KAAK6S,cAAc,QAC7BqmB,MAAgB,EACpBH,GAAUjmB,YAAYmmB,GAGlBC,EAF6B,WAA7Bl5B,KAAKulB,iBAAiBlgB,IAAgD,WAA7BrF,KAAKulB,iBAAiBlgB,IAClC,YAA7BrF,KAAKulB,iBAAiBlgB,IAAiD,YAA7BrF,KAAKulB,iBAAiBlgB,GAx4DvE,WACA,WA64DG0D,YAAUkwB,IAAWC,EAAel5B,KAAKulB,iBAAiBlgB,GAr5D7D,WACI,gBAw5Dbie,EAAgBpjB,UAAUynB,gBAAkB,SAAUrlB,EAAS6nB,GAC3D,GAAIrd,IACAA,OACIga,MAAQjiB,oBAAkBslB,EAAWrD,WAAuCmI,GAA9B9E,EAAWrD,MAAMla,WAC/Dma,MAAQliB,oBAAkBslB,EAAWpD,WAAuCkI,GAA9B9E,EAAWpD,MAAMna,WAC/Dme,SAAWlmB,oBAAkBslB,EAAWY,cAA6CkE,GAAjC9E,EAAWY,SAASne,WACxEoe,SAAWnmB,oBAAkBslB,EAAWa,cAA6CiE,GAAjC9E,EAAWa,SAASpe,WACxEqe,SAAWpmB,oBAAkBslB,EAAWc,cAA6CgE,GAAjC9E,EAAWc,SAASre,WACxEse,SAAWrmB,oBAAkBslB,EAAWe,cAA6C+D,GAAjC9E,EAAWe,SAASte,WACxEiZ,IAAMhhB,oBAAkBslB,EAAWtE,SAAmCoJ,GAA5B9E,EAAWtE,IAAIjZ,WACzDkZ,IAAMjhB,oBAAkBslB,EAAWrE,SAAmCmJ,GAA5B9E,EAAWrE,IAAIlZ,YAGjE5M,MAAK6mB,cAAc/Z,EAAOxK,IAE9BghB,EAAgBpjB,UAAU0xB,gBAAkB,SAAUzH,GAClD,GAEIuH,GACAyH,EAHAC,EAAap5B,KAAKstB,cAAc,GAChC+L,EAAYr5B,KAAKstB,cAAc,EAenC,OAXIoE,GADAvH,GAAqC,oBAA0C,gBAAtBA,UAAkCA,EAAWrD,MAAQ,EAChGqD,EAAWrD,MAAQuS,GAAclP,EAAWrD,MAAQ,GAAK9mB,KAAKmpB,YAAY,GAG3EkQ,EAGbF,EADAhP,GAAsC,oBAAYA,EAAWpD,MAAQ,GAAmC,gBAAtBoD,SACnEA,EAAWpD,MAAQqS,GAAejP,EAAWpD,MAAQ,GAAK/mB,KAAKmpB,YAAY,GAG5E/Z,aAAWgqB,IAErBD,EAAazH,IAEzBpO,EAAgBpjB,UAAUo5B,uBAAyB,SAAU/M,GACzD,GACIgN,GAAa9d,WAAW8Q,EAAKjqB,QAAQ4D,MAAMqW,KAC3Cid,EAAc/d,WAAW8Q,EAAKjqB,QAAQ4D,MAAMkW,KAIhD,QAHUN,KAAKgD,MAAMya,GAAcv5B,KAAKstB,cAAc,GAAKttB,KAAKmpB,YAAY,KAClErN,KAAKgD,MAAM0a,GAAex5B,KAAKstB,cAAc,KAAMttB,KAAKmpB,YAAY,OAIlF7F,EAAgBpjB,UAAUkvB,gBAAkB,SAAU5C,EAAciN,EAAOC,GACvE,GAAIC,GAAgB35B,KAAKqvB,iBAAiBqK,EAC1C,IAAIC,EAAch5B,OAAS,GAAKX,KAAKokB,gBAAiB,CAClD,GAAIwV,IACAD,cAAeA,EAAenN,aAAcA,EAC5CqN,YAAch1B,oBAAkB40B,MAASA,EAAYK,cAAgBj1B,oBAAkB60B,MAAWA,EAEtG15B,MAAKuN,QAAQ,SAAUqsB,KAG/BtW,EAAgBpjB,UAAUmvB,iBAAmB,SAAUqK,GACnD,GAAIC,KACJ,IAAI35B,KAAKokB,gBACLuV,SAGA,KAAK,GAAI34B,GAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,KAC7B6D,oBAAkB60B,IAAY15B,KAAK2lB,OAAO3kB,GAAGogB,KAAOsY,EAAQ,GAAGtY,IACjEphB,KAAK2lB,OAAO3kB,GAAG6kB,MAAQ7lB,KAAKqsB,mBAAmBrrB,GAAG6kB,KAC/C7lB,KAAK2lB,OAAO3kB,GAAG8kB,MAAQ9lB,KAAKqsB,mBAAmBrrB,GAAG8kB,KACtD6T,EAAcrqB,KAAKtP,KAAK2lB,OAAO3kB,GAI3C,OAAO24B,IAEXrW,EAAgBpjB,UAAUuoB,sBAAwB,SAAUsR,GA0GxD,IAAK,GADcC,GAxGfz3B,EAAQvC,KAwGRi6B,EAASj6B,KACJgB,EAAI,EAAGA,EAAI+4B,EAAYp5B,OAAQK,KAxG1B,SAAUA,GACpB,GAAIk5B,IAAc,YAAa,oBAC3BhQ,EAAc6P,EAAY/4B,EAE1Bi5B,GAAOE,QAAU,GAAIC,aAAUlQ,GAC3B9d,gBAAgB,EAChB+rB,OAAO,EACPkC,SAAUJ,EAAO33B,QACjBg4B,cAAc,EACdC,OAAQN,EAAOpB,gBAAkBoB,EAAOpB,gBAAkB,WAC1D2B,MAAON,EACPO,UAAWR,EAAOS,gBAAgBvyB,KAAK8xB,GACvCU,SAAU,SAAUpO,GAChB,GAAIqO,GAAerO,CAMnB,IALAqO,EAAajV,OAASpjB,EAAMysB,oBAC5BzsB,EAAMgL,QAAQ,WAAYqtB,GACtB/1B,oBAAkB0nB,EAAKnf,UACvBmf,EAAKnf,QAAS,GAEZmf,EAAY,OAmDb,CACD,GAAIsO,GAAet4B,EAAM0qB,gBAAgB1qB,EAAM2lB,YAAY9G,GAC3D,KAAKpgB,EAAI,EAAGA,EAAIuB,EAAMojB,OAAOhlB,OAAQK,IAC7BuB,EAAMojB,OAAO3kB,GAAGogB,KAAOyZ,EAAazZ,KACpCmL,EAAKjqB,QAAQ4M,aAAa,WAAY3M,EAAM8pB,mBAAmBrrB,GAAG8kB,IAAIlZ,YACtE2f,EAAKjqB,QAAQ4M,aAAa,WAAY3M,EAAM8pB,mBAAmBrrB,GAAG6kB,IAAIjZ,YACtEiuB,EAAa/U,IAAMvjB,EAAM8pB,mBAAmBrrB,GAAG8kB,IAC/C+U,EAAahV,IAAMtjB,EAAM8pB,mBAAmBrrB,GAAG6kB,IAC/CtjB,EAAMykB,iBAAiBzkB,EAAM2lB,YAAa3lB,EAAM8pB,mBAAmBrrB,GAAG6kB,IAAKtjB,EAAM8pB,mBAAmBrrB,GAAG8kB,KACvGvjB,EAAM4lB,kBAAkB5lB,EAAM2lB,YAAa2S,GAG/Ct4B,GAAMoqB,WACNte,SAAO9L,EAAMoqB,eAhED,CAChB,GAAI9B,GAAQtoB,EAAM0qB,gBAAgB1qB,EAAM2lB,YAAY9G,GAChD7e,GAAMmtB,cACNntB,EAAMitB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOxkB,EAAM2lB,aAAavnB,OAAS,GAC7F4B,EAAMu4B,kBAAkBvO,GACxBhqB,EAAMykB,iBAAiBzkB,EAAM2lB,YAAa2C,EAAMhF,IAAKgF,EAAM/E,KAC3DvjB,EAAM4lB,kBAAkB5lB,EAAM2lB,YAAa2C,IAG3CtoB,EAAMykB,iBAAiBzkB,EAAM2lB,YAAa2C,EAAMhF,IAAKgF,EAAM/E,KAE/DvjB,EAAM2lB,YAAc,IACpB,IAAIlb,GAAOzK,EAAMktB,aAAalD,EAC1BhqB,GAAMoqB,WACNte,SAAO9L,EAAMoqB,WAEjB7jB,eAAavG,EAAMD,UAvgE3B,cAwgEQwG,eAAayjB,EAAKjqB,UAAW6gB,IAC7B5gB,EAAMoqB,UAAY,KAClBJ,EAAKjqB,QAAQO,UAAU2H,OAAO,aAC9B,IAAIqb,GAAMtjB,EAAM+2B,uBAAuB/M,GAAM,GACzCzG,EAAMvjB,EAAM+2B,uBAAuB/M,GAAM,GACzCpC,EAAa5nB,EAAM0qB,gBAAgBV,EAAKjqB,QAAQ8e,GAChD7e,GAAMmtB,cACsG,IAA5GntB,EAAMitB,WAAW3J,EAAKC,EAAKqE,EAAWrD,MAAOqD,EAAWpD,MAAOhd,SAASqnB,eAAepkB,EAAKoU,KAAKzgB,QACjG4B,EAAMqjB,oBAAoBrjB,EAAM0qB,gBAAgBV,EAAKjqB,QAAQ8e,KAAOyE,IAAKA,EAAKC,IAAKA,IACnFvjB,EAAM+iB,UAAUiH,EAAKjqB,QAAQ8e,IAAIyE,IAAMA,EACvCtjB,EAAM+iB,UAAUiH,EAAKjqB,QAAQ8e,IAAI0E,IAAMA,EACvCvjB,EAAMskB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgB2f,EAAKjqB,SAClFC,EAAMmmB,gBAGNnmB,EAAMqjB,oBAAoBrjB,EAAM0qB,gBAAgBV,EAAKjqB,QAAQ8e,KACzDyE,IAAKtjB,EAAM+iB,UAAUiH,EAAKjqB,QAAQ8e,IAAIyE,IACtCC,IAAKvjB,EAAM+iB,UAAUiH,EAAKjqB,QAAQ8e,IAAI0E,MAE1CyG,EAAKjqB,QAAQ4M,aAAa,WAAY3M,EAAM0qB,gBAAgBV,EAAKjqB,QAAQ8e,IAAI0E,IAAIlZ,YACjF2f,EAAKjqB,QAAQ4M,aAAa,WAAY3M,EAAM0qB,gBAAgBV,EAAKjqB,QAAQ8e,IAAIyE,IAAIjZ,YACjFrK,EAAMmmB,cAEV,IAAIqS,GAAgBx4B,EAAM0qB,gBAAgBV,EAAKjqB,QAAQ8e,GACvD7e,GAAMykB,iBAAiBuF,EAAKjqB,QAASy4B,EAAclV,IAAKkV,EAAcjV,KACtEvjB,EAAMqmB,eACNrmB,EAAMsmB,yBACNtmB,EAAM6sB,iBAAgB,GACtB7sB,EAAMy4B,mBAAsBnvB,MAAO0gB,EAAK1gB,MAAOvJ,QAASiqB,EAAKjqB,SAC7DC,EAAM+oB,eACN/oB,EAAMghB,KAAOhhB,EAAMkkB,QAAO,GAC1BlkB,EAAMgvB,iBACNhvB,EAAM+jB,mBAmBdlD,KAAM,SAAUmJ,GACZhqB,EAAM04B,kBACFpvB,MAAO0gB,EAAK1gB,MACZvJ,QAASiqB,EAAKjqB,QACdhC,OAAQqrB,UAASY,SAAc,aAEnChqB,EAAMgL,QAAQ,OAAQhL,EAAM04B,kBAC5B14B,EAAM24B,YAAY3O,OAG6B,IAAnD0N,EAAO/U,eAAena,QAAQkvB,EAAOE,UACrCF,EAAO/U,eAAe5V,KAAK2qB,EAAOE,SAG1CH,EAAUh5B,GAIFA,GACRA,EAAIg5B,GAGZ1W,EAAgBpjB,UAAU0oB,aAAe,WACrC5oB,KAAKmvB,mBACLnvB,KAAKqoB,qBACLroB,KAAK0oB,eAETpF,EAAgBpjB,UAAUomB,eAAiB,WACvCtmB,KAAKklB,eAAe/W,QAAQ,SAAUgsB,GAClCA,EAAQgB,iBAShB7X,EAAgBpjB,UAAUk7B,uBAAyB,WAC/C,GAAIp7B,KAAKklB,gBAAkBllB,KAAKklB,eAAevkB,OAAS,EAAG,CACvD,IAAK,GAAIK,GAAI,EAAGA,EAAIhB,KAAKklB,eAAevkB,OAAQK,IAC5ChB,KAAKklB,eAAelkB,GAAGugB,UACvBzX,eAAauxB,YAAYr7B,KAAKklB,eAAelkB,GAAGsB,QAEpDtC,MAAK04B,eAGbpV,EAAgBpjB,UAAUo7B,iBAAmB,SAAUzV,EAAKkB,EAAOwU,GAC3D1V,EAAMkB,GAAS/mB,KAAKujB,OACpBvjB,KAAKujB,KAAOvjB,KAAKujB,KAAOgY,EACxBv7B,KAAKuxB,mBAGbjO,EAAgBpjB,UAAUw6B,gBAAkB,SAAUnO,GAClD,GAAIiP,GAAWjP,CAOf,IANAvsB,KAAKuN,QAAQ,YAAaiuB,EAAU,WAC5B32B,oBAAkB0nB,EAAKnf,UACvBmf,EAAKnf,QAAS,KAGtBpN,KAAKwkB,SAAW+H,EAAKnf,OACfmf,EAAY,OAyBdzjB,eAAa9I,KAAKsC,UAjpEV,cAkpERwG,eAAayjB,EAAKjqB,UAAW6gB,QA1Bb,CAChBnjB,KAAKqsB,mBAAqBrsB,KAAKssB,YAAYtsB,KAAK2lB,QAChD3lB,KAAKkoB,YAAcqE,EAAKjqB,QACxBtC,KAAK21B,YAAc8F,KAAKC,MAAMD,KAAKE,UAAU37B,KAAK21B,aAClD,IAAIiG,GAAc57B,KAAKm0B,SAAWhvB,SAASonB,EAAKjqB,QAAQqL,aAAa,YAAa,GAClF3N,MAAK67B,SAAW12B,SAASonB,EAAKjqB,QAAQqL,aAAa,YAAa,GAChE,IAAI4pB,GAAWpyB,SAASonB,EAAKjqB,QAAQqL,aAAa,cAAe,GACjE3N,MAAKs7B,iBAAiBM,EAAarE,EAAUA,GAC7Cv3B,KAAKsmB,iBACLtmB,KAAK2sB,UAAY5iB,SAAS8I,cAAc,OACxC7S,KAAK2sB,UAAU9pB,UAAUgE,IAAI,WAAY,uBACzC+jB,oBAAS5qB,KAAK2sB,WAAamP,SAAY,aACvC/yB,YAAU/I,KAAKsC,UApoEP,cAqoERyG,YAAUwjB,EAAKjqB,UAAW6gB,IAC1BnjB,KAAKsC,QAAQwQ,YAAY9S,KAAK2sB,WAC9B3sB,KAAKogB,uBACLpgB,KAAK2sB,UAAY5iB,SAAS8E,cAAc,YACxC,IAAIktB,GAAc/7B,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,IAChD4a,EAAah8B,KAAKi8B,2BAA2BF,EAAYjV,MAAOiV,EAAYhV,MAChF/mB,MAAK2sB,UAAUzmB,MAAM/C,OAAS64B,EAAW74B,OACzCnD,KAAK2sB,UAAUzmB,MAAM9C,MAAQ44B,EAAW54B,KACxC,IAAI23B,GAAgB/6B,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,GACtDphB,MAAKgnB,iBAAiBhnB,KAAK2sB,UAAWoO,EAAclV,IAAKkV,EAAcjV,OAO/ExC,EAAgBpjB,UAAUosB,YAAc,SAAU4P,EAAQ57B,OACvC2uB,KAAX3uB,IACAA,KAEJ,KAAK,GAAIU,GAAI,EAAGA,EAAIk7B,EAAOv7B,OAAQK,IAAK,CAC/BV,EAAOU,KACRV,EAAOU,MAGX,KAAK,GAAIiE,KAAKi3B,GAAOl7B,GACjBV,EAAOU,GAAG,GAAKiE,GAAKi3B,EAAOl7B,GAAG,GAAKiE,GAG3C,MAAO3E,IAEXgjB,EAAgBpjB,UAAUg7B,YAAc,SAAU3O,GAC9C,GAAI4P,GACAlI,EACAmI,CACJ,IAAKp8B,KAAKwkB,SA0DNxkB,KAAKm6B,QAAQkC,WAAW9P,EAAK1gB,OAC7B/C,eAAa9I,KAAKsC,UAnuEV,cAouERwG,eAAayjB,EAAKjqB,UAAW6gB,QA5Db,CAChB,GAAI2C,GAAMsW,EAAUp8B,KAAKs5B,uBAAuB/M,GAAM,GAClD1G,EAAM7lB,KAAKs5B,uBAAuB/M,GAAM,EAC5C,IAAIzG,EAAM,GAAKD,EAAM,EACjB,MAEJ7lB,MAAK4lB,oBAAoB5lB,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,KAAOyE,IAAKA,EAAKC,IAAKA,GACjF,IAAIqE,GAAanqB,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,GAGnD,IAFAphB,KAAKs7B,iBAAiBnR,EAAWtE,IAAKsE,EAAWpD,MAAO,GACxD/mB,KAAKsmB,iBACDtmB,KAAK0vB,eACL1vB,KAAK6mB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgB2f,EAAKjqB,SACjFtC,KAAK4lB,oBAAoB5lB,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,KAAOyE,IAAKA,EAAKC,IAAKA,IACjFqW,EAASn8B,KAAKslB,UAAWiH,EAAKjqB,YAAawjB,IAC3CmO,EAASj0B,KAAKslB,UAAWiH,EAAKjqB,YAAaujB,IAC3C7lB,KAAKslB,UAAWiH,EAAKjqB,aAAiBujB,IAAKA,EAAKC,IAAKA,GACrD9lB,KAAKqoB,sBACDroB,KAAK67B,WAAaM,GAAUn8B,KAAKm0B,WAAaF,KAC9Cj0B,KAAK86B,kBAAkBvO,GACnBvsB,KAAK67B,WAAaM,IAClBn8B,KAAKm0B,SAAWF,GAEhBj0B,KAAKm0B,WAAaF,IAClBj0B,KAAK67B,SAAWM,GAEhBn8B,KAAK0vB,eAAc,CACnB1vB,KAAKkoB,YAAcqE,EAAKjqB,OACxB,IAAIuoB,GAAQV,CACZnqB,MAAK8uB,eAAiB9uB,KAAKwvB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOwF,EAAKjqB,UACvF6nB,EAAWrE,KAAO,GAAKqE,EAAWrE,KAAO9lB,KAAK8oB,oBAC9C9oB,KAAK8uB,mBAET9uB,KAAKmoB,kBAAkBoE,EAAKjqB,QAAS6nB,GACrCnqB,KAAKmvB,mBAoBjB,IAhB0B,IAAtBnvB,KAAK0vB,cACL1vB,KAAK4lB,oBAAoB5lB,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,KAAOyE,IAAKA,EAAKC,IAAKA,IAEjF9lB,KAAKslB,UAAUiH,EAAKjqB,QAAQ8e,IAAIyE,MAAQA,GAAO7lB,KAAKslB,UAAUiH,EAAKjqB,QAAQ8e,IAAI0E,MAAQA,IACvF9lB,KAAK4lB,oBAAoB5lB,KAAKitB,gBAAgBV,EAAKjqB,QAAQ8e,KAAOyE,IAAKA,EAAKC,IAAKA,IACjF9lB,KAAK6mB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgB2f,EAAKjqB,UAEjFtC,KAAK67B,WAAaO,IAClBp8B,KAAK67B,SAAWM,EAChBn8B,KAAKmvB,oBAEJnvB,KAAK0vB,cACN1vB,KAAK86B,kBAAkBvO,GAE3BvsB,KAAK6wB,oBAAoB7wB,KAAK2kB,iBAC9B3kB,KAAKooB,WAAWpoB,KAAK2kB,kBACK,IAAtB3kB,KAAK0vB,aACL,SASZpM,EAAgBpjB,UAAUuvB,aAAe,SAAUlD,GAE/C,IAAK,GADDvf,GACKhM,EAAI,EAAGA,EAAIhB,KAAK2kB,gBAAgBhkB,OAAQK,IACzChB,KAAK2kB,gBAAgB3jB,GAAGogB,MAASmL,EAAKjqB,SACnCiqB,EAAKjqB,QAAQ8e,IAAOmL,KACvBvf,EAAOhN,KAAK2kB,gBAAgB3jB,GAGpC,OAAOgM,IAEXsW,EAAgBpjB,UAAUqyB,SAAW,SAAU1M,EAAK2K,EAAQ8L,IACpDA,GAAkBA,YAAwB18B,SAC1C08B,GAAgBA,GAGpB,KADA,GAAIvV,GAAQ,EACLlB,GAAO,GAAG,CAGb,IAFA,GAAIiB,GAAQ,EACRhB,EAAM0K,EACH1K,GAAO,GAAG,CACb,GAAIsM,GAAQpyB,KAAK4kB,YAAYiB,EAC7B,IAAIuM,EAAO,CACP,GAAIplB,GAAOolB,EAAMtM,EACjB,IAAI9Y,KAAUsvB,IACsB,IAAhCA,EAAavxB,QAAQiC,KAAiB7H,SAAS6H,EAAKW,aAAa,cAAe,KAAOmZ,GACpF3hB,SAAS6H,EAAKW,aAAa,cAAe,KAAOoZ,EACpD,MAAO/Z,KAGb8Z,IACAhB,IAEJD,IACAkB,EAEN,MAAO,OAEXzD,EAAgBpjB,UAAU46B,kBAAoB,SAAUvO,GACpD,GAAIxF,GAAQ5hB,SAASonB,EAAKjqB,QAAQqL,aAAa,cAAe,IAC1DmY,EAAM3gB,SAASonB,EAAKjqB,QAAQqL,aAAa,YAAa,IACtDkY,EAAM1gB,SAASonB,EAAKjqB,QAAQqL,aAAa,YAAa,IACtDmZ,EAAQ3hB,SAASonB,EAAKjqB,QAAQqL,aAAa,cAAe,IAC1D+jB,EAAa1xB,KAAKstB,cAAc,GAChCkE,EAAcxxB,KAAKstB,cAAc,GACjC/Q,EAAc,IAARsJ,EAAY,EAAM,GAAS2L,EAAcxxB,KAAKmpB,YAAY,IAChE/M,EAAe,IAAR0J,EAAY,EAAM,GAAS4L,EAAa1xB,KAAKmpB,YAAY,GACpEnpB,MAAKmlB,WAAW5I,IAAMvc,KAAK2sB,UAAUzmB,MAAMqW,IAAMA,EAAM,KACvDvc,KAAKmlB,WAAW/I,KAAOpc,KAAK2sB,UAAUzmB,MAAMkW,KAAOA,EAAO,IAC1D,IAAI4f,GAAah8B,KAAKi8B,2BAA2BnV,EAAOC,EACxD/mB,MAAKmlB,WAAWhiB,OAASnD,KAAK2sB,UAAUzmB,MAAM/C,OAAS64B,EAAW74B,OAClEnD,KAAKmlB,WAAW/hB,MAAQpD,KAAK2sB,UAAUzmB,MAAM9C,MAAQ44B,EAAW54B,OAEpEkgB,EAAgBpjB,UAAU+7B,2BAA6B,SAAUnV,EAAOC,GACpE,OACI3jB,MAAQ0jB,EAAQ9mB,KAAKipB,SAAS,IAAQnC,EAAQ,GAAK9mB,KAAKmpB,YAAY,GAAM,KAC1EhmB,OAAS4jB,EAAQ/mB,KAAKipB,SAAS,IAAQlC,EAAQ,GAAK/mB,KAAKmpB,YAAY,GAAM,OAGnF7F,EAAgBpjB,UAAU+sB,gBAAkB,SAAUjH,GAElD,IAAK,GADDuW,GACKv7B,EAAI,EAAGA,EAAIhB,KAAK2lB,OAAOhlB,OAAQK,IAChChB,KAAK2lB,OAAO3kB,GAAGogB,KAAO4E,IACtBuW,EAAsBv8B,KAAK2lB,OAAO3kB,GAG1C,OAAOu7B,IAUXjZ,EAAgBpjB,UAAUs8B,SAAW,SAAUvL,GAC3CjxB,KAAKskB,YAAc,EACnBtkB,KAAKunB,SACA0J,EAAMlG,WACPkG,EAAMlG,SAAW,GAEhBkG,EAAMjG,WACPiG,EAAMjG,SAAW,GAEhBiG,EAAM7P,KACP6P,EAAM7P,GAAK,UAAYphB,KAAKwjB,QAAQ5W,WACpC5M,KAAKwjB,QAAUxjB,KAAKwjB,QAAU,EAElC,IAAI6H,GAAY,GAAIhI,GAAMrjB,KAAM,SAAUixB,GAAO,EACjDjxB,MAAK2lB,OAAOrW,KAAK+b,GACjBrrB,KAAKqsB,mBAAqBrsB,KAAKssB,YAAYtsB,KAAK2lB,QAChD3lB,KAAKwnB,gBAAgB6D,IACjBrrB,KAAKynB,eAAiB4D,EAAUvF,KAAO9lB,KAAKynB,eAAkB4D,EAAUvF,IAAMuF,EAAUvE,QACxF9mB,KAAK4lB,oBAAoByF,GAAavF,IAAK9lB,KAAKynB,eAAiB4D,EAAUvE,OAE/E,IAAIoL,GAAOlyB,KAAK6xB,WAAWxG,GAAW,EAAM,KAkC5C,IAjCArrB,KAAKslB,UAAU+F,EAAUjK,KAAQyE,IAAKwF,EAAUxF,IAAKC,IAAKuF,EAAUvF,KACpE9lB,KAAK21B,YAAYtK,EAAUjK,KAAQyE,IAAKwF,EAAUxF,IAAKC,IAAKuF,EAAUvF,KACtE9lB,KAAKqoB,qBACLroB,KAAKsC,QAAQm6B,sBAAsB,aAAcvK,GACjDlyB,KAAK01B,gBAAiB,EAClB11B,KAAKomB,mBACLpmB,KAAKsoB,wBACLtoB,KAAK6wB,oBAAoB7wB,KAAK2kB,mBAG9B3kB,KAAKkoB,YAAcgK,EACdlyB,KAAK8uB,iBACN9uB,KAAK8uB,mBAET9uB,KAAKgnB,iBAAiBkL,EAAM7G,EAAUxF,IAAKwF,EAAUvF,KACrD9lB,KAAK01B,gBAAiB,EACtB11B,KAAKmoB,kBAAkB+J,EAAM7G,IAE7BrrB,KAAK01B,iBACL11B,KAAK01B,gBAAiB,GAEtB11B,KAAKwoB,eACLxoB,KAAK+nB,aAAe/nB,KAAKomB,mBACzBpmB,KAAKyoB,uBAAuB1e,SAASqnB,eAAe/F,EAAUjK,MAElEphB,KAAKooB,YAAY8J,IACblyB,KAAKkvB,gBACLlvB,KAAKkoB,YAAc,KACnBloB,KAAKmvB,oBAETnvB,KAAKqoB,qBACLroB,KAAK0oB,cACL1oB,KAAK6oB,yBACD7oB,KAAKurB,cACL,IAAK,GAAIvqB,GAAI,EAAGA,EAAIkxB,EAAKne,iBAAiB,aAAapT,OAAQK,IAAK,CAChE,GAAI6S,GAAmC,SAAtB5K,UAAQC,KAAKC,KAAmB,wBAA0B,WAC3EW,gBAAajD,IAAIqrB,EAAKne,iBAAiB,aAAa/S,GAAI6S,EAAW7T,KAAKwrB,kBAAmBxrB,MACjE,SAAtBiJ,UAAQC,KAAKC,MACbW,eAAajD,IAAIqrB,EAAKne,iBAAiB,aAAa/S,GAAI,aAAchB,KAAKyrB,uBAAwBzrB,MAI/GA,KAAKovB,iBAAgB,GAAQ/D,KAUjC/H,EAAgBpjB,UAAUw8B,YAAc,SAAUzL,GAE9C,GADAjxB,KAAKskB,YAAc,EACd2M,EAAM7P,GAAX,CAGA,GAAI2Z,GAAgB/6B,KAAKitB,gBAAgBgE,EAAM7P,GAC/C,IAAK2Z,EAAL,CAGA/6B,KAAKunB,SACL0J,EAAMnL,IAAOmL,EAAMnL,IAAM,EAAK,EAAMmL,EAAMnL,IAAM9lB,KAAK2mB,QAAY3mB,KAAK2mB,QAAU,EAAIsK,EAAMnL,IACtFjhB,oBAAkBosB,EAAMnL,OACxBmL,EAAMnL,IAAMiV,EAAcjV,KAE9B9lB,KAAK4lB,oBAAoBmV,EAAe9J,GACxCjxB,KAAKwnB,gBAAgBuT,EACrB,IAAI7I,GAAOnoB,SAASqnB,eAAeH,EAAM7P,GACzCphB,MAAKkoB,YAAcgK,CACnB,IAAI5uB,GAAWy3B,EAAcz3B,SAAWy3B,EAAcz3B,SAASmM,MAAM,KAAO,IAK5E,IAJAzP,KAAKqqB,aAAe6H,EAAKrjB,cAAc,sBACnCqjB,EAAKrjB,cAAc,sBACnB7O,KAAKqpB,iBAAiB/lB,EAAU4uB,EAAK9Q,GAAK,WA53EjC,qBA63Eb8Q,EAAKpf,YAAY9S,KAAKqqB,cAClB0Q,EAAcxQ,OAAQ,CACtB,GAAIC,GAAwB0H,EAAKrjB,cAAc,mBAC3CqjB,EAAKrjB,cAAc,mBAAqB7O,KAAKqpB,oBAAqB6I,EAAK9Q,GAAK,WAAY,GAC5FrY,aAAUyhB,IA/3ET,mBAg4EDA,EAAsBhlB,UAAY,EAC9B4b,GAAKphB,KAAKsC,QAAQ8e,GAAK,iBAAmB2Z,EAAc3Z,EAC5DphB,MAAK0pB,eAAeqR,EAAcxQ,OAAQC,EAAuBpJ,GAAI,EAAM,UAC3EphB,KAAKqqB,aAAavX,YAAY0X,GAC9BxqB,KAAKogB,2BAGD8R,GAAKrjB,cAAc,oBACnBR,SAAO6jB,EAAKrjB,cAAc,mBAGlC,IAAIksB,EAAcj2B,QAAS,CACvB,GAAI63B,GAAa5B,EAAcz3B,SAAWy3B,EAAcz3B,SAASmM,MAAM,KAAO,IAC9EzP,MAAK0qB,UAAYwH,EAAKrjB,cAAc,oBAAsBqjB,EAAKrjB,cAAc,oBACzE7O,KAAKqpB,iBAAiBsT,EAAYzK,EAAK9Q,GAAK,QAj5EzC,mBAk5EPphB,KAAK0qB,UAAUllB,UAAY,EAC3B,IAEImlB,GAAqB,iBAFN3qB,KAAKqqB,aAAaxb,cAAc,mBAC/CwN,OAAOnG,iBAAiBlW,KAAKqqB,aAAaxb,cAAc,oBAAoB1L,OAAS,OAC/B,GAC1DynB,qBAAS5qB,KAAK0qB,WAAavnB,OAAQwnB,GACnC,IAAIvJ,GAAKphB,KAAKsC,QAAQ8e,GAAK,kBAAoB2Z,EAAc3Z,EAC7DphB,MAAK0pB,eAAeqR,EAAcj2B,QAAS9E,KAAK0qB,UAAWtJ,GAAI,EAAM,WACrEphB,KAAKqqB,aAAavX,YAAY9S,KAAK0qB,WACnC1qB,KAAKogB,2BAGD8R,GAAKrjB,cAAc,qBACnBR,SAAO6jB,EAAKrjB,cAAc,oBAGlC7O,MAAK2nB,gBAAgBuK,EAAM6I,GAC3B/6B,KAAKinB,kBAAkBiL,EAAM6I,GAC7B/6B,KAAKgnB,iBAAiBkL,EAAM6I,EAAclV,IAAKkV,EAAcjV,KAC7D9lB,KAAKmoB,kBAAkB+J,EAAM6I,GACzB/6B,KAAKomB,mBACLpmB,KAAKsoB,wBAETtoB,KAAKkoB,YAAc,KACnBloB,KAAK4oB,eACL5oB,KAAK6oB,4BAETvF,EAAgBpjB,UAAU2oB,uBAAyB,WAC/C7oB,KAAK41B,WAAa51B,KAAK4kB,YACvB5kB,KAAK21B,YAAc8F,KAAKC,MAAMD,KAAKE,UAAU37B,KAAKslB,aAOtDhC,EAAgBpjB,UAAU08B,UAAY,WAGlC,IAAK,GAFDC,GAAa78B,KAAKssB,YAAYtsB,KAAK2lB,QACnCmX,KACK97B,EAAI,EAAGA,EAAI67B,EAAWl8B,OAAQK,IACnC87B,EAAaxtB,MACT8R,GAAIyb,EAAW77B,GAAGogB,GAAIyE,IAAKgX,EAAW77B,GAAG6kB,IAAKC,IAAK+W,EAAW77B,GAAG8kB,IACjEgB,MAAO+V,EAAW77B,GAAG8lB,MAAOC,MAAO8V,EAAW77B,GAAG+lB,MAAOgE,SAAU8R,EAAW77B,GAAG+pB,SAChFC,SAAU6R,EAAW77B,GAAGgqB,SAAUC,SAAU4R,EAAW77B,GAAGiqB,SAC1DC,SAAU2R,EAAW77B,GAAGkqB,UAGhC,WAKJ5H,EAAgBpjB,UAAU68B,UAAY,WAClC/8B,KAAKokB,iBAAkB,CACvB,KAAK,GAAIpjB,GAAI,EAAGA,EAAIhB,KAAK2kB,gBAAgBhkB,OAAQK,IAC7CqN,SAAOrO,KAAK2kB,gBAAgB3jB,IAC5BhB,KAAK+D,eAET/D,MAAKg9B,iBACLh9B,KAAKujB,KAAO,EACZvjB,KAAK6kB,uBACL7kB,KAAKuxB,iBACLvxB,KAAK0oB,cACL1oB,KAAK4kB,eACL5kB,KAAK+kB,uBACL/kB,KAAK8kB,kBACL9kB,KAAKglB,0BACLhlB,KAAK2kB,mBACL3kB,KAAKslB,aACLtlB,KAAK21B,cACL,IAAIsH,GAAej9B,KAAKssB,YAAYtsB,KAAK2lB,OACzC3lB,MAAK0O,eAAgBiX,YAAc,GACnC3lB,KAAK4oB,eACL5oB,KAAK6oB,yBACL7oB,KAAKovB,iBAAgB,EAAO,KAAM6N,GAClCj9B,KAAKokB,iBAAkB,EACvBpkB,KAAK2xB,wBASTrO,EAAgBpjB,UAAUg9B,YAAc,SAAU9b,GAC9C,GAAI7e,GAAQvC,IACZA,MAAKskB,YAAc,EACnBtkB,KAAKqsB,mBAAqBrsB,KAAKssB,YAAYtsB,KAAK2lB,OAEhD,KAAK,GADDwX,GACKn8B,EAAI,EAAGA,EAAIhB,KAAK2kB,gBAAgBhkB,OAAQK,IACzChB,KAAK2kB,gBAAgB3jB,GAAGogB,KAAOA,IAC/B/S,SAAOrO,KAAK2kB,gBAAgB3jB,IAC5BhB,KAAK2kB,gBAAgBhC,OAAO3hB,EAAG,IAE/BhB,KAAK2lB,OAAO3kB,GAAGogB,KAAOA,IACtB+b,EAAen9B,KAAK2lB,OAAO3kB,GAC3BhB,KAAK2lB,OAAOhD,OAAO3hB,EAAG,GACtBhB,KAAKqsB,mBAAmB1J,OAAO3hB,EAAG,GAClChB,KAAKqoB,qBACLroB,KAAK0oB,cAGb1oB,MAAK4oB,eACD5oB,KAAKomB,oBACLpmB,KAAKqkB,gBAAiB,EACtBrkB,KAAKsoB,wBACLtoB,KAAKqkB,gBAAiB,GAE1BrkB,KAAK6kB,oBAAoB1W,QAAQ,SAAUnB,GACnCA,EAAKoU,KAAOA,GACZ7e,EAAMsiB,oBAAoBlC,OAAOpgB,EAAMsiB,oBAAoB9Z,QAAQiC,GAAO,KAGlFhN,KAAK6oB,yBACL7oB,KAAKovB,iBAAgB,EAAO,MAAO+N,IACR,IAAvBn9B,KAAK2lB,OAAOhlB,QAAgD,IAAhCX,KAAK2kB,gBAAgBhkB,QACjDX,KAAK2xB,wBAcbrO,EAAgBpjB,UAAUk9B,UAAY,SAAUhc,EAAIyE,EAAKC,GACrD9lB,KAAKyjB,iBAAkB,EACvBzjB,KAAKqsB,mBAAqBrsB,KAAKssB,YAAYtsB,KAAK2lB,OAChD,IAAIoV,GAAgB/6B,KAAKitB,gBAAgB7L,EACzC,KAAKic,MAAMxX,IAAgB,OAARA,IAAkBwX,MAAMvX,IAAgB,OAARA,GAAkBiV,EAArE,CAGIjV,EAAM,EACNA,EAAM,EAEDA,EAAM9lB,KAAK2mB,UAChBb,EAAM9lB,KAAK2mB,QAAUoU,EAAcjU,OAEvC9mB,KAAK4lB,oBAAoBmV,GAAiBlV,IAAKA,EAAKC,IAAKA,GACzD,IAAIzF,GAAMtW,SAASqnB,eAAehQ,EAClCphB,MAAKkoB,YAAc7H,EACnBrgB,KAAKm0B,SAAWhvB,SAASkb,EAAI1S,aAAa,YAAa,IACvD3N,KAAK67B,SAAW12B,SAASkb,EAAI1S,aAAa,YAAa,IACvD3N,KAAK6mB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgByT,GAC5ErgB,KAAKqoB,qBACLroB,KAAKgnB,iBAAiB3G,EAAKwF,EAAKC,GAChC9lB,KAAKmoB,kBAAkB9H,EAAK0a,GAC5B/6B,KAAKknB,kBACLlnB,KAAK4oB,eACL5oB,KAAK6oB,yBACL7oB,KAAKkoB,YAAc,KACfloB,KAAKkvB,eACLlvB,KAAKmvB,mBAETnvB,KAAKyjB,iBAAkB,EACvBzjB,KAAKovB,iBAAgB,KAEzB9L,EAAgBpjB,UAAU2mB,cAAgB,SAAU/Z,EAAOuT,GACvD,IAAK,GAAIrf,GAAI,EAAGA,EAAIvB,OAAOwD,KAAK6J,GAAOnM,OAAQK,IACvCvB,OAAOwD,KAAK6J,KACRA,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI8kB,KAC7BzF,EAAInR,aAAa,WAAYpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI8kB,IAAIlZ,YAE9DE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI6kB,KAC7BxF,EAAInR,aAAa,WAAYpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI6kB,IAAIjZ,YAE9DE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI8lB,OAC7BzG,EAAInR,aAAa,aAAcpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI8lB,MAAMla,YAElEE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI+lB,OAC7B1G,EAAInR,aAAa,aAAcpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI+lB,MAAMna,YAElEE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI+pB,UAC7B1K,EAAInR,aAAa,gBAAiBpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAI+pB,SAASne,YAExEE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAIgqB,UAC7B3K,EAAInR,aAAa,gBAAiBpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAIgqB,SAASpe,YAExEE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAIiqB,UAC7B5K,EAAInR,aAAa,gBAAiBpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAIiqB,SAASre,YAExEE,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAIkqB,UAC7B7K,EAAInR,aAAa,gBAAiBpC,EAAMrN,OAAOwD,KAAK6J,GAAO9L,IAAIkqB,SAASte,cAcxF0W,EAAgBpjB,UAAUo9B,YAAc,SAAUlc,EAAI0F,EAAOC,GACzD/mB,KAAKqsB,mBAAqBrsB,KAAKssB,YAAYtsB,KAAK2lB,OAChD,IAAIoV,GAAgB/6B,KAAKitB,gBAAgB7L,EACzCphB,MAAK0jB,cAAe,CACpB,IAAIrD,GAAMtW,SAASqnB,eAAehQ,GAC9BmL,GAAS1gB,MAAO,KAAMvJ,QAAS+d,EAAKmM,cAAc,EACtDxsB,MAAKuN,QAAQ,cAAegf,GAC5BvsB,KAAK4lB,oBAAoBmV,GAAiBjU,MAAOA,EAAOC,MAAOA,IAC/D/mB,KAAKwnB,gBAAgBuT,GACrB/6B,KAAKgyB,kBAAkB+I,GACvB/6B,KAAKkoB,YAAc7H,EACnBrgB,KAAK6mB,eAAgB/Z,OAASga,MAAOiU,EAAcjU,MAAMla,WAAYma,MAAOgU,EAAchU,MAAMna,aAAgByT,GAChHrgB,KAAKinB,kBAAkB5G,EAAK0a,GAC5B/6B,KAAKmoB,kBAAkB9H,EAAK0a,GAC5B/6B,KAAK4oB,eACL5oB,KAAKknB,kBACLqF,EAAK5G,OAAS3lB,KAAKgvB,oBACnBhvB,KAAK0jB,cAAe,EACpB1jB,KAAKuN,QAAQ,aAAcgf,GAC3BvsB,KAAKovB,iBAAgB,IAOzB9L,EAAgBpjB,UAAUqhB,QAAU,WAChCzX,eAAaU,OAAO6R,OAAQ,SAAUrc,KAAK0rB,iBAC3C5iB,eAAa9I,KAAKsC,UAAW,oBAAqB,QAAS,eAAgB,cAC3EtC,KAAKsC,QAAQ6M,gBAAgB,QAC7B,KAAK,GAAInO,GAAI,EAAGA,EAAIhB,KAAKklB,eAAevkB,OAAQK,IAC5ChB,KAAKklB,eAAelkB,GAAGugB,SAE3BvhB,MAAKg9B,iBACLh9B,KAAK2kB,gBAAkB,KACvB3kB,KAAK8uB,eAAiB,KACtB9uB,KAAKkoB,YAAc,KACnBloB,KAAKm6B,QAAU,KACfn6B,KAAKu9B,cAAgB,KACrBv9B,KAAKg7B,kBAAoB,KACzBh7B,KAAKi7B,iBAAmB,KACxBj7B,KAAK4kB,YAAc,KACnB5kB,KAAK41B,WAAa,KAClB51B,KAAK8kB,eAAiB,KACtB9kB,KAAK+kB,oBAAsB,KAC3B/kB,KAAKklB,kBACLllB,KAAKqlB,SAAW,KAChBrlB,KAAKwtB,WAAa,KAClBxtB,KAAK+uB,SAAW,KAChB/uB,KAAKysB,WAAa,KAClBzsB,KAAK8yB,gBAAkB,KACvB9yB,KAAKw9B,mBAAqB,KAC1Bx9B,KAAKqqB,aAAe,KACpBrqB,KAAK0qB,UAAY,KACjB1qB,KAAKumB,MAAQ,KACbvkB,EAAO9B,UAAUqhB,QAAQ/e,KAAKxC,MAC9BA,KAAK+D,gBACL/D,KAAKogB,wBAETkD,EAAgBpjB,UAAU88B,eAAiB,WACvC,KAAOh9B,KAAKsC,QAAQm7B,mBAChBpvB,SAAOrO,KAAKsC,QAAQm7B,mBACpBz9B,KAAK+D,iBAGbuf,EAAgBpjB,UAAU8oB,aAAe,YACd,IAAnBhpB,KAAKuE,UACLwE,YAAU/I,KAAKsC,SAAU,SAGzBwG,eAAa9I,KAAKsC,SAAU,UASpCghB,EAAgBpjB,UAAUw9B,yBAA2B,WACjD19B,KAAK+oB,wBACL/oB,KAAKuxB,iBACLvxB,KAAKsxB,cACL,KAAK,GAAItwB,GAAI,EAAGA,EAAIhB,KAAKsC,QAAQyR,iBAAiB,YAAYpT,OAAQK,IAAK,CACvE,GAAIqf,GAAMrgB,KAAKsC,QAAQyR,iBAAiB,YAAY/S,GAChDmpB,EAAanqB,KAAKitB,gBAAgB5M,EAAIe,GAC1CphB,MAAKinB,kBAAkB5G,EAAK8J,GAC5BnqB,KAAKgnB,iBAAiB3G,EAAK8J,EAAWtE,IAAKsE,EAAWrE,OAG9DxC,EAAgBpjB,UAAUy9B,wBAA0B,SAAUhY,GAC1D3lB,KAAK+8B,YACL/8B,KAAK0O,eAAgBiX,OAAQA,IAAU,GACvC3lB,KAAKwlB,eACDxlB,KAAKumB,OACLvmB,KAAKumB,MAAM/b,SAEfxK,KAAKimB,aACDjmB,KAAKomB,mBACLpmB,KAAKsiB,UAELtiB,KAAKmmB,eACLnmB,KAAKqmB,iBAGb/C,EAAgBpjB,UAAU09B,iBAAmB,SAAUjY,GACnD,GAAIpjB,GAAQvC,MACP6E,oBAAkB8gB,IAAWA,EAAOhlB,OAAS,GAC9CX,KAAKwjB,QAAU,EACfmC,EAAOxX,QAAQ,SAAU8iB,GAChBA,EAAM7P,KACP7e,EAAMqjB,oBAAoBqL,GAAS7P,GAAI,UAAY7e,EAAMihB,QAAQ5W,aACjErK,EAAMihB,QAAUjhB,EAAMihB,QAAU,MAKxCxjB,KAAK69B,uBAAwB,GAUrCva,EAAgBpjB,UAAUwC,kBAAoB,SAAUC,GACpD,GAAIJ,GAAQvC,IACR2C,GAAQgjB,QAAUhjB,EAAQgjB,OAAOhlB,OAAS,GAAKgC,EAAQgjB,OAAO,YAActC,IAC5ErjB,KAAK49B,iBAAiBj7B,EAAQgjB,OAElC,KAAK,GAAI5iB,GAAK,EAAGC,EAAKvD,OAAOwD,KAAKN,GAAUI,EAAKC,EAAGrC,OAAQoC,IAExD,OADWC,EAAGD,IAEV,IAAK,YACD/C,KAAK0O,eAAgBnK,UAAW5B,EAAQ4B,YAAa,GACrDvE,KAAKgpB,cACL,MACJ,KAAK,aACDhpB,KAAK0O,eAAgBqZ,WAAYplB,EAAQolB,aAAc,GACnD/nB,KAAKomB,mBACLpmB,KAAKsoB,uBAET,MACJ,KAAK,gBACDtoB,KAAK0O,eAAgB8Z,cAAe7lB,EAAQ6lB,gBAAiB,GAC7DxoB,KAAK04B,YACL,MACJ,KAAK,gBAED,GADA14B,KAAK0O,eAAgB6c,cAAe5oB,EAAQ4oB,gBAAiB,GACzDvrB,KAAKurB,cACLvrB,KAAKooB,WAAWpoB,KAAK2kB,iBACrB3kB,KAAKsrB,mBAEJ,CAED,IAAK,GADDlE,GAAgBpnB,KAAKsC,QAAQyR,iBAAiB,yCACzC/S,EAAI,EAAGA,EAAIomB,EAAczmB,OAAQK,IAAK,CAC3C,GAAI6S,GAAmC,SAAtB5K,UAAQC,KAAKC,KAAmB,wBAA0B,YACvE7G,EAAU8kB,EAAcpmB,EAC5B8I,gBAAaU,OAAOlI,EAASuR,EAAW7T,KAAKwrB,mBACnB,SAAtBviB,UAAQC,KAAKC,MACbW,eAAaU,OAAOlI,EAAS,aAActC,KAAKyrB,wBAGxDzrB,KAAK6wB,oBAAoB7wB,KAAK2kB,iBAElC,KACJ,KAAK,cACD3kB,KAAK0O,eAAgBya,YAAaxmB,EAAQwmB,cAAe,GACpDnpB,KAAKomB,oBACNpmB,KAAK09B,2BACL19B,KAAKmwB,kBAET,MACJ,KAAK,kBACDnwB,KAAK0O,eAAgBmqB,gBAAiBl2B,EAAQk2B,kBAAmB,GACjE74B,KAAK04B,YACL,MACJ,KAAK,gBACD14B,KAAK0O,eAAgBwgB,cAAevsB,EAAQusB,gBAAiB,GAC7DlvB,KAAKmvB,kBACL,MACJ,KAAK,gBACGnvB,KAAKmmB,eACLnmB,KAAK0O,eAAgByX,cAAexjB,EAAQwjB,gBAAiB,GAC7DnmB,KAAKqmB,iBAGDrmB,KAAKumB,OACLlY,SAAOrO,KAAKumB,MAGpB,MACJ,KAAK,eACDvmB,KAAK0O,eAAgBghB,aAAc/sB,EAAQ+sB,eAAgB,EAC3D,MACJ,KAAK,UACI/sB,EAAQgkB,UAAY3mB,KAAK69B,uBAA0Bl7B,EAAQgjB,OAAO,IAAMhjB,EAAQgjB,OAAOhlB,OAAS,GACjGX,KAAKkmB,kBAAmB,EACxBlmB,KAAK29B,wBAAwBh7B,EAAQgjB,QACrC3lB,KAAKkmB,kBAAmB,GAEjBvjB,EAAQgjB,OAAO,IAAMhjB,EAAQgjB,OAAOhlB,OAM3CX,KAAK69B,uBAAwB,GAL7B79B,KAAKkmB,kBAAmB,EACxBlmB,KAAK29B,wBAAwB39B,KAAK2lB,QAClC3lB,KAAKkmB,kBAAmB,EAK5B,MACJ,KAAK,UACDlmB,KAAKkmB,kBAAmB,EACpBvjB,EAAQgjB,QACR3lB,KAAK29B,wBAAwBh7B,EAAQgjB,QAEzC3lB,KAAK0O,eAAgBiY,QAAShkB,EAAQgkB,UAAW,GACjD3mB,KAAK2kB,mBACL3kB,KAAKynB,eAAiBznB,KAAK2mB,QAC3B3mB,KAAKylB,oBACLzlB,KAAK2lB,OAAOxX,QAAQ,SAAU8iB,GAE1B,GADA1uB,EAAMilB,gBAAgByJ,GAClB1uB,EAAMklB,eAAiBwJ,EAAMnL,KAAOvjB,EAAMklB,eAAkBwJ,EAAMnL,IAAMmL,EAAMnK,MAAQ,CACtF,GAAIY,GAAWnlB,EAAMklB,eAAiBwJ,EAAMnK,KAC5CvkB,GAAMqjB,oBAAoBqL,GAASnL,IAAK4B,EAAW,EAAI,EAAIA,IAC3DnlB,EAAMolB,gBAAgB5d,SAASqnB,eAAeH,EAAM7P,IAAK6P,GAE7D1uB,EAAM0kB,kBAAkBld,SAASqnB,eAAeH,EAAM7P,IAAK6P,GAC3D1uB,EAAMoiB,gBAAgBrV,KAAKvF,SAASqnB,eAAeH,EAAM7P,KACzD7e,EAAMykB,iBAAiBjd,SAASqnB,eAAeH,EAAM7P,IAAK6P,EAAMpL,IAAKoL,EAAMnL,KAC3EvjB,EAAM2lB,YAAcne,SAASqnB,eAAeH,EAAM7P,IAClD7e,EAAM4lB,kBAAkBpe,SAASqnB,eAAeH,EAAM7P,IAAK6P,GAC3D1uB,EAAM2lB,YAAc,OAExBloB,KAAK4oB,eACL5oB,KAAK6oB,yBACL7oB,KAAKkmB,kBAAmB,EACxBlmB,KAAKmwB,oBAWrB7M,EAAgBpjB,UAAUmJ,eAAiB,WACvC,GAAIy0B,IAAa,SACjB,OAAO99B,MAAKsJ,aAAaw0B,IAG7Bxa,EAAgBpjB,UAAUwkB,sBAAwB,SAAUqZ,GACxD,GAAIC,GAAO3hB,OAAO4hB,aAAaC,QAAQl+B,KAAK+H,gBAAkB/H,KAAKsC,QAAQ8e,GAC3E,KAAMvc,oBAAkBm5B,IAAmB,KAATA,IAAkBn5B,oBAAkBk5B,GAAgB,CAClF,GAAII,GAAWt5B,oBAAkBk5B,GAAiCtC,KAAKC,MAAMsC,GAA3BD,EAC9C96B,EAAOxD,OAAOwD,KAAKk7B,EACvBn+B,MAAKo+B,qBAAsB,CAC3B,KAAK,GAAIr7B,GAAK,EAAGs7B,EAASp7B,EAAMF,EAAKs7B,EAAO19B,OAAQoC,IAAM,CACtD,GAAIxC,GAAM89B,EAAOt7B,EACmB,iBAAxBu7B,YAAS/9B,EAAKP,OAAuB6E,oBAAkBy5B,WAAS/9B,EAAKP,QACzEJ,MAAM2+B,QAAQD,WAAS/9B,EAAKP,QAAkB,WAARO,IACtCP,KAAKw+B,YAAYL,EAAQ59B,GAAMP,KAAKO,IACpCP,KAAKO,GAAO49B,EAAQ59B,IAIhCP,KAAKo+B,qBAAsB,IAInC9a,EAAgBpjB,UAAUs+B,YAAc,SAAUC,EAAc9Y,GAU5D,IAAK,GATD+Y,GAAgBD,EAQhBE,EAAS3+B,KACJgB,EAAI,EAAGA,EAAI09B,EAAc/9B,OAAQK,KAR5B,SAAUA,GACpB29B,EAAOf,iBAAiBjY,EACxB,IAAIiZ,GAAajZ,EAAO/N,OAAO,SAAUinB,GAAO,MAAOA,GAAIzd,KAAOsd,EAAc19B,GAAGogB,KAAO,EACrFvc,qBAAkB+5B,KACnBF,EAAc19B,GAAKsM,SAAOsxB,EAAYF,EAAc19B,OAAQ,KAKxDA,IAUhBsiB,EAAgBpjB,UAAU6H,cAAgB,WACtC,MAAO,mBAEX3H,GACI8B,YAAS,IACVohB,EAAgBpjB,UAAW,oBAAiB,IAC/CE,GACI8B,YAAS,IACVohB,EAAgBpjB,UAAW,oBAAiB,IAC/CE,GACI8B,YAAS,IACVohB,EAAgBpjB,UAAW,mBAAgB,IAC9CE,GACI8B,YAAS,IACVohB,EAAgBpjB,UAAW,0BAAuB,IACrDE,GACI8B,YAAS,IACVohB,EAAgBpjB,UAAW,oBAAiB,IAC/CE,GACI8B,WAAS,IACVohB,EAAgBpjB,UAAW,sBAAmB,IACjDE,GACI8B,YAAU,EAAG,KACdohB,EAAgBpjB,UAAW,kBAAe,IAC7CE,GACI8B,WAAS,IACVohB,EAAgBpjB,UAAW,cAAW,IACzCE,GACI8B,YAAS,IACVohB,EAAgBpjB,UAAW,oBAAiB,IAC/CE,GACI8B,WAAS,OACVohB,EAAgBpjB,UAAW,sBAAmB,IACjDE,GACI8B,WAAS,UACVohB,EAAgBpjB,UAAW,aAAU,IACxCE,GACI8B,WAAS,qBACVohB,EAAgBpjB,UAAW,iBAAc,IAC5CE,GACI2iB,gBAAeM,IAChBC,EAAgBpjB,UAAW,aAAU,IACxCE,GACI8B,YAAU,kBACXohB,EAAgBpjB,UAAW,uBAAoB,IAClDE,GACI4iB,WACDM,EAAgBpjB,UAAW,aAAU,IACxCE,GACI4iB,WACDM,EAAgBpjB,UAAW,gBAAa,IAC3CE,GACI4iB,WACDM,EAAgBpjB,UAAW,WAAQ,IACtCE,GACI4iB,WACDM,EAAgBpjB,UAAW,eAAY,IAC1CE,GACI4iB,WACDM,EAAgBpjB,UAAW,kBAAe,IAC7CE,GACI4iB,WACDM,EAAgBpjB,UAAW,aAAU,IACxCE,GACI4iB,WACDM,EAAgBpjB,UAAW,iBAAc,IAC5CE,GACI4iB,WACDM,EAAgBpjB,UAAW,cAAW,IACzCE,GACI4iB,WACDM,EAAgBpjB,UAAW,gBAAa,IAC3CojB,EAAkBljB,GACd6iB,yBACDK,IAELJ,aCx/FE7jB,EAAwC,WACxC,GAAIC,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAChBC,uBAA2BC,QAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIK,KAAKL,GAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,GAE5B,OAAO,UAAUD,EAAGC,GAEhB,QAASO,KAAOC,KAAKC,YAAcV,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEW,UAAkB,OAANV,EAAaC,OAAOU,OAAOX,IAAMO,EAAGG,UAAYV,EAAEU,UAAW,GAAIH,QAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,GAA2HjB,GAAvHkB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOf,OAAOoB,yBAAyBP,EAAQC,GAAOC,CACrH,IAAuB,gBAAZM,UAAoD,kBAArBA,SAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,OACpH,KAAK,GAAIQ,GAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAASzB,EAAIc,EAAWW,MAAIJ,GAAKH,EAAI,EAAIlB,EAAEqB,GAAKH,EAAI,EAAIlB,EAAEe,EAAQC,EAAKK,GAAKrB,EAAEe,EAAQC,KAASK,EAChJ,OAAOH,GAAI,GAAKG,GAAKnB,OAAOwB,eAAeX,EAAQC,EAAKK,GAAIA,IAoBhE,SAAWk+B,GAIPA,EAAgC,WAAI,aAIpCA,EAA8B,SAAI,YACnCA,wBAAwBA,2BAK3B,SAAWC,GAIPA,EAAsB,OAAI,SAI1BA,EAAqB,MAAI,QAIzBA,EAAyB,UAAI,YAI7BA,EAAgC,iBAAI,oBACrCA,kBAAkBA,wBAIjBC,GAA8B,SAAUh9B,GAExC,QAASg9B,KACL,MAAkB,QAAXh9B,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KAiB/D,MAnBAX,GAAU2/B,EAAch9B,GAIxB5B,GACI8B,WAAS,KACV88B,EAAa9+B,UAAW,aAAU,IACrCE,GACI8B,WAAS,KACV88B,EAAa9+B,UAAW,cAAW,IACtCE,GACI8B,WAAS,KACV88B,EAAa9+B,UAAW,sBAAmB,IAC9CE,GACI8B,YAAS,IACV88B,EAAa9+B,UAAW,eAAY,IACvCE,GACI8B,WAAS,KACV88B,EAAa9+B,UAAW,eAAY,IAChC8+B,GACT78B,iBAeE88B,EAA0B,SAAUj9B,GASpC,QAASi9B,GAAS58B,EAASC,GACvB,MAAON,GAAOQ,KAAKxC,KAAMqC,EAASC,IAAYtC,KA+VlD,MAxWAX,GAAU4/B,EAAUj9B,GAWpBi9B,EAAS/+B,UAAU0H,UAAY,WACtB5H,KAAKsC,QAAQ8e,KACdphB,KAAKsC,QAAQ8e,GAAK8d,cAAY,KAAOl/B,KAAK+H,mBASlDk3B,EAAS/+B,UAAU6H,cAAgB,WAC/B,MAAO,YAQXk3B,EAAS/+B,UAAUmJ,eAAiB,WAChC,MAAOrJ,MAAKsJ,kBAEhB21B,EAAS/+B,UAAUqJ,OAAS,WACxBkY,aAAWzhB,KAAKsC,SAAW68B,KAAQ,aAAcC,aAAcp/B,KAAKsC,QAAQ8e,KAC5EphB,KAAKq/B,gBAAkBr/B,KAAK6S,cAAc,MAAQrD,UA7HlC,qBA8HhBxP,KAAKs/B,oBACLt/B,KAAKu/B,eAAev/B,KAAKsD,UACzBtD,KAAKw/B,cACLx/B,KAAKy/B,gBACLz/B,KAAK0/B,YACL1/B,KAAK2/B,yBACL3/B,KAAK4/B,cACL5/B,KAAKsC,QAAQwQ,YAAY9S,KAAKq/B,kBAElCJ,EAAS/+B,UAAUo/B,kBAAoB,WACnC,IAAMz6B,oBAAkB7E,KAAK6D,aAAe,CACxC,GAAIg8B,GAAgB7/B,KAAK6D,YAAY8P,aACf,gBAAlBksB,GAAoD,aAAlBA,IAClC7/B,KAAKsC,QAAQO,UAAU2H,OAnItB,eADF,cAqICxK,KAAKsC,QAAQO,UAAUgE,IAAI,KAAOg5B,MAI9CZ,EAAS/+B,UAAUq/B,eAAiB,SAAUO,EAAQC,OAChC,KAAdA,IAAwBA,EAAY,GACxC,IAAI/8B,GAAIg9B,EACJC,CACAF,KACAE,EAAaF,EAAUhf,OAAOtR,MAAM,MACnCzM,EAAKhD,KAAKsC,QAAQO,WAAW2H,OAAOvI,MAAMe,EAAIi9B,IAE/CH,IACAG,EAAaH,EAAO/e,OAAOtR,MAAM,MAChCuwB,EAAKhgC,KAAKsC,QAAQO,WAAWgE,IAAI5E,MAAM+9B,EAAIC,KAGpDhB,EAAS/+B,UAAUw/B,UAAY,WAC3B1/B,KAAKsC,QAAQO,UAAU7C,KAAKuE,UAAY,MAAQ,UApJ9C,UAsJN06B,EAAS/+B,UAAUs/B,YAAc,WAC7B,IAAM36B,oBAAkB7E,KAAKkgC,OAAS,CAClC,GAAIA,GAAQlgC,KAAKkgC,MAAMvsB,aACT,YAAVusB,GAAgC,UAAVA,GAA+B,cAAVA,GAAmC,qBAAVA,IACpElgC,KAAKsC,QAAQO,UAAU2H,OAAO,iBAAkB,gBAAiB,oBAAqB,4BACtFxK,KAAKsC,QAAQO,UAAUgE,IAAI,WAAaq5B,MAIpDjB,EAAS/+B,UAAUu/B,cAAgB,WAC/Bz/B,KAAKsC,QAAQO,UAAU7C,KAAKiP,QAAU,MAAQ,UAjKhC,uBAmKlBgwB,EAAS/+B,UAAU0/B,YAAc,WAC7B,GACI58B,GADAT,EAAQvC,IAEZA,MAAKmgC,oBACL,KAAK,GAAIj7B,GAAQ,EAAGA,EAAQlF,KAAKoyB,MAAMzxB,OAAQuE,IAAS,CACpD,GAAI8H,GAAOhN,KAAKoyB,MAAMjtB,SAASD,EAAM0H,WAAY,KAC7CwzB,EAAepgC,KAAK6S,cAAc,MAAQrD,UAAW6wB,+BACzD,IAAKrgC,KAAKigB,SAwBNjgB,KAAKsgC,kBAAkBp7B,GAAO,EAAOk7B,OAxBrB,CAChB,GAAIG,GAAkBvgC,KAAK6S,cAAc,OAASrD,UAlL5C,sBAmLFxC,GAAKwzB,iBACLxgC,KAAKygC,mBAAkB,EAAOzzB,EAAM9H,EAAOq7B,GAE/CH,EAAattB,YAAYytB,EACzB,IAAIG,GAAe1gC,KAAK6S,cAAc,OAASrD,UAtL5C,eAuLCmxB,EAAY3zB,EAAK4zB,OAASC,SAAmB7zB,EAAK4zB,OAAO7f,OAtL5D,QAuLG+f,EAAS9gC,KAAK6S,cAAc,OAASrD,UAAWmxB,GACpDD,GAAa5tB,YAAYguB,GACzBV,EAAattB,YAAY4tB,EACzB,IAAIK,GAAa/gC,KAAK6S,cAAc,OAASrD,UAzL/C,aA0LMxC,GAAKlI,SACL9E,KAAKygC,mBAAkB,EAAMzzB,EAAM9H,EAAO67B,GAE9CX,EAAattB,YAAYiuB,GACrB/zB,EAAK1J,WACJN,EAAKo9B,EAAav9B,WAAWgE,IAAI5E,MAAMe,EAAIgK,EAAK1J,SAASyd,OAAOtR,MAAM,MAEvEzC,EAAKg0B,UACLZ,EAAav9B,UAAUgE,IA5L5B,mBAkMH,GAAImK,IAAc1O,QAAS89B,EAAcl7B,MAAOA,EAChDlF,MAAKuN,QAAQ,mBAAoByD,EAAW,SAAUub,GAAQhqB,EAAM88B,gBAAgBvsB,YAAYyZ,EAAKjqB,aAG7G28B,EAAS/+B,UAAUigC,mBAAqB,WAGpC,IAAK,GAFDc,IAAc,EACdC,GAAiB,EACZh8B,EAAQ,EAAGA,EAAQlF,KAAKoyB,MAAMzxB,OAAQuE,IAAS,CACpD,GAAI8H,GAAOhN,KAAKoyB,MAAMjtB,SAASD,EAAM0H,WAAY,IAC5Cq0B,KACAA,EAAcj0B,EAAKlI,QAAQnE,OAAS,IAAMkE,oBAAkBmI,EAAKlI,UAEjEo8B,IACAA,EAAiBl0B,EAAKwzB,gBAAgB7/B,OAAS,IAAMkE,oBAAkBmI,EAAKlI,UAGrF9E,KAAKsC,QAAQO,UAAU2H,OAAO,iBAAkB,2BAC5Cy2B,IAAgBC,GAChBlhC,KAAKsC,QAAQO,UAAUgE,IAAI,kBAE3Bq6B,IAAmBD,GACnBjhC,KAAKsC,QAAQO,UAAUgE,IAAI,4BAGnCo4B,EAAS/+B,UAAUugC,kBAAoB,SAAUU,EAAWn0B,EAAM9H,EAAO67B,GACrE,GAAIK,KAAephC,KAAK+E,SAAW/E,KAAKqhC,OACpCC,EAAMthC,KAAKuhC,oBAAoBJ,EAAYn0B,EAAKlI,QAAUkI,EAAKwzB,gBAAiBY,EACjE,iBAARE,GACPP,EAAWv6B,UAAY86B,EAGvBrX,SAAOqX,GAAMt0B,KAAMA,EAAMw0B,UAAWt8B,GAASlF,MAAO+gC,IAG5D9B,EAAS/+B,UAAUy/B,uBAAyB,WACxC3/B,KAAKyhC,iBAAmBzhC,KAAKigB,SAAWjgB,KAAKuhC,oBAAoBvhC,KAAKigB,UAAU,GAAS,MAE7Fgf,EAAS/+B,UAAUogC,kBAAoB,SAAUp7B,EAAOw8B,EAAYtB,GAChE,GAAIuB,GAAY3hC,KAAKq/B,gBAAgBtrB,iBAAiB,KAItD,IAHI2tB,GACA1hC,KAAK4hC,kBAAkBD,EAAUx8B,SAAS,EAAQyH,WAAY,MAE9D5M,KAAKigB,SAAU,CACXyhB,EACAC,EAAUx8B,SAAS,EAAQyH,WAAY,KAAK/J,UAAUgE,IA7OvD,mBAgPCu5B,EAAav9B,UAAUgE,IAhPxB,kBAkPH,IAAImG,GAAOhN,KAAKoyB,MAAMjtB,SAASD,EAAM0H,WAAY,IACjDqd,UAAOjqB,KAAKyhC,kBAAmBz0B,KAAMA,EAAMw0B,UAAWt8B,GAASlF,KAAM,mBAAqBA,KAAKsC,QAAQ8e,GAAK,oBAAsBphB,KAAK4pB,kBAAmB8X,EAAaC,EAAUx8B,SAAS,EAAQyH,WAAY,KAAOwzB,GAEzNpgC,KAAKogB,wBAET6e,EAAS/+B,UAAU0hC,kBAAoB,SAAUvhB,GAC7CA,EAAIxd,UAAU2H,OAxPP,kBA0PP,KAAK,GADDq3B,GAAaxhB,EAAIod,kBACZz8B,EAAI,EAAGA,EAAIqf,EAAI8G,kBAAmBnmB,IACvC6gC,EAAWr3B,UAWnBy0B,EAAS/+B,UAAUqhC,oBAAsB,SAAUthB,EAAUmhB,GAEzD,OADmB,KAAfA,IAAyBA,GAAa,GAClB,gBAAbnhB,GAAuB,CAC9B,GAAInb,GAAU,EACd,KACI,GAAIyb,GAAU5Q,SAAOsQ,EACjBM,IAEAzb,EAA8B,WAApByb,EAAQuJ,QAAuBvJ,EAAQ/a,UAAY+a,EAAQU,UACrEmgB,GAAa,GAGbt8B,EAAUmb,EAGlB,MAAO3V,GACHxF,EAAUmb,EAEd,MAAOmhB,GAAat8B,EAAUoc,UAAQpc,GAItC,MAAOoc,WAAQjB,IAGvBgf,EAAS/+B,UAAU4hC,mBAAqB,WAEpC,IAAK,GADDH,GAAY3hC,KAAKq/B,gBAAgBtrB,iBAAiB,MAC7C/S,EAAI,EAAGA,EAAI2gC,EAAUhhC,OAAQK,IAClCwJ,SAAOm3B,EAAUx8B,SAASnE,EAAE4L,WAAY,OAGhDqyB,EAAS/+B,UAAU6hC,wBAA0B,WACzC,GAAIC,IAxSF,QAwSqB,iBAAkB,gBAAiB,YAAa,SAAU,oBAC7E,2BA1SU,qBADL,eADF,aA6SPl5B,gBAAa9I,KAAKsC,SAAU0/B,IAEhC/C,EAAS/+B,UAAU+hC,cAAgB,WAC3BjiC,KAAK+E,SACL/E,KAAK+D,eAAe,oBAExB,KAAK,GAAI/C,GAAI,EAAGA,EAAIhB,KAAKoyB,MAAMzxB,OAAQK,IACnChB,KAAKsgC,kBAAkBt/B,GAAG,IAGlCi+B,EAAS/+B,UAAUqhB,QAAU,WACzBvf,EAAO9B,UAAUqhB,QAAQ/e,KAAKxC,MAE9BA,KAAK8hC,qBACL9hC,KAAKsC,QAAQ6M,gBAAgB,QAC7BnP,KAAKsC,QAAQ6M,gBAAgB,cAC7BnP,KAAK+D,gBACD/D,KAAKq/B,iBACL70B,SAAOxK,KAAKq/B,iBAEhBr/B,KAAKq/B,gBAAkB,KACvBr/B,KAAK+hC,2BAET9C,EAAS/+B,UAAUgiC,YAAc,SAAUv/B,EAASw/B,EAAcj9B,EAAO8H,GACrE,GAAIhK,GAAIg9B,EAAIoC,EAAIC,EAEZvB,EACAC,EACAuB,EAHAC,EAAuBviC,KAAKq/B,gBAAgBtrB,iBAAiB,KAIjE,QAAQpR,GACJ,IAAK,SACDm+B,EAASyB,EAAqBp9B,SAASD,EAAM0H,WAAY,KAAKiC,cAAc,UAChD,KAAxBszB,EAAavB,SACZ59B,EAAK89B,EAAOj+B,WAAW2H,OAAOvI,MAAMe,EAAIm/B,EAAavB,OAAO7f,OAAOtR,MAAM,MAE1D,KAAhBzC,EAAK4zB,SACJZ,EAAKc,EAAOj+B,WAAWgE,IAAI5E,MAAM+9B,EAAIhgC,KAAKoyB,MAAMjtB,SAASD,EAAM0H,WAAY,KAAKg0B,OAAO7f,OAAOtR,MAAM,KAEzG,MACJ,KAAK,WACDsxB,EAAawB,EAAqBp9B,SAASD,EAAM0H,WAAY,KAAKiC,cAAc,eACrErI,UAAY,GACvBxG,KAAKygC,mBAAkB,EAAMzzB,EAAM9H,EAAO67B,GAC1C/gC,KAAKmgC,oBACL,MACJ,KAAK,mBACDmC,EAAcC,EAAqBp9B,SAASD,EAAM0H,WAAY,KAAKiC,cAAc,wBACrErI,UAAY,GACxBxG,KAAKygC,mBAAkB,EAAOzzB,EAAM9H,EAAOo9B,GAC3CtiC,KAAKmgC,oBACL,MACJ,KAAK,WACDoC,EAAqBp9B,SAASD,EAAM0H,WAAY,KAAK/J,UAAU7C,KAAKoyB,MAAMjtB,SAASD,EAAM0H,WAAY,KAAKo0B,SAAW,MAAQ,UA7V9H,kBA8VC,MACJ,KAAK,WAC6B,KAA1BmB,EAAa7+B,WACZ8+B,EAAKG,EAAqBp9B,SAASD,EAAM0H,WAAY,KAAK/J,WAAW2H,OAAOvI,MAAMmgC,EAAID,EAAa7+B,SAASyd,OAAOtR,MAAM,MAExG,KAAlBzC,EAAK1J,WACJ++B,EAAKE,EAAqBp9B,SAASD,EAAM0H,WAAY,KAAK/J,WAAWgE,IAAI5E,MAAMogC,EAAIr1B,EAAK1J,SAASyd,OAAOtR,MAAM,QAa/HwvB,EAAS/+B,UAAUwC,kBAAoB,SAAUC,EAASC,GACtD,IAAK,GAAIG,GAAK,EAAGC,EAAKvD,OAAOwD,KAAKN,GAAUI,EAAKC,EAAGrC,OAAQoC,IAExD,OADWC,EAAGD,IAEV,IAAK,QACD,GAAInD,MAAM2+B,QAAQ57B,EAAQyvB,OACtBpyB,KAAK8hC,qBACL9hC,KAAK4/B,kBAIL,KAAK,GADD4C,GAAa/iC,OAAOwD,KAAKN,EAAQyvB,OAAOzxB,OACnCK,EAAI,EAAGA,EAAIwhC,EAAYxhC,IAE5B,IAAK,GADDyhC,GAAiBt9B,SAAS1F,OAAOwD,KAAKN,EAAQyvB,OAAOpxB,GAAI,IACpDqE,EAAI,EAAGA,EAAI5F,OAAOwD,KAAKN,EAAQyvB,MAAMqQ,IAAiB9hC,OAAQ0E,IAAK,CACxE,GAAIC,GAAW7F,OAAOwD,KAAKN,EAAQyvB,MAAMqQ,IAAiBp9B,EAC1DrF,MAAKkiC,YAAY58B,EAAU1C,EAAQwvB,MAAMqQ,GAAiBA,EAAgB9/B,EAAQyvB,MAAMqQ,IAIpG,KACJ,KAAK,cACDziC,KAAKs/B,mBACL,MACJ,KAAK,QACDt/B,KAAKw/B,aACL,MACJ,KAAK,YACDx/B,KAAK0/B,WACL,MACJ,KAAK,WACD1/B,KAAKu/B,eAAe58B,EAAQW,SAAUV,EAAQU,SAC9C,MACJ,KAAK,UACDtD,KAAKsC,QAAQO,UAAU7C,KAAKiP,QAAU,MAAQ,UApZ5C,qBAqZF,MACJ,KAAK,WACDjP,KAAK2/B,yBACL3/B,KAAKiiC,kBAKrB7hC,GACI8B,WAAS48B,sBAAoB4D,WAC9BzD,EAAS/+B,UAAW,kBAAe,IACtCE,GACI8B,WAAS68B,gBAAc4D,QACxB1D,EAAS/+B,UAAW,YAAS,IAChCE,GACI2iB,gBAAeic,IAChBC,EAAS/+B,UAAW,YAAS,IAChCE,GACI8B,WAAS,KACV+8B,EAAS/+B,UAAW,eAAY,IACnCE,GACI8B,YAAS,IACV+8B,EAAS/+B,UAAW,cAAW,IAClCE,GACI8B,WAAS,KACV+8B,EAAS/+B,UAAW,eAAY,IACnCE,GACI4iB,WACDic,EAAS/+B,UAAW,cAAW,IAClCE,GACI4iB,WACDic,EAAS/+B,UAAW,uBAAoB,IAC3C++B,EAAW7+B,GACP6iB,yBACDgc,IAEL/b"}
|