@finqu/cool 1.2.7 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/cool-grid.css +3 -3
- package/dist/css/cool-grid.css.map +1 -1
- package/dist/css/cool-grid.min.css +2 -2
- package/dist/css/cool-grid.min.css.map +1 -1
- package/dist/css/cool-reboot.css +3 -3
- package/dist/css/cool-reboot.css.map +1 -1
- package/dist/css/cool-reboot.min.css +2 -2
- package/dist/css/cool-reboot.min.css.map +1 -1
- package/dist/css/cool.css +3 -3
- package/dist/css/cool.css.map +1 -1
- package/dist/css/cool.min.css +2 -2
- package/dist/css/cool.min.css.map +1 -1
- package/dist/js/cool.bundle.js +11 -4
- package/dist/js/cool.bundle.js.map +1 -1
- package/dist/js/cool.esm.js +9 -2
- package/dist/js/cool.esm.js.map +1 -1
- package/dist/js/cool.js +11 -4
- package/dist/js/cool.js.map +1 -1
- package/js/dist/collapse.js +9 -18
- package/js/dist/collapse.js.map +1 -1
- package/js/dist/common.js +9 -18
- package/js/dist/common.js.map +1 -1
- package/js/dist/dropdown.js +11 -23
- package/js/dist/dropdown.js.map +1 -1
- package/js/dist/popover.js +9 -18
- package/js/dist/popover.js.map +1 -1
- package/js/dist/sectiontabs.js +9 -18
- package/js/dist/sectiontabs.js.map +1 -1
- package/js/dist/select.js +3703 -3623
- package/js/dist/select.js.map +1 -1
- package/js/dist/tooltip.js +9 -18
- package/js/dist/tooltip.js.map +1 -1
- package/js/src/select.js +8 -1
- package/package.json +1 -1
- package/scss/cool-grid.scss +1 -1
- package/scss/cool-reboot.scss +1 -1
- package/scss/cool.scss +1 -1
package/js/dist/select.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sources":["../src/util/perfect-scrollbar.js","../src/util/index.js","../src/abstract-ui-component.js","../src/select.js"],"sourcesContent":["/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n var this$1 = this;\n\n for (var name in this$1.handlers) {\n this$1.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nvar processScrollDiff = function(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n (i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n roundedScrollTop *\n (i.railYHeight - i.scrollbarYHeight) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n};\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nvar clickRail = function(i) {\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n};\n\nvar dragThumb = function(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n};\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n startingScrollTop = element[scrollTop];\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nvar keyboard = function(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n};\n\nvar wheel = function(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n};\n\nvar touch = function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n};\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this$1.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;","import 'jquery';\n\nconst debounce = function (func, wait, immediate) {\n\n\tlet timeout;\n\n\treturn function() {\n\n\t\tlet context = this;\n\t\tlet args = arguments;\n\t\tlet later = function() {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\t\t};\n\n\t\tlet callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n};\n\nconst shallowProperty = function(key) {\n\n\treturn function(obj) {\n\n\t\treturn obj == null ? void 0 : obj[key];\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\n\tlet length = shallowProperty('length');\n\n\treturn typeof length == 'number' && length >= 0 && length <= Math.pow(2, 53) - 1;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n\n if (context === void 0) {\n \treturn func;\n\t}\n\n\tswitch (argCount == null ? 3 : argCount) {\n\n\t\tcase 1: return function(value) {\n\t\t\treturn func.call(context, value);\n\t\t};\n\n\t\tcase 3: return function(value, index, collection) {\n\t\t\treturn func.call(context, value, index, collection);\n\t\t};\n\t\tcase 4: return function(accumulator, value, index, collection) {\n\t\t\treturn func.call(context, accumulator, value, index, collection);\n\t\t};\n\t}\n\n return function() {\n\t\treturn func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\n\titeratee = optimizeCb(iteratee, context);\n\n\tlet i;\n\tlet length;\n\n\tif (isArrayLike(obj)) {\n\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\n\t} else {\n\n\t\tlet keys = Object.keys(obj);\n\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\n\tlet result = false;\n\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\tresult = true;\n\t}\n\n\treturn result;\n};\n\n$.event.special.destroyed = {\n\n\tremove: function(obj) {\n\n\t\tif (obj.handler) {\n\t\t\tobj.handler();\n\t\t}\n\t}\n}\n\nexport {\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\n\t// Init callback\n onInit() {\n\n let onInit = this.opts.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(this);\n }\n }\n\n // Update callback\n onUpdate() {\n\n let onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this);\n }\n }\n\n // Show callback\n onShow() {\n\n let onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this);\n }\n }\n\n // Close callback\n onClose() {\n\n let onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this);\n }\n }\n\n // Reset callback\n onReset() {\n\n let onReset = this.opts.onReset;\n\n if (typeof onReset === 'function') {\n\n onReset.call(this);\n }\n }\n\n // Debug log\n log(...args) {\n\n \tif (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSelect';\nconst DATA_KEY = 'plugin_coolSelect';\n\nclass Select extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.select) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.select, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache().then(() => {\n\n this.buildScroll();\n this.bindEvents();\n\n if (this.data[this.name].length > 0) {\n this.setData();\n }\n\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.bindEvents();\n this.onUpdate();\n }\n\n // Reset plugin data\n reset() {\n\n this.data = {};\n this.data[this.name] = [];\n this.items = [];\n this.$select.find('.select-item').remove();\n this.$selectItems = [];\n this.$selectIconContainer.html(this.selectIconDefault);\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.searchData = [];\n this.$searchInput.val('');\n this.searchString = '';\n this.search.call(this);\n }\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n return new Promise((primaryResolve, primaryReject) => {\n\n let self = this;\n\n this.$el = $(this.el);\n this.$container = this.$el.parent();\n this.$selectHeader = this.$el.find('.select-header');\n this.$selectTitle = this.$el.find('.select-title');\n this.$selectIconContainer = this.$selectHeader.find('.select-icon');\n this.selectIconDefault = this.$selectHeader.find('.select-icon') ? this.$selectHeader.find('.select-icon').html() : '<i class=\"'+(this.opts.faPro ? 'fal' : 'fas')+'fa-angle-down icon\"></i>';\n this.name = this.$el.data('name') ? this.$el.data('name') : this.opts.name;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.items = this.$el.data('items') ? this.$el.data('items') : this.opts.items;\n this.data = {};\n this.data[this.name] = [];\n this.searchData = [];\n this.searchApi = this.$el.data('searchApi') ? this.$el.data('searchApi') : this.opts.searchApi;\n this.type = this.$el.data('type') ? this.$el.data('type') : this.opts.type;\n this.contentOpen = false;\n this.searchPlaceholder = this.$el.data('search-placeholder') ? this.$el.data('search-placeholder') : this.opts.searchPlaceholder;\n this.btnCloseText = this.$el.data('btn-close-text') ? this.$el.data('btn-close-text') : this.opts.btnCloseText;\n this.labelTemplate = this.opts.labelTemplate;\n this.confirmCheck = this.opts.confirmCheck;\n this.confirmUncheck = this.opts.confirmUncheck;\n this.preventUncheck = this.opts.preventUncheck;\n this.dynamicTitle = this.$el.data('dynamicTitle') ? this.$el.data('dynamicTitle') : this.opts.dynamicTitle;\n this.dynamicTitleDefault = this.$el.data('dynamicTitleDefault') ? this.$el.data('dynamicTitleDefault') : this.opts.dynamicTitleDefault;\n this.dynamicTitleEmptyDefault = this.$el.data('dynamicTitleEmptyDefault') ? this.$el.data('dynamicTitleEmptyDefault') : this.opts.dynamicTitleEmptyDefault;\n this.allowNoneOnRadioSelect = this.$el.data('allowNoneOnRadioSelect') ? this.$el.data('allowNoneOnRadioSelect') : this.opts.allowNoneOnRadioSelect;\n this.showValidStateIcon = this.$el.data('showValidStateIcon') ? this.$el.data('showValidStateIcon') : this.opts.showValidStateIcon;\n this.itemsToExclude = this.$el.data('itemsToExclude') ? this.$el.data('itemsToExclude').replace(/\\s/g, '').split(',') : this.opts.itemsToExclude;\n this.primaryKeyword = this.$el.data('primaryKeyword') ? this.$el.data('primaryKeyword') : this.opts.primaryKeyword;\n this.preventClose = false;\n\n if (this.itemsToExclude.length > 0) {\n this.itemsToExclude = this.itemsToExclude.map(Number);\n }\n\n if (this.opts.setData) {\n this.data = this.opts.setData;\n }\n\n if (this.$el.data('setData') && this.$el.data('setData') != '') {\n this.data = this.$el.data('setData');\n }\n\n if (this.data[this.name] !== 'undefined' && this.data[this.name].length > 0 && self.itemsToExclude) {\n\n this.data[this.name] = this.data[this.name].filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n }\n\n if (this.items !== 'undefined' && this.items.lengths > 0 && self.itemsToExclude) {\n\n this.items = this.items.filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n }\n\n if (this.$el.find('.select-search').length) {\n this.showSearch = true;\n } else {\n this.showSearch = this.$el.data('showSearch') ? this.$el.data('showSearch') : this.opts.showSearch;\n }\n\n if (this.$el.find('.select-footer').length) {\n this.showFooter = true;\n } else {\n this.showFooter = this.$el.data('showFooter') ? this.$el.data('showFooter') : this.opts.showFooter;\n }\n\n this.$select = this.$el.find('.select-content');\n\n new Promise((secondaryResolve, secondaryReject) => {\n\n if (!this.$select.length) {\n\n let items = this._renderItemList(this.items);\n\n this.$select = $(`\n <div class=\"select-content\">\n\n ${this._renderSearch()}\n\n <div class=\"select-scrollable-content\"></div>\n\n ${this._renderFooter()}\n\n </div>\n `);\n\n this.$el.append(this.$select);\n this.$select.find('.select-scrollable-content').append(items);\n\n secondaryResolve();\n\n } else {\n\n secondaryResolve();\n }\n\n }).then(() => {\n\n this.$scrollableContent = this.$select.find('.select-scrollable-content') ? this.$select.find('.select-scrollable-content') : false;\n this.$selectItems = this.$select.find('.select-item');\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.$searchContainer = this.$select.find('.select-search');\n this.$searchInput = this.$select.find('[name=\"select-search\"]');\n this.$searchIconContainer = this.$select.find('.select-search-icon');\n this.$clearSearchButton = this.$select.find('[data-clear-search]');\n\n // Prevent tabfocus from breaking select functionality\n this.$searchInput[0].tabIndex = -1;\n }\n\n if (this.showFooter) {\n\n this.$footerContainer = this.$select.find('.select-footer');\n this.$closeButton = this.$select.find('[data-select-close]');\n\n // Prevent tabfocus from breaking select functionality\n this.$closeButton[0].tabIndex = -1;\n }\n\n this.buildSearchData();\n\n this.log(this.$el);\n this.log(this.$select);\n this.log(this.$scrollableContent);\n this.log('Name: '+this.name);\n this.log('Show search: '+this.showSearch);\n this.log('Show footer: '+this.showFooter);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n this.log(this.items);\n this.log(this.searchData);\n\n primaryResolve();\n })\n });\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.$scrollableContent.length > 0) {\n\n let scrollContentHeight = this.scrollContentHeight;\n\n if (this.showSearch) {\n scrollContentHeight = scrollContentHeight - (this.$searchContainer.outerHeight(true) || 0);\n }\n\n if (this.showFooter) {\n scrollContentHeight = scrollContentHeight - (this.$footerContainer.outerHeight(true) || 0);\n }\n\n this.$scrollableContent.css({\n 'max-height': (scrollContentHeight - parseInt(this.$scrollableContent.css('marginTop'), 10) - parseInt(this.$scrollableContent.css('marginBottom'), 10)) +'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.addClass('ps-dark');\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20,\n scrollYMarginOffset : -1,\n suppressScrollY: true,\n suppressScrollX: true,\n });\n\n // Prevent tabfocus from breaking select functionality\n this.$scrollableContent.find('[tabindex=\"0\"]').attr('tabindex', -1);\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n this.scroll.settings.suppressScrollY = false;\n }\n }\n }\n }\n\n // Build search data\n buildSearchData() {\n\n return new Promise((resolve, reject) => {\n\n this.searchData = [];\n\n let selectLabels = this.$select.find('[data-label]');\n\n $.each(selectLabels, (i, el) => {\n\n this.searchData.push({\n id: i,\n val: $(el).text().trim()\n });\n });\n\n resolve();\n });\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$selectHeader.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else if (this.$selectItems.length > 0 || this.searchApi) {\n this.show();\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"checkbox\"]', function() {\n\n let el = this;\n let val = $(this).val();\n let closeTimeout = 600; // ms\n\n self.preventClose = true;\n\n if (typeof self.confirmCheck === 'function' && el.checked) {\n\n el.checked = false;\n\n self.confirmCheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n el.checked = true;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (el.checked) {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (typeof self.confirmUncheck === 'function' && !el.checked) {\n\n el.checked = true;\n\n self.confirmUncheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n el.checked = false;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (!el.checked && !self.preventUncheck) {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (!el.checked && self.preventUncheck) {\n\n el.checked = true;\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n let val = $(this).val();\n\n if (this.checked) {\n\n self.data[self.name] = val;\n self.$select.find('input[type=\"radio\"]').not($(this)).prop('checked', false);\n self.$select.find('input[type=\"radio\"]').not($(this)).removeClass('checked');\n\n } else {\n\n self.data[self.name] = [];\n }\n });\n\n this.$el.on('click'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n if ($(this).hasClass('checked') && self.allowNoneOnRadioSelect) {\n\n self.data[self.name] = [];\n $(this).prop('checked', false);\n $(this).removeClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html(self.dynamicTitleDefault);\n }\n\n } else {\n\n $(this).addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($(this).parent().find('[data-label]').text());\n }\n }\n\n self.onSelect(this);\n });\n\n if (this.scroll) {\n\n this.$scrollableContent.find('.ps__thumb-y').mousedown(function() {\n self.$scrollableContent.addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if (self.$scrollableContent.hasClass('ps-mousedown-scroll')) {\n self.$scrollableContent.removeClass('ps-mousedown-scroll');\n }\n });\n }\n\n if (this.showSearch) {\n\n this.$searchInput.on('keydown'+'.'+NAME, debounce(function () {\n\n self.searchString = $(this).val().trim();\n self.search.call(self);\n\n }, 250));\n\n this.$searchInput.on('focusin'+'.'+NAME, function () {\n\n self.$searchContainer.addClass('focused');\n });\n\n this.$searchInput.on('focusout'+'.'+NAME, function () {\n\n self.$searchContainer.removeClass('focused');\n });\n\n this.$searchContainer.on('click'+'.'+NAME, '[data-clear-search]', function () {\n\n if (self.searchString.length) {\n\n self.$searchInput.val('');\n self.searchString = '';\n self.search.call(self);\n\n } else {\n\n return;\n }\n });\n }\n\n if (this.showFooter) {\n\n this.$closeButton.on('click'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(document).on('touchstart click', function(e) {\n\n if (!self.$el.is(e.target) && !self.$el.has(e.target).length && self.contentOpen && !self.preventClose) {\n\n self.close.call(self);\n }\n });\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Get data\n getData(data) {\n\n if (data) {\n return this.data[data];\n } else {\n return this.data;\n }\n }\n\n // Set data\n setData() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.searchApi.length) {\n\n let searchUrl = this.searchApi;\n let itemCount = this.data[this.name].length;\n let currentCount = 0;\n\n this.data[this.name].forEach(function(value) {\n\n searchUrl += encodeURIComponent('#'+value);\n currentCount++;\n\n if (currentCount !== itemCount) {\n searchUrl += '+';\n }\n });\n\n $.ajax({\n method: 'GET',\n url: searchUrl\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n let itemIds = items.map(item => {\n return parseInt(item.id, 10);\n });\n\n // Remove value from data if it doesn't exist anymore\n self.data[self.name] = self.data[self.name].filter(function(value) {\n return itemIds.indexOf(parseInt(value, 10)) > -1;\n });\n\n if (self.data[self.name].length == 0) {\n self.$selectIconContainer.html(self.selectIconDefault);\n }\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) > -1 && self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1 && parseInt(item.id, 10) > 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let $inputs = self.$scrollableContent.find(':input');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n\n if (self.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n self.type = 'checkbox';\n } else if (self.$scrollableContent.find(':input[type=\"radio\"]').length) {\n self.type = 'radio';\n }\n\n if (self.type == 'checkbox') {\n\n self.data[self.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() { return this.value == value });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (self.type == 'radio') {\n\n let $input = $inputs.filter(function() { return this.value == self.data[self.name] });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n self.onSelect($input[0]);\n }\n });\n });\n\n } else {\n\n // Remove value from data if it doesn't exist anymore\n let $inputs = this.$scrollableContent.find(':input');\n let inputValues = $inputs.length > 0 ? $inputs.map(function() {\n return parseInt(this.value, 10);\n }).get() : [];\n\n this.data[this.name] = this.data[this.name].filter(function(value) {\n return inputValues.indexOf(parseInt(value, 10)) > -1;\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$scrollableContent.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n this.data[this.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name]\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.onSelect($input[0]);\n }\n }\n }\n\n // Search\n search() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.searchString.length) {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n\n $.ajax({\n method: 'GET',\n url: this.searchApi + this.searchString\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) === -1 && self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1 && parseInt(item.id, 10) > 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let faNameSpace = self.opts.faPro ? 'fal' : 'fas';\n\n self.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n self.$searchIconContainer.attr('data-clear-search', 'true');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n });\n });\n\n } else {\n\n let results = this.searchData.filter(function(item) {\n return item.val.toLocaleLowerCase().indexOf(self.searchString.toLocaleLowerCase()) > -1;\n });\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n\n results.forEach(function(item) {\n $(self.$selectItems[item.id]).addClass('visible');\n });\n\n this.$selectItems.not('.visible').addClass('d-none');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', 'true');\n }\n\n } else {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n\n } else {\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n }\n }\n\n if (this.scroll) {\n this.scroll.update();\n }\n\n this.onUpdate();\n }\n\n // Show\n show() {\n\n if (this.$el.hasClass('show')) {\n return;\n }\n\n let $otherSelects = $('.select.show');\n let zindex = 1;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if ($otherSelects.length) {\n zindex = parseInt($otherSelects.first().css('z-index'), 10) + 2;\n }\n\n this.$el.css({\n 'max-height': (this.scrollContentHeight + this.$selectHeader.outerHeight(true))+'px'\n });\n\n this.$el.addClass('show');\n\n if (!$otherSelects.length) {\n zindex = parseInt(this.$el.css('z-index'), 10) + 1;\n }\n\n this.$el.css({\n 'z-index': zindex\n });\n\n if (this.scroll && this.$scrollableContent.length) {\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n }\n\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-angle-up icon\"></i>`);\n\n setTimeout(() => {\n this.$el[0].scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'});\n }, 300);\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.preventClose) {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n this.$el.css('max-height', '');\n this.$el.removeClass('show');\n\n setTimeout(() => {\n self.$el.removeAttr('style');\n }, 300);\n\n if (this.data[this.name].length > 0 && this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n }\n\n // On select\n onSelect(el) {\n\n let self = this;\n let onSelect = this.opts.onSelect;\n let data = $(el).parents('.select-item').data();\n\n if (this.searchApi.length && !$.isEmptyObject(data)) {\n\n if ($(el).length && el.checked) {\n\n this.items.push(data);\n\n } else {\n\n this.items = $.grep(this.items, function(item) { return item[self.primaryKeyword] != data.id });\n }\n }\n\n if (typeof onSelect === 'function') {\n\n onSelect.call(el, data, this);\n }\n }\n\n // Add more items after plugin is already initialized\n appendItems(items, selectItems) {\n\n return new Promise((resolve, reject) => {\n\n let self = this;\n\n if (!$.isArray(items)) {\n\n let itemsArr = [];\n\n itemsArr.push(items);\n items = itemsArr;\n }\n\n items = items.filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n\n items.forEach(item => {\n\n this.items.push(item);\n });\n\n let domItems = this._renderItemList(items);\n\n this.$scrollableContent.prepend(domItems);\n this.$selectItems = this.$select.find('.select-item');\n\n this.buildSearchData().then(() => {\n\n if (this.$selectItems.length > 0) {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n items.forEach(item => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = parseInt($input.val(), 10);\n\n $input.prop('checked', true);\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name].push(val) : false;\n this.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let item = items[0];\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = parseInt($input.val(), 10);\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name] = [val] : false;\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.$select.find('input[type=\"radio\"]').not($input).prop('checked', false);\n this.$select.find('input[type=\"radio\"]').not($input).removeClass('checked');\n this.onSelect($input[0]);\n }\n }\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectHeader.attr('style')) {\n this.$selectHeader.removeAttr('style');\n }\n\n if (this.$selectIconContainer.hasClass('d-none')) {\n this.$selectIconContainer.removeClass('d-none');\n }\n\n resolve();\n });\n });\n }\n\n // Deselect items\n deselectItems(array) {\n\n return new Promise((resolve, reject) => {\n\n array.forEach(id => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == id });\n\n if ($input[0].checked) {\n\n $input.trigger('click');\n }\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n });\n }\n\n // Get item\n getItem(key, val) {\n\n let result = $.grep(this.items, function(item) { return item[key] == val })[0];\n\n return result ? result : null;\n }\n\n // Get selected items\n getSelectedItems(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(Number);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(parseInt(item.id, 10)) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result;\n }\n\n // Get selected item\n getSelectedItem(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(Number);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(parseInt(item.id, 10)) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result[0] == null ? null : result[0];\n }\n\n _renderItemList(items) {\n\n let result = [];\n\n for (let i = 0; i < items.length; ++i) {\n\n let item = items[i];\n let label = '';\n\n if (typeof this.labelTemplate === 'function') {\n\n label = this.labelTemplate(item);\n\n } else {\n\n if (item.name) {\n label = item.name;\n } else if (item.label) {\n label = item.label;\n } else if (item.value) {\n label = item.value;\n }\n }\n\n result.push($(`\n\n <div class=\"select-item\">\n\n <div class=\"select-item-${this.type}\">\n\n <div class=\"styled-${this.type}\">\n\n <input type=\"${this.type}\" id=\"select-${this.name}-${items[i].id}\" value=\"${items[i].id}\" tabindex=\"-1\">\n\n <label for=\"select-${this.name}-${items[i].id}\">\n\n <span class=\"radio-inner\">\n <svg viewBox=\"0 0 18 18\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n\n <span class=\"${this.type}-label\"${typeof this.labelTemplate !== 'function' ? ' data-label' : ''}>\n ${label}\n </span>\n\n </label>\n\n </div>\n\n </div>\n\n </div>\n\n `).data(item));\n }\n\n return result;\n }\n\n _renderSearch() {\n\n if (!this.showSearch) {\n\n return '';\n\n } else {\n\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n return `\n\n <div class=\"select-search\">\n\n <div class=\"select-search-input\">\n\n <input type=\"text\" name=\"select-search\" value=\"\" placeholder=\"${this.searchPlaceholder}\" tabindex=\"-1\">\n\n </div>\n\n <div class=\"select-search-icon\">\n\n <i class=\"${faNameSpace} fa-search icon\"></i>\n\n </div>\n\n </div>\n\n `;\n }\n }\n\n _renderFooter() {\n\n if (!this.showFooter) {\n\n return '';\n\n } else {\n\n return `\n\n <div class=\"select-footer\">\n\n <button class=\"btn btn-block btn-secondary\" type=\"button\" tabindex=\"-1\" data-select-close >\n ${this.btnCloseText}\n </button>\n\n </div>\n\n `;\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Select(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Select._jQueryInterface;\n $.fn[NAME].Constructor = Select;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Select._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n name: '',\n type: 'checkbox',\n labelTemplate: null,\n confirmCheck: null,\n confirmUncheck: null,\n setData: null,\n scrollContentHeight: 100,\n faPro: false,\n items: [],\n showSearch: false,\n showFooter: false,\n searchApi: false,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onReset: null,\n onSearch: null,\n onSelect: null,\n buildScroll: null,\n searchPlaceholder: null,\n btnCloseText: null,\n debug: false,\n dynamicTitle: false,\n dynamicTitleDefault: '',\n dynamicTitleEmptyDefault: '',\n allowNoneOnRadioSelect: true,\n preventUncheck: false,\n showValidStateIcon: true,\n itemsToExclude: [],\n primaryKeyword: 'id'\n }\n}\n\nexport default Select;"],"names":["get","element","getComputedStyle","set","obj","key","val","style","div","className","document","createElement","elMatches","Element","prototype","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","filter","children","child","cls","main","thumb","x","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","i","classList","contains","clearTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","setScrollingClassInstantly","EventElement","handlers","prototypeAccessors","isEmpty","configurable","bind","eventName","handler","push","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","name","Object","keys","every","length","defineProperties","EventManager","eventElements","eventElement","ee","splice","indexOf","forEach","e","once","onceHandler","evt","createEvent","window","CustomEvent","initCustomEvent","undefined","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","processScrollDiff$1","ref","contentHeight","containerHeight","scrollTop","up","down","reach","dispatchEvent","toInt","parseInt","isEditable","el","outerWidth","styles","width","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","Math","floor","containerWidth","clientWidth","clientHeight","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","updateCss","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","xRailOffset","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","height","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","clickRail","event","stopPropagation","positionTop","pageY","pageYOffset","getBoundingClientRect","direction","positionLeft","pageX","pageXOffset","dragThumb","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","preventDefault","mouseUpHandler","ownerDocument","keyboard","elementHovered","scrollbarFocused","shouldPreventDefault","deltaX","deltaY","wheelPropagation","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","wheel","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","hitsBound","abs","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","shouldBeConsumedByChild","querySelector","cursor","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","mousewheelHandler","shouldPrevent","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","touch","magnitudeX","magnitudeY","scrollY","applyTouchMove","differenceX","differenceY","startOffset","startTime","speed","easingLoop","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","touchStart","Date","getTime","clearInterval","touchMove","currentOffset","currentTime","timeGap","touchEnd","swipeEasing","setInterval","isInitialized","PointerEvent","MSPointerEvent","defaultSettings","PerfectScrollbar","userSettings","nodeName","blur","isNegativeScroll","originalScrollLeft","result","setAttribute","railXStyle","isNaN","display","marginLeft","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","touchEvents","$","special","destroyed","AbstractUIComponent","onInit","opts","onUpdate","onDestroy","onShow","onClose","onReset","log","debug","console","NAME","DATA_KEY","Select","Cool","select","extend","fn","defaults","init","buildCache","then","buildScroll","bindEvents","data","setData","unbindEvents","$el","removeData","reset","items","$select","find","$selectItems","$selectIconContainer","html","selectIconDefault","dynamicTitle","dynamicTitleDefault","$selectTitle","text","trim","searchApi","dynamicTitleEmptyDefault","$selectHeader","css","addClass","showSearch","searchData","$searchInput","searchString","search","Promise","primaryResolve","primaryReject","self","$container","parent","faPro","scrollContentHeight","type","contentOpen","searchPlaceholder","btnCloseText","labelTemplate","confirmCheck","confirmUncheck","preventUncheck","allowNoneOnRadioSelect","showValidStateIcon","itemsToExclude","replace","primaryKeyword","preventClose","map","Number","item","id","lengths","showFooter","secondaryResolve","secondaryReject","_renderItemList","_renderSearch","_renderFooter","append","$scrollableContent","$searchContainer","$searchIconContainer","$clearSearchButton","tabIndex","$footerContainer","$closeButton","buildSearchData","outerHeight","scroll","attr","resolve","reject","selectLabels","each","on","close","show","closeTimeout","checked","cb","onSelect","n","not","prop","removeClass","hasClass","mousedown","mouseup","is","has","off","getData","faNameSpace","searchUrl","itemCount","currentCount","value","encodeURIComponent","ajax","method","url","done","toString","itemIds","when","$inputs","$input","inputValues","parents","results","toLocaleLowerCase","$otherSelects","zindex","first","scrollIntoView","behavior","block","inline","removeAttr","isEmptyObject","grep","appendItems","selectItems","isArray","itemsArr","domItems","prepend","deselectItems","array","trigger","getItem","getSelectedItems","segment","ids","getSelectedItem","label","_jQueryInterface","config","_config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict","onSearch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC1EL,IAAMG,IAAI,2BAAG,YAAH,CAAV;EACA,IAAMC,QAAQ,2BAAG,mBAAH,CAAd;;MAEMC;;;;;EAEF,kBAAYtO,EAAZ,EAAgB2N,IAAhB,EAAsB;EAAA;;EAAA;EAAA;EAElB;EAFkB;EAIlB,UAAKA,IAAL,GAAY,EAAZ;EAJkB;;EAMlB,QAAIjP,MAAM,CAAC6P,IAAP,CAAYjS,QAAZ,CAAqBkS,MAAzB,EAAiC;EAAA;EAAA;EAE7BlB,MAAAA,CAAC,CAACmB,MAAF,CAAS,IAAT,EAAe,MAAKd,IAApB,EAA0BL,CAAC,CAACoB,EAAF,CAAKN,IAAL,EAAWO,QAArC,EAA+CjQ,MAAM,CAAC6P,IAAP,CAAYjS,QAAZ,CAAqBkS,MAApE,EAA4Eb,IAA5E;EAEH,KAJD,MAIO;EAAA;EAAA;EAEHL,MAAAA,CAAC,CAACmB,MAAF,CAAS,IAAT,EAAe,MAAKd,IAApB,EAA0BL,CAAC,CAACoB,EAAF,CAAKN,IAAL,EAAWO,QAArC,EAA+ChB,IAA/C;EACH;;EAbiB;EAelB,UAAK3N,EAAL,GAAUA,EAAV;EAfkB;EAgBlB,UAAKkO,KAAL,GAAa,MAAKP,IAAL,CAAUO,KAAvB;EAhBkB;;EAiBlB,UAAKU,IAAL;;EAjBkB;EAkBrB;;;;;WAGDA,OAAA,gBAAO;EAAA;;EAAA;EAAA;EAEH,SAAKC,UAAL,GAAkBC,IAAlB,CAAuB,YAAM;EAAA;EAAA;;EAEzB,MAAA,MAAI,CAACC,WAAL;;EAFyB;;EAGzB,MAAA,MAAI,CAACC,UAAL;;EAHyB;;EAKzB,UAAI,MAAI,CAACC,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBI,MAArB,GAA8B,CAAlC,EAAqC;EAAA;EAAA;;EACjC,QAAA,MAAI,CAACsR,OAAL;EACH,OAFD;EAAA;EAAA;;EALyB;;EASzB,MAAA,MAAI,CAACxB,MAAL;EACH,KAVD;EAWH;;;WAGDnB,UAAA,mBAAU;EAAA;EAAA;EAEN,SAAK4C,YAAL;EAFM;EAGN,SAAKC,GAAL,CAASC,UAAT,CAAoBhB,QAApB;EAHM;EAIN,SAAKR,SAAL;EACH;;;WAGDvB,SAAA,kBAAS;EAAA;EAAA;EAEL,SAAKuC,UAAL;EAFK;EAGL,SAAKG,UAAL;EAHK;EAIL,SAAKpB,QAAL;EACH;;;WAGD0B,QAAA,iBAAQ;EAAA;EAAA;EAEJ,SAAKL,IAAL,GAAY,EAAZ;EAFI;EAGJ,SAAKA,IAAL,CAAU,KAAKzR,IAAf,IAAuB,EAAvB;EAHI;EAIJ,SAAK+R,KAAL,GAAa,EAAb;EAJI;EAKJ,SAAKC,OAAL,CAAaC,IAAb,CAAkB,cAAlB,EAAkClV,MAAlC;EALI;EAMJ,SAAKmV,YAAL,GAAoB,EAApB;EANI;EAOJ,SAAKC,oBAAL,CAA0BC,IAA1B,CAA+B,KAAKC,iBAApC;EAPI;;EASJ,QAAI,gCAAKZ,IAAL,CAAU,KAAKzR,IAAf,EAAqBI,MAArB,IAA+B,CAA/B,gCACA,KAAKkS,YADL,gCAEA,KAAKC,mBAFL,gCAGA,KAAKA,mBAAL,KAA6B,CAH7B,gCAIA,KAAKC,YAAL,CAAkBC,IAAlB,GAAyBC,IAAzB,MAAmC,CAJnC,MAKC,gCAAKR,YAAL,CAAkB9R,MAAlB,GAA2B,CAA3B,gCAAgC,KAAKuS,SAArC,CALD,CAAJ,EAKsD;EAAA;EAAA;EAElD,WAAKH,YAAL,CAAkBJ,IAAlB,CAAuB,KAAKG,mBAA5B;EACH,KARD;EAAA;EAAA;;EATI;;EAmBJ,QAAI,gCAAKL,YAAL,CAAkB9R,MAAlB,IAA4B,CAA5B,gCAAiC,CAAC,KAAKuS,SAAvC,gCAAoD,KAAKL,YAAzD,gCAAyE,KAAKM,wBAA9E,gCAA0G,KAAKA,wBAAL,KAAkC,CAA5I,CAAJ,EAAmJ;EAAA;EAAA;EAE/I,WAAKC,aAAL,CAAmBC,GAAnB,CAAuB,QAAvB,EAAiC,SAAjC;EAF+I;EAG/I,WAAKX,oBAAL,CAA0BY,QAA1B,CAAmC,QAAnC;EAH+I;EAI/I,WAAKP,YAAL,CAAkBJ,IAAlB,CAAuB,KAAKQ,wBAA5B;EACH,KALD;EAAA;EAAA;;EAnBI;;EA0BJ,QAAI,KAAKI,UAAT,EAAqB;EAAA;EAAA;EAEjB,WAAKC,UAAL,GAAkB,EAAlB;EAFiB;EAGjB,WAAKC,YAAL,CAAkBnX,GAAlB,CAAsB,EAAtB;EAHiB;EAIjB,WAAKoX,YAAL,GAAoB,EAApB;EAJiB;EAKjB,WAAKC,MAAL,CAAYtW,IAAZ,CAAiB,IAAjB;EACH,KAND;EAAA;EAAA;EAOH;;;WAGDuU,aAAA,sBAAa;EAAA;;EAAA;EAAA;EAET,WAAO,IAAIgC,OAAJ,CAAY,UAACC,cAAD,EAAiBC,aAAjB,EAAmC;EAAA;EAElD,UAAIC,IAAI,4BAAG,MAAH,CAAR;EAFkD;EAIlD,MAAA,MAAI,CAAC5B,GAAL,GAAW9B,CAAC,CAAC,MAAI,CAACtN,EAAN,CAAZ;EAJkD;EAKlD,MAAA,MAAI,CAACiR,UAAL,GAAkB,MAAI,CAAC7B,GAAL,CAAS8B,MAAT,EAAlB;EALkD;EAMlD,MAAA,MAAI,CAACb,aAAL,GAAqB,MAAI,CAACjB,GAAL,CAASK,IAAT,CAAc,gBAAd,CAArB;EANkD;EAOlD,MAAA,MAAI,CAACO,YAAL,GAAoB,MAAI,CAACZ,GAAL,CAASK,IAAT,CAAc,eAAd,CAApB;EAPkD;EAQlD,MAAA,MAAI,CAACE,oBAAL,GAA4B,MAAI,CAACU,aAAL,CAAmBZ,IAAnB,CAAwB,cAAxB,CAA5B;EARkD;EASlD,MAAA,MAAI,CAACI,iBAAL,GAAyB,MAAI,CAACQ,aAAL,CAAmBZ,IAAnB,CAAwB,cAAxB,+BAA0C,MAAI,CAACY,aAAL,CAAmBZ,IAAnB,CAAwB,cAAxB,EAAwCG,IAAxC,EAA1C,+BAA2F,gBAAc,MAAI,CAACjC,IAAL,CAAUwD,KAAV,8BAAkB,KAAlB,+BAA0B,KAA1B,CAAd,IAA+C,0BAA1I,CAAzB;EATkD;EAUlD,MAAA,MAAI,CAAC3T,IAAL,GAAY,MAAI,CAAC4R,GAAL,CAASH,IAAT,CAAc,MAAd,+BAAwB,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,MAAd,CAAxB,+BAAgD,MAAI,CAACtB,IAAL,CAAUnQ,IAA1D,CAAZ;EAVkD;EAWlD,MAAA,MAAI,CAAC4T,mBAAL,GAA2B,MAAI,CAAChC,GAAL,CAASH,IAAT,CAAc,qBAAd,gCAAuC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,qBAAd,CAAvC,gCAA8E,MAAI,CAACtB,IAAL,CAAUyD,mBAAxF,CAA3B;EAXkD;EAYlD,MAAA,MAAI,CAAC7B,KAAL,GAAa,MAAI,CAACH,GAAL,CAASH,IAAT,CAAc,OAAd,gCAAyB,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,OAAd,CAAzB,gCAAkD,MAAI,CAACtB,IAAL,CAAU4B,KAA5D,CAAb;EAZkD;EAalD,MAAA,MAAI,CAACN,IAAL,GAAY,EAAZ;EAbkD;EAclD,MAAA,MAAI,CAACA,IAAL,CAAU,MAAI,CAACzR,IAAf,IAAuB,EAAvB;EAdkD;EAelD,MAAA,MAAI,CAACiT,UAAL,GAAkB,EAAlB;EAfkD;EAgBlD,MAAA,MAAI,CAACN,SAAL,GAAiB,MAAI,CAACf,GAAL,CAASH,IAAT,CAAc,WAAd,gCAA6B,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,WAAd,CAA7B,gCAA0D,MAAI,CAACtB,IAAL,CAAUwC,SAApE,CAAjB;EAhBkD;EAiBlD,MAAA,MAAI,CAACkB,IAAL,GAAY,MAAI,CAACjC,GAAL,CAASH,IAAT,CAAc,MAAd,gCAAwB,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,MAAd,CAAxB,gCAAgD,MAAI,CAACtB,IAAL,CAAU0D,IAA1D,CAAZ;EAjBkD;EAkBlD,MAAA,MAAI,CAACC,WAAL,GAAmB,KAAnB;EAlBkD;EAmBlD,MAAA,MAAI,CAACC,iBAAL,GAAyB,MAAI,CAACnC,GAAL,CAASH,IAAT,CAAc,oBAAd,gCAAsC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,oBAAd,CAAtC,gCAA4E,MAAI,CAACtB,IAAL,CAAU4D,iBAAtF,CAAzB;EAnBkD;EAoBlD,MAAA,MAAI,CAACC,YAAL,GAAoB,MAAI,CAACpC,GAAL,CAASH,IAAT,CAAc,gBAAd,gCAAkC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,gBAAd,CAAlC,gCAAoE,MAAI,CAACtB,IAAL,CAAU6D,YAA9E,CAApB;EApBkD;EAqBlD,MAAA,MAAI,CAACC,aAAL,GAAqB,MAAI,CAAC9D,IAAL,CAAU8D,aAA/B;EArBkD;EAsBlD,MAAA,MAAI,CAACC,YAAL,GAAoB,MAAI,CAAC/D,IAAL,CAAU+D,YAA9B;EAtBkD;EAuBlD,MAAA,MAAI,CAACC,cAAL,GAAsB,MAAI,CAAChE,IAAL,CAAUgE,cAAhC;EAvBkD;EAwBlD,MAAA,MAAI,CAACC,cAAL,GAAsB,MAAI,CAACjE,IAAL,CAAUiE,cAAhC;EAxBkD;EAyBlD,MAAA,MAAI,CAAC9B,YAAL,GAAoB,MAAI,CAACV,GAAL,CAASH,IAAT,CAAc,cAAd,gCAAgC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,cAAd,CAAhC,gCAAgE,MAAI,CAACtB,IAAL,CAAUmC,YAA1E,CAApB;EAzBkD;EA0BlD,MAAA,MAAI,CAACC,mBAAL,GAA2B,MAAI,CAACX,GAAL,CAASH,IAAT,CAAc,qBAAd,gCAAuC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,qBAAd,CAAvC,gCAA8E,MAAI,CAACtB,IAAL,CAAUoC,mBAAxF,CAA3B;EA1BkD;EA2BlD,MAAA,MAAI,CAACK,wBAAL,GAAgC,MAAI,CAAChB,GAAL,CAASH,IAAT,CAAc,0BAAd,gCAA4C,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,0BAAd,CAA5C,gCAAwF,MAAI,CAACtB,IAAL,CAAUyC,wBAAlG,CAAhC;EA3BkD;EA4BlD,MAAA,MAAI,CAACyB,sBAAL,GAA8B,MAAI,CAACzC,GAAL,CAASH,IAAT,CAAc,wBAAd,gCAA0C,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,wBAAd,CAA1C,gCAAoF,MAAI,CAACtB,IAAL,CAAUkE,sBAA9F,CAA9B;EA5BkD;EA6BlD,MAAA,MAAI,CAACC,kBAAL,GAA0B,MAAI,CAAC1C,GAAL,CAASH,IAAT,CAAc,oBAAd,gCAAsC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,oBAAd,CAAtC,gCAA4E,MAAI,CAACtB,IAAL,CAAUmE,kBAAtF,CAA1B;EA7BkD;EA8BlD,MAAA,MAAI,CAACC,cAAL,GAAsB,MAAI,CAAC3C,GAAL,CAASH,IAAT,CAAc,gBAAd,gCAAkC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,gBAAd,EAAgC+C,OAAhC,CAAwC,KAAxC,EAA+C,EAA/C,EAAmDvF,KAAnD,CAAyD,GAAzD,CAAlC,gCAAkG,MAAI,CAACkB,IAAL,CAAUoE,cAA5G,CAAtB;EA9BkD;EA+BlD,MAAA,MAAI,CAACE,cAAL,GAAsB,MAAI,CAAC7C,GAAL,CAASH,IAAT,CAAc,gBAAd,gCAAkC,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,gBAAd,CAAlC,gCAAoE,MAAI,CAACtB,IAAL,CAAUsE,cAA9E,CAAtB;EA/BkD;EAgClD,MAAA,MAAI,CAACC,YAAL,GAAoB,KAApB;EAhCkD;;EAkClD,UAAI,MAAI,CAACH,cAAL,CAAoBnU,MAApB,GAA6B,CAAjC,EAAoC;EAAA;EAAA;EAChC,QAAA,MAAI,CAACmU,cAAL,GAAsB,MAAI,CAACA,cAAL,CAAoBI,GAApB,CAAwBC,MAAxB,CAAtB;EACH,OAFD;EAAA;EAAA;;EAlCkD;;EAsClD,UAAI,MAAI,CAACzE,IAAL,CAAUuB,OAAd,EAAuB;EAAA;EAAA;EACnB,QAAA,MAAI,CAACD,IAAL,GAAY,MAAI,CAACtB,IAAL,CAAUuB,OAAtB;EACH,OAFD;EAAA;EAAA;;EAtCkD;;EA0ClD,UAAI,4BAAA,MAAI,CAACE,GAAL,CAASH,IAAT,CAAc,SAAd,kCAA4B,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,SAAd,KAA4B,EAAxD,CAAJ,EAAgE;EAAA;EAAA;EAC5D,QAAA,MAAI,CAACA,IAAL,GAAY,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,SAAd,CAAZ;EACH,OAFD;EAAA;EAAA;;EA1CkD;;EA8ClD,UAAI,4BAAA,MAAI,CAACA,IAAL,CAAU,MAAI,CAACzR,IAAf,MAAyB,WAAzB,iCAAwC,MAAI,CAACyR,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBI,MAArB,GAA8B,CAAtE,iCAA2EoT,IAAI,CAACe,cAAhF,CAAJ,EAAoG;EAAA;EAAA;EAEhG,QAAA,MAAI,CAAC9C,IAAL,CAAU,MAAI,CAACzR,IAAf,IAAuB,MAAI,CAACyR,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqB3C,MAArB,CAA4B,UAASwX,IAAT,EAAe;EAAA;EAAA;EAC9D,iBAAOrB,IAAI,CAACe,cAAL,CAAoB5T,OAApB,CAA4B2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApC,MAAuD,CAAC,CAA/D;EACH,SAFsB,CAAvB;EAGH,OALD;EAAA;EAAA;;EA9CkD;;EAqDlD,UAAI,4BAAA,MAAI,CAAC/C,KAAL,KAAe,WAAf,iCAA8B,MAAI,CAACA,KAAL,CAAWgD,OAAX,GAAqB,CAAnD,iCAAwDvB,IAAI,CAACe,cAA7D,CAAJ,EAAiF;EAAA;EAAA;EAE7E,QAAA,MAAI,CAACxC,KAAL,GAAa,MAAI,CAACA,KAAL,CAAW1U,MAAX,CAAkB,UAASwX,IAAT,EAAe;EAAA;EAAA;EAC1C,iBAAOrB,IAAI,CAACe,cAAL,CAAoB5T,OAApB,CAA4B2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApC,MAAuD,CAAC,CAA/D;EACH,SAFY,CAAb;EAGH,OALD;EAAA;EAAA;;EArDkD;;EA4DlD,UAAI,MAAI,CAAClD,GAAL,CAASK,IAAT,CAAc,gBAAd,EAAgC7R,MAApC,EAA4C;EAAA;EAAA;EACxC,QAAA,MAAI,CAAC4S,UAAL,GAAkB,IAAlB;EACH,OAFD,MAEO;EAAA;EAAA;EACH,QAAA,MAAI,CAACA,UAAL,GAAkB,MAAI,CAACpB,GAAL,CAASH,IAAT,CAAc,YAAd,gCAA8B,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,YAAd,CAA9B,gCAA4D,MAAI,CAACtB,IAAL,CAAU6C,UAAtE,CAAlB;EACH;;EAhEiD;;EAkElD,UAAI,MAAI,CAACpB,GAAL,CAASK,IAAT,CAAc,gBAAd,EAAgC7R,MAApC,EAA4C;EAAA;EAAA;EACxC,QAAA,MAAI,CAAC4U,UAAL,GAAkB,IAAlB;EACH,OAFD,MAEO;EAAA;EAAA;EACH,QAAA,MAAI,CAACA,UAAL,GAAkB,MAAI,CAACpD,GAAL,CAASH,IAAT,CAAc,YAAd,gCAA8B,MAAI,CAACG,GAAL,CAASH,IAAT,CAAc,YAAd,CAA9B,gCAA4D,MAAI,CAACtB,IAAL,CAAU6E,UAAtE,CAAlB;EACH;;EAtEiD;EAwElD,MAAA,MAAI,CAAChD,OAAL,GAAe,MAAI,CAACJ,GAAL,CAASK,IAAT,CAAc,iBAAd,CAAf;EAxEkD;EA0ElD,UAAIoB,OAAJ,CAAY,UAAC4B,gBAAD,EAAmBC,eAAnB,EAAuC;EAAA;EAAA;;EAE/C,YAAI,CAAC,MAAI,CAAClD,OAAL,CAAa5R,MAAlB,EAA0B;EAAA;EAEtB,cAAI2R,KAAK,4BAAG,MAAI,CAACoD,eAAL,CAAqB,MAAI,CAACpD,KAA1B,CAAH,CAAT;EAFsB;EAItB,UAAA,MAAI,CAACC,OAAL,GAAelC,CAAC,8FAGN,MAAI,CAACsF,aAAL,EAHM,uHAON,MAAI,CAACC,aAAL,EAPM,8DAAhB;EAJsB;;EAgBtB,UAAA,MAAI,CAACzD,GAAL,CAAS0D,MAAT,CAAgB,MAAI,CAACtD,OAArB;;EAhBsB;;EAiBtB,UAAA,MAAI,CAACA,OAAL,CAAaC,IAAb,CAAkB,4BAAlB,EAAgDqD,MAAhD,CAAuDvD,KAAvD;;EAjBsB;EAmBtBkD,UAAAA,gBAAgB;EAEnB,SArBD,MAqBO;EAAA;EAAA;EAEHA,UAAAA,gBAAgB;EACnB;EAEJ,OA5BD,EA4BG3D,IA5BH,CA4BQ,YAAM;EAAA;EAAA;EAEV,QAAA,MAAI,CAACiE,kBAAL,GAA0B,MAAI,CAACvD,OAAL,CAAaC,IAAb,CAAkB,4BAAlB,gCAAkD,MAAI,CAACD,OAAL,CAAaC,IAAb,CAAkB,4BAAlB,CAAlD,gCAAoG,KAApG,CAA1B;EAFU;EAGV,QAAA,MAAI,CAACC,YAAL,GAAoB,MAAI,CAACF,OAAL,CAAaC,IAAb,CAAkB,cAAlB,CAApB;EAHU;;EAKV,YAAI,4BAAA,MAAI,CAACR,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBI,MAArB,IAA+B,CAA/B,iCACA,MAAI,CAACkS,YADL,iCAEA,MAAI,CAACC,mBAFL,iCAGA,MAAI,CAACA,mBAAL,KAA6B,CAH7B,iCAIA,MAAI,CAACC,YAAL,CAAkBC,IAAlB,GAAyBC,IAAzB,MAAmC,CAJnC,MAKC,4BAAA,MAAI,CAACR,YAAL,CAAkB9R,MAAlB,GAA2B,CAA3B,iCAAgC,MAAI,CAACuS,SAArC,CALD,CAAJ,EAKsD;EAAA;EAAA;;EAElD,UAAA,MAAI,CAACH,YAAL,CAAkBJ,IAAlB,CAAuB,MAAI,CAACG,mBAA5B;EACH,SARD;EAAA;EAAA;;EALU;;EAeV,YAAI,4BAAA,MAAI,CAACL,YAAL,CAAkB9R,MAAlB,IAA4B,CAA5B,iCAAiC,CAAC,MAAI,CAACuS,SAAvC,iCAAoD,MAAI,CAACL,YAAzD,iCAAyE,MAAI,CAACM,wBAA9E,iCAA0G,MAAI,CAACA,wBAAL,KAAkC,CAA5I,CAAJ,EAAmJ;EAAA;EAAA;;EAE/I,UAAA,MAAI,CAACC,aAAL,CAAmBC,GAAnB,CAAuB,QAAvB,EAAiC,SAAjC;;EAF+I;;EAG/I,UAAA,MAAI,CAACX,oBAAL,CAA0BY,QAA1B,CAAmC,QAAnC;;EAH+I;;EAI/I,UAAA,MAAI,CAACP,YAAL,CAAkBJ,IAAlB,CAAuB,MAAI,CAACQ,wBAA5B;EACH,SALD;EAAA;EAAA;;EAfU;;EAsBV,YAAI,MAAI,CAACI,UAAT,EAAqB;EAAA;EAAA;EAEjB,UAAA,MAAI,CAACwC,gBAAL,GAAwB,MAAI,CAACxD,OAAL,CAAaC,IAAb,CAAkB,gBAAlB,CAAxB;EAFiB;EAGjB,UAAA,MAAI,CAACiB,YAAL,GAAoB,MAAI,CAAClB,OAAL,CAAaC,IAAb,CAAkB,wBAAlB,CAApB;EAHiB;EAIjB,UAAA,MAAI,CAACwD,oBAAL,GAA4B,MAAI,CAACzD,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,CAA5B;EAJiB;EAKjB,UAAA,MAAI,CAACyD,kBAAL,GAA0B,MAAI,CAAC1D,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,CAA1B,CALiB;;EAAA;EAQjB,UAAA,MAAI,CAACiB,YAAL,CAAkB,CAAlB,EAAqByC,QAArB,GAAgC,CAAC,CAAjC;EACH,SATD;EAAA;EAAA;;EAtBU;;EAiCV,YAAI,MAAI,CAACX,UAAT,EAAqB;EAAA;EAAA;EAEjB,UAAA,MAAI,CAACY,gBAAL,GAAwB,MAAI,CAAC5D,OAAL,CAAaC,IAAb,CAAkB,gBAAlB,CAAxB;EAFiB;EAGjB,UAAA,MAAI,CAAC4D,YAAL,GAAoB,MAAI,CAAC7D,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,CAApB,CAHiB;;EAAA;EAMjB,UAAA,MAAI,CAAC4D,YAAL,CAAkB,CAAlB,EAAqBF,QAArB,GAAgC,CAAC,CAAjC;EACH,SAPD;EAAA;EAAA;;EAjCU;;EA0CV,QAAA,MAAI,CAACG,eAAL;;EA1CU;;EA4CV,QAAA,MAAI,CAACrF,GAAL,CAAS,MAAI,CAACmB,GAAd;;EA5CU;;EA6CV,QAAA,MAAI,CAACnB,GAAL,CAAS,MAAI,CAACuB,OAAd;;EA7CU;;EA8CV,QAAA,MAAI,CAACvB,GAAL,CAAS,MAAI,CAAC8E,kBAAd;;EA9CU;;EA+CV,QAAA,MAAI,CAAC9E,GAAL,CAAS,WAAS,MAAI,CAACzQ,IAAvB;;EA/CU;;EAgDV,QAAA,MAAI,CAACyQ,GAAL,CAAS,kBAAgB,MAAI,CAACuC,UAA9B;;EAhDU;;EAiDV,QAAA,MAAI,CAACvC,GAAL,CAAS,kBAAgB,MAAI,CAACuE,UAA9B;;EAjDU;;EAkDV,QAAA,MAAI,CAACvE,GAAL,CAAS,4BAA0B,MAAI,CAACmD,mBAA/B,GAAmD,IAA5D;;EAlDU;;EAmDV,QAAA,MAAI,CAACnD,GAAL,CAAS,MAAI,CAACsB,KAAd;;EAnDU;;EAoDV,QAAA,MAAI,CAACtB,GAAL,CAAS,MAAI,CAACwC,UAAd;;EApDU;EAsDVK,QAAAA,cAAc;EACjB,OAnFD;EAoFH,KA9JM,CAAP;EA+JH;;;WAGD/B,cAAA,uBAAc;EAAA;EAAA;;EAEV,QAAI,KAAKgE,kBAAL,CAAwBnV,MAAxB,GAAiC,CAArC,EAAwC;EAAA;EAEpC,UAAIwT,mBAAmB,6BAAG,KAAKA,mBAAR,CAAvB;EAFoC;;EAIpC,UAAI,KAAKZ,UAAT,EAAqB;EAAA;EAAA;EACjBY,QAAAA,mBAAmB,GAAGA,mBAAmB,IAAI,iCAAK4B,gBAAL,CAAsBO,WAAtB,CAAkC,IAAlC,kCAA2C,CAA3C,CAAJ,CAAzC;EACH,OAFD;EAAA;EAAA;;EAJoC;;EAQpC,UAAI,KAAKf,UAAT,EAAqB;EAAA;EAAA;EACjBpB,QAAAA,mBAAmB,GAAGA,mBAAmB,IAAI,iCAAKgC,gBAAL,CAAsBG,WAAtB,CAAkC,IAAlC,kCAA2C,CAA3C,CAAJ,CAAzC;EACH,OAFD;EAAA;EAAA;;EARoC;EAYpC,WAAKR,kBAAL,CAAwBzC,GAAxB,CAA4B;EACxB,sBAAec,mBAAmB,GAAGtR,QAAQ,CAAC,KAAKiT,kBAAL,CAAwBzC,GAAxB,CAA4B,WAA5B,CAAD,EAA2C,EAA3C,CAA9B,GAA+ExQ,QAAQ,CAAC,KAAKiT,kBAAL,CAAwBzC,GAAxB,CAA4B,cAA5B,CAAD,EAA8C,EAA9C,CAAxF,GAA4I;EADlI,OAA5B;EAZoC;;EAgBpC,UAAIjD,WAAW,EAAf,EAAmB;EAAA;EAAA;EAEf,aAAK0F,kBAAL,CAAwBzC,GAAxB,CAA4B;EACxB,wBAAc;EADU,SAA5B;EAIH,OAND,MAMO;EAAA;EAAA;EAEH,aAAKyC,kBAAL,CAAwBxC,QAAxB,CAAiC,SAAjC;EAFG;EAGH,aAAKiD,MAAL,GAAc,IAAIxI,gBAAJ,CAAqB,KAAK+H,kBAAL,CAAwB,CAAxB,CAArB,EAAiD;EAC3DnK,UAAAA,UAAU,EAAE,CAD+C;EAE3DtC,UAAAA,gBAAgB,EAAE,KAFyC;EAG3DjD,UAAAA,kBAAkB,EAAE,EAHuC;EAI3DT,UAAAA,mBAAmB,EAAG,CAAC,CAJoC;EAK3DD,UAAAA,eAAe,EAAE,IAL0C;EAM3DX,UAAAA,eAAe,EAAE;EAN0C,SAAjD,CAAd,CAHG;;EAAA;EAaH,aAAK+Q,kBAAL,CAAwBtD,IAAxB,CAA6B,gBAA7B,EAA+CgE,IAA/C,CAAoD,UAApD,EAAgE,CAAC,CAAjE;EAbG;;EAeH,YAAI,KAAKV,kBAAL,CAAwB,CAAxB,EAA2B3L,YAA3B,GAA0C,KAAK2L,kBAAL,CAAwB,CAAxB,EAA2BnR,YAAzE,EAAuF;EAAA;EAAA;EAEnF,eAAKmR,kBAAL,CAAwBxC,QAAxB,CAAiC,gBAAjC;EAFmF;EAGnF,eAAKiD,MAAL,CAAYlX,QAAZ,CAAqBqG,eAArB,GAAuC,KAAvC;EACH,SAJD;EAAA;EAAA;EAKH;EACJ,KA3CD;EAAA;EAAA;EA4CH;;;WAGD2Q,kBAAA,2BAAkB;EAAA;;EAAA;EAAA;EAEd,WAAO,IAAIzC,OAAJ,CAAY,UAAC6C,OAAD,EAAUC,MAAV,EAAqB;EAAA;EAAA;EAEpC,MAAA,MAAI,CAAClD,UAAL,GAAkB,EAAlB;EAEA,UAAImD,YAAY,6BAAG,MAAI,CAACpE,OAAL,CAAaC,IAAb,CAAkB,cAAlB,CAAH,CAAhB;EAJoC;EAMpCnC,MAAAA,CAAC,CAACuG,IAAF,CAAOD,YAAP,EAAqB,UAAC9X,CAAD,EAAIkE,EAAJ,EAAW;EAAA;EAAA;;EAE7B,QAAA,MAAI,CAACyQ,UAAL,CAAgBxT,IAAhB,CAAqB;EAChBqV,UAAAA,EAAE,EAAExW,CADY;EAEhBvC,UAAAA,GAAG,EAAE+T,CAAC,CAACtN,EAAD,CAAD,CAAMiQ,IAAN,GAAaC,IAAb;EAFW,SAArB;EAIF,OAND;EANoC;EAcpCwD,MAAAA,OAAO;EACV,KAfM,CAAP;EAgBH;;;WAGD1E,aAAA,sBAAa;EAAA;;EAAA;EAET,QAAIgC,IAAI,6BAAG,IAAH,CAAR;EAFS;EAIT,SAAKX,aAAL,CAAmByD,EAAnB,CAAsB,UAAQ,GAAR,GAAY1F,IAAlC,EAAwC,YAAM;EAAA;EAAA;;EAE1C,UAAI,MAAI,CAACkD,WAAT,EAAsB;EAAA;EAAA;;EAClB,QAAA,MAAI,CAACyC,KAAL;EACH,OAFD,MAEO;EAAA;EAAA;;EAAA,YAAI,4BAAA,MAAI,CAACrE,YAAL,CAAkB9R,MAAlB,GAA2B,CAA3B,iCAAgC,MAAI,CAACuS,SAArC,CAAJ,EAAoD;EAAA;EAAA;;EACvD,UAAA,MAAI,CAAC6D,IAAL;EACH,SAFM;EAAA;EAAA;EAEN;EACJ,KAPD;EAJS;EAaT,SAAK5E,GAAL,CAAS0E,EAAT,CAAY,WAAS,GAAT,GAAa1F,IAAzB,EAA+B,wBAA/B,EAAyD,YAAW;EAAA;EAEhE,UAAIpO,EAAE,6BAAG,IAAH,CAAN;EACA,UAAIzG,GAAG,6BAAG+T,CAAC,CAAC,IAAD,CAAD,CAAQ/T,GAAR,EAAH,CAAP;EACA,UAAI0a,YAAY,6BAAG,GAAH,CAAhB,CAJgE;;EAAA;EAMhEjD,MAAAA,IAAI,CAACkB,YAAL,GAAoB,IAApB;EANgE;;EAQhE,UAAI,mCAAOlB,IAAI,CAACU,YAAZ,KAA6B,UAA7B,iCAA2C1R,EAAE,CAACkU,OAA9C,CAAJ,EAA2D;EAAA;EAAA;EAEvDlU,QAAAA,EAAE,CAACkU,OAAH,GAAa,KAAb;EAFuD;EAIvDlD,QAAAA,IAAI,CAACU,YAAL,CAAkB,UAACyC,EAAD,EAAQ;EAAA;EAAA;;EAEtB,cAAIA,EAAE,IAAI,WAAV,EAAuB;EAAA;EAAA;EAEnBnD,YAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBW,OAArB,CAA6B5E,GAA7B,MAAsC,CAAC,CAAvC,+BAA2CyX,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBP,IAArB,CAA0B1D,GAA1B,CAA3C,gCAA4E,KAA5E;EAFmB;EAGnByG,YAAAA,EAAE,CAACkU,OAAH,GAAa,IAAb;EAHmB;EAInBlD,YAAAA,IAAI,CAACoD,QAAL,CAAcpU,EAAd;EACH,WALD;EAAA;EAAA;;EAFsB;EAStB5D,UAAAA,UAAU,CAAC,YAAW;EAAA;EAAA;EAClB4U,YAAAA,IAAI,CAACkB,YAAL,GAAoB,KAApB;EACH,WAFS,EAEP+B,YAFO,CAAV;EAGH,SAZD,EAYGjU,EAZH;EAcH,OAlBD,MAkBO;EAAA;EAAA;;EAAA,YAAIA,EAAE,CAACkU,OAAP,EAAgB;EAAA;EAAA;EAEnBlD,UAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBW,OAArB,CAA6B5E,GAA7B,MAAsC,CAAC,CAAvC,+BAA2CyX,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBP,IAArB,CAA0B1D,GAA1B,CAA3C,gCAA4E,KAA5E;EAFmB;EAGnByX,UAAAA,IAAI,CAACoD,QAAL,CAAcpU,EAAd;EAHmB;EAKnB5D,UAAAA,UAAU,CAAC,YAAW;EAAA;EAAA;EAClB4U,YAAAA,IAAI,CAACkB,YAAL,GAAoB,KAApB;EACH,WAFS,EAEP+B,YAFO,CAAV;EAIH,SATM,MASA;EAAA;EAAA;;EAAA,cAAI,mCAAOjD,IAAI,CAACW,cAAZ,KAA+B,UAA/B,iCAA6C,CAAC3R,EAAE,CAACkU,OAAjD,CAAJ,EAA8D;EAAA;EAAA;EAEjElU,YAAAA,EAAE,CAACkU,OAAH,GAAa,IAAb;EAFiE;EAIjElD,YAAAA,IAAI,CAACW,cAAL,CAAoB,UAACwC,EAAD,EAAQ;EAAA;EAAA;;EAExB,kBAAIA,EAAE,IAAI,WAAV,EAAuB;EAAA;EAAA;EAEnBnD,gBAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,IAAuBwT,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqB3C,MAArB,CAA4B,UAAAwZ,CAAC,EAAI;EAAA;EAAA;EAAA,yBAAAA,CAAC,IAAI9a,GAAL;EAAQ,iBAAzC,CAAvB;EAFmB;EAGnByG,gBAAAA,EAAE,CAACkU,OAAH,GAAa,KAAb;EAHmB;EAInBlD,gBAAAA,IAAI,CAACoD,QAAL,CAAcpU,EAAd;EACH,eALD;EAAA;EAAA;;EAFwB;EASxB5D,cAAAA,UAAU,CAAC,YAAW;EAAA;EAAA;EAClB4U,gBAAAA,IAAI,CAACkB,YAAL,GAAoB,KAApB;EACH,eAFS,EAEP+B,YAFO,CAAV;EAGH,aAZD,EAYGjU,EAZH;EAcH,WAlBM,MAkBA;EAAA;EAAA;;EAAA,gBAAI,6BAACA,EAAE,CAACkU,OAAJ,iCAAe,CAAClD,IAAI,CAACY,cAArB,CAAJ,EAAyC;EAAA;EAAA;EAE5CZ,cAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,IAAuBwT,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqB3C,MAArB,CAA4B,UAAAwZ,CAAC,EAAI;EAAA;EAAA;EAAA,uBAAAA,CAAC,IAAI9a,GAAL;EAAQ,eAAzC,CAAvB;EAF4C;EAG5CyX,cAAAA,IAAI,CAACoD,QAAL,CAAcpU,EAAd;EAH4C;EAK5C5D,cAAAA,UAAU,CAAC,YAAW;EAAA;EAAA;EAClB4U,gBAAAA,IAAI,CAACkB,YAAL,GAAoB,KAApB;EACH,eAFS,EAEP+B,YAFO,CAAV;EAIH,aATM,MASA;EAAA;EAAA;;EAAA,kBAAI,6BAACjU,EAAE,CAACkU,OAAJ,iCAAelD,IAAI,CAACY,cAApB,CAAJ,EAAwC;EAAA;EAAA;EAE3C5R,gBAAAA,EAAE,CAACkU,OAAH,GAAa,IAAb;EAF2C;EAI3C9X,gBAAAA,UAAU,CAAC,YAAW;EAAA;EAAA;EAClB4U,kBAAAA,IAAI,CAACkB,YAAL,GAAoB,KAApB;EACH,iBAFS,EAEP+B,YAFO,CAAV;EAGH,eAPM;EAAA;EAAA;EAON;EAAA;EAAA;EAAA;EACJ,KAtED;EAbS;EAqFT,SAAK7E,GAAL,CAAS0E,EAAT,CAAY,WAAS,GAAT,GAAa1F,IAAzB,EAA+B,qBAA/B,EAAsD,YAAW;EAAA;EAE7D,UAAI7U,GAAG,6BAAG+T,CAAC,CAAC,IAAD,CAAD,CAAQ/T,GAAR,EAAH,CAAP;EAF6D;;EAI7D,UAAI,KAAK2a,OAAT,EAAkB;EAAA;EAAA;EAEdlD,QAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,IAAuBjE,GAAvB;EAFc;EAGdyX,QAAAA,IAAI,CAACxB,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,EAAyC6E,GAAzC,CAA6ChH,CAAC,CAAC,IAAD,CAA9C,EAAsDiH,IAAtD,CAA2D,SAA3D,EAAsE,KAAtE;EAHc;EAIdvD,QAAAA,IAAI,CAACxB,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,EAAyC6E,GAAzC,CAA6ChH,CAAC,CAAC,IAAD,CAA9C,EAAsDkH,WAAtD,CAAkE,SAAlE;EAEH,OAND,MAMO;EAAA;EAAA;EAEHxD,QAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,IAAuB,EAAvB;EACH;EACJ,KAdD;EArFS;EAqGT,SAAK4R,GAAL,CAAS0E,EAAT,CAAY,UAAQ,GAAR,GAAY1F,IAAxB,EAA8B,qBAA9B,EAAqD,YAAW;EAAA;EAAA;;EAE5D,UAAI,4BAAAd,CAAC,CAAC,IAAD,CAAD,CAAQmH,QAAR,CAAiB,SAAjB,kCAA+BzD,IAAI,CAACa,sBAApC,CAAJ,EAAgE;EAAA;EAAA;EAE5Db,QAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,IAAuB,EAAvB;EAF4D;EAG5D8P,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQiH,IAAR,CAAa,SAAb,EAAwB,KAAxB;EAH4D;EAI5DjH,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQkH,WAAR,CAAoB,SAApB;EAJ4D;;EAM5D,YAAIxD,IAAI,CAAClB,YAAT,EAAuB;EAAA;EAAA;EACnBkB,UAAAA,IAAI,CAAChB,YAAL,CAAkBJ,IAAlB,CAAuBoB,IAAI,CAACjB,mBAA5B;EACH,SAFD;EAAA;EAAA;EAIH,OAVD,MAUO;EAAA;EAAA;EAEHzC,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQiD,QAAR,CAAiB,SAAjB;EAFG;;EAIH,YAAIS,IAAI,CAAClB,YAAT,EAAuB;EAAA;EAAA;EACnBkB,UAAAA,IAAI,CAAChB,YAAL,CAAkBJ,IAAlB,CAAuBtC,CAAC,CAAC,IAAD,CAAD,CAAQ4D,MAAR,GAAiBzB,IAAjB,CAAsB,cAAtB,EAAsCQ,IAAtC,EAAvB;EACH,SAFD;EAAA;EAAA;EAGH;;EAnB2D;EAqB5De,MAAAA,IAAI,CAACoD,QAAL,CAAc,IAAd;EACH,KAtBD;EArGS;;EA6HT,QAAI,KAAKZ,MAAT,EAAiB;EAAA;EAAA;EAEb,WAAKT,kBAAL,CAAwBtD,IAAxB,CAA6B,cAA7B,EAA6CiF,SAA7C,CAAuD,YAAW;EAAA;EAAA;EAC9D1D,QAAAA,IAAI,CAAC+B,kBAAL,CAAwBxC,QAAxB,CAAiC,qBAAjC;EACH,OAFD;EAFa;EAMbjD,MAAAA,CAAC,CAAC3T,QAAD,CAAD,CAAYgb,OAAZ,CAAoB,YAAW;EAAA;EAAA;;EAE3B,YAAI3D,IAAI,CAAC+B,kBAAL,CAAwB0B,QAAxB,CAAiC,qBAAjC,CAAJ,EAA6D;EAAA;EAAA;EACzDzD,UAAAA,IAAI,CAAC+B,kBAAL,CAAwByB,WAAxB,CAAoC,qBAApC;EACH,SAFD;EAAA;EAAA;EAGH,OALD;EAMH,KAZD;EAAA;EAAA;;EA7HS;;EA2IT,QAAI,KAAKhE,UAAT,EAAqB;EAAA;EAAA;EAEjB,WAAKE,YAAL,CAAkBoD,EAAlB,CAAqB,YAAU,GAAV,GAAc1F,IAAnC,EAAyC1B,QAAQ,CAAC,YAAY;EAAA;EAAA;EAE1DsE,QAAAA,IAAI,CAACL,YAAL,GAAoBrD,CAAC,CAAC,IAAD,CAAD,CAAQ/T,GAAR,GAAc2W,IAAd,EAApB;EAF0D;EAG1Dc,QAAAA,IAAI,CAACJ,MAAL,CAAYtW,IAAZ,CAAiB0W,IAAjB;EAEH,OALgD,EAK9C,GAL8C,CAAjD;EAFiB;EASjB,WAAKN,YAAL,CAAkBoD,EAAlB,CAAqB,YAAU,GAAV,GAAc1F,IAAnC,EAAyC,YAAY;EAAA;EAAA;EAEjD4C,QAAAA,IAAI,CAACgC,gBAAL,CAAsBzC,QAAtB,CAA+B,SAA/B;EACH,OAHD;EATiB;EAcjB,WAAKG,YAAL,CAAkBoD,EAAlB,CAAqB,aAAW,GAAX,GAAe1F,IAApC,EAA0C,YAAY;EAAA;EAAA;EAElD4C,QAAAA,IAAI,CAACgC,gBAAL,CAAsBwB,WAAtB,CAAkC,SAAlC;EACH,OAHD;EAdiB;EAmBjB,WAAKxB,gBAAL,CAAsBc,EAAtB,CAAyB,UAAQ,GAAR,GAAY1F,IAArC,EAA2C,qBAA3C,EAAkE,YAAY;EAAA;EAAA;;EAE1E,YAAI4C,IAAI,CAACL,YAAL,CAAkB/S,MAAtB,EAA8B;EAAA;EAAA;EAE1BoT,UAAAA,IAAI,CAACN,YAAL,CAAkBnX,GAAlB,CAAsB,EAAtB;EAF0B;EAG1ByX,UAAAA,IAAI,CAACL,YAAL,GAAoB,EAApB;EAH0B;EAI1BK,UAAAA,IAAI,CAACJ,MAAL,CAAYtW,IAAZ,CAAiB0W,IAAjB;EAEH,SAND,MAMO;EAAA;EAAA;EAEH;EACH;EACJ,OAZD;EAaH,KAhCD;EAAA;EAAA;;EA3IS;;EA6KT,QAAI,KAAKwB,UAAT,EAAqB;EAAA;EAAA;EAEjB,WAAKa,YAAL,CAAkBS,EAAlB,CAAqB,UAAQ,GAAR,GAAY1F,IAAjC,EAAuC,YAAM;EAAA;EAAA;;EAEzC,QAAA,MAAI,CAAC2F,KAAL;EACH,OAHD;EAIH,KAND;EAAA;EAAA;;EA7KS;EAqLTzG,IAAAA,CAAC,CAAC3T,QAAD,CAAD,CAAYma,EAAZ,CAAe,kBAAf,EAAmC,UAASzV,CAAT,EAAY;EAAA;EAAA;;EAE3C,UAAI,6BAAC2S,IAAI,CAAC5B,GAAL,CAASwF,EAAT,CAAYvW,CAAC,CAACjB,MAAd,CAAD,iCAA0B,CAAC4T,IAAI,CAAC5B,GAAL,CAASyF,GAAT,CAAaxW,CAAC,CAACjB,MAAf,EAAuBQ,MAAlD,iCAA4DoT,IAAI,CAACM,WAAjE,iCAAgF,CAACN,IAAI,CAACkB,YAAtF,CAAJ,EAAwG;EAAA;EAAA;EAEpGlB,QAAAA,IAAI,CAAC+C,KAAL,CAAWzZ,IAAX,CAAgB0W,IAAhB;EACH,OAHD;EAAA;EAAA;EAIH,KAND;EAOH;;;WAGD7B,eAAA,wBAAe;EAAA;EAAA;EAEX,SAAKC,GAAL,CAAS0F,GAAT,CAAa,MAAI1G,IAAjB;EACH;;;WAGD2G,UAAA,iBAAQ9F,IAAR,EAAc;EAAA;EAAA;;EAEV,QAAIA,IAAJ,EAAU;EAAA;EAAA;EACN,aAAO,KAAKA,IAAL,CAAUA,IAAV,CAAP;EACH,KAFD,MAEO;EAAA;EAAA;EACH,aAAO,KAAKA,IAAZ;EACH;EACJ;;;WAGDC,UAAA,mBAAU;EAAA;EAEN,QAAI8B,IAAI,6BAAG,IAAH,CAAR;EACA,QAAIgE,WAAW,6BAAG,KAAKrH,IAAL,CAAUwD,KAAV,+BAAkB,KAAlB,gCAA0B,KAA1B,CAAH,CAAf;EAHM;;EAKN,QAAI,KAAKW,kBAAT,EAA6B;EAAA;EAAA;EACzB,WAAKnC,oBAAL,CAA0BC,IAA1B,iBAA4CoF,WAA5C;EACH,KAFD,MAEO;EAAA;EAAA;EACH,WAAKrF,oBAAL,CAA0BC,IAA1B,CAA+B,KAAKC,iBAApC;EACH;;EATK;;EAWN,QAAI,KAAKM,SAAL,CAAevS,MAAnB,EAA2B;EAAA;EAEvB,UAAIqX,SAAS,6BAAG,KAAK9E,SAAR,CAAb;EACA,UAAI+E,SAAS,6BAAG,KAAKjG,IAAL,CAAU,KAAKzR,IAAf,EAAqBI,MAAxB,CAAb;EACA,UAAIuX,YAAY,6BAAG,CAAH,CAAhB;EAJuB;EAMvB,WAAKlG,IAAL,CAAU,KAAKzR,IAAf,EAAqBY,OAArB,CAA6B,UAASgX,KAAT,EAAgB;EAAA;EAAA;EAEzCH,QAAAA,SAAS,IAAII,kBAAkB,CAAC,MAAID,KAAL,CAA/B;EAFyC;EAGzCD,QAAAA,YAAY;EAH6B;;EAKzC,YAAIA,YAAY,KAAKD,SAArB,EAAgC;EAAA;EAAA;EAC5BD,UAAAA,SAAS,IAAI,GAAb;EACH,SAFD;EAAA;EAAA;EAGH,OARD;EANuB;EAgBvB3H,MAAAA,CAAC,CAACgI,IAAF,CAAO;EACHC,QAAAA,MAAM,EAAE,KADL;EAEHC,QAAAA,GAAG,EAAEP;EAFF,OAAP,EAGGQ,IAHH,CAGQ,UAASxG,IAAT,EAAe;EAAA;EAEnB,YAAIM,KAAK,6BAAGN,IAAI,CAACkD,GAAL,CAAS,UAAAE,IAAI,EAAI;EAAA;EAAA;EAEzBA,UAAAA,IAAI,CAACC,EAAL,GAAUD,IAAI,CAACrB,IAAI,CAACiB,cAAN,CAAJ,CAA0ByD,QAA1B,EAAV;EAFyB;EAIzB,iBAAOrD,IAAP;EACH,SALW,CAAH,CAAT;EAOA,YAAIsD,OAAO,6BAAGpG,KAAK,CAAC4C,GAAN,CAAU,UAAAE,IAAI,EAAI;EAAA;EAAA;EAC5B,iBAAOvS,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAAf;EACH,SAFa,CAAH,CAAX,CATmB;;EAAA;EAcnBtB,QAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,IAAuBwT,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqB3C,MAArB,CAA4B,UAASua,KAAT,EAAgB;EAAA;EAAA;EAC/D,iBAAOO,OAAO,CAACxX,OAAR,CAAgB2B,QAAQ,CAACsV,KAAD,EAAQ,EAAR,CAAxB,IAAuC,CAAC,CAA/C;EACH,SAFsB,CAAvB;EAdmB;;EAkBnB,YAAIpE,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBI,MAArB,IAA+B,CAAnC,EAAsC;EAAA;EAAA;EAClCoT,UAAAA,IAAI,CAACrB,oBAAL,CAA0BC,IAA1B,CAA+BoB,IAAI,CAACnB,iBAApC;EACH,SAFD;EAAA;EAAA;;EAlBmB;EAsBnBN,QAAAA,KAAK,GAAGA,KAAK,CAAC1U,MAAN,CAAa,UAASwX,IAAT,EAAe;EAAA;EAAA;EAChC,iBAAO,4BAAArB,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBW,OAArB,CAA6BkU,IAAI,CAACC,EAAlC,IAAwC,CAAC,CAAzC,iCAA8CtB,IAAI,CAACe,cAAL,CAAoB5T,OAApB,CAA4B2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApC,MAAuD,CAAC,CAAtG,iCAA2GxS,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAAR,GAAwB,CAAnI,CAAP;EACH,SAFO,CAAR;EAIA,YAAIhH,MAAM,6BAAG0F,IAAI,CAAC2B,eAAL,CAAqBpD,KAArB,CAAH,CAAV;EA1BmB;EA4BnBjC,QAAAA,CAAC,CAACsI,IAAF,CAAO5E,IAAI,CAAC+B,kBAAL,CAAwBD,MAAxB,CAA+BxH,MAA/B,CAAP,EAA+CwD,IAA/C,CAAoD,YAAW;EAAA;EAE3D,cAAI+G,OAAO,6BAAG7E,IAAI,CAAC+B,kBAAL,CAAwBtD,IAAxB,CAA6B,QAA7B,CAAH,CAAX;EAF2D;;EAI3D,cAAIuB,IAAI,CAAC+B,kBAAL,CAAwB,CAAxB,EAA2B3L,YAA3B,GAA0C4J,IAAI,CAAC+B,kBAAL,CAAwB,CAAxB,EAA2BnR,YAAzE,EAAuF;EAAA;EAAA;EAEnFoP,YAAAA,IAAI,CAACwC,MAAL,CAAYlH,MAAZ;EAFmF;EAGnF0E,YAAAA,IAAI,CAACwC,MAAL,CAAYlX,QAAZ,CAAqBqG,eAArB,GAAuC,KAAvC;EAHmF;EAInFqO,YAAAA,IAAI,CAAC+B,kBAAL,CAAwBxC,QAAxB,CAAiC,gBAAjC;EAEH,WAND,MAMO;EAAA;EAAA;EAEHS,YAAAA,IAAI,CAACwC,MAAL,CAAYlH,MAAZ;EAFG;EAGH0E,YAAAA,IAAI,CAACwC,MAAL,CAAYlX,QAAZ,CAAqBqG,eAArB,GAAuC,IAAvC;EAHG;EAIHqO,YAAAA,IAAI,CAAC+B,kBAAL,CAAwByB,WAAxB,CAAoC,gBAApC;EACH;;EAf0D;;EAiB3D,cAAIxD,IAAI,CAAC+B,kBAAL,CAAwBtD,IAAxB,CAA6B,yBAA7B,EAAwD7R,MAA5D,EAAoE;EAAA;EAAA;EAChEoT,YAAAA,IAAI,CAACK,IAAL,GAAY,UAAZ;EACH,WAFD,MAEO;EAAA;EAAA;;EAAA,gBAAIL,IAAI,CAAC+B,kBAAL,CAAwBtD,IAAxB,CAA6B,sBAA7B,EAAqD7R,MAAzD,EAAiE;EAAA;EAAA;EACpEoT,cAAAA,IAAI,CAACK,IAAL,GAAY,OAAZ;EACH,aAFM;EAAA;EAAA;EAEN;;EArB0D;;EAuB3D,cAAIL,IAAI,CAACK,IAAL,IAAa,UAAjB,EAA6B;EAAA;EAAA;EAEzBL,YAAAA,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBY,OAArB,CAA6B,UAASgX,KAAT,EAAgB;EAAA;EAEzC,kBAAIU,MAAM,6BAAGD,OAAO,CAAChb,MAAR,CAAe,YAAW;EAAA;EAAA;EAAE,uBAAO,KAAKua,KAAL,IAAcA,KAArB;EAA4B,eAAxD,CAAH,CAAV;EAFyC;EAIzCU,cAAAA,MAAM,CAACvB,IAAP,CAAY,SAAZ,EAAuB,IAAvB;EAJyC;EAMzCvD,cAAAA,IAAI,CAACoD,QAAL,CAAc0B,MAAM,CAAC,CAAD,CAApB;EACH,aAPD;EASH,WAXD,MAWO;EAAA;EAAA;;EAAA,gBAAI9E,IAAI,CAACK,IAAL,IAAa,OAAjB,EAA0B;EAAA;EAE7B,kBAAIyE,MAAM,6BAAGD,OAAO,CAAChb,MAAR,CAAe,YAAW;EAAA;EAAA;EAAE,uBAAO,KAAKua,KAAL,IAAcpE,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,CAArB;EAA2C,eAAvE,CAAH,CAAV;EAF6B;EAI7BsY,cAAAA,MAAM,CAACvB,IAAP,CAAY,SAAZ,EAAuB,IAAvB;EAJ6B;EAK7BuB,cAAAA,MAAM,CAACvF,QAAP,CAAgB,SAAhB;EAL6B;;EAO7B,kBAAIS,IAAI,CAAClB,YAAT,EAAuB;EAAA;EAAA;EACnBkB,gBAAAA,IAAI,CAAChB,YAAL,CAAkBJ,IAAlB,CAAuBkG,MAAM,CAAC5E,MAAP,GAAgBzB,IAAhB,CAAqB,cAArB,EAAqCQ,IAArC,EAAvB;EACH,eAFD;EAAA;EAAA;;EAP6B;EAW7Be,cAAAA,IAAI,CAACoD,QAAL,CAAc0B,MAAM,CAAC,CAAD,CAApB;EACH,aAZM;EAAA;EAAA;EAYN;EACJ,SA/CD;EAgDH,OA/ED;EAiFH,KAjGD,MAiGO;EAAA;EAEH;EACA,UAAID,OAAO,6BAAG,KAAK9C,kBAAL,CAAwBtD,IAAxB,CAA6B,QAA7B,CAAH,CAAX;EACA,UAAIsG,WAAW,6BAAGF,OAAO,CAACjY,MAAR,GAAiB,CAAjB,+BAAqBiY,OAAO,CAAC1D,GAAR,CAAY,YAAW;EAAA;EAAA;EAC1D,eAAOrS,QAAQ,CAAC,KAAKsV,KAAN,EAAa,EAAb,CAAf;EACH,OAFsC,EAEpCnc,GAFoC,EAArB,gCAEP,EAFO,CAAH,CAAf;EAJG;EAQH,WAAKgW,IAAL,CAAU,KAAKzR,IAAf,IAAuB,KAAKyR,IAAL,CAAU,KAAKzR,IAAf,EAAqB3C,MAArB,CAA4B,UAASua,KAAT,EAAgB;EAAA;EAAA;EAC/D,eAAOW,WAAW,CAAC5X,OAAZ,CAAoB2B,QAAQ,CAACsV,KAAD,EAAQ,EAAR,CAA5B,IAA2C,CAAC,CAAnD;EACH,OAFsB,CAAvB;EARG;;EAYH,UAAI,KAAKnG,IAAL,CAAU,KAAKzR,IAAf,EAAqBI,MAArB,IAA+B,CAAnC,EAAsC;EAAA;EAAA;EAClC,aAAK+R,oBAAL,CAA0BC,IAA1B,CAA+B,KAAKC,iBAApC;EACH,OAFD;EAAA;EAAA;;EAZG;;EAgBH,UAAI,KAAKkD,kBAAL,CAAwBtD,IAAxB,CAA6B,yBAA7B,EAAwD7R,MAA5D,EAAoE;EAAA;EAAA;EAChE,aAAKyT,IAAL,GAAY,UAAZ;EACH,OAFD,MAEO;EAAA;EAAA;;EAAA,YAAI,KAAK0B,kBAAL,CAAwBtD,IAAxB,CAA6B,sBAA7B,EAAqD7R,MAAzD,EAAiE;EAAA;EAAA;EACpE,eAAKyT,IAAL,GAAY,OAAZ;EACH,SAFM;EAAA;EAAA;EAEN;;EApBE;;EAsBH,UAAI,KAAKA,IAAL,IAAa,UAAjB,EAA6B;EAAA;EAAA;EAEzB,aAAKpC,IAAL,CAAU,KAAKzR,IAAf,EAAqBY,OAArB,CAA6B,UAASgX,KAAT,EAAgB;EAAA;EAEzC,cAAIU,MAAM,6BAAGD,OAAO,CAAChb,MAAR,CAAe,YAAW;EAAA;EAAA;EACnC,mBAAO,KAAKua,KAAL,IAAcA,KAArB;EACH,WAFY,CAAH,CAAV;EAFyC;EAMzCU,UAAAA,MAAM,CAACvB,IAAP,CAAY,SAAZ,EAAuB,IAAvB;EANyC;EAQzCvD,UAAAA,IAAI,CAACoD,QAAL,CAAc0B,MAAM,CAAC,CAAD,CAApB;EACH,SATD;EAWH,OAbD,MAaO;EAAA;EAAA;;EAAA,YAAI,KAAKzE,IAAL,IAAa,OAAjB,EAA0B;EAAA;EAE7B,cAAIyE,MAAM,6BAAGD,OAAO,CAAChb,MAAR,CAAe,YAAW;EAAA;EAAA;EACnC,mBAAO,KAAKua,KAAL,IAAcpE,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,CAArB;EACH,WAFY,CAAH,CAAV;EAF6B;EAM7BsY,UAAAA,MAAM,CAACvB,IAAP,CAAY,SAAZ,EAAuB,IAAvB;EAN6B;EAO7BuB,UAAAA,MAAM,CAACvF,QAAP,CAAgB,SAAhB;EAP6B;;EAS7B,cAAI,KAAKT,YAAT,EAAuB;EAAA;EAAA;EACnB,iBAAKE,YAAL,CAAkBJ,IAAlB,CAAuBkG,MAAM,CAAC5E,MAAP,GAAgBzB,IAAhB,CAAqB,cAArB,EAAqCQ,IAArC,EAAvB;EACH,WAFD;EAAA;EAAA;;EAT6B;EAa7B,eAAKmE,QAAL,CAAc0B,MAAM,CAAC,CAAD,CAApB;EACH,SAdM;EAAA;EAAA;EAcN;EACJ;EACJ;;;WAGDlF,SAAA,kBAAS;EAAA;EAEL,QAAII,IAAI,6BAAG,IAAH,CAAR;EACA,QAAIgE,WAAW,6BAAG,KAAKrH,IAAL,CAAUwD,KAAV,+BAAkB,KAAlB,gCAA0B,KAA1B,CAAH,CAAf;EAHK;;EAKL,QAAI,KAAKR,YAAL,CAAkB/S,MAAtB,EAA8B;EAAA;EAAA;;EAE1B,UAAI,KAAKuS,SAAL,CAAevS,MAAnB,EAA2B;EAAA;EAAA;EAEvB,aAAKmV,kBAAL,CAAwBtD,IAAxB,CAA6B,qBAA7B,EAAoDuG,OAApD,CAA4D,cAA5D,EAA4E1B,GAA5E,CAAgF,cAAhF,EAAgG/Z,MAAhG;EAFuB;EAIvB+S,QAAAA,CAAC,CAACgI,IAAF,CAAO;EACHC,UAAAA,MAAM,EAAE,KADL;EAEHC,UAAAA,GAAG,EAAE,KAAKrF,SAAL,GAAiB,KAAKQ;EAFxB,SAAP,EAGG8E,IAHH,CAGQ,UAASxG,IAAT,EAAe;EAAA;EAEnB,cAAIM,KAAK,6BAAGN,IAAI,CAACkD,GAAL,CAAS,UAAAE,IAAI,EAAI;EAAA;EAAA;EAEzBA,YAAAA,IAAI,CAACC,EAAL,GAAUD,IAAI,CAACrB,IAAI,CAACiB,cAAN,CAAJ,CAA0ByD,QAA1B,EAAV;EAFyB;EAIzB,mBAAOrD,IAAP;EACH,WALW,CAAH,CAAT;EAFmB;EASnB9C,UAAAA,KAAK,GAAGA,KAAK,CAAC1U,MAAN,CAAa,UAASwX,IAAT,EAAe;EAAA;EAAA;EAChC,mBAAO,6BAAArB,IAAI,CAAC/B,IAAL,CAAU+B,IAAI,CAACxT,IAAf,EAAqBW,OAArB,CAA6BkU,IAAI,CAACC,EAAlC,MAA0C,CAAC,CAA3C,kCAAgDtB,IAAI,CAACe,cAAL,CAAoB5T,OAApB,CAA4B2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApC,MAAuD,CAAC,CAAxG,kCAA6GxS,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAAR,GAAwB,CAArI,CAAP;EACH,WAFO,CAAR;EAIA,cAAIhH,MAAM,6BAAG0F,IAAI,CAAC2B,eAAL,CAAqBpD,KAArB,CAAH,CAAV;EAbmB;EAenBjC,UAAAA,CAAC,CAACsI,IAAF,CAAO5E,IAAI,CAAC+B,kBAAL,CAAwBD,MAAxB,CAA+BxH,MAA/B,CAAP,EAA+CwD,IAA/C,CAAoD,YAAW;EAAA;EAE3D,gBAAIkG,WAAW,6BAAGhE,IAAI,CAACrD,IAAL,CAAUwD,KAAV,gCAAkB,KAAlB,iCAA0B,KAA1B,CAAH,CAAf;EAF2D;EAI3DH,YAAAA,IAAI,CAACiC,oBAAL,CAA0BrD,IAA1B,iBAA4CoF,WAA5C;EAJ2D;EAK3DhE,YAAAA,IAAI,CAACiC,oBAAL,CAA0BQ,IAA1B,CAA+B,mBAA/B,EAAoD,MAApD;EAL2D;;EAO3D,gBAAIzC,IAAI,CAAC+B,kBAAL,CAAwB,CAAxB,EAA2B3L,YAA3B,GAA0C4J,IAAI,CAAC+B,kBAAL,CAAwB,CAAxB,EAA2BnR,YAAzE,EAAuF;EAAA;EAAA;EAEnFoP,cAAAA,IAAI,CAACwC,MAAL,CAAYlH,MAAZ;EAFmF;EAGnF0E,cAAAA,IAAI,CAACwC,MAAL,CAAYlX,QAAZ,CAAqBqG,eAArB,GAAuC,KAAvC;EAHmF;EAInFqO,cAAAA,IAAI,CAAC+B,kBAAL,CAAwBxC,QAAxB,CAAiC,gBAAjC;EAEH,aAND,MAMO;EAAA;EAAA;EAEHS,cAAAA,IAAI,CAACwC,MAAL,CAAYlH,MAAZ;EAFG;EAGH0E,cAAAA,IAAI,CAACwC,MAAL,CAAYlX,QAAZ,CAAqBqG,eAArB,GAAuC,IAAvC;EAHG;EAIHqO,cAAAA,IAAI,CAAC+B,kBAAL,CAAwByB,WAAxB,CAAoC,gBAApC;EACH;EACJ,WAnBD;EAoBH,SAtCD;EAwCH,OA5CD,MA4CO;EAAA;EAEH,YAAIyB,OAAO,6BAAG,KAAKxF,UAAL,CAAgB5V,MAAhB,CAAuB,UAASwX,IAAT,EAAe;EAAA;EAAA;EAChD,iBAAOA,IAAI,CAAC9Y,GAAL,CAAS2c,iBAAT,GAA6B/X,OAA7B,CAAqC6S,IAAI,CAACL,YAAL,CAAkBuF,iBAAlB,EAArC,IAA8E,CAAC,CAAtF;EACH,SAFa,CAAH,CAAX;EAFG;EAMH,aAAKxG,YAAL,CAAkB8E,WAAlB,CAA8B,QAA9B;EANG;EAOH,aAAK9E,YAAL,CAAkB8E,WAAlB,CAA8B,SAA9B;EAPG;EASHyB,QAAAA,OAAO,CAAC7X,OAAR,CAAgB,UAASiU,IAAT,EAAe;EAAA;EAAA;EAC3B/E,UAAAA,CAAC,CAAC0D,IAAI,CAACtB,YAAL,CAAkB2C,IAAI,CAACC,EAAvB,CAAD,CAAD,CAA8B/B,QAA9B,CAAuC,SAAvC;EACH,SAFD;EATG;EAaH,aAAKb,YAAL,CAAkB4E,GAAlB,CAAsB,UAAtB,EAAkC/D,QAAlC,CAA2C,QAA3C;EAbG;EAcH,aAAK0C,oBAAL,CAA0BrD,IAA1B,iBAA4CoF,WAA5C;EAdG;EAeH,aAAK/B,oBAAL,CAA0BQ,IAA1B,CAA+B,mBAA/B,EAAoD,MAApD;EACH;EAEJ,KAhED,MAgEO;EAAA;EAAA;;EAEH,UAAI,KAAKtD,SAAL,CAAevS,MAAnB,EAA2B;EAAA;EAAA;EAEvB,aAAKmV,kBAAL,CAAwBtD,IAAxB,CAA6B,qBAA7B,EAAoDuG,OAApD,CAA4D,cAA5D,EAA4E1B,GAA5E,CAAgF,cAAhF,EAAgG/Z,MAAhG;EAFuB;EAGvB,aAAK0Y,oBAAL,CAA0BrD,IAA1B,iBAA4CoF,WAA5C;EAHuB;EAIvB,aAAK/B,oBAAL,CAA0BQ,IAA1B,CAA+B,mBAA/B,EAAoD,EAApD;EAEH,OAND,MAMO;EAAA;EAAA;EAEH,aAAK/D,YAAL,CAAkB8E,WAAlB,CAA8B,QAA9B;EAFG;EAGH,aAAK9E,YAAL,CAAkB8E,WAAlB,CAA8B,SAA9B;EAHG;EAIH,aAAKvB,oBAAL,CAA0BrD,IAA1B,iBAA4CoF,WAA5C;EAJG;EAKH,aAAK/B,oBAAL,CAA0BQ,IAA1B,CAA+B,mBAA/B,EAAoD,EAApD;EACH;EACJ;;EApFI;;EAsFL,QAAI,KAAKD,MAAT,EAAiB;EAAA;EAAA;EACb,WAAKA,MAAL,CAAYlH,MAAZ;EACH,KAFD;EAAA;EAAA;;EAtFK;EA0FL,SAAKsB,QAAL;EACH;;;WAGDoG,OAAA,gBAAO;EAAA;;EAAA;EAAA;;EAEH,QAAI,KAAK5E,GAAL,CAASqF,QAAT,CAAkB,MAAlB,CAAJ,EAA+B;EAAA;EAAA;EAC3B;EACH,KAFD;EAAA;EAAA;;EAIA,QAAI0B,aAAa,6BAAG7I,CAAC,CAAC,cAAD,CAAJ,CAAjB;EACA,QAAI8I,MAAM,6BAAG,CAAH,CAAV;EACA,QAAIpB,WAAW,6BAAG,KAAKrH,IAAL,CAAUwD,KAAV,gCAAkB,KAAlB,iCAA0B,KAA1B,CAAH,CAAf;EARG;;EAUH,QAAIgF,aAAa,CAACvY,MAAlB,EAA0B;EAAA;EAAA;EACtBwY,MAAAA,MAAM,GAAGtW,QAAQ,CAACqW,aAAa,CAACE,KAAd,GAAsB/F,GAAtB,CAA0B,SAA1B,CAAD,EAAuC,EAAvC,CAAR,GAAqD,CAA9D;EACH,KAFD;EAAA;EAAA;;EAVG;EAcH,SAAKlB,GAAL,CAASkB,GAAT,CAAa;EACT,oBAAe,KAAKc,mBAAL,GAA2B,KAAKf,aAAL,CAAmBkD,WAAnB,CAA+B,IAA/B,CAA5B,GAAkE;EADvE,KAAb;EAdG;EAkBH,SAAKnE,GAAL,CAASmB,QAAT,CAAkB,MAAlB;EAlBG;;EAoBH,QAAI,CAAC4F,aAAa,CAACvY,MAAnB,EAA2B;EAAA;EAAA;EACvBwY,MAAAA,MAAM,GAAItW,QAAQ,CAAC,KAAKsP,GAAL,CAASkB,GAAT,CAAa,SAAb,CAAD,EAA0B,EAA1B,CAAR,GAAwC,CAAlD;EACH,KAFD;EAAA;EAAA;;EApBG;EAwBH,SAAKlB,GAAL,CAASkB,GAAT,CAAa;EACT,iBAAW8F;EADF,KAAb;EAxBG;;EA4BH,QAAI,kCAAK5C,MAAL,kCAAe,KAAKT,kBAAL,CAAwBnV,MAAvC,CAAJ,EAAmD;EAAA;EAAA;;EAE/C,UAAI,KAAKmV,kBAAL,CAAwB,CAAxB,EAA2B3L,YAA3B,GAA0C,KAAK2L,kBAAL,CAAwB,CAAxB,EAA2BnR,YAAzE,EAAuF;EAAA;EAAA;EACnF,aAAKmR,kBAAL,CAAwB,CAAxB,EAA2BvT,SAA3B,GAAuC,CAAvC;EADmF;EAEnF,aAAKuT,kBAAL,CAAwB,CAAxB,EAA2BvT,SAA3B,GAAuC,CAAvC;EACH,OAHD;EAAA;EAAA;EAIH,KAND;EAAA;EAAA;;EA5BG;EAoCH,SAAKmQ,oBAAL,CAA0BC,IAA1B,iBAA4CoF,WAA5C;EApCG;EAsCH5Y,IAAAA,UAAU,CAAC,YAAM;EAAA;EAAA;;EACb,MAAA,MAAI,CAACgT,GAAL,CAAS,CAAT,EAAYkH,cAAZ,CAA2B;EAACC,QAAAA,QAAQ,EAAE,QAAX;EAAqBC,QAAAA,KAAK,EAAE,SAA5B;EAAuCC,QAAAA,MAAM,EAAE;EAA/C,OAA3B;EACH,KAFS,EAEP,GAFO,CAAV;EAtCG;EA0CH,SAAKnF,WAAL,GAAmB,IAAnB;EA1CG;EA2CH,SAAKxD,MAAL;EACH;;;WAGDiG,QAAA,iBAAQ;EAAA;EAAA;;EAEJ,QAAI,CAAC,KAAK7B,YAAV,EAAwB;EAAA;EAEpB,UAAIlB,IAAI,6BAAG,IAAH,CAAR;EACA,UAAIgE,WAAW,6BAAG,KAAKrH,IAAL,CAAUwD,KAAV,gCAAkB,KAAlB,iCAA0B,KAA1B,CAAH,CAAf;EAHoB;EAKpB,WAAK/B,GAAL,CAASkB,GAAT,CAAa,YAAb,EAA2B,EAA3B;EALoB;EAMpB,WAAKlB,GAAL,CAASoF,WAAT,CAAqB,MAArB;EANoB;EAQpBpY,MAAAA,UAAU,CAAC,YAAM;EAAA;EAAA;EACb4U,QAAAA,IAAI,CAAC5B,GAAL,CAASsH,UAAT,CAAoB,OAApB;EACH,OAFS,EAEP,GAFO,CAAV;EARoB;;EAYpB,UAAI,kCAAKzH,IAAL,CAAU,KAAKzR,IAAf,EAAqBI,MAArB,GAA8B,CAA9B,kCAAmC,KAAKkU,kBAAxC,CAAJ,EAAgE;EAAA;EAAA;EAC5D,aAAKnC,oBAAL,CAA0BC,IAA1B,iBAA4CoF,WAA5C;EACH,OAFD,MAEO;EAAA;EAAA;EACH,aAAKrF,oBAAL,CAA0BC,IAA1B,CAA+B,KAAKC,iBAApC;EACH;;EAhBmB;EAkBpB,WAAKyB,WAAL,GAAmB,KAAnB;EAlBoB;EAmBpB,WAAKvD,OAAL;EACH,KApBD;EAAA;EAAA;EAqBH;;;WAGDqG,WAAA,kBAASpU,EAAT,EAAa;EAAA;EAET,QAAIgR,IAAI,6BAAG,IAAH,CAAR;EACA,QAAIoD,QAAQ,6BAAG,KAAKzG,IAAL,CAAUyG,QAAb,CAAZ;EACA,QAAInF,IAAI,6BAAG3B,CAAC,CAACtN,EAAD,CAAD,CAAMgW,OAAN,CAAc,cAAd,EAA8B/G,IAA9B,EAAH,CAAR;EAJS;;EAMT,QAAI,kCAAKkB,SAAL,CAAevS,MAAf,kCAAyB,CAAC0P,CAAC,CAACqJ,aAAF,CAAgB1H,IAAhB,CAA1B,CAAJ,EAAqD;EAAA;EAAA;;EAEjD,UAAI,6BAAA3B,CAAC,CAACtN,EAAD,CAAD,CAAMpC,MAAN,kCAAgBoC,EAAE,CAACkU,OAAnB,CAAJ,EAAgC;EAAA;EAAA;EAE5B,aAAK3E,KAAL,CAAWtS,IAAX,CAAgBgS,IAAhB;EAEH,OAJD,MAIO;EAAA;EAAA;EAEJ,aAAKM,KAAL,GAAajC,CAAC,CAACsJ,IAAF,CAAO,KAAKrH,KAAZ,EAAmB,UAAS8C,IAAT,EAAe;EAAA;EAAA;EAAE,iBAAOA,IAAI,CAACrB,IAAI,CAACiB,cAAN,CAAJ,IAA6BhD,IAAI,CAACqD,EAAzC;EAA6C,SAAjF,CAAb;EACF;EACJ,KAVD;EAAA;EAAA;;EANS;;EAkBT,QAAI,OAAO8B,QAAP,KAAoB,UAAxB,EAAoC;EAAA;EAAA;EAEhCA,MAAAA,QAAQ,CAAC9Z,IAAT,CAAc0F,EAAd,EAAkBiP,IAAlB,EAAwB,IAAxB;EACH,KAHD;EAAA;EAAA;EAIH;;;WAGD4H,cAAA,qBAAYtH,KAAZ,EAAmBuH,WAAnB,EAAgC;EAAA;;EAAA;EAAA;EAE5B,WAAO,IAAIjG,OAAJ,CAAY,UAAC6C,OAAD,EAAUC,MAAV,EAAqB;EAAA;EAEpC,UAAI3C,IAAI,6BAAG,MAAH,CAAR;EAFoC;;EAIpC,UAAI,CAAC1D,CAAC,CAACyJ,OAAF,CAAUxH,KAAV,CAAL,EAAuB;EAAA;EAEnB,YAAIyH,QAAQ,6BAAG,EAAH,CAAZ;EAFmB;EAInBA,QAAAA,QAAQ,CAAC/Z,IAAT,CAAcsS,KAAd;EAJmB;EAKnBA,QAAAA,KAAK,GAAGyH,QAAR;EACH,OAND;EAAA;EAAA;;EAJoC;EAYpCzH,MAAAA,KAAK,GAAGA,KAAK,CAAC1U,MAAN,CAAa,UAASwX,IAAT,EAAe;EAAA;EAAA;EAChC,eAAOrB,IAAI,CAACe,cAAL,CAAoB5T,OAApB,CAA4B2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApC,MAAuD,CAAC,CAA/D;EACH,OAFO,CAAR;EAZoC;EAgBpC/C,MAAAA,KAAK,CAACnR,OAAN,CAAc,UAAAiU,IAAI,EAAI;EAAA;EAAA;;EAElB,QAAA,MAAI,CAAC9C,KAAL,CAAWtS,IAAX,CAAgBoV,IAAhB;EACH,OAHD;EAKA,UAAI4E,QAAQ,6BAAG,MAAI,CAACtE,eAAL,CAAqBpD,KAArB,CAAH,CAAZ;EArBoC;;EAuBpC,MAAA,MAAI,CAACwD,kBAAL,CAAwBmE,OAAxB,CAAgCD,QAAhC;;EAvBoC;EAwBpC,MAAA,MAAI,CAACvH,YAAL,GAAoB,MAAI,CAACF,OAAL,CAAaC,IAAb,CAAkB,cAAlB,CAApB;EAxBoC;;EA0BpC,MAAA,MAAI,CAAC6D,eAAL,GAAuBxE,IAAvB,CAA4B,YAAM;EAAA;EAAA;;EAE9B,YAAI,MAAI,CAACY,YAAL,CAAkB9R,MAAlB,GAA2B,CAA/B,EAAkC;EAAA;EAAA;;EAE9B,cAAI,MAAI,CAAC4R,OAAL,CAAaC,IAAb,CAAkB,yBAAlB,EAA6C7R,MAAjD,EAAyD;EAAA;EAAA;EACrD,YAAA,MAAI,CAACyT,IAAL,GAAY,UAAZ;EACH,WAFD,MAEO;EAAA;EAAA;;EAAA,gBAAI,MAAI,CAAC7B,OAAL,CAAaC,IAAb,CAAkB,sBAAlB,EAA0C7R,MAA9C,EAAsD;EAAA;EAAA;EACzD,cAAA,MAAI,CAACyT,IAAL,GAAY,OAAZ;EACH,aAFM;EAAA;EAAA;EAEN;;EAN6B;;EAQ9B,cAAI,MAAI,CAACA,IAAL,IAAa,UAAjB,EAA6B;EAAA;EAAA;EAEzB9B,YAAAA,KAAK,CAACnR,OAAN,CAAc,UAAAiU,IAAI,EAAI;EAAA;EAElB,kBAAIyD,MAAM,6BAAG,MAAI,CAACtG,OAAL,CAAaC,IAAb,CAAkB,QAAlB,EAA4B5U,MAA5B,CAAmC,YAAW;EAAA;EAAA;EAAE,uBAAO,KAAKua,KAAL,IAAc/C,IAAI,CAACC,EAA1B;EAA8B,eAA9E,CAAH,CAAV;EACA,kBAAI/Y,GAAG,6BAAGuG,QAAQ,CAACgW,MAAM,CAACvc,GAAP,EAAD,EAAe,EAAf,CAAX,CAAP;EAHkB;EAKlBuc,cAAAA,MAAM,CAACvB,IAAP,CAAY,SAAZ,EAAuB,IAAvB;EALkB;EAOlB,cAAA,MAAI,CAACtF,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBW,OAArB,CAA6B5E,GAA7B,MAAsC,CAAC,CAAvC,gCAA2C,MAAI,CAAC0V,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBP,IAArB,CAA0B1D,GAA1B,CAA3C,iCAA4E,KAA5E;EAPkB;;EAQlB,cAAA,MAAI,CAAC6a,QAAL,CAAc0B,MAAM,CAAC,CAAD,CAApB;EACH,aATD;EAWH,WAbD,MAaO;EAAA;EAAA;;EAAA,gBAAI,MAAI,CAACzE,IAAL,IAAa,OAAjB,EAA0B;EAAA;EAE7B,kBAAIgB,IAAI,6BAAG9C,KAAK,CAAC,CAAD,CAAR,CAAR;EACA,kBAAIuG,MAAM,6BAAG,MAAI,CAACtG,OAAL,CAAaC,IAAb,CAAkB,QAAlB,EAA4B5U,MAA5B,CAAmC,YAAW;EAAA;EAAA;EAAE,uBAAO,KAAKua,KAAL,IAAc/C,IAAI,CAACC,EAA1B;EAA8B,eAA9E,CAAH,CAAV;EACA,kBAAI/Y,GAAG,6BAAGuG,QAAQ,CAACgW,MAAM,CAACvc,GAAP,EAAD,EAAe,EAAf,CAAX,CAAP;EAJ6B;EAM7Buc,cAAAA,MAAM,CAACvB,IAAP,CAAY,SAAZ,EAAuB,IAAvB;EAN6B;EAO7BuB,cAAAA,MAAM,CAACvF,QAAP,CAAgB,SAAhB;EAP6B;EAS7B,cAAA,MAAI,CAACtB,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBW,OAArB,CAA6B5E,GAA7B,MAAsC,CAAC,CAAvC,gCAA2C,MAAI,CAAC0V,IAAL,CAAU,MAAI,CAACzR,IAAf,IAAuB,CAACjE,GAAD,CAAlE,iCAA0E,KAA1E;EAT6B;;EAW7B,kBAAI,MAAI,CAACuW,YAAT,EAAuB;EAAA;EAAA;;EACnB,gBAAA,MAAI,CAACE,YAAL,CAAkBJ,IAAlB,CAAuBkG,MAAM,CAAC5E,MAAP,GAAgBzB,IAAhB,CAAqB,cAArB,EAAqCQ,IAArC,EAAvB;EACH,eAFD;EAAA;EAAA;;EAX6B;;EAe7B,cAAA,MAAI,CAACT,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,EAAyC6E,GAAzC,CAA6CwB,MAA7C,EAAqDvB,IAArD,CAA0D,SAA1D,EAAqE,KAArE;;EAf6B;;EAgB7B,cAAA,MAAI,CAAC/E,OAAL,CAAaC,IAAb,CAAkB,qBAAlB,EAAyC6E,GAAzC,CAA6CwB,MAA7C,EAAqDtB,WAArD,CAAiE,SAAjE;;EAhB6B;;EAiB7B,cAAA,MAAI,CAACJ,QAAL,CAAc0B,MAAM,CAAC,CAAD,CAApB;EACH,aAlBM;EAAA;EAAA;EAkBN;EACJ,SAxCD;EAAA;EAAA;;EAF8B;;EA4C9B,YAAI,6BAAA,MAAI,CAAC7G,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBI,MAArB,IAA+B,CAA/B,kCACA,MAAI,CAACkS,YADL,kCAEA,MAAI,CAACC,mBAFL,kCAGA,MAAI,CAACA,mBAAL,KAA6B,CAH7B,kCAIA,MAAI,CAACC,YAAL,CAAkBC,IAAlB,GAAyBC,IAAzB,MAAmC,CAJnC,MAKC,6BAAA,MAAI,CAACR,YAAL,CAAkB9R,MAAlB,GAA2B,CAA3B,kCAAgC,MAAI,CAACuS,SAArC,CALD,CAAJ,EAKsD;EAAA;EAAA;;EAElD,UAAA,MAAI,CAACH,YAAL,CAAkBJ,IAAlB,CAAuB,MAAI,CAACG,mBAA5B;EACH,SARD;EAAA;EAAA;;EA5C8B;;EAsD9B,YAAI,MAAI,CAACM,aAAL,CAAmBoD,IAAnB,CAAwB,OAAxB,CAAJ,EAAsC;EAAA;EAAA;;EAClC,UAAA,MAAI,CAACpD,aAAL,CAAmBqG,UAAnB,CAA8B,OAA9B;EACH,SAFD;EAAA;EAAA;;EAtD8B;;EA0D9B,YAAI,MAAI,CAAC/G,oBAAL,CAA0B8E,QAA1B,CAAmC,QAAnC,CAAJ,EAAkD;EAAA;EAAA;;EAC9C,UAAA,MAAI,CAAC9E,oBAAL,CAA0B6E,WAA1B,CAAsC,QAAtC;EACH,SAFD;EAAA;EAAA;;EA1D8B;EA8D9Bd,QAAAA,OAAO;EACV,OA/DD;EAgEH,KA1FM,CAAP;EA2FH;;;WAGDyD,gBAAA,uBAAcC,KAAd,EAAqB;EAAA;;EAAA;EAAA;EAEjB,WAAO,IAAIvG,OAAJ,CAAY,UAAC6C,OAAD,EAAUC,MAAV,EAAqB;EAAA;EAAA;EAEpCyD,MAAAA,KAAK,CAAChZ,OAAN,CAAc,UAAAkU,EAAE,EAAI;EAAA;EAEhB,YAAIwD,MAAM,6BAAG,MAAI,CAACtG,OAAL,CAAaC,IAAb,CAAkB,QAAlB,EAA4B5U,MAA5B,CAAmC,YAAW;EAAA;EAAA;EAAE,iBAAO,KAAKua,KAAL,IAAc9C,EAArB;EAAyB,SAAzE,CAAH,CAAV;EAFgB;;EAIhB,YAAIwD,MAAM,CAAC,CAAD,CAAN,CAAU5B,OAAd,EAAuB;EAAA;EAAA;EAEnB4B,UAAAA,MAAM,CAACuB,OAAP,CAAe,OAAf;EACH,SAHD;EAAA;EAAA;EAIH,OARD;EAFoC;;EAYpC,UAAI,MAAI,CAACpI,IAAL,CAAU,MAAI,CAACzR,IAAf,EAAqBI,MAArB,IAA+B,CAAnC,EAAsC;EAAA;EAAA;;EAClC,QAAA,MAAI,CAAC+R,oBAAL,CAA0BC,IAA1B,CAA+B,MAAI,CAACC,iBAApC;EACH,OAFD;EAAA;EAAA;EAGH,KAfM,CAAP;EAgBH;;;WAGDyH,UAAA,iBAAQhe,GAAR,EAAaC,GAAb,EAAkB;EAAA;EAEd,QAAI+R,MAAM,6BAAGgC,CAAC,CAACsJ,IAAF,CAAO,KAAKrH,KAAZ,EAAmB,UAAS8C,IAAT,EAAe;EAAA;EAAA;EAAE,aAAOA,IAAI,CAAC/Y,GAAD,CAAJ,IAAaC,GAApB;EAAyB,KAA7D,EAA+D,CAA/D,CAAH,CAAV;EAFc;EAId,WAAO+R,MAAM,gCAAGA,MAAH,iCAAY,IAAZ,CAAb;EACH;;;WAGDiM,mBAAA,0BAAiBC,OAAjB,EAA0B;EAAA;EAEtB,QAAIC,GAAG,6BAAG,EAAH,CAAP;EACA,QAAInM,MAAM,6BAAG,EAAH,CAAV;EACA,QAAI2D,IAAI,6BAAG,KAAKA,IAAL,CAAU,KAAKzR,IAAf,CAAH,CAAR;EAJsB;;EAMtB,QAAI,CAAC8P,CAAC,CAACyJ,OAAF,CAAU9H,IAAV,CAAL,EAAsB;EAAA;EAAA;EAElBwI,MAAAA,GAAG,CAACxa,IAAJ,CAASgS,IAAT;EAEH,KAJD,MAIO;EAAA;EAAA;EAEHwI,MAAAA,GAAG,GAAGxI,IAAN;EACH;;EAbqB;EAetBwI,IAAAA,GAAG,GAAGA,GAAG,CAACtF,GAAJ,CAAQC,MAAR,CAAN;EAfsB;;EAiBtB,QAAI,KAAK7C,KAAL,CAAW3R,MAAX,GAAoB,CAAxB,EAA2B;EAAA;EAAA;EAEvB0N,MAAAA,MAAM,GAAGgC,CAAC,CAACsJ,IAAF,CAAO,KAAKrH,KAAZ,EAAmB,UAAS8C,IAAT,EAAe;EAAA;EAAA;EAAE,eAAOoF,GAAG,CAACtZ,OAAJ,CAAY2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApB,IAAqC,CAAC,CAA7C;EAAgD,OAApF,CAAT;EAFuB;;EAIvB,UAAIkF,OAAJ,EAAa;EAAA;EAAA;EAETlM,QAAAA,MAAM,GAAGA,MAAM,CAAC6G,GAAP,CAAW,UAAA9Y,GAAG,EAAI;EAAA;EAAA;EACvB,iBAAOA,GAAG,CAACme,OAAD,CAAV;EACH,SAFQ,EAEN3c,MAFM,CAEC,UAAAxB,GAAG,EAAI;EAAA;EAAA;EACb,iBAAOA,GAAG,IAAI,IAAd;EACH,SAJQ,CAAT;EAKH,OAPD;EAAA;EAAA;EASH,KAbD,MAaO;EAAA;EAAA;EAEHiS,MAAAA,MAAM,GAAGmM,GAAT;EACH;;EAjCqB;EAmCtB,WAAOnM,MAAP;EACH;;;WAGDoM,kBAAA,yBAAgBF,OAAhB,EAAyB;EAAA;EAErB,QAAIC,GAAG,6BAAG,EAAH,CAAP;EACA,QAAInM,MAAM,6BAAG,EAAH,CAAV;EACA,QAAI2D,IAAI,6BAAG,KAAKA,IAAL,CAAU,KAAKzR,IAAf,CAAH,CAAR;EAJqB;;EAMrB,QAAI,CAAC8P,CAAC,CAACyJ,OAAF,CAAU9H,IAAV,CAAL,EAAsB;EAAA;EAAA;EAElBwI,MAAAA,GAAG,CAACxa,IAAJ,CAASgS,IAAT;EAEH,KAJD,MAIO;EAAA;EAAA;EAEHwI,MAAAA,GAAG,GAAGxI,IAAN;EACH;;EAboB;EAerBwI,IAAAA,GAAG,GAAGA,GAAG,CAACtF,GAAJ,CAAQC,MAAR,CAAN;EAfqB;;EAiBrB,QAAI,KAAK7C,KAAL,CAAW3R,MAAX,GAAoB,CAAxB,EAA2B;EAAA;EAAA;EAEvB0N,MAAAA,MAAM,GAAGgC,CAAC,CAACsJ,IAAF,CAAO,KAAKrH,KAAZ,EAAmB,UAAS8C,IAAT,EAAe;EAAA;EAAA;EAAE,eAAOoF,GAAG,CAACtZ,OAAJ,CAAY2B,QAAQ,CAACuS,IAAI,CAACC,EAAN,EAAU,EAAV,CAApB,IAAqC,CAAC,CAA7C;EAAgD,OAApF,CAAT;EAFuB;;EAIvB,UAAIkF,OAAJ,EAAa;EAAA;EAAA;EAETlM,QAAAA,MAAM,GAAGA,MAAM,CAAC6G,GAAP,CAAW,UAAA9Y,GAAG,EAAI;EAAA;EAAA;EACxB,iBAAOA,GAAG,CAACme,OAAD,CAAV;EACF,SAFQ,EAEN3c,MAFM,CAEC,UAAAxB,GAAG,EAAI;EAAA;EAAA;EACb,iBAAOA,GAAG,IAAI,IAAd;EACH,SAJQ,CAAT;EAKH,OAPD;EAAA;EAAA;EASH,KAbD,MAaO;EAAA;EAAA;EAEHiS,MAAAA,MAAM,GAAGmM,GAAT;EACH;;EAjCoB;EAmCrB,WAAOnM,MAAM,CAAC,CAAD,CAAN,IAAa,IAAb,gCAAoB,IAApB,iCAA2BA,MAAM,CAAC,CAAD,CAAjC,CAAP;EACH;;WAEDqH,kBAAA,yBAAgBpD,KAAhB,EAAuB;EAAA;EAEnB,QAAIjE,MAAM,6BAAG,EAAH,CAAV;EAFmB;;EAInB,SAAK,IAAIxP,CAAC,6BAAG,CAAH,CAAV,EAAgBA,CAAC,GAAGyT,KAAK,CAAC3R,MAA1B,EAAkC,EAAE9B,CAApC,EAAuC;EAEnC,UAAIuW,IAAI,6BAAG9C,KAAK,CAACzT,CAAD,CAAR,CAAR;EACA,UAAI6b,KAAK,6BAAG,EAAH,CAAT;EAHmC;;EAKnC,UAAI,OAAO,KAAKlG,aAAZ,KAA8B,UAAlC,EAA8C;EAAA;EAAA;EAE1CkG,QAAAA,KAAK,GAAG,KAAKlG,aAAL,CAAmBY,IAAnB,CAAR;EAEH,OAJD,MAIO;EAAA;EAAA;;EAEH,YAAIA,IAAI,CAAC7U,IAAT,EAAe;EAAA;EAAA;EACXma,UAAAA,KAAK,GAAGtF,IAAI,CAAC7U,IAAb;EACH,SAFD,MAEO;EAAA;EAAA;;EAAA,cAAI6U,IAAI,CAACsF,KAAT,EAAgB;EAAA;EAAA;EACnBA,YAAAA,KAAK,GAAGtF,IAAI,CAACsF,KAAb;EACH,WAFM,MAEA;EAAA;EAAA;;EAAA,gBAAItF,IAAI,CAAC+C,KAAT,EAAgB;EAAA;EAAA;EACnBuC,cAAAA,KAAK,GAAGtF,IAAI,CAAC+C,KAAb;EACH,aAFM;EAAA;EAAA;EAEN;EAAA;EACJ;;EAlBkC;EAoBnC9J,MAAAA,MAAM,CAACrO,IAAP,CAAYqQ,CAAC,sGAIqB,KAAK+D,IAJ1B,2DAMoB,KAAKA,IANzB,yDAQkB,KAAKA,IARvB,uBAQ2C,KAAK7T,IARhD,SAQwD+R,KAAK,CAACzT,CAAD,CAAL,CAASwW,EARjE,mBAQ+E/C,KAAK,CAACzT,CAAD,CAAL,CAASwW,EARxF,+EAUwB,KAAK9U,IAV7B,SAUqC+R,KAAK,CAACzT,CAAD,CAAL,CAASwW,EAV9C,gXAkBsB,KAAKjB,IAlB3B,iBAkByC,OAAO,KAAKI,aAAZ,KAA8B,UAA9B,gCAA2C,aAA3C,iCAA2D,EAA3D,CAlBzC,gDAmBakG,KAnBb,iMAAD,CA8BT1I,IA9BS,CA8BJoD,IA9BI,CAAZ;EA+BH;;EAvDkB;EAyDnB,WAAO/G,MAAP;EACH;;WAEDsH,gBAAA,yBAAgB;EAAA;EAAA;;EAEZ,QAAI,CAAC,KAAKpC,UAAV,EAAsB;EAAA;EAAA;EAElB,aAAO,EAAP;EAEH,KAJD,MAIO;EAAA;EAEH,UAAIwE,WAAW,6BAAG,KAAKrH,IAAL,CAAUwD,KAAV,gCAAkB,KAAlB,iCAA0B,KAA1B,CAAH,CAAf;EAFG;EAIH,+NAM4E,KAAKI,iBANjF,0JAYwByD,WAZxB;EAmBH;EACJ;;WAEDnC,gBAAA,yBAAgB;EAAA;EAAA;;EAEZ,QAAI,CAAC,KAAKL,UAAV,EAAsB;EAAA;EAAA;EAElB,aAAO,EAAP;EAEH,KAJD,MAIO;EAAA;EAAA;EAEH,sNAKc,KAAKhB,YALnB;EAWH;EACJ;;WAEMoG,mBAAP,0BAAwBC,MAAxB,EAAgC;EAAA;EAAA;EAE5B,WAAO,KAAKhE,IAAL,CAAU,YAAW;EAAA;EAExB,UAAI5E,IAAI,6BAAG3B,CAAC,CAAC,IAAD,CAAD,CAAQ2B,IAAR,CAAaZ,QAAb,CAAH,CAAR;;EACA,UAAMyJ,OAAO,6BAAG,oCAAOD,MAAP,KAAkB,QAAlB,kCAA8BA,MAA9B,CAAH,CAAb;;EAHwB;;EAKxB,UAAI,CAAC5I,IAAL,EAAW;EAAA;EAAA;EACPA,QAAAA,IAAI,GAAG,IAAIX,MAAJ,CAAW,IAAX,EAAiBwJ,OAAjB,CAAP;EADO;EAEPxK,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ2B,IAAR,CAAaZ,QAAb,EAAuBY,IAAvB;EACH,OAHD;EAAA;EAAA;;EALwB;;EAUxB,UAAI,OAAO4I,MAAP,KAAkB,QAAtB,EAAgC;EAAA;EAAA;;EAE5B,YAAI,OAAO5I,IAAI,CAAC4I,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EAAA;EAAA;EACrC,gBAAM,IAAIE,SAAJ,wBAAkCF,MAAlC,QAAN;EACH,SAFD;EAAA;EAAA;;EAF4B;EAM5B5I,QAAAA,IAAI,CAAC4I,MAAD,CAAJ;EACH,OAPD;EAAA;EAAA;EAQH,KAlBM,CAAP;EAmBH;;;IAvsCgBpK;;;;EA2sCrB,IAAI,OAAOH,CAAP,KAAa,WAAjB,EAA8B;EAAA;EAE1B;EACA,MAAM0K,kBAAkB,6BAAG1K,CAAC,CAACoB,EAAF,CAAKN,IAAL,CAAH,CAAxB;EAH0B;EAK1Bd,EAAAA,CAAC,CAACoB,EAAF,CAAKN,IAAL,IAAaE,MAAM,CAACsJ,gBAApB;EAL0B;EAM1BtK,EAAAA,CAAC,CAACoB,EAAF,CAAKN,IAAL,EAAW6J,WAAX,GAAyB3J,MAAzB;EAN0B;;EAQ1BhB,EAAAA,CAAC,CAACoB,EAAF,CAAKN,IAAL,EAAW8J,UAAX,GAAwB,YAAM;EAAA;EAAA;EAE1B5K,IAAAA,CAAC,CAACoB,EAAF,CAAKN,IAAL,IAAa4J,kBAAb;EAF0B;EAI1B,WAAO1J,MAAM,CAACsJ,gBAAd;EACH,GALD;;EAR0B;EAe1BtK,EAAAA,CAAC,CAACoB,EAAF,CAAKN,IAAL,EAAWO,QAAX,GAAsB;EAClBnR,IAAAA,IAAI,EAAE,EADY;EAElB6T,IAAAA,IAAI,EAAE,UAFY;EAGlBI,IAAAA,aAAa,EAAE,IAHG;EAIlBC,IAAAA,YAAY,EAAE,IAJI;EAKlBC,IAAAA,cAAc,EAAE,IALE;EAMlBzC,IAAAA,OAAO,EAAE,IANS;EAOlBkC,IAAAA,mBAAmB,EAAE,GAPH;EAQlBD,IAAAA,KAAK,EAAE,KARW;EASlB5B,IAAAA,KAAK,EAAE,EATW;EAUlBiB,IAAAA,UAAU,EAAE,KAVM;EAWlBgC,IAAAA,UAAU,EAAE,KAXM;EAYlBrC,IAAAA,SAAS,EAAE,KAZO;EAalBzC,IAAAA,MAAM,EAAE,IAbU;EAclBE,IAAAA,QAAQ,EAAE,IAdQ;EAelBC,IAAAA,SAAS,EAAE,IAfO;EAgBlBC,IAAAA,MAAM,EAAE,IAhBU;EAiBlBC,IAAAA,OAAO,EAAE,IAjBS;EAkBlBC,IAAAA,OAAO,EAAE,IAlBS;EAmBlBmK,IAAAA,QAAQ,EAAE,IAnBQ;EAoBlB/D,IAAAA,QAAQ,EAAE,IApBQ;EAqBlBrF,IAAAA,WAAW,EAAE,IArBK;EAsBlBwC,IAAAA,iBAAiB,EAAE,IAtBD;EAuBlBC,IAAAA,YAAY,EAAE,IAvBI;EAwBlBtD,IAAAA,KAAK,EAAE,KAxBW;EAyBlB4B,IAAAA,YAAY,EAAE,KAzBI;EA0BlBC,IAAAA,mBAAmB,EAAE,EA1BH;EA2BlBK,IAAAA,wBAAwB,EAAE,EA3BR;EA4BlByB,IAAAA,sBAAsB,EAAE,IA5BN;EA6BlBD,IAAAA,cAAc,EAAE,KA7BE;EA8BlBE,IAAAA,kBAAkB,EAAE,IA9BF;EA+BlBC,IAAAA,cAAc,EAAE,EA/BE;EAgClBE,IAAAA,cAAc,EAAE;EAhCE,GAAtB;EAkCH,CAjDD;EAAA;EAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"select.js","sources":["../src/util/perfect-scrollbar.js","../src/util/index.js","../src/abstract-ui-component.js","../src/select.js"],"sourcesContent":["/*!\n * perfect-scrollbar v1.4.0\n * (c) 2018 Hyunje Jun\n * @license MIT\n */\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n var this$1 = this;\n\n for (var name in this$1.handlers) {\n this$1.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nvar processScrollDiff = function(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n};\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nvar updateGeometry = function(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt(i.railXWidth * i.containerWidth / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n (i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt(i.railYHeight * i.containerHeight / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n roundedScrollTop *\n (i.railYHeight - i.scrollbarYHeight) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n};\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nvar clickRail = function(i) {\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n};\n\nvar dragThumb = function(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n};\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n startingScrollTop = element[scrollTop];\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nvar keyboard = function(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n};\n\nvar wheel = function(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n};\n\nvar touch = function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n var overflow = [style.overflow, style.overflowX, style.overflowY].join(\n ''\n );\n\n // if scrollable\n if (overflow.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n !(cursor.scrollTop === 0 && deltaY > 0) &&\n !(cursor.scrollTop === maxScrollTop && deltaY < 0)\n ) {\n return true;\n }\n }\n var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n !(cursor.scrollLeft === 0 && deltaX < 0) &&\n !(cursor.scrollLeft === maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n};\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this$1.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;","import 'jquery';\n\nconst debounce = function (func, wait, immediate) {\n\n\tlet timeout;\n\n\treturn function() {\n\n\t\tlet context = this;\n\t\tlet args = arguments;\n\t\tlet later = function() {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\t\t};\n\n\t\tlet callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n};\n\nconst shallowProperty = function(key) {\n\n\treturn function(obj) {\n\n\t\treturn obj == null ? void 0 : obj[key];\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\n\tlet length = shallowProperty('length');\n\n\treturn typeof length == 'number' && length >= 0 && length <= Math.pow(2, 53) - 1;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n\n if (context === void 0) {\n \treturn func;\n\t}\n\n\tswitch (argCount == null ? 3 : argCount) {\n\n\t\tcase 1: return function(value) {\n\t\t\treturn func.call(context, value);\n\t\t};\n\n\t\tcase 3: return function(value, index, collection) {\n\t\t\treturn func.call(context, value, index, collection);\n\t\t};\n\t\tcase 4: return function(accumulator, value, index, collection) {\n\t\t\treturn func.call(context, accumulator, value, index, collection);\n\t\t};\n\t}\n\n return function() {\n\t\treturn func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\n\titeratee = optimizeCb(iteratee, context);\n\n\tlet i;\n\tlet length;\n\n\tif (isArrayLike(obj)) {\n\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\n\t} else {\n\n\t\tlet keys = Object.keys(obj);\n\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\n\tlet result = false;\n\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\tresult = true;\n\t}\n\n\treturn result;\n};\n\n$.event.special.destroyed = {\n\n\tremove: function(obj) {\n\n\t\tif (obj.handler) {\n\t\t\tobj.handler();\n\t\t}\n\t}\n}\n\nexport {\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\n\t// Init callback\n onInit() {\n\n let onInit = this.opts.onInit;\n\n if (typeof onInit === 'function') {\n\n onInit.call(this);\n }\n }\n\n // Update callback\n onUpdate() {\n\n let onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n let onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this);\n }\n }\n\n // Show callback\n onShow() {\n\n let onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this);\n }\n }\n\n // Close callback\n onClose() {\n\n let onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this);\n }\n }\n\n // Reset callback\n onReset() {\n\n let onReset = this.opts.onReset;\n\n if (typeof onReset === 'function') {\n\n onReset.call(this);\n }\n }\n\n // Debug log\n log(...args) {\n\n \tif (this.debug) {\n\n if (typeof this.debug === 'function') {\n this.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import 'jquery';\nimport PerfectScrollbar from './util/perfect-scrollbar';\nimport { debounce, touchEvents } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolSelect';\nconst DATA_KEY = 'plugin_coolSelect';\n\nclass Select extends AbstractUIComponent {\n\n constructor(el, opts) {\n\n super();\n\n this.opts = {};\n\n if (window.Cool.settings.select) {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.select, opts);\n\n } else {\n\n $.extend(true, this.opts, $.fn[NAME].defaults, opts);\n }\n\n this.el = el;\n this.debug = this.opts.debug;\n this.init();\n }\n\n // Init plugin\n init() {\n\n this.buildCache().then(() => {\n\n this.buildScroll();\n this.bindEvents();\n\n if (this.data[this.name].length > 0) {\n this.setData();\n }\n\n this.onInit();\n });\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData(DATA_KEY);\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.bindEvents();\n this.onUpdate();\n }\n\n // Reset plugin data\n reset() {\n\n this.data = {};\n this.data[this.name] = [];\n this.items = [];\n this.$select.find('.select-item').remove();\n this.$selectItems = [];\n this.$selectIconContainer.html(this.selectIconDefault);\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.searchData = [];\n this.$searchInput.val('');\n this.searchString = '';\n this.search.call(this);\n }\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n\n return new Promise((primaryResolve, primaryReject) => {\n\n let self = this;\n\n this.$el = $(this.el);\n this.$container = this.$el.parent();\n this.$selectHeader = this.$el.find('.select-header');\n this.$selectTitle = this.$el.find('.select-title');\n this.$selectIconContainer = this.$selectHeader.find('.select-icon');\n this.selectIconDefault = this.$selectHeader.find('.select-icon') ? this.$selectHeader.find('.select-icon').html() : '<i class=\"'+(this.opts.faPro ? 'fal' : 'fas')+'fa-angle-down icon\"></i>';\n this.name = this.$el.data('name') ? this.$el.data('name') : this.opts.name;\n this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;\n this.items = this.$el.data('items') ? this.$el.data('items') : this.opts.items;\n this.data = {};\n this.data[this.name] = [];\n this.searchData = [];\n this.searchApi = this.$el.data('searchApi') ? this.$el.data('searchApi') : this.opts.searchApi;\n this.searchRequest = null;\n this.type = this.$el.data('type') ? this.$el.data('type') : this.opts.type;\n this.contentOpen = false;\n this.searchPlaceholder = this.$el.data('search-placeholder') ? this.$el.data('search-placeholder') : this.opts.searchPlaceholder;\n this.btnCloseText = this.$el.data('btn-close-text') ? this.$el.data('btn-close-text') : this.opts.btnCloseText;\n this.labelTemplate = this.opts.labelTemplate;\n this.confirmCheck = this.opts.confirmCheck;\n this.confirmUncheck = this.opts.confirmUncheck;\n this.preventUncheck = this.opts.preventUncheck;\n this.dynamicTitle = this.$el.data('dynamicTitle') ? this.$el.data('dynamicTitle') : this.opts.dynamicTitle;\n this.dynamicTitleDefault = this.$el.data('dynamicTitleDefault') ? this.$el.data('dynamicTitleDefault') : this.opts.dynamicTitleDefault;\n this.dynamicTitleEmptyDefault = this.$el.data('dynamicTitleEmptyDefault') ? this.$el.data('dynamicTitleEmptyDefault') : this.opts.dynamicTitleEmptyDefault;\n this.allowNoneOnRadioSelect = this.$el.data('allowNoneOnRadioSelect') ? this.$el.data('allowNoneOnRadioSelect') : this.opts.allowNoneOnRadioSelect;\n this.showValidStateIcon = this.$el.data('showValidStateIcon') ? this.$el.data('showValidStateIcon') : this.opts.showValidStateIcon;\n this.itemsToExclude = this.$el.data('itemsToExclude') ? this.$el.data('itemsToExclude').replace(/\\s/g, '').split(',') : this.opts.itemsToExclude;\n this.primaryKeyword = this.$el.data('primaryKeyword') ? this.$el.data('primaryKeyword') : this.opts.primaryKeyword;\n this.preventClose = false;\n\n if (this.itemsToExclude.length > 0) {\n this.itemsToExclude = this.itemsToExclude.map(Number);\n }\n\n if (this.opts.setData) {\n this.data = this.opts.setData;\n }\n\n if (this.$el.data('setData') && this.$el.data('setData') != '') {\n this.data = this.$el.data('setData');\n }\n\n if (this.data[this.name] !== 'undefined' && this.data[this.name].length > 0 && self.itemsToExclude) {\n\n this.data[this.name] = this.data[this.name].filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n }\n\n if (this.items !== 'undefined' && this.items.lengths > 0 && self.itemsToExclude) {\n\n this.items = this.items.filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n }\n\n if (this.$el.find('.select-search').length) {\n this.showSearch = true;\n } else {\n this.showSearch = this.$el.data('showSearch') ? this.$el.data('showSearch') : this.opts.showSearch;\n }\n\n if (this.$el.find('.select-footer').length) {\n this.showFooter = true;\n } else {\n this.showFooter = this.$el.data('showFooter') ? this.$el.data('showFooter') : this.opts.showFooter;\n }\n\n this.$select = this.$el.find('.select-content');\n\n new Promise((secondaryResolve, secondaryReject) => {\n\n if (!this.$select.length) {\n\n let items = this._renderItemList(this.items);\n\n this.$select = $(`\n <div class=\"select-content\">\n\n ${this._renderSearch()}\n\n <div class=\"select-scrollable-content\"></div>\n\n ${this._renderFooter()}\n\n </div>\n `);\n\n this.$el.append(this.$select);\n this.$select.find('.select-scrollable-content').append(items);\n\n secondaryResolve();\n\n } else {\n\n secondaryResolve();\n }\n\n }).then(() => {\n\n this.$scrollableContent = this.$select.find('.select-scrollable-content') ? this.$select.find('.select-scrollable-content') : false;\n this.$selectItems = this.$select.find('.select-item');\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectItems.length == 0 && !this.searchApi && this.dynamicTitle && this.dynamicTitleEmptyDefault && this.dynamicTitleEmptyDefault !== 0) {\n\n this.$selectHeader.css('cursor', 'default');\n this.$selectIconContainer.addClass('d-none');\n this.$selectTitle.html(this.dynamicTitleEmptyDefault);\n }\n\n if (this.showSearch) {\n\n this.$searchContainer = this.$select.find('.select-search');\n this.$searchInput = this.$select.find('[name=\"select-search\"]');\n this.$searchIconContainer = this.$select.find('.select-search-icon');\n this.$clearSearchButton = this.$select.find('[data-clear-search]');\n\n // Prevent tabfocus from breaking select functionality\n this.$searchInput[0].tabIndex = -1;\n }\n\n if (this.showFooter) {\n\n this.$footerContainer = this.$select.find('.select-footer');\n this.$closeButton = this.$select.find('[data-select-close]');\n\n // Prevent tabfocus from breaking select functionality\n this.$closeButton[0].tabIndex = -1;\n }\n\n this.buildSearchData();\n\n this.log(this.$el);\n this.log(this.$select);\n this.log(this.$scrollableContent);\n this.log('Name: '+this.name);\n this.log('Show search: '+this.showSearch);\n this.log('Show footer: '+this.showFooter);\n this.log('Scroll content height: '+this.scrollContentHeight+'px');\n this.log(this.items);\n this.log(this.searchData);\n\n primaryResolve();\n })\n });\n }\n\n // Build scroll\n buildScroll() {\n\n if (this.$scrollableContent.length > 0) {\n\n let scrollContentHeight = this.scrollContentHeight;\n\n if (this.showSearch) {\n scrollContentHeight = scrollContentHeight - (this.$searchContainer.outerHeight(true) || 0);\n }\n\n if (this.showFooter) {\n scrollContentHeight = scrollContentHeight - (this.$footerContainer.outerHeight(true) || 0);\n }\n\n this.$scrollableContent.css({\n 'max-height': (scrollContentHeight - parseInt(this.$scrollableContent.css('marginTop'), 10) - parseInt(this.$scrollableContent.css('marginBottom'), 10)) +'px'\n });\n\n if (touchEvents()) {\n\n this.$scrollableContent.css({\n 'overflow-y': 'auto'\n });\n\n } else {\n\n this.$scrollableContent.addClass('ps-dark');\n this.scroll = new PerfectScrollbar(this.$scrollableContent[0], {\n wheelSpeed: 1,\n wheelPropagation: false,\n minScrollbarLength: 20,\n scrollYMarginOffset : -1,\n suppressScrollY: true,\n suppressScrollX: true,\n });\n\n // Prevent tabfocus from breaking select functionality\n this.$scrollableContent.find('[tabindex=\"0\"]').attr('tabindex', -1);\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n\n this.$scrollableContent.addClass('ps-show-rail-y');\n this.scroll.settings.suppressScrollY = false;\n }\n }\n }\n }\n\n // Build search data\n buildSearchData() {\n\n return new Promise((resolve, reject) => {\n\n this.searchData = [];\n\n let selectLabels = this.$select.find('[data-label]');\n\n $.each(selectLabels, (i, el) => {\n\n this.searchData.push({\n id: i,\n val: $(el).text().trim()\n });\n });\n\n resolve();\n });\n }\n\n // Bind events that trigger methods\n bindEvents() {\n\n let self = this;\n\n this.$selectHeader.on('click'+'.'+NAME, () => {\n\n if (this.contentOpen) {\n this.close();\n } else if (this.$selectItems.length > 0 || this.searchApi) {\n this.show();\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"checkbox\"]', function() {\n\n let el = this;\n let val = $(this).val();\n let closeTimeout = 600; // ms\n\n self.preventClose = true;\n\n if (typeof self.confirmCheck === 'function' && el.checked) {\n\n el.checked = false;\n\n self.confirmCheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n el.checked = true;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (el.checked) {\n\n self.data[self.name].indexOf(val) === -1 ? self.data[self.name].push(val) : false;\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (typeof self.confirmUncheck === 'function' && !el.checked) {\n\n el.checked = true;\n\n self.confirmUncheck((cb) => {\n\n if (cb == 'confirmed') {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n el.checked = false;\n self.onSelect(el);\n }\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }, el);\n\n } else if (!el.checked && !self.preventUncheck) {\n\n self.data[self.name] = self.data[self.name].filter(n => n != val);\n self.onSelect(el);\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n\n } else if (!el.checked && self.preventUncheck) {\n\n el.checked = true;\n\n setTimeout(function() {\n self.preventClose = false;\n }, closeTimeout);\n }\n });\n\n this.$el.on('change'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n let val = $(this).val();\n\n if (this.checked) {\n\n self.data[self.name] = val;\n self.$select.find('input[type=\"radio\"]').not($(this)).prop('checked', false);\n self.$select.find('input[type=\"radio\"]').not($(this)).removeClass('checked');\n\n } else {\n\n self.data[self.name] = [];\n }\n });\n\n this.$el.on('click'+'.'+NAME, 'input[type=\"radio\"]', function() {\n\n if ($(this).hasClass('checked') && self.allowNoneOnRadioSelect) {\n\n self.data[self.name] = [];\n $(this).prop('checked', false);\n $(this).removeClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html(self.dynamicTitleDefault);\n }\n\n } else {\n\n $(this).addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($(this).parent().find('[data-label]').text());\n }\n }\n\n self.onSelect(this);\n });\n\n if (this.scroll) {\n\n this.$scrollableContent.find('.ps__thumb-y').mousedown(function() {\n self.$scrollableContent.addClass('ps-mousedown-scroll');\n });\n\n $(document).mouseup(function() {\n\n if (self.$scrollableContent.hasClass('ps-mousedown-scroll')) {\n self.$scrollableContent.removeClass('ps-mousedown-scroll');\n }\n });\n }\n\n if (this.showSearch) {\n\n this.$searchInput.on('keydown'+'.'+NAME, debounce(function () {\n\n self.searchString = $(this).val().trim();\n self.search.call(self);\n\n }, 250));\n\n this.$searchInput.on('focusin'+'.'+NAME, function () {\n\n self.$searchContainer.addClass('focused');\n });\n\n this.$searchInput.on('focusout'+'.'+NAME, function () {\n\n self.$searchContainer.removeClass('focused');\n });\n\n this.$searchContainer.on('click'+'.'+NAME, '[data-clear-search]', function () {\n\n if (self.searchString.length) {\n\n self.$searchInput.val('');\n self.searchString = '';\n self.search.call(self);\n\n } else {\n\n return;\n }\n });\n }\n\n if (this.showFooter) {\n\n this.$closeButton.on('click'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(document).on('touchstart click', function(e) {\n\n if (!self.$el.is(e.target) && !self.$el.has(e.target).length && self.contentOpen && !self.preventClose) {\n\n self.close.call(self);\n }\n });\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Get data\n getData(data) {\n\n if (data) {\n return this.data[data];\n } else {\n return this.data;\n }\n }\n\n // Set data\n setData() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.searchApi.length) {\n\n let searchUrl = this.searchApi;\n let itemCount = this.data[this.name].length;\n let currentCount = 0;\n\n this.data[this.name].forEach(function(value) {\n\n searchUrl += encodeURIComponent('#'+value);\n currentCount++;\n\n if (currentCount !== itemCount) {\n searchUrl += '+';\n }\n });\n\n $.ajax({\n method: 'GET',\n url: searchUrl\n }).done(function(data) {\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n let itemIds = items.map(item => {\n return parseInt(item.id, 10);\n });\n\n // Remove value from data if it doesn't exist anymore\n self.data[self.name] = self.data[self.name].filter(function(value) {\n return itemIds.indexOf(parseInt(value, 10)) > -1;\n });\n\n if (self.data[self.name].length == 0) {\n self.$selectIconContainer.html(self.selectIconDefault);\n }\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) > -1 && self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1 && parseInt(item.id, 10) > 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let $inputs = self.$scrollableContent.find(':input');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n\n if (self.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n self.type = 'checkbox';\n } else if (self.$scrollableContent.find(':input[type=\"radio\"]').length) {\n self.type = 'radio';\n }\n\n if (self.type == 'checkbox') {\n\n self.data[self.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() { return this.value == value });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (self.type == 'radio') {\n\n let $input = $inputs.filter(function() { return this.value == self.data[self.name] });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (self.dynamicTitle) {\n self.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n self.onSelect($input[0]);\n }\n });\n });\n\n } else {\n\n // Remove value from data if it doesn't exist anymore\n let $inputs = this.$scrollableContent.find(':input');\n let inputValues = $inputs.length > 0 ? $inputs.map(function() {\n return parseInt(this.value, 10);\n }).get() : [];\n\n this.data[this.name] = this.data[this.name].filter(function(value) {\n return inputValues.indexOf(parseInt(value, 10)) > -1;\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n if (this.$scrollableContent.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$scrollableContent.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n this.data[this.name].forEach(function(value) {\n\n let $input = $inputs.filter(function() {\n return this.value == value\n });\n\n $input.prop('checked', true);\n\n self.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let $input = $inputs.filter(function() {\n return this.value == self.data[self.name]\n });\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.onSelect($input[0]);\n }\n }\n }\n\n // Search\n search() {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if (this.searchString.length) {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n\n if (this.searchRequest !== null) {\n this.searchRequest.abort();\n }\n\n this.searchRequest = $.ajax({\n method: 'GET',\n url: this.searchApi + this.searchString\n }).done(function(data) {\n\n self.searchRequest = null;\n\n let items = data.map(item => {\n\n item.id = item[self.primaryKeyword].toString();\n\n return item;\n });\n\n items = items.filter(function(item) {\n return self.data[self.name].indexOf(item.id) === -1 && self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1 && parseInt(item.id, 10) > 0;\n });\n\n let result = self._renderItemList(items);\n\n $.when(self.$scrollableContent.append(result)).then(function() {\n\n let faNameSpace = self.opts.faPro ? 'fal' : 'fas';\n\n self.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n self.$searchIconContainer.attr('data-clear-search', 'true');\n\n if (self.$scrollableContent[0].offsetHeight < self.$scrollableContent[0].scrollHeight) {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = false;\n self.$scrollableContent.addClass('ps-show-rail-y');\n\n } else {\n\n self.scroll.update();\n self.scroll.settings.suppressScrollY = true;\n self.$scrollableContent.removeClass('ps-show-rail-y');\n }\n });\n });\n\n } else {\n\n let results = this.searchData.filter(function(item) {\n return item.val.toLocaleLowerCase().indexOf(self.searchString.toLocaleLowerCase()) > -1;\n });\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n\n results.forEach(function(item) {\n $(self.$selectItems[item.id]).addClass('visible');\n });\n\n this.$selectItems.not('.visible').addClass('d-none');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-times icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', 'true');\n }\n\n } else {\n\n if (this.searchApi.length) {\n\n this.$scrollableContent.find('input:not(:checked)').parents('.select-item').not('.static-item').remove();\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n\n } else {\n\n this.$selectItems.removeClass('d-none');\n this.$selectItems.removeClass('visible');\n this.$searchIconContainer.html(`<i class=\"${faNameSpace} fa-search icon\"></i>`);\n this.$searchIconContainer.attr('data-clear-search', '');\n }\n }\n\n if (this.scroll) {\n this.scroll.update();\n }\n\n this.onUpdate();\n }\n\n // Show\n show() {\n\n if (this.$el.hasClass('show')) {\n return;\n }\n\n let $otherSelects = $('.select.show');\n let zindex = 1;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n if ($otherSelects.length) {\n zindex = parseInt($otherSelects.first().css('z-index'), 10) + 2;\n }\n\n this.$el.css({\n 'max-height': (this.scrollContentHeight + this.$selectHeader.outerHeight(true))+'px'\n });\n\n this.$el.addClass('show');\n\n if (!$otherSelects.length) {\n zindex = parseInt(this.$el.css('z-index'), 10) + 1;\n }\n\n this.$el.css({\n 'z-index': zindex\n });\n\n if (this.scroll && this.$scrollableContent.length) {\n\n if (this.$scrollableContent[0].offsetHeight < this.$scrollableContent[0].scrollHeight) {\n this.$scrollableContent[0].scrollTop = 1;\n this.$scrollableContent[0].scrollTop = 0;\n }\n }\n\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-angle-up icon\"></i>`);\n\n setTimeout(() => {\n this.$el[0].scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'nearest'});\n }, 300);\n\n this.contentOpen = true;\n this.onShow();\n }\n\n // Close\n close() {\n\n if (!this.preventClose) {\n\n let self = this;\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n this.$el.css('max-height', '');\n this.$el.removeClass('show');\n\n setTimeout(() => {\n self.$el.removeAttr('style');\n }, 300);\n\n if (this.data[this.name].length > 0 && this.showValidStateIcon) {\n this.$selectIconContainer.html(`<i class=\"${faNameSpace} fa-check text-green icon\"></i>`);\n } else {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n\n this.contentOpen = false;\n this.onClose();\n }\n }\n\n // On select\n onSelect(el) {\n\n let self = this;\n let onSelect = this.opts.onSelect;\n let data = $(el).parents('.select-item').data();\n\n if (this.searchApi.length && !$.isEmptyObject(data)) {\n\n if ($(el).length && el.checked) {\n\n this.items.push(data);\n\n } else {\n\n this.items = $.grep(this.items, function(item) { return item[self.primaryKeyword] != data.id });\n }\n }\n\n if (typeof onSelect === 'function') {\n\n onSelect.call(el, data, this);\n }\n }\n\n // Add more items after plugin is already initialized\n appendItems(items, selectItems) {\n\n return new Promise((resolve, reject) => {\n\n let self = this;\n\n if (!$.isArray(items)) {\n\n let itemsArr = [];\n\n itemsArr.push(items);\n items = itemsArr;\n }\n\n items = items.filter(function(item) {\n return self.itemsToExclude.indexOf(parseInt(item.id, 10)) === -1;\n });\n\n items.forEach(item => {\n\n this.items.push(item);\n });\n\n let domItems = this._renderItemList(items);\n\n this.$scrollableContent.prepend(domItems);\n this.$selectItems = this.$select.find('.select-item');\n\n this.buildSearchData().then(() => {\n\n if (this.$selectItems.length > 0) {\n\n if (this.$select.find(':input[type=\"checkbox\"]').length) {\n this.type = 'checkbox';\n } else if (this.$select.find(':input[type=\"radio\"]').length) {\n this.type = 'radio';\n }\n\n if (this.type == 'checkbox') {\n\n items.forEach(item => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = parseInt($input.val(), 10);\n\n $input.prop('checked', true);\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name].push(val) : false;\n this.onSelect($input[0]);\n });\n\n } else if (this.type == 'radio') {\n\n let item = items[0];\n let $input = this.$select.find(':input').filter(function() { return this.value == item.id });\n let val = parseInt($input.val(), 10);\n\n $input.prop('checked', true);\n $input.addClass('checked');\n\n this.data[this.name].indexOf(val) === -1 ? this.data[this.name] = [val] : false;\n\n if (this.dynamicTitle) {\n this.$selectTitle.html($input.parent().find('[data-label]').text());\n }\n\n this.$select.find('input[type=\"radio\"]').not($input).prop('checked', false);\n this.$select.find('input[type=\"radio\"]').not($input).removeClass('checked');\n this.onSelect($input[0]);\n }\n }\n\n if (this.data[this.name].length == 0 &&\n this.dynamicTitle &&\n this.dynamicTitleDefault &&\n this.dynamicTitleDefault !== 0 &&\n this.$selectTitle.text().trim() == 0 &&\n (this.$selectItems.length > 0 || this.searchApi)) {\n\n this.$selectTitle.html(this.dynamicTitleDefault);\n }\n\n if (this.$selectHeader.attr('style')) {\n this.$selectHeader.removeAttr('style');\n }\n\n if (this.$selectIconContainer.hasClass('d-none')) {\n this.$selectIconContainer.removeClass('d-none');\n }\n\n resolve();\n });\n });\n }\n\n // Deselect items\n deselectItems(array) {\n\n return new Promise((resolve, reject) => {\n\n array.forEach(id => {\n\n let $input = this.$select.find(':input').filter(function() { return this.value == id });\n\n if ($input[0].checked) {\n\n $input.trigger('click');\n }\n });\n\n if (this.data[this.name].length == 0) {\n this.$selectIconContainer.html(this.selectIconDefault);\n }\n });\n }\n\n // Get item\n getItem(key, val) {\n\n let result = $.grep(this.items, function(item) { return item[key] == val })[0];\n\n return result ? result : null;\n }\n\n // Get selected items\n getSelectedItems(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(Number);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(parseInt(item.id, 10)) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result;\n }\n\n // Get selected item\n getSelectedItem(segment) {\n\n let ids = [];\n let result = [];\n let data = this.data[this.name];\n\n if (!$.isArray(data)) {\n\n ids.push(data);\n\n } else {\n\n ids = data;\n }\n\n ids = ids.map(Number);\n\n if (this.items.length > 0) {\n\n result = $.grep(this.items, function(item) { return ids.indexOf(parseInt(item.id, 10)) > -1 });\n\n if (segment) {\n\n result = result.map(obj => {\n return obj[segment];\n }).filter(obj => {\n return obj != null;\n });\n }\n\n } else {\n\n result = ids;\n }\n\n return result[0] == null ? null : result[0];\n }\n\n _renderItemList(items) {\n\n let result = [];\n\n for (let i = 0; i < items.length; ++i) {\n\n let item = items[i];\n let label = '';\n\n if (typeof this.labelTemplate === 'function') {\n\n label = this.labelTemplate(item);\n\n } else {\n\n if (item.name) {\n label = item.name;\n } else if (item.label) {\n label = item.label;\n } else if (item.value) {\n label = item.value;\n }\n }\n\n result.push($(`\n\n <div class=\"select-item\">\n\n <div class=\"select-item-${this.type}\">\n\n <div class=\"styled-${this.type}\">\n\n <input type=\"${this.type}\" id=\"select-${this.name}-${items[i].id}\" value=\"${items[i].id}\" tabindex=\"-1\">\n\n <label for=\"select-${this.name}-${items[i].id}\">\n\n <span class=\"radio-inner\">\n <svg viewBox=\"0 0 18 18\">\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n </svg>\n </span>\n\n <span class=\"${this.type}-label\"${typeof this.labelTemplate !== 'function' ? ' data-label' : ''}>\n ${label}\n </span>\n\n </label>\n\n </div>\n\n </div>\n\n </div>\n\n `).data(item));\n }\n\n return result;\n }\n\n _renderSearch() {\n\n if (!this.showSearch) {\n\n return '';\n\n } else {\n\n let faNameSpace = this.opts.faPro ? 'fal' : 'fas';\n\n return `\n\n <div class=\"select-search\">\n\n <div class=\"select-search-input\">\n\n <input type=\"text\" name=\"select-search\" value=\"\" placeholder=\"${this.searchPlaceholder}\" tabindex=\"-1\">\n\n </div>\n\n <div class=\"select-search-icon\">\n\n <i class=\"${faNameSpace} fa-search icon\"></i>\n\n </div>\n\n </div>\n\n `;\n }\n }\n\n _renderFooter() {\n\n if (!this.showFooter) {\n\n return '';\n\n } else {\n\n return `\n\n <div class=\"select-footer\">\n\n <button class=\"btn btn-block btn-secondary\" type=\"button\" tabindex=\"-1\" data-select-close >\n ${this.btnCloseText}\n </button>\n\n </div>\n\n `;\n }\n }\n\n static _jQueryInterface(config) {\n\n return this.each(function() {\n\n let data = $(this).data(DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Select(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n });\n }\n\n}\n\nif (typeof $ !== 'undefined') {\n\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n\n $.fn[NAME] = Select._jQueryInterface;\n $.fn[NAME].Constructor = Select;\n\n $.fn[NAME].noConflict = () => {\n\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n\n return Select._jQueryInterface;\n }\n\n $.fn[NAME].defaults = {\n name: '',\n type: 'checkbox',\n labelTemplate: null,\n confirmCheck: null,\n confirmUncheck: null,\n setData: null,\n scrollContentHeight: 100,\n faPro: false,\n items: [],\n showSearch: false,\n showFooter: false,\n searchApi: false,\n onInit: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n onReset: null,\n onSearch: null,\n onSelect: null,\n buildScroll: null,\n searchPlaceholder: null,\n btnCloseText: null,\n debug: false,\n dynamicTitle: false,\n dynamicTitleDefault: '',\n dynamicTitleEmptyDefault: '',\n allowNoneOnRadioSelect: true,\n preventUncheck: false,\n showValidStateIcon: true,\n itemsToExclude: [],\n primaryKeyword: 'id'\n }\n}\n\nexport default Select;"],"names":["get","element","getComputedStyle","set","obj","key","val","style","div","className","document","createElement","elMatches","Element","prototype","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","filter","children","child","cls","main","thumb","x","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","i","classList","contains","clearTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","setScrollingClassInstantly","EventElement","handlers","prototypeAccessors","isEmpty","configurable","bind","eventName","handler","push","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","name","Object","keys","every","length","defineProperties","EventManager","eventElements","eventElement","ee","splice","indexOf","forEach","e","once","onceHandler","evt","createEvent","window","CustomEvent","initCustomEvent","undefined","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","processScrollDiff$1","ref","contentHeight","containerHeight","scrollTop","up","down","reach","dispatchEvent","toInt","parseInt","isEditable","el","outerWidth","styles","width","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","Math","floor","containerWidth","clientWidth","clientHeight","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","updateCss","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","xRailOffset","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","height","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","clickRail","event","stopPropagation","positionTop","pageY","pageYOffset","getBoundingClientRect","direction","positionLeft","pageX","pageXOffset","dragThumb","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","preventDefault","mouseUpHandler","ownerDocument","keyboard","elementHovered","scrollbarFocused","shouldPreventDefault","deltaX","deltaY","wheelPropagation","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","wheel","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","hitsBound","abs","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","shouldBeConsumedByChild","querySelector","cursor","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","mousewheelHandler","shouldPrevent","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","touch","magnitudeX","magnitudeY","scrollY","applyTouchMove","differenceX","differenceY","startOffset","startTime","speed","easingLoop","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","touchStart","Date","getTime","clearInterval","touchMove","currentOffset","currentTime","timeGap","touchEnd","swipeEasing","setInterval","isInitialized","PointerEvent","MSPointerEvent","defaultSettings","PerfectScrollbar","userSettings","nodeName","blur","isNegativeScroll","originalScrollLeft","result","setAttribute","railXStyle","isNaN","display","marginLeft","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","touchEvents","$","special","destroyed","AbstractUIComponent","onInit","opts","onUpdate","onDestroy","onShow","onClose","onReset","log","debug","console","NAME","DATA_KEY","Select","Cool","select","extend","fn","defaults","init","buildCache","then","buildScroll","bindEvents","data","setData","unbindEvents","$el","removeData","reset","items","$select","find","$selectItems","$selectIconContainer","html","selectIconDefault","dynamicTitle","dynamicTitleDefault","$selectTitle","text","trim","searchApi","dynamicTitleEmptyDefault","$selectHeader","css","addClass","showSearch","searchData","$searchInput","searchString","search","Promise","primaryResolve","primaryReject","self","$container","parent","faPro","scrollContentHeight","searchRequest","type","contentOpen","searchPlaceholder","btnCloseText","labelTemplate","confirmCheck","confirmUncheck","preventUncheck","allowNoneOnRadioSelect","showValidStateIcon","itemsToExclude","replace","primaryKeyword","preventClose","map","Number","item","id","lengths","showFooter","secondaryResolve","secondaryReject","_renderItemList","_renderSearch","_renderFooter","append","$scrollableContent","$searchContainer","$searchIconContainer","$clearSearchButton","tabIndex","$footerContainer","$closeButton","buildSearchData","outerHeight","scroll","attr","resolve","reject","selectLabels","each","on","close","show","closeTimeout","checked","cb","onSelect","n","not","prop","removeClass","hasClass","mousedown","mouseup","is","has","off","getData","faNameSpace","searchUrl","itemCount","currentCount","value","encodeURIComponent","ajax","method","url","done","toString","itemIds","when","$inputs","$input","inputValues","parents","abort","results","toLocaleLowerCase","$otherSelects","zindex","first","scrollIntoView","behavior","block","inline","removeAttr","isEmptyObject","grep","appendItems","selectItems","isArray","itemsArr","domItems","prepend","deselectItems","array","trigger","getItem","getSelectedItems","segment","ids","getSelectedItem","label","_jQueryInterface","config","_config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict","onSearch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|