@syncfusion/ej2-layouts 33.1.47 → 33.2.3

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.
@@ -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 _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"}
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.documentClickHandler = this.onDocumentClick.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.documentClickHandler);\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.documentClickHandler);\n this.documentClickHandler = null;\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","documentClickHandler","onDocumentClick","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","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,EA8zEX,MAx0EAlD,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,qBAAuB1I,KAAK2I,gBAAgBR,KAAKnI,MACtDA,KAAK4I,QAAU5I,KAAKsC,QAAQuG,WAAU,GACtC7I,KAAK8I,cAAgB9I,KAAKsC,QAAQyG,cAClCC,eAAahJ,KAAK4I,UAAW,YAAa,QAAS1H,GACnD,IAAI2C,GAAmC,eAArB7D,KAAK6D,YAxRT,wBACF,qBAwRZoF,aAAUjJ,KAAKsC,SAAUuB,EACzB,IACIqF,GAAgB,SADTC,UAAQC,KAAKC,KACM,OAAS,EACvCrJ,MAAKqD,YAAYrD,KAAKsC,QAAS4G,GAC3BC,UAAQG,UACRL,YAAUjJ,KAAKsC,SA/QT,qBAkRdF,EAASlC,UAAUqJ,eAAiB,WAChC,MAAOvJ,MAAKwJ,cAAc,kBAQ9BpH,EAASlC,UAAU6H,cAAgB,WAC/B,MAAO,YAQX3F,EAASlC,UAAUuJ,OAAS,WACxBzJ,KAAK0J,sBACL1J,KAAKqD,YAAYrD,KAAKsC,QAAStC,KAAKsD,UACpCtD,KAAKuD,UAAUvD,KAAKwD,SACpBxD,KAAK2J,aAAa3J,KAAK4J,UAAU5J,KAAKsC,SAAUtC,KAAK6J,SAAS7J,KAAKsC,UACnEtC,KAAKmE,gBAAgBnE,KAAKsC,SAC1BtC,KAAKoE,aAAapE,KAAKsC,SACvBtC,KAAKqE,qBACLrE,KAAK8J,kBACL9J,KAAKsE,OAAOtE,KAAKuE,WACbvE,KAAK+J,oBACL/J,KAAKyD,iBAETzD,KAAK0H,cAAe,EACpB1H,KAAKwE,cACLxE,KAAK0H,cAAe,EACpBsC,eAAanD,IAAIoD,SAAU,mBAAoBjK,KAAK0I,sBACpD1I,KAAKkK,iBACLlK,KAAKsC,QAAQ6H,cAAcC,YAAYC,iBAAiB,SAAUrK,KAAKiI,oBAAoB,GAC3F+B,eAAanD,IAAI7G,KAAKsC,QAAS,UAAWtC,KAAKsK,OAAQtK,OAE3DoC,EAASlC,UAAUyI,gBAAkB,SAAU4B,GACtCA,EAAEjK,OAAOuC,UAAUC,SAASxB,IAAeuD,oBAAkB7E,KAAKwK,oBACnExK,KAAKwK,iBAAiB3H,UAAU4H,OA9TtB,qBA+TVzK,KAAKwK,iBAAiB3H,UAAU4H,OA9TrB,wBAiUnBrI,EAASlC,UAAUwK,cAAgB,SAAUH,GACzC,GAAII,GAAmC,eAArB3K,KAAK6D,YAA+B7D,KAAK4K,aAAanE,YAAczG,KAAK4K,aAAalE,aACpGmE,EAAoC,eAArB7K,KAAK6D,YAA+B7D,KAAK8K,SAASrE,YAAczG,KAAK8K,SAASpE,aAC7FqE,EAAelG,oBAAkB7E,KAAK2D,eAlT3B,EAkT+D3D,KAAK2D,aACnF,IAAK3D,KAAK4K,aAAa1E,MAAMC,UAAU6E,QAAQ,KAAO,GAAKhL,KAAK4K,aAAa1E,MAAMC,UAAU6E,QAAQ,KAAO,GAAKhL,KAAK8K,SAAS5E,MAAMC,UAAU6E,QAAQ,KAAO,EAAI,CAC9J,GAAIC,GAAoBjL,KAAKkL,oBAAoBlL,KAAK4K,cAClDO,EAAgBnL,KAAKkL,oBAAoBlL,KAAK8K,SAClD9K,MAAKoL,aAAeH,EAAoBE,EACxCnL,KAAKqL,WAAarL,KAAKsL,yBAAyBtL,KAAKoL,aAAe,KACrD,YAAXb,EAAEgB,MAAwB1G,oBAAkB0F,EAAEiB,YAC3B,KAAdjB,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBX,EAAe,GAC1D7K,KAAKyL,cAAczL,KAAK8D,aAAa9D,KAAK0L,eAAeC,KACtD3L,KAAKsL,yBAA0BH,EAAgB,EAAK,MACxDnL,KAAK4K,aAAa1E,MAAMC,UAAa8E,EAAoB,EAAK,IAC9DjL,KAAK8K,SAAS5E,MAAMC,UAAagF,EAAgB,EAAK,MAElC,KAAdZ,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBb,EAAc,GAC9D3K,KAAKyL,cAAczL,KAAK8D,aAAa9D,KAAK4L,eAAeD,KACtD3L,KAAKsL,yBAA0BL,EAAoB,EAAK,OAC5DjL,KAAK4K,aAAa1E,MAAMC,UAAa8E,EAAoB,EAAK,IAC9DjL,KAAK8K,SAAS5E,MAAMC,UAAagF,EAAgB,EAAK,UAK9DnL,MAAKqL,WAAmC,eAArBrL,KAAK6D,YAAgC7D,KAAK4K,aAAanE,YAAczG,KAAK8K,SAASrE,YAClGzG,KAAK4K,aAAalE,aAAe1G,KAAK8K,SAASpE,aACpC,YAAX6D,EAAEgB,MAAwB1G,oBAAkB0F,EAAEiB,YAC3B,KAAdjB,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBX,EAAe,GAC1D7K,KAAKyL,cAAczL,KAAK8D,aAAa9D,KAAK0L,eAAeC,KAAQd,EAAeE,GACjF/K,KAAK6L,qBACL7L,KAAK4K,aAAa1E,MAAMC,UAAawE,EAAcI,EAAgB,KACnE/K,KAAK8K,SAAS5E,MAAMC,UAAa0E,EAAeE,EAAgB,MAC3DF,EAAeE,EAAgB,OAEhB,KAAdR,EAAEiB,SAAiC,KAAdjB,EAAEiB,UAAoBb,EAAc,GAC9D3K,KAAKyL,cAAczL,KAAK8D,aAAa9D,KAAK4L,eAAeD,KAAQhB,EAAcI,IAChF/K,KAAK6L,qBACL7L,KAAK4K,aAAa1E,MAAMC,UAAawE,EAAcI,EAAgB,MAC9DJ,EAAcI,EAAgB,KACnC/K,KAAK8K,SAAS5E,MAAMC,UAAa0E,EAAeE,EAAgB,QAKhF3I,EAASlC,UAAUoK,OAAS,SAAUwB,GAClC,GAAI9L,KAAKkE,SAASvD,OAAS,EAAG,CAC1B,GAAIuE,GAAQlF,KAAK+L,kBAAkB/L,KAAKwK,kBACpCwB,EAAsBhM,KAAK4K,aAAa/H,UAAUC,SAnW9C,eAoWJmJ,EAAqBjM,KAAK4K,aAAa/H,UAAUC,SArW/C,cAsWFoJ,EAAsBlM,KAAK8K,SAASjI,UAAUC,SArW1C,gBAsWmB,eAArB9C,KAAK6D,aAAkD,KAAlBiI,EAAMN,SAAyC,eAArBxL,KAAK6D,aACpD,KAAlBiI,EAAMN,SACgB,eAArBxL,KAAK6D,aAAkD,KAAlBiI,EAAMN,SAAyC,eAArBxL,KAAK6D,aAAkD,KAAlBiI,EAAMN,YACtGS,IAAuBC,IAAwBF,GAAuB,IAAyBE,IACpGjC,SAASkC,cAActJ,UAAUC,SAASxB,IAAetB,KAAK8D,aAAaoB,GAAOkH,WAClFpM,KAAK8D,aAAaoB,EAAQ,GAAGkH,WAC7BN,EAAMO,iBACNrM,KAAK0K,cAAcoB,GACnB9L,KAAKsM,gBAAgBR,IAEE,KAAlBA,EAAMN,SAAkBxL,KAAK8D,aAAaoB,GAAOqH,aACtDtC,SAASkC,cAActJ,UAAUC,SAASxB,IAActB,KAAKwK,iBAAiB3H,UAAUC,SA/XjF,wBAgYF9C,KAAK4K,aAAa/H,UAAUC,SAlX7B,gBAuXA9C,KAAKwM,OAAOtH,GACZ+D,YAAUjJ,KAAKwK,kBAtYZ,wBAiYHxK,KAAKyM,SAASvH,GACd+D,YAAUjJ,KAAKwK,kBAlYZ,0BA2YnBpI,EAASlC,UAAUuL,cAAgB,SAAUiB,GACzC,GAAI7H,oBAAkB6H,GAClB,MAAO,EAEX,IAAIC,GAAe3M,KAAK4M,qBAAqBF,EAASG,WAKtD,OAJIH,GAAS1B,QAAQ,KAAO,IACxB2B,EAAe3M,KAAKsL,yBAAyBoB,IAEvC1M,KAAK4M,qBAAqB,EAAeC,aAQvDzK,EAASlC,UAAU4M,eAAiB,SAAUC,GAC1C,GAAI/M,KAAKgN,oBAAqB,CAC1B,GAAIC,GAAOC,qBAAmBC,iBAC1BC,GACAC,QAAQ,EACRC,OAAQ,KAEZC,UAAON,EAAMA,EAAMG,GACnBpN,KAAKwN,QAAQ,qBAAsBP,GAC/BA,EAAKI,SAAWxI,oBAAkBoI,EAAKK,QACvCP,EAAQE,EAAKK,OAAOP,GAEdE,EAAKI,SACXN,EAAQG,qBAAmBO,eAAeR,EAAMF,IAGxD,MAAOA,IAEX3K,EAASlC,UAAUwJ,oBAAsB,WAIrC,IAAK,GAHDgE,GACAX,EAEKY,EAAY,EAAGA,EAAY3N,KAAKuH,uBAAuB5G,OAAQgN,IACpEZ,EAAQ/M,KAAKsC,QAAQsL,aAAa5N,KAAKuH,uBAAuBoG,IACzD9I,oBAAkBkI,KAGnB/M,KAFA0N,EAAM1N,KAAK6N,iBAAiB7N,KAAKuH,uBAAuBoG,KAE5CZ,EAIpB,KAAK,GAAIe,GAAY,EAAGA,EAAY9N,KAAKsC,QAAQyL,SAASpN,OAAQmN,IAC9D,IAAK,GAAIE,GAAW,EAAGA,EAAWhO,KAAKsH,oBAAoB3G,OAAQqN,IAE/D,GADAjB,EAAQ/M,KAAKsC,QAAQyL,SAASD,GAAWF,aAAa5N,KAAKsH,oBAAoB0G,KAC1EnJ,oBAAkBkI,GAAQ,CAE3BA,EAAiB,iBADjBW,EAAM1N,KAAK6N,iBAAiB7N,KAAKsH,oBAAoB0G,MACX,cAARN,EAAkC,SAAVX,EAAoBA,EAC1ElI,oBAAkB7E,KAAK8D,aAAagK,MACpC9N,KAAK8D,aAAagK,IACdvH,KAAM,GACNoF,IAAK,KACLsC,IAAK,KACLnJ,QAAS,GACTsH,WAAW,EACXG,aAAa,EACb1G,WAAW,GAInB,IAAIqI,GAAUlO,KAAK8D,aAAagK,GAAWJ,EAC/B,eAARA,GAA+B,gBAARA,GAAiC,cAARA,IAEhD1N,KAAK8D,aAAagK,GAAWJ,GAAOX,IAEpClI,oBAAkBqJ,IAAwB,KAAZA,KAE9BlO,KAAK8D,aAAagK,GAAWJ,GAAOX,KAMxD3K,EAASlC,UAAU8D,oBAAsB,cAClCmK,MAAM3L,KAAKxC,KAAKsC,QAAQyL,UAAUK,QAAQ,SAAUC,GACnDC,SAAOD,KAEXrO,KAAKuO,eAETnM,EAASlC,UAAU4J,gBAAkB,WAajC,IAAK,GAZD0E,GAAaxO,KAAKkE,SAASvD,OAC3B8N,KACAC,GACAnI,KAAM,GACNoF,IAAK,KACLsC,IAAK,KACLnJ,QAAS,GACTsH,WAAW,EACXvG,WAAW,EACX0G,aAAa,EACbjJ,SAAU,IAELtC,EAAI,EAAGA,EAAIwN,EAAYxN,IACxB6D,oBAAkB7E,KAAK8D,aAAa9C,IACpCyN,EAAezN,GAAK0N,EAGpBD,EAAezN,GAAKhB,KAAK8D,aAAa9C,EAG9ChB,MAAK2O,eAAgB7K,aAAgB2K,IAAkB,IAE3DrM,EAASlC,UAAU0O,WAAa,SAAUd,EAAWe,GACjD,MAAQ7O,MAAKiE,QAAQ6J,GAAWgB,cAAc,qBAA6BD,IAE/EzM,EAASlC,UAAU2N,iBAAmB,SAAUkB,GAC5C,MAAOA,GAAUZ,MAAMY,EAAUC,YAAY,KAAO,IAExD5M,EAASlC,UAAUoE,OAAS,SAAU2K,GAC9BA,EACAhG,YAAUjJ,KAAKsC,SA1fjB,SA6fE0G,eAAahJ,KAAKsC,SA7fpB,UAggBNF,EAASlC,UAAUuD,eAAiB,WAChCzD,KAAKkE,SAAWlE,KAAKkE,SAASgL,UAC9BlP,KAAKiE,QAAUjE,KAAKiE,QAAQiL,UAC5BjG,YAAUjJ,KAAKiE,QAAQjE,KAAKiE,QAAQtD,OAAS,IAtftC,cAufPqI,eAAahJ,KAAKiE,QAAQ,IAvfnB,cAwfPjE,KAAK2O,eAAgB7K,aAAgB9D,KAAK8D,aAAaoL,YAAa,GAChElP,KAAK+J,mBACL/J,KAAKsC,QAAQ6M,aAAa,MAAO,OAGjCnP,KAAKsC,QAAQ8M,gBAAgB,QAGrChN,EAASlC,UAAUgD,gBAAkB,SAAUZ,EAASiE,EAAMjB,GAC1D,GAAIY,GAAqB,UAAbZ,GAAyBlC,MAASiM,aAAW9I,KAAYpD,OAAUkM,aAAW9I,GAC1F+I,qBAAkBhN,EAAS4D,IAE/B9D,EAASlC,UAAUmE,mBAAqB,WACpC,IAAK,GAAIa,GAAQ,EAAGA,EAAQlF,KAAKkE,SAASvD,OAAQuE,IACrB,eAArBlF,KAAK6D,YACL7D,KAAKqH,gBAAgBkI,KAAKvP,KAAKkE,SAASgB,GAAOsK,wBAAwBpM,OAGvEpD,KAAKqH,gBAAgBkI,KAAKvP,KAAKkE,SAASgB,GAAOsK,wBAAwBrM,SAInFf,EAASlC,UAAUmD,YAAc,SAAUf,EAASmN,GAC5CA,GACAxG,YAAU3G,GAAUmN,EAAUC,MAAMD,EAAUzE,QAAQ,MAAQ,EAAI,IAAM,OAGhF5I,EAASlC,UAAUyP,YAAc,SAAUrP,GACvC2I,YAAU2G,SAAO,IAAMpO,EAAYlB,IApiBxB,mBAsiBf8B,EAASlC,UAAU2P,YAAc,SAAUvP,IAClCuE,oBAAkB7E,KAAK4K,eAAiB5K,KAAK4K,aAAa/H,UAAUC,SAxhB5D,iBAyhBR+B,oBAAkB7E,KAAK8K,WAAa9K,KAAK8K,SAASjI,UAAUC,SAzhBpD,gBA0hBTkG,eAAa4G,SAAO,IAAMpO,EAAYlB,IAziB/B,mBA4iBf8B,EAASlC,UAAUyF,eAAiB,SAAUT,EAAOQ,GACjD,GAAIoI,GAAa5I,IAAWlF,KAAKiE,QAAe,OAAKiB,EAAQ,EAAKA,EAC9DlE,EAAIkE,CACR8E,gBAAaS,OAAOzK,KAAKiE,QAAQ6J,GAAY,YAAa9N,KAAK8P,aAC3DpK,GACAsE,eAAanD,IAAI7G,KAAKiE,QAAQ6J,GAAY,YAAa9N,KAAK8P,YAAa9P,MACrEA,KAAK+P,gBACL/P,KAAK6P,YAAY7P,KAAKiE,QAAQ6J,IAC9B9E,eAAa4G,SAAO,IAAMpO,EAAYxB,KAAKiE,QAAQ6J,KApjBhD,kBAqjBH9N,KAAKiE,QAAQ6J,GAAWjL,UAAUgE,IAxjB9B,yBAyjBA3B,IAAWlF,KAAKiE,QAAe,OAC/BjE,KAAKkE,SAASgB,GAAOrC,UAAUgE,IAxiB9B,eA2iBD7G,KAAKkE,SAAS4J,GAAWjL,UAAUgE,IA3iBlC,eA6iBL7G,KAAKgQ,qBAAqBhP,MAI9BhB,KAAKgQ,qBAAqBhP,GAC1BhB,KAAK2P,YAAY3P,KAAKiE,QAAQ6J,IAC9B9N,KAAKiE,QAAQ6J,GAAWjL,UAAU4H,OArkB1B,yBAskBJvF,IAAWlF,KAAKiE,QAAe,OAC/BjE,KAAKkE,SAASgB,GAAOrC,UAAU4H,OArjB1B,eAwjBLzK,KAAKkE,SAAS4J,GAAWjL,UAAU4H,OAxjB9B,iBA4jBjBrI,EAASlC,UAAU0F,uBAAyB,SAAUV,GAClD,GAAI4I,GAAY5I,IAAWlF,KAAKiE,eAAmBiB,EAAQ,EAAKA,EAC5D+K,EAA+B,eAArBjQ,KAAK6D,YACb7D,KAAK4O,WAAWd,EAAWrM,GAAczB,KAAK4O,WAAWd,EAAWpM,GACtEwO,EAA+B,eAArBlQ,KAAK6D,YACb7D,KAAK4O,WAAWd,EAzkBZ,iBAykBsC9N,KAAK4O,WAAWd,EAAWnM,EAC3E3B,MAAKmQ,gBAAgBnQ,KAAKkE,SAASgB,GAAQA,GAC3ClF,KAAKoQ,oBAAoBtC,EAAWoC,EAAQD,IAEhD7N,EAASlC,UAAUmQ,cAAgB,SAAUC,EAAUC,GACnD,MAAOC,aAAU,IAAMD,EAAOvQ,KAAKiE,QAAQqM,IAAW,IAE1DlO,EAASlC,UAAUuQ,kBAAoB,SAAUvL,EAAOmL,EAAeK,GACnE,IAAK7L,oBAAkBK,GAAQ,CAC3B,GACIyL,GAAgBzL,IAAUlF,KAAKiE,QAAQtD,OACvC2P,EAAWK,EAAezL,EAAQ,EAAIA,IACrCyL,GAAgB3Q,KAAKkE,SAASgB,EAAQ,GAAGrC,UAAUC,SA/kBhD,gBA+kBqF,IAAVoC,EACnElF,KAAKqQ,cAAcC,EAAW,EAAGI,GAGjC,EAAiB1Q,KAAKqQ,cAAcC,EAAUI,GAAgB1Q,KAAKqQ,cAAcC,EAAUD,IAEjGO,UAGlBxO,EAASlC,UAAUsE,YAAc,SAAUU,GACvC,GAAI3C,GAAQvC,IACZ,IAAK6E,oBAAkBK,KAAUlF,KAAK8D,aAAaoB,GAAOW,YACnDhB,oBAAkB7E,KAAKkE,SAASgB,GAAOrC,UAAUC,SA3lB5C,gBA0lBZ,CAKA,GADA9C,KAAK2H,YAAa,EACb9C,oBAAkBK,GA4ClB,CACD,IAAS2L,EAAI,EAAGA,EAAI7Q,KAAKkE,SAASvD,OAAQkQ,KACjChM,oBAAkB7E,KAAK8D,aAAa+M,KAAO7Q,KAAK8D,aAAa+M,GAAGhL,WACjE7F,KAAKyQ,kBAAkBI,EAAG7Q,KAAK8Q,eAAeT,cAAerQ,KAAK8Q,eAAeJ,aAGzF,KAAK,GAAIG,GAAI7Q,KAAKkE,SAASvD,OAAS,EAAGkQ,GAAK,EAAGA,IAC3C,IAAKhM,oBAAkB7E,KAAK8D,aAAa+M,KAAO7Q,KAAK8D,aAAa+M,GAAGhL,YAChE7F,KAAKkE,SAAS2M,GAAGhO,UAAUC,SAnpB5B,eAmpBqD,CACrD,GAAIuN,GAAqC,eAArBrQ,KAAK6D,YA1pB3B,gBA0pBwElC,CAC5D,KAANkP,IACIE,EAAY/Q,KAAKqQ,cAAcQ,EAAI,EAAGR,IAChCO,QAET5Q,KAAK8K,SAASjI,UAAUC,SAzpB7B,iBA0pBQiO,EAAY/Q,KAAKqQ,cAAcQ,EAAI,EAAGR,IAChCO,aA5DK,CAC3B5Q,KAAK0H,cAAe,CACpB,IAAIqJ,OAAY,GACZJ,EAAgBzL,IAAUlF,KAAKiE,QAAQtD,OACvC2P,EAAWK,EAAezL,EAAQ,EAAIA,EAQtC8L,GAAY1Q,OANZyQ,GADCJ,GAAgB3Q,KAAKkE,SAASgB,EAAQ,GAAGrC,UAAUC,SApmBhD,gBAomBqF,IAAVoC,EACnElF,KAAKqQ,cAAcC,EAAW,EAAGtQ,KAAK8Q,eAAeJ,cAGrD,EAAiB1Q,KAAKqQ,cAAcC,EAAUtQ,KAAK8Q,eAAeJ,cAC1E1Q,KAAKqQ,cAAcC,EAAUtQ,KAAK8Q,eAAeT,gBAGrDY,EAAYjR,KAAKkR,aAAaF,EAClChR,MAAKwN,QAAQ,iBAAkByD,EAAW,SAAUE,GAChD,IAAKA,EAAmB9D,OAAQ,CAC5B,GAAI+D,KACJA,GAAe,GAAKlM,CAEpB,KAAK,GADDG,GAAI,EACCrE,EAAI,EAAGA,EAAIuB,EAAM2B,SAASvD,OAAQK,IACnCuB,EAAM2B,SAASlD,GAAG6B,UAAUC,SAnnBpC,iBAonBQsO,EAAe/L,GAAKrE,EACpBqE,IAGR+L,GAAiBA,EAAeC,OAChC9O,EAAMkO,kBAAkBvL,EAAO3C,EAAMuO,eAAeT,cAAe9N,EAAMuO,eAAeJ,aACxF,KAAS1P,EAAI,EAAGA,EAAIoQ,EAAezQ,OAAQK,IAClCuB,EAAM2B,SAASkN,EAAepQ,IAAI6B,UAAUC,SA3nBrD,gBA4nBQP,EAAMkO,kBAAkBW,EAAepQ,GAAIuB,EAAMuO,eAAeT,cAAe9N,EAAMuO,eAAeJ,aAG5G,KAAS1P,EAAIoQ,EAAezQ,OAAQK,EAAI,EAAGA,IACvC,IAAKuB,EAAM2B,SAASkN,EAAepQ,EAAI,IAAI6B,UAAUC,SAhoBzD,eAgoBkF,CAC1E,GAAI+L,GAActM,EAAMuO,cACxBvO,GAAMkO,kBAAkBW,EAAepQ,EAAI,GAAI6N,EAAYwB,cAAexB,EAAY6B,cAG9F,GAAIY,GAAoB/O,EAAMgP,YAAYP,EAC1CzO,GAAMiL,QAAQ,YAAa8D,GAC3B/O,EAAMmF,cAAe,KAyBjC1H,KAAK2H,YAAa,IAEtBvF,EAASlC,UAAU4Q,aAAe,WAE9B,MADA9Q,MAAKwR,oBAEDnB,cAAqC,eAArBrQ,KAAK6D,YAAgCpC,EAAaC,EAClEgP,aAAoC,aAArB1Q,KAAK6D,YAA8BlC,EA5qB5C,kBA+qBdS,EAASlC,UAAU4F,kBAAoB,SAAUZ,GACxCL,oBAAkB7E,KAAK8D,aAAaoB,KAAYL,oBAAkB7E,KAAK8D,aAAaoB,GAAOW,aACzF7F,KAAKkE,SAASgB,GAAOrC,UAAUC,SA3qB1B,gBA4qBR9C,KAAKyQ,kBAAkBvL,EAAOlF,KAAK8Q,eAAeJ,aAAc1Q,KAAK8Q,eAAeT,gBAG5FjO,EAASlC,UAAUqD,UAAY,SAAUC,GACjCA,EACAwF,eAAahJ,KAAKsC,SA5rBf,cA+rBH2G,YAAUjJ,KAAKsC,SA/rBZ,eAksBXF,EAASlC,UAAUwD,iBAAmB,SAAU6C,GAG5C,IAAK,GAFDkL,GAAY5M,oBAAkB0B,GAAQ,OAASA,EAAO,KACtDmL,EAAiC,eAArB1R,KAAK6D,YA9sBX,yBACA,uBA8sBDqB,EAAQ,EAAGA,EAAQlF,KAAKiE,QAAQtD,OAAQuE,IAAS,CACtD,GAAIyM,GAAWnB,YAAU,IAAMkB,EAAW1R,KAAKsC,SAAS4C,GACpD0M,EAAYpB,YAAU,IAAMhP,EAAYmQ,GAAU,EAC7B,gBAArB3R,KAAK6D,aACL8N,EAASzL,MAAM9C,MAAQqO,EAClB5M,oBAAkB+M,KACnBA,EAAU1L,MAAM9C,MAAQqO,KAI5BE,EAASzL,MAAM/C,OAASsO,EACnB5M,oBAAkB+M,KACnBA,EAAU1L,MAAM/C,OAASsO,MAKzCrP,EAASlC,UAAU0D,kBAAoB,SAAUC,GAC7C,GAAIgO,GAA6B,aAAhBhO,CACjB7D,MAAKsC,QAAQO,UAAU4H,OAAOoH,EAxuBhB,wBACF,uBAwuBZ7R,KAAKsC,QAAQO,UAAUgE,IAAIgL,EAxuBf,sBADE,wBA0uBd,KAAS3M,EAAQ,EAAGA,EAAQlF,KAAKkE,SAASvD,OAAQuE,IAC9ClF,KAAKkE,SAASgB,GAAOrC,UAAU4H,OAAOoH,EAAazQ,EAAeC,GAClErB,KAAKkE,SAASgB,GAAOrC,UAAUgE,IAAIgL,EAAaxQ,EAAeD,EAEnE,KAAK,GAAI8D,GAAQ,EAAGA,EAAQlF,KAAKiE,QAAQtD,OAAQuE,IAC7CoJ,SAAOtO,KAAKiE,QAAQiB,GAExBlF,MAAKiE,WACLjE,KAAKoE,aAAapE,KAAKsC,UAE3BF,EAASlC,UAAU4R,eAAiB,SAAUC,EAAYC,GAEtD,MADchS,MAAKiS,aAAaF,EAAWhJ,cAAcgF,UAAUiE,IAGvE5P,EAASlC,UAAU+R,aAAe,SAAUC,GAExC,IAAK,GADDC,MACKnR,EAAI,EAAGA,EAAIkR,EAAWvR,OAAQK,IAC/BkR,EAAWlR,GAAG6B,UAAUC,SAAS3B,IACjCgR,EAAS5C,KAAK2C,EAAWlR,GAGjC,OAAOmR,IAEX/P,EAASlC,UAAUkS,YAAc,SAAUC,GACvC,MAAOrS,MAAK+J,mBAAqB/J,KAAKsS,aAAaD,EAAQ,GAAKrS,KAAKsS,aAAaD,EAAQ,IAE9FjQ,EAASlC,UAAUqS,YAAc,SAAUF,GACvC,MAAOrS,MAAK+J,mBAAqB/J,KAAKsS,aAAaD,EAAQ,GAAKrS,KAAKsS,aAAaD,EAAQ,IAE9FjQ,EAASlC,UAAUoS,aAAe,SAAUD,GAExC,IAAK,GADDG,GACKxR,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQyL,SAASpN,OAAQK,IAC1CmE,SAASnF,KAAKsC,QAAQyL,SAAS/M,GAAGkF,MAAMmM,MAAO,MAAQA,IACvDG,EAAOxS,KAAKsC,QAAQyL,SAAS/M,GAGrC,OAAOwR,IAEXpQ,EAASlC,UAAUuS,cAAgB,SAAUJ,EAAO9G,GAChD,GAAIrG,GACAwN,CAEAA,GADS,SAATnH,EACQvL,KAAKkE,SAGLlE,KAAKiE,OAEjB,KAAK,GAAIjD,GAAI,EAAGA,EAAI0R,EAAM/R,OAAQK,IAC1BmE,SAASuN,EAAM1R,GAAGkF,MAAMmM,MAAO,MAAQA,IACvCnN,EAAQlE,EAGhB,OAAOkE,IAEX9C,EAASlC,UAAUyS,oBAAsB,SAAUC,GAC/C,GAAInB,GAAY5M,oBAAkB7E,KAAK2D,eAAiB,MAAQ3D,KAAK2D,cAAgB,IAC5D,gBAArB3D,KAAK6D,YACL+O,EAAc1M,MAAM9C,MAAQqO,EAG5BmB,EAAc1M,MAAM/C,OAASsO,GAGrCrP,EAASlC,UAAU2S,iBAAmB,SAAUd,GAC5C,GAAIa,GAAgB5S,KAAK8S,cAAc,MACvC7J,aAAU2J,IAAiBpR,EAzxBrB,YA0xBNxB,KAAK2S,oBAAoBC,GACzBb,EAAWgB,YAAYH,IAE3BxQ,EAASlC,UAAU0J,UAAY,SAAUtJ,GACxBN,KAAKmD,MAElB,OADiC,KAAxB7C,EAAO4F,MAAM/C,QAAiC,SAAhBnD,KAAKmD,OAAoB7C,EAAO4F,MAAM/C,OAASnD,KAAKmD,QAG/Ff,EAASlC,UAAU2J,SAAW,SAAUvJ,GACxBN,KAAKoD,KAEjB,OAD+B,KAAvB9C,EAAO4F,MAAM9C,OAA+B,SAAfpD,KAAKoD,MAAmB9C,EAAO4F,MAAM9C,MAAQpD,KAAKoD,OAG3FhB,EAASlC,UAAUyJ,aAAe,SAAUxG,EAAQC,GAChDkM,oBAAkBtP,KAAKsC,SAAWa,OAAUA,EAAQC,MAASA,KAEjEhB,EAASlC,UAAUkQ,oBAAsB,SAAUlL,EAAOgL,EAAQD,GACzDpL,oBAAkB7E,KAAK8D,aAAaoB,KAChCL,oBAAkB7E,KAAK8D,aAAaoB,GAAOqH,eACxCvM,KAAK8D,aAAaoB,GAAOqH,YACzBvD,eAAaiH,IAAUrO,IAGvBqH,YAAUgH,IAAUrO,IAEnBiD,oBAAkB7E,KAAK8D,aAAaoB,EAAQ,MACzClF,KAAK8D,aAAaoB,EAAQ,GAAGqH,YAC7BvD,eAAakH,IAAUtO,IAGvBqH,YAAUiH,IAAUtO,KAGvBiD,oBAAkB7E,KAAK8D,aAAaoB,EAAQ,KACxClF,KAAK8D,aAAaoB,EAAQ,iBACvBlF,KAAK8D,aAAaoB,EAAQ,GAAGqH,YAC7BvD,eAAakH,IAAUtO,IAGvBqH,YAAUiH,IAAUtO,OAO5CQ,EAASlC,UAAU8S,gBAAkB,WACR,eAArBhT,KAAK6D,aACL7D,KAAKiT,UAAYxR,EACjBzB,KAAKkT,WAx0BC,kBA20BNlT,KAAKiT,UAAYvR,EACjB1B,KAAKkT,WAAavR,IAG1BS,EAASlC,UAAUiT,gBAAkB,SAAUnS,GAC3C,GAAIuB,GAAQvC,KACR0R,EAAY1R,KAAK8S,cAAc,MACnC9S,MAAKiE,QAAQsL,KAAKmC,EAClB,IAAIxB,GAASlQ,KAAK8S,cAAc,UAC5B7C,EAASjQ,KAAK8S,cAAc,SAChC5C,GAAOf,aAAa,WAAY,MAChCc,EAAOd,aAAa,WAAY,KAChC,IAAIiE,GAAcpT,KAAKqT,cAAc,mBACrCnD,GAAOf,aAAa,aAAciE,GAClCnD,EAAOd,aAAa,aAAciE,GAClClD,EAAOf,aAAa,OAAQ,UAC5Bc,EAAOd,aAAa,OAAQ,SAC5B,IAAI5I,GAAO1B,oBAAkB7E,KAAK2D,eAAiB,MAAQ3D,KAAK2D,cAAgB,IAsChF,OArCyB,eAArB3D,KAAK6D,aACL7D,KAAKgT,kBACL/J,YAAUgH,IAh2BD,mBAg2B2BxO,EAAYG,IAChDqH,YAAUiH,IAj2BD,mBACH,gBAg2B2CtO,IACjDqH,YAAUyI,IAAapQ,EAh3BjB,2BAi3BNoQ,EAAUxL,MAAM9C,MAAQmD,IAGxB0C,YAAUiH,IAt2BD,mBAs2B2BvO,EAAYC,IAChDqH,YAAUgH,IAv2BD,mBAu2B2BvO,EAAUE,IAC9CqH,YAAUyI,IAAapQ,EAr3BjB,yBAs3BNtB,KAAKgT,kBACLtB,EAAUxL,MAAM/C,OAASoD,GAE7BvG,KAAKsT,gBAAgB5B,GACrBA,EAAUqB,YAAY9C,GACtBjQ,KAAK6S,iBAAiBnB,GACtBA,EAAUqB,YAAY7C,GACtBlQ,KAAKoQ,oBAAoBpP,EAAGkP,EAAQD,GACpCyB,EAAUvC,aAAa,WAAY,MACnCuC,EAAUvC,aAAa,cAAe,QAClCnP,KAAK+J,mBACL2H,EAAUvC,aAAa,MAAO,OAG9BuC,EAAUtC,gBAAgB,OAE9BsC,EAAU6B,qBAAuB,WAC7B7B,EAAU7O,UAAUgE,IAj4BT,sBAk4BXtE,EAAMiI,iBAAmBkH,EACzBnP,EAAMiR,kBAEV9B,EAAU+B,oBAAsB,WAC5B/B,EAAU7O,UAAU4H,OAt4BT,uBAw4BfiH,EAAUrH,iBAAiB,QAASqH,EAAU6B,sBAC9C7B,EAAUrH,iBAAiB,OAAQqH,EAAU+B,qBACtC/B,GAEXtP,EAASlC,UAAU8P,qBAAuB,SAAU9K,GAChDlF,KAAKwT,iBACDxT,KAAK+P,cACL/P,KAAKkE,SAASgB,GAAOrC,UAAUgE,IA/3BtB,eAk4BT7G,KAAKkE,SAASgB,GAAOrC,UAAU4H,OAl4BtB,gBAq4BjBrI,EAASlC,UAAUkE,aAAe,SAAU9D,GAIxC,IAAK,GADDoR,GAFAlD,EAAaxO,KAAKkE,SAASvD,OAC3B+S,EAAYpT,EAAOyN,SAEd/M,EAAI,EAAGA,EAAIwN,EAAYxN,IAC5B,GAAIA,EAAIwN,EAAa,GAYjB,GAXAkD,EAAY1R,KAAKmT,gBAAgBnS,GACjCsO,oBAAkBoC,GAAaW,MAAc,EAAJrR,EAAS,IAClDhB,KAAKgH,eAAeuI,KAAU,EAAJvO,EAAS,GACnC0S,EAAU1S,GAAG2S,WAAWZ,YAAYrB,GACpC1R,KAAKwK,iBAAmBkH,EACxBA,EAAUvC,aAAa,OAAQ,aAC/BuC,EAAUvC,aAAa,gBAAiBnO,EAAE6L,YACrChI,oBAAkB7E,KAAK6D,cACxB6N,EAAUvC,aAAa,mBAAoBnP,KAAK6D,YAAY+P,eAEhE5T,KAAK6T,mBACAhP,oBAAkB6M,GACnB,GAAI1R,KAAK+P,cAAe,CACpB/F,eAAanD,IAAI6K,EAAW,YAAa1R,KAAK8P,YAAa9P,KAC3D,IAAI8T,GAAmC,SAAtB3K,UAAQC,KAAKC,KAAmB,cAAgB,YACjEW,gBAAanD,IAAI6K,EAAWoC,EAAW9T,KAAK8P,YAAa9P,MACzD0R,EAAU7O,UAAUgE,IA76BxB,yBA86BI7G,KAAKgQ,qBAAqBhP,OAG1BiI,aAAU2G,SAAO,IAAMpO,EAAYkQ,IA96BxC,sBAm7BCA,IACAzI,YAAUyI,GAp6Bf,cAs6BKlD,EAAa,GACbxO,KAAKgQ,qBAAqBhP,EAItC,IAA0B,SAAtBmI,UAAQC,KAAKC,KAEb,IAAK,GADD0K,GAAS/T,KAAKsC,QAAQ0R,iBAAiB,iCAClChT,EAAI,EAAGA,EAAI+S,EAAOpT,OAAQK,IAAK,CACpC,GAAIiT,GAAUpP,oBAAkB7E,KAAK2D,eAAiB,EAAI3D,KAAK2D,aAC/DoQ,GAAO/S,GAAGkF,MAAMgO,YAAcD,EAAU,EAAI,KAC5CF,EAAO/S,GAAGkF,MAAMiO,aAAeF,EAAU,EAAI,OAIzD7R,EAASlC,UAAU6P,YAAc,WAC7B,GAAI3D,IAAY,CAQhB,SAPMvH,oBAAkB7E,KAAK8D,aAAa9D,KAAKoU,0BAC3CpU,KAAK8D,aAAa9D,KAAKoU,wBAAwBhI,YAC9CvH,oBAAkB7E,KAAK8D,aAAa9D,KAAKqU,sBAC1CrU,KAAK8D,aAAa9D,KAAKqU,oBAAoBjI,WAC3CvH,oBAAkB7E,KAAK8D,aAAa9D,KAAKqU,wBACzCjI,GAAY,GAETA,GAEXhK,EAASlC,UAAUoT,gBAAkB,SAAU5B,GAC3C,GACI4C,GACAC,EAFAhS,EAAQvC,IAGZ0R,GAAU8C,0BAA4B,WAElCF,EAAQG,WAAW,WACfxL,YAAUyI,IAx9BJ,uBAy9BPnP,EAAMiF,aAEbkK,EAAUgD,0BAA4B,WAClCC,aAAaL,GACbtL,eAAa0I,IA79BH,uBA+9BdA,EAAUkD,wBAA0B,WAChCD,aAAaJ,IAEjB7C,EAAUmD,yBAA2B,WAEjCN,EAAeE,WAAW,WACtBxL,YAAUyI,IAr+BJ,yBAw+BdA,EAAUrH,iBAAiB,aAAcqH,EAAU8C,2BACnD9C,EAAUrH,iBAAiB,aAAcqH,EAAUgD,2BACnDhD,EAAUrH,iBAAiB,WAAYqH,EAAUkD,yBACjDlD,EAAUrH,iBAAiB,YAAaqH,EAAUmD,2BAEtDzS,EAASlC,UAAU4U,aAAe,SAAUvK,GACxC,MAAQA,GAAES,QAAQ,UAAY,EAAK,QAAU,SAEjD5I,EAASlC,UAAU6U,uBAAyB,SAAUzU,GAClDN,KAAKwK,iBAAmBxK,KAAKgV,YAAY1U,GAAUA,EAAOyI,cAAgBzI,GAE9E8B,EAASlC,UAAU8U,YAAc,SAAU1U,GACvC,OAAQA,EAAOuC,UAAUC,SAASxB,IAEtCc,EAASlC,UAAU+U,aAAe,SAAU1K,GACxC,GAAI2K,IAAU,CAKd,QAJkC,UAA9BlV,KAAK8U,aAAavK,EAAEgB,QAAuB1G,oBAAkB0F,EAAE4K,cAC1B,UAArCnV,KAAK8U,aAAavK,EAAE4K,gBACpBD,GAAU,GAEPA,GAEX9S,EAASlC,UAAUkV,qBAAuB,SAAU7K,EAAGgB,GACnD,GAAIvL,KAAKiV,aAAa1K,GAClBvK,KAAKqV,mBAAoBC,EAAG/K,EAAEgL,MAAOC,EAAGjL,EAAEkL,OAASlK,OAElD,CACD,GAAImK,GAAkC,SAAtBvM,UAAQC,KAAKC,KAAkBkB,EAAEoL,QAAQ,GAAKpL,CAC9DvK,MAAKqV,mBAAoBC,EAAGI,EAAUH,MAAOC,EAAGE,EAAUD,OAASlK,KAG3EnJ,EAASlC,UAAUmV,kBAAoB,SAAUO,EAAarK,GAC7C,aAATA,EACAvL,KAAKiH,oBAAsB2O,EAG3B5V,KAAKkH,mBAAqB0O,GAGlCxT,EAASlC,UAAUgI,iBAAmB,WAClC,GAAI3F,GAAQvC,KACR6V,EAAY7V,KAAKkE,SAASvD,MAC9B,KAAKsJ,SAAS6L,KAAKhT,SAAS9C,KAAKsC,SAE7B,WADA2H,UAASG,YAAY2L,oBAAoB,SAAU/V,KAAKiI,mBAG5D,KAAK,GAAIjH,GAAI,EAAGA,EAAI6U,EAAW7U,IACvB6D,oBAAkB7E,KAAK8D,aAAa9C,GAAGuF,OACvCvG,KAAKkE,SAASlD,GAAG6B,UAAU4H,OAAOlJ,GAElCsU,EAAY,IAAM7U,GACIhB,KAAKsC,QAAQ0R,iBAAiB,IAAMzS,GAAaZ,SAC/CkV,GACqB,KAArC7V,KAAKkE,SAASlD,GAAGkF,MAAMC,WACvB6C,eAAahJ,KAAKkE,SAASlD,IAAKO,EAK5CsU,GAAY,GACZpB,WAAW,WACPlS,EAAMyT,oBAAmB,IAC1B,MAGX5T,EAASlC,UAAU8V,mBAAqB,SAAUC,GAK9C,IAAK,GAJD5K,GAAa,EACbhF,KACAC,EAAY,EACZyH,EAAW/N,KAAKsC,QAAQyL,SACnB/M,EAAI,EAAGkV,EAAMnI,EAASpN,OAAQK,EAAIkV,EAAKlV,IAC5CqK,GAAmC,eAArBrL,KAAK6D,YAA+BkK,EAAS/M,GAAGyF,YAC1DsH,EAAS/M,GAAG0F,YAEpB,KAAK,GAAIrB,GAAI,EAAG6Q,EAAMlW,KAAKiE,QAAQtD,OAAQ0E,EAAI6Q,EAAK7Q,IAChDgG,GAAmC,eAArBrL,KAAK6D,YAA+BsB,SAASgR,iBAAiBnW,KAAKiE,QAAQoB,IAAI+Q,WAAY,IACrGjR,SAASgR,iBAAiBnW,KAAKiE,QAAQoB,IAAI+Q,WAAY,IACvDjR,SAASgR,iBAAiBnW,KAAKiE,QAAQoB,IAAIgR,UAAW,IAClDlR,SAASgR,iBAAiBnW,KAAKiE,QAAQoB,IAAIiR,aAAc,GAKrE,KAAK,GAHDC,GAA4B,eAArBvW,KAAK6D,YAA+B7D,KAAKsC,QAAQmE,aACxC,EAAdzG,KAAK4G,OAAcyE,GACrBrL,KAAKsC,QAAQoE,cAA+B,EAAd1G,KAAK4G,OAAcyE,GAC5CrK,EAAI,EAAGkV,EAAMlW,KAAKkE,SAASvD,OAAQK,EAAIkV,EAAKlV,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,GAAe4P,EAAOlQ,EAAgB1F,OACjC0E,EAAI,EAAG6Q,EAAM7P,EAAgB1F,OAAQ0E,EAAI6Q,EAAK7Q,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,QAAgBsV,EAO9B,IAAK,GANDJ,GAAY7V,KAAKkE,SAASvD,OAC1B+L,MAAW,GACXC,MAAe,GAEf6J,MAAa,GACbC,MAAW,GACNzV,EAAI,EAAGA,EAAI6U,EAAW7U,IAC3B,IAAK6D,oBAAkB7E,KAAK8D,aAAa9C,GAAG2K,OACxCgB,EAAe3M,KAAK4M,qBAAsB5M,KAAK8D,aAAa9C,OAAQ6L,YAChE7M,KAAK8D,aAAa9C,GAAG2K,IAAIX,QAAQ,KAAO,IACxC2B,EAAe3M,KAAKsL,yBAAyBtL,KAAK8D,aAAa9C,GAAG2K,MAEtEe,EAAW1M,KAAK4M,qBAAqB,EAAeC,aAC1B,eAArB7M,KAAK6D,YAA+B7D,KAAKkE,SAASlD,GAAGyF,YAAczG,KAAKkE,SAASlD,GAAG0F,cAAgBgG,GAAU,CAV3G,IAWA1L,GACAwV,EAAaxW,KAAKkE,SAASlD,GAC3ByV,EAAWzW,KAAKkE,SAASlD,EAAI,KAG7BwV,EAAaxW,KAAKkE,SAASlD,GAC3ByV,EAAWzW,KAAKkE,SAASlD,EAAI,GAEjC,IAAI0V,GAAWhK,GAAiC,eAArB1M,KAAK6D,YAC5B7D,KAAKkE,SAASlD,GAAGyF,YAAczG,KAAKkE,SAASlD,GAAG0F,cAChDiQ,EAAYH,EAAWtQ,MAAMC,UAAU6E,QAAQ,MAAQ,EACvD4L,EAAwC,eAArB5W,KAAK6D,YAA+B2S,EAAW/P,YAAc+P,EAAW9P,cAC1F7B,oBAAkB2R,IAA8C,KAA/BA,EAAWtQ,MAAMC,WAAoBqQ,EAAW3T,UAAUC,SAASvB,KACrGiV,EAAWtQ,MAAMC,UAAYwQ,EAAY3W,KAAK6W,yBAAyBD,EAAmBF,GAAY,IAC/FE,EAAmBF,EAAY,KAE1C,IAAII,GAAsC,eAArB9W,KAAK6D,YAA+B4S,EAAShQ,YAAcgQ,EAAS/P,YACpF7B,qBAAkB4R,IAA0C,KAA7BA,EAASvQ,MAAMC,WAAqBsQ,EAAS5T,UAAUC,SAASvB,KAChGkV,EAASvQ,MAAMC,UAAYsQ,EAASvQ,MAAMC,UAAU6E,QAAQ,MAAQ,EAChEhL,KAAK6W,yBAAyBC,EAAiBJ,GAAY,IAAOI,EAAiBJ,EAAY,QAO3HtU,EAASlC,UAAU6W,iBAAmB,WAClC9M,SAASI,iBAAiB,YAAarK,KAAKoI,oBAAoB,GAChE6B,SAASI,iBAAiB,UAAWrK,KAAKsI,kBAAkB,EAC5D,IAAI0O,GAAwC,SAAtB7N,UAAQC,KAAKC,KAAmB,cAAgB,YAClE4N,EAAuC,SAAtB9N,UAAQC,KAAKC,KAAmB,YAAc,UACnEY,UAASI,iBAAiB2M,EAAgBhX,KAAKwI,oBAAoB,GACnEyB,SAASI,iBAAiB4M,EAAejX,KAAKyI,mBAAmB,IAErErG,EAASlC,UAAUgX,mBAAqB,WACpClX,KAAKsC,QAAQ6H,cAAcC,YAAY2L,oBAAoB,SAAU/V,KAAKiI,mBAC1E,IAAI+O,GAAwC,SAAtB7N,UAAQC,KAAKC,KAAmB,cAAgB,YAClE4N,EAAuC,SAAtB9N,UAAQC,KAAKC,KAAmB,YAAc,UACnEY,UAAS8L,oBAAoB,YAAa/V,KAAKoI,oBAAoB,GACnE6B,SAAS8L,oBAAoB,UAAW/V,KAAKsI,kBAAkB,GAC/D2B,SAAS8L,oBAAoBiB,EAAgBhX,KAAKwI,oBAAoB,GACtEyB,SAAS8L,oBAAoBkB,EAAejX,KAAKyI,mBAAmB,IAExErG,EAASlC,UAAU2T,gBAAkB,WACjC7J,eAAanD,IAAI7G,KAAKwK,iBAAkB,mBAAoBxK,KAAKmX,aAAcnX,OAEnFoC,EAASlC,UAAUiX,aAAe,SAAU5M,GACxC,IAAKA,EAAEjK,OAAOuC,UAAUC,SAhoCX,oBAgoCqC,CAC9C,GAAIsU,GAAY5G,YAAU,+CACtB4G,GAAUzW,OAAS,GACnBqI,cAAYoO,EA3oCN,qBA6oCV7M,EAAEjK,OAAOuC,UAAUgE,IA7oCT,qBA+oCd7G,KAAKqX,gBAAgB9M,EACrB,IAAI+M,GAAO/M,EAAEjK,QACTgX,EAAKzU,UAAUC,SAASrB,IAAe6V,EAAKzU,UAAUC,SAxoChD,kBAyoCNwU,EAAKzU,UAAUC,SAASnB,IAAe2V,EAAKzU,UAAUC,SAASpB,MAC1D1B,KAAK8K,SAASjI,UAAUC,SAnoCvB,kBAmoCiD9C,KAAK4K,aAAa/H,UAAUC,SAnoC7E,iBAuoCF9C,KAAKuX,aAAahN,GAHlBvK,KAAKwX,eAAejN,GAKxBvK,KAAKgW,uBAGb5T,EAASlC,UAAUqX,aAAe,SAAUhN,GACxC,GAAIhI,GAAQvC,KACRiR,EAAYjR,KAAKkR,aAAa3G,EAC9BvK,MAAK2H,WACL3H,KAAKwN,QAAQ,eAAgByD,EAAW,SAAUwG,GACzCA,EAAiBpK,QAClB9K,EAAMmV,WAAWnN,EAErB,IAAIoN,GAAkBpV,EAAMgP,YAAYhH,EACxChI,GAAMiL,QAAQ,WAAYmK,KAI9B3X,KAAK0X,WAAWnN,IAGxBnI,EAASlC,UAAU0X,QAAU,SAAUrN,GAInC,MAHkBA,GAAEjK,OAAOmP,UAAUC,MAAM,KAAKmI,OAAO,SAAUpI,GAC7D,MAtqCS,qBAsqCFA,GAAgCA,IAAc7N,IAEtC,IAEvBQ,EAASlC,UAAUwX,WAAa,SAAUnN,GACtCvK,KAAK8X,mBACL,IAAIC,GAAgB/X,KAAKsC,QAAQ0R,iBAAiB,gBAAqBrT,OACnEqX,GAAehY,KAAK4K,aAAa/H,UAAUC,SAtqCnC,gBAuqCR9C,KAAK4K,aAAa/H,UAAUC,SAASvB,KAAiBvB,KAAK8K,SAASjI,UAAUC,SAvqCtE,iBAwqCP9C,KAAK8K,SAASjI,UAAUC,SAzqCnB,eAyqC4C9C,KAAK8K,SAASmN,mBAAmBpV,UAAUC,SAAS3B,KACrGnB,KAAK8K,SAASmN,mBAAmBpV,UAAUC,SAASvB,MAAkBwW,IAAkB/X,KAAKkE,SAASvD,OAAS,GAChHuX,GA1qCQ,cACF,iBA0qCNZ,EAAOtX,KAAK4X,QAAQrN,GACpB4N,EAAab,IAAS7V,GAAc6V,IAAS5V,EAC7C0W,EAAeD,EAAanY,KAAK8K,SAAW9K,KAAK4K,aACjD8M,EAAaS,EAAanY,KAAK4K,aAAe5K,KAAK8K,SACnDuN,EAAkBF,EAAanY,KAAK0L,cAAgB1L,KAAK4L,aAC7D5C,gBAAaoP,GAAeF,GAC5BE,EAAajJ,aAAa,cAAe,QAEzC,IAAImJ,GAAStY,KAAKsC,QAAQ0R,iBAAiB,gBAAqBrT,MAChE,IAAI2X,EAAS,EACJZ,EAAW7U,UAAUC,SArrClB,iBAsrCJmG,YAAUyO,GAvrCR,cAwrCFA,EAAWvI,aAAa,gBAAiB,aAG5C,IAAe,IAAXmJ,EACL,IAAK,GAAItX,GAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACjChB,KAAKkE,SAASlD,GAAG6B,UAAUC,SA5rC5B,iBA6rCAkG,eAAahJ,KAAKkE,SAASlD,IA9rC7B,cA+rCEhB,KAAKkE,SAASlD,GAAGmO,aAAa,gBAAiB,SAIvDnP,MAAK2H,YACL3H,KAAKuY,mBAAmBF,GAAiB,GAE7CrY,KAAKwY,oBAAoBjO,EAAG+M,GAC5BtX,KAAKyY,iBACDT,IACAhY,KAAK4K,aAAa/H,UAAU4H,OAzsCtB,cA0sCNzK,KAAK4K,aAAauE,aAAa,gBAAiB,SAChDnP,KAAK4K,aAAa1E,MAAMwS,SAAW,KAG3CtW,EAASlC,UAAUuY,eAAiB,WAEhC,IAAK,GADDV,GAAgB,EACX1S,EAAI,EAAGA,EAAIrF,KAAKsC,QAAQyL,SAASpN,OAAQ0E,IAC1CrF,KAAKsC,QAAQyL,SAAS1I,GAAGxC,UAAUC,SAhtC/B,iBAitCJiV,GAAgC,EAKxC,KAAK,GAFDY,GAAcZ,IAAkB/X,KAAKkE,SAASvD,OAAS,EACvD+R,EAAQ1S,KAAKkE,SACRlD,EAAI,EAAGA,EAAI0R,EAAM/R,OAAQK,IAC9B0R,EAAM1R,GAAGkF,MAAMwS,SAAW,GACtBC,GAAe3Y,KAAKkE,SAASlD,GAAG6B,UAAUC,SAxtCtC,gBAwtCiE9C,KAAK8D,aAAa9C,GAAGuF,MAC1FvF,IAAMhB,KAAKkE,SAASvD,OAAS,IAC7B+R,EAAM1R,GAAGkF,MAAMwS,SAAW,IAE1BhG,EAAM1R,GAAG6B,UAAUC,SA7tCjB,cA8tCF4P,EAAM1R,GAAGkF,MAAMwS,SAAW,IAErBhG,EAAM1R,GAAG6B,UAAUC,SA/tCpB,iBAguCJ4P,EAAM1R,GAAGkF,MAAMwS,SAAW,MAItCtW,EAASlC,UAAU0Y,kBAAoB,SAAUC,EAAWhK,GACxD5F,YAAU2G,SAAO,IAAMf,EAAagK,IAAajX,IAErDQ,EAASlC,UAAU4Y,kBAAoB,SAAUD,EAAWhK,GACxD7F,eAAa4G,SAAO,IAAMf,EAAagK,IAAajX,IAExDQ,EAASlC,UAAU6Y,sBAAwB,SAAUxO,EAAGyO,GACpDhZ,KAAKwR,kBACL,IAAIyH,GAAajZ,KAAKuQ,MAClB2I,EAAWlZ,KAAKmZ,kBAAqBnZ,KAAKiE,QAAQtD,OAAS,EAAKX,KAAKoZ,QAAUpZ,KAAKqZ,QACpFC,EAAgBtZ,KAAKmZ,kBAAqBnZ,KAAKiE,QAAQtD,OAAS,EAAKX,KAAKmZ,gBAAkB,EAC1FnZ,KAAKmZ,gBAAkB,CAC7B,IAAK5O,EAAEjK,OAAOuC,UAAUC,SAASlB,GAkC7B5B,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,GACrCtU,oBAAkBqU,IACnBlZ,KAAK2F,eAAe2T,GAAe,GAElCtZ,KAAK8D,aAAa9D,KAAK4L,eAAeW,aAAgBvM,KAAK8D,aAAa9D,KAAK0L,eAAea,aAOxF1H,oBAAkBqU,IACnBlZ,KAAK4Y,kBAAkBM,EAAUD,GAErCjZ,KAAK8Y,kBAAkB9Y,KAAKwK,iBAAkByO,KATzCpU,oBAAkBqU,IACnBlZ,KAAK4Y,kBAAkBM,EAAUF,GAErChZ,KAAK4Y,kBAAkB5Y,KAAKwK,iBAAkByO,QAzClD,IAAIjZ,KAAKuZ,cAAcC,mBAAqBxZ,KAAKuZ,cAAcE,kBAC3D,GAAIzZ,KAAK8D,aAAa9D,KAAK4L,eAAeW,aAAevM,KAAK8D,aAAa9D,KAAK0L,eAAea,aAG3F,GAFAvM,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,GAC1CnZ,KAAK4Y,kBAAkB5Y,KAAKwK,iBAAkBwO,IACzCnU,oBAAkBqU,GAAW,CAC9B,GAAIQ,GAAqBJ,EACrBK,EAAqBL,EAAgB,EACrCM,EAAgB5Z,KAAK6Z,iBAAiBH,EAAoBC,EAC1D3Z,MAAK8D,aAAa4V,GAAoBnN,aACtCvM,KAAK8D,aAAa6V,GAAoBpN,cAChB,IAAlBqN,GACA5Z,KAAK4Y,kBAAkBM,EAAUD,GACjCjZ,KAAK2F,eAAe2T,GAAe,IAEZ,IAAlBM,IACL5Z,KAAK8Z,aAAaZ,GAClBlZ,KAAK2F,eAAe2T,GAAe,IAElCtZ,KAAK8D,aAAa4V,GAAoBnN,aACtCvM,KAAK8D,aAAa6V,GAAoBpN,aACvCvM,KAAK4Y,kBAAkBM,EAAUF,SAM7ChZ,MAAK8Y,kBAAkB9Y,KAAKwK,iBAAkByO,GAC9CjZ,KAAK4Y,kBAAkB5Y,KAAKwK,iBAAkBwO,GAC9ChZ,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,IAuB1D/W,EAASlC,UAAUsX,eAAiB,SAAUjN,GAC1C,GAAIhI,GAAQvC,KACRiR,EAAYjR,KAAKkR,aAAa3G,EAC9BvK,MAAK0H,aACL1H,KAAKoY,aAAa7N,GAGlBvK,KAAKwN,QAAQ,iBAAkByD,EAAW,SAAUE,GAChD,IAAKA,EAAmB9D,OAAQ,CAC5B9K,EAAM6V,aAAa7N,EACnB,IAAI+G,GAAoB/O,EAAMgP,YAAYhH,EAC1ChI,GAAMiL,QAAQ,YAAa8D,OAK3ClP,EAASlC,UAAUkY,aAAe,SAAU7N,GACxCvK,KAAK8X,mBACL,IAAIC,GAAgB/X,KAAKsC,QAAQ0R,iBAAiB,gBAAqBrT,OACnEqX,EAAchY,KAAK4K,aAAa/H,UAAUC,SAASvB,KAClDvB,KAAK4K,aAAa/H,UAAUC,SAxzCrB,iBAwzCiD9C,KAAK8K,SAASjI,UAAUC,SAxzCzE,gBAyzCR9C,KAAK8K,SAASmN,mBAAmBpV,UAAUC,SAAS3B,KACnDnB,KAAK8K,SAASmN,mBAAmBpV,UAAUC,SAASvB,KACpDvB,KAAK8K,SAASmN,mBAAmBpV,UAAUC,SA3zCpC,kBA4zCNiV,IAAkB/X,KAAKkE,SAASvD,OAAS,IAAQX,KAAK8K,SAASjI,UAAUC,SA5zCnE,iBA6zCP9C,KAAK4K,aAAa/H,UAAUC,SAASvB,IAAgBvB,KAAK8K,SAASjI,UAAUC,SAASvB,GACvF2W,GA9zCQ,cACF,iBA8zCNZ,EAAOtX,KAAK4X,QAAQrN,GACpB4N,EAAab,IAAS7V,GAAc6V,IAAS5V,EAC7C0W,EAAeD,EAAanY,KAAK4K,aAAe5K,KAAK8K,SACrD4M,EAAaS,EAAanY,KAAK8K,SAAW9K,KAAK4K,aAC/CmP,EAAoB5B,EAAanY,KAAK4L,cAAgB5L,KAAK0L,aAM/D,IALA1C,eAAaoP,GAr0CH,cAs0CVA,EAAajJ,aAAa,gBAAiB,SAC3ClG,YAAUmP,GAAeF,GACzBE,EAAajJ,aAAa,cAAe,QACS,KAAjCiJ,EAAalS,MAAMC,UAEhC8C,YAAUyO,GA30CJ,cA40CNA,EAAWvI,aAAa,gBAAiB,YAExC,CAED,IAAK,GADD6K,IAAmB,EACdhZ,EAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACtC,IAAKhB,KAAKkE,SAASlD,GAAG6B,UAAUC,SAh1C5B,gBAi1CyC,KAArC9C,KAAKkE,SAASlD,GAAGkF,MAAMC,YAAqBnG,KAAKkE,SAASlD,GAAG6B,UAAUC,SAj1C3E,iBAk1CQ9C,KAAKkE,SAASlD,GAAG6B,UAAUC,SAn1CrC,cAm1C4D,CACtDmG,YAAUjJ,KAAKkE,SAASlD,IAp1C9B,cAq1CMhB,KAAKkE,SAASlD,GAAGmO,aAAa,gBAAiB,QAC/C6K,GAAmB,CACnB,OAIRA,IACA/Q,YAAUyO,GA51CR,cA61CFA,EAAWvI,aAAa,gBAAiB,SAG5CnP,KAAK0H,cACN1H,KAAKuY,mBAAmBwB,GAAmB,GAE/C/Z,KAAK+Y,sBAAsBxO,EAAG+M,GAC9BtX,KAAKyY,iBACDT,IACAhY,KAAK8K,SAASjI,UAAU4H,OAt2ClB,cAu2CNzK,KAAK8K,SAAS5E,MAAMwS,SAAW,KAGvCtW,EAASlC,UAAU4X,kBAAoB,WACnC,IAAK,GAAI9W,GAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IAClC6D,oBAAkB7E,KAAK8D,aAAa9C,GAAGuF,OACvCvG,KAAKkE,SAASlD,GAAG6B,UAAU4H,OAAOlJ,IAI9Ca,EAASlC,UAAUgR,aAAe,SAAU3G,GASxC,OAPIjI,QAAStC,KAAKsC,QACdwJ,MAAOvB,EACPiI,MAAOxS,KAAK4K,aAAc5K,KAAK8K,UAC/B5F,OAAQlF,KAAK4L,cAAe5L,KAAK0L,eACjCgG,UAAW1R,KAAKwK,iBAChB6C,QAAQ,IAIhBjL,EAASlC,UAAUqY,mBAAqB,SAAUrT,EAAOW,GACrD,GAAIoU,GAAaja,KAAK8D,YACtBmW,GAAW/U,GAAOW,UAAYA,EAC9B7F,KAAK2O,eAAgB7K,aAAgBmW,IAAc,IAEvD7X,EAASlC,UAAUsR,iBAAmB,WAClCxR,KAAKuZ,eACDJ,gBAAiBnZ,KAAKmZ,gBACtBe,oBAAqBla,KAAK8K,SAASjI,UAAUC,SA34CvC,iBA44CNqX,oBAAqBna,KAAK4K,aAAa/H,UAAUC,SA54C3C,iBA64CNsX,iBAAkBpa,KAAK4K,aAAa/H,UAAUC,SAt4CxC,cAu4CNuX,iBAAkBra,KAAK8K,SAASjI,UAAUC,SAv4CpC,cAw4CN2W,kBAAmBzZ,KAAK8K,SAASjI,UAAUC,SAv4CnC,eAw4CR0W,kBAAmBxZ,KAAK4K,aAAa/H,UAAUC,SAx4CvC,eAy4CR4I,cAAe1L,KAAKqU,mBACpBzI,cAAe5L,KAAKoU,uBACpBkG,gBAAiBta,KAAK8K,SAASmN,mBAC/BsC,eAAgBva,KAAK4K,aAAa4P,yBAG1CpY,EAASlC,UAAUua,oBAAsB,WACrCzR,eAAa4G,SAAO,IAAM5P,KAAKuQ,MAAOvQ,KAAKwK,mBAAoB5I,IAEnEQ,EAASlC,UAAU4Z,aAAe,SAAUY,GACxCzR,YAAU2G,SAAO,IAAM5P,KAAKuQ,MAAOmK,IAAO9Y,IAE9CQ,EAASlC,UAAU2Z,iBAAmB,SAAUjO,EAAeF,GAC3D,GAAIkO,GAAgB,CAOpB,OANI5Z,MAAKkE,SAAS0H,GAAe/I,UAAUC,SAv5C/B,iBAw5CR8W,GAAgC,GAEhC5Z,KAAKkE,SAASwH,GAAe7I,UAAUC,SA15C/B,iBA25CR8W,GAAgC,GAE7BA,GAEXxX,EAASlC,UAAUya,mBAAqB,SAAU/O,EAAeF,GAC7D,SAAI1L,KAAK8D,aAAa8H,GAAeQ,YAAapM,KAAK8D,aAAa4H,GAAeU,YAOvFhK,EAASlC,UAAUsY,oBAAsB,SAAUjO,EAAGyO,GAClDhZ,KAAKwR,kBACL,IAAIoJ,GAAW5a,KAAKuQ,MAChB2I,EAAWlZ,KAAKmZ,kBAAqBnZ,KAAKiE,QAAQtD,OAAS,EAAKX,KAAKoZ,QAAUpZ,KAAKqZ,QACpFC,EAAgBtZ,KAAKmZ,kBAAqBnZ,KAAKiE,QAAQtD,OAAS,EAChEX,KAAKmZ,gBAAkB,EAAInZ,KAAKmZ,gBAAkB,CACtD,IAAK5O,EAAEjK,OAAOuC,UAAUC,SAASlB,GAuDxB5B,KAAK8D,aAAa9D,KAAK4L,eAAeW,aAAgBvM,KAAK8D,aAAa9D,KAAK0L,eAAea,aACzFvM,KAAK2a,mBAAmB3a,KAAK4L,cAAe5L,KAAK0L,gBACjD1L,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,OAvDlD,KAAKnZ,KAAKuZ,cAAcC,oBAAsBxZ,KAAKuZ,cAAcE,kBAC7D,GAAIzZ,KAAK8D,aAAa9D,KAAK4L,eAAeW,aAAevM,KAAK8D,aAAa9D,KAAK0L,eAAea,aAQ3F,GAPAvM,KAAKya,sBACDza,KAAK2a,mBAAmB3a,KAAK4L,cAAe5L,KAAK0L,eACjD1L,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,GAG1CnZ,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,IAEzCtU,oBAAkBqU,GAAW,CAC9B,GAAIQ,GAAqBJ,EACrBK,EAAqBL,EAAgB,EACrCM,EAAgB5Z,KAAK6Z,iBAAiBH,EAAoBC,EAC1D3Z,MAAK8D,aAAa4V,GAAoBnN,aACtCvM,KAAK8D,aAAa6V,GAAoBpN,cAChB,IAAlBqN,GACA5Z,KAAK8Y,kBAAkBI,EAAUF,GACjChZ,KAAK8Y,kBAAkBI,EAAU0B,GAC7B5a,KAAK2a,mBAAmBjB,EAAoBC,IAC5C3Z,KAAK2F,eAAe2T,GAAe,IAGhB,IAAlBM,IACL5Z,KAAK8Z,aAAaZ,GAEdlZ,KAAKkE,SAASwV,GAAoB7W,UAAUC,SAz8C9D,eA08CkB9C,KAAKkE,SAASyV,GAAoB9W,UAAUC,SA18C9D,cA28CkB9C,KAAK8Y,kBAAkBI,EAAU0B,GAIjC5a,KAAK8Y,kBAAkBI,EAAUF,GAErChZ,KAAK2F,eAAe2T,GAAe,UAM/CtZ,MAAK4Y,kBAAkB5Y,KAAKwK,iBAAkBwO,GAC9ChZ,KAAK8Y,kBAAkB9Y,KAAKwK,iBAAkBoQ,GACzC5a,KAAKuZ,cAAcC,mBAAsBxZ,KAAKuZ,cAAcE,kBAM7DzZ,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,GALtCnZ,KAAK2a,mBAAmB3a,KAAK4L,cAAe5L,KAAK0L,gBACjD1L,KAAK2F,eAAe3F,KAAKmZ,iBAAiB,IAiBlE/W,EAASlC,UAAUqR,YAAc,SAAUhH,GAQvC,OANIjI,QAAStC,KAAKsC,QACdwJ,MAAOvB,EACPiI,MAAOxS,KAAK4K,aAAc5K,KAAK8K,UAC/B5F,OAAQlF,KAAK4L,cAAe5L,KAAK0L,eACjCgG,UAAW1R,KAAKwK,mBAIxBpI,EAASlC,UAAU2a,aAAe,SAAUtQ,GACxCvK,KAAKmZ,gBAAkBnZ,KAAKyS,cAActN,SAASoF,EAAEjK,OAAOyI,cAAc7C,MAAMmM,MAAO,IAAK,aAEhGjQ,EAASlC,UAAU6L,kBAAoB,SAAUzL,GAC7C,GAAIwa,MAAW3M,MAAM3L,KAAKxC,KAAKiE,QAE/B,QADA6W,EAAQ9a,KAAK+J,mBAAqB+Q,EAAM5L,UAAY4L,GACvC9P,QAAQ1K,IAEzB8B,EAASlC,UAAU6a,WAAa,SAAUhJ,GAEtC,MADc/R,MAAKiE,QAAS8N,EAAa,IAG7C3P,EAASlC,UAAU8a,WAAa,SAAUjJ,GAEtC,MADc/R,MAAKiE,QAAS8N,EAAa,IAG7C3P,EAASlC,UAAU+a,WAAa,SAAU/V,GACtClF,KAAKoZ,QAAUpZ,KAAK+a,WAAW7V,GAC/BlF,KAAKqZ,QAAUrZ,KAAKgb,WAAW9V,IAEnC9C,EAASlC,UAAUmX,gBAAkB,SAAU9M,GAClB,eAArBvK,KAAK6D,YACL7D,KAAKuQ,MAAQhG,EAAEjK,OAAOuC,UAAUC,SAASrB,GAjhDnC,gBAihD+DA,EAGrEzB,KAAKuQ,MAAQhG,EAAEjK,OAAOuC,UAAUC,SAASpB,GAAYC,EAAaD,EAEtE1B,KAAK+U,uBAAuBxK,EAAEjK,QAC9BN,KAAK6a,aAAatQ,GAClBvK,KAAKib,WAAWjb,KAAKmZ,iBACrBnZ,KAAKwT,kBAETpR,EAASlC,UAAUoM,gBAAkB,SAAU/B,GAC3C,GAAI0G,IACA3O,QAAStC,KAAKsC,QACdwJ,MAAOvB,EACPiI,MAAOxS,KAAK4K,aAAc5K,KAAK8K,UAC/B5F,OAAQlF,KAAK4L,cAAe5L,KAAK0L,eACjCwP,UAAWlb,KAAKmb,gBAAiBnb,KAAKob,mBACtC1J,UAAW1R,KAAKwK,iBAEpBxK,MAAKwN,QAAQ,WAAYyD,IAE7B7O,EAASlC,UAAU4P,YAAc,SAAUvF,GACvC,GAAIhI,GAAQvC,IACZuK,GAAE8B,gBACF,IAAI/L,GAASiK,EAAEjK,MACf,KAAIA,EAAOuC,UAAUC,SA3iDR,oBA2iDb,CAGA9C,KAAK+U,uBAAuBzU,GAC5B2I,YAAUjJ,KAAKwK,kBAtjDA,sBAujDfxK,KAAKoV,qBAAqB7K,EAAG,YAC7BvK,KAAKwT,gBASL,KAAK,GARDvC,IACA3O,QAAStC,KAAKsC,QACdwJ,MAAOvB,EACPiI,MAAOxS,KAAK4K,aAAc5K,KAAK8K,UAC/B5F,OAAQlF,KAAKoU,uBAAwBpU,KAAKqU,oBAC1C3C,UAAW1R,KAAKwK,iBAChB6C,QAAQ,GAEHrM,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQ0R,iBAAiB,UAAUrT,OAAQK,IAChEhB,KAAKsC,QAAQ0R,iBAAiB,UAAUhT,GAAGkF,MAAMmV,cAAgB,MAErErb,MAAKwN,QAAQ,cAAeyD,EAAW,SAAUqK,GACxCA,EAAgBjO,SACjB9K,EAAMwU,mBACNxU,EAAMmI,cAAcH,QAIhCnI,EAASlC,UAAUgL,oBAAsB,SAAUsH,GAC/C,GAAI+I,EACJ,IAAI/I,EAAKtM,MAAMC,UAAU6E,QAAQ,KAAO,EACpCuQ,EAAWvb,KAAKwb,qBAAqBhJ,EAAKtM,MAAMC,eAGhD,IAA6B,KAAzBqM,EAAKtM,MAAMC,UACXoV,EAAWvb,KAAK6W,yBAAyB7W,KAAK4M,qBAAqB4F,EAAKtM,MAAMC,gBAE7E,CACD,GAAIsV,GAA+B,eAArBzb,KAAK6D,YAAiC2O,cAAqBA,EAAkB,YAC3F+I,GAAWvb,KAAK6W,yBAAyB4E,GAGjD,MAAOF,IAEXnZ,EAASlC,UAAUsb,qBAAuB,SAAUzO,GAChD,MAAO2O,YAAW3O,EAAMoB,MAAM,EAAGpB,EAAM/B,QAAQ,QAEnD5I,EAASlC,UAAUoL,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,GAJCjX,oBAAkB8W,GAIiB,eAArB3b,KAAK6D,YAAgC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,aAH9E1G,KAAKqH,gBAAgBrH,KAAKkE,SAAS8G,QAAQ2Q,IAK7DC,EAAiBG,KAAKC,KAAKF,GAAeF,EAAiB,UAG3DA,GAAiBzW,SAAS0W,EAAY,GAE1C,OAAOD,IAEXxZ,EAASlC,UAAU2W,yBAA2B,SAAU9J,GAEpD,MAAQA,IADgC,eAArB/M,KAAK6D,YAAgC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,cACjE,KAEnCtE,EAASlC,UAAU0M,qBAAuB,SAAUG,GAEhD,MADAA,GAAQA,EAAMF,WACVE,EAAM/B,QAAQ,MAAQ,EACf0Q,WAAW3O,EAAMoB,MAAM,EAAGpB,EAAM/B,QAAQ,OAGxC0Q,WAAW3O,IAG1B3K,EAASlC,UAAU+b,iBAAmB,SAAUC,EAAWJ,GACvD,GAEIpK,EAGJ,OAFAA,IAH6C,eAArB1R,KAAK6D,YAAgC7D,KAAKkH,mBAAmBoO,EAAI4G,EACpFlc,KAAKkH,mBAAmBsO,EAAI0G,GAEDJ,GAChCpK,EAAaA,EAAY,EAAK,EAAKA,EAAY,EAAK,EAAIA,GACrCoK,GAEvB1Z,EAASlC,UAAUic,qBAAuB,SAAU5R,GAChDvK,KAAKoV,qBAAqB7K,EAAG,UAC7B,IAAI6R,GAAkC,eAArBpc,KAAK6D,YAAgC7D,KAAKsC,QAAQkN,wBAAwB6M,KAAOC,OAAOC,QACrGvc,KAAKsC,QAAQkN,wBAAwBgN,IAAMF,OAAOG,QAClDC,EAA+B,eAArB1c,KAAK6D,YAAgC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQoE,YAC3F,OAAO1G,MAAKic,iBAAiBG,EAAWM,IAE5Cta,EAASlC,UAAUyc,UAAY,SAAU7O,EAAWxN,EAAQsc,GACxD,GAAIC,GAA2B,QAAdD,EAAsB,EAAI,KAEvClO,EAAY,IAahB,OAZkB,QAAdkO,EACK/X,oBAAkB7E,KAAK8D,aAAagK,KACpCjJ,oBAAkB7E,KAAK8D,aAAagK,GAAWnC,OAChD+C,EAAY1O,KAAK8D,aAAagK,GAAWnC,KAIxC9G,oBAAkB7E,KAAK8D,aAAagK,KACpCjJ,oBAAkB7E,KAAK8D,aAAagK,GAAWG,OAChDS,EAAY1O,KAAK8D,aAAagK,GAAWG,KAG7CjO,KAAK8D,aAAanD,OAAS,IAAMkE,oBAAkB7E,KAAK8D,aAAagK,MACpEjJ,oBAAkB6J,IACfA,EAAU1D,QAAQ,KAAO,IACzB0D,EAAY1O,KAAKsL,yBAAyBoD,GAAW7B,YAElD7M,KAAK4M,qBAAqB8B,IAG1BmO,GAGfza,EAASlC,UAAUkU,qBAAuB,WACtC,GAAI0I,GAAiB9c,KAAK+J,mBAAqB5E,SAASnF,KAAKwK,iBAAiBtE,MAAMmM,MAAO,IAAM,EAC7FlN,SAASnF,KAAKwK,iBAAiBtE,MAAMmM,MAAO,IAAM,CACtD,OAAOrS,MAAKyS,cAAcqK,EAAgB,SAE9C1a,EAASlC,UAAUmU,iBAAmB,WAClC,GAAIyI,GAAiB9c,KAAK+J,mBAAqB5E,SAASnF,KAAKwK,iBAAiBtE,MAAMmM,MAAO,IAAM,EAC7FlN,SAASnF,KAAKwK,iBAAiBtE,MAAMmM,MAAO,IAAM,CACtD,OAAOrS,MAAKyS,cAAcqK,EAAgB,SAE9C1a,EAASlC,UAAUsT,eAAiB,WAChC,GAAIuJ,GAAW,KACXjS,EAAW,IACf9K,MAAKqS,MAAQlN,SAASnF,KAAKwK,iBAAiBtE,MAAMmM,MAAO,IACrDrS,KAAKkE,SAASvD,OAAS,IACvBoc,EAAW/c,KAAKoS,YAAYpS,KAAKqS,OACjCvH,EAAW9K,KAAKuS,YAAYvS,KAAKqS,QAEjC0K,GAAYjS,IACZ9K,KAAK4K,aAAemS,EACpB/c,KAAK8K,SAAWA,EAChB9K,KAAK4L,cAAgB5L,KAAKoU,uBAC1BpU,KAAK0L,cAAgB1L,KAAKqU,qBAMlCjS,EAASlC,UAAU8c,cAAgB,SAAUxK,GACzC,MAA8B,eAArBxS,KAAK6D,YAAgC2O,EAAK/L,YAAYoG,WAC3D2F,EAAK9L,aAAamG,YAE1BzK,EAASlC,UAAU+c,YAAc,SAAUnP,GACvC,GAAIoP,IAAU,CAMd,QALKrY,oBAAkB7E,KAAK8D,aAAagK,MACpCjJ,oBAAkB7E,KAAK8D,aAAagK,GAAWvH,OAChDvG,KAAK8D,aAAagK,GAAWvH,KAAKyE,QAAQ,MAAQ,IAClDkS,GAAU,GAEPA,GAEX9a,EAASlC,UAAUid,kBAAoB,WACnCnd,KAAKod,wBAAiE,KAAtCpd,KAAK4K,aAAa1E,MAAMC,UAAoBnG,KAAKgd,cAAchd,KAAK4K,cAChG5K,KAAK4K,aAAa1E,MAAMC,UAC5BnG,KAAKqd,oBAAyD,KAAlCrd,KAAK8K,SAAS5E,MAAMC,UAAoBnG,KAAKgd,cAAchd,KAAK8K,UACxF9K,KAAK8K,SAAS5E,MAAMC,UACpBnG,KAAKid,YAAYjd,KAAK4L,iBACtB5L,KAAKod,wBAA0Bpd,KAAKsL,yBAAyBtL,KAAKod,yBAAyBvQ,WAC3F7M,KAAKmH,2BAA4B,GAEjCnH,KAAKid,YAAYjd,KAAK0L,iBACtB1L,KAAKqd,oBAAsBrd,KAAKsL,yBAAyBtL,KAAKqd,qBAAqBxQ,WACnF7M,KAAKoH,4BAA6B,GAEtCpH,KAAKmb,gBAAkBnb,KAAK4M,qBAAqB5M,KAAKod,wBAAwBvQ,YAC9E7M,KAAKob,kBAAoBpb,KAAK4M,qBAAqB5M,KAAKqd,oBAAoBxQ,aAEhFzK,EAASlC,UAAUod,iBAAmB,SAAU/H,EAAOE,GACnD,GAAI8H,IAAqB,CAIzB,OAHKhI,KAAUvV,KAAKiH,oBAAoBqO,GAAKG,IAAUzV,KAAKiH,oBAAoBuO,IAC5E+H,GAAqB,GAElBA,GAEXnb,EAASlC,UAAUsd,cAAgB,SAAUjT,GAWzC,MATkC,UAA9BvK,KAAK8U,aAAavK,EAAEgB,QAAuB1G,oBAAkB0F,EAAE4K,cAC1B,UAArCnV,KAAK8U,aAAavK,EAAE4K,aACNnV,KAAKsd,iBAAiB/S,EAAEgL,MAAOhL,EAAEkL,OAGV,SAAtBtM,UAAQC,KAAKC,KACxBrJ,KAAKsd,iBAAiB/S,EAAEoL,QAAQ,GAAGJ,MAAOhL,EAAEoL,QAAQ,GAAGF,OACvDzV,KAAKsd,iBAAiB/S,EAAEgL,MAAOhL,EAAEkL,QAI7CrT,EAASlC,UAAUud,UAAY,WAC3Bzd,KAAK4G,OAAS,CACd,IAAIA,GAA8B,eAArB5G,KAAK6D,aAAiC7D,KAAKsC,QAAQmE,YAAczG,KAAKsC,QAAQob,aAAe,GACrG1d,KAAKsC,QAAQoE,aAAe1G,KAAKsC,QAAQqb,cAAgB,CAC9D3d,MAAK4G,OAASA,GAElBxE,EAASlC,UAAUmI,YAAc,SAAUkC,GACvC,GAAKvK,KAAKwd,cAAcjT,GAAxB,CAGAvK,KAAKwT,iBACLxT,KAAKmd,oBACLnd,KAAKsM,gBAAgB/B,EACrB,IACIqT,GADAvB,EAAOrc,KAAK6d,wBAAwB7d,KAAKmc,qBAAqB5R,GAAIvK,KAAKmb,gBAAiBnb,KAAKob,kBAsCjG,IApCApb,KAAKyd,YAEDG,EADqB,eAArB5d,KAAK6D,YACmB7D,KAAKsC,QAAQkN,wBAAwB6M,KAAOA,EAChErc,KAAKwK,iBAAiBgF,wBAAwB6M,KAAOrc,KAAK4G,OAGtC5G,KAAKsC,QAAQkN,wBAAwBgN,IAAMH,EAC/Drc,KAAKwK,iBAAiBgF,wBAAwBgN,IAAMxc,KAAK4G,OAEjE5G,KAAKqd,oBACsC,gBAA9Brd,2BAA0CA,KAAKqd,oBAAoBrS,QAAQ,MAAQ,EACxFhL,KAAK4M,qBAAqB5M,KAAKqd,qBAAuBlY,SAASnF,KAAKqd,oBAAqB,IACjGrd,KAAKod,wBAC0C,gBAAlCpd,+BAA8CA,KAAKod,wBAAwBpS,QAAQ,MAAQ,EAChGhL,KAAK4M,qBAAqB5M,KAAKod,yBAA2BjY,SAASnF,KAAKod,wBAAyB,IACzGpd,KAAK8d,qBAAuBF,EAAuB5d,KAAKod,wBACxDpd,KAAK+d,qBAAuB/d,KAAKqd,oBAAsBO,EACvD5d,KAAKge,uBACDhe,KAAK+d,qBAAuB,IAC5B/d,KAAK+d,qBAAuB,GAG5B/d,KAAK8d,qBAAuB,IAC5B9d,KAAK8d,qBAAuB,GAE3B9d,KAAK+d,qBAAuB/d,KAAK8d,qBAAwB9d,KAAKqL,aAC3DrL,KAAK+d,qBAAuB/d,KAAK8d,qBACjC9d,KAAK8d,qBAAuB9d,KAAK8d,sBAAyB9d,KAAK+d,qBAAuB/d,KAAK8d,qBACrF9d,KAAKqL,YAGXrL,KAAK+d,qBAAuB/d,KAAK+d,sBAAyB/d,KAAK+d,qBAAuB/d,KAAK8d,qBACrF9d,KAAKqL,aAIdrL,KAAK+d,qBAAuB/d,KAAK8d,qBAAwB9d,KAAKqL,WAAY,CAC3E,GAAI4S,GAAaje,KAAKqL,YAAerL,KAAK+d,qBAAuB/d,KAAK8d,qBACtE9d,MAAK+d,qBAAuB/d,KAAK+d,qBAAuBE,EAE5Dje,KAAKke,6BACLle,KAAK6L,oBAEL,KAAK,GADDsS,GAAgB,EACXnd,EAAI,EAAGA,EAAIhB,KAAK8D,aAAanD,OAAQK,IACR,KAA9BhB,KAAK8D,aAAa9C,GAAGuF,KACrB4X,GAAgC,EAEU,KAArCne,KAAKkE,SAASlD,GAAGkF,MAAMC,YAC5BnG,KAAK8D,aAAa9C,GAAGuF,KAAOvG,KAAKkE,SAASlD,GAAGkF,MAAMC,UAG3D,IAAIiY,GAAmBD,IAAkBne,KAAKkE,SAASvD,MAEvD,IAA0C,KAAtCX,KAAK4K,aAAa1E,MAAMC,WAAsD,KAAlCnG,KAAK8K,SAAS5E,MAAMC,WAAqBiY,EAehFA,GACLpe,KAAK4K,aAAa1E,MAAMC,UAAYnG,KAAK8d,qBACzC7U,YAAUjJ,KAAK4K,cAAerJ,GAC9BvB,KAAK8K,SAAS5E,MAAMC,UAAYnG,KAAK+d,qBACrC9U,YAAUjJ,KAAK8K,UAAWvJ,KAGgB,KAAtCvB,KAAK4K,aAAa1E,MAAMC,WAAoBnG,KAAK4K,aAAa/H,UAAUC,SAASvB,KACjFvB,KAAK4K,aAAa1E,MAAMC,UAAYnG,KAAK8d,sBAEP,KAAlC9d,KAAK8K,SAAS5E,MAAMC,WAAoBnG,KAAK8K,SAASjI,UAAUC,SAASvB,KACzEvB,KAAK8K,SAAS5E,MAAMC,UAAYnG,KAAK+d,2BA1B8D,CACvG,GAAIM,GAAkBre,KAAKkE,SAASvD,OAASX,KAAKiE,QAAQtD,MACtDX,MAAK4L,gBAAkByS,GACvBre,KAAK8K,SAAS5E,MAAMC,UAAYnG,KAAK+d,qBACrC9U,YAAUjJ,KAAK8K,UAAWvJ,IAErBvB,KAAK0L,gBAAkB2S,GAC5Bre,KAAK4K,aAAa1E,MAAMC,UAAYnG,KAAK8d,qBACzC7U,YAAUjJ,KAAK4K,cAAerJ,KAG9BvB,KAAK8K,SAAS5E,MAAMC,UAAYnG,KAAK+d,qBACrC9U,YAAUjJ,KAAK8K,UAAWvJ,IAiBlC,GAAI+c,GAAsD,KAAtCte,KAAK4K,aAAa1E,MAAMC,WAAsD,KAAlCnG,KAAK8K,SAAS5E,MAAMC,SAC9EnG,MAAKkE,SAASvD,OAAS,IAAM2d,GAC/Bte,KAAKgW,uBAGb5T,EAASlC,UAAUqe,iBAAmB,SAAUzQ,EAAW0Q,GACvD,GACIC,GAEAC,EAHA/R,EAAe,KAEfsR,EAAa,CAkBjB,OAhBKpZ,qBAAkB7E,KAAK8D,aAAagK,KAAgBjJ,oBAAkB7E,KAAK8D,aAAagK,GAAWnC,OACpGgB,EAAe3M,KAAK8D,aAAagK,GAAWnC,IAAIkB,YAE/ChI,oBAAkB8H,KACfA,EAAa3B,QAAQ,KAAO,IAC5B2B,EAAe3M,KAAKsL,yBAAyBqB,GAAcE,YAG3D2R,GADJC,EAAoBze,KAAK4M,qBAAqBD,MAE1CsR,EAAcO,EAAmBC,GAAsB,EAAI,EACtDD,EAAmBC,EACxBze,KAAKqL,WAAarL,KAAKqL,WAAa4S,EACpCje,KAAKoL,aAAepL,KAAK6W,yBAAyB7W,KAAKqL,YACvDqT,EAAeD,IAGhB5Z,oBAAkB6Z,GAAgBF,EAAmBE,GAEhEtc,EAASlC,UAAUye,iBAAmB,SAAU7Q,EAAW0Q,GACvD,GACII,GACAF,EAFAG,EAAe,IAiBnB,OAdKha,qBAAkB7E,KAAK8D,aAAagK,KAAgBjJ,oBAAkB7E,KAAK8D,aAAagK,GAAWG,OACpG4Q,EAAe7e,KAAK8D,aAAagK,GAAWG,IAAIpB,YAE/ChI,oBAAkBga,KACfA,EAAa7T,QAAQ,KAAO,IAC5B6T,EAAe7e,KAAKsL,yBAAyBuT,GAAchS,YAG3D2R,GADJI,EAAoB5e,KAAK4M,qBAAqBiS,MAE1C7e,KAAKqL,WAAarL,KAAKqL,YAAcmT,EAAmBI,GACxD5e,KAAKoL,aAAepL,KAAK6W,yBAAyB7W,KAAKqL,YACvDqT,EAAeE,IAGhB/Z,oBAAkB6Z,GAAgBF,EAAmBE,GAEhEtc,EAASlC,UAAU8d,qBAAuB,WAEtChe,KAAK8d,qBAAuB9d,KAAKue,iBAAiBve,KAAK4L,cAAe5L,KAAK8d,sBAE3E9d,KAAK+d,qBAAuB/d,KAAKue,iBAAiBve,KAAK0L,cAAe1L,KAAK+d,sBAE3E/d,KAAK8d,qBAAuB9d,KAAK2e,iBAAiB3e,KAAK4L,cAAe5L,KAAK8d,sBAE3E9d,KAAK+d,qBAAuB/d,KAAK2e,iBAAiB3e,KAAK0L,cAAe1L,KAAK+d,uBAE/E3b,EAASlC,UAAU4e,iBAAmB,WAClC,GAAIb,EACCje,MAAK8d,qBAAuB9d,KAAK+d,qBAAwB/d,KAAKoL,eAC/D6S,EAAcje,KAAK8d,qBAAuB9d,KAAK+d,qBAAwB/d,KAAKoL,aAC5EpL,KAAK8d,qBAAuB9d,KAAK8d,qBAAwBG,EAAa,EAAK,IAC3Eje,KAAK+d,qBAAuB/d,KAAK+d,qBAAwBE,EAAa,EAAK,KAE1Eje,KAAK8d,qBAAuB9d,KAAK+d,qBAAwB/d,KAAKoL,eAC/D6S,EAAaje,KAAKoL,cAAgBpL,KAAK8d,qBAAuB9d,KAAK+d,sBACnE/d,KAAK8d,qBAAuB9d,KAAK8d,qBAAwBG,EAAa,EAAK,IAC3Eje,KAAK+d,qBAAuB/d,KAAK+d,qBAAwBE,EAAa,EAAK,MAGnF7b,EAASlC,UAAUge,2BAA6B,WACxCle,KAAKmH,2BAA6BnH,KAAKoH,4BACvCpH,KAAK8d,qBAAuB/B,KAAKgD,MAAMC,OAAOjD,KAAKgD,MAC7C,GADmD/e,KAAK6W,yBAAyB7W,KAAK8d,uBAChF,KACZ9d,KAAK+d,qBAAuBhC,KAAKgD,MAAMC,OAAOjD,KAAKgD,MAC7C,GADmD/e,KAAK6W,yBAAyB7W,KAAK+d,uBAChF,KACsB,IAA9B/d,KAAK8d,uBACL9d,KAAK+d,qBAAuB/d,KAAKoL,cAEH,IAA9BpL,KAAK+d,uBACL/d,KAAK8d,qBAAuB9d,KAAKoL,cAEjCpL,KAAK8d,qBAAuB9d,KAAK+d,uBAAyB/d,KAAKoL,aAC/DpL,KAAK8e,oBAGL9e,KAAK8d,qBAAuB9d,KAAK8d,qBAAuB,IACxD9d,KAAK+d,qBAAuB/d,KAAK+d,qBAAuB,KAE5D/d,KAAK8d,qBAAwB9d,+BAAkCA,KAAK8d,qBAChE9d,KAAKsL,yBAAyBtL,KAAK8d,sBAAwB,KAC/D9d,KAAK+d,qBAAwB/d,gCAAmCA,KAAK+d,qBACjE/d,KAAKsL,yBAAyBtL,KAAK+d,sBAAwB,KAC/D/d,KAAKmH,2BAA4B,EACjCnH,KAAKoH,4BAA6B,IAGlCpH,KAAK8d,qBAAuB9d,KAAK8d,qBAAuB,KACxD9d,KAAK+d,qBAAuB/d,KAAK+d,qBAAuB,OAGhE3b,EAASlC,UAAU2L,mBAAqB,WAC/B7L,KAAK4K,aAAa/H,UAAUC,SAASvB,IAAwD,KAAtCvB,KAAK4K,aAAa1E,MAAMC,WAAsBnG,KAAK4K,aAAa/H,UAAUC,SAh7D5H,eAi7DN9C,KAAK4K,aAAa/H,UAAUgE,IAAItF,GAE/BvB,KAAK8K,SAASjI,UAAUC,SAASvB,IAAoD,KAAlCvB,KAAK8K,SAAS5E,MAAMC,WAAsBnG,KAAK8K,SAASjI,UAAUC,SAn7DhH,eAo7DN9C,KAAK8K,SAASjI,UAAUgE,IAAItF,IAGpCa,EAASlC,UAAU2d,wBAA0B,SAAUoB,EAAYC,EAAqB7B,GACpF,GAAI8B,GAAyC,eAArBnf,KAAK6D,YAAgC7D,KAAKwK,iBAAiB4U,WAC/Epf,KAAKwK,iBAAiB6U,UACtBC,EAAeH,EAAmBD,EAClCK,EAAgBlC,EAAsB8B,EACtCK,EAAexf,KAAK2c,UAAU3c,KAAK4L,cAAe5L,KAAK4K,aAAc,OACrE6U,EAAezf,KAAK2c,UAAU3c,KAAK0L,cAAe1L,KAAK8K,SAAU,OACjE4U,EAAe1f,KAAK2c,UAAU3c,KAAK4L,cAAe5L,KAAK4K,aAAc,OACrE+U,EAAe3f,KAAK2c,UAAU3c,KAAK0L,cAAe1L,KAAK8K,SAAU,OACjE8U,EAAgBX,CAqBpB,OApBKpa,qBAAkB6a,IACfT,EAAaK,EAAeI,IAC5BE,EAAgBN,EAAeI,GAGlC7a,oBAAkB8a,IACfV,EAAaM,EAAgBI,IAC7BC,EAAgBL,EAAgBI,GAGpCV,EAAaM,EAAgBE,GACzB5a,oBAAkB6a,IAAiBE,IAAkBN,EAAeI,KACpEE,EAAgBL,EAAgBE,GAG/BR,EAAaK,EAAeE,IAC7B3a,oBAAkB8a,IAAiBC,IAAkBL,EAAgBI,KACrEC,EAAgBN,EAAeE,GAGhCI,GAEXxd,EAASlC,UAAUqI,UAAY,SAAUgC,GACrCvB,eAAahJ,KAAKwK,kBAr+DH,sBAs+DfxK,KAAKkX,oBASL,KAAK,GARDjG,IACAnF,MAAOvB,EACPjI,QAAStC,KAAKsC,QACdkQ,MAAOxS,KAAK4K,aAAc5K,KAAK8K,UAC/B5F,OAAQlF,KAAK4L,cAAe5L,KAAK0L,eACjCgG,UAAW1R,KAAKwK,iBAChB0Q,UAAWlb,KAAKmb,gBAAiBnb,KAAKob,oBAEjCpa,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQ0R,iBAAiB,UAAUrT,OAAQK,IAChEhB,KAAKsC,QAAQ0R,iBAAiB,UAAUhT,GAAGkF,MAAMmV,cAAgB,MAGrE,IADArb,KAAKwN,QAAQ,aAAcyD,GACvBjR,KAAK6f,kBAAmB,CACxB,GAAI5F,GAAaja,KAAK8D,YACtBmW,GAAWja,KAAKoU,wBAAwB7N,KAAOvG,KAAKkE,SAASlE,KAAKoU,wBAAwBlO,MAAMC,UAChG8T,EAAWja,KAAKqU,oBAAoB9N,KAAOvG,KAAKkE,SAASlE,KAAKqU,oBAAoBnO,MAAMC,UACxFnG,KAAK2O,eAAgB7K,aAAgBmW,IAAc,KAG3D7X,EAASlC,UAAU4f,eAAiB,SAAU5a,EAAO6a,GACjD,GACIxZ,GADAiI,EAAauR,EAAMpf,MAEvBwE,UAASnF,KAAK4J,UAAU5J,KAAKsC,SAAU,IAClCuC,oBAAkB7E,KAAK8D,aAAaoB,IAsBrCoK,oBAAkByQ,EAAM7a,IAAUmN,MAAiB,EAARnN,IArBtCL,oBAAkB7E,KAAK8D,aAAaoB,GAAOqB,OAgB5CvG,KAAKggB,UAAW,EAChB1Q,oBAAkByQ,EAAM7a,IAAUmN,MAAiB,EAARnN,MAhB3CqB,EAAOvG,KAAK8D,aAAaoB,GAAOqB,KAC5BrB,EAAQsJ,IACRc,oBAAkByQ,EAAM7a,IAAU+a,aAAc1Z,EAAM8L,MAAiB,EAARnN,IAC3DA,EAAQsJ,EAAa,GAAuC,KAAlCxO,KAAK8D,aAAaoB,GAAOqB,KACnD0C,YAAU8W,EAAM7a,IAAS3D,GAEnBvB,KAAKggB,WACXD,EAAM7a,GAAOgB,MAAMC,UAAY,MAE9BjB,IAAUsJ,EAAa,GAAMxO,KAAKggB,UAA8C,KAAlChgB,KAAK8D,aAAaoB,GAAOqB,MACxE0C,YAAU8W,EAAM7a,IAAS3D,KAYzCvB,KAAK+G,UAAUwI,KAAa,EAARrK,IAExB9C,EAASlC,UAAUuF,YAAc,SAAUya,EAAUC,GACjDA,EAAU3a,UAAY,GACtB0a,EAAiC,mBAAWlgB,KAAK8M,eAAeoT,GAAYA,EAC5ElgB,KAAKogB,gBAAgBD,EAAWD,GAE5BlgB,KAAK+E,SACL/E,KAAKqgB,wBAIbje,EAASlC,UAAUkgB,gBAAkB,SAAUE,EAAKC,GAGhD,GAAIC,GAAUxgB,KAAK8S,cAAc,MACjC9S,MAAKygB,eAAeD,EAASD,EAAK,WACA,IAA9BC,EAAQtO,WAAWvR,WAChBwN,MAAM3L,KAAKge,EAAQtO,YAAY9D,QAAQ,SAAUsS,GAChDJ,EAAIvN,YAAY2N,MAI5Bte,EAASlC,UAAUugB,eAAiB,SAAUH,EAAKK,EAAKC,GAGpD,GAAqB,mBACjB,GAAe,MAAXD,EAAI,IAAyB,MAAXA,EAAI,GAAY,CAClC,GAAIE,GAAS5W,SAAS6E,cAAc6R,EACpC,KAAK9b,oBAAkBgc,GASnB,MARA7gB,MAAKyH,gBAAgB8H,KAAKsR,GACG,SAAzBA,EAAO3a,MAAM4a,SACbD,EAAO3a,MAAM6a,eAAe,WAEK,KAAjCF,EAAOjT,aAAa,UACpBiT,EAAOzR,gBAAgB,aAE3BkR,GAAIvN,YAAY8N,EAIhBF,GAAMA,EAAIK,WAIdL,GAAMA,EAAIK,MAGlB,IAAIC,EAKAA,GAJCpc,oBAAkB8b,EAAIO,WAIVC,UAAQR,GAHRQ,UAAQR,EAAIO,UAK7B,IAAIE,EACCvc,qBAAkBoc,KACnBG,EAAcH,KAAejhB,KAAM4gB,EAAM5gB,KAAKsC,QAAQ+e,GAAK,UAAYrhB,KAAKkE,SAASvD,OAAOkM,YAAY,KAEvGhI,oBAAkBoc,IAAeG,GAAeA,EAAYzgB,OAAS,MACnEwN,MAAM3L,KAAK4e,GAAahT,QAAQ,SAAUC,GACzCiS,EAAIvN,YAAY1E,MAI5BjM,EAASlC,UAAUiQ,gBAAkB,SAAUqC,EAAMtN,GAEjDlF,KAAK8D,aAAaoB,GAAOqH,YAActD,YAAUuJ,GAnlEvC,iBAmlE6DxJ,eAAawJ,GAnlE1E,kBAqlEdpQ,EAASlC,UAAUiE,gBAAkB,SAAU7D,GAE3C,IAAK,GADDkO,GAAalO,EAAOyN,SAASpN,OACxBK,EAAI,EAAGA,EAAIhB,KAAK8D,aAAanD,OAAQK,IAC1C,GAAIwN,EAAaxO,KAAK8D,aAAanD,OAAQ,CACvC,GAAI2gB,GAAethB,KAAK8S,cAAc,MACtC9S,MAAKsC,QAAQyQ,YAAYuO,GACzB9S,GAA0B,EAGlCA,EAAalO,EAAOyN,SAASpN,MAC7B,IAAIof,MAAW5R,MAAM3L,KAAKlC,EAAOyN,SAEjC,IADA/N,KAAKggB,UAAW,EACZxR,EAAa,EACb,IAASxN,EAAI,EAAGA,EAAIwN,EAAYxN,IAEF,QAAtB+e,EAAM/e,GAAGugB,UAA4C,SAAtBxB,EAAM/e,GAAGugB,WACxCvhB,KAAKkE,SAASqL,KAAKwQ,EAAM/e,IACA,eAArBhB,KAAK6D,aACLoF,YAAU8W,EAAM/e,KAAMG,EAAMC,EAjnElC,iBAknEMpB,KAAK8f,eAAe9e,EAAG+e,KAGvB9W,YAAU8W,EAAM/e,KAAMG,EAAME,EArnElC,iBAsnEMrB,KAAK8f,eAAe9e,EAAG+e,IAEtBlb,oBAAkB7E,KAAK8D,aAAa9C,KAAQ6D,oBAAkB7E,KAAK8D,aAAa9C,GAAG8D,UACpF9E,KAAKyF,YAAYzF,KAAK8D,aAAa9C,GAAG8D,QAASib,EAAM/e,KAEpD6D,oBAAkB7E,KAAK8D,aAAa9C,KAAOhB,KAAK8D,aAAa9C,GAAGsC,UACjEtD,KAAKqD,YAAY0c,EAAM/e,GAAIhB,KAAK8D,aAAa9C,GAAGsC,UAE/CuB,oBAAkB7E,KAAK8D,aAAa9C,KACrChB,KAAKmQ,gBAAgB4P,EAAM/e,GAAIA,KAYnDoB,EAASlC,UAAUsM,OAAS,SAAUtH,GAClClF,KAAK8F,kBAAkBZ,GACvBlF,KAAKuY,mBAAmBrT,GAAO,IAQnC9C,EAASlC,UAAUuM,SAAW,SAAUvH,GACpClF,KAAKwE,YAAYU,GACjBlF,KAAKuY,mBAAmBrT,GAAO,IAOnC9C,EAASlC,UAAUshB,QAAU,WACzB,IAAKxhB,KAAKyhB,YAAa,CAMnB,IALAzf,EAAO9B,UAAUshB,QAAQhf,KAAKxC,MAC9BgK,eAAaS,OAAOR,SAAU,mBAAoBjK,KAAK0I,sBACvD1I,KAAK0I,qBAAuB,KAC5BsB,eAAaS,OAAOzK,KAAKsC,QAAS,UAAWtC,KAAKsK,QAClDtK,KAAKsC,QAAQ6H,cAAcC,YAAY2L,oBAAoB,SAAU/V,KAAKiI,oBAAoB,GACvFjI,KAAKsC,QAAQof,WAAW/gB,OAAS,GACpCX,KAAKsC,QAAQ8M,gBAAgBpP,KAAKsC,QAAQof,WAAW,GAAGrY,KAE5D,KAASrI,EAAI,EAAGA,EAAIhB,KAAK4I,QAAQ8Y,WAAW/gB,OAAQK,IAChDhB,KAAKsC,QAAQ6M,aAAanP,KAAK4I,QAAQ8Y,WAAW1gB,GAAGqI,KAAMrJ,KAAK4I,QAAQ8Y,WAAW1gB,GAAG+L,MAEtF/M,MAAK2hB,aACL1Y,YAAUjJ,KAAKsC,UAAW,YAAa,QAASpB,IAChDlB,KAAKiE,WACLjE,KAAKkE,aAETlE,KAAKuO,cAEDvO,KAAK+E,SACL/E,KAAK+D,eAET,IAAI6d,GAAa5hB,KAAKsC,QAAQ0R,iBAAiB,eAC/C,IAAI4N,EAAWjhB,OAAS,EACpB,IAASK,EAAI,EAAGA,EAAI4gB,EAAWjhB,OAAQK,IACnCgJ,eAAaS,OAAOmX,EAAW5gB,GAAI,aAAchB,KAAKmX,cACtDnN,eAAaS,OAAOmX,EAAW5gB,GAAI,aAAchB,KAAK8P,aACtD9F,eAAaS,OAAOmX,EAAW5gB,GAAI,QAAShB,KAAKmX,cACjDnN,eAAaS,OAAOmX,EAAW5gB,GAAI,YAAahB,KAAK8P,aACjD8R,EAAW5gB,GAAGuS,uBACdqO,EAAW5gB,GAAG+U,oBAAoB,QAAS6L,EAAW5gB,GAAGuS,sBACzDqO,EAAW5gB,GAAGuS,qBAAuB,MAErCqO,EAAW5gB,GAAGyS,sBACdmO,EAAW5gB,GAAG+U,oBAAoB,OAAQ6L,EAAW5gB,GAAGyS,qBACxDmO,EAAW5gB,GAAGyS,oBAAsB,MAEpCmO,EAAW5gB,GAAGwT,4BACdoN,EAAW5gB,GAAG+U,oBAAoB,aAAc6L,EAAW5gB,GAAGwT,2BAC9DoN,EAAW5gB,GAAGwT,0BAA4B,MAE1CoN,EAAW5gB,GAAG0T,4BACdkN,EAAW5gB,GAAG+U,oBAAoB,aAAc6L,EAAW5gB,GAAG0T,2BAC9DkN,EAAW5gB,GAAG0T,0BAA4B,MAE1CkN,EAAW5gB,GAAG4T,0BACdgN,EAAW5gB,GAAG+U,oBAAoB,WAAY6L,EAAW5gB,GAAG4T,yBAC5DgN,EAAW5gB,GAAG4T,wBAA0B,MAExCgN,EAAW5gB,GAAG6T,2BACd+M,EAAW5gB,GAAG+U,oBAAoB,YAAa6L,EAAW5gB,GAAG6T,0BAC7D+M,EAAW5gB,GAAG6T,yBAA2B,MAE7C+M,EAAW5gB,GAAG2S,WAAWkO,YAAYD,EAAW5gB,GAGxD,IAAI0R,GAAQ1S,KAAKsC,QAAQ0R,iBAAiB,UAC1C,IAAItB,EAAM/R,OAAS,EACf,IAAK,GAAIK,GAAI,EAAGA,EAAI0R,EAAM/R,OAAQK,IAE9B,IADA0R,EAAM1R,GAAG6B,UAAU4H,OAAOrJ,EAAcC,EAAcE,EA1tExD,eA0tEkFJ,EAtsE/E,cAfF,iBAKD,gBAOA,aAEA,iBAwsESuR,EAAM1R,GAAG0gB,WAAW/gB,OAAS,GAChC+R,EAAM1R,GAAGoO,gBAAgBsD,EAAM1R,GAAG0gB,WAAW,GAAGrY,KAI5DrJ,MAAKiE,WACLjE,KAAKiE,QAAU,KACfjE,KAAKkE,YACLlE,KAAKkE,SAAW,KAChBlE,KAAK4K,aAAe,KACpB5K,KAAK8K,SAAW,KAChB9K,KAAKwK,iBAAmB,KACxBxK,KAAK4I,QAAU,KACf5I,KAAKoZ,QAAU,KACfpZ,KAAKqZ,QAAU,KACfrZ,KAAKyH,gBAAkB,OAG/BrF,EAASlC,UAAUqO,YAAc,WAC7B,GAAIvO,KAAKyH,gBAAgB9G,OAAS,EAC9B,IAAK,GAAIK,GAAI,EAAGA,EAAIhB,KAAKyH,gBAAgB9G,OAAQK,IAC7ChB,KAAKyH,gBAAgBzG,GAAGkF,MAAM4a,QAAU,OACxC7W,SAAS6L,KAAK/C,YAAY/S,KAAKyH,gBAAgBzG,KAI3DoB,EAASlC,UAAU4hB,aAAe,SAAUtP,GAOxC,MANyB,eAArBxS,KAAK6D,YACLoF,YAAUuJ,IAAQrR,EAAMC,EAvvElB,iBA0vEN6H,YAAUuJ,IAAQrR,EAAME,EA1vElB,iBA4vEHmR,GAEXpQ,EAASlC,UAAU6hB,iBAAmB,SAAUC,GAG5C,IAAK,GAFD9P,GAAalS,KAAKsC,QAAQ4P,WAC1BQ,KACK1R,EAAI,EAAGkR,EAAWvR,OAAS,EAAGK,IAC/BkR,EAAWlR,GAAG6B,UAAUC,SAASkf,IACjCtP,EAAMnD,KAAK2C,EAAWlR,GAG9B,KAASA,EAAI,EAAGA,EAAI0R,EAAM/R,OAAQK,IAC9B0R,EAAM1R,GAAGkF,MAAM6a,eAAe,UAGtC3e,EAASlC,UAAU+hB,aAAe,WAC9B,IAAK,GAAIjhB,GAAI,EAAGA,EAAIhB,KAAKkE,SAASvD,OAAQK,IACtChB,KAAK8f,eAAe9e,EAAGhB,KAAKkE,WAGpC9B,EAASlC,UAAUgiB,gBAAkB,WACjC,IAAK,GAAIlhB,GAAI,EAAGA,EAAIhB,KAAKiE,QAAQtD,OAAQK,IACrCsN,SAAOtO,KAAKiE,QAAQjD,GAExBhB,MAAKiE,YAET7B,EAASlC,UAAUiiB,YAAc,WAC7BniB,KAAKiiB,eACLjiB,KAAKkiB,kBACLliB,KAAKoE,aAAapE,KAAKsC,UAE3BF,EAASlC,UAAUmT,cAAgB,SAAU+O,GACzC,GAAIpa,GAAShI,KAAK6H,UAAUwa,YAAYD,EACxC,OAAmB,KAAXpa,EAAiBoa,EAAOpa,GAEpC5F,EAASlC,UAAU+F,qBAAuB,SAAUtD,GAChD,GAAI2f,GAAY3f,GAAWA,EAAQqF,QAAoC,gBAAnBrF,GAAQqF,OAAsBrF,EAAQqF,OAAShI,KAAKgI,MACxGhI,MAAK6H,UAAY,GAAIC,QAAK9H,KAAK+H,gBAAiBlG,EAAuBygB,GACvEtiB,KAAKuiB,WASTngB,EAASlC,UAAUsiB,QAAU,SAAUC,EAAgBvd,GACnD,GAAIwd,GAAU1iB,KAAK8S,cAAc,MACjC4P,GAAU1iB,KAAK8hB,aAAaY,GAC5Bxd,EAASA,EAAQlF,KAAKkE,SAASvD,OAAS,EAAKX,KAAKkE,SAASvD,OAASuE,CACpE,IAAIyd,IACApc,KAAM1B,oBAAkB4d,EAAelc,MAAQ,GAAKkc,EAAelc,KACnEoF,IAAK9G,oBAAkB4d,EAAe9W,KAAO,KAAO8W,EAAe9W,IACnEsC,IAAKpJ,oBAAkB4d,EAAexU,KAAO,KAAOwU,EAAexU,IACnEnJ,QAASD,oBAAkB4d,EAAe3d,SAAW,GAAK2d,EAAe3d,QACzEsH,YAAWvH,oBAAkB4d,EAAerW,YAAoBqW,EAAerW,UAC/EG,aAAa1H,oBAAkB4d,EAAelW,cAAuBkW,EAAelW,YACpF1G,WAAWhB,oBAAkB4d,EAAe5c,YAAqB4c,EAAe5c,UAChFvC,SAAUuB,oBAAkB4d,EAAenf,UAAY,GAAKmf,EAAenf,SAE/EtD,MAAK8D,aAAa8e,OAAO1d,EAAO,EAAGyd,GACnC3iB,KAAK2O,eAAgB7K,aAAgB9D,KAAK8D,eAAgB,GACjC,eAArB9D,KAAK6D,aACL7D,KAAKsC,QAAQugB,aAAaH,EAAS1iB,KAAKsC,QAAQ0R,iBAAiB,IAAM5S,GAAc8D,IACrFlF,KAAK+hB,iBAAiB3gB,KAGtBpB,KAAKsC,QAAQugB,aAAaH,EAAS1iB,KAAKsC,QAAQ0R,iBAAiB,IAAM3S,GAAc6D,IACrFlF,KAAK+hB,iBAAiB1gB,IAE1BrB,KAAKkE,SAAS0e,OAAO1d,EAAO,EAAGwd,GAC/B1iB,KAAKmiB,cACLniB,KAAKyF,YAAYzF,KAAK8D,aAAaoB,GAAOJ,QAAS4d,GACnD1iB,KAAKqD,YAAYrD,KAAKkE,SAASgB,GAAQud,EAAenf,UACtDtD,KAAKkE,SAASlE,KAAKkE,SAASvD,OAAS,GAAGkC,UAAU4H,OAAOlJ,IAQ7Da,EAASlC,UAAU4iB,WAAa,SAAU5d,GACtCA,EAASA,EAAQlF,KAAKkE,SAASvD,OAAS,EAAKX,KAAKkE,SAASvD,OAASuE,CACpE,IAAI6d,GAAqC,eAArB/iB,KAAK6D,YAAgCzC,EAAeC,CACpEwD,qBAAkB7E,KAAKsC,QAAQ0R,iBAAiB,IAAM+O,GAAc7d,MAGxEoJ,SAAOtO,KAAKsC,QAAQ0R,iBAAiB,IAAM+O,GAAc7d,IACzDlF,KAAKkE,SAAS0e,OAAO1d,EAAO,GAC5BlF,KAAK+hB,iBAAiBgB,GACtB/iB,KAAKmiB,cACLniB,KAAK8D,aAAa8e,OAAO1d,EAAO,GAChClF,KAAK2O,eAAgB7K,aAAgB9D,KAAK8D,eAAgB,GACtD9D,KAAKkE,SAASvD,OAAS,GACvBX,KAAKkE,SAASlE,KAAKkE,SAASvD,OAAS,GAAGkC,UAAU4H,OAAOlJ,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,GACI4iB,gBAAejhB,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,GACI6iB,WACD7gB,EAASlC,UAAW,yBAAsB,IAC7CE,GACI6iB,WACD7gB,EAASlC,UAAW,cAAW,IAClCE,GACI6iB,WACD7gB,EAASlC,UAAW,kBAAe,IACtCE,GACI6iB,WACD7gB,EAASlC,UAAW,eAAY,IACnCE,GACI6iB,WACD7gB,EAASlC,UAAW,iBAAc,IACrCE,GACI6iB,WACD7gB,EAASlC,UAAW,qBAAkB,IACzCE,GACI6iB,WACD7gB,EAASlC,UAAW,mBAAgB,IACvCE,GACI6iB,WACD7gB,EAASlC,UAAW,gBAAa,IACpCE,GACI6iB,WACD7gB,EAASlC,UAAW,eAAY,IACnCkC,EAAWhC,GACP8iB,yBACD9gB,IAEL+gB,aC57EE9jB,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,GAS5DwiB,EAAW,aAEXC,EAAO,SAuBPC,EAAuB,SAAUthB,GAEjC,QAASshB,KACL,MAAkB,QAAXthB,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KA4C/D,MA9CAX,GAAUikB,EAAOthB,GAIjB5B,GACI8B,WAAS,KACVohB,EAAMpjB,UAAW,SAAM,IAC1BE,GACI8B,WAAS,KACVohB,EAAMpjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,KACVohB,EAAMpjB,UAAW,aAAU,IAC9BE,GACI8B,WAAS,KACVohB,EAAMpjB,UAAW,cAAW,IAC/BE,GACI8B,YAAS,IACVohB,EAAMpjB,UAAW,cAAW,IAC/BE,GACI8B,WAAS,IACVohB,EAAMpjB,UAAW,UAAO,IAC3BE,GACI8B,WAAS,IACVohB,EAAMpjB,UAAW,UAAO,IAC3BE,GACI8B,WAAS,IACVohB,EAAMpjB,UAAW,YAAS,IAC7BE,GACI8B,WAAS,IACVohB,EAAMpjB,UAAW,YAAS,IAC7BE,GACI8B,WAAS,IACVohB,EAAMpjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,IACVohB,EAAMpjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,OACVohB,EAAMpjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,OACVohB,EAAMpjB,UAAW,eAAY,IAChCE,GACI8B,WAAS,MACVohB,EAAMpjB,UAAW,aAAU,IACvBojB,GACTnhB,iBAgBEohB,EAAiC,SAAUvhB,GAE3C,QAASuhB,GAAgBlhB,EAASC,GAC9B,GAAIC,GAAQP,EAAOQ,KAAKxC,KAAMqC,EAASC,IAAYtC,IAsBnD,OArBAuC,GAAMihB,KAAO,EACbjhB,EAAMkhB,QAAU,EAChBlhB,EAAMmhB,iBAAkB,EACxBnhB,EAAMohB,cAAe,EACrBphB,EAAMqhB,MAAQ,EACdrhB,EAAMshB,MAAQ,EACdthB,EAAMuhB,OAAS,KACfvhB,EAAMwhB,QAAU,IAChBxhB,EAAMyhB,OAAS,EACfzhB,EAAM0hB,OAAS,EACf1hB,EAAM2hB,OAAS,EACf3hB,EAAM4hB,QAAU,EAChB5hB,EAAM6hB,mBAAoB,EAC1B7hB,EAAM8hB,iBAAkB,EAExB9hB,EAAM+hB,gBAAiB,EAEvB/hB,EAAMgiB,YAAc,EACpBhiB,EAAMiiB,cAAe,EACrBjiB,EAAMkiB,UAAW,EACjBC,WAAS,mBAAoBniB,EAAMoiB,sBAAuBpiB,GACnDA,EA22FX,MAn4FAlD,GAAUkkB,EAAiBvhB,GA+B3BuhB,EAAgBrjB,UAAU0H,UAAY,WAClC5H,KAAK4kB,mBACL5kB,KAAK6kB,eACL7kB,KAAK8kB,uBACL9kB,KAAK+kB,kBACL/kB,KAAKglB,uBACLhlB,KAAKilB,0BACLjlB,KAAKklB,oBACLllB,KAAKmlB,kBACLnlB,KAAKolB,YAAe5I,IAAK,GAAIH,KAAM,GAAIlZ,OAAQ,GAAIC,MAAO,IAC1DpD,KAAKqlB,cACLrlB,KAAKslB,YACLtlB,KAAKulB,aACLvlB,KAAKwlB,oBACLxlB,KAAKylB,eACLzlB,KAAK0lB,oBACL1lB,KAAK2lB,wBAA0BxX,MAAM3L,KAAKxC,KAAKsC,QAAQyL,WAE3DwV,EAAgBrjB,UAAUulB,aAAe,WACrC,IAAK,GAAIzkB,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAC/BhB,KAAK4lB,OAAO5kB,GAAGqgB,KAChBrhB,KAAK6lB,oBAAoB7lB,KAAK4lB,OAAO5kB,IAAMqgB,GAAI,UAAYrhB,KAAKyjB,QAAQ5W,aACxE7M,KAAKyjB,QAAUzjB,KAAKyjB,QAAU,GAElCzjB,KAAKulB,UAAUvlB,KAAK4lB,OAAO5kB,GAAGqgB,KAAQyE,IAAK9lB,KAAK4lB,OAAO5kB,GAAG8kB,IAAKC,IAAK/lB,KAAK4lB,OAAO5kB,GAAG+kB,MAG3FxC,EAAgBrjB,UAAU8lB,mBAAqB,SAAU1iB,EAAU2iB,GAC/D,GAAI3F,GAAMtgB,KAAK8S,cAAc,MAO7B,OANIxP,IAAYA,EAAS3C,OAAS,GAC9BsI,YAAUqX,GAAMhd,GAEhB2iB,GACA3F,EAAInR,aAAa,KAAM8W,GAEpB3F,GAQXiD,EAAgBrjB,UAAUuJ,OAAS,WAC/BzJ,KAAKsC,QAAQ6M,aAAa,OAAQ,QAClCnP,KAAKkmB,aACLlmB,KAAKmmB,kBAAmB,EACpBnmB,KAAKomB,gBAAkBpmB,KAAKqmB,mBAC5BrmB,KAAKsmB,gBAETtmB,KAAKumB,iBACLvmB,KAAKkK,iBACLlK,KAAKqgB,wBAETkD,EAAgBrjB,UAAUomB,cAAgB,WACtCtmB,KAAKwmB,MAAQvc,SAAS6I,cAAc,QACpC,IAAI2T,GAAQxc,SAAS6I,cAAc,QACnC9S,MAAKwmB,MAAM3jB,UAAUgE,IAAI,8BACzB7G,KAAKwmB,MAAMrX,aAAa,OAAQ,eAChC,KAAK,GAAInO,GAAI,EAAGA,EAAIhB,KAAK0mB,SAAU1lB,IAAK,CAEpC,IAAK,GADD2lB,GAAK1c,SAAS6I,cAAc,MACvBzN,EAAI,EAAGA,EAAIrF,KAAK4mB,QAASvhB,IAAK,CACnC,GAAIwhB,GAAK5c,SAAS6I,cAAc,KAChC+T,GAAGhkB,UAAUgE,IAAI,wBACjB7G,KAAK8mB,eAAgB/Z,OAAS+Y,IAAK9kB,EAAE6L,WAAYkZ,IAAK1gB,EAAEwH,WAAYka,MAAO,IAAKC,MAAO,MAASH,GAChG7mB,KAAKinB,iBAAiBJ,EAAI7lB,EAAGqE,GAC7BrF,KAAKknB,kBAAkBL,GAAMf,IAAK9kB,EAAG+kB,IAAK1gB,EAAG0hB,MAAO,EAAGC,MAAO,IAC9DL,EAAG5T,YAAY8T,GAEnBJ,EAAM1T,YAAY4T,GAEtB3mB,KAAKwmB,MAAMzT,YAAY0T,GACvBzmB,KAAKsC,QAAQyQ,YAAY/S,KAAKwmB,OAC9BxmB,KAAKqgB,wBAETkD,EAAgBrjB,UAAUgmB,WAAa,WAEnC,GADAlmB,KAAKmnB,kBACDnnB,KAAKsC,QAAQ8kB,kBAAoB,GAAKpnB,KAAKsC,QAAQ0R,iBAAiB,YAAYrT,OAAS,EAAG,CAC5F,GAAI0mB,KACJrnB,MAAK2O,eAAgBiX,YAAc,GACnC5lB,KAAKokB,mBAAoB,CACzB,KAASpjB,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQ0R,iBAAiB,YAAYrT,OAAQK,IAClEqmB,EAAc9X,KAAMvP,KAAKsC,QAAQ0R,iBAAiB,YAAYhT,GAElE,KAASA,EAAI,EAAGA,EAAIqmB,EAAc1mB,OAAQK,IAAK,CACvCsmB,EAAeD,EAAcrmB,EAC7BhB,MAAKuE,WACL0E,YAAUqe,GAAe,SAE7BtnB,KAAKunB,gBAAgBD,GACrBtnB,KAAKwnB,SACLxnB,KAAK0mB,SAET,IAAK,GAAI1lB,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAAK,CACzC,GAAIsmB,GAAetnB,KAAKsC,QAAQwM,cAAc,IAAM9O,KAAK4lB,OAAO5kB,GAAGqgB,GAEnE,IADArhB,KAAKynB,gBAAgBznB,KAAK4lB,OAAO5kB,IAC7BhB,KAAK0nB,eAAiB1nB,KAAK4lB,OAAO5kB,GAAG+kB,KACrC/lB,KAAK0nB,eAAkB1nB,KAAK4lB,OAAO5kB,GAAG+kB,IAAM/lB,KAAK4lB,OAAO5kB,GAAG+lB,MAAQ,CACnE,GAAIY,GAAW3nB,KAAK0nB,eAAiB1nB,KAAK4lB,OAAO5kB,GAAG+lB,KACpD/mB,MAAK6lB,oBAAoB7lB,KAAK4lB,OAAO5kB,IAAM+kB,IAAK4B,EAAW,EAAI,EAAIA,IAEvE3nB,KAAK4nB,gBAAgBN,EAActnB,KAAK4lB,OAAO5kB,GAC/C,IAAI6mB,GAAU7nB,KAAK8nB,aAAaR,EAActnB,KAAK4lB,OAAO5kB,GAAIhB,KAAK4lB,OAAO5kB,GAAGqgB,IAAI,EACjFrhB,MAAK4kB,gBAAgBrV,KAAKsY,GAC1B7nB,KAAKknB,kBAAkBI,EAActnB,KAAK4lB,OAAO5kB,IACjDhB,KAAK+nB,WAAa/nB,KACdA,KAAKgoB,aAAe1L,OAAO2L,WAAW,IAAMjoB,KAAKgoB,WAAa,KAAKE,UACnEloB,KAAKinB,iBAAiBK,EAActnB,KAAK4lB,OAAO5kB,GAAG8kB,IAAK9lB,KAAK4lB,OAAO5kB,GAAG+kB,KACvE/lB,KAAKmoB,YAAcb,EACnBtnB,KAAKooB,kBAAkBd,EAActnB,KAAK4lB,OAAO5kB,IACjDhB,KAAKmoB,YAAc,MAEvBnoB,KAAKqoB,YAAYf,IAErBtnB,KAAKsoB,qBACDtoB,KAAKqmB,mBACLrmB,KAAKuoB,4BAITvoB,MAAKwoB,qBAAqBxoB,KAAK4lB,SAE/B5lB,KAAKyoB,eAAkBzoB,KAAKgoB,YAAc1L,OAAO2L,WAAW,IAAMjoB,KAAKgoB,WAAa,KAAKE,SACzFloB,KAAK0oB,sBAAsB1oB,KAAK4kB,iBAEpC5kB,KAAK2oB,cACL3oB,KAAK4oB,aACL5oB,KAAK6oB,eACL7oB,KAAK8oB,yBACL9oB,KAAK+oB,iBAAmB/oB,KAAK0nB,eACvB1nB,KAAKqmB,mBACPrmB,KAAKgpB,wBAEThpB,KAAKipB,gBAET1F,EAAgBrjB,UAAUmmB,gBAAkB,WACxC,MAAQrmB,MAAKgoB,YAAc1L,OAAO2L,WAAW,IAAMjoB,KAAKgoB,WAAa,KAAKE,SAE9E3E,EAAgBrjB,UAAUwlB,kBAAoB,WAC1C1lB,KAAKkpB,YACAlpB,KAAKqmB,kBACNrmB,KAAKkpB,SAAS,GAAKlpB,KAAKsC,QAAQyG,eACvB/I,KAAKsC,QAAQyG,0BAA8B/I,KAAKmpB,iBAGzDnpB,KAAKkpB,SAAS,GAAKlpB,KAAKsC,QAAQyG,eAC1B/I,KAAKsC,QAAQyG,cAA2B,YACzClE,oBAAkB7E,KAAKopB,eACxBppB,KAAKkpB,SAAS,GAAKlpB,KAAKsC,QAAQyG,gBACvB/I,KAAKsC,QAAQyG,cAActC,aAAgBzG,KAAKwnB,SAAW,GAAKxnB,KAAKopB,YAAY,IAC/EppB,KAAKwnB,UAEpBxnB,KAAKkpB,SAAS,GAAKlpB,KAAKkpB,SAAS,GAAKlpB,KAAKmpB,kBAGnD5F,EAAgBrjB,UAAUwmB,OAAS,SAAU2C,GACzC,GAAI3C,GAAS,CACb,IAAI1mB,KAAKwjB,KAAO,GAAK3e,oBAAkBwkB,GAEnC,MADA3C,GAAS1mB,KAAKwjB,IAGlB,KAAK,GAAIxiB,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAChChB,KAAK4lB,OAAO5kB,GAAGgmB,MAAQhnB,KAAK4lB,OAAO5kB,GAAG8kB,IAAMY,IAC5CA,EAAS1mB,KAAK4lB,OAAO5kB,GAAGgmB,MAAQhnB,KAAK4lB,OAAO5kB,GAAG8kB,IAMvD,OAH2B,KAAvB9lB,KAAK4lB,OAAOjlB,SACZ+lB,EAAS1mB,KAAK4mB,SAEXF,GAEXnD,EAAgBrjB,UAAUsnB,OAAS,WAC/B,GAAIA,GAAS,CAGb,OAFAA,GAASxnB,KAAK4mB,QACd5mB,KAAK0nB,eAAiBF,EACfA,GAEXjE,EAAgBrjB,UAAUooB,mBAAqB,WAC3C,IAAK,GAAItnB,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAAK,CACzC,GAAIqgB,GAAKrhB,KAAK4lB,OAAO5kB,GAAGqgB,EACxB,IAAIrhB,KAAKsC,QAAQwM,cAAc,QAAWuS,EAAK,MAA/C,CACI,GAAIyE,GAAM3gB,SAASnF,KAAKsC,QAAQwM,cAAc,QAAWuS,EAAK,MAAOzT,aAAa,YAAa,IAC3FmY,EAAM5gB,SAASnF,KAAKsC,QAAQwM,cAAc,QAAWuS,EAAK,MAAOzT,aAAa,YAAa,GAC/F5N,MAAKulB,UAAUvlB,KAAK4lB,OAAO5kB,GAAGqgB,KAAQyE,IAAKA,EAAKC,IAAKA,MAOjExC,EAAgBrjB,UAAUopB,iBAAmB,SAAUhmB,EAAU2iB,EAASxW,GACtE,GAAInN,GAAUtC,KAAK8S,cAAc,MAUjC,OATIrD,IACAxG,YAAU3G,IAAWmN,IAErBnM,GAAYA,EAAS3C,OAAS,GAC9BsI,YAAU3G,GAAUgB,GAEpB2iB,GACA3jB,EAAQ6M,aAAa,KAAM8W,GAExB3jB,GAEXihB,EAAgBrjB,UAAUqpB,eAAiB,SAAUrJ,GACjD,GAAIA,EACA,IACI,MAAwB,kBAAbA,IAA2BjW,SAAS+J,iBAAiBkM,GAAUvf,OAC/DwgB,UAAQlX,SAAS6E,cAAcoR,GAAU1a,UAAUwb,QAGnDG,UAAQjB,GAGvB,MAAOsJ,GACH,GAAIC,GAAiBvc,qBAAmBwc,SAASxJ,EACjD,OAAOiB,WAASnhB,KAAKgN,qBAA6C,mBAAYyc,EAAiBvJ,KAK3GqD,EAAgBrjB,UAAUypB,eAAiB,SAAU7kB,EAAS8kB,EAAere,EAAMse,EAAkBjJ,GACjG,GAAIK,GAAajhB,KAAKupB,eAAezkB,GACjCglB,IACJ,IAAoB,MAAfhlB,EAAQ,IAA6B,MAAfA,EAAQ,IACa,WAA5CmF,SAAS6E,cAAchK,GAASilB,QAgB/B,CACD,GAAIC,GAAa/I,KAAejhB,KAAM4gB,EAAMrV,EAAMse,EAAkB,KAAMD,EAC1E,IAAII,EAAY,CACZ,IAAK,GAAIjnB,GAAK,EAAGknB,EAAeD,EAAYjnB,EAAKknB,EAAatpB,OAAQoC,IAAM,CACxE,GAAIkK,GAAOgd,EAAalnB,EACxB+mB,GAAiBva,KAAKtC,GAE1Bid,YAAU/b,MAAM3L,KAAKsnB,GAAmBF,QAvBU,CACtD,GAAI/I,GAAS5W,SAAS6E,cAAchK,EACpC,KAAKD,oBAAkBgc,GAQnB,MAP6B,SAAzBA,EAAO3a,MAAM4a,SACbD,EAAO3a,MAAM6a,eAAe,WAEK,KAAjCF,EAAOjT,aAAa,UACpBiT,EAAOzR,gBAAgB,aAE3Bwa,GAAc7W,YAAY8N,EAI1B/b,GAAUA,EAAQkc,SAc9BuC,EAAgBrjB,UAAU4nB,aAAe,SAAUqC,EAAaC,EAAYC,EAASR,GACjF5gB,YAAUkhB,IArWN,UAKU,uBAiWdA,EAAYhb,aAAa,OAAQ,YAC7BnP,KAAKyoB,eACL0B,EAAYhb,aAAa,eAAgB,QAE7C,IAAI7L,GAAW8mB,EAAW9mB,SAAW8mB,EAAW9mB,SAASoM,MAAM,KAAO,IAQtE,IAPA1P,KAAKsqB,aAAeH,EAAYrb,cAAc,sBAC1Cqb,EAAYrb,cAAc,sBAC1B9O,KAAKspB,iBAAiBhmB,EAAU6mB,EAAY9I,GAAK,WA3WxC,qBA4Wb8I,EAAYpX,YAAY/S,KAAKsqB,cACxBF,EAAW5mB,SACZxD,KAAKuqB,aAAaJ,GAElBC,EAAWI,OAAQ,CACnB,GAAIC,GAAwBN,EAAYrb,cAAc,mBAClDqb,EAAYrb,cAAc,mBAAqB9O,KAAKspB,oBAAqBa,EAAY9I,GAAK,WAAY,GAE1G,IADApY,YAAUwhB,IAjXT,oBAkXIN,EAAYrb,cAAc,mBAAoB,CAC3CuS,EAAKrhB,KAAKsC,QAAQ+e,GAAK,iBAAmBgJ,CAC9CrqB,MAAK2pB,eAAeS,EAAWI,OAAQC,EAAuBpJ,EAAIwI,EAAkB,UACpF7pB,KAAKsqB,aAAavX,YAAY0X,GAC9BzqB,KAAKqgB,wBAGb,GAAI+J,EAAWtlB,QAAS,CACpB,GAAI4lB,GAAaN,EAAW9mB,SAAW8mB,EAAW9mB,SAASoM,MAAM,KAAO,IACxE1P,MAAK2qB,UAAYR,EAAYrb,cAAc,oBAAsBqb,EAAYrb,cAAc,oBACvF9O,KAAKspB,iBAAiBoB,EAAYP,EAAY9I,GAAK,QA/XhD,kBAgYP,IAEIuJ,GAAqB,iBAFN5qB,KAAKsqB,aAAaxb,cAAc,mBAC/CwN,OAAOnG,iBAAiBnW,KAAKsqB,aAAaxb,cAAc,oBAAoB3L,OAAS,OAC/B,GAE1D,IADA0nB,oBAAS7qB,KAAK2qB,WAAaxnB,OAAQynB,KAC9BT,EAAYrb,cAAc,oBAAqB,CAChD,GAAIuS,GAAKrhB,KAAKsC,QAAQ+e,GAAK,kBAAoBgJ,CAC/CrqB,MAAK2pB,eAAeS,EAAWtlB,QAAS9E,KAAK2qB,UAAWtJ,EAAIwI,EAAkB,WAC9E7pB,KAAKsqB,aAAavX,YAAY/S,KAAK2qB,WACnC3qB,KAAKqgB,wBAGb,MAAO8J,IAEX5G,EAAgBrjB,UAAUqqB,aAAe,SAAUjD,GAC/Cre,YAAUqe,IA5YJ,gBA8YV/D,EAAgBrjB,UAAUqnB,gBAAkB,SAAUD,GAClD,GAAIwD,IACA/D,MAAOO,EAAayD,aAAa,cAAgB5lB,SAASmiB,EAAa1Z,aAAa,cAAe,IAAM,EACzGoZ,MAAOM,EAAayD,aAAa,cAAgB5lB,SAASmiB,EAAa1Z,aAAa,cAAe,IAAM,EACzGod,SAAU1D,EAAayD,aAAa,iBAAmB5lB,SAASmiB,EAAa1Z,aAAa,iBAAkB,IAAM,EAClHqd,SAAU3D,EAAayD,aAAa,iBAAmB5lB,SAASmiB,EAAa1Z,aAAa,iBAAkB,IAAM,EAClHsd,SAAU5D,EAAayD,aAAa,iBAAmB5lB,SAASmiB,EAAa1Z,aAAa,iBAAkB,IAAM,KAClHud,SAAU7D,EAAayD,aAAa,iBAAmB5lB,SAASmiB,EAAa1Z,aAAa,iBAAkB,IAAM,KAClHkY,IAAKwB,EAAayD,aAAa,YAAc5lB,SAASmiB,EAAa1Z,aAAa,YAAa,IAAM,EACnGmY,IAAKuB,EAAayD,aAAa,YAAc5lB,SAASmiB,EAAa1Z,aAAa,YAAa,IAAM,EACnGyT,GAAIiG,EAAa1Z,aAAa,MAC9Bwd,OAAQ9D,EAAayD,aAAa,eAAiB5lB,SAASmiB,EAAa1Z,aAAa,eAAgB,IAAM,IAC5G4c,OAAQlD,EAAaxY,cAAc,oBAAsB,kBACzDhK,QAASwiB,EAAaxY,cAAc,qBAAuB,mBAE1Dgc,GAAMzJ,KACPyJ,EAAMzJ,GAAK,UAAYrhB,KAAKyjB,QAAQ5W,WACpCya,EAAanY,aAAa,KAAM2b,EAAMzJ,IACtCrhB,KAAKyjB,QAAUzjB,KAAKyjB,QAAU,GAE9B4H,cAAYP,EAAMtnB,WAClBsnB,EAAMtnB,SAAU,GAEpB8jB,EAAaphB,MAAMklB,OAAS,GAAKN,EAAMM,MACvC,IAAIE,GAAY,GAAIhI,GAAMtjB,KAAM,SAAU8qB,GAAO,EACjD9qB,MAAK4lB,OAAOrW,KAAK+b,GACjBtrB,KAAKulB,UAAUuF,EAAMzJ,KAAQyE,IAAKgF,EAAMhF,IAAKC,IAAK+E,EAAM/E,MAE5DxC,EAAgBrjB,UAAUqrB,aAAe,WACrC,GAAIvrB,KAAKwrB,cAEL,IAAK,GADDnE,GAAgBrnB,KAAKsC,QAAQ0R,iBAAiB,yCACzChT,EAAI,EAAGA,EAAIqmB,EAAc1mB,OAAQK,IAAK,CAC3C,GAAI8S,GAAmC,SAAtB3K,UAAQC,KAAKC,KAAmB,wBAA0B,WAC3EW,gBAAanD,IAAIwgB,EAAcrmB,GAAI8S,EAAW9T,KAAKyrB,kBAAmBzrB,MAC5C,SAAtBmJ,UAAQC,KAAKC,MACbW,eAAanD,IAAIwgB,EAAcrmB,GAAI,aAAchB,KAAK0rB,uBAAwB1rB,QAK9FujB,EAAgBrjB,UAAU0oB,WAAa,WACnC5oB,KAAK2rB,gBAAkB3rB,KAAKuiB,QAAQpa,KAAKnI,MACzCgK,eAAanD,IAAIyV,OAAQ,SAAUtc,KAAK2rB,iBACxC3rB,KAAKurB,gBAEThI,EAAgBrjB,UAAUurB,kBAAoB,SAAUlhB,GAEpD,IAAK,GADD8D,GAAKud,UAASrhB,gBAAkB,YAC3BvJ,EAAI,EAAGhB,KAAK4lB,OAAOjlB,OAASK,EAAGA,IACpC,GAAIhB,KAAK4lB,OAAO5kB,GAAGwC,SAAWxD,KAAK4lB,OAAO5kB,GAAGqgB,KAAOhT,EAAGgT,GAAI,CACvDrhB,KAAK6rB,YAAYthB,GACjBvK,KAAK8rB,WAAavhB,EAAEgL,MACpBvV,KAAK+rB,WAAaxhB,EAAEkL,KACpB,IAAIuW,GAAuC,SAAtB7iB,UAAQC,KAAKC,KAAmB,wBAA0B,YAC3E4iB,EAAqC,SAAtB9iB,UAAQC,KAAKC,KAAmB,oBAAsB,SACpErJ,MAAKksB,mBACNliB,eAAanD,IAAIoD,SAAU+hB,EAAehsB,KAAKmsB,kBAAmBnsB,MAClEA,KAAKksB,kBAAmB,GAEvBlsB,KAAKosB,iBACNpiB,eAAanD,IAAIoD,SAAUgiB,EAAajsB,KAAKqsB,gBAAiBrsB,MAC9DA,KAAKosB,gBAAiB,KAKtC7I,EAAgBrjB,UAAU2rB,YAAc,SAAUthB,GAC9CvK,KAAK2jB,cAAe,EACpB3jB,KAAKssB,mBAAqBtsB,KAAKusB,YAAYvsB,KAAK4lB,OAChD,IAAIvX,GAAKud,UAASrhB,gBAAkB,YAChCiiB,GAAS1gB,MAAOvB,EAAGjI,QAAS+L,EAAIoe,cAAc,EAClDzsB,MAAKwN,QAAQ,cAAegf,GAC5BxsB,KAAK0sB,WAAaniB,EAAEoiB,cACpB3sB,KAAK4sB,UAAY3iB,SAAS6I,cAAc,OACxC9S,KAAK4sB,UAAU/pB,UAAUgE,IAAI,YAC7BoC,YAAUjJ,KAAKsC,UA5eH,cA6eZtC,KAAKsC,QAAQyQ,YAAY/S,KAAK4sB,WAC9B5sB,KAAKqgB,uBACLrgB,KAAK6sB,SAAWnR,WAAWrN,EAAGnI,MAAMmW,MACpCrc,KAAK8sB,SAAWpR,WAAWrN,EAAGnI,MAAMsW,KACpCxc,KAAK+sB,aAAe1e,EAAG5H,YACvBzG,KAAKgtB,cAAgB3e,EAAG3H,aACxB1G,KAAKitB,cAAgBjtB,KAAKktB,gBAAgB7e,EAAGgT,IAAI0F,MACjD/mB,KAAKmtB,eAAiBntB,KAAKktB,gBAAgB7e,EAAGgT,IAAI2F,MAClDhnB,KAAKotB,YAAcptB,KAAKktB,gBAAgB7e,EAAGgT,IAAIyE,KAEnDvC,EAAgBrjB,UAAUwrB,uBAAyB,SAAUnhB,GACzDvK,KAAK6rB,YAAYthB,GACjBvK,KAAK8rB,WAAavhB,EAAE8iB,eAAe,GAAG9X,MACtCvV,KAAK+rB,WAAaxhB,EAAE8iB,eAAe,GAAG5X,MACjCzV,KAAKksB,mBACNliB,eAAanD,IAAIoD,SAAU,YAAajK,KAAKstB,uBAAwBttB,MACrEA,KAAKksB,kBAAmB,GAEvBlsB,KAAKosB,iBACNpiB,eAAanD,IAAIoD,SAAU,WAAYjK,KAAKqsB,gBAAiBrsB,MAC7DA,KAAKosB,gBAAiB,IAG9B7I,EAAgBrjB,UAAUqtB,YAAc,WACpC,OAAQvtB,KAAKkpB,SAAS,GAAIlpB,KAAKkpB,SAAS,KAE5C3F,EAAgBrjB,UAAUstB,iBAAmB,SAAUjjB,GACnDvK,KAAKytB,WAAaztB,KAAK0sB,UACvB,IACIF,IAAS1gB,MAAOvB,EAAGjI,QADdspB,UAAS5rB,gBAAkB,YACAysB,cAAc,EAClDzsB,MAAKwN,QAAQ,SAAUgf,IAE3BjJ,EAAgBrjB,UAAUwtB,oBAAsB,SAAUrf,GACtDrO,KAAK2tB,QAAU3tB,KAAKsC,QAAQmE,YAAc,EAC1CzG,KAAK8jB,OAAS9jB,KAAKkpB,SAAS,GAAKlpB,KAAK+jB,QAAU,EAChD/a,eAAaqF,GAAK,sBAClBpF,YAAUoF,IAAM+U,GAEhB,KAAK,GADDwK,IA3gBD,SACA,SACC,UACA,UAII,eADA,eAEA,eACA,gBAmgBC5sB,EAAI,EAAGA,EAAIhB,KAAKytB,WAAW5qB,UAAUlC,OAAQK,KACS,IAAvD4sB,EAAY5iB,QAAQhL,KAAKytB,WAAW5qB,UAAU7B,MAC9ChB,KAAK6tB,YAAe7tB,KAAKytB,WAAW5qB,UAAU7B,KAI1DuiB,EAAgBrjB,UAAUisB,kBAAoB,SAAU5hB,GACpDvK,KAAKwtB,iBAAiBjjB,EACtB,IAAI8D,GAAKud,UAAS5rB,gBAAkB,WACpC,IAAIA,KAAK8rB,aAAevhB,EAAEgL,OAASvV,KAAK+rB,aAAexhB,EAAEkL,MAAzD,CAGAzV,KAAK0tB,oBAAoBrf,EACzB,IAAI+b,GAAapqB,KAAKktB,gBAAgB7e,EAAGT,aAAa,MACtD5N,MAAKgkB,OAASzZ,EAAEgL,MAChBvV,KAAKikB,OAAS1Z,EAAEkL,KAChB,IAAIqY,GAAQ9tB,KAAKikB,OAASjkB,KAAK+rB,WAAa/rB,KAAK6jB,MAC7CkK,EAAQ/tB,KAAKgkB,OAAShkB,KAAK8rB,WAAa9rB,KAAK4jB,KACjD5jB,MAAK4jB,MAAQ5jB,KAAK6jB,MAAQ,EAC1B7jB,KAAK+rB,WAAa/rB,KAAKikB,OACvBjkB,KAAK8rB,WAAa9rB,KAAKgkB,OACvBhkB,KAAKguB,cAAc3f,EAAI+b,EAAY2D,EAAOD,KAE9CvK,EAAgBrjB,UAAUotB,uBAAyB,SAAU/iB,GACzDvK,KAAKwtB,iBAAiBjjB,EACtB,IAAI8D,GAAKud,UAAS5rB,gBAAkB,WACpC,IAAIA,KAAK8rB,aAAevhB,EAAE8iB,eAAe,GAAG9X,OAASvV,KAAK+rB,aAAexhB,EAAE8iB,eAAe,GAAG5X,MAA7F,CAGAzV,KAAK0tB,oBAAoBrf,EACzB,IAAI+b,GAAapqB,KAAKktB,gBAAgB7e,EAAGT,aAAa,MACtD5N,MAAKgkB,OAASzZ,EAAE8iB,eAAe,GAAG9X,MAClCvV,KAAKikB,OAAS1Z,EAAE8iB,eAAe,GAAG5X,KAClC,IAAIsY,GAAQ/tB,KAAKgkB,OAAShkB,KAAK8rB,WAAa9rB,KAAK4jB,MAC7CkK,EAAQ9tB,KAAKikB,OAASjkB,KAAK+rB,WAAa/rB,KAAK6jB,KACjD7jB,MAAK4jB,MAAQ5jB,KAAK6jB,MAAQ,EAC1B7jB,KAAK8rB,WAAa9rB,KAAKgkB,OACvBhkB,KAAK+rB,WAAa/rB,KAAKikB,OACvBjkB,KAAKguB,cAAc3f,EAAI+b,EAAY2D,EAAOD,KAG9CvK,EAAgBrjB,UAAU8tB,cAAgB,SAAU3f,EAAI+b,EAAY6D,EAAUC,GAC1E,GAAIC,GAAWnuB,KAAKktB,gBAAgB7e,EAAGgT,IAAI0F,MACvCqH,EAAWpuB,KAAKktB,gBAAgB7e,EAAGgT,IAAI2F,MACvCqH,EAAKH,EACLI,EAAKL,CA4CT,IA3CIjuB,KAAK6tB,YAAY7iB,QAAQ,UAAY,IACjChL,KAAKgtB,cAAgBqB,EAAKruB,KAAKuuB,aAAanE,IAC5C8D,EAAWluB,KAAKgtB,cAAgBhtB,KAAKuuB,aAAanE,GAClDpqB,KAAK6jB,MAAQwK,EAAKH,GAEb9D,EAAWe,UAAYnrB,KAAKgtB,cAAgBqB,EAAKruB,KAAKwuB,aAAapE,IACxE8D,EAAWluB,KAAKgtB,cAAgBhtB,KAAKwuB,aAAapE,GAClDpqB,KAAK6jB,MAAQwK,EAAKH,GAEbluB,KAAK8sB,SAAWuB,EAAKruB,KAAKkkB,SAC/BgK,EAAWluB,KAAKkkB,OAASlkB,KAAK8sB,SAC9B9sB,KAAK6jB,MAAQwK,EAAKH,GAEtBluB,KAAK8sB,UAAYoB,EACjBluB,KAAKgtB,eAAiBkB,GAEtBluB,KAAK6tB,YAAY7iB,QAAQ,UAAY,IACjChL,KAAKgtB,cAAgBqB,EAAKruB,KAAKuuB,aAAanE,IAC5C8D,EAAWluB,KAAKuuB,aAAanE,GAAcpqB,KAAKgtB,cAChDhtB,KAAK6jB,MAAQwK,EAAKH,GAEb9D,EAAWe,UAAYnrB,KAAKgtB,cAAgBqB,EAAKruB,KAAKwuB,aAAapE,KACxE8D,EAAWluB,KAAKwuB,aAAapE,GAAcpqB,KAAKgtB,cAChDhtB,KAAK6jB,MAAQwK,EAAKH,GAEtBluB,KAAKgtB,eAAiBkB,GAEtBluB,KAAK6tB,YAAY7iB,QAAQ,SAAW,IAChChL,KAAK+sB,aAAeuB,EAAKtuB,KAAKyuB,YAAYrE,IAC1C6D,EAAWjuB,KAAK+sB,aAAe/sB,KAAKyuB,YAAYrE,GAChDpqB,KAAK4jB,MAAQ0K,EAAKL,GAEb7D,EAAWc,UAAYlrB,KAAK+sB,aAAeuB,EAAKtuB,KAAK0uB,YAAYtE,IACtE6D,EAAWjuB,KAAK+sB,aAAe/sB,KAAK0uB,YAAYtE,GAChDpqB,KAAK4jB,MAAQ0K,EAAKL,GAEbjuB,KAAK6sB,SAAWyB,EAAKtuB,KAAKmkB,UAC/B8J,EAAWjuB,KAAKmkB,QAAUnkB,KAAK6sB,SAC/B7sB,KAAK4jB,MAAQ0K,EAAKL,GAEtBjuB,KAAK6sB,UAAYoB,EACjBjuB,KAAK+sB,cAAgBkB,GAErBjuB,KAAK6tB,YAAY7iB,QAAQ,SAAW,EAAG,CACnChL,KAAK+sB,aAAeuB,EAAKtuB,KAAKyuB,YAAYrE,IAC1C6D,EAAWjuB,KAAKyuB,YAAYrE,GAAcpqB,KAAK+sB,aAC/C/sB,KAAK4jB,MAAQ0K,EAAKL,GAEb7D,EAAWc,UAAYlrB,KAAK+sB,aAAeuB,EAAKtuB,KAAK0uB,YAAYtE,KACtE6D,EAAWjuB,KAAK0uB,YAAYtE,GAAcpqB,KAAK+sB,aAC/C/sB,KAAK4jB,MAAQ0K,EAAKL,EAEtB,IAAIU,GAAe3uB,KAAK+sB,YACxB/sB,MAAK+sB,cAAgBkB,CACrB,IAAIW,GAAW5uB,KAAK6uB,gBAAgB7uB,KAAK+sB,aAAgB3C,QAAoBpqB,KAAKopB,YAAY,IAAI,EAC9FppB,MAAK4mB,QAAUwD,EAAWrE,IAAM6I,IAChC5uB,KAAK+sB,aAAe4B,GAG5BtgB,EAAGnI,MAAMsW,IAAMxc,KAAK8sB,SAAW,KAC/Bze,EAAGnI,MAAMmW,KAAOrc,KAAK6sB,SAAW,KAChCxe,EAAGnI,MAAM9C,MAAQpD,KAAK+sB,aAAe,KACrC1e,EAAGnI,MAAM/C,OAASnD,KAAKgtB,cAAgB,IACvC,IAAI/f,GAAOjN,KAAK8uB,mBAAmB1E,EAanC,IAZInd,EAAK8Y,IAAM9Y,EAAK8Z,MAAQ/mB,KAAK4mB,SAC7B5mB,KAAK6lB,oBAAoB5Y,GAAQ8Z,MAAO9Z,EAAK8Z,MAAQ,IAEzD/mB,KAAK4sB,UAAU1mB,MAAMsW,IAAQvP,EAAK6Y,IAAM9lB,KAAKutB,cAAc,GAAMtgB,EAAK6Y,IAAM9lB,KAAKopB,YAAY,GAAQ,KACjGppB,KAAK6tB,YAAY7iB,QAAQ,SAAW,EACpChL,KAAK4sB,UAAU1mB,MAAMmW,KAASpP,EAAK8Y,IAAM/lB,KAAKutB,cAAc,IAAQtgB,EAAK8Y,IAAM,GAAK/lB,KAAKopB,YAAY,GAAO,KAG5GppB,KAAK4sB,UAAU1mB,MAAMmW,KAASpP,EAAK8Y,IAAM/lB,KAAKutB,cAAc,GAAQtgB,MAAYjN,KAAKopB,YAAY,GAAO,KAE5GppB,KAAK4sB,UAAU1mB,MAAM/C,OAAW8J,EAAK+Z,OAAShnB,KAAKutB,cAAc,GAAMvtB,KAAKopB,YAAY,IAAS,KACjGppB,KAAK4sB,UAAU1mB,MAAM9C,MAAU6J,EAAK8Z,OAAS/mB,KAAKutB,cAAc,GAAMvtB,KAAKopB,YAAY,IAAS,KAC5F+E,IAAalhB,EAAK8Z,OAASqH,IAAanhB,EAAK+Z,MAAO,CACpDmH,EAAWlhB,EAAK8Z,MAChBqH,EAAWnhB,EAAK+Z,KAChB,IAAI8D,GAAQ9qB,KAAKktB,gBAAgB7e,EAAGgT,IAChCtU,GACA2U,YACIoE,IAAKgF,EAAMhF,IAAIjZ,WACfkZ,IAAK+E,EAAM/E,IAAIlZ,WACfka,MAAO+D,EAAM/D,MAAMla,WACnBma,MAAO8D,EAAM9D,MAAMna,YAG3B7M,MAAK8mB,cAAc/Z,EAAOsB,GAC1BrO,KAAKmoB,YAAc9Z,EACnBrO,KAAK+uB,kBACL/uB,KAAKooB,kBAAkB/Z,EAAIrO,KAAKktB,gBAAgB7e,EAAGgT,KACnDrhB,KAAKsoB,qBACLtoB,KAAK2oB,gBAGbpF,EAAgBrjB,UAAUmsB,gBAAkB,SAAU9hB,GAClD,IAAI1F,oBAAkB7E,KAAK0sB,YAA3B,CAGA1sB,KAAKgvB,SAAWhvB,KAAK0sB,UACrB,IAAIre,GAAKud,UAAS5rB,cAAgB,YAC9BwsB,GAAS1gB,MAAOvB,EAAGjI,QAAS+L,EAAIoe,cAAc,EAClD,IAAIpe,EAAI,CACJpF,YAAUoF,GAAK,qBACf,IAAI2d,GAAuC,SAAtB7iB,UAAQC,KAAKC,KAAmB,wBAA0B,YAC3E4iB,EAAqC,SAAtB9iB,UAAQC,KAAKC,KAAmB,oBAAsB,SACzEW,gBAAaS,OAAOR,SAAU+hB,EAAehsB,KAAKmsB,mBAClDniB,eAAaS,OAAOR,SAAUgiB,EAAajsB,KAAKqsB,iBACtB,SAAtBljB,UAAQC,KAAKC,OACbW,eAAaS,OAAOR,SAAU,YAAajK,KAAKstB,wBAChDtjB,eAAaS,OAAOR,SAAU,WAAYjK,KAAKqsB,kBAEnDrsB,KAAKosB,gBAAiB,EACtBpsB,KAAKksB,kBAAmB,EACpBlsB,KAAK4sB,WACLte,SAAOtO,KAAK4sB,WAEhB5sB,KAAK4sB,UAAY,IACjB,IAAIxC,GAAapqB,KAAKktB,gBAAgB7e,EAAGT,aAAa,MACtD5N,MAAKinB,iBAAiB5Y,EAAI+b,EAAWtE,IAAKsE,EAAWrE,KACrD/lB,KAAKknB,kBAAkB7Y,EAAI+b,GAE/BphB,eAAaqF,IAAM+U,IACnBoJ,EAAK5G,OAAS5lB,KAAKivB,oBACnBjvB,KAAKwN,QAAQ,aAAcgf,GAC3BxsB,KAAK2jB,cAAe,EACpB3jB,KAAK8rB,WAAa9rB,KAAK+rB,eAAamD,GACpClvB,KAAK4jB,MAAQ5jB,KAAK6jB,MAAQ,EAC1B7jB,KAAKmoB,YAAc,KACfnoB,KAAKmvB,eACLnvB,KAAKovB,mBAETpvB,KAAK6oB,eACL7oB,KAAK8oB,yBACL9oB,KAAKqvB,iBAAgB,KAEzB9L,EAAgBrjB,UAAU+uB,kBAAoB,WAI1C,MAHKjvB,MAAK2jB,cACN3jB,KAAK6oB,eAEF7oB,KAAKsvB,oBAEhB/L,EAAgBrjB,UAAU4uB,mBAAqB,SAAU7hB,GACrD,GAAIsiB,IAAY,EACZxJ,EAAM9Y,EAAK8Y,KAC+C,KAAzD,SAAU,gBAAgB/a,QAAQhL,KAAK6tB,eACxC9H,EAAM/lB,KAAK6uB,gBAAgB7uB,KAAK6sB,UAAU,GAE9C,IAAI/G,GAAM7Y,EAAK6Y,KACgC,KAA1C,WAAW9a,QAAQhL,KAAK6tB,eACzB/H,EAAM9lB,KAAKwvB,aAAaxvB,KAAK8sB,UAAU,GACnC9sB,KAAKotB,cAAgBtH,IACrB9lB,KAAKotB,YAActH,EACnByJ,GAAY,GAGpB,IAAIxI,GAAQ9Z,EAAK8Z,OACyC,KAArD,UAAW,WAAW/b,QAAQhL,KAAK6tB,eACpC9G,EAAQ/mB,KAAK6uB,gBAAgB7uB,KAAK+sB,aAAe,EAAU/sB,KAAKopB,YAAY,IAAI,GAEpF,IAAIpC,GAAQ/Z,EAAK+Z,KAcjB,QAbwD,KAAnD,SAAU,UAAUhc,QAAQhL,KAAK6tB,eACT,YAArB7tB,KAAK6tB,aAA4B0B,KACjCvI,EAAQhnB,KAAKwvB,aAAaxvB,KAAKgtB,cAAgB,EAAUhtB,KAAKopB,YAAY,IAAI,IAGlFnc,EAAK8Y,IAAMgB,EAAQ/mB,KAAK4mB,UACxB3Z,EAAK8Z,MAAQA,EAAQ,IAETjB,GAAO,GAAKC,GAAO,GAAKgB,EAAQhB,GAAO/lB,KAAKwnB,UAAYR,EAAQlB,GAAO9lB,KAAK0mB,UACK,IAA/E1mB,KAAKyvB,WAAW3J,EAAKC,EAAKgB,EAAOC,EAAOhnB,KAAK0vB,aAAaziB,EAAKoU,KAAK1gB,SACzD,IAAtBX,KAAK2vB,eACR3vB,KAAK6lB,oBAAoB5Y,GAAQ6Y,IAAKA,EAAKC,IAAKA,EAAKgB,MAAOA,EAAOC,MAAOA,IAEvE/Z,GAEXsW,EAAgBrjB,UAAU2uB,gBAAkB,SAAUe,EAAQC,GAC1D,MAAIA,GACO9T,KAAKC,KAAK4T,EAAS5vB,KAAKkpB,SAAS,IAGjCnN,KAAK+T,MAAMF,GAAU5vB,KAAKkpB,SAAS,GAAKlpB,KAAKopB,YAAY,MAGxE7F,EAAgBrjB,UAAUsvB,aAAe,SAAUI,EAAQC,GACvD,MAAIA,GACO9T,KAAKgD,MAAM6Q,EAAS5vB,KAAKkpB,SAAS,IAGlCnN,KAAKgD,MAAM6Q,GAAU5vB,KAAKkpB,SAAS,GAAKlpB,KAAKopB,YAAY,MAGxE7F,EAAgBrjB,UAAUuuB,YAAc,SAAUxhB,GAC9C,MAAUA,YAAiBjN,KAAKutB,cAAc,IAAOtgB,EAAK+d,SAAW,GAAKhrB,KAAKopB,YAAY,IAE/F7F,EAAgBrjB,UAAUwuB,YAAc,SAAUzhB,GAC9C,MAAQA,YAAiBjN,KAAKutB,cAAc,IAEhDhK,EAAgBrjB,UAAUquB,aAAe,SAAUthB,GAC/C,MAAUA,YAAiBjN,KAAKutB,cAAc,IAAOtgB,EAAKge,SAAW,GAAKjrB,KAAKopB,YAAY,IAE/F7F,EAAgBrjB,UAAUsuB,aAAe,SAAUvhB,GAC/C,MAAQA,YAAiBjN,KAAKutB,cAAc,IAEhDhK,EAAgBrjB,UAAUyoB,YAAc,WACpC3oB,KAAK6kB,cACL,KAAK,GAAI7jB,GAAI,EAAG+uB,EAAI/vB,KAAK4kB,gBAAgBjkB,OAAQK,EAAI+uB,IAAK/uB,EACtDhB,KAAKgwB,SAAShwB,KAAK4kB,gBAAgB5jB,KAG3CuiB,EAAgBrjB,UAAUkvB,iBAAmB,WACzC,IAA2B,IAAvBpvB,KAAKmvB,cAAT,CAGA,IAAK,GAAIc,GAAW,EAAGF,EAAI/vB,KAAK6kB,YAAYlkB,OAAQsvB,EAAWF,IAAKE,EAAU,CAC1E,GAAIrJ,GAAU5mB,KAAK6kB,YAAYoL,EAC/B,IAAKrJ,EAGL,IAAK,GAAIsJ,GAAW,EAAGha,EAAM0Q,EAAQjmB,OAAQuvB,EAAWha,IAAOga,EAAU,CACrE,GAAIjjB,GAAO2Z,EAAQsJ,EACfjjB,IACAjN,KAAKmwB,gBAAgBljB,IAIjCjN,KAAKowB,oBAET7M,EAAgBrjB,UAAUiwB,gBAAkB,SAAUljB,GAClD,IAA2B,IAAvBjN,KAAKmvB,eAA2BliB,IAASjN,KAAKmoB,YAAlD,CASA,IANA,GAAI+H,GAAWlwB,KAAKktB,gBAAgBjgB,EAAKoU,IAAI0E,IACzCiB,EAAQ7hB,SAAS8H,EAAKW,aAAa,cAAe,IAClDmZ,EAAQ5hB,SAAS8H,EAAKW,aAAa,cAAe,IAClDyiB,EAAe,KACfC,EAAkB,KAClBL,EAAW9qB,SAAS8H,EAAKW,aAAa,YAAa,IAAM,EACtDqiB,GAAY,GAEM,IADTjwB,KAAKyvB,WAAWQ,EAAUC,EAAUnJ,EAAOC,EAAO/Z,GACpDtM,QAGV0vB,EAAeJ,EACfK,EAAkBJ,IAChBD,CAEe,QAAjBI,GACArwB,KAAKgwB,SAAS/iB,EAAMojB,EAAcC,KAG1C/M,EAAgBrjB,UAAU8vB,SAAW,SAAU/iB,EAAMsjB,EAAUC,GAC3DxwB,KAAK+kB,iBACL,IAAI0L,GAAStrB,SAAS8H,EAAKW,aAAa,YAAa,IACjDkY,EAAM3gB,SAAS8H,EAAKW,aAAa,YAAa,GAKlD,IAJK5N,KAAK6kB,YAAYiB,KAClB9lB,KAAK6kB,YAAYiB,OAErB9lB,KAAK6kB,YAAYiB,GAAK2K,GAAUxjB,MACnBiiB,KAATjiB,OAAmCiiB,KAAbqB,OAA0CrB,KAAhBsB,EAA2B,CAC3E,OAAgCtB,KAA5BlvB,KAAKulB,UAAUtY,EAAKoU,KAAqD,OAAhCrhB,KAAKulB,UAAUtY,EAAKoU,IAAIyE,SAC1B,KAAhC9lB,KAAKulB,UAAUtY,EAAKoU,IAAI0E,IAAqB,CAEhD,GAAI2K,GAAS1wB,KAAK6kB,YAAY7kB,KAAKulB,UAAUtY,EAAKoU,IAAIyE,IAClD9lB,MAAKulB,UAAUtY,EAAKoU,KAAOqP,EAAO1wB,KAAKulB,UAAUtY,EAAKoU,IAAI0E,OAAS9Y,UAC5DyjB,GAAO1wB,KAAKulB,UAAUtY,EAAKoU,IAAI0E,KACtC/lB,KAAKsoB,qBACLtoB,KAAK2oB,eAIjB3oB,KAAKulB,UAAUtY,EAAKoU,IAAIyE,IAAMyK,EAC9BvwB,KAAKulB,UAAUtY,EAAKoU,IAAIyE,IAAM0K,EACzBxwB,KAAK6kB,YAAYiB,KAClB9lB,KAAK6kB,YAAYiB,OAErB9lB,KAAK6kB,YAAYiB,GAAK2K,GAAUxjB,GACK,IAAjCjN,KAAKslB,SAASta,QAAQiC,IACtBjN,KAAKslB,SAAS/V,KAAKtC,GAEvBjN,KAAK6lB,oBAAoB7lB,KAAKktB,gBAAgBjgB,EAAKoU,KAAOyE,IAAKyK,EAAUxK,IAAKyK,GAC9E,IAAIpG,GAAapqB,KAAKktB,gBAAgBjgB,EAAKoU,GAC3CrhB,MAAK8mB,eAAgB/Z,OAASgZ,IAAKqE,EAAWrE,IAAIlZ,WAAYiZ,IAAKsE,EAAWtE,IAAIjZ,aAAgBI,GAClGjN,KAAK2wB,aAAa1jB,EAAMjN,KAAKktB,gBAAgBjgB,EAAKoU,OAG1DkC,EAAgBrjB,UAAUywB,aAAe,SAAUruB,EAAS8nB,GACxDpqB,KAAKinB,iBAAiB3kB,EAAS8nB,EAAWtE,IAAKsE,EAAWrE,KAC1D/lB,KAAKknB,kBAAkB5kB,EAAS8nB,GAChCpqB,KAAKmnB,kBACLnnB,KAAK2oB,eAETpF,EAAgBrjB,UAAUqiB,QAAU,WAGhC,GAFAviB,KAAKukB,YAAc,EACnBvkB,KAAKumB,iBACDvmB,KAAKqmB,kBACLrmB,KAAKuoB,4BAEJ,CACD,GAAIvoB,KAAKsC,QAAQO,UAAUC,SAv2BtB,gBAu2B4C,CAC7CkG,eAAahJ,KAAKsC,UAx2BjB,gBA02BD,KAAK,GADDsuB,GAAiB5wB,KAAKsC,QAAQ0R,kBAAmBhU,KAAKsC,WAAc,IAAMtC,KAAKsC,QAAQ+e,GAAK,MAAQ,IAAM,YACrGrgB,EAAI,EAAGA,EAAI4vB,EAAejwB,OAAQK,IAAK,CAC5C,GAAIsf,GAAMsQ,EAAe5vB,GACrB6vB,EAAe7wB,KAAKktB,gBAAgB5M,EAAIe,IACxCyE,EAAM3gB,SAASmb,EAAI1S,aAAa,YAAa,IAC7CmY,EAAM5gB,SAASmb,EAAI1S,aAAa,YAAa,GACjD5N,MAAK6lB,oBAAoBgL,GAAgB/K,IAAKA,EAAKC,IAAKA,IACxD/lB,KAAKknB,kBAAkB5G,EAAKtgB,KAAKktB,gBAAgB5M,EAAIe,KACrDrhB,KAAKinB,iBAAiB3G,EAAKwF,EAAKC,GAChC/lB,KAAKmnB,mBAGbnnB,KAAKgpB,wBACLhpB,KAAKowB,kBAEJvrB,oBAAkB7E,KAAK4kB,mBACxB5kB,KAAK8wB,oBAAoB9wB,KAAK4kB,iBAC9B5kB,KAAKqoB,WAAWroB,KAAK4kB,kBAEzB5kB,KAAKurB,eACA1mB,oBAAkB7E,KAAK4kB,kBACxB5kB,KAAK+wB,cAAc/wB,KAAKmlB,iBAGhC5B,EAAgBrjB,UAAUkwB,gBAAkB,WACpCpwB,KAAKsC,QAAQwM,cAAc,iCACvB9O,KAAKwmB,OACLlY,SAAOtO,KAAKwmB,OAEhBxmB,KAAKsmB,kBAGb/C,EAAgBrjB,UAAU6wB,cAAgB,SAAU5L,GAChD,GAAInlB,KAAKqmB,oBAAsBrmB,KAAKyoB,cAChC,IAASznB,EAAI,EAAGA,EAAImkB,EAAexkB,OAAQK,IACvCmkB,EAAenkB,GAAGwgB,cAGrB,CACD,IAAK,GAAIxgB,GAAI,EAAGA,EAAImkB,EAAexkB,OAAQK,IACvCmkB,EAAenkB,GAAGwgB,SAEtBxhB,MAAK0oB,sBAAsB1oB,KAAK4kB,mBAGxCrB,EAAgBrjB,UAAU8wB,WAAa,WAenC,IAAK,GAdDlG,MAaAmG,EAASjxB,KACJ8lB,EAAM,EAAGA,GAAO9lB,KAAKwjB,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,EAAgBrjB,UAAUqoB,sBAAwB,WAC9Ctf,YAAUjJ,KAAKsC,UA36BN,gBA46BT,IAAI6uB,EAEAA,GADAnxB,KAAKskB,gBAAkBtkB,KAAK4lB,OACb5lB,KAAK4lB,OAGL5lB,KAAKgxB,aAExBhxB,KAAKoxB,YAAcD,EAAaxwB,MAChC,KAAK,GAAIK,GAAI,EAAGA,EAAImwB,EAAaxwB,OAAQK,IAAK,CAC1C,GAAIsmB,GAAerd,SAASonB,eAAeF,EAAanwB,GAAGqgB,IACvDiQ,MAAgB,EAChBhK,KACAuD,oBAASvD,GAAgBlkB,MAAS,SAClCkkB,EAAaphB,MAAM/C,OAAS,KAAQnD,KAAKsC,QAAQyG,eAC1C/I,KAAKsC,QAAQyG,cAActC,YAAczG,KAAKmpB,iBAAmBgI,EAAanwB,GAAGgmB,MAAS,KAC7FmK,EAAanwB,GAAGgmB,MAAQ,IACxBsK,GAAkBtxB,KAAKsC,QAAQyG,eACxB/I,KAAKsC,QAAQyG,cAActC,YAAczG,KAAKmpB,iBAAmBgI,EAAanwB,GAAGgmB,MACpF7hB,UAAU4W,KAAKgD,MAAMoS,EAAanwB,GAAGgmB,MAAQ,GAAKhnB,KAAKopB,YAAY,IAAIvc,WAAY,IACvFya,EAAaphB,MAAM/C,OAAcmuB,EAAgB,MAErDtxB,KAAKwkB,cAAe,EACpBxkB,KAAK6lB,oBAAoBsL,EAAanwB,IAAM8kB,IAAK9kB,EAAG+kB,IAAK,IACzD/lB,KAAKinB,iBAAiBK,EAAc6J,EAAanwB,GAAG8kB,IAAKqL,EAAanwB,GAAG+kB,KACzE/lB,KAAKukB,YAAcvkB,KAAKukB,YAAc4M,EAAanwB,GAAGgmB,MACjDniB,oBAAkB7E,KAAK4kB,mBACxB5kB,KAAKqoB,WAAWroB,KAAK4kB,iBACrB5kB,KAAK8wB,oBAAoB9wB,KAAK4kB,kBAE7B/f,oBAAkB7E,KAAKmlB,iBACxBnlB,KAAK+wB,cAAc/wB,KAAKmlB,iBAIpCnlB,KAAKmnB,mBAET5D,EAAgBrjB,UAAU8oB,sBAAwB,WAC9ChpB,KAAKsC,QAAQO,UAAUgE,IAAI,gBAC3B7G,KAAK0lB,mBACL,KAAS1kB,EAAI,EAAGA,EAAIhB,KAAKsC,QAAQ0R,iBAAiB,YAAYrT,OAAQK,IAAK,CACvE,GAAIsf,GAAMtgB,KAAKsC,QAAQ0R,iBAAiB,YAAYhT,GAChDopB,EAAapqB,KAAKktB,gBAAgB5M,EAAIe,GAC1CrhB,MAAKknB,kBAAkB5G,EAAK8J,GAEhC,IAAK,GAAIppB,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IACpChB,KAAKinB,iBAAiBhd,SAASonB,eAAerxB,KAAK4lB,OAAO5kB,GAAGqgB,IAAKrhB,KAAK4lB,OAAO5kB,GAAG8kB,IAAK9lB,KAAK4lB,OAAO5kB,GAAG+kB,IAEzG/lB,MAAKmnB,mBAET5D,EAAgBrjB,UAAUinB,gBAAkB,WACxCnnB,KAAKuxB,eACLvxB,KAAKwxB,kBAETjO,EAAgBrjB,UAAUsxB,eAAiB,WACvC,GAAIC,EACJ,MAAI5sB,oBAAkB7E,KAAKopB,cAAwC,IAAvBppB,KAAK4lB,OAAOjlB,QAAgBX,KAAK4kB,iBACzC,IAAhC5kB,KAAK4kB,gBAAgBjkB,QADzB,CAIA,GAAIX,KAAKqmB,kBAAmB,CAExB,IAAK,GADDqL,GAAgB,EACX1wB,EAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAChChB,KAAK4lB,OAAO5kB,GAAGgmB,QACf0K,GAAiB1xB,KAAK4lB,OAAO5kB,GAAGgmB,MAGxCyK,GAAe,GACVzxB,KAAKsC,QAAQyG,eAAmB/I,KAAKsC,QAAQyG,0BAA8B/I,KAAKmpB,kBAChFuI,EAAgB,GAAK1xB,KAAKopB,YAAY,GAAM,SAGjDqI,GAAgBzxB,KAAK0mB,UAChB1mB,KAAKkpB,SAAS,GAAKlpB,KAAKmpB,kBAAoBnpB,KAAK0mB,SAAW,GAAK1mB,KAAKopB,YAAY,GAAM,IAEjGyB,qBAAS7qB,KAAKsC,SAAWa,OAAUsuB,GACnC,IAAIE,GAAarV,OAAOnG,iBAAiBnW,KAAKsC,SAASc,KACvDynB,qBAAS7qB,KAAKsC,SAAWc,MAASuuB,MAEtCpO,EAAgBrjB,UAAU0xB,qBAAuB,WAC7C5xB,KAAKsC,QAAQ4D,MAAM6a,eAAe,UAClC/gB,KAAKsC,QAAQ4D,MAAM6a,eAAe,UAEtCwC,EAAgBrjB,UAAUgnB,kBAAoB,SAAUI,EAAc8C,GAClES,oBAASvD,GAAgBnkB,OAAUkM,aAAWrP,KAAK6xB,gBAAgBzH,GAAY,MAC/ES,oBAASvD,GAAgBlkB,MAASiM,aAAWrP,KAAK6xB,gBAAgBzH,GAAY,OAElF7G,EAAgBrjB,UAAU4xB,WAAa,SAAUZ,EAAOrH,EAAkB3kB,GACtE,GAAIilB,EACJnqB,MAAKqlB,WAAarlB,KAAK6xB,gBAAgBX,GACnC7F,cAAY6F,EAAM1tB,WAClB0tB,EAAM1tB,SAAU,GAEhBxD,KAAK2lB,qBAAqBhlB,OAAS,IAAMkE,oBAAkBK,IAC3DilB,EAAcnqB,KAAK2lB,qBAAqBzgB,GACpCgsB,EAAM5tB,UACN2F,YAAUkhB,IAAe+G,EAAM5tB,WAE/B4tB,EAAM7P,IACN8I,EAAYhb,aAAa,KAAM+hB,EAAM7P,KAIzC8I,EAAcnqB,KAAKgmB,mBAAmBkL,EAAM5tB,SAAW4tB,EAAM5tB,SAASoM,MAAM,KAAO,KAAMwhB,EAAM7P,IAEnG8I,EAAYjkB,MAAMklB,OAAS,GAAK8F,EAAM9F,OACtCprB,KAAKsC,QAAQyQ,YAAYoX,GACzBnqB,KAAKqgB,sBACL,IAAI0R,GAAgB/xB,KAAK8nB,aAAaqC,EAAa+G,EAAOA,EAAM7P,GAAIwI,EAIpE,OAHA7pB,MAAK4kB,gBAAgBrV,KAAKwiB,GAC1B/xB,KAAK4nB,gBAAgBuC,EAAa+G,GAClClxB,KAAKknB,kBAAkBiD,EAAa+G,GAC7B/G,GAEX5G,EAAgBrjB,UAAU+mB,iBAAmB,SAAUkD,EAAarE,EAAKC,GACrE,GAAKoE,EAAL,CAGInqB,KAAKqmB,mBACLrmB,KAAK0lB,mBAET,IAAI+L,GAAczxB,KAAKutB,cAAc,GACjCoE,EAAa3xB,KAAKutB,cAAc,GAChClR,EAAe,IAAR0J,EAAY,EAAM,GAAS,EAAe/lB,KAAKopB,YAAY,IAClE5M,EAAc,IAARsJ,EAAY,EAAM,GAAS,EAAgB9lB,KAAKopB,YAAY,GAClEppB,MAAKqmB,oBACL7J,EAAc,IAARsJ,EAAY,EAAM9lB,kBAAqB,EAAgBA,KAAKopB,YAAY,KAElFyB,oBAASV,GAAe9N,KAAQA,EAAO,KAAMG,IAAOA,EAAM,SAE9D+G,EAAgBrjB,UAAUqxB,aAAe,WAErC,GADAvxB,KAAKwjB,KAAO,KACRxjB,KAAKsC,QAAQ0R,iBAAiB,YAAYrT,OAAS,IAAMX,KAAKoxB,YAE9D,IAAK,GADD/J,GAAgBrnB,KAAKsC,QAAQ0R,iBAAiB,YACzChT,EAAI,EAAGA,EAAIqmB,EAAc1mB,OAAQK,IAAK,CAC3C,GAAIsmB,GAAeD,EAAcrmB,GAC7BuvB,EAAWprB,SAASmiB,EAAa1Z,aAAa,YAAa,IAC3DokB,EAAS7sB,SAASmiB,EAAa1Z,aAAa,cAAe,GAC/D5N,MAAKwjB,KAAOzH,KAAK9N,IAAIjO,KAAKwjB,KAAO+M,EAAWyB,OAG/C,CACGhyB,KAAKoxB,cACLpxB,KAAKwjB,KAAOxjB,KAAKoxB,YACjBpxB,KAAKoxB,YAAc,KAEvB,KAASpwB,EAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IACpChB,KAAKwjB,KAAOzH,KAAK9N,IAAIjO,KAAKwjB,KAAMxjB,KAAK4lB,OAAO5kB,GAAG8kB,OAI3DvC,EAAgBrjB,UAAUunB,gBAAkB,SAAUyJ,IAC7CA,EAAMnK,OAASmK,EAAMnK,MAAQmK,EAAMlG,SACpChrB,KAAK6lB,oBAAoBqL,GAASnK,MAAOmK,EAAMlG,WAEzCkG,EAAMhG,UAAYgG,EAAMnK,MAAQmK,EAAMhG,SAC5ClrB,KAAK6lB,oBAAoBqL,GAASnK,MAAOmK,EAAMhG,WAE1CgG,EAAMnK,MAAQ/mB,KAAK4mB,QACxB5mB,KAAK6lB,oBAAoBqL,GAASnK,MAAO/mB,KAAK4mB,UAG9C5mB,KAAK6lB,oBAAoBqL,GAASnK,MAAOmK,EAAMnK,SAE9CmK,EAAMlK,OAASkK,EAAMlK,MAAQkK,EAAMjG,SACpCjrB,KAAK6lB,oBAAoBqL,GAASlK,MAAOkK,EAAMjG,WAE1CiG,EAAM/F,UAAY+F,EAAMlK,MAAQkK,EAAM/F,SAC3CnrB,KAAK6lB,oBAAoBqL,GAASlK,MAAOkK,EAAM/F,WAG/CnrB,KAAK6lB,oBAAoBqL,GAASlK,MAAOkK,EAAMlK,SAGvDzD,EAAgBrjB,UAAU+xB,kBAAoB,SAAUf,GAChDA,EAAMnL,IAAMmL,EAAMnK,MAAQ/mB,KAAK4mB,SAC/B5mB,KAAK6lB,oBAAoBqL,GAASnK,MAAOmK,EAAMnK,OAAS/mB,KAAK4mB,SAAWsK,EAAMnL,IAAMmL,EAAMnK,WAGlGxD,EAAgBrjB,UAAU2lB,oBAAsB,SAAUqL,EAAOnkB,GAC7DmkB,EAAMviB,cAAc5B,GAAO,IAE/BwW,EAAgBrjB,UAAUsoB,qBAAuB,SAAU0J,GACvD,GAAIlyB,KAAKsC,QAAQ0R,iBAAiB,YAAYrT,OAAS,GAAKX,KAAK4lB,OAAOjlB,OAAS,EAC7E,IAAK,GAAI0E,GAAI,EAAGA,EAAI6sB,EAAMvxB,OAAQ0E,IAAK,CACnCrF,KAAK8kB,oBAAoBvV,KAAK2iB,EAAM7sB,IACpCrF,KAAKynB,gBAAgByK,EAAM7sB,KACvBrF,KAAK0nB,eAAiBwK,EAAM7sB,GAAG0gB,KAC/B/lB,KAAK0nB,eAAkBwK,EAAM7sB,GAAG0gB,IAAMmM,EAAM7sB,GAAG0hB,QAC/C/mB,KAAK6lB,oBAAoBqM,EAAM7sB,IAAM0gB,IAAK/lB,KAAK0nB,eAAiBwK,EAAM7sB,GAAG0hB,OAE7E,IAAIoL,GAAOnyB,KAAK8xB,WAAWI,EAAM7sB,IAAI,EAAOA,EACxCrF,MAAKuE,WACL0E,YAAUkpB,GAAO,SAErBnyB,KAAKsC,QAAQyQ,YAAYof,GACzBnyB,KAAKqgB,uBACDrgB,KAAKqmB,mBAAqBhhB,IAAM6sB,EAAMvxB,OAAS,EAC/CX,KAAKuoB,yBAGLvoB,KAAKinB,iBAAiBkL,EAAMD,EAAM7sB,GAAGygB,IAAKoM,EAAM7sB,GAAG0gB,KACnD/lB,KAAKmoB,YAAcgK,EACnBnyB,KAAKooB,kBAAkB+J,EAAMD,EAAM7sB,IACnCrF,KAAKmoB,YAAc,MAI/BnoB,KAAKqoB,WAAWroB,KAAK4kB,kBAEzBrB,EAAgBrjB,UAAUuvB,WAAa,SAAU3J,EAAKC,EAAKgB,EAAOC,EAAOoL,GACrE,GAAIC,KACCtL,IAAUC,IACXD,EAAQC,EAAQ,IAEhBoL,GAAYA,YAAkBxyB,SAC9BwyB,GAAUA,GAGd,KAAK,GADDnlB,GACKqlB,EAAI,EAAGA,EAAItL,IAASsL,EACzB,IAAK,GAAIC,GAAI,EAAGA,EAAIxL,IAASwL,IACzBtlB,EAAOjN,KAAKwyB,SAAS1M,EAAMwM,EAAGvM,EAAMwM,EAAGH,KACzBA,IAAsF,IAA5EA,EAAOpnB,QAAQhL,KAAKsC,QAAQwM,cAAc,QAAW7B,EAAKoU,GAAK,SACR,IAA3EgR,EAAMrnB,QAAQhL,KAAKsC,QAAQwM,cAAc,QAAW7B,EAAKoU,GAAK,QAC9DgR,EAAM9iB,KAAKvP,KAAKsC,QAAQwM,cAAc,QAAW7B,EAAKoU,GAAK,MAIvE,OAAOgR,IAEX9O,EAAgBrjB,UAAUuyB,wBAA0B,SAAUC,EAAa3M,EAAKzF,GAC5E,GAAI/d,GAAQvC,KACR4mB,KACA+L,IAeJ,IAdAD,EAAYtkB,QAAQ,SAAU9L,GAC1B,GAAIkuB,GAAcrrB,SAAS7C,EAAQsL,aAAa,YAAa,IACzDglB,EAAaztB,SAAS7C,EAAQsL,aAAa,cAAe,GAC9D,IAAImY,EAAMxjB,EAAMqkB,SAAW4J,GAAezK,EACtC,GAAI6M,EAAa,EACb,IAAK,GAAI5xB,GAAIwvB,EAAaxvB,EAAIwvB,EAAcoC,EAAY5xB,IACpD4lB,EAAQrX,KAAKvO,OAIjB4lB,GAAQrX,KAAKihB,KAIrB5J,EAAQjmB,OAAS,EACjB,IAAK,GAAIK,GAAI+kB,EAAM,EAAG/kB,GAAKhB,KAAK4mB,QAAU,EAAG5lB,KACb,IAAxB4lB,EAAQ5b,QAAQhK,IAAaA,IAAM+kB,IACD,IAA9B4M,EAAc3nB,QAAQhK,IACtB2xB,EAAcpjB,KAAKvO,EAKnC,IAAI6xB,GAAiB7yB,KAAK8yB,mBAAmBxS,EAc7C,OAbAuS,GAAezkB,QAAQ,SAAUuZ,GACzBA,EAAW5B,IAA4C,IAArC4M,EAAc3nB,QAAQ2c,IACxCgL,EAAc/P,OAAO+P,EAAc3nB,QAAQ2c,GAAW,KAGtC3nB,KAAK8yB,mBAAmB9yB,KAAK+yB,iBACnC3kB,QAAQ,SAAU2X,GAC5BA,EAAM5gB,SAASmb,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,EAAgBrjB,UAAU4yB,mBAAqB,SAAUxwB,GAIrD,IAAK,GAHD2wB,MACAlM,EAAQ5hB,SAAS7C,EAAQsL,aAAa,cAAe,IACrDmY,EAAM5gB,SAAS7C,EAAQsL,aAAa,YAAa,IAC5C5M,EAAI+kB,EAAM/kB,EAAI+kB,EAAMgB,GAAS/lB,GAAKhB,KAAK4mB,QAAU5lB,IACtDiyB,EAAc1jB,KAAKvO,EAEvB,OAAOiyB,IAEX1P,EAAgBrjB,UAAUgzB,uBAAyB,SAAUR,EAAa3M,EAAKzF,GAC3E,GAAI/d,GAAQvC,KACR2yB,KACA/L,IAeJ,IAdA8L,EAAYtkB,QAAQ,SAAU9L,GAC1B,GAAIqlB,GAAWxiB,SAAS7C,EAAQsL,aAAa,YAAa,IACtDokB,EAAS7sB,SAAS7C,EAAQsL,aAAa,cAAe,GAC1D,IAAImY,GAAOxjB,EAAMqkB,SAAWe,GAAY5B,EACpC,GAAIiM,EAAS,EACT,IAAK,GAAIhxB,GAAI2mB,EAAU3mB,EAAI2mB,EAAWqK,EAAQhxB,IAC1C4lB,EAAQrX,KAAKvO,OAIjB4lB,GAAQrX,KAAKoY,KAIrBf,EAAQjmB,OAAS,EACjB,IAAK,GAAI0E,GAAI,EAAGA,GAAK0gB,EAAK1gB,KACM,IAAxBuhB,EAAQ5b,QAAQ3F,IAAaA,IAAM0gB,IACD,IAA9B4M,EAAc3nB,QAAQ3F,IACtBstB,EAAcpjB,KAAKlK,EAKnC,IAAIwtB,GAAiB7yB,KAAK8yB,mBAAmBxS,EAe7C,OAdAuS,GAAezkB,QAAQ,SAAUuZ,GACzBA,EAAW5B,IAA4C,IAArC4M,EAAc3nB,QAAQ2c,IACxCgL,EAAc/P,OAAO+P,EAAc3nB,QAAQ2c,GAAW,KAGtC3nB,KAAK8yB,mBAAmB9yB,KAAK+yB,iBACnC3kB,QAAQ,SAAU2X,GAC5BA,EAAM5gB,SAASmb,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,EAAgBrjB,UAAUkzB,oBAAsB,SAAUtN,EAAKC,EAAKiB,EAAOD,EAAOzG,GAC9EtgB,KAAKqzB,mBAAiBnE,GACtBlvB,KAAKszB,oBAAkBpE,EACvB,IACIqE,GADAC,GAAe,EAEfC,IACJzzB,MAAK0zB,kBAAgBxE,EACrB,IAAIyE,GAAWxuB,SAASmb,EAAI1S,aAAa,cAAe,IACpDgmB,EAASzuB,SAASmb,EAAI1S,aAAa,YAAa,KAEnB,KADjC6lB,EAAazzB,KAAK6zB,eAAe7zB,KAAKyvB,WAAW3J,EAAK,EAAG9lB,KAAK4mB,QAASI,QACxDhc,QAAQsV,IACnBmT,EAAWlkB,KAAK+Q,EAEpB,IAAIwT,GAAc9zB,KAAKkzB,uBAAuBO,EAAY1N,EAAKzF,EA+B/D,IA9BIwT,EAAYnzB,OAAS,GACrBX,KAAKqzB,eAAiBrzB,KAAK+zB,iBAAiBD,EAAaxT,EAAKwF,EAAKC,EAAKgB,EAAOC,GAC3EhnB,KAAKg0B,oBAAsBJ,EAAS5zB,KAAKktB,gBAAgBltB,KAAK+yB,gBAAgB1R,IAAI0F,QAClF/mB,KAAKqzB,gBAAiB,GAEtBrzB,KAAKqzB,eACLrzB,KAAKszB,iBAAkB,GAGvBtzB,KAAKqzB,gBAAiB,EACtBE,EAAevzB,KAAKyyB,wBAAwBgB,EAAY1N,EAAKzF,GAC7DtgB,KAAKszB,gBAAkBC,EAAa5yB,OAAS,GAAIX,KAAKi0B,kBAAkBV,EAAcjT,EAAKwF,EAAKC,EAAKgB,EAAOC,GACxGhnB,KAAKg0B,oBAAsBL,EAAWC,IACtC5zB,KAAKszB,iBAAkB,GAEtBtzB,KAAKszB,kBACNtzB,KAAKszB,iBAAkB,MAK/BC,EAAevzB,KAAKyyB,wBAAwBgB,EAAY1N,EAAKzF,GAC7DtgB,KAAKszB,gBAAkBC,EAAa5yB,OAAS,GAAIX,KAAKi0B,kBAAkBV,EAAcjT,EAAKwF,EAAKC,EAAKgB,EAAOC,GACxGhnB,KAAKg0B,oBAAsBL,EAAWC,IACtC5zB,KAAKszB,iBAAkB,GAEvBtzB,KAAKszB,kBACLtzB,KAAKqzB,gBAAiB,KAGzBrzB,KAAKszB,kBAAoBtzB,KAAKqzB,gBAAkBvN,EAAM,EAAG,CAC1D,GAAIoO,GAASl0B,KAAKktB,gBAAgB5M,EAAIe,IAAIyE,IACtCqO,GAAW,CACXn0B,MAAKo0B,WAAaF,IAClBC,GAAW,EAEf,KAAK,GAAI5D,GAAWzK,EAAKyK,GAAY,EAAGA,IAAY,CAChD,GAAIjuB,GAAWtC,KAAKktB,gBAAgB5M,EAAIe,IAAI2F,MAAQ,GAAKmN,EAAYn0B,KAAK+yB,gBAAkBzS,CACvFiQ,KAAa2D,GAAY3D,IAAa2D,EAASlN,GACiB,IAAjEhnB,KAAKyvB,WAAWc,EAAUxK,EAAKgB,EAAOC,EAAO1kB,GAAS3B,SACtDwzB,GAAW,EACXn0B,KAAK0zB,eAAgB,EACrB1zB,KAAKq0B,eAAiBxvB,oBAAkB7E,KAAKq0B,gBAAkB9D,EAAWvwB,KAAKq0B,eAC/Er0B,KAAKg0B,kBAAoBjO,IAUrC,OANI/lB,KAAKszB,iBAAmBtzB,KAAKqzB,gBAAkBrzB,KAAK0zB,iBACpDF,GAAe,EACX3uB,oBAAkB7E,KAAKq0B,kBACvBr0B,KAAKq0B,eAAiBvO,IAGvB0N,GAEXjQ,EAAgBrjB,UAAUo0B,oBAAsB,SAAUC,EAASxN,GAG/D,IAAK,GAFDyN,IAAmB,EACnBC,KACKzzB,EAAI,EAAGA,EAAIuzB,EAAQ5zB,OAAQK,IAChC,GAAIuzB,EAAQvzB,EAAI,GAAKuzB,EAAQvzB,IAAO,GAAKuzB,EAAQvzB,EAAI,GAAKuzB,EAAQvzB,KAAQ,GAWtE,GAVAyzB,EAAkBllB,KAAKglB,EAAQvzB,IACjB,IAAV+lB,GACA0N,EAAkBllB,KAAKglB,EAAQvzB,EAAI,IAEnCA,IAAMuzB,EAAQ5zB,OAAS,IACvB8zB,EAAkBllB,KAAKglB,EAAQvzB,EAAI,IAC/ByzB,EAAkB9zB,OAASomB,GAC3B0N,EAAkB7R,QAAQ,IAG9B6R,EAAkB9zB,SAAWomB,EAM7B,MALAyN,IAAmB,EACnBx0B,KAAKg0B,kBAAoBS,EAAkBpjB,KAAK,SAAU2hB,EAAMzX,GAAY,MAAOyX,GAAOzX,IAAa,GACnGvb,KAAKg0B,kBAAoB,IACzBh0B,KAAKg0B,kBAAoB,GAEtBQ,MAIXC,KAIR,OAAOD,IAEXjR,EAAgBrjB,UAAU2zB,eAAiB,SAAUa,GAEjD,IAAK,GADDhC,MACK1xB,EAAI,EAAGA,EAAI0zB,EAAK/zB,OAAQK,IAC7B0xB,EAAYnjB,KAAKmlB,EAAK1zB,GAE1B,OAAO0xB,IAEXnP,EAAgBrjB,UAAU6zB,iBAAmB,SAAUY,EAAQrU,EAAKwF,EAAKC,EAAKgB,EAAOC,GACjF,GAAI4N,EACJ,IAAc,IAAV7N,GAAyB,IAAVC,GAAe2N,EAAOh0B,OAAS,EAC9CX,KAAKg0B,kBAAoBW,EAAO,GAChCC,GAAmB,MAElB,IAAI7N,EAAQ,GAAe,IAAVC,EAClB4N,EAAmB50B,KAAKs0B,oBAAoBK,EAAQ5N,OAEnD,IAAIC,EAAQ,EACb,GAAc,IAAVD,EAAa,CACb,GAAI8N,OAAU,EAId,IAHIF,EAAOh0B,QAAU,IACjBk0B,GAAU,GAEVA,EACA,IAAK,GAAI7zB,GAAI,EAAGA,EAAI2zB,EAAOh0B,OAAQK,IAAK,CAEpC,GAA8B,IADThB,KAAKyvB,WAAW3J,EAAK6O,EAAO3zB,GAAI+lB,EAAOC,EAAOhnB,KAAK+yB,iBACrDpyB,OAGf,MAFAX,MAAKg0B,kBAAoBW,EAAO3zB,GAChC4zB,GAAmB,CAInBA,IAAmB,OAM/BA,GAAmB50B,KAAK80B,WAAWH,EAAQ5N,EAAOjB,EAAKkB,EAAO1G,EAGtE,OAAOsU,IAEXrR,EAAgBrjB,UAAU+zB,kBAAoB,SAAUM,EAASjU,EAAKwF,EAAKC,EAAKgB,EAAOC,GACnF,GAAI+N,EACJ,IAAc,IAAVhO,GAAyB,IAAVC,GAAeuN,EAAQ5zB,OAAS,EAC/CX,KAAKg0B,kBAAoBO,EAAQ,GACjCQ,GAAoB,MAEnB,IAAIhO,EAAQ,GAAe,IAAVC,EAClB+N,EAAoB/0B,KAAKs0B,oBAAoBC,EAASxN,OAErD,IAAIC,EAAQ,EACb,GAAc,IAAVD,EAAa,CACb,GAAI8N,OAAU,EAId,IAHIN,EAAQ5zB,QAAU,IAClBk0B,GAAU,GAEVA,EACA,IAAK,GAAI7zB,GAAI,EAAGA,EAAIuzB,EAAQ5zB,OAAQK,IAAK,CAErC,IAAK,GADDg0B,GAAiBh1B,KAAKyvB,WAAW3J,EAAKyO,EAAQvzB,GAAI+lB,EAAOC,EAAOhnB,KAAK+yB,iBAChEkC,EAAY,EAAGA,EAAYD,EAAer0B,OAAQs0B,IACnD9vB,SAASmb,EAAI1S,aAAa,YAAa,MAAQ2mB,EAAQvzB,IACvDg0B,EAAepS,OAAOoS,EAAehqB,QAAQgqB,EAAeC,IAAa,EAGjF,IAA8B,IAA1BD,EAAer0B,OAGf,MAFAo0B,IAAoB,EACpB/0B,KAAKg0B,kBAAoBO,EAAQvzB,GAC1B+zB,CAGPA,IAAoB,OAMhCA,GAAoB/0B,KAAK80B,WAAWP,EAASxN,EAAOjB,EAAKkB,EAAO1G,EAGxE,OAAOyU,IAEXxR,EAAgBrjB,UAAU40B,WAAa,SAAUP,EAASxN,EAAOjB,EAAKkB,EAAO1G,GAGzE,IAAK,GAFDyU,GACAG,KACK7vB,EAAI,EAAGA,EAAIkvB,EAAQ5zB,OAAQ0E,IAEhC,GADcrF,KAAKs0B,oBAAoBC,EAASxN,GACnC,CACT,GAAIoO,KAGJ,IAFAA,EAAW5lB,KAAKvP,KAAK+yB,iBACrBoC,EAAW5lB,KAAK+Q,GACgB,IAA5B4U,EAAiBv0B,OAEjB,MADAo0B,IAAoB,CAIpBA,IAAoB,EAIhC,MAAOA,IAEXxR,EAAgBrjB,UAAUk1B,mBAAqB,SAAUC,GAsBrD,IAAK,GApBD3C,GADAwC,KAoBAI,EAASt1B,KACJ8lB,EAAM9lB,KAAKwjB,KAAO,EAAGsC,GAAO,EAAGA,KAnB1B,SAAUA,GACpB4M,KACA2C,EAAejnB,QAAQ,SAAU9L,GACzBA,GAAWA,EAAQsL,aAAa,cAAgBkY,EAAIjZ,YACpD6lB,EAAYnjB,KAAKjN,IAUzB,KAAK,GAAImuB,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,EAAgBrjB,UAAUq1B,cAAgB,SAAUF,EAAgBjL,EAAY9J,GAC5E,GAAI/d,GAAQvC,KACRw1B,IAwBJ,OAvBKx1B,MAAKmoB,aACNnoB,KAAK2oB,cAET0M,EAAejnB,QAAQ,SAAU9L,GAC7BC,EAAMwwB,gBAAkBzwB,CACxB,IAAIwoB,GAAQvoB,EAAM2qB,gBAAgB5qB,EAAQ+e,IACtCoU,GAAUlzB,EAAM6wB,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,IACxDhuB,EAAMktB,WAAWc,EAAUzF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAO1kB,GACtE8L,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,EAAgBrjB,UAAUw1B,YAAc,SAAU5K,GAC9C,GAAI2E,GAAazvB,KAAKyvB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOhnB,KAAKmoB,YACtF,KAAKnoB,KAAKmoB,aAAenoB,KAAK21B,gBAAkB31B,KAAK2jB,cAAgB3jB,KAAK0jB,gBACtE,MAAO+L,EAEX,IAAIzvB,KAAKmoB,aAAenoB,KAAKulB,YAAcvlB,KAAK41B,YAC5C,IAAK,GAAI50B,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAAK,CACzC,GAAIsB,GAAUtC,KAAKsC,QAAQwM,cAAc,QAAW9O,KAAK4lB,OAAO5kB,GAAGqgB,GAAK,KACxE,IAAI/e,IAAYtC,KAAKmoB,YAArB,CAGA,GAAIoI,GAAWvwB,KAAK41B,YAAYtzB,EAAQ+e,IAAIyE,IACxC6B,EAAW3nB,KAAK41B,YAAYtzB,EAAQ+e,IAAI0E,GAC5C/lB,MAAKinB,iBAAiB3kB,EAASiuB,EAAU5I,GACzC3nB,KAAK6lB,oBAAoB7lB,KAAKktB,gBAAgB5qB,EAAQ+e,KAAOyE,IAAKyK,EAAUxK,IAAK4B,IACjF3nB,KAAK8mB,eAAgB/Z,OAASgZ,IAAK4B,EAAS9a,WAAYiZ,IAAKyK,EAAS1jB,aAAgBvK,GACtFtC,KAAKsoB,sBAWb,MARAtoB,MAAK6kB,YAAc7kB,KAAK61B,WACxBpG,EAAazvB,KAAKyvB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOhnB,KAAKmoB,aAClFnoB,KAAK2oB,cACL3oB,KAAKsoB,qBACDtoB,KAAK+uB,gBAAkB/uB,KAAK+uB,eAAepuB,OAAS,IAAqD,IAAhD8uB,EAAWzkB,QAAQhL,KAAK+uB,eAAe,KAChG/uB,KAAK41B,YAAY51B,KAAK+uB,eAAe,GAAG1N,IAAIyE,MAAQgF,EAAMhF,KAC1D2J,EAAWlgB,KAAKvP,KAAK+uB,eAAe,IAEjCU,GAEXlM,EAAgBrjB,UAAU41B,iBAAmB,SAAUrG,EAAYntB,GAG/D,IAAK,GAFDyzB,IAAY,EACZC,EAAWh2B,KAAKktB,gBAAgB5qB,EAAQ+e,IACnCzc,EAAQ,EAAGA,EAAQ6qB,EAAW9uB,OAAQiE,IAE3C,IAAK,GADDqxB,GAAej2B,KAAKktB,gBAAgBuC,EAAW7qB,GAAOyc,IACjDrgB,EAAI,EAAGA,EAAIg1B,EAAShP,MAAOhmB,IAAK,CACrC,GAAIk1B,KAIJ,IAHAA,EAAW3mB,KAAKjN,GAChB4zB,EAAW3mB,KAAKkgB,EAAW7qB,IACX5E,KAAKyvB,WAAWuG,EAASlQ,IAAM9kB,EAAGi1B,EAAalQ,IAAKkQ,EAAalP,MAAOkP,EAAajP,MAAOkP,GAC9Fv1B,OAAS,EAEnB,MADAo1B,IAAY,GACL,EAOnB,MAAOA,IAEXxS,EAAgBrjB,UAAUi2B,iBAAmB,SAAU1G,EAAYntB,GAC/D,GAA6C,IAAzC7C,OAAOwD,KAAKjD,KAAK41B,aAAaj1B,SAAiBX,KAAKmoB,aAAqC,IAAtBsH,EAAW9uB,OAC9E,OAAO,CAEX,IAAIy1B,GACAC,EAAalxB,SAASsqB,EAAW,GAAG7hB,aAAa,YAAa,GAOlE,IANI5N,KAAKo0B,SAAWiC,EAChBD,EAAY,EAEPp2B,KAAKo0B,UAAYiC,IACtBD,EAAY,IAEXp2B,KAAK81B,iBAAiBrG,EAAYntB,GACnC,OAAO,CAGX,KAAK,GADDg0B,IAAc,EACTC,EAAS,EAAGA,EAAS9G,EAAW9uB,OAAQ41B,IAC7C,GAAI9G,EAAW9uB,QAAU,GAAKX,KAAK41B,YAAY51B,KAAKmoB,YAAY9G,KAC5DrhB,KAAK41B,YAAY51B,KAAKmoB,YAAY9G,IAAIyE,MAAQ9lB,KAAKulB,UAAUvlB,KAAKmoB,YAAY9G,IAAIyE,IAClF,OAAO,CAMf,KAAK,GAHD0Q,GAA2B,IAAdJ,EACbp2B,KAAKktB,gBAAgBltB,KAAKmoB,YAAY9G,IAAIyE,IAAM9lB,KAAKktB,gBAAgBltB,KAAKmoB,YAAY9G,IAAI2F,MACxFhnB,KAAKo0B,SACFxvB,EAAQ,EAAGA,EAAQ6qB,EAAW9uB,OAAQiE,IAAS,CACpD,GAAI6xB,GAAkBz2B,KAAKktB,gBAAgBuC,EAAW7qB,GAAOyc,IACzDqV,EAAkB12B,KAAKktB,gBAAgB5qB,EAAQ+e,IAC/C+Q,IACJ,IAA8B,IAA1BqE,EAAgBzP,QAAsD,IAAvCoL,EAAOpnB,QAAQykB,EAAW7qB,IACzDwtB,EAAO7iB,KAAKkgB,EAAW7qB,QAEtB,IAAI6xB,EAAgBzP,MAAQ,IAA4C,IAAvCoL,EAAOpnB,QAAQykB,EAAW7qB,IAC5D,GAAkB,IAAdwxB,GAAmBM,EAAgB5Q,MAAS9lB,KAAK41B,YAAYa,EAAgBpV,IAAIyE,IAAM2Q,EAAgBzP,MAAQ,EAC/GoL,EAAO7iB,KAAKkgB,EAAW7qB,QAEtB,CAAA,GAAkB,IAAdwxB,GAAmBM,EAAgB5Q,MAAS9lB,KAAK41B,YAAYa,EAAgBpV,IAAQ,IAI1F,OAAO,CAHP+Q,GAAO7iB,KAAKkgB,EAAW7qB,IAW/B,GALI6xB,EAAgBzP,OAAS0P,EAAgB1P,QAAgD,IAAvCoL,EAAOpnB,QAAQykB,EAAW7qB,KAC5EwtB,EAAO7iB,KAAKkgB,EAAW7qB,IAE3BwtB,EAAO7iB,KAAKvP,KAAKmoB,aACGnoB,KAAKyvB,WAAW+G,EAAYC,EAAgB1Q,IAAK0Q,EAAgB1P,MAAO0P,EAAgBzP,MAAOoL,GACjGzxB,OAAS,EAEvB,MADA21B,IAAc,CAIV1xB,KAAU6qB,EAAW9uB,OAAS,IAC9B21B,GAAc,GAK1B,MAAOA,IAEX/S,EAAgBrjB,UAAUy2B,UAAY,SAAUlH,EAAYntB,EAAS8nB,GACjE,GACIgM,GADA7zB,EAAQvC,KAER42B,IACJA,GAAgBrnB,KAAKjN,EACrB,IAAI+zB,GAAalxB,SAASsqB,EAAW,GAAG7hB,aAAa,YAAa,GAC9D5N,MAAKo0B,SAAWiC,EAChBD,EAAY,EAEPp2B,KAAKo0B,SAAWiC,IACrBD,EAAY,EAEhB,IAAIS,GAAkC,IAAdT,EAAkBC,EAAajM,EAAWpD,MAAQhnB,KAAKo0B,QAC/E,KAAKp0B,KAAK0jB,gBAAiB,CACvB,GAAIoT,GAAoB92B,KAAKktB,gBAAgBuC,EAAW,GAAGpO,GAC3DrhB,MAAK6lB,oBAAoBuE,GAActE,IAAmB,IAAdsQ,EAAkBC,EAAaQ,EAAoBC,EAAkB9P,QAErH,IAAK,GAAIpiB,GAAQ,EAAGA,EAAQ6qB,EAAW9uB,OAAQiE,IAC3CgyB,EAAgBrnB,KAAKkgB,EAAW7qB,IAChC5E,KAAKinB,iBAAiBwI,EAAW7qB,GAAQiyB,EAAoB72B,KAAKktB,gBAAgBuC,EAAW7qB,GAAOyc,IAAK0E,KACzG/lB,KAAK6lB,oBAAoB7lB,KAAKktB,gBAAgBuC,EAAW7qB,GAAOyc,KAAOyE,IAAK+Q,IAC5EpH,EAAW7qB,GAAOuK,aAAa,WAAY0nB,EAAkBhqB,WAEjEvK,GAAQ6M,aAAa,WAAYib,EAAWtE,IAAIjZ,YAChD7M,KAAKinB,iBAAiBjnB,KAAK4sB,UAAWxC,EAAWtE,IAAKsE,EAAWrE,IACjE,KAAK,GAAI/kB,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IACpChB,KAAKulB,UAAUvlB,KAAK4lB,OAAO5kB,GAAGqgB,KAAQyE,IAAK9lB,KAAK4lB,OAAO5kB,GAAG8kB,IAAKC,IAAK/lB,KAAK4lB,OAAO5kB,GAAG+kB,IAEvF/lB,MAAKo0B,SAAWhK,EAAWtE,IAC3B9lB,KAAKsoB,qBACLsO,EAAgBxoB,QAAQ,SAAUnB,GAC9B1K,EAAMqzB,YAAY3oB,EAAKoU,IAAM9e,EAAMgjB,UAAUtY,EAAKoU,GAElD,KAAK,GADD0V,GAAYx0B,EAAM2qB,gBAAgBjgB,EAAKoU,IAClCrgB,EAAI,EAAGA,EAAIuB,EAAMsiB,YAAYlkB,OAAQK,IAC1C,GAAKuB,EAAMsiB,YAAY7jB,GAGvB,IAAK,GAAIqE,GAAI,EAAGA,EAAI9C,EAAMsiB,YAAY7jB,GAAGL,OAAQ0E,IACzC9C,EAAMsiB,YAAY7jB,GAAGqE,KAAO4H,IAC5B1K,EAAMsiB,YAAY7jB,GAAGqE,OAAK6pB,GAIjC3sB,GAAMsiB,YAAYkS,EAAUjR,OAC7BvjB,EAAMsiB,YAAYkS,EAAUjR,SAEhCvjB,EAAMsiB,YAAYkS,EAAUjR,KAAKiR,EAAUhR,KAAO9Y,EAClD1K,EAAMszB,WAAatzB,EAAMsiB,eAGjCtB,EAAgBrjB,UAAUkoB,kBAAoB,SAAU9lB,EAAS8nB,GAC7D,GAAI7nB,GAAQvC,IACZA,MAAKklB,mBACL,IAAI8R,MAEAC,IAQJ,KALID,EADAh3B,KAAKmoB,aAAenoB,KAAKmmB,iBACVnmB,KAAK01B,YAAYtL,GAGjBpqB,KAAKyvB,WAAWrF,EAAWtE,IAAKsE,EAAWrE,IAAKqE,EAAWrD,MAAOqD,EAAWpD,MAAO1kB,IAEtF3B,OAAS,EAItB,GAHAq2B,EAAeh3B,KAAKo1B,mBAAmB4B,GACvCA,EAAeh3B,KAAKu1B,cAAcyB,EAAc5M,EAAY9nB,IACvCuC,oBAAkB7E,KAAKo0B,WAAYp0B,KAAKm2B,iBAAiBa,EAAc10B,GAExFtC,KAAK22B,UAAUK,EAAc10B,EAAS8nB,OAGtC,KAAK,GAAIppB,GAAI,EAAGA,EAAIg2B,EAAar2B,OAAQK,IAAK,CAC1C,GAAI8pB,GAAQ9qB,KAAKktB,gBAAgB8J,EAAah2B,GAAGqgB,GAKjD,IAJArhB,KAAK+yB,gBAAkBiE,EAAah2B,GACpChB,KAAKq0B,eAAiB,KACtBr0B,KAAKg0B,kBAAoB,KACJh0B,KAAKozB,oBAAoBtI,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM9D,MAAO8D,EAAM/D,MAAOzkB,KACnEuC,oBAAkB7E,KAAKg0B,mBAAoB,CAClEh0B,KAAKinB,iBAAiB+P,EAAah2B,GAAIhB,KAAKq0B,eAAgBr0B,KAAKg0B,mBACjEh0B,KAAKulB,UAAWyR,EAAah2B,QAAY8kB,IAAK9lB,KAAKq0B,eAAgBtO,IAAK/lB,KAAKg0B,kBAC7E,IAAIjnB,IACA2U,YACIoE,IAAK9lB,KAAKq0B,eAAexnB,WACzBkZ,IAAK/lB,KAAKg0B,kBAAkBnnB,YAWpC,IARA7M,KAAK8mB,cAAc/Z,EAAOiqB,EAAah2B,IACvChB,KAAK6lB,oBAAoBiF,GAAS/E,IAAK/lB,KAAKg0B,kBAAmBlO,IAAK9lB,KAAKq0B,iBAErEr0B,KAAK0zB,eAAiB1zB,KAAKmvB,gBAC3BnvB,KAAK6oB,eACL7oB,KAAK8oB,0BAET9oB,KAAKq0B,eAAiB,KAClBrzB,EAAIg2B,EAAar2B,OACjB,aAIJs2B,GAAgB1nB,KAAKynB,EAAah2B,IAK9Ci2B,EAAgBt2B,OAAS,IACzBs2B,EAAgB7oB,QAAQ,SAAU8oB,IACe,IAAzC30B,EAAMwiB,eAAe/Z,QAAQksB,IAC7B30B,EAAMwiB,eAAexV,KAAK2nB,KAG9Bl3B,KAAK+kB,iBAA4D,IAA1C/kB,KAAK+kB,eAAe/Z,QAAQ1I,IACnDtC,KAAK+kB,eAAenC,OAAO5iB,KAAK+kB,eAAe/Z,QAAQ1I,GAAU,GAEjE20B,EAAgBt2B,OAAS,IACzBX,KAAKm3B,gBAAgB/M,EAAWtE,IAAK9lB,KAAK+kB,eAAgBziB,GAC1DtC,KAAKo3B,4BAGRp3B,KAAKq3B,YACNr3B,KAAK2oB,cAET3oB,KAAKmnB,kBACLnnB,KAAKowB,mBAET7M,EAAgBrjB,UAAUk3B,wBAA0B,WAChD,IAAK,GAAIp2B,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IACpC,GAAIhB,KAAKklB,iBAAiBllB,KAAK4lB,OAAO5kB,GAAGqgB,KAAoD,OAA7CrhB,KAAKklB,iBAAiBllB,KAAK4lB,OAAO5kB,GAAGqgB,IAAc,CAC/FrhB,KAAK+kB,gBAAkB/kB,KAAKklB,iBAAiBllB,KAAK4lB,OAAO5kB,GAAGqgB,IAAIf,IAChE,IAAI/f,GAAMP,KAAK4lB,OAAO5kB,GAAGqgB,EACzBrhB,MAAKm3B,gBAAgBn3B,KAAKklB,iBAAiB,GAAK3kB,GAAKulB,IAAK9lB,KAAK+kB,eAAgB/kB,KAAKklB,iBAAiB,GAAK3kB,GAAK+2B,UAI3H/T,EAAgBrjB,UAAUq3B,uBAAyB,SAAUtqB,GACzD,IAAK,GAAIrI,GAAQ,EAAGA,EAAQnF,OAAOwD,KAAKjD,KAAKklB,kBAAkBvkB,OAAQiE,IACnE5E,KAAKklB,iBAAiBjY,EAAKoU,IAAM,MAGzCkC,EAAgBrjB,UAAUi3B,gBAAkB,SAAUrR,EAAKxF,EAAKgX,GAC5D,GAAKA,EAAL,CAGA,GAAIE,GAAWryB,SAASmyB,EAAO1pB,aAAa,cAAe,IACvD6pB,EAAStyB,SAASmyB,EAAO1pB,aAAa,YAAa,GACvD5N,MAAKglB,qBAAsBhlB,KAAK+kB,gBAAmB/kB,KAAK03B,eAAiB13B,KAAK+kB,eAC9E,KAAK,GAAI/jB,GAAI,EAAGA,EAAIhB,KAAKglB,oBAAoBrkB,OAAQK,IAAK,CACtD,GAAwC,IAApChB,KAAKglB,oBAAoBrkB,OACzB,MAEJ,KAAK,GAAIg3B,GAAM,EAAGA,EAAM33B,KAAKglB,oBAAoBrkB,OAAQg3B,IACrD33B,KAAKklB,iBAAiBllB,KAAKglB,oBAAoB2S,GAAKtW,KAChDf,IAAKtgB,KAAKglB,oBAAoB2S,GAC9B7R,IAAKA,EACLwR,OAAQA,EAGhB,IAAId,GAAaiB,EAASD,EACtBI,EAAazyB,SAASnF,KAAKglB,oBAAoBhkB,GAAG4M,aAAa,cAAe,IAC9EiqB,EAAe1yB,SAASnF,KAAKglB,oBAAoBhkB,GAAG4M,aAAa,YAAa,IAC9EkqB,EAAa3yB,SAASnF,KAAKglB,oBAAoBhkB,GAAG4M,aAAa,cAAe,IAC9E+Z,MAAW,GACXsP,MAAkB,EAOtB,KANqD,IAAjDj3B,KAAKilB,uBAAuBja,QAAQssB,IACpCt3B,KAAKilB,uBAAuB1V,KAAK+nB,IAEqC,IAAtEt3B,KAAKilB,uBAAuBja,QAAQhL,KAAKglB,oBAAoBhkB,KAC7DhB,KAAKilB,uBAAuB1V,KAAKvP,KAAKglB,oBAAoBhkB,IAE1D42B,EAAa,GAAKE,EAAa,EAAG,CAClC,GAAIC,GAAsB/3B,KAAKktB,gBAAgBltB,KAAKglB,oBAAoBhkB,GAAGqgB,GAC3EsG,GAAWoQ,EAAoBhS,GAE/B,KAAK,GADDiS,GAAQ/tB,SAASonB,eAAe0G,EAAoB1W,IAC/Cpc,EAAI8yB,EAAoBjS,IAAK7gB,EAAIwyB,EAASD,EAAUvyB,IAAK,CAC9DjF,KAAKq3B,YAAa,EAClBr3B,KAAK6lB,oBAAoBkS,GAAuBjS,IAAKiS,EAAoBjS,IAAM,IAC/EkS,EAAM7oB,aAAa,WAAY4oB,EAAoBjS,IAAIjZ,YACvD7M,KAAKinB,iBAAiB+Q,EAAOD,EAAoBjS,IAAK6B,GACtD3nB,KAAKu3B,uBAAuBS,GAC5Bh4B,KAAKulB,UAAWyS,OAAelS,IAAKiS,EAAoBjS,IAAKC,IAAK4B,EAC9DyC,GAAapqB,KAAKktB,gBAAgB8K,EAAM3W,GAC5CrhB,MAAK6lB,oBAAoBuE,GAAcrE,IAAK4B,EAAU7B,IAAKiS,EAAoBjS,KAC/E,IAAImS,GAAW9yB,SAAS6yB,EAAMpqB,aAAa,YAAa,IACpDgmB,EAASzuB,SAAS6yB,EAAMpqB,aAAa,YAAa,IAClDmZ,EAAQ5hB,SAAS6yB,EAAMpqB,aAAa,cAAe,IACnDoZ,EAAQ7hB,SAAS6yB,EAAMpqB,aAAa,cAAe,IACnDsqB,IACJA,GAAgB3oB,KAAKyoB,GACrBE,EAAgB3oB,KAAK+nB,GACrBL,EAAkBj3B,KAAKyvB,WAAWwI,EAAUrE,EAAQ7M,EAAOC,EAAOkR,GAC9Dl4B,KAAKmoB,cAA8D,IAA/C8O,EAAgBjsB,QAAQhL,KAAKmoB,cACjD8O,EAAgBrU,OAAOqU,EAAgBjsB,QAAQhL,KAAKmoB,aAAc,GAEtEnoB,KAAKm4B,eAAelB,EAAiBrD,EAAQqE,EAAUD,GAE3Dh4B,KAAKq3B,YAAa,MAEjB,CACGr3B,KAAK21B,iBACL31B,KAAK21B,gBAAiB,GAE1B31B,KAAKglB,oBAAoBhkB,GAAGmO,aAAa,WAAYqnB,EAAW3pB,WAChE,IAAIqpB,KACJA,GAAW3mB,KAAKvP,KAAKglB,oBAAoBhkB,IACzCk1B,EAAW3mB,KAAK+nB,GAChBL,EAAkBj3B,KAAKyvB,WAAW+G,EAAYqB,EAAcC,EAAYF,EAAY1B,GAChFl2B,KAAKmoB,cAA8D,IAA/C8O,EAAgBjsB,QAAQhL,KAAKmoB,cACjD8O,EAAgBrU,OAAOqU,EAAgBjsB,QAAQhL,KAAKmoB,aAAc,GAEtER,EAAWxiB,SAASnF,KAAKglB,oBAAoBhkB,GAAG4M,aAAa,YAAa,IAC1E5N,KAAKinB,iBAAiBjnB,KAAKglB,oBAAoBhkB,GAAIw1B,EAAY7O,GAC/D3nB,KAAKu3B,uBAAuBv3B,KAAKglB,oBAAoBhkB,IACrDhB,KAAKulB,UAAWvlB,KAAKglB,oBAAoBhkB,QAAY8kB,IAAK0Q,EAAYzQ,IAAK4B,EAC3E,IAAIyC,GAAapqB,KAAKktB,gBAAgBltB,KAAKglB,oBAAoBhkB,GAAGqgB,GAClErhB,MAAK6lB,oBAAoBuE,GAAcrE,IAAK4B,EAAU7B,IAAK0Q,IAC3Dx2B,KAAKm4B,eAAelB,EAAiBtP,EAAU6O,EAAYx2B,KAAKglB,oBAAoBhkB,QAIhGuiB,EAAgBrjB,UAAUi4B,eAAiB,SAAUlB,EAAiBtP,EAAU6O,EAAY4B,GACxF,GAAI71B,GAAQvC,KACRoqB,EAAapqB,KAAKktB,gBAAgBkL,EAAM/W,GAE5C,IADArhB,KAAK6lB,oBAAoBuE,GAActE,IAAK0Q,EAAYzQ,IAAK4B,IACzDsP,EAAgBt2B,OAAS,EAAG,CAC5BX,KAAK+kB,kBACL/kB,KAAK03B,gBAAiB,EACtBT,EAAgB7oB,QAAQ,SAAU8oB,GAC9B30B,EAAMwiB,eAAexV,KAAK2nB,IAG9B,KAAK,GADDmB,GAAqBlzB,SAASizB,EAAMxqB,aAAa,YAAa,IACzDiD,EAAI,EAAGA,EAAI7Q,KAAK+kB,eAAepkB,OAAQkQ,IAC5C7Q,KAAKm3B,gBAAgBkB,EAAoBr4B,KAAK+kB,eAAgBqT,EAElEp4B,MAAK03B,gBAAiB,MAErB,CAID,GAHK13B,KAAK21B,gBACN31B,KAAK2oB,cAEL3oB,KAAKilB,uBAAuBtkB,OAAS,EACrC,IAAK,GAAId,GAAI,EAAGA,EAAIG,KAAKilB,uBAAuBtkB,OAAQd,IAAK,CACzD,GAAIy4B,GAASnzB,SAASnF,KAAKilB,uBAAuBplB,GAAG+N,aAAa,YAAa,IAC3E2qB,EAAapzB,SAASnF,KAAKilB,uBAAuBplB,GAAG+N,aAAa,YAAa,IAC/EmZ,EAAQ5hB,SAASnF,KAAKilB,uBAAuBplB,GAAG+N,aAAa,cAAe,IAC5EoZ,EAAQ7hB,SAASnF,KAAKilB,uBAAuBplB,GAAG+N,aAAa,cAAe,IAC5E4qB,EAAmBx4B,KAAKyvB,WAAW6I,EAAQC,EAAYxR,EAAOC,EAAOhnB,KAAKilB,uBAC1EjlB,MAAKmoB,cAA+D,IAAhDqQ,EAAiBxtB,QAAQhL,KAAKmoB,cAClDqQ,EAAiB5V,OAAO4V,EAAiBxtB,QAAQhL,KAAKmoB,aAAc,GAExEqQ,EAAiBpqB,QAAQ,SAAU8oB,GAC/B30B,EAAMwiB,eAAexV,KAAK2nB,KAE1BsB,EAAiB73B,OAAS,GAC1BX,KAAKm3B,gBAAgBmB,EAAQt4B,KAAK+kB,eAAgB/kB,KAAKilB,uBAAuBplB,IAI1FG,KAAKilB,4BAGb1B,EAAgBrjB,UAAU4wB,oBAAsB,SAAUzJ,GACtD,IAAK,GAAIrmB,GAAI,EAAGA,EAAIqmB,EAAc1mB,OAAQK,IAGtC,IAAK,GADDy3B,GADUpR,EAAcrmB,GACEgT,iBAAiB,aACtC0kB,EAAM,EAAGA,EAAMD,EAAgB93B,OAAQ+3B,IAC5CpqB,SAAOmqB,EAAgBC,KAInCnV,EAAgBrjB,UAAUy4B,WAAa,WACnC34B,KAAK+wB,cAAc/wB,KAAKmlB,eACxB,IAAIyT,GAAa54B,KAAKsC,QAAQ0R,iBAAiB,IAAMqP,EACrDra,eAAY4vB,GAAavV,IACzBrjB,KAAKqoB,WAAWroB,KAAK4kB,kBAEzBrB,EAAgBrjB,UAAUmoB,WAAa,SAAUzD,GAC7C,IAAK,GAAI5jB,GAAI,EAAGA,EAAI4jB,EAAgBjkB,OAAQK,IAAK,CAC7C,GAAIsB,GAAUsiB,EAAgB5jB,GAC1B63B,EAAejU,EAAgB5jB,GAAG8N,cAAc,qBAChD9O,MAAKyoB,gBACDzoB,KAAK84B,iBAAmBx2B,EAAQ0R,iBAAiBhU,KAAK84B,iBAAiB,GACvE7vB,YAAU3G,EAAQ0R,iBAAiBhU,KAAK84B,iBAAiB,KAAMzV,IAG/Dpa,YAAU3G,IAAW+gB,KAGzBrjB,KAAKwrB,eACLxrB,KAAKgoB,aAAehoB,KAAKqmB,mBACzBrmB,KAAK+4B,iBAAiBz2B,EAASu2B,KAI3CtV,EAAgBrjB,UAAU64B,iBAAmB,SAAUzY,EAAK0Y,GAExD,GADAh5B,KAAKwlB,iBAAmBxlB,KAAKi5B,kBACxB3Y,EAAIxR,cAAc,aACnB,IAAK,GAAIzJ,GAAI,EAAGA,EAAIrF,KAAKwlB,iBAAiB7kB,OAAQ0E,IAAK,CACnD,GAAI6zB,GAAUl5B,KAAK8S,cAAc,QAC7BqmB,MAAgB,EACpBH,GAAUjmB,YAAYmmB,GAGlBC,EAF6B,WAA7Bn5B,KAAKwlB,iBAAiBngB,IAAgD,WAA7BrF,KAAKwlB,iBAAiBngB,IAClC,YAA7BrF,KAAKwlB,iBAAiBngB,IAAiD,YAA7BrF,KAAKwlB,iBAAiBngB,GAx4DvE,WACA,WA64DG4D,YAAUiwB,IAAWC,EAAen5B,KAAKwlB,iBAAiBngB,GAr5D7D,WACI,gBAw5Dbke,EAAgBrjB,UAAU0nB,gBAAkB,SAAUtlB,EAAS8nB,GAC3D,GAAIrd,IACAA,OACIga,MAAQliB,oBAAkBulB,EAAWrD,WAAuCmI,GAA9B9E,EAAWrD,MAAMla,WAC/Dma,MAAQniB,oBAAkBulB,EAAWpD,WAAuCkI,GAA9B9E,EAAWpD,MAAMna,WAC/Dme,SAAWnmB,oBAAkBulB,EAAWY,cAA6CkE,GAAjC9E,EAAWY,SAASne,WACxEoe,SAAWpmB,oBAAkBulB,EAAWa,cAA6CiE,GAAjC9E,EAAWa,SAASpe,WACxEqe,SAAWrmB,oBAAkBulB,EAAWc,cAA6CgE,GAAjC9E,EAAWc,SAASre,WACxEse,SAAWtmB,oBAAkBulB,EAAWe,cAA6C+D,GAAjC9E,EAAWe,SAASte,WACxEiZ,IAAMjhB,oBAAkBulB,EAAWtE,SAAmCoJ,GAA5B9E,EAAWtE,IAAIjZ,WACzDkZ,IAAMlhB,oBAAkBulB,EAAWrE,SAAmCmJ,GAA5B9E,EAAWrE,IAAIlZ,YAGjE7M,MAAK8mB,cAAc/Z,EAAOzK,IAE9BihB,EAAgBrjB,UAAU2xB,gBAAkB,SAAUzH,GAClD,GAEIuH,GACAyH,EAHAC,EAAar5B,KAAKutB,cAAc,GAChC+L,EAAYt5B,KAAKutB,cAAc,EAenC,OAXIoE,GADAvH,GAAqC,oBAA0C,gBAAtBA,UAAkCA,EAAWrD,MAAQ,EAChGqD,EAAWrD,MAAQuS,GAAclP,EAAWrD,MAAQ,GAAK/mB,KAAKopB,YAAY,GAG3EkQ,EAGbF,EADAhP,GAAsC,oBAAYA,EAAWpD,MAAQ,GAAmC,gBAAtBoD,SACnEA,EAAWpD,MAAQqS,GAAejP,EAAWpD,MAAQ,GAAKhnB,KAAKopB,YAAY,GAG5E/Z,aAAWgqB,IAErBD,EAAazH,IAEzBpO,EAAgBrjB,UAAUq5B,uBAAyB,SAAU/M,GACzD,GACIgN,GAAa9d,WAAW8Q,EAAKlqB,QAAQ4D,MAAMsW,KAC3Cid,EAAc/d,WAAW8Q,EAAKlqB,QAAQ4D,MAAMmW,KAIhD,QAHUN,KAAKgD,MAAMya,GAAcx5B,KAAKutB,cAAc,GAAKvtB,KAAKopB,YAAY,KAClErN,KAAKgD,MAAM0a,GAAez5B,KAAKutB,cAAc,KAAMvtB,KAAKopB,YAAY,OAIlF7F,EAAgBrjB,UAAUmvB,gBAAkB,SAAU5C,EAAciN,EAAOC,GACvE,GAAIC,GAAgB55B,KAAKsvB,iBAAiBqK,EAC1C,IAAIC,EAAcj5B,OAAS,GAAKX,KAAKqkB,gBAAiB,CAClD,GAAIwV,IACAD,cAAeA,EAAenN,aAAcA,EAC5CqN,YAAcj1B,oBAAkB60B,MAASA,EAAYK,cAAgBl1B,oBAAkB80B,MAAWA,EAEtG35B,MAAKwN,QAAQ,SAAUqsB,KAG/BtW,EAAgBrjB,UAAUovB,iBAAmB,SAAUqK,GACnD,GAAIC,KACJ,IAAI55B,KAAKqkB,gBACLuV,SAGA,KAAK,GAAI54B,GAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,KAC7B6D,oBAAkB80B,IAAY35B,KAAK4lB,OAAO5kB,GAAGqgB,KAAOsY,EAAQ,GAAGtY,IACjErhB,KAAK4lB,OAAO5kB,GAAG8kB,MAAQ9lB,KAAKssB,mBAAmBtrB,GAAG8kB,KAC/C9lB,KAAK4lB,OAAO5kB,GAAG+kB,MAAQ/lB,KAAKssB,mBAAmBtrB,GAAG+kB,KACtD6T,EAAcrqB,KAAKvP,KAAK4lB,OAAO5kB,GAI3C,OAAO44B,IAEXrW,EAAgBrjB,UAAUwoB,sBAAwB,SAAUsR,GA0GxD,IAAK,GADcC,GAxGf13B,EAAQvC,KAwGRk6B,EAASl6B,KACJgB,EAAI,EAAGA,EAAIg5B,EAAYr5B,OAAQK,KAxG1B,SAAUA,GACpB,GAAIm5B,IAAc,YAAa,oBAC3BhQ,EAAc6P,EAAYh5B,EAE1Bk5B,GAAOE,QAAU,GAAIC,aAAUlQ,GAC3B9d,gBAAgB,EAChB+rB,OAAO,EACPkC,SAAUJ,EAAO53B,QACjBi4B,cAAc,EACdC,OAAQN,EAAOpB,gBAAkBoB,EAAOpB,gBAAkB,WAC1D2B,MAAON,EACPO,UAAWR,EAAOS,gBAAgBxyB,KAAK+xB,GACvCU,SAAU,SAAUpO,GAChB,GAAIqO,GAAerO,CAMnB,IALAqO,EAAajV,OAASrjB,EAAM0sB,oBAC5B1sB,EAAMiL,QAAQ,WAAYqtB,GACtBh2B,oBAAkB2nB,EAAKnf,UACvBmf,EAAKnf,QAAS,GAEZmf,EAAY,OAmDb,CACD,GAAIsO,GAAev4B,EAAM2qB,gBAAgB3qB,EAAM4lB,YAAY9G,GAC3D,KAAKrgB,EAAI,EAAGA,EAAIuB,EAAMqjB,OAAOjlB,OAAQK,IAC7BuB,EAAMqjB,OAAO5kB,GAAGqgB,KAAOyZ,EAAazZ,KACpCmL,EAAKlqB,QAAQ6M,aAAa,WAAY5M,EAAM+pB,mBAAmBtrB,GAAG+kB,IAAIlZ,YACtE2f,EAAKlqB,QAAQ6M,aAAa,WAAY5M,EAAM+pB,mBAAmBtrB,GAAG8kB,IAAIjZ,YACtEiuB,EAAa/U,IAAMxjB,EAAM+pB,mBAAmBtrB,GAAG+kB,IAC/C+U,EAAahV,IAAMvjB,EAAM+pB,mBAAmBtrB,GAAG8kB,IAC/CvjB,EAAM0kB,iBAAiB1kB,EAAM4lB,YAAa5lB,EAAM+pB,mBAAmBtrB,GAAG8kB,IAAKvjB,EAAM+pB,mBAAmBtrB,GAAG+kB,KACvGxjB,EAAM6lB,kBAAkB7lB,EAAM4lB,YAAa2S,GAG/Cv4B,GAAMqqB,WACNte,SAAO/L,EAAMqqB,eAhED,CAChB,GAAI9B,GAAQvoB,EAAM2qB,gBAAgB3qB,EAAM4lB,YAAY9G,GAChD9e,GAAMotB,cACNptB,EAAMktB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOzkB,EAAM4lB,aAAaxnB,OAAS,GAC7F4B,EAAMw4B,kBAAkBvO,GACxBjqB,EAAM0kB,iBAAiB1kB,EAAM4lB,YAAa2C,EAAMhF,IAAKgF,EAAM/E,KAC3DxjB,EAAM6lB,kBAAkB7lB,EAAM4lB,YAAa2C,IAG3CvoB,EAAM0kB,iBAAiB1kB,EAAM4lB,YAAa2C,EAAMhF,IAAKgF,EAAM/E,KAE/DxjB,EAAM4lB,YAAc,IACpB,IAAIlb,GAAO1K,EAAMmtB,aAAalD,EAC1BjqB,GAAMqqB,WACNte,SAAO/L,EAAMqqB,WAEjB5jB,eAAazG,EAAMD,UAvgE3B,cAwgEQ0G,eAAawjB,EAAKlqB,UAAW8gB,IAC7B7gB,EAAMqqB,UAAY,KAClBJ,EAAKlqB,QAAQO,UAAU4H,OAAO,aAC9B,IAAIqb,GAAMvjB,EAAMg3B,uBAAuB/M,GAAM,GACzCzG,EAAMxjB,EAAMg3B,uBAAuB/M,GAAM,GACzCpC,EAAa7nB,EAAM2qB,gBAAgBV,EAAKlqB,QAAQ+e,GAChD9e,GAAMotB,cACsG,IAA5GptB,EAAMktB,WAAW3J,EAAKC,EAAKqE,EAAWrD,MAAOqD,EAAWpD,MAAO/c,SAASonB,eAAepkB,EAAKoU,KAAK1gB,QACjG4B,EAAMsjB,oBAAoBtjB,EAAM2qB,gBAAgBV,EAAKlqB,QAAQ+e,KAAOyE,IAAKA,EAAKC,IAAKA,IACnFxjB,EAAMgjB,UAAUiH,EAAKlqB,QAAQ+e,IAAIyE,IAAMA,EACvCvjB,EAAMgjB,UAAUiH,EAAKlqB,QAAQ+e,IAAI0E,IAAMA,EACvCxjB,EAAMukB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgB2f,EAAKlqB,SAClFC,EAAMomB,gBAGNpmB,EAAMsjB,oBAAoBtjB,EAAM2qB,gBAAgBV,EAAKlqB,QAAQ+e,KACzDyE,IAAKvjB,EAAMgjB,UAAUiH,EAAKlqB,QAAQ+e,IAAIyE,IACtCC,IAAKxjB,EAAMgjB,UAAUiH,EAAKlqB,QAAQ+e,IAAI0E,MAE1CyG,EAAKlqB,QAAQ6M,aAAa,WAAY5M,EAAM2qB,gBAAgBV,EAAKlqB,QAAQ+e,IAAI0E,IAAIlZ,YACjF2f,EAAKlqB,QAAQ6M,aAAa,WAAY5M,EAAM2qB,gBAAgBV,EAAKlqB,QAAQ+e,IAAIyE,IAAIjZ,YACjFtK,EAAMomB,cAEV,IAAIqS,GAAgBz4B,EAAM2qB,gBAAgBV,EAAKlqB,QAAQ+e,GACvD9e,GAAM0kB,iBAAiBuF,EAAKlqB,QAAS04B,EAAclV,IAAKkV,EAAcjV,KACtExjB,EAAMsmB,eACNtmB,EAAMumB,yBACNvmB,EAAM8sB,iBAAgB,GACtB9sB,EAAM04B,mBAAsBnvB,MAAO0gB,EAAK1gB,MAAOxJ,QAASkqB,EAAKlqB,SAC7DC,EAAMgpB,eACNhpB,EAAMihB,KAAOjhB,EAAMmkB,QAAO,GAC1BnkB,EAAMivB,iBACNjvB,EAAMgkB,mBAmBdlD,KAAM,SAAUmJ,GACZjqB,EAAM24B,kBACFpvB,MAAO0gB,EAAK1gB,MACZxJ,QAASkqB,EAAKlqB,QACdhC,OAAQsrB,UAASY,SAAc,aAEnCjqB,EAAMiL,QAAQ,OAAQjL,EAAM24B,kBAC5B34B,EAAM44B,YAAY3O,OAG6B,IAAnD0N,EAAO/U,eAAena,QAAQkvB,EAAOE,UACrCF,EAAO/U,eAAe5V,KAAK2qB,EAAOE,SAG1CH,EAAUj5B,GAIFA,GACRA,EAAIi5B,GAGZ1W,EAAgBrjB,UAAU2oB,aAAe,WACrC7oB,KAAKovB,mBACLpvB,KAAKsoB,qBACLtoB,KAAK2oB,eAETpF,EAAgBrjB,UAAUqmB,eAAiB,WACvCvmB,KAAKmlB,eAAe/W,QAAQ,SAAUgsB,GAClCA,EAAQgB,iBAShB7X,EAAgBrjB,UAAUm7B,uBAAyB,WAC/C,GAAIr7B,KAAKmlB,gBAAkBnlB,KAAKmlB,eAAexkB,OAAS,EAAG,CACvD,IAAK,GAAIK,GAAI,EAAGA,EAAIhB,KAAKmlB,eAAexkB,OAAQK,IAC5ChB,KAAKmlB,eAAenkB,GAAGwgB,UACvBxX,eAAasxB,YAAYt7B,KAAKmlB,eAAenkB,GAAGsB,QAEpDtC,MAAK24B,eAGbpV,EAAgBrjB,UAAUq7B,iBAAmB,SAAUzV,EAAKkB,EAAOwU,GAC3D1V,EAAMkB,GAAShnB,KAAKwjB,OACpBxjB,KAAKwjB,KAAOxjB,KAAKwjB,KAAOgY,EACxBx7B,KAAKwxB,mBAGbjO,EAAgBrjB,UAAUy6B,gBAAkB,SAAUnO,GAClD,GAAIiP,GAAWjP,CAOf,IANAxsB,KAAKwN,QAAQ,YAAaiuB,EAAU,WAC5B52B,oBAAkB2nB,EAAKnf,UACvBmf,EAAKnf,QAAS,KAGtBrN,KAAKykB,SAAW+H,EAAKnf,OACfmf,EAAY,OAyBdxjB,eAAahJ,KAAKsC,UAjpEV,cAkpER0G,eAAawjB,EAAKlqB,UAAW8gB,QA1Bb,CAChBpjB,KAAKssB,mBAAqBtsB,KAAKusB,YAAYvsB,KAAK4lB,QAChD5lB,KAAKmoB,YAAcqE,EAAKlqB,QACxBtC,KAAK41B,YAAc8F,KAAKC,MAAMD,KAAKE,UAAU57B,KAAK41B,aAClD,IAAIiG,GAAc77B,KAAKo0B,SAAWjvB,SAASqnB,EAAKlqB,QAAQsL,aAAa,YAAa,GAClF5N,MAAK87B,SAAW32B,SAASqnB,EAAKlqB,QAAQsL,aAAa,YAAa,GAChE,IAAI4pB,GAAWryB,SAASqnB,EAAKlqB,QAAQsL,aAAa,cAAe,GACjE5N,MAAKu7B,iBAAiBM,EAAarE,EAAUA,GAC7Cx3B,KAAKumB,iBACLvmB,KAAK4sB,UAAY3iB,SAAS6I,cAAc,OACxC9S,KAAK4sB,UAAU/pB,UAAUgE,IAAI,WAAY,uBACzCgkB,oBAAS7qB,KAAK4sB,WAAamP,SAAY,aACvC9yB,YAAUjJ,KAAKsC,UApoEP,cAqoER2G,YAAUujB,EAAKlqB,UAAW8gB,IAC1BpjB,KAAKsC,QAAQyQ,YAAY/S,KAAK4sB,WAC9B5sB,KAAKqgB,uBACLrgB,KAAK4sB,UAAY3iB,SAAS6E,cAAc,YACxC,IAAIktB,GAAch8B,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,IAChD4a,EAAaj8B,KAAKk8B,2BAA2BF,EAAYjV,MAAOiV,EAAYhV,MAChFhnB,MAAK4sB,UAAU1mB,MAAM/C,OAAS84B,EAAW94B,OACzCnD,KAAK4sB,UAAU1mB,MAAM9C,MAAQ64B,EAAW74B,KACxC,IAAI43B,GAAgBh7B,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,GACtDrhB,MAAKinB,iBAAiBjnB,KAAK4sB,UAAWoO,EAAclV,IAAKkV,EAAcjV,OAO/ExC,EAAgBrjB,UAAUqsB,YAAc,SAAU4P,EAAQ77B,OACvC4uB,KAAX5uB,IACAA,KAEJ,KAAK,GAAIU,GAAI,EAAGA,EAAIm7B,EAAOx7B,OAAQK,IAAK,CAC/BV,EAAOU,KACRV,EAAOU,MAGX,KAAK,GAAIiE,KAAKk3B,GAAOn7B,GACjBV,EAAOU,GAAG,GAAKiE,GAAKk3B,EAAOn7B,GAAG,GAAKiE,GAG3C,MAAO3E,IAEXijB,EAAgBrjB,UAAUi7B,YAAc,SAAU3O,GAC9C,GAAI4P,GACAlI,EACAmI,CACJ,IAAKr8B,KAAKykB,SA0DNzkB,KAAKo6B,QAAQkC,WAAW9P,EAAK1gB,OAC7B9C,eAAahJ,KAAKsC,UAnuEV,cAouER0G,eAAawjB,EAAKlqB,UAAW8gB,QA5Db,CAChB,GAAI2C,GAAMsW,EAAUr8B,KAAKu5B,uBAAuB/M,GAAM,GAClD1G,EAAM9lB,KAAKu5B,uBAAuB/M,GAAM,EAC5C,IAAIzG,EAAM,GAAKD,EAAM,EACjB,MAEJ9lB,MAAK6lB,oBAAoB7lB,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,KAAOyE,IAAKA,EAAKC,IAAKA,GACjF,IAAIqE,GAAapqB,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,GAGnD,IAFArhB,KAAKu7B,iBAAiBnR,EAAWtE,IAAKsE,EAAWpD,MAAO,GACxDhnB,KAAKumB,iBACDvmB,KAAK2vB,eACL3vB,KAAK8mB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgB2f,EAAKlqB,SACjFtC,KAAK6lB,oBAAoB7lB,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,KAAOyE,IAAKA,EAAKC,IAAKA,IACjFqW,EAASp8B,KAAKulB,UAAWiH,EAAKlqB,YAAayjB,IAC3CmO,EAASl0B,KAAKulB,UAAWiH,EAAKlqB,YAAawjB,IAC3C9lB,KAAKulB,UAAWiH,EAAKlqB,aAAiBwjB,IAAKA,EAAKC,IAAKA,GACrD/lB,KAAKsoB,sBACDtoB,KAAK87B,WAAaM,GAAUp8B,KAAKo0B,WAAaF,KAC9Cl0B,KAAK+6B,kBAAkBvO,GACnBxsB,KAAK87B,WAAaM,IAClBp8B,KAAKo0B,SAAWF,GAEhBl0B,KAAKo0B,WAAaF,IAClBl0B,KAAK87B,SAAWM,GAEhBp8B,KAAK2vB,eAAc,CACnB3vB,KAAKmoB,YAAcqE,EAAKlqB,OACxB,IAAIwoB,GAAQV,CACZpqB,MAAK+uB,eAAiB/uB,KAAKyvB,WAAW3E,EAAMhF,IAAKgF,EAAM/E,IAAK+E,EAAM/D,MAAO+D,EAAM9D,MAAOwF,EAAKlqB,UACvF8nB,EAAWrE,KAAO,GAAKqE,EAAWrE,KAAO/lB,KAAK+oB,oBAC9C/oB,KAAK+uB,mBAET/uB,KAAKooB,kBAAkBoE,EAAKlqB,QAAS8nB,GACrCpqB,KAAKovB,mBAoBjB,IAhB0B,IAAtBpvB,KAAK2vB,cACL3vB,KAAK6lB,oBAAoB7lB,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,KAAOyE,IAAKA,EAAKC,IAAKA,IAEjF/lB,KAAKulB,UAAUiH,EAAKlqB,QAAQ+e,IAAIyE,MAAQA,GAAO9lB,KAAKulB,UAAUiH,EAAKlqB,QAAQ+e,IAAI0E,MAAQA,IACvF/lB,KAAK6lB,oBAAoB7lB,KAAKktB,gBAAgBV,EAAKlqB,QAAQ+e,KAAOyE,IAAKA,EAAKC,IAAKA,IACjF/lB,KAAK8mB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgB2f,EAAKlqB,UAEjFtC,KAAK87B,WAAaO,IAClBr8B,KAAK87B,SAAWM,EAChBp8B,KAAKovB,oBAEJpvB,KAAK2vB,cACN3vB,KAAK+6B,kBAAkBvO,GAE3BxsB,KAAK8wB,oBAAoB9wB,KAAK4kB,iBAC9B5kB,KAAKqoB,WAAWroB,KAAK4kB,kBACK,IAAtB5kB,KAAK2vB,aACL,SASZpM,EAAgBrjB,UAAUwvB,aAAe,SAAUlD,GAE/C,IAAK,GADDvf,GACKjM,EAAI,EAAGA,EAAIhB,KAAK4kB,gBAAgBjkB,OAAQK,IACzChB,KAAK4kB,gBAAgB5jB,GAAGqgB,MAASmL,EAAKlqB,SACnCkqB,EAAKlqB,QAAQ+e,IAAOmL,KACvBvf,EAAOjN,KAAK4kB,gBAAgB5jB,GAGpC,OAAOiM,IAEXsW,EAAgBrjB,UAAUsyB,SAAW,SAAU1M,EAAK2K,EAAQ8L,IACpDA,GAAkBA,YAAwB38B,SAC1C28B,GAAgBA,GAGpB,KADA,GAAIvV,GAAQ,EACLlB,GAAO,GAAG,CAGb,IAFA,GAAIiB,GAAQ,EACRhB,EAAM0K,EACH1K,GAAO,GAAG,CACb,GAAIsM,GAAQryB,KAAK6kB,YAAYiB,EAC7B,IAAIuM,EAAO,CACP,GAAIplB,GAAOolB,EAAMtM,EACjB,IAAI9Y,KAAUsvB,IACsB,IAAhCA,EAAavxB,QAAQiC,KAAiB9H,SAAS8H,EAAKW,aAAa,cAAe,KAAOmZ,GACpF5hB,SAAS8H,EAAKW,aAAa,cAAe,KAAOoZ,EACpD,MAAO/Z,KAGb8Z,IACAhB,IAEJD,IACAkB,EAEN,MAAO,OAEXzD,EAAgBrjB,UAAU66B,kBAAoB,SAAUvO,GACpD,GAAIxF,GAAQ7hB,SAASqnB,EAAKlqB,QAAQsL,aAAa,cAAe,IAC1DmY,EAAM5gB,SAASqnB,EAAKlqB,QAAQsL,aAAa,YAAa,IACtDkY,EAAM3gB,SAASqnB,EAAKlqB,QAAQsL,aAAa,YAAa,IACtDmZ,EAAQ5hB,SAASqnB,EAAKlqB,QAAQsL,aAAa,cAAe,IAC1D+jB,EAAa3xB,KAAKutB,cAAc,GAChCkE,EAAczxB,KAAKutB,cAAc,GACjC/Q,EAAc,IAARsJ,EAAY,EAAM,GAAS2L,EAAczxB,KAAKopB,YAAY,IAChE/M,EAAe,IAAR0J,EAAY,EAAM,GAAS4L,EAAa3xB,KAAKopB,YAAY,GACpEppB,MAAKolB,WAAW5I,IAAMxc,KAAK4sB,UAAU1mB,MAAMsW,IAAMA,EAAM,KACvDxc,KAAKolB,WAAW/I,KAAOrc,KAAK4sB,UAAU1mB,MAAMmW,KAAOA,EAAO,IAC1D,IAAI4f,GAAaj8B,KAAKk8B,2BAA2BnV,EAAOC,EACxDhnB,MAAKolB,WAAWjiB,OAASnD,KAAK4sB,UAAU1mB,MAAM/C,OAAS84B,EAAW94B,OAClEnD,KAAKolB,WAAWhiB,MAAQpD,KAAK4sB,UAAU1mB,MAAM9C,MAAQ64B,EAAW74B,OAEpEmgB,EAAgBrjB,UAAUg8B,2BAA6B,SAAUnV,EAAOC,GACpE,OACI5jB,MAAQ2jB,EAAQ/mB,KAAKkpB,SAAS,IAAQnC,EAAQ,GAAK/mB,KAAKopB,YAAY,GAAM,KAC1EjmB,OAAS6jB,EAAQhnB,KAAKkpB,SAAS,IAAQlC,EAAQ,GAAKhnB,KAAKopB,YAAY,GAAM,OAGnF7F,EAAgBrjB,UAAUgtB,gBAAkB,SAAUjH,GAElD,IAAK,GADDuW,GACKx7B,EAAI,EAAGA,EAAIhB,KAAK4lB,OAAOjlB,OAAQK,IAChChB,KAAK4lB,OAAO5kB,GAAGqgB,KAAO4E,IACtBuW,EAAsBx8B,KAAK4lB,OAAO5kB,GAG1C,OAAOw7B,IAUXjZ,EAAgBrjB,UAAUu8B,SAAW,SAAUvL,GAC3ClxB,KAAKukB,YAAc,EACnBvkB,KAAKwnB,SACA0J,EAAMlG,WACPkG,EAAMlG,SAAW,GAEhBkG,EAAMjG,WACPiG,EAAMjG,SAAW,GAEhBiG,EAAM7P,KACP6P,EAAM7P,GAAK,UAAYrhB,KAAKyjB,QAAQ5W,WACpC7M,KAAKyjB,QAAUzjB,KAAKyjB,QAAU,EAElC,IAAI6H,GAAY,GAAIhI,GAAMtjB,KAAM,SAAUkxB,GAAO,EACjDlxB,MAAK4lB,OAAOrW,KAAK+b,GACjBtrB,KAAKssB,mBAAqBtsB,KAAKusB,YAAYvsB,KAAK4lB,QAChD5lB,KAAKynB,gBAAgB6D,IACjBtrB,KAAK0nB,eAAiB4D,EAAUvF,KAAO/lB,KAAK0nB,eAAkB4D,EAAUvF,IAAMuF,EAAUvE,QACxF/mB,KAAK6lB,oBAAoByF,GAAavF,IAAK/lB,KAAK0nB,eAAiB4D,EAAUvE,OAE/E,IAAIoL,GAAOnyB,KAAK8xB,WAAWxG,GAAW,EAAM,KAkC5C,IAjCAtrB,KAAKulB,UAAU+F,EAAUjK,KAAQyE,IAAKwF,EAAUxF,IAAKC,IAAKuF,EAAUvF,KACpE/lB,KAAK41B,YAAYtK,EAAUjK,KAAQyE,IAAKwF,EAAUxF,IAAKC,IAAKuF,EAAUvF,KACtE/lB,KAAKsoB,qBACLtoB,KAAKsC,QAAQo6B,sBAAsB,aAAcvK,GACjDnyB,KAAK21B,gBAAiB,EAClB31B,KAAKqmB,mBACLrmB,KAAKuoB,wBACLvoB,KAAK8wB,oBAAoB9wB,KAAK4kB,mBAG9B5kB,KAAKmoB,YAAcgK,EACdnyB,KAAK+uB,iBACN/uB,KAAK+uB,mBAET/uB,KAAKinB,iBAAiBkL,EAAM7G,EAAUxF,IAAKwF,EAAUvF,KACrD/lB,KAAK21B,gBAAiB,EACtB31B,KAAKooB,kBAAkB+J,EAAM7G,IAE7BtrB,KAAK21B,iBACL31B,KAAK21B,gBAAiB,GAEtB31B,KAAKyoB,eACLzoB,KAAKgoB,aAAehoB,KAAKqmB,mBACzBrmB,KAAK0oB,uBAAuBze,SAASonB,eAAe/F,EAAUjK,MAElErhB,KAAKqoB,YAAY8J,IACbnyB,KAAKmvB,gBACLnvB,KAAKmoB,YAAc,KACnBnoB,KAAKovB,oBAETpvB,KAAKsoB,qBACLtoB,KAAK2oB,cACL3oB,KAAK8oB,yBACD9oB,KAAKwrB,cACL,IAAK,GAAIxqB,GAAI,EAAGA,EAAImxB,EAAKne,iBAAiB,aAAarT,OAAQK,IAAK,CAChE,GAAI8S,GAAmC,SAAtB3K,UAAQC,KAAKC,KAAmB,wBAA0B,WAC3EW,gBAAanD,IAAIsrB,EAAKne,iBAAiB,aAAahT,GAAI8S,EAAW9T,KAAKyrB,kBAAmBzrB,MACjE,SAAtBmJ,UAAQC,KAAKC,MACbW,eAAanD,IAAIsrB,EAAKne,iBAAiB,aAAahT,GAAI,aAAchB,KAAK0rB,uBAAwB1rB,MAI/GA,KAAKqvB,iBAAgB,GAAQ/D,KAUjC/H,EAAgBrjB,UAAUy8B,YAAc,SAAUzL,GAE9C,GADAlxB,KAAKukB,YAAc,EACd2M,EAAM7P,GAAX,CAGA,GAAI2Z,GAAgBh7B,KAAKktB,gBAAgBgE,EAAM7P,GAC/C,IAAK2Z,EAAL,CAGAh7B,KAAKwnB,SACL0J,EAAMnL,IAAOmL,EAAMnL,IAAM,EAAK,EAAMmL,EAAMnL,IAAM/lB,KAAK4mB,QAAY5mB,KAAK4mB,QAAU,EAAIsK,EAAMnL,IACtFlhB,oBAAkBqsB,EAAMnL,OACxBmL,EAAMnL,IAAMiV,EAAcjV,KAE9B/lB,KAAK6lB,oBAAoBmV,EAAe9J,GACxClxB,KAAKynB,gBAAgBuT,EACrB,IAAI7I,GAAOloB,SAASonB,eAAeH,EAAM7P,GACzCrhB,MAAKmoB,YAAcgK,CACnB,IAAI7uB,GAAW03B,EAAc13B,SAAW03B,EAAc13B,SAASoM,MAAM,KAAO,IAK5E,IAJA1P,KAAKsqB,aAAe6H,EAAKrjB,cAAc,sBACnCqjB,EAAKrjB,cAAc,sBACnB9O,KAAKspB,iBAAiBhmB,EAAU6uB,EAAK9Q,GAAK,WA53EjC,qBA63Eb8Q,EAAKpf,YAAY/S,KAAKsqB,cAClB0Q,EAAcxQ,OAAQ,CACtB,GAAIC,GAAwB0H,EAAKrjB,cAAc,mBAC3CqjB,EAAKrjB,cAAc,mBAAqB9O,KAAKspB,oBAAqB6I,EAAK9Q,GAAK,WAAY,GAC5FpY,aAAUwhB,IA/3ET,mBAg4EDA,EAAsBjlB,UAAY,EAC9B6b,GAAKrhB,KAAKsC,QAAQ+e,GAAK,iBAAmB2Z,EAAc3Z,EAC5DrhB,MAAK2pB,eAAeqR,EAAcxQ,OAAQC,EAAuBpJ,GAAI,EAAM,UAC3ErhB,KAAKsqB,aAAavX,YAAY0X,GAC9BzqB,KAAKqgB,2BAGD8R,GAAKrjB,cAAc,oBACnBR,SAAO6jB,EAAKrjB,cAAc,mBAGlC,IAAIksB,EAAcl2B,QAAS,CACvB,GAAI83B,GAAa5B,EAAc13B,SAAW03B,EAAc13B,SAASoM,MAAM,KAAO,IAC9E1P,MAAK2qB,UAAYwH,EAAKrjB,cAAc,oBAAsBqjB,EAAKrjB,cAAc,oBACzE9O,KAAKspB,iBAAiBsT,EAAYzK,EAAK9Q,GAAK,QAj5EzC,mBAk5EPrhB,KAAK2qB,UAAUnlB,UAAY,EAC3B,IAEIolB,GAAqB,iBAFN5qB,KAAKsqB,aAAaxb,cAAc,mBAC/CwN,OAAOnG,iBAAiBnW,KAAKsqB,aAAaxb,cAAc,oBAAoB3L,OAAS,OAC/B,GAC1D0nB,qBAAS7qB,KAAK2qB,WAAaxnB,OAAQynB,GACnC,IAAIvJ,GAAKrhB,KAAKsC,QAAQ+e,GAAK,kBAAoB2Z,EAAc3Z,EAC7DrhB,MAAK2pB,eAAeqR,EAAcl2B,QAAS9E,KAAK2qB,UAAWtJ,GAAI,EAAM,WACrErhB,KAAKsqB,aAAavX,YAAY/S,KAAK2qB,WACnC3qB,KAAKqgB,2BAGD8R,GAAKrjB,cAAc,qBACnBR,SAAO6jB,EAAKrjB,cAAc,oBAGlC9O,MAAK4nB,gBAAgBuK,EAAM6I,GAC3Bh7B,KAAKknB,kBAAkBiL,EAAM6I,GAC7Bh7B,KAAKinB,iBAAiBkL,EAAM6I,EAAclV,IAAKkV,EAAcjV,KAC7D/lB,KAAKooB,kBAAkB+J,EAAM6I,GACzBh7B,KAAKqmB,mBACLrmB,KAAKuoB,wBAETvoB,KAAKmoB,YAAc,KACnBnoB,KAAK6oB,eACL7oB,KAAK8oB,4BAETvF,EAAgBrjB,UAAU4oB,uBAAyB,WAC/C9oB,KAAK61B,WAAa71B,KAAK6kB,YACvB7kB,KAAK41B,YAAc8F,KAAKC,MAAMD,KAAKE,UAAU57B,KAAKulB,aAOtDhC,EAAgBrjB,UAAU28B,UAAY,WAGlC,IAAK,GAFDC,GAAa98B,KAAKusB,YAAYvsB,KAAK4lB,QACnCmX,KACK/7B,EAAI,EAAGA,EAAI87B,EAAWn8B,OAAQK,IACnC+7B,EAAaxtB,MACT8R,GAAIyb,EAAW97B,GAAGqgB,GAAIyE,IAAKgX,EAAW97B,GAAG8kB,IAAKC,IAAK+W,EAAW97B,GAAG+kB,IACjEgB,MAAO+V,EAAW97B,GAAG+lB,MAAOC,MAAO8V,EAAW97B,GAAGgmB,MAAOgE,SAAU8R,EAAW97B,GAAGgqB,SAChFC,SAAU6R,EAAW97B,GAAGiqB,SAAUC,SAAU4R,EAAW97B,GAAGkqB,SAC1DC,SAAU2R,EAAW97B,GAAGmqB,UAGhC,WAKJ5H,EAAgBrjB,UAAU88B,UAAY,WAClCh9B,KAAKqkB,iBAAkB,CACvB,KAAK,GAAIrjB,GAAI,EAAGA,EAAIhB,KAAK4kB,gBAAgBjkB,OAAQK,IAC7CsN,SAAOtO,KAAK4kB,gBAAgB5jB,IAC5BhB,KAAK+D,eAET/D,MAAKi9B,iBACLj9B,KAAKwjB,KAAO,EACZxjB,KAAK8kB,uBACL9kB,KAAKwxB,iBACLxxB,KAAK2oB,cACL3oB,KAAK6kB,eACL7kB,KAAKglB,uBACLhlB,KAAK+kB,kBACL/kB,KAAKilB,0BACLjlB,KAAK4kB,mBACL5kB,KAAKulB,aACLvlB,KAAK41B,cACL,IAAIsH,GAAel9B,KAAKusB,YAAYvsB,KAAK4lB,OACzC5lB,MAAK2O,eAAgBiX,YAAc,GACnC5lB,KAAK6oB,eACL7oB,KAAK8oB,yBACL9oB,KAAKqvB,iBAAgB,EAAO,KAAM6N,GAClCl9B,KAAKqkB,iBAAkB,EACvBrkB,KAAK4xB,wBASTrO,EAAgBrjB,UAAUi9B,YAAc,SAAU9b,GAC9C,GAAI9e,GAAQvC,IACZA,MAAKukB,YAAc,EACnBvkB,KAAKssB,mBAAqBtsB,KAAKusB,YAAYvsB,KAAK4lB,OAEhD,KAAK,GADDwX,GACKp8B,EAAI,EAAGA,EAAIhB,KAAK4kB,gBAAgBjkB,OAAQK,IACzChB,KAAK4kB,gBAAgB5jB,GAAGqgB,KAAOA,IAC/B/S,SAAOtO,KAAK4kB,gBAAgB5jB,IAC5BhB,KAAK4kB,gBAAgBhC,OAAO5hB,EAAG,IAE/BhB,KAAK4lB,OAAO5kB,GAAGqgB,KAAOA,IACtB+b,EAAep9B,KAAK4lB,OAAO5kB,GAC3BhB,KAAK4lB,OAAOhD,OAAO5hB,EAAG,GACtBhB,KAAKssB,mBAAmB1J,OAAO5hB,EAAG,GAClChB,KAAKsoB,qBACLtoB,KAAK2oB,cAGb3oB,MAAK6oB,eACD7oB,KAAKqmB,oBACLrmB,KAAKskB,gBAAiB,EACtBtkB,KAAKuoB,wBACLvoB,KAAKskB,gBAAiB,GAE1BtkB,KAAK8kB,oBAAoB1W,QAAQ,SAAUnB,GACnCA,EAAKoU,KAAOA,GACZ9e,EAAMuiB,oBAAoBlC,OAAOrgB,EAAMuiB,oBAAoB9Z,QAAQiC,GAAO,KAGlFjN,KAAK8oB,yBACL9oB,KAAKqvB,iBAAgB,EAAO,MAAO+N,IACR,IAAvBp9B,KAAK4lB,OAAOjlB,QAAgD,IAAhCX,KAAK4kB,gBAAgBjkB,QACjDX,KAAK4xB,wBAcbrO,EAAgBrjB,UAAUm9B,UAAY,SAAUhc,EAAIyE,EAAKC,GACrD/lB,KAAK0jB,iBAAkB,EACvB1jB,KAAKssB,mBAAqBtsB,KAAKusB,YAAYvsB,KAAK4lB,OAChD,IAAIoV,GAAgBh7B,KAAKktB,gBAAgB7L,EACzC,KAAKic,MAAMxX,IAAgB,OAARA,IAAkBwX,MAAMvX,IAAgB,OAARA,GAAkBiV,EAArE,CAGIjV,EAAM,EACNA,EAAM,EAEDA,EAAM/lB,KAAK4mB,UAChBb,EAAM/lB,KAAK4mB,QAAUoU,EAAcjU,OAEvC/mB,KAAK6lB,oBAAoBmV,GAAiBlV,IAAKA,EAAKC,IAAKA,GACzD,IAAIzF,GAAMrW,SAASonB,eAAehQ,EAClCrhB,MAAKmoB,YAAc7H,EACnBtgB,KAAKo0B,SAAWjvB,SAASmb,EAAI1S,aAAa,YAAa,IACvD5N,KAAK87B,SAAW32B,SAASmb,EAAI1S,aAAa,YAAa,IACvD5N,KAAK8mB,eAAgB/Z,OAASgZ,IAAKA,EAAIlZ,WAAYiZ,IAAKA,EAAIjZ,aAAgByT,GAC5EtgB,KAAKsoB,qBACLtoB,KAAKinB,iBAAiB3G,EAAKwF,EAAKC,GAChC/lB,KAAKooB,kBAAkB9H,EAAK0a,GAC5Bh7B,KAAKmnB,kBACLnnB,KAAK6oB,eACL7oB,KAAK8oB,yBACL9oB,KAAKmoB,YAAc,KACfnoB,KAAKmvB,eACLnvB,KAAKovB,mBAETpvB,KAAK0jB,iBAAkB,EACvB1jB,KAAKqvB,iBAAgB,KAEzB9L,EAAgBrjB,UAAU4mB,cAAgB,SAAU/Z,EAAOuT,GACvD,IAAK,GAAItf,GAAI,EAAGA,EAAIvB,OAAOwD,KAAK8J,GAAOpM,OAAQK,IACvCvB,OAAOwD,KAAK8J,KACRA,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAI+kB,KAC7BzF,EAAInR,aAAa,WAAYpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAI+kB,IAAIlZ,YAE9DE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAI8kB,KAC7BxF,EAAInR,aAAa,WAAYpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAI8kB,IAAIjZ,YAE9DE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAI+lB,OAC7BzG,EAAInR,aAAa,aAAcpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAI+lB,MAAMla,YAElEE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIgmB,OAC7B1G,EAAInR,aAAa,aAAcpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIgmB,MAAMna,YAElEE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIgqB,UAC7B1K,EAAInR,aAAa,gBAAiBpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIgqB,SAASne,YAExEE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIiqB,UAC7B3K,EAAInR,aAAa,gBAAiBpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIiqB,SAASpe,YAExEE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIkqB,UAC7B5K,EAAInR,aAAa,gBAAiBpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAIkqB,SAASre,YAExEE,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAImqB,UAC7B7K,EAAInR,aAAa,gBAAiBpC,EAAMtN,OAAOwD,KAAK8J,GAAO/L,IAAImqB,SAASte,cAcxF0W,EAAgBrjB,UAAUq9B,YAAc,SAAUlc,EAAI0F,EAAOC,GACzDhnB,KAAKssB,mBAAqBtsB,KAAKusB,YAAYvsB,KAAK4lB,OAChD,IAAIoV,GAAgBh7B,KAAKktB,gBAAgB7L,EACzCrhB,MAAK2jB,cAAe,CACpB,IAAIrD,GAAMrW,SAASonB,eAAehQ,GAC9BmL,GAAS1gB,MAAO,KAAMxJ,QAASge,EAAKmM,cAAc,EACtDzsB,MAAKwN,QAAQ,cAAegf,GAC5BxsB,KAAK6lB,oBAAoBmV,GAAiBjU,MAAOA,EAAOC,MAAOA,IAC/DhnB,KAAKynB,gBAAgBuT,GACrBh7B,KAAKiyB,kBAAkB+I,GACvBh7B,KAAKmoB,YAAc7H,EACnBtgB,KAAK8mB,eAAgB/Z,OAASga,MAAOiU,EAAcjU,MAAMla,WAAYma,MAAOgU,EAAchU,MAAMna,aAAgByT,GAChHtgB,KAAKknB,kBAAkB5G,EAAK0a,GAC5Bh7B,KAAKooB,kBAAkB9H,EAAK0a,GAC5Bh7B,KAAK6oB,eACL7oB,KAAKmnB,kBACLqF,EAAK5G,OAAS5lB,KAAKivB,oBACnBjvB,KAAK2jB,cAAe,EACpB3jB,KAAKwN,QAAQ,aAAcgf,GAC3BxsB,KAAKqvB,iBAAgB,IAOzB9L,EAAgBrjB,UAAUshB,QAAU,WAChCxX,eAAaS,OAAO6R,OAAQ,SAAUtc,KAAK2rB,iBAC3C3iB,eAAahJ,KAAKsC,UAAW,oBAAqB,QAAS,eAAgB,cAC3EtC,KAAKsC,QAAQ8M,gBAAgB,QAC7B,KAAK,GAAIpO,GAAI,EAAGA,EAAIhB,KAAKmlB,eAAexkB,OAAQK,IAC5ChB,KAAKmlB,eAAenkB,GAAGwgB,SAE3BxhB,MAAKi9B,iBACLj9B,KAAK4kB,gBAAkB,KACvB5kB,KAAK+uB,eAAiB,KACtB/uB,KAAKmoB,YAAc,KACnBnoB,KAAKo6B,QAAU,KACfp6B,KAAKw9B,cAAgB,KACrBx9B,KAAKi7B,kBAAoB,KACzBj7B,KAAKk7B,iBAAmB,KACxBl7B,KAAK6kB,YAAc,KACnB7kB,KAAK61B,WAAa,KAClB71B,KAAK+kB,eAAiB,KACtB/kB,KAAKglB,oBAAsB,KAC3BhlB,KAAKmlB,kBACLnlB,KAAKslB,SAAW,KAChBtlB,KAAKytB,WAAa,KAClBztB,KAAKgvB,SAAW,KAChBhvB,KAAK0sB,WAAa,KAClB1sB,KAAK+yB,gBAAkB,KACvB/yB,KAAKy9B,mBAAqB,KAC1Bz9B,KAAKsqB,aAAe,KACpBtqB,KAAK2qB,UAAY,KACjB3qB,KAAKwmB,MAAQ,KACbxkB,EAAO9B,UAAUshB,QAAQhf,KAAKxC,MAC9BA,KAAK+D,gBACL/D,KAAKqgB,wBAETkD,EAAgBrjB,UAAU+8B,eAAiB,WACvC,KAAOj9B,KAAKsC,QAAQo7B,mBAChBpvB,SAAOtO,KAAKsC,QAAQo7B,mBACpB19B,KAAK+D,iBAGbwf,EAAgBrjB,UAAU+oB,aAAe,YACd,IAAnBjpB,KAAKuE,UACL0E,YAAUjJ,KAAKsC,SAAU,SAGzB0G,eAAahJ,KAAKsC,SAAU,UASpCihB,EAAgBrjB,UAAUy9B,yBAA2B,WACjD39B,KAAKgpB,wBACLhpB,KAAKwxB,iBACLxxB,KAAKuxB,cACL,KAAK,GAAIvwB,GAAI,EAAGA,EAAIhB,KAAKsC,QAAQ0R,iBAAiB,YAAYrT,OAAQK,IAAK,CACvE,GAAIsf,GAAMtgB,KAAKsC,QAAQ0R,iBAAiB,YAAYhT,GAChDopB,EAAapqB,KAAKktB,gBAAgB5M,EAAIe,GAC1CrhB,MAAKknB,kBAAkB5G,EAAK8J,GAC5BpqB,KAAKinB,iBAAiB3G,EAAK8J,EAAWtE,IAAKsE,EAAWrE,OAG9DxC,EAAgBrjB,UAAU09B,wBAA0B,SAAUhY,GAC1D5lB,KAAKg9B,YACLh9B,KAAK2O,eAAgBiX,OAAQA,IAAU,GACvC5lB,KAAKylB,eACDzlB,KAAKwmB,OACLxmB,KAAKwmB,MAAM/b,SAEfzK,KAAKkmB,aACDlmB,KAAKqmB,mBACLrmB,KAAKuiB,UAELviB,KAAKomB,eACLpmB,KAAKsmB,iBAGb/C,EAAgBrjB,UAAU29B,iBAAmB,SAAUjY,GACnD,GAAIrjB,GAAQvC,MACP6E,oBAAkB+gB,IAAWA,EAAOjlB,OAAS,GAC9CX,KAAKyjB,QAAU,EACfmC,EAAOxX,QAAQ,SAAU8iB,GAChBA,EAAM7P,KACP9e,EAAMsjB,oBAAoBqL,GAAS7P,GAAI,UAAY9e,EAAMkhB,QAAQ5W,aACjEtK,EAAMkhB,QAAUlhB,EAAMkhB,QAAU,MAKxCzjB,KAAK89B,uBAAwB,GAUrCva,EAAgBrjB,UAAUwC,kBAAoB,SAAUC,GACpD,GAAIJ,GAAQvC,IACR2C,GAAQijB,QAAUjjB,EAAQijB,OAAOjlB,OAAS,GAAKgC,EAAQijB,OAAO,YAActC,IAC5EtjB,KAAK69B,iBAAiBl7B,EAAQijB,OAElC,KAAK,GAAI7iB,GAAK,EAAGC,EAAKvD,OAAOwD,KAAKN,GAAUI,EAAKC,EAAGrC,OAAQoC,IAExD,OADWC,EAAGD,IAEV,IAAK,YACD/C,KAAK2O,eAAgBpK,UAAW5B,EAAQ4B,YAAa,GACrDvE,KAAKipB,cACL,MACJ,KAAK,aACDjpB,KAAK2O,eAAgBqZ,WAAYrlB,EAAQqlB,aAAc,GACnDhoB,KAAKqmB,mBACLrmB,KAAKuoB,uBAET,MACJ,KAAK,gBACDvoB,KAAK2O,eAAgB8Z,cAAe9lB,EAAQ8lB,gBAAiB,GAC7DzoB,KAAK24B,YACL,MACJ,KAAK,gBAED,GADA34B,KAAK2O,eAAgB6c,cAAe7oB,EAAQ6oB,gBAAiB,GACzDxrB,KAAKwrB,cACLxrB,KAAKqoB,WAAWroB,KAAK4kB,iBACrB5kB,KAAKurB,mBAEJ,CAED,IAAK,GADDlE,GAAgBrnB,KAAKsC,QAAQ0R,iBAAiB,yCACzChT,EAAI,EAAGA,EAAIqmB,EAAc1mB,OAAQK,IAAK,CAC3C,GAAI8S,GAAmC,SAAtB3K,UAAQC,KAAKC,KAAmB,wBAA0B,YACvE/G,EAAU+kB,EAAcrmB,EAC5BgJ,gBAAaS,OAAOnI,EAASwR,EAAW9T,KAAKyrB,mBACnB,SAAtBtiB,UAAQC,KAAKC,MACbW,eAAaS,OAAOnI,EAAS,aAActC,KAAK0rB,wBAGxD1rB,KAAK8wB,oBAAoB9wB,KAAK4kB,iBAElC,KACJ,KAAK,cACD5kB,KAAK2O,eAAgBya,YAAazmB,EAAQymB,cAAe,GACpDppB,KAAKqmB,oBACNrmB,KAAK29B,2BACL39B,KAAKowB,kBAET,MACJ,KAAK,kBACDpwB,KAAK2O,eAAgBmqB,gBAAiBn2B,EAAQm2B,kBAAmB,GACjE94B,KAAK24B,YACL,MACJ,KAAK,gBACD34B,KAAK2O,eAAgBwgB,cAAexsB,EAAQwsB,gBAAiB,GAC7DnvB,KAAKovB,kBACL,MACJ,KAAK,gBACGpvB,KAAKomB,eACLpmB,KAAK2O,eAAgByX,cAAezjB,EAAQyjB,gBAAiB,GAC7DpmB,KAAKsmB,iBAGDtmB,KAAKwmB,OACLlY,SAAOtO,KAAKwmB,MAGpB,MACJ,KAAK,eACDxmB,KAAK2O,eAAgBghB,aAAchtB,EAAQgtB,eAAgB,EAC3D,MACJ,KAAK,UACIhtB,EAAQikB,UAAY5mB,KAAK89B,uBAA0Bn7B,EAAQijB,OAAO,IAAMjjB,EAAQijB,OAAOjlB,OAAS,GACjGX,KAAKmmB,kBAAmB,EACxBnmB,KAAK49B,wBAAwBj7B,EAAQijB,QACrC5lB,KAAKmmB,kBAAmB,GAEjBxjB,EAAQijB,OAAO,IAAMjjB,EAAQijB,OAAOjlB,OAM3CX,KAAK89B,uBAAwB,GAL7B99B,KAAKmmB,kBAAmB,EACxBnmB,KAAK49B,wBAAwB59B,KAAK4lB,QAClC5lB,KAAKmmB,kBAAmB,EAK5B,MACJ,KAAK,UACDnmB,KAAKmmB,kBAAmB,EACpBxjB,EAAQijB,QACR5lB,KAAK49B,wBAAwBj7B,EAAQijB,QAEzC5lB,KAAK2O,eAAgBiY,QAASjkB,EAAQikB,UAAW,GACjD5mB,KAAK4kB,mBACL5kB,KAAK0nB,eAAiB1nB,KAAK4mB,QAC3B5mB,KAAK0lB,oBACL1lB,KAAK4lB,OAAOxX,QAAQ,SAAU8iB,GAE1B,GADA3uB,EAAMklB,gBAAgByJ,GAClB3uB,EAAMmlB,eAAiBwJ,EAAMnL,KAAOxjB,EAAMmlB,eAAkBwJ,EAAMnL,IAAMmL,EAAMnK,MAAQ,CACtF,GAAIY,GAAWplB,EAAMmlB,eAAiBwJ,EAAMnK,KAC5CxkB,GAAMsjB,oBAAoBqL,GAASnL,IAAK4B,EAAW,EAAI,EAAIA,IAC3DplB,EAAMqlB,gBAAgB3d,SAASonB,eAAeH,EAAM7P,IAAK6P,GAE7D3uB,EAAM2kB,kBAAkBjd,SAASonB,eAAeH,EAAM7P,IAAK6P,GAC3D3uB,EAAMqiB,gBAAgBrV,KAAKtF,SAASonB,eAAeH,EAAM7P,KACzD9e,EAAM0kB,iBAAiBhd,SAASonB,eAAeH,EAAM7P,IAAK6P,EAAMpL,IAAKoL,EAAMnL,KAC3ExjB,EAAM4lB,YAAcle,SAASonB,eAAeH,EAAM7P,IAClD9e,EAAM6lB,kBAAkBne,SAASonB,eAAeH,EAAM7P,IAAK6P,GAC3D3uB,EAAM4lB,YAAc,OAExBnoB,KAAK6oB,eACL7oB,KAAK8oB,yBACL9oB,KAAKmmB,kBAAmB,EACxBnmB,KAAKowB,oBAWrB7M,EAAgBrjB,UAAUqJ,eAAiB,WACvC,GAAIw0B,IAAa,SACjB,OAAO/9B,MAAKwJ,aAAau0B,IAG7Bxa,EAAgBrjB,UAAUykB,sBAAwB,SAAUqZ,GACxD,GAAIC,GAAO3hB,OAAO4hB,aAAaC,QAAQn+B,KAAK+H,gBAAkB/H,KAAKsC,QAAQ+e,GAC3E,KAAMxc,oBAAkBo5B,IAAmB,KAATA,IAAkBp5B,oBAAkBm5B,GAAgB,CAClF,GAAII,GAAWv5B,oBAAkBm5B,GAAiCtC,KAAKC,MAAMsC,GAA3BD,EAC9C/6B,EAAOxD,OAAOwD,KAAKm7B,EACvBp+B,MAAKq+B,qBAAsB,CAC3B,KAAK,GAAIt7B,GAAK,EAAGu7B,EAASr7B,EAAMF,EAAKu7B,EAAO39B,OAAQoC,IAAM,CACtD,GAAIxC,GAAM+9B,EAAOv7B,EACmB,iBAAxBw7B,YAASh+B,EAAKP,OAAuB6E,oBAAkB05B,WAASh+B,EAAKP,QACzEJ,MAAM4+B,QAAQD,WAASh+B,EAAKP,QAAkB,WAARO,IACtCP,KAAKy+B,YAAYL,EAAQ79B,GAAMP,KAAKO,IACpCP,KAAKO,GAAO69B,EAAQ79B,IAIhCP,KAAKq+B,qBAAsB,IAInC9a,EAAgBrjB,UAAUu+B,YAAc,SAAUC,EAAc9Y,GAU5D,IAAK,GATD+Y,GAAgBD,EAQhBE,EAAS5+B,KACJgB,EAAI,EAAGA,EAAI29B,EAAch+B,OAAQK,KAR5B,SAAUA,GACpB49B,EAAOf,iBAAiBjY,EACxB,IAAIiZ,GAAajZ,EAAO/N,OAAO,SAAUinB,GAAO,MAAOA,GAAIzd,KAAOsd,EAAc39B,GAAGqgB,KAAO,EACrFxc,qBAAkBg6B,KACnBF,EAAc39B,GAAKuM,SAAOsxB,EAAYF,EAAc39B,OAAQ,KAKxDA,IAUhBuiB,EAAgBrjB,UAAU6H,cAAgB,WACtC,MAAO,mBAEX3H,GACI8B,YAAS,IACVqhB,EAAgBrjB,UAAW,oBAAiB,IAC/CE,GACI8B,YAAS,IACVqhB,EAAgBrjB,UAAW,oBAAiB,IAC/CE,GACI8B,YAAS,IACVqhB,EAAgBrjB,UAAW,mBAAgB,IAC9CE,GACI8B,YAAS,IACVqhB,EAAgBrjB,UAAW,0BAAuB,IACrDE,GACI8B,YAAS,IACVqhB,EAAgBrjB,UAAW,oBAAiB,IAC/CE,GACI8B,WAAS,IACVqhB,EAAgBrjB,UAAW,sBAAmB,IACjDE,GACI8B,YAAU,EAAG,KACdqhB,EAAgBrjB,UAAW,kBAAe,IAC7CE,GACI8B,WAAS,IACVqhB,EAAgBrjB,UAAW,cAAW,IACzCE,GACI8B,YAAS,IACVqhB,EAAgBrjB,UAAW,oBAAiB,IAC/CE,GACI8B,WAAS,OACVqhB,EAAgBrjB,UAAW,sBAAmB,IACjDE,GACI8B,WAAS,UACVqhB,EAAgBrjB,UAAW,aAAU,IACxCE,GACI8B,WAAS,qBACVqhB,EAAgBrjB,UAAW,iBAAc,IAC5CE,GACI4iB,gBAAeM,IAChBC,EAAgBrjB,UAAW,aAAU,IACxCE,GACI8B,YAAU,kBACXqhB,EAAgBrjB,UAAW,uBAAoB,IAClDE,GACI6iB,WACDM,EAAgBrjB,UAAW,aAAU,IACxCE,GACI6iB,WACDM,EAAgBrjB,UAAW,gBAAa,IAC3CE,GACI6iB,WACDM,EAAgBrjB,UAAW,WAAQ,IACtCE,GACI6iB,WACDM,EAAgBrjB,UAAW,eAAY,IAC1CE,GACI6iB,WACDM,EAAgBrjB,UAAW,kBAAe,IAC7CE,GACI6iB,WACDM,EAAgBrjB,UAAW,aAAU,IACxCE,GACI6iB,WACDM,EAAgBrjB,UAAW,iBAAc,IAC5CE,GACI6iB,WACDM,EAAgBrjB,UAAW,cAAW,IACzCE,GACI6iB,WACDM,EAAgBrjB,UAAW,gBAAa,IAC3CqjB,EAAkBnjB,GACd8iB,yBACDK,IAELJ,aCx/FE9jB,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,SAAWm+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,SAAUj9B,GAExC,QAASi9B,KACL,MAAkB,QAAXj9B,GAAmBA,EAAOC,MAAMjC,KAAMU,YAAcV,KAiB/D,MAnBAX,GAAU4/B,EAAcj9B,GAIxB5B,GACI8B,WAAS,KACV+8B,EAAa/+B,UAAW,aAAU,IACrCE,GACI8B,WAAS,KACV+8B,EAAa/+B,UAAW,cAAW,IACtCE,GACI8B,WAAS,KACV+8B,EAAa/+B,UAAW,sBAAmB,IAC9CE,GACI8B,YAAS,IACV+8B,EAAa/+B,UAAW,eAAY,IACvCE,GACI8B,WAAS,KACV+8B,EAAa/+B,UAAW,eAAY,IAChC++B,GACT98B,iBAeE+8B,EAA0B,SAAUl9B,GASpC,QAASk9B,GAAS78B,EAASC,GACvB,MAAON,GAAOQ,KAAKxC,KAAMqC,EAASC,IAAYtC,KA+VlD,MAxWAX,GAAU6/B,EAAUl9B,GAWpBk9B,EAASh/B,UAAU0H,UAAY,WACtB5H,KAAKsC,QAAQ+e,KACdrhB,KAAKsC,QAAQ+e,GAAK8d,cAAY,KAAOn/B,KAAK+H,mBASlDm3B,EAASh/B,UAAU6H,cAAgB,WAC/B,MAAO,YAQXm3B,EAASh/B,UAAUqJ,eAAiB,WAChC,MAAOvJ,MAAKwJ,kBAEhB01B,EAASh/B,UAAUuJ,OAAS,WACxBiY,aAAW1hB,KAAKsC,SAAW88B,KAAQ,aAAcC,aAAcr/B,KAAKsC,QAAQ+e,KAC5ErhB,KAAKs/B,gBAAkBt/B,KAAK8S,cAAc,MAAQrD,UA7HlC,qBA8HhBzP,KAAKu/B,oBACLv/B,KAAKw/B,eAAex/B,KAAKsD,UACzBtD,KAAKy/B,cACLz/B,KAAK0/B,gBACL1/B,KAAK2/B,YACL3/B,KAAK4/B,yBACL5/B,KAAK6/B,cACL7/B,KAAKsC,QAAQyQ,YAAY/S,KAAKs/B,kBAElCJ,EAASh/B,UAAUq/B,kBAAoB,WACnC,IAAM16B,oBAAkB7E,KAAK6D,aAAe,CACxC,GAAIi8B,GAAgB9/B,KAAK6D,YAAY+P,aACf,gBAAlBksB,GAAoD,aAAlBA,IAClC9/B,KAAKsC,QAAQO,UAAU4H,OAnItB,eADF,cAqICzK,KAAKsC,QAAQO,UAAUgE,IAAI,KAAOi5B,MAI9CZ,EAASh/B,UAAUs/B,eAAiB,SAAUO,EAAQC,OAChC,KAAdA,IAAwBA,EAAY,GACxC,IAAIh9B,GAAIi9B,EACJC,CACAF,KACAE,EAAaF,EAAUhf,OAAOtR,MAAM,MACnC1M,EAAKhD,KAAKsC,QAAQO,WAAW4H,OAAOxI,MAAMe,EAAIk9B,IAE/CH,IACAG,EAAaH,EAAO/e,OAAOtR,MAAM,MAChCuwB,EAAKjgC,KAAKsC,QAAQO,WAAWgE,IAAI5E,MAAMg+B,EAAIC,KAGpDhB,EAASh/B,UAAUy/B,UAAY,WAC3B3/B,KAAKsC,QAAQO,UAAU7C,KAAKuE,UAAY,MAAQ,UApJ9C,UAsJN26B,EAASh/B,UAAUu/B,YAAc,WAC7B,IAAM56B,oBAAkB7E,KAAKmgC,OAAS,CAClC,GAAIA,GAAQngC,KAAKmgC,MAAMvsB,aACT,YAAVusB,GAAgC,UAAVA,GAA+B,cAAVA,GAAmC,qBAAVA,IACpEngC,KAAKsC,QAAQO,UAAU4H,OAAO,iBAAkB,gBAAiB,oBAAqB,4BACtFzK,KAAKsC,QAAQO,UAAUgE,IAAI,WAAas5B,MAIpDjB,EAASh/B,UAAUw/B,cAAgB,WAC/B1/B,KAAKsC,QAAQO,UAAU7C,KAAKkP,QAAU,MAAQ,UAjKhC,uBAmKlBgwB,EAASh/B,UAAU2/B,YAAc,WAC7B,GACI78B,GADAT,EAAQvC,IAEZA,MAAKogC,oBACL,KAAK,GAAIl7B,GAAQ,EAAGA,EAAQlF,KAAKqyB,MAAM1xB,OAAQuE,IAAS,CACpD,GAAI+H,GAAOjN,KAAKqyB,MAAMltB,SAASD,EAAM2H,WAAY,KAC7CwzB,EAAergC,KAAK8S,cAAc,MAAQrD,UAAW6wB,+BACzD,IAAKtgC,KAAKkgB,SAwBNlgB,KAAKugC,kBAAkBr7B,GAAO,EAAOm7B,OAxBrB,CAChB,GAAIG,GAAkBxgC,KAAK8S,cAAc,OAASrD,UAlL5C,sBAmLFxC,GAAKwzB,iBACLzgC,KAAK0gC,mBAAkB,EAAOzzB,EAAM/H,EAAOs7B,GAE/CH,EAAattB,YAAYytB,EACzB,IAAIG,GAAe3gC,KAAK8S,cAAc,OAASrD,UAtL5C,eAuLCmxB,EAAY3zB,EAAK4zB,OAASC,SAAmB7zB,EAAK4zB,OAAO7f,OAtL5D,QAuLG+f,EAAS/gC,KAAK8S,cAAc,OAASrD,UAAWmxB,GACpDD,GAAa5tB,YAAYguB,GACzBV,EAAattB,YAAY4tB,EACzB,IAAIK,GAAahhC,KAAK8S,cAAc,OAASrD,UAzL/C,aA0LMxC,GAAKnI,SACL9E,KAAK0gC,mBAAkB,EAAMzzB,EAAM/H,EAAO87B,GAE9CX,EAAattB,YAAYiuB,GACrB/zB,EAAK3J,WACJN,EAAKq9B,EAAax9B,WAAWgE,IAAI5E,MAAMe,EAAIiK,EAAK3J,SAAS0d,OAAOtR,MAAM,MAEvEzC,EAAKg0B,UACLZ,EAAax9B,UAAUgE,IA5L5B,mBAkMH,GAAIoK,IAAc3O,QAAS+9B,EAAcn7B,MAAOA,EAChDlF,MAAKwN,QAAQ,mBAAoByD,EAAW,SAAUub,GAAQjqB,EAAM+8B,gBAAgBvsB,YAAYyZ,EAAKlqB,aAG7G48B,EAASh/B,UAAUkgC,mBAAqB,WAGpC,IAAK,GAFDc,IAAc,EACdC,GAAiB,EACZj8B,EAAQ,EAAGA,EAAQlF,KAAKqyB,MAAM1xB,OAAQuE,IAAS,CACpD,GAAI+H,GAAOjN,KAAKqyB,MAAMltB,SAASD,EAAM2H,WAAY,IAC5Cq0B,KACAA,EAAcj0B,EAAKnI,QAAQnE,OAAS,IAAMkE,oBAAkBoI,EAAKnI,UAEjEq8B,IACAA,EAAiBl0B,EAAKwzB,gBAAgB9/B,OAAS,IAAMkE,oBAAkBoI,EAAKnI,UAGrF9E,KAAKsC,QAAQO,UAAU4H,OAAO,iBAAkB,2BAC5Cy2B,IAAgBC,GAChBnhC,KAAKsC,QAAQO,UAAUgE,IAAI,kBAE3Bs6B,IAAmBD,GACnBlhC,KAAKsC,QAAQO,UAAUgE,IAAI,4BAGnCq4B,EAASh/B,UAAUwgC,kBAAoB,SAAUU,EAAWn0B,EAAM/H,EAAO87B,GACrE,GAAIK,KAAerhC,KAAK+E,SAAW/E,KAAKshC,OACpCC,EAAMvhC,KAAKwhC,oBAAoBJ,EAAYn0B,EAAKnI,QAAUmI,EAAKwzB,gBAAiBY,EACjE,iBAARE,GACPP,EAAWx6B,UAAY+6B,EAGvBrX,SAAOqX,GAAMt0B,KAAMA,EAAMw0B,UAAWv8B,GAASlF,MAAOghC,IAG5D9B,EAASh/B,UAAU0/B,uBAAyB,WACxC5/B,KAAK0hC,iBAAmB1hC,KAAKkgB,SAAWlgB,KAAKwhC,oBAAoBxhC,KAAKkgB,UAAU,GAAS,MAE7Fgf,EAASh/B,UAAUqgC,kBAAoB,SAAUr7B,EAAOy8B,EAAYtB,GAChE,GAAIuB,GAAY5hC,KAAKs/B,gBAAgBtrB,iBAAiB,KAItD,IAHI2tB,GACA3hC,KAAK6hC,kBAAkBD,EAAUz8B,SAAS,EAAQ0H,WAAY,MAE9D7M,KAAKkgB,SAAU,CACXyhB,EACAC,EAAUz8B,SAAS,EAAQ0H,WAAY,KAAKhK,UAAUgE,IA7OvD,mBAgPCw5B,EAAax9B,UAAUgE,IAhPxB,kBAkPH,IAAIoG,GAAOjN,KAAKqyB,MAAMltB,SAASD,EAAM2H,WAAY,IACjDqd,UAAOlqB,KAAK0hC,kBAAmBz0B,KAAMA,EAAMw0B,UAAWv8B,GAASlF,KAAM,mBAAqBA,KAAKsC,QAAQ+e,GAAK,oBAAsBrhB,KAAK6pB,kBAAmB8X,EAAaC,EAAUz8B,SAAS,EAAQ0H,WAAY,KAAOwzB,GAEzNrgC,KAAKqgB,wBAET6e,EAASh/B,UAAU2hC,kBAAoB,SAAUvhB,GAC7CA,EAAIzd,UAAU4H,OAxPP,kBA0PP,KAAK,GADDq3B,GAAaxhB,EAAIod,kBACZ18B,EAAI,EAAGA,EAAIsf,EAAI8G,kBAAmBpmB,IACvC8gC,EAAWr3B,UAWnBy0B,EAASh/B,UAAUshC,oBAAsB,SAAUthB,EAAUmhB,GAEzD,OADmB,KAAfA,IAAyBA,GAAa,GAClB,gBAAbnhB,GAAuB,CAC9B,GAAIpb,GAAU,EACd,KACI,GAAI0b,GAAU5Q,SAAOsQ,EACjBM,IAEA1b,EAA8B,WAApB0b,EAAQuJ,QAAuBvJ,EAAQhb,UAAYgb,EAAQU,UACrEmgB,GAAa,GAGbv8B,EAAUob,EAGlB,MAAO3V,GACHzF,EAAUob,EAEd,MAAOmhB,GAAav8B,EAAUqc,UAAQrc,GAItC,MAAOqc,WAAQjB,IAGvBgf,EAASh/B,UAAU6hC,mBAAqB,WAEpC,IAAK,GADDH,GAAY5hC,KAAKs/B,gBAAgBtrB,iBAAiB,MAC7ChT,EAAI,EAAGA,EAAI4gC,EAAUjhC,OAAQK,IAClCyJ,SAAOm3B,EAAUz8B,SAASnE,EAAE6L,WAAY,OAGhDqyB,EAASh/B,UAAU8hC,wBAA0B,WACzC,GAAIC,IAxSF,QAwSqB,iBAAkB,gBAAiB,YAAa,SAAU,oBAC7E,2BA1SU,qBADL,eADF,aA6SPj5B,gBAAahJ,KAAKsC,SAAU2/B,IAEhC/C,EAASh/B,UAAUgiC,cAAgB,WAC3BliC,KAAK+E,SACL/E,KAAK+D,eAAe,oBAExB,KAAK,GAAI/C,GAAI,EAAGA,EAAIhB,KAAKqyB,MAAM1xB,OAAQK,IACnChB,KAAKugC,kBAAkBv/B,GAAG,IAGlCk+B,EAASh/B,UAAUshB,QAAU,WACzBxf,EAAO9B,UAAUshB,QAAQhf,KAAKxC,MAE9BA,KAAK+hC,qBACL/hC,KAAKsC,QAAQ8M,gBAAgB,QAC7BpP,KAAKsC,QAAQ8M,gBAAgB,cAC7BpP,KAAK+D,gBACD/D,KAAKs/B,iBACL70B,SAAOzK,KAAKs/B,iBAEhBt/B,KAAKs/B,gBAAkB,KACvBt/B,KAAKgiC,2BAET9C,EAASh/B,UAAUiiC,YAAc,SAAUx/B,EAASy/B,EAAcl9B,EAAO+H,GACrE,GAAIjK,GAAIi9B,EAAIoC,EAAIC,EAEZvB,EACAC,EACAuB,EAHAC,EAAuBxiC,KAAKs/B,gBAAgBtrB,iBAAiB,KAIjE,QAAQrR,GACJ,IAAK,SACDo+B,EAASyB,EAAqBr9B,SAASD,EAAM2H,WAAY,KAAKiC,cAAc,UAChD,KAAxBszB,EAAavB,SACZ79B,EAAK+9B,EAAOl+B,WAAW4H,OAAOxI,MAAMe,EAAIo/B,EAAavB,OAAO7f,OAAOtR,MAAM,MAE1D,KAAhBzC,EAAK4zB,SACJZ,EAAKc,EAAOl+B,WAAWgE,IAAI5E,MAAMg+B,EAAIjgC,KAAKqyB,MAAMltB,SAASD,EAAM2H,WAAY,KAAKg0B,OAAO7f,OAAOtR,MAAM,KAEzG,MACJ,KAAK,WACDsxB,EAAawB,EAAqBr9B,SAASD,EAAM2H,WAAY,KAAKiC,cAAc,eACrEtI,UAAY,GACvBxG,KAAK0gC,mBAAkB,EAAMzzB,EAAM/H,EAAO87B,GAC1ChhC,KAAKogC,oBACL,MACJ,KAAK,mBACDmC,EAAcC,EAAqBr9B,SAASD,EAAM2H,WAAY,KAAKiC,cAAc,wBACrEtI,UAAY,GACxBxG,KAAK0gC,mBAAkB,EAAOzzB,EAAM/H,EAAOq9B,GAC3CviC,KAAKogC,oBACL,MACJ,KAAK,WACDoC,EAAqBr9B,SAASD,EAAM2H,WAAY,KAAKhK,UAAU7C,KAAKqyB,MAAMltB,SAASD,EAAM2H,WAAY,KAAKo0B,SAAW,MAAQ,UA7V9H,kBA8VC,MACJ,KAAK,WAC6B,KAA1BmB,EAAa9+B,WACZ++B,EAAKG,EAAqBr9B,SAASD,EAAM2H,WAAY,KAAKhK,WAAW4H,OAAOxI,MAAMogC,EAAID,EAAa9+B,SAAS0d,OAAOtR,MAAM,MAExG,KAAlBzC,EAAK3J,WACJg/B,EAAKE,EAAqBr9B,SAASD,EAAM2H,WAAY,KAAKhK,WAAWgE,IAAI5E,MAAMqgC,EAAIr1B,EAAK3J,SAAS0d,OAAOtR,MAAM,QAa/HwvB,EAASh/B,UAAUwC,kBAAoB,SAAUC,EAASC,GACtD,IAAK,GAAIG,GAAK,EAAGC,EAAKvD,OAAOwD,KAAKN,GAAUI,EAAKC,EAAGrC,OAAQoC,IAExD,OADWC,EAAGD,IAEV,IAAK,QACD,GAAInD,MAAM4+B,QAAQ77B,EAAQ0vB,OACtBryB,KAAK+hC,qBACL/hC,KAAK6/B,kBAIL,KAAK,GADD4C,GAAahjC,OAAOwD,KAAKN,EAAQ0vB,OAAO1xB,OACnCK,EAAI,EAAGA,EAAIyhC,EAAYzhC,IAE5B,IAAK,GADD0hC,GAAiBv9B,SAAS1F,OAAOwD,KAAKN,EAAQ0vB,OAAOrxB,GAAI,IACpDqE,EAAI,EAAGA,EAAI5F,OAAOwD,KAAKN,EAAQ0vB,MAAMqQ,IAAiB/hC,OAAQ0E,IAAK,CACxE,GAAIC,GAAW7F,OAAOwD,KAAKN,EAAQ0vB,MAAMqQ,IAAiBr9B,EAC1DrF,MAAKmiC,YAAY78B,EAAU1C,EAAQyvB,MAAMqQ,GAAiBA,EAAgB//B,EAAQ0vB,MAAMqQ,IAIpG,KACJ,KAAK,cACD1iC,KAAKu/B,mBACL,MACJ,KAAK,QACDv/B,KAAKy/B,aACL,MACJ,KAAK,YACDz/B,KAAK2/B,WACL,MACJ,KAAK,WACD3/B,KAAKw/B,eAAe78B,EAAQW,SAAUV,EAAQU,SAC9C,MACJ,KAAK,UACDtD,KAAKsC,QAAQO,UAAU7C,KAAKkP,QAAU,MAAQ,UApZ5C,qBAqZF,MACJ,KAAK,WACDlP,KAAK4/B,yBACL5/B,KAAKkiC,kBAKrB9hC,GACI8B,WAAS68B,sBAAoB4D,WAC9BzD,EAASh/B,UAAW,kBAAe,IACtCE,GACI8B,WAAS88B,gBAAc4D,QACxB1D,EAASh/B,UAAW,YAAS,IAChCE,GACI4iB,gBAAeic,IAChBC,EAASh/B,UAAW,YAAS,IAChCE,GACI8B,WAAS,KACVg9B,EAASh/B,UAAW,eAAY,IACnCE,GACI8B,YAAS,IACVg9B,EAASh/B,UAAW,cAAW,IAClCE,GACI8B,WAAS,KACVg9B,EAASh/B,UAAW,eAAY,IACnCE,GACI6iB,WACDic,EAASh/B,UAAW,cAAW,IAClCE,GACI6iB,WACDic,EAASh/B,UAAW,uBAAoB,IAC3Cg/B,EAAW9+B,GACP8iB,yBACDgc,IAEL/b"}