UNPKG

92.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-perfect-scrollbar.umd.js","sources":["../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/lib/perfect-scrollbar.interfaces.ts","../src/lib/perfect-scrollbar.directive.ts","../src/lib/perfect-scrollbar.component.ts","../src/lib/perfect-scrollbar.module.ts"],"sourcesContent":["/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = (function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n\n return true;\n }\n\n return false;\n });\n\n return result;\n }\n\n return (function () {\n function anonymous() {\n this.__entries__ = [];\n }\n\n var prototypeAccessors = { size: { configurable: true } };\n\n /**\r\n * @returns {boolean}\r\n */\n prototypeAccessors.size.get = function () {\n return this.__entries__.length;\n };\n\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n anonymous.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n\n return entry && entry[1];\n };\n\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n anonymous.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n\n /**\r\n * @returns {void}\r\n */\n anonymous.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n anonymous.prototype.forEach = function (callback, ctx) {\n var this$1 = this;\n if ( ctx === void 0 ) ctx = null;\n\n for (var i = 0, list = this$1.__entries__; i < list.length; i += 1) {\n var entry = list[i];\n\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n Object.defineProperties( anonymous.prototype, prototypeAccessors );\n\n return anonymous;\n }());\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = (function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = (function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\n})();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nvar throttle = function (callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n};\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = function() {\n this.connected_ = false;\n this.mutationEventsAdded_ = false;\n this.mutationsObserver_ = null;\n this.observers_ = [];\n\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n};\n\n/**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n/**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n/**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\nResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n};\n\n/**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n};\n\n/**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n};\n\n/**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\nResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\n\n return activeObservers.length > 0;\n};\n\n/**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n};\n\n/**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n};\n\n/**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.onTransitionEnd_ = function (ref) {\n var propertyName = ref.propertyName; if ( propertyName === void 0 ) propertyName = '';\n\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n};\n\n/**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\nResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n};\n\nResizeObserverController.instance_ = null;\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = (function (target, props) {\n for (var i = 0, list = Object.keys(props); i < list.length; i += 1) {\n var key = list[i];\n\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = (function (target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n});\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [], len = arguments.length - 1;\n while ( len-- > 0 ) positions[ len ] = arguments[ len + 1 ];\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n\n return size + toFloat(value);\n }, 0);\n}\n\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var i = 0, list = positions; i < list.length; i += 1) {\n var position = list[i];\n\n var value = styles['padding-' + position];\n\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth;\n var clientHeight = target.clientHeight;\n\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the <html> itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = (function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\n }\n\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function'; };\n})();\n\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(ref) {\n var x = ref.x;\n var y = ref.y;\n var width = ref.width;\n var height = ref.height;\n\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x, y: y, width: width, height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n\n return rect;\n}\n\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return { x: x, y: y, width: width, height: height };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = function(target) {\n this.broadcastWidth = 0;\n this.broadcastHeight = 0;\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n\n this.target = target;\n};\n\n/**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n/**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n\n/**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\nResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n\n this.contentRect_ = rect;\n\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n};\n\n/**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\nResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n\n return rect;\n};\n\nvar ResizeObserverEntry = function(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, { target: target, contentRect: contentRect });\n};\n\nvar ResizeObserverSPI = function(callback, controller, callbackCtx) {\n this.activeObservations_ = [];\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n};\n\n/**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\n\n\n/**\r\n * Public ResizeObserver instance which will be passed to the callback\r\n * function and used as a value of it's \"this\" binding.\r\n *\r\n * @private {ResizeObserver}\r\n */\n\n/**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\nResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n\n this.controller_.addObserver(this);\n\n // Force the update of observations.\n this.controller_.refresh();\n};\n\n/**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n};\n\n/**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n};\n\n/**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.gatherActive = function () {\n var this$1 = this;\n\n this.clearActive();\n\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n this$1.activeObservations_.push(observation);\n }\n });\n};\n\n/**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_;\n\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n};\n\n/**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n};\n\n/**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\nResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n};\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = function(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n\n observers.set(this, observer);\n};\n\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n return (ref = observers.get(this))[method].apply(ref, arguments);\n var ref;\n };\n});\n\nvar index = (function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n})();\n\nexport default index;\n","import { InjectionToken } from '@angular/core';\n\nexport const PERFECT_SCROLLBAR_CONFIG = new InjectionToken('PERFECT_SCROLLBAR_CONFIG');\n\nexport class Geometry {\n public x: number;\n public y: number;\n\n public w: number;\n public h: number;\n\n constructor(x: number, y: number, w: number, h: number) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\n\nexport class Position {\n public x: number | 'start' | 'end';\n public y: number | 'start' | 'end';\n\n constructor(x: number | 'start' | 'end', y: number | 'start' | 'end') {\n this.x = x;\n this.y = y;\n }\n}\n\nexport type PerfectScrollbarEvent = 'psScrollY' | 'psScrollX' | 'psScrollUp'| 'psScrollDown' |\n 'psScrollLeft' | 'psScrollRight' | 'psYReachEnd' | 'psYReachStart' | 'psXReachEnd' | 'psXReachStart';\n\nexport const PerfectScrollbarEvents: PerfectScrollbarEvent[] = [\n 'psScrollY',\n 'psScrollX',\n\n 'psScrollUp',\n 'psScrollDown',\n 'psScrollLeft',\n 'psScrollRight',\n\n 'psYReachEnd',\n 'psYReachStart',\n 'psXReachEnd',\n 'psXReachStart'\n];\n\nexport interface PerfectScrollbarConfigInterface {\n handlers?: string[];\n\n wheelSpeed?: number;\n swipeEasing?: boolean;\n\n suppressScrollX?: boolean;\n suppressScrollY?: boolean;\n\n wheelPropagation?: boolean;\n useBothWheelAxes?: boolean;\n\n scrollingThreshold?: number;\n\n minScrollbarLength?: number;\n maxScrollbarLength?: number;\n\n scrollXMarginOffset?: number;\n scrollYMarginOffset?: number;\n}\n\nexport class PerfectScrollbarConfig implements PerfectScrollbarConfigInterface {\n public handlers?: string[];\n\n public wheelSpeed?: number;\n public swipeEasing?: boolean;\n\n public suppressScrollX?: boolean;\n public suppressScrollY?: boolean;\n\n public wheelPropagation?: boolean;\n public useBothWheelAxes?: boolean;\n\n public scrollingThreshold?: number;\n\n public minScrollbarLength?: number;\n public maxScrollbarLength?: number;\n\n public scrollXMarginOffset?: number;\n public scrollYMarginOffset?: number;\n\n constructor(config: PerfectScrollbarConfigInterface = {}) {\n this.assign(config);\n }\n\n public assign(config: PerfectScrollbarConfigInterface = {}) {\n for (const key in config) {\n this[key as keyof PerfectScrollbarConfig] = config[key as keyof PerfectScrollbarConfigInterface];\n }\n }\n}\n","import PerfectScrollbar from 'perfect-scrollbar';\n\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport { Subject, fromEvent } from 'rxjs';\n\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\nimport { PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { NgZone, Inject, Optional, ElementRef, Directive,\n OnInit, DoCheck, OnChanges, OnDestroy, Input, Output, EventEmitter,\n SimpleChanges, KeyValueDiffer, KeyValueDiffers } from '@angular/core';\n\nimport { Geometry, Position } from './perfect-scrollbar.interfaces';\n\nimport { PERFECT_SCROLLBAR_CONFIG, PerfectScrollbarConfig, PerfectScrollbarConfigInterface,\n PerfectScrollbarEvent, PerfectScrollbarEvents } from './perfect-scrollbar.interfaces';\n\n@Directive({\n selector: '[perfectScrollbar]',\n exportAs: 'ngxPerfectScrollbar'\n})\nexport class PerfectScrollbarDirective implements OnInit, OnDestroy, DoCheck, OnChanges {\n private instance: PerfectScrollbar | null = null;\n\n private ro: ResizeObserver | null = null;\n\n private timeout: number | null = null;\n private animation: number | null = null;\n\n private configDiff: KeyValueDiffer<string, any> | null = null;\n\n private readonly ngDestroy: Subject<void> = new Subject();\n\n @Input() disabled: boolean = false;\n\n @Input('perfectScrollbar') config?: PerfectScrollbarConfigInterface;\n\n @Output() psScrollY: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollX: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() psScrollUp: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollDown: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollLeft: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollRight: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() psYReachEnd: EventEmitter<any> = new EventEmitter<any>();\n @Output() psYReachStart: EventEmitter<any> = new EventEmitter<any>();\n @Output() psXReachEnd: EventEmitter<any> = new EventEmitter<any>();\n @Output() psXReachStart: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(private zone: NgZone, private differs: KeyValueDiffers,\n public elementRef: ElementRef, @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(PERFECT_SCROLLBAR_CONFIG) private defaults: PerfectScrollbarConfigInterface) {}\n\n ngOnInit(): void {\n if (!this.disabled && isPlatformBrowser(this.platformId)) {\n const config = new PerfectScrollbarConfig(this.defaults);\n\n config.assign(this.config); // Custom configuration\n\n this.zone.runOutsideAngular(() => {\n this.instance = new PerfectScrollbar(this.elementRef.nativeElement, config);\n });\n\n if (!this.configDiff) {\n this.configDiff = this.differs.find(this.config || {}).create();\n\n this.configDiff.diff(this.config || {});\n }\n\n this.zone.runOutsideAngular(() => {\n this.ro = new ResizeObserver(() => {\n this.update();\n });\n\n if (this.elementRef.nativeElement.children[0]) {\n this.ro.observe(this.elementRef.nativeElement.children[0]);\n }\n\n this.ro.observe(this.elementRef.nativeElement);\n });\n\n this.zone.runOutsideAngular(() => {\n PerfectScrollbarEvents.forEach((eventName: PerfectScrollbarEvent) => {\n const eventType = eventName.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);\n\n fromEvent<Event>(this.elementRef.nativeElement, eventType)\n .pipe(\n debounceTime(20),\n takeUntil(this.ngDestroy)\n )\n .subscribe((event: Event) => {\n this[eventName].emit(event);\n });\n });\n });\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.complete();\n\n if (this.ro) {\n this.ro.disconnect();\n }\n\n if (this.timeout && typeof window !== 'undefined') {\n window.clearTimeout(this.timeout);\n }\n\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.destroy();\n }\n });\n\n this.instance = null;\n }\n }\n\n ngDoCheck(): void {\n if (!this.disabled && this.configDiff && isPlatformBrowser(this.platformId)) {\n const changes = this.configDiff.diff(this.config || {});\n\n if (changes) {\n this.ngOnDestroy();\n\n this.ngOnInit();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].isFirstChange() && isPlatformBrowser(this.platformId)) {\n if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {\n if (changes['disabled'].currentValue === true) {\n this.ngOnDestroy();\n } else if (changes['disabled'].currentValue === false) {\n this.ngOnInit();\n }\n }\n }\n }\n\n public ps(): PerfectScrollbar | null {\n return this.instance;\n }\n\n public update(): void {\n if (typeof window !== 'undefined') {\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n }\n\n this.timeout = window.setTimeout(() => {\n if (!this.disabled && this.configDiff) {\n try {\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.update();\n }\n });\n } catch (error) {\n // Update can be finished after destroy so catch errors\n }\n }\n }, 0);\n }\n }\n\n public geometry(prefix: string = 'scroll'): Geometry {\n return new Geometry(\n this.elementRef.nativeElement[prefix + 'Left'],\n this.elementRef.nativeElement[prefix + 'Top'],\n this.elementRef.nativeElement[prefix + 'Width'],\n this.elementRef.nativeElement[prefix + 'Height']\n );\n }\n\n public position(absolute: boolean = false): Position {\n if (!absolute && this.instance) {\n return new Position(\n this.instance.reach.x || 0,\n this.instance.reach.y || 0\n );\n } else {\n return new Position(\n this.elementRef.nativeElement.scrollLeft,\n this.elementRef.nativeElement.scrollTop\n );\n }\n }\n\n public scrollable(direction: string = 'any'): boolean {\n const element = this.elementRef.nativeElement;\n\n if (direction === 'any') {\n return element.classList.contains('ps--active-x') ||\n element.classList.contains('ps--active-y');\n } else if (direction === 'both') {\n return element.classList.contains('ps--active-x') &&\n element.classList.contains('ps--active-y');\n } else {\n return element.classList.contains('ps--active-' + direction);\n }\n }\n\n public scrollTo(x: number, y?: number, speed?: number): void {\n if (!this.disabled) {\n if (y == null && speed == null) {\n this.animateScrolling('scrollTop', x, speed);\n } else {\n if (x != null) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n\n if (y != null) {\n this.animateScrolling('scrollTop', y, speed);\n }\n }\n }\n }\n\n public scrollToX(x: number, speed?: number): void {\n this.animateScrolling('scrollLeft', x, speed);\n }\n\n public scrollToY(y: number, speed?: number): void {\n this.animateScrolling('scrollTop', y, speed);\n }\n\n public scrollToTop(offset?: number, speed?: number): void {\n this.animateScrolling('scrollTop', (offset || 0), speed);\n }\n\n public scrollToLeft(offset?: number, speed?: number): void {\n this.animateScrolling('scrollLeft', (offset || 0), speed);\n }\n\n public scrollToRight(offset?: number, speed?: number): void {\n const left = this.elementRef.nativeElement.scrollWidth -\n this.elementRef.nativeElement.clientWidth;\n\n this.animateScrolling('scrollLeft', left - (offset || 0), speed);\n }\n\n public scrollToBottom(offset?: number, speed?: number): void {\n const top = this.elementRef.nativeElement.scrollHeight -\n this.elementRef.nativeElement.clientHeight;\n\n this.animateScrolling('scrollTop', top - (offset || 0), speed);\n }\n\n public scrollToElement(qs: string, offset?: number, speed?: number): void {\n const element = this.elementRef.nativeElement.querySelector(qs);\n\n if (element) {\n const elementPos = element.getBoundingClientRect();\n\n const scrollerPos = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (this.elementRef.nativeElement.classList.contains('ps--active-x')) {\n const currentPos = this.elementRef.nativeElement['scrollLeft'];\n\n const position = elementPos.left - scrollerPos.left + currentPos;\n\n this.animateScrolling('scrollLeft', position + (offset || 0), speed);\n }\n\n if (this.elementRef.nativeElement.classList.contains('ps--active-y')) {\n const currentPos = this.elementRef.nativeElement['scrollTop'];\n\n const position = elementPos.top - scrollerPos.top + currentPos;\n\n this.animateScrolling('scrollTop', position + (offset || 0), speed);\n }\n }\n }\n\n private animateScrolling(target: string, value: number, speed?: number): void {\n if (this.animation) {\n window.cancelAnimationFrame(this.animation);\n\n this.animation = null;\n }\n\n if (!speed || typeof window === 'undefined') {\n this.elementRef.nativeElement[target] = value;\n } else if (value !== this.elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n\n let oldTimestamp = performance.now();\n let oldValue = this.elementRef.nativeElement[target];\n\n const cosParameter = (oldValue - value) / 2;\n\n const step = (newTimestamp: number) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n\n // Only continue animation if scroll position has not changed\n if (this.elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n } else {\n this.elementRef.nativeElement[target] = newValue;\n\n // On a zoomed out page the resulting offset may differ\n oldValue = this.elementRef.nativeElement[target];\n\n oldTimestamp = newTimestamp;\n\n this.animation = window.requestAnimationFrame(step);\n }\n }\n };\n\n window.requestAnimationFrame(step);\n }\n }\n}\n","import { Subject, merge, fromEvent } from 'rxjs';\n\nimport { mapTo, takeUntil, distinctUntilChanged } from 'rxjs/operators';\n\nimport { PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { NgZone, Inject, Component,\n OnInit, OnDestroy, DoCheck, Input, Output, EventEmitter, HostBinding,\n ViewChild, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';\n\nimport { PerfectScrollbarDirective } from './perfect-scrollbar.directive';\n\nimport { PerfectScrollbarEvent, PerfectScrollbarEvents,\n PerfectScrollbarConfigInterface } from './perfect-scrollbar.interfaces';\n\n@Component({\n selector: 'perfect-scrollbar',\n exportAs: 'ngxPerfectScrollbar',\n templateUrl: '../../dist/lib/perfect-scrollbar.component.html',\n styleUrls: [\n '../../dist/lib/perfect-scrollbar.component.css',\n '../../node_modules/perfect-scrollbar/css/perfect-scrollbar.css'\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class PerfectScrollbarComponent implements OnInit, OnDestroy, DoCheck {\n public states: any = {};\n\n public indicatorX: boolean = false;\n public indicatorY: boolean = false;\n\n public interaction: boolean = false;\n\n private scrollPositionX: number = 0;\n private scrollPositionY: number = 0;\n\n private scrollDirectionX: number = 0;\n private scrollDirectionY: number = 0;\n\n private usePropagationX: boolean = false;\n private usePropagationY: boolean = false;\n\n private allowPropagationX: boolean = false;\n private allowPropagationY: boolean = false;\n\n private stateTimeout: number | null = null;\n\n private readonly ngDestroy: Subject<void> = new Subject();\n\n private readonly stateUpdate: Subject<string> = new Subject();\n\n @Input() disabled: boolean = false;\n\n @Input() usePSClass: boolean = true;\n\n @HostBinding('class.ps-show-limits')\n @Input() autoPropagation: boolean = false;\n\n @HostBinding('class.ps-show-active')\n @Input() scrollIndicators: boolean = false;\n\n @Input() config?: PerfectScrollbarConfigInterface;\n\n @Output() psScrollY: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollX: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() psScrollUp: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollDown: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollLeft: EventEmitter<any> = new EventEmitter<any>();\n @Output() psScrollRight: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() psYReachEnd: EventEmitter<any> = new EventEmitter<any>();\n @Output() psYReachStart: EventEmitter<any> = new EventEmitter<any>();\n @Output() psXReachEnd: EventEmitter<any> = new EventEmitter<any>();\n @Output() psXReachStart: EventEmitter<any> = new EventEmitter<any>();\n\n @ViewChild(PerfectScrollbarDirective) directiveRef?: PerfectScrollbarDirective;\n\n constructor(private zone: NgZone, private cdRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private platformId: Object) {}\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.stateUpdate\n .pipe(\n takeUntil(this.ngDestroy),\n distinctUntilChanged((a, b) => (a === b && !this.stateTimeout))\n )\n .subscribe((state: string) => {\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n\n this.stateTimeout = null;\n }\n\n if (state === 'x' || state === 'y') {\n this.interaction = false;\n\n if (state === 'x') {\n this.indicatorX = false;\n\n this.states.left = false;\n this.states.right = false;\n\n if (this.autoPropagation && this.usePropagationX) {\n this.allowPropagationX = false;\n }\n } else if (state === 'y') {\n this.indicatorY = false;\n\n this.states.top = false;\n this.states.bottom = false;\n\n if (this.autoPropagation && this.usePropagationY) {\n this.allowPropagationY = false;\n }\n }\n } else {\n if (state === 'left' || state === 'right') {\n this.states.left = false;\n this.states.right = false;\n\n this.states[state] = true;\n\n if (this.autoPropagation && this.usePropagationX) {\n this.indicatorX = true;\n }\n } else if (state === 'top' || state === 'bottom') {\n this.states.top = false;\n this.states.bottom = false;\n\n this.states[state] = true;\n\n if (this.autoPropagation && this.usePropagationY) {\n this.indicatorY = true;\n }\n }\n\n if (this.autoPropagation && typeof window !== 'undefined') {\n this.stateTimeout = window.setTimeout(() => {\n this.indicatorX = false;\n this.indicatorY = false;\n\n this.stateTimeout = null;\n\n if (this.interaction && (this.states.left || this.states.right)) {\n this.allowPropagationX = true;\n }\n\n if (this.interaction && (this.states.top || this.states.bottom)) {\n this.allowPropagationY = true;\n }\n\n this.cdRef.markForCheck();\n }, 500);\n }\n }\n\n this.cdRef.markForCheck();\n this.cdRef.detectChanges();\n });\n\n this.zone.runOutsideAngular(() => {\n if (this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n\n fromEvent<WheelEvent>(element, 'wheel')\n .pipe(\n takeUntil(this.ngDestroy)\n )\n .subscribe((event: WheelEvent) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollDeltaX = event.deltaX;\n const scrollDeltaY = event.deltaY;\n\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n }\n });\n\n fromEvent<TouchEvent>(element, 'touchmove')\n .pipe(\n takeUntil(this.ngDestroy)\n )\n .subscribe((event: TouchEvent) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollPositionX = event.touches[0].clientX;\n const scrollPositionY = event.touches[0].clientY;\n\n const scrollDeltaX = scrollPositionX - this.scrollPositionX;\n const scrollDeltaY = scrollPositionY - this.scrollPositionY;\n\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n\n this.scrollPositionX = scrollPositionX;\n this.scrollPositionY = scrollPositionY;\n }\n });\n\n merge(\n fromEvent(element, 'ps-scroll-x')\n .pipe(mapTo('x')),\n fromEvent(element, 'ps-scroll-y')\n .pipe(mapTo('y')),\n fromEvent(element, 'ps-x-reach-end')\n .pipe(mapTo('right')),\n fromEvent(element, 'ps-y-reach-end')\n .pipe(mapTo('bottom')),\n fromEvent(element, 'ps-x-reach-start')\n .pipe(mapTo('left')),\n fromEvent(element, 'ps-y-reach-start')\n .pipe(mapTo('top')),\n )\n .pipe(\n takeUntil(this.ngDestroy)\n )\n .subscribe((state: string) => {\n if (!this.disabled && (this.autoPropagation || this.scrollIndicators)) {\n this.stateUpdate.next(state);\n }\n });\n }\n });\n\n window.setTimeout(() => {\n PerfectScrollbarEvents.forEach((eventName: PerfectScrollbarEvent) => {\n if (this.directiveRef) {\n this.directiveRef[eventName] = this[eventName];\n }\n });\n }, 0);\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.unsubscribe();\n\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n }\n }\n }\n\n ngDoCheck(): void {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.disabled && this.autoPropagation && this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n\n this.usePropagationX = element.classList.contains('ps--active-x');\n\n this.usePropagationY = element.classList.contains('ps--active-y');\n }\n }\n }\n\n private checkPropagation(event: any, deltaX: number, deltaY: number): void {\n this.interaction = true;\n\n const scrollDirectionX = (deltaX < 0) ? -1 : 1;\n const scrollDirectionY = (deltaY < 0) ? -1 : 1;\n\n if ((this.usePropagationX && this.usePropagationY) ||\n (this.usePropagationX && (!this.allowPropagationX ||\n (this.scrollDirectionX !== scrollDirectionX))) ||\n (this.usePropagationY && (!this.allowPropagationY ||\n (this.scrollDirectionY !== scrollDirectionY))))\n {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (!!deltaX) {\n this.scrollDirectionX = scrollDirectionX;\n }\n\n if (!!deltaY) {\n this.scrollDirectionY = scrollDirectionY;\n }\n\n this.stateUpdate.next('interaction');\n\n this.cdRef.detectChanges();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { PerfectScrollbarComponent } from './perfect-scrollbar.component';\nimport { PerfectScrollbarDirective } from './perfect-scrollbar.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PerfectScrollbarComponent, PerfectScrollbarDirective],\n exports: [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]\n})\nexport class PerfectScrollbarModule {\n}\n"],"names":["InjectionToken","Subject","EventEmitter","isPlatformBrowser","ResizeObserver","fromEvent","debounceTime","takeUntil","Directive","NgZone","KeyValueDiffers","ElementRef","Inject","PLATFORM_ID","Optional","Input","Output","distinctUntilChanged","merge","mapTo","Component","ViewEncapsulation","ChangeDetectorRef","HostBinding","ViewChild","NgModule","CommonModule"],"mappings":";;;;;;;;IAAA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,GAAG,CAAC,YAAY;IAC3B,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;IACpC,QAAQ,OAAO,GAAG,CAAC;IACnB,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;;IAExB,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,KAAK,EAAE;IACzC,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAClC,gBAAgB,MAAM,GAAG,KAAK,CAAC;;IAE/B,gBAAgB,OAAO,IAAI,CAAC;IAC5B,aAAa;;IAEb,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,CAAC;;IAEX,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;;IAEL,IAAI,QAAQ,YAAY;IACxB,QAAQ,SAAS,SAAS,GAAG;IAC7B,YAAY,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAClC,SAAS;;IAET,QAAQ,IAAI,kBAAkB,GAAG,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;;IAElE;IACA;IACA;IACA,QAAQ,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY;IAClD,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3C,SAAS,CAAC;;IAEV;IACA;IACA;IACA;IACA,QAAQ,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;IACjD,YAAY,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxD,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;IAEhD,YAAY,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,SAAS,CAAC;;IAEV;IACA;IACA;IACA;IACA;IACA,QAAQ,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;IACxD,YAAY,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;;IAExD,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,gBAAgB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACnD,aAAa,MAAM;IACnB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,aAAa;IACb,SAAS,CAAC;;IAEV;IACA;IACA;IACA;IACA,QAAQ,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE;IACpD,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3C,YAAY,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;IAE/C,YAAY,IAAI,CAAC,KAAK,EAAE;IACxB,gBAAgB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,aAAa;IACb,SAAS,CAAC;;IAEV;IACA;IACA;IACA;IACA,QAAQ,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;IACjD,YAAY,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtD,SAAS,CAAC;;IAEV;IACA;IACA;IACA,QAAQ,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;IAChD,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC;;IAEV;IACA;IACA;IACA;IACA;IACA,QAAQ,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE;IAC/D,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;;IAE7C,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAChF,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEpC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,aAAa;IACb,SAAS,CAAC;;IAEV,QAAQ,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC;;IAE3E,QAAQ,OAAO,SAAS,CAAC;IACzB,KAAK,EAAE,EAAE;IACT,CAAC,GAAG,CAAC;;IAEL;IACA;IACA;IACA,IAAI,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;;IAEjH;IACA,IAAI,QAAQ,GAAG,CAAC,YAAY;IAC5B,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;IAC/D,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;;IAEL,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;IAC3D,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;;IAEL,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;IAC/D,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;;IAEL;IACA,IAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IACrC,CAAC,GAAG,CAAC;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,uBAAuB,GAAG,CAAC,YAAY;IAC3C,IAAI,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE;IACrD;IACA;IACA;IACA,QAAQ,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,KAAK;;IAEL,IAAI,OAAO,UAAU,QAAQ,EAAE,EAAE,OAAO,UAAU,CAAC,YAAY,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/G,CAAC,GAAG,CAAC;;IAEL;IACA,IAAI,eAAe,GAAG,CAAC,CAAC;;IAExB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,GAAG,UAAU,QAAQ,EAAE,KAAK,EAAE;IAC1C,IAAI,IAAI,WAAW,GAAG,KAAK;IAC3B,QAAQ,YAAY,GAAG,KAAK;IAC5B,QAAQ,YAAY,GAAG,CAAC,CAAC;;IAEzB;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,cAAc,GAAG;IAC9B,QAAQ,IAAI,WAAW,EAAE;IACzB,YAAY,WAAW,GAAG,KAAK,CAAC;;IAEhC,YAAY,QAAQ,EAAE,CAAC;IACvB,SAAS;;IAET,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,KAAK,EAAE,CAAC;IACpB,SAAS;IACT,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,eAAe,GAAG;IAC/B,QAAQ,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAChD,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,KAAK,GAAG;IACrB,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;;IAEnC,QAAQ,IAAI,WAAW,EAAE;IACzB;IACA,YAAY,IAAI,SAAS,GAAG,YAAY,GAAG,eAAe,EAAE;IAC5D,gBAAgB,OAAO;IACvB,aAAa;;IAEb;IACA;IACA;IACA;IACA,YAAY,YAAY,GAAG,IAAI,CAAC;IAChC,SAAS,MAAM;IACf,YAAY,WAAW,GAAG,IAAI,CAAC;IAC/B,YAAY,YAAY,GAAG,KAAK,CAAC;;IAEjC,YAAY,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC/C,SAAS;;IAET,QAAQ,YAAY,GAAG,SAAS,CAAC;IACjC,KAAK;;IAEL,IAAI,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;;IAEF;IACA,IAAI,aAAa,GAAG,EAAE,CAAC;;IAEvB;IACA;IACA,IAAI,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;;IAE7F;IACA,IAAI,yBAAyB,GAAG,OAAO,gBAAgB,KAAK,WAAW,CAAC;;IAExE;IACA;IACA;IACA,IAAI,wBAAwB,GAAG,WAAW;IAC1C,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;IAEzB,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,QAAQ,EAAE;IACrE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAC7C,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,KAAK;;IAEL;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IAC1B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,KAAK;IACL,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,QAAQ,EAAE;IACxE,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;IAE5C;IACA,IAAI,IAAI,CAAC,KAAK,EAAE;IAChB,QAAQ,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,KAAK;;IAEL;IACA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;IAC9C,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,KAAK;IACL,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;IACzD,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;IAElD;IACA;IACA,IAAI,IAAI,eAAe,EAAE;IACzB,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,KAAK;IACL,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;IAClE;IACA,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,QAAQ,EAAE;IACrE,QAAQ,OAAO,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC7D,KAAK,CAAC,CAAC;;IAEP;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE,EAAE,OAAO,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;;IAExF,IAAI,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;IAC1D;IACA;IACA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;IACvC,QAAQ,OAAO;IACf,KAAK;;IAEL;IACA;IACA;IACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;;IAEtE,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;IAEpD,IAAI,IAAI,yBAAyB,EAAE;IACnC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;IAErE,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE;IAClD,YAAY,UAAU,EAAE,IAAI;IAC5B,YAAY,SAAS,EAAE,IAAI;IAC3B,YAAY,aAAa,EAAE,IAAI;IAC/B,YAAY,OAAO,EAAE,IAAI;IACzB,SAAS,CAAC,CAAC;IACX,KAAK,MAAM;IACX,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;IAEtE,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACzC,KAAK;;IAEL,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;IAC7D;IACA;IACA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACxC,QAAQ,OAAO;IACf,KAAK;;IAEL,IAAI,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;IAEvD,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;IACjC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;IAC7C,KAAK;;IAEL,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE;IACnC,QAAQ,QAAQ,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzE,KAAK;;IAEL,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,IAAI,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,GAAG,EAAE;IACrE,QAAQ,IAAI,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,YAAY,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,EAAE,CAAC;;IAE9F;IACA,IAAI,IAAI,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;IAC9D,QAAQ,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,KAAK,CAAC,CAAC;;IAEP,IAAI,IAAI,gBAAgB,EAAE;IAC1B,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,KAAK;IACL,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA,wBAAwB,CAAC,WAAW,GAAG,YAAY;IACnD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;IACzB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACxD,KAAK;;IAEL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC,CAAC;;IAEF,wBAAwB,CAAC,SAAS,GAAG,IAAI,CAAC;;IAE1C;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,kBAAkB,IAAI,UAAU,MAAM,EAAE,KAAK,EAAE;IACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IACxE,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE1B,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;IAC3C,YAAY,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAC7B,YAAY,UAAU,EAAE,KAAK;IAC7B,YAAY,QAAQ,EAAE,KAAK;IAC3B,YAAY,YAAY,EAAE,IAAI;IAC9B,SAAS,CAAC,CAAC;IACX,KAAK;;IAEL,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;;IAEH;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,IAAI,UAAU,MAAM,EAAE;IACrC;IACA;IACA;IACA,IAAI,IAAI,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;;IAEzF;IACA;IACA,IAAI,OAAO,WAAW,IAAI,QAAQ,CAAC;IACnC,CAAC,CAAC,CAAC;;IAEH;IACA,IAAI,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;IAE3C;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,CAAC,KAAK,EAAE;IACxB,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,MAAM,EAAE;IAChC,IAAI,IAAI,SAAS,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,IAAI,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;IAEhE,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,QAAQ,EAAE;IACtD,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;;IAE5D,QAAQ,OAAO,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,MAAM,EAAE;IAC7B,IAAI,IAAI,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;;IAEtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/D,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;;IAElD,QAAQ,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK;;IAEL,IAAI,OAAO,QAAQ,CAAC;IACpB,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;IACnC,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;;IAEhC,IAAI,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,yBAAyB,CAAC,MAAM,EAAE;IAC3C;IACA;IACA,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACzC,IAAI,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;;IAE3C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE;IACvC,QAAQ,OAAO,SAAS,CAAC;IACzB,KAAK;;IAEL,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,IAAI,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;IAClD,IAAI,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;;IAEjD;IACA;IACA;IACA;IACA,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;IAExC;IACA;IACA,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;IAC3C;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,WAAW,EAAE;IAC1D,YAAY,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;IACxE,SAAS;;IAET,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,YAAY,EAAE;IAC3D,YAAY,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC;IACxE,SAAS;IACT,KAAK;;IAEL;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;IACpC;IACA;IACA;IACA;IACA,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;IACvE,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC;;IAEzE;IACA;IACA;IACA;IACA;IACA,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IAC3C,YAAY,KAAK,IAAI,aAAa,CAAC;IACnC,SAAS;;IAET,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IAC5C,YAAY,MAAM,IAAI,cAAc,CAAC;IACrC,SAAS;IACT,KAAK;;IAEL,IAAI,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,oBAAoB,GAAG,CAAC,YAAY;IACxC;IACA;IACA,IAAI,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE;IACnD,QAAQ,OAAO,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACtG,KAAK;;IAEL;IACA;IACA;IACA,IAAI,OAAO,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,EAAE,CAAC;IAClI,CAAC,GAAG,CAAC;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;IACnC,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IACnE,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,MAAM,EAAE;IAChC,IAAI,IAAI,CAAC,SAAS,EAAE;IACpB,QAAQ,OAAO,SAAS,CAAC;IACzB,KAAK;;IAEL,IAAI,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;IACtC,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK;;IAEL,IAAI,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;IACjC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAClB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAClB,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAC1B,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;;IAE5B;IACA,IAAI,IAAI,MAAM,GAAG,OAAO,eAAe,KAAK,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;IACnF,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;IAE/C;IACA,IAAI,kBAAkB,CAAC,IAAI,EAAE;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAChD,QAAQ,GAAG,EAAE,CAAC;IACd,QAAQ,KAAK,EAAE,CAAC,GAAG,KAAK;IACxB,QAAQ,MAAM,EAAE,MAAM,GAAG,CAAC;IAC1B,QAAQ,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,CAAC;;IAEP,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7C,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACxD,CAAC;;IAED;IACA;IACA;IACA;IACA,IAAI,iBAAiB,GAAG,SAAS,MAAM,EAAE;IACzC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;IAEnD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;IACnD,IAAI,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAE3C,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;IAE7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC;IACtF,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;IACxD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;;IAEjC,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;;IAEvC,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;;IAEF,IAAI,mBAAmB,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE;IACrD,IAAI,IAAI,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;;IAEnD;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC;;IAEF,IAAI,iBAAiB,GAAG,SAAS,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE;IACpE,IAAI,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAClC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;;IAEvC,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;IACxC,QAAQ,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;IACvF,KAAK;;IAEL,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;;;IAGA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;IACxD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACxE,KAAK;;IAEL;IACA,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,OAAO,YAAY,MAAM,CAAC,EAAE;IACxE,QAAQ,OAAO;IACf,KAAK;;IAEL,IAAI,IAAI,EAAE,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE;IAC1D,QAAQ,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACrE,KAAK;;IAEL,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;;IAE1C;IACA,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IAClC,QAAQ,OAAO;IACf,KAAK;;IAEL,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;;IAE5D,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAEvC;IACA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;IAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACxE,KAAK;;IAEL;IACA,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,OAAO,YAAY,MAAM,CAAC,EAAE;IACxE,QAAQ,OAAO;IACf,KAAK;;IAEL,IAAI,IAAI,EAAE,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE;IAC1D,QAAQ,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACrE,KAAK;;IAEL,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;;IAE1C;IACA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACnC,QAAQ,OAAO;IACf,KAAK;;IAEL,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;IAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC5B,QAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9C,KAAK;IACL,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;IACrD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;IACvD,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;;IAE1B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;;IAEvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,WAAW,EAAE;IACtD,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE;IACpC,YAAY,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,SAAS;IACT,KAAK,CAAC,CAAC;IACP,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;IAC1D;IACA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;IAC3B,QAAQ,OAAO;IACf,KAAK;;IAEL,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;;IAEhC;IACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,WAAW,EAAE;IACtE,QAAQ,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;IACxF,KAAK,CAAC,CAAC;;IAEP,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;IACtD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;IACpD,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC;;IAEF;IACA;IACA;IACA,IAAI,SAAS,GAAG,OAAO,OAAO,KAAK,WAAW,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;;IAE/E;IACA;IACA;IACA;IACA,IAAI,cAAc,GAAG,SAAS,QAAQ,EAAE;IACxC,IAAI,IAAI,EAAE,IAAI,YAAY,cAAc,CAAC,EAAE;IAC3C,QAAQ,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAClE,KAAK;IACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACxE,KAAK;;IAEL,IAAI,IAAI,UAAU,GAAG,wBAAwB,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,IAAI,QAAQ,GAAG,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;;IAErE,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC;;IAEF;IACA,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE;IACjE,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY;IACnD,QAAQ,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzE,QAAQ,IAAI,GAAG,CAAC;IAChB,KAAK,CAAC;IACN,CAAC,CAAC,CAAC;;IAEH,IAAI,KAAK,GAAG,CAAC,YAAY;IACzB;IACA,IAAI,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,WAAW,EAAE;IACxD,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC;IACvC,KAAK;;IAEL,IAAI,OAAO,cAAc,CAAC;IAC1B,CAAC,GAAG,CAAC;;;;;;IC7/BL;AAEA,QAAa,wBAAwB,GAAG,IAAIA,mBAAc,CAAC,0BAA0B,CAAC;AAEtF;QAOE,kBAAY,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;YACpD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACZ;QACH,eAAC;KAAA,IAAA;;QAMC,kBAAY,CAA2B,EAAE,CAA2B;YAClE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACZ;QACH,eAAC;KAAA,IAAA;;IAKD,IAAa,sBAAsB,GAA4B;QAC7D,WAAW;QACX,WAAW;QAEX,YAAY;QACZ,cAAc;QACd,cAAc;QACd,eAAe;QAEf,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;KAChB;;QA2CC,gCAAY,MAA4C;YAA5C,uBAAA,EAAA,WAA4C;YACtD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACrB;;;;;QAEM,uCAAM;;;;QAAb,UAAc,MAA4C;YAA5C,uBAAA,EAAA,WAA4C;YACxD,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,IAAI,oBAAC,GAAG,GAAiC,GAAG,MAAM,oBAAC,GAAG,GAA0C,CAAC;aAClG;SACF;QACH,6BAAC;KAAA;;;;;;ACjGD;QAoDE,mCAAoB,IAAY,EAAU,OAAwB,EACzD,UAAsB,EAA+B,UAAkB,EACxB,QAAyC;YAF7E,SAAI,GAAJ,IAAI,CAAQ;YAAU,YAAO,GAAP,OAAO,CAAiB;YACzD,eAAU,GAAV,UAAU,CAAY;YAA+B,eAAU,GAAV,UAAU,CAAQ;YACxB,aAAQ,GAAR,QAAQ,CAAiC;YA9BzF,aAAQ,GAA4B,IAAI,CAAC;YAEzC,OAAE,GAA0B,IAAI,CAAC;YAEjC,YAAO,GAAkB,IAAI,CAAC;YAC9B,cAAS,GAAkB,IAAI,CAAC;YAEhC,eAAU,GAAuC,IAAI,CAAC;YAE7C,cAAS,GAAkB,IAAIC,YAAO,EAAE,CAAC;YAEjD,aAAQ,GAAY,KAAK,CAAC;YAIzB,cAAS,GAAsB,IAAIC,iBAAY,EAAO,CAAC;YACvD,cAAS,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAEvD,eAAU,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YACxD,iBAAY,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAC1D,iBAAY,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAC1D,kBAAa,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAE3D,gBAAW,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YACzD,kBAAa,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAC3D,gBAAW,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YACzD,kBAAa,GAAsB,IAAIA,iBAAY,EAAO,CAAC;SAIgC;;;;QAErG,4CAAQ;;;QAAR;YAAA,iBA2CC;YA1CC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAIC,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;;oBAClD,QAAM,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAExD,QAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE3B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBAC1B,KAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAM,CAAC,CAAC;iBAC7E,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;oBAEhE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;iBACzC;gBAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBAC1B,KAAI,CAAC,EAAE,GAAG,IAAIC,KAAc,CAAC;wBAC3B,KAAI,CAAC,MAAM,EAAE,CAAC;qBACf,CAAC,CAAC;oBAEH,IAAI,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBAC7C,KAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC5D;oBAED,KAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;iBAChD,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBAC1B,sBAAsB,CAAC,OAAO,CAAC,UAAC,SAAgC;;4BACxD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,UAAC,CAAC,IAAK,OAAA,MAAI,CAAC,CAAC,WAAW,EAAI,GAAA,CAAC;wBAE7EC,cAAS,CAAQ,KAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC;6BACvD,IAAI,CACHC,sBAAY,CAAC,EAAE,CAAC,EAChBC,mBAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;6BACA,SAAS,CAAC,UAAC,KAAY;4BACtB,KAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAC7B,CAAC,CAAC;qBACN,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ;SACF;;;;QAED,+CAAW;;;QAAX;YAAA,iBAqBC;YApBC,IAAIJ,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAE1B,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;iBACtB;gBAED,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;oBACjD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACnC;gBAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBAC1B,IAAI,KAAI,CAAC,QAAQ,EAAE;wBACjB,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;qBACzB;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACtB;SACF;;;;QAED,6CAAS;;;QAAT;YACE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAIA,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;;oBACrE,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBAEvD,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,WAAW,EAAE,CAAC;oBAEnB,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;aACF;SACF;;;;;QAED,+CAAW;;;;QAAX,UAAY,OAAsB;YAChC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,IAAIA,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE;oBAC1E,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE;wBAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;qBACnB;yBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;wBACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;qBACjB;iBACF;aACF;SACF;;;;QAEM,sCAAE;;;QAAT;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;;QAEM,0CAAM;;;QAAb;YAAA,iBAoBC;YAnBC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACnC;gBAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;oBAC/B,IAAI,CAAC,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,UAAU,EAAE;wBACrC,IAAI;4BACF,KAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gCAC1B,IAAI,KAAI,CAAC,QAAQ,EAAE;oCACjB,KAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iCACxB;6BACF,CAAC,CAAC;yBACJ;wBAAC,OAAO,KAAK,EAAE;;yBAEf;qBACF;iBACF,EAAE,CAAC,CAAC,CAAC;aACP;SACF;;;;;QAEM,4CAAQ;;;;QAAf,UAAgB,MAAyB;YAAzB,uBAAA,EAAA,iBAAyB;YACvC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EAC9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,EAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,EAC/C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,CACjD,CAAC;SACH;;;;;QAEM,4CAAQ;;;;QAAf,UAAgB,QAAyB;YAAzB,yBAAA,EAAA,gBAAyB;YACvC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC9B,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC3B,CAAC;aACH;iBAAM;gBACL,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,EACxC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CACxC,CAAC;aACH;SACF;;;;;QAEM,8CAAU;;;;QAAjB,UAAkB,SAAyB;YAAzB,0BAAA,EAAA,iBAAyB;;gBACnC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YAE7C,IAAI,SAAS,KAAK,KAAK,EAAE;gBACvB,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAC/C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;aAC9C;iBAAM,IAAI,SAAS,KAAK,MAAM,EAAE;gBAC/B,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;oBAC/C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;aAC9C;iBAAM;gBACL,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;aAC9D;SACF;;;;;;;QAEM,4CAAQ;;;;;;QAAf,UAAgB,CAAS,EAAE,CAAU,EAAE,KAAc;YACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;oBAC9B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;iBAC9C;qBAAM;oBACL,IAAI,CAAC,IAAI,IAAI,EAAE;wBACb,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;qBAC/C;oBAED,IAAI,CAAC,IAAI,IAAI,EAAE;wBACb,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;qBAC9C;iBACF;aACF;SACF;;;;;;QAEM,6CAAS;;;;;QAAhB,UAAiB,CAAS,EAAE,KAAc;YACxC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC/C;;;;;;QAEM,6CAAS;;;;;QAAhB,UAAiB,CAAS,EAAE,KAAc;YACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC9C;;;;;;QAEM,+CAAW;;;;;QAAlB,UAAmB,MAAe,EAAE,KAAc;YAChD,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;SAC1D;;;;;;QAEM,gDAAY;;;;;QAAnB,UAAoB,MAAe,EAAE,KAAc;YACjD,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;SAC3D;;;;;;QAEM,iDAAa;;;;;QAApB,UAAqB,MAAe,EAAE,KAAc;;gBAC5C,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;gBACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;YAE3C,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SAClE;;;;;;QAEM,kDAAc;;;;;QAArB,UAAsB,MAAe,EAAE,KAAc;;gBAC7C,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;gBACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;YAE5C,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SAChE;;;;;;;QAEM,mDAAe;;;;;;QAAtB,UAAuB,EAAU,EAAE,MAAe,EAAE,KAAc;;gBAC1D,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YAE/D,IAAI,OAAO,EAAE;;oBACL,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE;;oBAE5C,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;gBAEzE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;;wBAC9D,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;;wBAExD,QAAQ,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU;oBAEhE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACtE;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;;wBAC9D,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;;wBAEvD,QAAQ,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,UAAU;oBAE9D,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACrE;aACF;SACF;;;;;;;QAEO,oDAAgB;;;;;;QAAxB,UAAyB,MAAc,EAAE,KAAa,EAAE,KAAc;YAAtE,iBA0CC;YAzCC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;YAED,IAAI,CAAC,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;aAC/C;iBAAM,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;;oBACtD,UAAQ,GAAG,CAAC;;oBACZ,aAAW,GAAG,CAAC;;oBAEf,cAAY,GAAG,WAAW,CAAC,GAAG,EAAE;;oBAChC,UAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;;oBAE9C,cAAY,GAAG,CAAC,UAAQ,GAAG,KAAK,IAAI,CAAC;;oBAErC,MAAI,GAAG,UAAC,YAAoB;oBAChC,aAAW,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,YAAY,GAAG,cAAY,CAAC,CAAC,CAAC;oBAEjE,UAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAY,GAAG,cAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAW,CAAC,CAAC,CAAC;;oBAGnF,IAAI,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,UAAQ,EAAE;wBACtD,IAAI,aAAW,IAAI,IAAI,CAAC,EAAE,EAAE;4BAC1B,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;yBACzC;6BAAM;4BACL,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,UAAQ,CAAC;;4BAGjD,UAAQ,GAAG,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;4BAEjD,cAAY,GAAG,YAAY,CAAC;4BAE5B,KAAI,CAAC,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAI,CAAC,CAAC;yBACrD;qBACF;iBACF;gBAED,MAAM,CAAC,qBAAqB,CAAC,MAAI,CAAC,CAAC;aACpC;SACF;;oBAlTFK,cAAS,SAAC;wBACT,QAAQ,EAAE,oBAAoB;wBAC9B,QAAQ,EAAE,qBAAqB;qBAChC;;;;oBAZQC,WAAM;oBAEkBC,oBAAe;oBAFbC,eAAU;oBA2C+B,MAAM,uBAA9CC,WAAM,SAACC,gBAAW;oDACjDC,aAAQ,YAAIF,WAAM,SAAC,wBAAwB;;;+BAnB7CG,UAAK;6BAELA,UAAK,SAAC,kBAAkB;gCAExBC,WAAM;gCACNA,WAAM;iCAENA,WAAM;mCACNA,WAAM;mCACNA,WAAM;oCACNA,WAAM;kCAENA,WAAM;oCACNA,WAAM;kCACNA,WAAM;oCACNA,WAAM;;QAoRT,gCAAC;KAnTD;;;;;;ACnBA;QA8EE,mCAAoB,IAAY,EAAU,KAAwB,EACnC,UAAkB;YAD7B,SAAI,GAAJ,IAAI,CAAQ;YAAU,UAAK,GAAL,KAAK,CAAmB;YACnC,eAAU,GAAV,UAAU,CAAQ;YArD1C,WAAM,GAAQ,EAAE,CAAC;YAEjB,eAAU,GAAY,KAAK,CAAC;YAC5B,eAAU,GAAY,KAAK,CAAC;YAE5B,gBAAW,GAAY,KAAK,CAAC;YAE5B,oBAAe,GAAW,CAAC,CAAC;YAC5B,oBAAe,GAAW,CAAC,CAAC;YAE5B,qBAAgB,GAAW,CAAC,CAAC;YAC7B,qBAAgB,GAAW,CAAC,CAAC;YAE7B,oBAAe,GAAY,KAAK,CAAC;YACjC,oBAAe,GAAY,KAAK,CAAC;YAEjC,sBAAiB,GAAY,KAAK,CAAC;YACnC,sBAAiB,GAAY,KAAK,CAAC;YAEnC,iBAAY,GAAkB,IAAI,CAAC;YAE1B,cAAS,GAAkB,IAAIf,YAAO,EAAE,CAAC;YAEzC,gBAAW,GAAoB,IAAIA,YAAO,EAAE,CAAC;YAErD,aAAQ,GAAY,KAAK,CAAC;YAE1B,eAAU,GAAY,IAAI,CAAC;YAG3B,oBAAe,GAAY,KAAK,CAAC;YAGjC,qBAAgB,GAAY,KAAK,CAAC;YAIjC,cAAS,GAAsB,IAAIC,iBAAY,EAAO,CAAC;YACvD,cAAS,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAEvD,eAAU,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YACxD,iBAAY,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAC1D,iBAAY,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAC1D,kBAAa,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAE3D,gBAAW,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YACzD,kBAAa,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YAC3D,gBAAW,GAAsB,IAAIA,iBAAY,EAAO,CAAC;YACzD,kBAAa,GAAsB,IAAIA,iBAAY,EAAO,CAAC;SAKhB;;;;QAErD,4CAAQ;;;QAAR;YAAA,iBAsJC;YArJC,IAAIC,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACtC,IAAI,CAAC,WAAW;qBACb,IAAI,CACHI,mBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzBU,8BAAoB,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,YAAY,IAAC,CAAC,CAChE;qBACA,SAAS,CAAC,UAAC,KAAa;oBACvB,IAAI,KAAI,CAAC,YAAY,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;wBACtD,MAAM,CAAC,YAAY,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;wBAEvC,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;qBAC1B;oBAED,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE;wBAClC,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;wBAEzB,IAAI,KAAK,KAAK,GAAG,EAAE;4BACjB,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;4BAExB,KAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;4BACzB,KAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;4BAE1B,IAAI,KAAI,CAAC,eAAe,IAAI,KAAI,CAAC,eAAe,EAAE;gCAChD,KAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;6BAChC;yBACF;6BAAM,IAAI,KAAK,KAAK,GAAG,EAAE;4BACxB,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;4BAExB,KAAI,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;4BACxB,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;4BAE3B,IAAI,KAAI,CAAC,eAAe,IAAI,KAAI,CAAC,eAAe,EAAE;gCAChD,KAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;6BAChC;yBACF;qBACF;yBAAM;wBACL,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE;4BACzC,KAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;4BACzB,KAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;4BAE1B,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;4BAE1B,IAAI,KAAI,CAAC,eAAe,IAAI,KAAI,CAAC,eAAe,EAAE;gCAChD,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;6BACxB;yBACF;6BAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,EAAE;4BAChD,KAAI,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;4BACxB,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;4BAE3B,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;4BAE1B,IAAI,KAAI,CAAC,eAAe,IAAI,KAAI,CAAC,eAAe,EAAE;gCAChD,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;6BACxB;yBACF;wBAED,IAAI,KAAI,CAAC,eAAe,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;4BACzD,KAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;gCACpC,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gCACxB,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gCAExB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCAEzB,IAAI,KAAI,CAAC,WAAW,KAAK,KAAI,CAAC,MAAM,CAAC,IAAI,IAAI,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oCAC/D,KAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;iCAC/B;gCAED,IAAI,KAAI,CAAC,WAAW,KAAK,KAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oCAC/D,KAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;iCAC/B;gCAED,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;6BAC3B,EAAE,GAAG,CAAC,CAAC;yBACT;qBACF;oBAED,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;oBAC1B,KAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;iBAC5B,CAAC,CAAC;gBAEL,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBAC1B,IAAI,KAAI,CAAC,YAAY,EAAE;;4BACf,OAAO,GAAG,KAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa;wBAE1DZ,cAAS,CAAa,OAAO,EAAE,OAAO,CAAC;6BACpC,IAAI,CACHE,mBAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;6BACA,SAAS,CAAC,UAAC,KAAiB;4BAC3B,IAAI,CAAC,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,eAAe,EAAE;;oCACpC,YAAY,GAAG,KAAK,CAAC,MAAM;;oCAC3B,YAAY,GAAG,KAAK,CAAC,MAAM;gCAEjC,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;6BAC1D;yBACF,CAAC,CAAC;wBAELF,cAAS,CAAa,OAAO,EAAE,WAAW,CAAC;6BACxC,IAAI,CACHE,mBAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;6BACA,SAAS,CAAC,UAAC,KAAiB;4BAC3B,IAAI,CAAC,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,eAAe,EAAE;;oCACpC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;;oCAC1C,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;;oCAE1C,YAAY,GAAG,eAAe,GAAG,KAAI,CAAC,eAAe;;oCACrD,YAAY,GAAG,eAAe,GAAG,KAAI,CAAC,eAAe;gCAE3D,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;gCAEzD,KAAI,CAAC,eAAe,GAAG,eAAe,CAAC;gCACvC,KAAI,CAAC,eAAe,GAAG,eAAe,CAAC;6BACxC;yBACF,CAAC,CAAC;wBAEHW,UAAK,CACHb,cAAS,CAAC,OAAO,EAAE,aAAa,CAAC;6BAC9B,IAAI,CAACc,eAAK,CAAC,GAAG,CAAC,CAAC,EACnBd,cAAS,CAAC,OAAO,EAAE,aAAa,CAAC;6BAC9B,IAAI,CAACc,eAAK,CAAC,GAAG,CAAC,CAAC,EACnBd,cAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;6BACjC,IAAI,CAACc,eAAK,CAAC,OAAO,CAAC,CAAC,EACvBd,cAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;6BACjC,IAAI,CAACc,eAAK,CAAC,QAAQ,CAAC,CAAC,EACxBd,cAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;6BACnC,IAAI,CAACc,eAAK,CAAC,MAAM,CAAC,CAAC,EACtBd,cAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;6BACnC,IAAI,CAACc,eAAK,CAAC,KAAK,CAAC,CAAC,CACtB;6BACA,IAAI,CACHZ,mBAAS,CAAC,KAAI,CAAC,SAAS,CAAC,CAC1B;6BACA,SAAS,CAAC,UAAC,KAAa;4BACvB,IAAI,CAAC,KAAI,CAAC,QAAQ,KAAK,KAAI,CAAC,eAAe,IAAI,KAAI,CAAC,gBAAgB,CAAC,EAAE;gCACrE,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC9B;yBACF,CAAC,CAAC;qBACN;iBACF,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC;oBAChB,sBAAsB,CAAC,OAAO,CAAC,UAAC,SAAgC;wBAC9D,IAAI,KAAI,CAAC,YAAY,EAAE;4BACrB,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAI,CAAC,SAAS,CAAC,CAAC;yBAChD;qBACF,CAAC,CAAC;iBACJ,EAAE,CAAC,CAAC,CAAC;aACP;SACF;;;;QAED,+CAAW;;;QAAX;YACE,IAAIJ,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBAE7B,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;oBACtD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACxC;aACF;SACF;;;;QAED,6CAAS;;;QAAT;YACE,IAAIA,wBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE;;wBACzD,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa;oBAE1D,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;oBAElE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;iBACnE;aACF;SACF;;;;;;;QAEO,oDAAgB;;;;;;QAAxB,UAAyB,KAAU,EAAE,MAAc,EAAE,MAAc;YACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;gBAElB,gBAAgB,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;;gBACxC,gBAAgB,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;YAE9C,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;iBAC5C,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,iBAAiB;qBAChD,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,CAAC,CAAC;iBAC7C,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,iBAAiB;qBAChD,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAClD;gBACE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;aACzB;YAED,IAAI,CAAC,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;aAC1C;YAED,IAAI,CAAC,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;aAC1C;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAErC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SAC5B;;oBA5QFiB,cAAS,SAAC;wBACT,QAAQ,EAAE,mBAAmB;wBAC7B,QAAQ,EAAE,qBAAqB;wBAC/B,yzBAA8D;wBAK9D,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;qBACtC;;;;oBAlBQZ,WAAM;oBAEiBa,sBAAiB;oBAuEJ,MAAM,uBAA9CV,WAAM,SAACC,gBAAW;;;+BA5BpBE,UAAK;iCAELA,UAAK;sCAELQ,gBAAW,SAAC,sBAAsB,cAClCR,UAAK;uCAELQ,gBAAW,SAAC,sBAAsB,cAClCR,UAAK;6BAELA,UAAK;gCAELC,WAAM;gCACNA,WAAM;iCAENA,WAAM;mCACNA,WAAM;mCACNA,WAAM;oCACNA,WAAM;kCAENA,WAAM;oCACNA,WAAM;kCACNA,WAAM;oCACNA,WAAM;mCAENQ,cAAS,SAAC,yBAAyB;;QAgNtC,gCAAC;KA7QD;;;;;;ACfA;QAOA;SAMC;;oBANAC,aAAQ,SAAC;wBACN,OAAO,EAAE,CAACC,mBAAY,CAAC;wBACvB,YAAY,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;wBACpE,OAAO,EAAE,CAACA,mBAAY,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;qBAChF;;QAED,6BAAC;KAND;;;;;;;;;;;;;;;;;;"}
\No newline at end of file