{ "version": 3, "sources": ["../../../Frontend/node_modules/@glidejs/glide/dist/glide.esm.js", "../../../Frontend/src/scripts/global.js"], "sourcesContent": ["/*!\n * Glide.js v3.6.0\n * (c) 2013-2022 J\u0119drzej Cha\u0142ubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n}();\n\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n}(Glide$1);\n\nexport { Glide as default };\n", "\uFEFFimport Glide from '@glidejs/glide';\r\n\r\n// This file contains global configuration that should be called on every page load.\r\ndocument.addEventListener('alpine:init', () => {\r\n // Footer\r\n Alpine.data('footerData', () => ({\r\n expanded: false,\r\n init() {\r\n this.$watch('expanded', (value) => {\r\n if (value) {\r\n setTimeout(() => this.scrollToBottom(), 500)\r\n }\r\n });\r\n },\r\n scrollToBottom() {\r\n window.scrollTo({left: 0, top: document.body.scrollHeight, behavior: \"smooth\"});\r\n }\r\n }));\r\n\r\n // Header\r\n Alpine.data('navData', () => ({\r\n showMenu: false,\r\n active: null,\r\n main: null,\r\n init() {\r\n this.main = document.querySelector(\"main\");\r\n },\r\n openMenu() {\r\n this.showMenu = true;\r\n this.main.classList.add(\"hidden\");\r\n },\r\n closeMenu() {\r\n this.showMenu = false;\r\n this.main.classList.remove(\"hidden\");\r\n }\r\n }))\r\n});\r\n\r\nif (document.querySelectorAll('.glide') !== null) {\r\n\r\n var sliders = document.querySelectorAll('.glide');\r\n\r\n for (var i = 0; i < sliders.length; i++) {\r\n var glide = new Glide(sliders[i], {\r\n type: 'carousel',\r\n perView: 3,\r\n breakpoints: {\r\n 500: {\r\n perView: 1\r\n },\r\n 900: {\r\n perView: 2\r\n }\r\n },\r\n focusAt: 'center',\r\n autoplay: 2000\r\n });\r\n\r\n glide.mount();\r\n }\r\n}\r\n\r\nif (document.querySelectorAll('.glideGroupSlider') !== null) {\r\n\r\n var sliders = document.querySelectorAll('.glideGroupSlider');\r\n\r\n for (var i = 0; i < sliders.length; i++) {\r\n var glide = new Glide(sliders[i], {\r\n type: 'slider',\r\n perView: 1,\r\n startAt: 0,\r\n focusAt: 'center',\r\n rewind: false\r\n });\r\n\r\n glide.mount();\r\n }\r\n}\r\n"], "mappings": "MAMA,SAASA,EAAQC,EAAK,CAGpB,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAC7DD,EAAU,SAAUC,EAAK,CACvB,OAAO,OAAOA,CAChB,EAEAD,EAAU,SAAUC,EAAK,CACvB,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC3H,EAGKD,EAAQC,CAAG,CACpB,CAEA,SAASC,EAAgBC,EAAUC,EAAa,CAC9C,GAAI,EAAED,aAAoBC,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,CAEA,SAASC,EAAkBC,EAAQC,EAAO,CACxC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACrC,IAAIC,EAAaF,EAAMC,CAAC,EACxBC,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeH,EAAQG,EAAW,IAAKA,CAAU,EAE5D,CAEA,SAASC,EAAaN,EAAaO,EAAYC,EAAa,CAC1D,OAAID,GAAYN,EAAkBD,EAAY,UAAWO,CAAU,EAC/DC,GAAaP,EAAkBD,EAAaQ,CAAW,EACpDR,CACT,CAEA,SAASS,GAAUC,EAAUC,EAAY,CACvC,GAAI,OAAOA,GAAe,YAAcA,IAAe,KACrD,MAAM,IAAI,UAAU,oDAAoD,EAG1ED,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CACrE,YAAa,CACX,MAAOD,EACP,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EACGC,GAAYC,EAAgBF,EAAUC,CAAU,CACtD,CAEA,SAASE,EAAgBC,EAAG,CAC1B,OAAAD,EAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyBC,EAAG,CAC5F,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAC/C,EACOD,EAAgBC,CAAC,CAC1B,CAEA,SAASF,EAAgBE,EAAGC,EAAG,CAC7B,OAAAH,EAAkB,OAAO,gBAAkB,SAAyBE,EAAGC,EAAG,CACxE,OAAAD,EAAE,UAAYC,EACPD,CACT,EAEOF,EAAgBE,EAAGC,CAAC,CAC7B,CAEA,SAASC,IAA4B,CAEnC,GADI,OAAO,QAAY,KAAe,CAAC,QAAQ,WAC3C,QAAQ,UAAU,KAAM,MAAO,GACnC,GAAI,OAAO,OAAU,WAAY,MAAO,GAExC,GAAI,CACF,eAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAC,EAAG,UAAY,CAAC,CAAC,CAAC,EACtE,EACT,MAAE,CACA,MAAO,EACT,CACF,CAEA,SAASC,GAAuBC,EAAM,CACpC,GAAIA,IAAS,OACX,MAAM,IAAI,eAAe,2DAA2D,EAGtF,OAAOA,CACT,CAEA,SAASC,GAA2BD,EAAME,EAAM,CAC9C,GAAIA,IAAS,OAAOA,GAAS,UAAY,OAAOA,GAAS,YACvD,OAAOA,EACF,GAAIA,IAAS,OAClB,MAAM,IAAI,UAAU,0DAA0D,EAGhF,OAAOH,GAAuBC,CAAI,CACpC,CAEA,SAASG,GAAaC,EAAS,CAC7B,IAAIC,EAA4BP,GAA0B,EAE1D,OAAO,UAAgC,CACrC,IAAIQ,EAAQX,EAAgBS,CAAO,EAC/BG,EAEJ,GAAIF,EAA2B,CAC7B,IAAIG,EAAYb,EAAgB,IAAI,EAAE,YAEtCY,EAAS,QAAQ,UAAUD,EAAO,UAAWE,CAAS,OAEtDD,EAASD,EAAM,MAAM,KAAM,SAAS,EAGtC,OAAOL,GAA2B,KAAMM,CAAM,CAChD,CACF,CAEA,SAASE,GAAeC,EAAQC,EAAU,CACxC,KAAO,CAAC,OAAO,UAAU,eAAe,KAAKD,EAAQC,CAAQ,IAC3DD,EAASf,EAAgBe,CAAM,EAC3BA,IAAW,OAAf,CAGF,OAAOA,CACT,CAEA,SAASE,GAAO,CACd,OAAI,OAAO,QAAY,KAAe,QAAQ,IAC5CA,EAAO,QAAQ,IAEfA,EAAO,SAAc5B,EAAQ2B,EAAUE,EAAU,CAC/C,IAAIC,EAAOL,GAAezB,EAAQ2B,CAAQ,EAE1C,GAAKG,EACL,KAAIC,EAAO,OAAO,yBAAyBD,EAAMH,CAAQ,EAEzD,OAAII,EAAK,IACAA,EAAK,IAAI,KAAK,UAAU,OAAS,EAAI/B,EAAS6B,CAAQ,EAGxDE,EAAK,MACd,EAGKH,EAAK,MAAM,KAAM,SAAS,CACnC,CAEA,IAAII,GAAW,CAUb,KAAM,SAON,QAAS,EAOT,QAAS,EAWT,QAAS,EAOT,IAAK,GAOL,SAAU,GAOV,WAAY,GAOZ,SAAU,GAUV,MAAO,GAOP,eAAgB,GAOhB,cAAe,IAWf,SAAU,GAOV,WAAY,GAOZ,WAAY,GAOZ,kBAAmB,IAOnB,OAAQ,GAOR,eAAgB,IAOhB,oBAAqB,oCAOrB,kBAAmB,GAOnB,SAAU,GAWV,UAAW,MAcX,KAAM,EAON,aAAc,EAWd,YAAa,CAAC,EAQd,QAAS,CACP,UAAW,mBACX,SAAU,kBACV,UAAW,CACT,IAAK,aACL,IAAK,YACP,EACA,KAAM,CACJ,OAAQ,gBACR,SAAU,iBACZ,EACA,MAAO,CACL,MAAO,sBACP,OAAQ,sBACV,EACA,MAAO,CACL,SAAU,wBACZ,EACA,IAAK,CACH,OAAQ,uBACV,CACF,CACF,EAQA,SAASC,EAAKC,EAAK,CACjB,QAAQ,MAAM,iBAAiB,OAAOA,CAAG,CAAC,CAC5C,CASA,SAASC,EAAMC,EAAO,CACpB,OAAO,SAASA,CAAK,CACvB,CASA,SAASC,GAAQD,EAAO,CACtB,OAAO,WAAWA,CAAK,CACzB,CAQA,SAASE,EAASF,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CAUA,SAASG,EAASH,EAAO,CACvB,IAAII,EAAO9C,EAAQ0C,CAAK,EAExB,OAAOI,IAAS,YAAcA,IAAS,UAAY,CAAC,CAACJ,CACvD,CAQA,SAASK,EAAWL,EAAO,CACzB,OAAO,OAAOA,GAAU,UAC1B,CAQA,SAASM,GAAYN,EAAO,CAC1B,OAAO,OAAOA,EAAU,GAC1B,CAQA,SAASO,EAAQP,EAAO,CACtB,OAAOA,EAAM,cAAgB,KAC/B,CAYA,SAASQ,GAAMC,EAAOC,EAAYC,EAAQ,CACxC,IAAIC,EAAa,CAAC,EAElB,QAASC,KAAQH,EACXL,EAAWK,EAAWG,CAAI,CAAC,EAC7BD,EAAWC,CAAI,EAAIH,EAAWG,CAAI,EAAEJ,EAAOG,EAAYD,CAAM,EAE7Dd,EAAK,8BAA8B,EAIvC,QAASiB,KAASF,EACZP,EAAWO,EAAWE,CAAK,EAAE,KAAK,GACpCF,EAAWE,CAAK,EAAE,MAAM,EAI5B,OAAOF,CACT,CAUA,SAASG,EAAOxD,EAAKyD,EAAMC,EAAY,CACrC,OAAO,eAAe1D,EAAKyD,EAAMC,CAAU,CAC7C,CAQA,SAASC,GAAS3D,EAAK,CACrB,OAAO,OAAO,KAAKA,CAAG,EAAE,KAAK,EAAE,OAAO,SAAU4D,EAAGC,EAAG,CACpD,OAAAD,EAAEC,CAAC,EAAI7D,EAAI6D,CAAC,EACLD,EAAEC,CAAC,EAAGD,CACf,EAAG,CAAC,CAAC,CACP,CASA,SAASE,EAAazB,EAAU0B,EAAU,CACxC,IAAIC,EAAU,OAAO,OAAO,CAAC,EAAG3B,EAAU0B,CAAQ,EAMlD,OAAIA,EAAS,eAAe,SAAS,IACnCC,EAAQ,QAAU,OAAO,OAAO,CAAC,EAAG3B,EAAS,QAAS0B,EAAS,OAAO,EAElEA,EAAS,QAAQ,eAAe,WAAW,IAC7CC,EAAQ,QAAQ,UAAY,OAAO,OAAO,CAAC,EAAG3B,EAAS,QAAQ,UAAW0B,EAAS,QAAQ,SAAS,GAGlGA,EAAS,QAAQ,eAAe,MAAM,IACxCC,EAAQ,QAAQ,KAAO,OAAO,OAAO,CAAC,EAAG3B,EAAS,QAAQ,KAAM0B,EAAS,QAAQ,IAAI,GAGnFA,EAAS,QAAQ,eAAe,OAAO,IACzCC,EAAQ,QAAQ,MAAQ,OAAO,OAAO,CAAC,EAAG3B,EAAS,QAAQ,MAAO0B,EAAS,QAAQ,KAAK,GAGtFA,EAAS,QAAQ,eAAe,OAAO,IACzCC,EAAQ,QAAQ,MAAQ,OAAO,OAAO,CAAC,EAAG3B,EAAS,QAAQ,MAAO0B,EAAS,QAAQ,KAAK,GAGtFA,EAAS,QAAQ,eAAe,KAAK,IACvCC,EAAQ,QAAQ,IAAM,OAAO,OAAO,CAAC,EAAG3B,EAAS,QAAQ,IAAK0B,EAAS,QAAQ,GAAG,IAIlFA,EAAS,eAAe,aAAa,IACvCC,EAAQ,YAAc,OAAO,OAAO,CAAC,EAAG3B,EAAS,YAAa0B,EAAS,WAAW,GAG7EC,CACT,CAEA,IAAIC,GAAyB,UAAY,CAMvC,SAASA,GAAY,CACnB,IAAIb,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAElFnD,EAAgB,KAAMgE,CAAS,EAE/B,KAAK,OAASb,EACd,KAAK,IAAMA,EAAO,cACpB,CASA,OAAA3C,EAAawD,EAAW,CAAC,CACvB,IAAK,KACL,MAAO,SAAYC,EAAOC,EAAS,CACjC,GAAInB,EAAQkB,CAAK,EAAG,CAClB,QAAS3D,EAAI,EAAGA,EAAI2D,EAAM,OAAQ3D,IAChC,KAAK,GAAG2D,EAAM3D,CAAC,EAAG4D,CAAO,EAG3B,OAIG,KAAK,IAAI,KAAK,KAAK,OAAQD,CAAK,IACnC,KAAK,OAAOA,CAAK,EAAI,CAAC,GAIxB,IAAIE,EAAQ,KAAK,OAAOF,CAAK,EAAE,KAAKC,CAAO,EAAI,EAE/C,MAAO,CACL,OAAQ,UAAkB,CACxB,OAAO,KAAK,OAAOD,CAAK,EAAEE,CAAK,CACjC,CACF,CACF,CAQF,EAAG,CACD,IAAK,OACL,MAAO,SAAcF,EAAOG,EAAS,CACnC,GAAIrB,EAAQkB,CAAK,EAAG,CAClB,QAAS3D,EAAI,EAAGA,EAAI2D,EAAM,OAAQ3D,IAChC,KAAK,KAAK2D,EAAM3D,CAAC,EAAG8D,CAAO,EAG7B,OAIG,KAAK,IAAI,KAAK,KAAK,OAAQH,CAAK,GAKrC,KAAK,OAAOA,CAAK,EAAE,QAAQ,SAAUI,EAAM,CACzCA,EAAKD,GAAW,CAAC,CAAC,CACpB,CAAC,CACH,CACF,CAAC,CAAC,EAEKJ,CACT,EAAE,EAEEM,GAAuB,UAAY,CAOrC,SAASC,EAAMC,EAAU,CACvB,IAAIT,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAEnF/D,EAAgB,KAAMuE,CAAK,EAE3B,KAAK,GAAK,CAAC,EACX,KAAK,GAAK,CAAC,EACX,KAAK,GAAK,IAAIP,GACd,KAAK,SAAW,GAChB,KAAK,SAAWQ,EAChB,KAAK,SAAWX,EAAazB,GAAU2B,CAAO,EAC9C,KAAK,MAAQ,KAAK,SAAS,OAC7B,CASA,OAAAvD,EAAa+D,EAAO,CAAC,CACnB,IAAK,QACL,MAAO,UAAmB,CACxB,IAAIrB,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAEtF,YAAK,GAAG,KAAK,cAAc,EAEvBP,EAASO,CAAU,EACrB,KAAK,GAAKF,GAAM,KAAME,EAAY,KAAK,EAAE,EAEzCb,EAAK,2CAA2C,EAGlD,KAAK,GAAG,KAAK,aAAa,EAEnB,IACT,CAQF,EAAG,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAIoC,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAExF,OAAI1B,EAAQ0B,CAAY,EACtB,KAAK,GAAKA,EAEVpC,EAAK,2CAA2C,EAG3C,IACT,CAQF,EAAG,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAIyB,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EACpF,YAAK,SAAWD,EAAa,KAAK,SAAUC,CAAQ,EAEhDA,EAAS,eAAe,SAAS,IACnC,KAAK,MAAQA,EAAS,SAGxB,KAAK,GAAG,KAAK,QAAQ,EAEd,IACT,CAeF,EAAG,CACD,IAAK,KACL,MAAO,SAAYY,EAAS,CAC1B,YAAK,GAAG,IAAI,KAAKA,CAAO,EAEjB,IACT,CAQF,EAAG,CACD,IAAK,OACL,MAAO,SAAcC,EAAU,CAC7B,YAAK,GAAG,WAAW,QAAQ,EAE3B,KAAK,GAAG,KAAK,KAAKA,CAAQ,EAEnB,IACT,CAOF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,YAAK,GAAG,KAAK,SAAS,EAEf,IACT,CAQF,EAAG,CACD,IAAK,OACL,MAAO,UAAgB,CACrB,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAEnF,OAAIA,IACF,KAAK,SAAS,SAAWA,GAG3B,KAAK,GAAG,KAAK,MAAM,EAEZ,IACT,CAOF,EAAG,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,YAAK,GAAG,KAAK,OAAO,EAEb,IACT,CAOF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,YAAK,SAAW,GACT,IACT,CAOF,EAAG,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,YAAK,SAAW,GACT,IACT,CASF,EAAG,CACD,IAAK,KACL,MAAO,SAAYX,EAAOC,EAAS,CACjC,YAAK,GAAG,GAAGD,EAAOC,CAAO,EAElB,IACT,CAQF,EAAG,CACD,IAAK,SACL,MAAO,SAAgBb,EAAM,CAC3B,OAAO,KAAK,SAAS,OAASA,CAChC,CAOF,EAAG,CACD,IAAK,WACL,IAAK,UAAe,CAClB,OAAO,KAAK,EACd,EAQA,IAAK,SAAarC,EAAG,CACf2B,EAAS3B,CAAC,EACZ,KAAK,GAAKA,EAEVqB,EAAK,uCAAuC,CAEhD,CAOF,EAAG,CACD,IAAK,QACL,IAAK,UAAe,CAClB,OAAO,KAAK,EACd,EAOA,IAAK,SAAa/B,EAAG,CACnB,KAAK,GAAKiC,EAAMjC,CAAC,CACnB,CAOF,EAAG,CACD,IAAK,OACL,IAAK,UAAe,CAClB,OAAO,KAAK,SAAS,IACvB,CAOF,EAAG,CACD,IAAK,WACL,IAAK,UAAe,CAClB,OAAO,KAAK,EACd,EAOA,IAAK,SAAauE,EAAQ,CACxB,KAAK,GAAK,CAAC,CAACA,CACd,CACF,CAAC,CAAC,EAEKN,CACT,EAAE,EAEF,SAASO,GAAKP,EAAOQ,EAAYC,EAAQ,CACvC,IAAIF,EAAM,CAMR,MAAO,UAAiB,CACtB,KAAK,GAAK,EACZ,EAOA,KAAM,SAAcG,EAAM,CACxB,IAAIC,EAAQ,KAEPX,EAAM,WACT,CAACA,EAAM,SAAS,mBAAqBA,EAAM,QAAQ,EACnD,KAAK,KAAOU,EACZD,EAAO,KAAK,aAAc,KAAK,IAAI,EACnC,KAAK,UAAU,EACfA,EAAO,KAAK,MAAO,KAAK,IAAI,EAC5BD,EAAW,WAAW,MAAM,UAAY,CAClCG,EAAM,QAAQ,GAChBF,EAAO,KAAK,YAAaE,EAAM,IAAI,EAGjCA,EAAM,MAAM,GACdF,EAAO,KAAK,UAAWE,EAAM,IAAI,EAG/BA,EAAM,SAAS,IACjBA,EAAM,GAAK,GACXF,EAAO,KAAK,aAAcE,EAAM,IAAI,GAGtCF,EAAO,KAAK,YAAaE,EAAM,IAAI,EACnCX,EAAM,OAAO,CACf,CAAC,EAEL,EAOA,UAAW,UAAqB,CAC9B,IAAIU,EAAO,KAAK,KACZE,EAAS,KAAK,OACdC,EAAQH,EAAK,MACbI,EAAYJ,EAAK,UAEjBK,EAAW,EAGf,GAAID,IAAc,IAAK,CAGrB,GAAId,EAAM,SAAS,OAAShC,EAAM6C,CAAK,EAAID,EAAQ,CACjDZ,EAAM,MAAQY,EACd,OAGFZ,EAAM,MAAQa,EACd,OAKF,GAAIC,IAAc,KAAOD,IAAU,IAAK,CACtCb,EAAM,MAAQY,EACd,OAKF,GAAIE,IAAc,KAAOD,IAAU,IAAK,CACtCb,EAAM,MAAQ,EACd,OASF,GALIc,IAAc,MAChBC,EAAWf,EAAM,SAAS,SAAW,GAInCc,IAAc,KAAOA,IAAc,KAAOD,IAAU,IAAK,CAC3D,IAAIjB,EAAQoB,EAAsBD,CAAQ,EAEtCnB,EAAQgB,IACV,KAAK,GAAK,IAGZZ,EAAM,MAAQiB,EAAsBrB,EAAOmB,CAAQ,EACnD,OAIF,GAAID,IAAc,KAAOA,IAAc,KAAOD,IAAU,IAAK,CAC3D,IAAIK,EAASC,EAAuBJ,CAAQ,EAExCG,EAAS,IACX,KAAK,GAAK,IAGZlB,EAAM,MAAQoB,EAAuBF,EAAQH,CAAQ,EACrD,OAGFjD,EAAK,8BAA8B,OAAOgD,CAAS,EAAE,OAAOD,EAAO,iBAAiB,CAAC,CACvF,EAOA,QAAS,UAAmB,CAC1B,OAAOb,EAAM,OAAS,CACxB,EAOA,MAAO,UAAiB,CACtB,OAAOA,EAAM,OAAS,KAAK,MAC7B,EAQA,SAAU,UAAoB,CAC5B,IAAIc,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAEpF,OAAKA,EAIA,KAAK,GAKNA,IAAc,KACT,KAAK,KAAK,YAAc,KAAO,KAAK,KAAK,QAAU,IAIxDA,IAAc,KACT,KAAK,KAAK,YAAc,KAAO,KAAK,KAAK,QAAU,IAGrD,KAAK,KAAK,YAAcA,EAbtB,GAJA,KAAK,EAkBhB,EAOA,QAAS,UAAmB,CAC1B,OAAOd,EAAM,OAAO,QAAQ,GAAKA,EAAM,SAAS,UAAY,UAAYA,EAAM,SAAS,KACzF,CACF,EAQA,SAASgB,EAAsBD,EAAU,CACvC,IAAInB,EAAQI,EAAM,MAElB,OAAIA,EAAM,OAAO,UAAU,EAClBJ,EAAQmB,EAGVnB,GAASmB,EAAWnB,EAAQmB,EACrC,CAWA,SAASE,EAAsBrB,EAAOmB,EAAU,CAC9C,IAAIH,EAASL,EAAI,OAEjB,OAAIX,GAASgB,EACJhB,EAGLI,EAAM,OAAO,UAAU,EAClBJ,GAASgB,EAAS,GAGvBZ,EAAM,SAAS,OAGbO,EAAI,QAAQ,GAAK,CAACA,EAAI,MAAM,EACvBK,EAGF,EAGLL,EAAI,QAAQ,EACPK,EAGF,KAAK,MAAMA,EAASG,CAAQ,EAAIA,CACzC,CASA,SAASI,EAAuBJ,EAAU,CACxC,IAAInB,EAAQI,EAAM,MAElB,GAAIA,EAAM,OAAO,UAAU,EACzB,OAAOJ,EAAQmB,EAKjB,IAAIM,EAAO,KAAK,KAAKzB,EAAQmB,CAAQ,EACrC,OAAQM,EAAO,GAAKN,CACtB,CAWA,SAASK,EAAuBxB,EAAOmB,EAAU,CAC/C,IAAIH,EAASL,EAAI,OAEjB,OAAIX,GAAS,EACJA,EAGLI,EAAM,OAAO,UAAU,EAClBJ,GAASgB,EAAS,GAGvBZ,EAAM,SAAS,OAGbO,EAAI,QAAQ,GAAKA,EAAI,QAAQ,EACxBK,EAGF,KAAK,MAAMA,EAASG,CAAQ,EAAIA,EAGlC,CACT,CAEA,OAAA/B,EAAOuB,EAAK,OAAQ,CAMlB,IAAK,UAAe,CAClB,OAAO,KAAK,EACd,EAOA,IAAK,SAAatC,EAAO,CACvB,IAAIqD,EAAOrD,EAAM,OAAO,CAAC,EACzB,KAAK,GAAK,CACR,UAAWA,EAAM,OAAO,EAAG,CAAC,EAC5B,MAAOqD,EAAOtD,EAAMsD,CAAI,EAAItD,EAAMsD,CAAI,EAAIA,EAAO,CACnD,CACF,CACF,CAAC,EACDtC,EAAOuB,EAAK,SAAU,CAOpB,IAAK,UAAe,CAClB,IAAIhB,EAAWS,EAAM,SACjBY,EAASJ,EAAW,KAAK,OAAO,OAIpC,OAAI,KAAK,QAAQ,EACRI,EAAS,GAAK5C,EAAMuB,EAAS,OAAO,EAAI,GAAKvB,EAAMuB,EAAS,OAAO,EAGrEqB,EAAS,CAClB,CACF,CAAC,EACD5B,EAAOuB,EAAK,SAAU,CAMpB,IAAK,UAAe,CAClB,OAAO,KAAK,EACd,CACF,CAAC,EACMA,CACT,CAOA,SAASgB,GAAM,CACb,OAAO,IAAI,KAAK,EAAE,QAAQ,CAC5B,CAcA,SAASC,EAASC,EAAMC,EAAMlC,EAAS,CACrC,IAAImC,EAAS9B,EAAS+B,EAAMxE,EACxByE,EAAW,EACVrC,IAASA,EAAU,CAAC,GAEzB,IAAIsC,EAAQ,UAAiB,CAC3BD,EAAWrC,EAAQ,UAAY,GAAQ,EAAI+B,EAAI,EAC/CI,EAAU,KACVvE,EAASqE,EAAK,MAAM5B,EAAS+B,CAAI,EAC5BD,IAAS9B,EAAU+B,EAAO,KACjC,EAEIG,EAAY,UAAqB,CACnC,IAAIC,EAAKT,EAAI,EACT,CAACM,GAAYrC,EAAQ,UAAY,KAAOqC,EAAWG,GACvD,IAAIC,EAAYP,GAAQM,EAAKH,GAC7B,OAAAhC,EAAU,KACV+B,EAAO,UAEHK,GAAa,GAAKA,EAAYP,GAC5BC,IACF,aAAaA,CAAO,EACpBA,EAAU,MAGZE,EAAWG,EACX5E,EAASqE,EAAK,MAAM5B,EAAS+B,CAAI,EAC5BD,IAAS9B,EAAU+B,EAAO,OACtB,CAACD,GAAWnC,EAAQ,WAAa,KAC1CmC,EAAU,WAAWG,EAAOG,CAAS,GAGhC7E,CACT,EAEA,OAAA2E,EAAU,OAAS,UAAY,CAC7B,aAAaJ,CAAO,EACpBE,EAAW,EACXF,EAAU9B,EAAU+B,EAAO,IAC7B,EAEOG,CACT,CAEA,IAAIG,EAAc,CAChB,IAAK,CAAC,aAAc,aAAa,EACjC,IAAK,CAAC,cAAe,YAAY,CACnC,EACA,SAASC,GAAMnC,EAAOQ,EAAYC,EAAQ,CACxC,IAAI0B,EAAO,CAQT,MAAO,SAAeC,EAAQ,CAC5B,QAASrG,EAAI,EAAGsG,EAAMD,EAAO,OAAQrG,EAAIsG,EAAKtG,IAAK,CACjD,IAAIuG,EAAQF,EAAOrG,CAAC,EAAE,MAClB+E,EAAYN,EAAW,UAAU,MAEjCzE,IAAM,EACRuG,EAAMJ,EAAYpB,CAAS,EAAE,CAAC,CAAC,EAAI,GAAG,OAAO,KAAK,MAAQ,EAAG,IAAI,EAEjEwB,EAAMJ,EAAYpB,CAAS,EAAE,CAAC,CAAC,EAAI,GAGjC/E,IAAMqG,EAAO,OAAS,EACxBE,EAAMJ,EAAYpB,CAAS,EAAE,CAAC,CAAC,EAAI,GAAG,OAAO,KAAK,MAAQ,EAAG,IAAI,EAEjEwB,EAAMJ,EAAYpB,CAAS,EAAE,CAAC,CAAC,EAAI,GAGzC,EAQA,OAAQ,SAAgBsB,EAAQ,CAC9B,QAASrG,EAAI,EAAGsG,EAAMD,EAAO,OAAQrG,EAAIsG,EAAKtG,IAAK,CACjD,IAAIuG,EAAQF,EAAOrG,CAAC,EAAE,MACtBuG,EAAM,WAAa,GACnBA,EAAM,YAAc,GAExB,CACF,EACA,OAAAtD,EAAOmD,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,OAAOnE,EAAMgC,EAAM,SAAS,GAAG,CACjC,CACF,CAAC,EACDhB,EAAOmD,EAAM,OAAQ,CAOnB,IAAK,UAAe,CAClB,OAAOA,EAAK,MAAQ3B,EAAW,MAAM,MACvC,CACF,CAAC,EACDxB,EAAOmD,EAAM,WAAY,CAOvB,IAAK,UAAe,CAClB,IAAII,EAAUvC,EAAM,SAAS,QAC7B,OAAOmC,EAAK,OAASI,EAAU,GAAKA,CACtC,CACF,CAAC,EAOD9B,EAAO,GAAG,CAAC,cAAe,QAAQ,EAAGe,EAAS,UAAY,CACxDW,EAAK,MAAM3B,EAAW,KAAK,QAAQ,QAAQ,CAC7C,EAAG,EAAE,CAAC,EAMNC,EAAO,GAAG,UAAW,UAAY,CAC/B0B,EAAK,OAAO3B,EAAW,KAAK,QAAQ,QAAQ,CAC9C,CAAC,EACM2B,CACT,CAQA,SAASK,GAASC,EAAM,CACtB,GAAIA,GAAQA,EAAK,WAAY,CAI3B,QAHIC,EAAID,EAAK,WAAW,WACpBE,EAAU,CAAC,EAERD,EAAGA,EAAIA,EAAE,YACVA,EAAE,WAAa,GAAKA,IAAMD,GAC5BE,EAAQ,KAAKD,CAAC,EAIlB,OAAOC,EAGT,MAAO,CAAC,CACV,CAQA,SAASC,EAAMH,EAAM,CACnB,MAAI,GAAAA,GAAQA,aAAgB,OAAO,YAKrC,CAQA,SAASI,EAAQC,EAAU,CACzB,OAAO,MAAM,UAAU,MAAM,KAAKA,CAAQ,CAC5C,CAEA,IAAIC,EAAiB,0BACrB,SAASC,GAAMhD,EAAOQ,EAAYC,EAAQ,CACxC,IAAIuC,EAAO,CAMT,MAAO,UAAiB,CACtB,KAAK,KAAOhD,EAAM,SAClB,KAAK,MAAQ,KAAK,KAAK,cAAc+C,CAAc,EACnD,KAAK,cAAc,CACrB,EAKA,cAAe,UAAyB,CACtC,KAAK,OAASF,EAAQ,KAAK,QAAQ,QAAQ,EAAE,OAAO,SAAUI,EAAO,CACnE,MAAO,CAACA,EAAM,UAAU,SAASjD,EAAM,SAAS,QAAQ,MAAM,KAAK,CACrE,CAAC,CACH,CACF,EACA,OAAAhB,EAAOgE,EAAM,OAAQ,CAMnB,IAAK,UAAe,CAClB,OAAOA,EAAK,EACd,EAOA,IAAK,SAAa5D,EAAG,CACfjB,EAASiB,CAAC,IACZA,EAAI,SAAS,cAAcA,CAAC,GAG1BwD,EAAMxD,CAAC,EACT4D,EAAK,GAAK5D,EAEVtB,EAAK,2CAA2C,CAEpD,CACF,CAAC,EACDkB,EAAOgE,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,OAAOA,EAAK,EACd,EAOA,IAAK,SAAaE,EAAG,CACfN,EAAMM,CAAC,EACTF,EAAK,GAAKE,EAEVpF,EAAK,4CAA4C,OAAOiF,EAAgB,aAAa,CAAC,CAE1F,CACF,CAAC,EACD/D,EAAOgE,EAAM,UAAW,CAMtB,IAAK,UAAe,CAClB,OAAOA,EAAK,MAAM,SAAS,CAAC,CAC9B,CACF,CAAC,EAKDvC,EAAO,GAAG,SAAU,UAAY,CAC9BuC,EAAK,cAAc,CACrB,CAAC,EACMA,CACT,CAEA,SAASG,GAAMnD,EAAOQ,EAAYC,EAAQ,CACxC,IAAI0C,EAAO,CAMT,MAAO,UAAiB,CACtB,KAAK,MAAQnD,EAAM,SAAS,IAC9B,CACF,EACA,OAAAhB,EAAOmE,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,OAAOA,EAAK,EACd,EAQA,IAAK,SAAalF,EAAO,CACnBG,EAASH,CAAK,GAChBA,EAAM,OAASD,EAAMC,EAAM,MAAM,EACjCA,EAAM,MAAQD,EAAMC,EAAM,KAAK,GAE/BA,EAAQD,EAAMC,CAAK,EAGrBkF,EAAK,GAAKlF,CACZ,CACF,CAAC,EACDe,EAAOmE,EAAM,WAAY,CAMvB,IAAK,UAAe,CAClB,IAAIlF,EAAQkF,EAAK,MACbZ,EAAUvC,EAAM,SAAS,QAE7B,OAAI5B,EAASH,CAAK,EACTA,EAAM,OAASsE,EAAUtE,EAAM,MAAQsE,EAGzCtE,EAAQ,EAAIsE,CACrB,CACF,CAAC,EAMD9B,EAAO,GAAG,CAAC,SAAU,QAAQ,EAAG,UAAY,CAC1C0C,EAAK,MAAM,CACb,CAAC,EACMA,CACT,CAEA,SAASC,GAAMpD,EAAOQ,EAAYC,EAAQ,CACxC,IAAI2C,EAAO,CAMT,MAAO,UAAiB,CACtB,KAAK,GAAK,CACZ,EAQA,KAAM,UAAgB,CACpB,IAAIzC,EAAQ,KAER0C,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACjF,KAAK,OAASA,EACd5C,EAAO,KAAK,OAAQ,CAClB,SAAU,KAAK,KACjB,CAAC,EACDD,EAAW,WAAW,MAAM,UAAY,CACtCC,EAAO,KAAK,aAAc,CACxB,SAAUE,EAAM,KAClB,CAAC,CACH,CAAC,CACH,CACF,EACA,OAAA3B,EAAOoE,EAAM,SAAU,CAMrB,IAAK,UAAe,CAClB,OAAOA,EAAK,EACd,EAOA,IAAK,SAAanF,EAAO,CACvBmF,EAAK,GAAM7E,GAAYN,CAAK,EAAmB,EAAfD,EAAMC,CAAK,CAC7C,CACF,CAAC,EACDe,EAAOoE,EAAM,YAAa,CAMxB,IAAK,UAAe,CAClB,OAAO5C,EAAW,MAAM,WAAaR,EAAM,KAC7C,CACF,CAAC,EACDhB,EAAOoE,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,IAAIC,EAAS,KAAK,OACdC,EAAY,KAAK,UAErB,OAAI9C,EAAW,UAAU,GAAG,KAAK,EACxB8C,EAAYD,EAGdC,EAAYD,CACrB,CACF,CAAC,EAOD5C,EAAO,GAAG,CAAC,eAAgB,KAAK,EAAG,UAAY,CAC7C2C,EAAK,KAAK,CACZ,CAAC,EACMA,CACT,CAEA,SAASG,GAAOvD,EAAOQ,EAAYC,EAAQ,CACzC,IAAI8C,EAAQ,CAMV,YAAa,UAAuB,CAIlC,QAHIC,EAAQ,GAAG,OAAO,KAAK,WAAY,IAAI,EACvCpB,EAAS5B,EAAW,KAAK,OAEpBzE,EAAI,EAAGA,EAAIqG,EAAO,OAAQrG,IACjCqG,EAAOrG,CAAC,EAAE,MAAM,MAAQyH,CAE5B,EAOA,aAAc,UAAwB,CACpChD,EAAW,KAAK,QAAQ,MAAM,MAAQ,GAAG,OAAO,KAAK,YAAa,IAAI,CACxE,EAOA,OAAQ,UAAkB,CAGxB,QAFI4B,EAAS5B,EAAW,KAAK,OAEpBzE,EAAI,EAAGA,EAAIqG,EAAO,OAAQrG,IACjCqG,EAAOrG,CAAC,EAAE,MAAM,MAAQ,GAG1ByE,EAAW,KAAK,QAAQ,MAAM,MAAQ,EACxC,CACF,EACA,OAAAxB,EAAOuE,EAAO,SAAU,CAMtB,IAAK,UAAe,CAClB,OAAO/C,EAAW,KAAK,OAAO,MAChC,CACF,CAAC,EACDxB,EAAOuE,EAAO,QAAS,CAMrB,IAAK,UAAe,CAClB,OAAO/C,EAAW,KAAK,MAAM,WAC/B,CACF,CAAC,EACDxB,EAAOuE,EAAO,cAAe,CAM3B,IAAK,UAAe,CAClB,OAAOA,EAAM,WAAaA,EAAM,OAAS/C,EAAW,KAAK,KAAOA,EAAW,OAAO,IACpF,CACF,CAAC,EACDxB,EAAOuE,EAAO,aAAc,CAM1B,IAAK,UAAe,CAClB,OAAOA,EAAM,MAAQvD,EAAM,SAAS,QAAUQ,EAAW,KAAK,SAAWA,EAAW,KAAK,QAC3F,CACF,CAAC,EAQDC,EAAO,GAAG,CAAC,eAAgB,SAAU,QAAQ,EAAG,UAAY,CAC1D8C,EAAM,YAAY,EAClBA,EAAM,aAAa,CACrB,CAAC,EAMD9C,EAAO,GAAG,UAAW,UAAY,CAC/B8C,EAAM,OAAO,CACf,CAAC,EACMA,CACT,CAEA,SAASE,GAAOzD,EAAOQ,EAAYC,EAAQ,CACzC,IAAIgD,EAAQ,CAOV,MAAO,UAAiB,CACtBhD,EAAO,KAAK,cAAc,EAC1B,KAAK,UAAU,EACf,KAAK,YAAY,EACjBA,EAAO,KAAK,aAAa,CAC3B,EAOA,UAAW,UAAqB,CAC9BD,EAAW,KAAK,KAAK,UAAU,IAAIR,EAAM,SAAS,QAAQ,KAAKA,EAAM,SAAS,IAAI,CAAC,CACrF,EAOA,YAAa,UAAuB,CAClC,IAAI0D,EAAU1D,EAAM,SAAS,QACzBiD,EAAQzC,EAAW,KAAK,OAAOR,EAAM,KAAK,EAE1CiD,IACFA,EAAM,UAAU,IAAIS,EAAQ,MAAM,MAAM,EACxClB,GAASS,CAAK,EAAE,QAAQ,SAAUU,EAAS,CACzCA,EAAQ,UAAU,OAAOD,EAAQ,MAAM,MAAM,CAC/C,CAAC,EAEL,EAOA,cAAe,UAAyB,CACtC,IAAIE,EAAwB5D,EAAM,SAAS,QACvC3B,EAAOuF,EAAsB,KAC7BX,EAAQW,EAAsB,MAClCpD,EAAW,KAAK,KAAK,UAAU,OAAOnC,EAAK2B,EAAM,SAAS,IAAI,CAAC,EAC/DQ,EAAW,KAAK,OAAO,QAAQ,SAAUmD,EAAS,CAChDA,EAAQ,UAAU,OAAOV,EAAM,MAAM,CACvC,CAAC,CACH,CACF,EAOA,OAAAxC,EAAO,GAAG,CAAC,UAAW,QAAQ,EAAG,UAAY,CAC3CgD,EAAM,cAAc,CACtB,CAAC,EAODhD,EAAO,GAAG,CAAC,SAAU,QAAQ,EAAG,UAAY,CAC1CgD,EAAM,MAAM,CACd,CAAC,EAMDhD,EAAO,GAAG,aAAc,UAAY,CAClCgD,EAAM,YAAY,CACpB,CAAC,EACMA,CACT,CAEA,SAASI,GAAQ7D,EAAOQ,EAAYC,EAAQ,CAC1C,IAAIoD,EAAS,CAIX,MAAO,UAAiB,CACtB,KAAK,MAAQ,CAAC,EAEV7D,EAAM,OAAO,UAAU,IACzB,KAAK,MAAQ,KAAK,QAAQ,EAE9B,EAOA,QAAS,UAAmB,CAC1B,IAAI8D,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAC7E1B,EAAS5B,EAAW,KAAK,OACzBuD,EAAkB/D,EAAM,SACxBuC,EAAUwB,EAAgB,QAC1BL,EAAUK,EAAgB,QAC1BC,EAAeD,EAAgB,aAEnC,GAAI3B,EAAO,SAAW,EAMpB,QALI6B,EAAkB,CAAC,CAAC,CAACjE,EAAM,SAAS,KACpCkE,EAAa3B,EAAU0B,EAAkB,KAAK,MAAM1B,EAAU,CAAC,EAC/D4B,EAAS/B,EAAO,MAAM,EAAG8B,CAAU,EAAE,QAAQ,EAC7CE,EAAUhC,EAAO,MAAM8B,EAAa,EAAE,EAEjC9E,EAAI,EAAGA,EAAI,KAAK,IAAI4E,EAAc,KAAK,MAAMzB,EAAUH,EAAO,MAAM,CAAC,EAAGhD,IAAK,CACpF,QAASrD,EAAI,EAAGA,EAAIoI,EAAO,OAAQpI,IAAK,CACtC,IAAIsI,EAAQF,EAAOpI,CAAC,EAAE,UAAU,EAAI,EACpCsI,EAAM,UAAU,IAAIX,EAAQ,MAAM,KAAK,EACvCI,EAAM,KAAKO,CAAK,EAGlB,QAASC,EAAK,EAAGA,EAAKF,EAAQ,OAAQE,IAAM,CAC1C,IAAIC,EAASH,EAAQE,CAAE,EAAE,UAAU,EAAI,EAEvCC,EAAO,UAAU,IAAIb,EAAQ,MAAM,KAAK,EAExCI,EAAM,QAAQS,CAAM,GAK1B,OAAOT,CACT,EAOA,OAAQ,UAAkB,CAUxB,QATIA,EAAQ,KAAK,MACbU,EAAmBhE,EAAW,KAC9BiE,EAAUD,EAAiB,QAC3BpC,EAASoC,EAAiB,OAC1BE,EAAO,KAAK,MAAMZ,EAAM,OAAS,CAAC,EAClCM,EAAUN,EAAM,MAAM,EAAGY,CAAI,EAAE,QAAQ,EACvCP,EAASL,EAAM,MAAMY,EAAO,EAAE,EAAE,QAAQ,EACxClB,EAAQ,GAAG,OAAOhD,EAAW,MAAM,WAAY,IAAI,EAE9CzE,EAAI,EAAGA,EAAIoI,EAAO,OAAQpI,IACjC0I,EAAQ,YAAYN,EAAOpI,CAAC,CAAC,EAG/B,QAAS4I,EAAM,EAAGA,EAAMP,EAAQ,OAAQO,IACtCF,EAAQ,aAAaL,EAAQO,CAAG,EAAGvC,EAAO,CAAC,CAAC,EAG9C,QAASwC,EAAM,EAAGA,EAAMd,EAAM,OAAQc,IACpCd,EAAMc,CAAG,EAAE,MAAM,MAAQpB,CAE7B,EAOA,OAAQ,UAAkB,CAGxB,QAFIM,EAAQ,KAAK,MAER/H,EAAI,EAAGA,EAAI+H,EAAM,OAAQ/H,IAChCyE,EAAW,KAAK,QAAQ,YAAYsD,EAAM/H,CAAC,CAAC,CAEhD,CACF,EACA,OAAAiD,EAAO6E,EAAQ,OAAQ,CAMrB,IAAK,UAAe,CAClB,OAAQrD,EAAW,MAAM,WAAaA,EAAW,KAAK,OAASqD,EAAO,MAAM,MAC9E,CACF,CAAC,EAMDpD,EAAO,GAAG,SAAU,UAAY,CAC9BoD,EAAO,OAAO,EACdA,EAAO,MAAM,EACbA,EAAO,OAAO,CAChB,CAAC,EAMDpD,EAAO,GAAG,eAAgB,UAAY,CAChCT,EAAM,OAAO,UAAU,GACzB6D,EAAO,OAAO,CAElB,CAAC,EAMDpD,EAAO,GAAG,UAAW,UAAY,CAC/BoD,EAAO,OAAO,CAChB,CAAC,EACMA,CACT,CAEA,IAAIgB,EAA4B,UAAY,CAI1C,SAASA,GAAe,CACtB,IAAIC,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAErFrJ,EAAgB,KAAMoJ,CAAY,EAElC,KAAK,UAAYC,CACnB,CAYA,OAAA7I,EAAa4I,EAAc,CAAC,CAC1B,IAAK,KACL,MAAO,SAAYjG,EAAQmG,EAAIC,EAAS,CACtC,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAE9E9G,EAASS,CAAM,IACjBA,EAAS,CAACA,CAAM,GAGlB,QAAS7C,EAAI,EAAGA,EAAI6C,EAAO,OAAQ7C,IACjC,KAAK,UAAU6C,EAAO7C,CAAC,CAAC,EAAIiJ,EAC5BD,EAAG,iBAAiBnG,EAAO7C,CAAC,EAAG,KAAK,UAAU6C,EAAO7C,CAAC,CAAC,EAAGkJ,CAAO,CAErE,CAUF,EAAG,CACD,IAAK,MACL,MAAO,SAAarG,EAAQmG,EAAI,CAC9B,IAAIE,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAE9E9G,EAASS,CAAM,IACjBA,EAAS,CAACA,CAAM,GAGlB,QAAS,EAAI,EAAG,EAAIA,EAAO,OAAQ,IACjCmG,EAAG,oBAAoBnG,EAAO,CAAC,EAAG,KAAK,UAAUA,EAAO,CAAC,CAAC,EAAGqG,CAAO,CAExE,CAOF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,OAAO,KAAK,SACd,CACF,CAAC,CAAC,EAEKJ,CACT,EAAE,EAEF,SAASK,GAAQlF,EAAOQ,EAAYC,EAAQ,CAM1C,IAAI0E,EAAS,IAAIN,EACbK,EAAS,CAIX,MAAO,UAAiB,CACtB,KAAK,KAAK,CACZ,EAQA,KAAM,UAAgB,CACpBC,EAAO,GAAG,SAAU,OAAQ3D,EAAS,UAAY,CAC/Cf,EAAO,KAAK,QAAQ,CACtB,EAAGT,EAAM,SAAS,QAAQ,CAAC,CAC7B,EAOA,OAAQ,UAAkB,CACxBmF,EAAO,IAAI,SAAU,MAAM,CAC7B,CACF,EAMA,OAAA1E,EAAO,GAAG,UAAW,UAAY,CAC/ByE,EAAO,OAAO,EACdC,EAAO,QAAQ,CACjB,CAAC,EACMD,CACT,CAEA,IAAIE,GAAmB,CAAC,MAAO,KAAK,EAChCC,GAAmB,CACrB,IAAK,IACL,IAAK,IACL,IAAK,GACP,EACA,SAASC,GAAWtF,EAAOQ,EAAYC,EAAQ,CAC7C,IAAI6E,EAAY,CAMd,MAAO,UAAiB,CACtB,KAAK,MAAQtF,EAAM,SAAS,SAC9B,EAQA,QAAS,SAAiBG,EAAS,CACjC,IAAIoF,EAAQpF,EAAQ,MAAM,EAAG,CAAC,EAE9B,OAAI,KAAK,GAAG,KAAK,EACRA,EAAQ,MAAMoF,CAAK,EAAE,KAAKF,GAAiBE,CAAK,CAAC,EAGnDpF,CACT,EAQA,GAAI,SAAYW,EAAW,CACzB,OAAO,KAAK,QAAUA,CACxB,EAOA,SAAU,UAAoB,CAC5BN,EAAW,KAAK,KAAK,UAAU,IAAIR,EAAM,SAAS,QAAQ,UAAU,KAAK,KAAK,CAAC,CACjF,EAOA,YAAa,UAAuB,CAClCQ,EAAW,KAAK,KAAK,UAAU,OAAOR,EAAM,SAAS,QAAQ,UAAU,KAAK,KAAK,CAAC,CACpF,CACF,EACA,OAAAhB,EAAOsG,EAAW,QAAS,CAMzB,IAAK,UAAe,CAClB,OAAOA,EAAU,EACnB,EAQA,IAAK,SAAarH,EAAO,CACnBmH,GAAiB,QAAQnH,CAAK,EAAI,GACpCqH,EAAU,GAAKrH,EAEfH,EAAK,wCAAwC,CAEjD,CACF,CAAC,EAOD2C,EAAO,GAAG,CAAC,UAAW,QAAQ,EAAG,UAAY,CAC3C6E,EAAU,YAAY,CACxB,CAAC,EAMD7E,EAAO,GAAG,SAAU,UAAY,CAC9B6E,EAAU,MAAM,CAClB,CAAC,EAOD7E,EAAO,GAAG,CAAC,eAAgB,QAAQ,EAAG,UAAY,CAChD6E,EAAU,SAAS,CACrB,CAAC,EACMA,CACT,CASA,SAASE,GAAKxF,EAAOQ,EAAY,CAC/B,MAAO,CAOL,OAAQ,SAAgB8C,EAAW,CACjC,OAAI9C,EAAW,UAAU,GAAG,KAAK,EACxB,CAAC8C,EAGHA,CACT,CACF,CACF,CASA,SAASmC,GAAKzF,EAAOQ,EAAY,CAC/B,MAAO,CAOL,OAAQ,SAAgB8C,EAAW,CACjC,IAAIoC,EAAa,KAAK,MAAMpC,EAAY9C,EAAW,MAAM,UAAU,EACnE,OAAO8C,EAAY9C,EAAW,KAAK,MAAQkF,CAC7C,CACF,CACF,CASA,SAASC,GAAM3F,EAAOQ,EAAY,CAChC,MAAO,CAOL,OAAQ,SAAgB8C,EAAW,CACjC,OAAOA,EAAY9C,EAAW,OAAO,KAAO,CAC9C,CACF,CACF,CAUA,SAASoF,GAAS5F,EAAOQ,EAAY,CACnC,MAAO,CAOL,OAAQ,SAAgB8C,EAAW,CACjC,GAAItD,EAAM,SAAS,SAAW,EAAG,CAC/B,IAAI6F,EAAOrF,EAAW,KAAK,MAE3B,OAAIpC,EAASyH,CAAI,EACRvC,EAAYuC,EAAK,OAGnBvC,EAAYuC,EAGrB,OAAOvC,CACT,CACF,CACF,CASA,SAASwC,GAAU9F,EAAOQ,EAAY,CACpC,MAAO,CAOL,OAAQ,SAAgB8C,EAAW,CACjC,IAAIyC,EAAMvF,EAAW,KAAK,MACtBgD,EAAQhD,EAAW,MAAM,MACzBwF,EAAUhG,EAAM,SAAS,QACzBiG,EAAazF,EAAW,MAAM,WAElC,OAAIwF,IAAY,SACP1C,GAAaE,EAAQ,EAAIyC,EAAa,GAGxC3C,EAAY2C,EAAaD,EAAUD,EAAMC,CAClD,CACF,CACF,CAUA,SAASE,GAASlG,EAAOQ,EAAYC,EAAQ,CAQ3C,IAAI0F,EAAe,CAACV,GAAKE,GAAMC,GAASE,EAAQ,EAAE,OAAO9F,EAAM,GAAI,CAACwF,EAAG,CAAC,EACxE,MAAO,CAOL,OAAQ,SAAgBlC,EAAW,CACjC,QAASvH,EAAI,EAAGA,EAAIoK,EAAa,OAAQpK,IAAK,CAC5C,IAAIqK,EAAcD,EAAapK,CAAC,EAE5BuC,EAAW8H,CAAW,GAAK9H,EAAW8H,EAAY,EAAE,MAAM,EAC5D9C,EAAY8C,EAAYpG,EAAOQ,EAAYC,CAAM,EAAE,OAAO6C,CAAS,EAEnExF,EAAK,gFAAgF,EAIzF,OAAOwF,CACT,CACF,CACF,CAEA,SAAS+C,GAAWrG,EAAOQ,EAAYC,EAAQ,CAC7C,IAAI4F,EAAY,CAOd,IAAK,SAAapI,EAAO,CACvB,IAAIqI,EAAYJ,GAAQlG,EAAOQ,CAAU,EAAE,OAAOvC,CAAK,EACnDsI,EAAc,eAAe,OAAO,GAAKD,EAAW,eAAe,EACvE9F,EAAW,KAAK,QAAQ,MAAM,aAAe+F,EAE7C/F,EAAW,KAAK,QAAQ,MAAM,gBAAkB+F,EAEhD/F,EAAW,KAAK,QAAQ,MAAM,UAAY+F,CAC5C,EAOA,OAAQ,UAAkB,CACxB/F,EAAW,KAAK,QAAQ,MAAM,UAAY,EAC5C,EAKA,cAAe,UAAyB,CACtC,IAAII,EAASJ,EAAW,MAAM,OAC1BZ,EAAQI,EAAM,MACduC,EAAUvC,EAAM,SAAS,QAE7B,OAAIQ,EAAW,IAAI,SAAS,GAAG,GAAKA,EAAW,IAAI,SAAS,IAAI,EACvDI,GAAUhB,EAAQ2C,IAInB3C,EAAQ2C,GAAW3B,CAC7B,EAKA,kBAAmB,UAA6B,CAC9C,IAAI4F,EAAiBhG,EAAW,MAAM,WAAaR,EAAM,SAAS,QAElE,OAAIQ,EAAW,IAAI,SAAS,GAAG,GAAKA,EAAW,IAAI,SAAS,IAAI,EAEvDgG,EAAiB,GAGnBA,CACT,CACF,EAOA,OAAA/F,EAAO,GAAG,OAAQ,SAAUZ,EAAS,CACnC,GAAI,CAACG,EAAM,OAAO,UAAU,GAAK,CAACQ,EAAW,IAAI,SAAS,EACxD,OAAO6F,EAAU,IAAIxG,EAAQ,QAAQ,EAGvCW,EAAW,WAAW,MAAM,UAAY,CACtCC,EAAO,KAAK,gBAAgB,EAC5B4F,EAAU,IAAI7F,EAAW,MAAM,WAAaR,EAAM,KAAK,CACzD,CAAC,EACD,IAAIyG,EAAajG,EAAW,MAAM,WAAaA,EAAW,UAAU,cAAc,EAClF,OAAO6F,EAAU,IAAII,EAAajG,EAAW,UAAU,kBAAkB,CAAC,CAC5E,CAAC,EAMDC,EAAO,GAAG,UAAW,UAAY,CAC/B4F,EAAU,OAAO,CACnB,CAAC,EACMA,CACT,CAEA,SAASK,GAAY1G,EAAOQ,EAAYC,EAAQ,CAO9C,IAAIkG,EAAW,GACXD,EAAa,CAOf,QAAS,SAAiBlJ,EAAU,CAClC,IAAI+B,EAAWS,EAAM,SAErB,OAAK2G,EAIE,GAAG,OAAOnJ,EAAU,OAAO,EAAE,OAAO+B,EAAS,mBAAmB,EAH9D,GAAG,OAAO/B,EAAU,GAAG,EAAE,OAAO,KAAK,SAAU,KAAK,EAAE,OAAO+B,EAAS,mBAAmB,CAIpG,EAQA,IAAK,UAAe,CAClB,IAAI/B,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,YACnFgD,EAAW,KAAK,QAAQ,MAAM,WAAa,KAAK,QAAQhD,CAAQ,CAClE,EAOA,OAAQ,UAAkB,CACxBgD,EAAW,KAAK,QAAQ,MAAM,WAAa,EAC7C,EAQA,MAAO,SAAeoG,EAAU,CAC9B,WAAW,UAAY,CACrBA,EAAS,CACX,EAAG,KAAK,QAAQ,CAClB,EAOA,OAAQ,UAAkB,CACxBD,EAAW,GACX,KAAK,IAAI,CACX,EAOA,QAAS,UAAmB,CAC1BA,EAAW,GACX,KAAK,IAAI,CACX,CACF,EACA,OAAA3H,EAAO0H,EAAY,WAAY,CAO7B,IAAK,UAAe,CAClB,IAAInH,EAAWS,EAAM,SAErB,OAAIA,EAAM,OAAO,QAAQ,GAAKQ,EAAW,IAAI,OACpCjB,EAAS,eAGXA,EAAS,iBAClB,CACF,CAAC,EAMDkB,EAAO,GAAG,OAAQ,UAAY,CAC5BiG,EAAW,IAAI,CACjB,CAAC,EAQDjG,EAAO,GAAG,CAAC,eAAgB,SAAU,gBAAgB,EAAG,UAAY,CAClEiG,EAAW,QAAQ,CACrB,CAAC,EAMDjG,EAAO,GAAG,MAAO,UAAY,CAC3BiG,EAAW,OAAO,CACpB,CAAC,EAMDjG,EAAO,GAAG,UAAW,UAAY,CAC/BiG,EAAW,OAAO,CACpB,CAAC,EACMA,CACT,CAQA,IAAIG,GAAkB,GAEtB,GAAI,CACEC,EAAO,OAAO,eAAe,CAAC,EAAG,UAAW,CAC9C,IAAK,UAAe,CAClBD,GAAkB,EACpB,CACF,CAAC,EACD,OAAO,iBAAiB,cAAe,KAAMC,CAAI,EACjD,OAAO,oBAAoB,cAAe,KAAMA,CAAI,CACtD,MAAE,CAAW,CAPP,IAAAA,EASFC,EAAoBF,GAEpBG,EAAe,CAAC,aAAc,WAAW,EACzCC,EAAc,CAAC,YAAa,WAAW,EACvCC,EAAa,CAAC,WAAY,cAAe,UAAW,YAAY,EAChEC,EAAe,CAAC,YAAa,YAAa,UAAW,YAAY,EACrE,SAASC,GAAOpH,EAAOQ,EAAYC,EAAQ,CAMzC,IAAI0E,EAAS,IAAIN,EACbwC,EAAW,EACXC,EAAc,EACdC,EAAc,EACdZ,EAAW,GACX1B,EAAU8B,EAAoB,CAChC,QAAS,EACX,EAAI,GACAK,EAAQ,CAMV,MAAO,UAAiB,CACtB,KAAK,eAAe,CACtB,EAQA,MAAO,SAAe1H,EAAO,CAC3B,GAAI,CAACiH,GAAY,CAAC3G,EAAM,SAAU,CAChC,KAAK,QAAQ,EACb,IAAIwH,EAAQ,KAAK,QAAQ9H,CAAK,EAC9B2H,EAAW,KACXC,EAActJ,EAAMwJ,EAAM,KAAK,EAC/BD,EAAcvJ,EAAMwJ,EAAM,KAAK,EAC/B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB/G,EAAO,KAAK,aAAa,EAE7B,EAOA,KAAM,SAAcf,EAAO,CACzB,GAAI,CAACM,EAAM,SAAU,CACnB,IAAI+D,EAAkB/D,EAAM,SACxByH,EAAa1D,EAAgB,WAC7B2D,EAAa3D,EAAgB,WAC7BL,EAAUK,EAAgB,QAC1ByD,EAAQ,KAAK,QAAQ9H,CAAK,EAC1BiI,EAAU3J,EAAMwJ,EAAM,KAAK,EAAIF,EAC/BM,EAAU5J,EAAMwJ,EAAM,KAAK,EAAID,EAC/BM,EAAQ,KAAK,IAAIF,GAAW,CAAC,EAC7BG,EAAQ,KAAK,IAAIF,GAAW,CAAC,EAC7BG,GAAkB,KAAK,KAAKF,EAAQC,CAAK,EACzCE,GAAgB,KAAK,KAAKF,CAAK,EAGnC,GAFAT,EAAW,KAAK,KAAKW,GAAgBD,EAAe,EAEhDV,EAAW,IAAM,KAAK,GAAKI,EAC7B/H,EAAM,gBAAgB,EACtBc,EAAW,KAAK,KAAKmH,EAAUzJ,GAAQwJ,CAAU,CAAC,EAClDlH,EAAW,KAAK,KAAK,UAAU,IAAIkD,EAAQ,QAAQ,EACnDjD,EAAO,KAAK,YAAY,MAExB,OAAO,GAGb,EAQA,IAAK,SAAaf,EAAO,CACvB,GAAI,CAACM,EAAM,SAAU,CACnB,IAAIiI,EAAmBjI,EAAM,SACzBkI,EAAWD,EAAiB,SAC5BR,EAAaQ,EAAiB,WAC9BvE,EAAUuE,EAAiB,QAC3BT,EAAQ,KAAK,QAAQ9H,CAAK,EAC1ByI,EAAY,KAAK,UAAUzI,CAAK,EAChC0I,EAAgBZ,EAAM,MAAQF,EAC9Be,EAAWhB,EAAW,IAAM,KAAK,GACrC,KAAK,OAAO,EAERe,EAAgBD,GAAaE,EAAWZ,EAC1CjH,EAAW,IAAI,KAAKA,EAAW,UAAU,QAAQ,GAAG,OAAO0H,EAAU,GAAG,CAAC,CAAC,EACjEE,EAAgB,CAACD,GAAaE,EAAWZ,EAClDjH,EAAW,IAAI,KAAKA,EAAW,UAAU,QAAQ,GAAG,OAAO0H,EAAU,GAAG,CAAC,CAAC,EAG1E1H,EAAW,KAAK,KAAK,EAGvBA,EAAW,KAAK,KAAK,UAAU,OAAOkD,EAAQ,QAAQ,EACtD,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpBjD,EAAO,KAAK,WAAW,EAE3B,EAOA,eAAgB,UAA0B,CACxC,IAAIE,EAAQ,KAER2H,EAAmBtI,EAAM,SACzBuI,EAAiBD,EAAiB,eAClCE,EAAgBF,EAAiB,cAEjCC,GACFpD,EAAO,GAAG6B,EAAa,CAAC,EAAGxG,EAAW,KAAK,QAAS,SAAUd,EAAO,CACnEiB,EAAM,MAAMjB,CAAK,CACnB,EAAGuF,CAAO,EAGRuD,GACFrD,EAAO,GAAG6B,EAAa,CAAC,EAAGxG,EAAW,KAAK,QAAS,SAAUd,EAAO,CACnEiB,EAAM,MAAMjB,CAAK,CACnB,EAAGuF,CAAO,CAEd,EAOA,iBAAkB,UAA4B,CAC5CE,EAAO,IAAI6B,EAAa,CAAC,EAAGxG,EAAW,KAAK,QAASyE,CAAO,EAC5DE,EAAO,IAAI6B,EAAa,CAAC,EAAGxG,EAAW,KAAK,QAASyE,CAAO,CAC9D,EAOA,cAAe,UAAyB,CACtC,IAAIwD,EAAS,KAEbtD,EAAO,GAAG8B,EAAazG,EAAW,KAAK,QAASgB,EAAS,SAAU9B,EAAO,CACxE+I,EAAO,KAAK/I,CAAK,CACnB,EAAGM,EAAM,SAAS,QAAQ,EAAGiF,CAAO,CACtC,EAOA,gBAAiB,UAA2B,CAC1CE,EAAO,IAAI8B,EAAazG,EAAW,KAAK,QAASyE,CAAO,CAC1D,EAOA,aAAc,UAAwB,CACpC,IAAIyD,EAAS,KAEbvD,EAAO,GAAG+B,EAAY1G,EAAW,KAAK,QAAS,SAAUd,EAAO,CAC9DgJ,EAAO,IAAIhJ,CAAK,CAClB,CAAC,CACH,EAOA,eAAgB,UAA0B,CACxCyF,EAAO,IAAI+B,EAAY1G,EAAW,KAAK,OAAO,CAChD,EAOA,QAAS,SAAiBd,EAAO,CAC/B,OAAIyH,EAAa,QAAQzH,EAAM,IAAI,EAAI,GAC9BA,EAGFA,EAAM,QAAQ,CAAC,GAAKA,EAAM,eAAe,CAAC,CACnD,EAOA,UAAW,SAAmBA,EAAO,CACnC,IAAIH,EAAWS,EAAM,SAErB,OAAImH,EAAa,QAAQzH,EAAM,IAAI,EAAI,GAC9BH,EAAS,cAGXA,EAAS,cAClB,EAOA,OAAQ,UAAkB,CACxB,OAAAoH,EAAW,GACXnG,EAAW,WAAW,OAAO,EACtB,IACT,EAOA,QAAS,UAAmB,CAC1B,OAAAmG,EAAW,GACXnG,EAAW,WAAW,QAAQ,EACvB,IACT,CACF,EAMA,OAAAC,EAAO,GAAG,cAAe,UAAY,CACnCD,EAAW,KAAK,KAAK,UAAU,IAAIR,EAAM,SAAS,QAAQ,SAAS,CACrE,CAAC,EAMDS,EAAO,GAAG,UAAW,UAAY,CAC/B2G,EAAM,iBAAiB,EACvBA,EAAM,gBAAgB,EACtBA,EAAM,eAAe,EACrBjC,EAAO,QAAQ,CACjB,CAAC,EACMiC,CACT,CAEA,SAASuB,GAAQ3I,EAAOQ,EAAYC,EAAQ,CAM1C,IAAI0E,EAAS,IAAIN,EACb8D,EAAS,CAMX,MAAO,UAAiB,CACtB,KAAK,KAAK,CACZ,EAOA,KAAM,UAAgB,CACpBxD,EAAO,GAAG,YAAa3E,EAAW,KAAK,QAAS,KAAK,SAAS,CAChE,EAOA,OAAQ,UAAkB,CACxB2E,EAAO,IAAI,YAAa3E,EAAW,KAAK,OAAO,CACjD,EAOA,UAAW,SAAmBd,EAAO,CACnCA,EAAM,eAAe,CACvB,CACF,EAMA,OAAAe,EAAO,GAAG,UAAW,UAAY,CAC/BkI,EAAO,OAAO,EACdxD,EAAO,QAAQ,CACjB,CAAC,EACMwD,CACT,CAEA,SAASC,GAAS5I,EAAOQ,EAAYC,EAAQ,CAM3C,IAAI0E,EAAS,IAAIN,EASbgE,EAAW,GASXC,EAAY,GACZF,EAAU,CAMZ,MAAO,UAAiB,CAOtB,KAAK,GAAKpI,EAAW,KAAK,QAAQ,iBAAiB,GAAG,EACtD,KAAK,KAAK,CACZ,EAOA,KAAM,UAAgB,CACpB2E,EAAO,GAAG,QAAS3E,EAAW,KAAK,QAAS,KAAK,KAAK,CACxD,EAOA,OAAQ,UAAkB,CACxB2E,EAAO,IAAI,QAAS3E,EAAW,KAAK,OAAO,CAC7C,EAQA,MAAO,SAAed,EAAO,CACvBoJ,IACFpJ,EAAM,gBAAgB,EACtBA,EAAM,eAAe,EAEzB,EAOA,OAAQ,UAAkB,CAGxB,GAFAoJ,EAAY,GAER,CAACD,EAAU,CACb,QAAS9M,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACrC,KAAK,MAAMA,CAAC,EAAE,UAAY,GAG5B8M,EAAW,GAGb,OAAO,IACT,EAOA,OAAQ,UAAkB,CAGxB,GAFAC,EAAY,GAERD,EAAU,CACZ,QAAS9M,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACrC,KAAK,MAAMA,CAAC,EAAE,UAAY,GAG5B8M,EAAW,GAGb,OAAO,IACT,CACF,EACA,OAAA7J,EAAO4J,EAAS,QAAS,CAMvB,IAAK,UAAe,CAClB,OAAOA,EAAQ,EACjB,CACF,CAAC,EAMDnI,EAAO,GAAG,aAAc,UAAY,CAClCmI,EAAQ,OAAO,CACjB,CAAC,EAMDnI,EAAO,GAAG,YAAa,UAAY,CACjCD,EAAW,WAAW,MAAM,UAAY,CACtCoI,EAAQ,OAAO,CACjB,CAAC,CACH,CAAC,EAMDnI,EAAO,GAAG,UAAW,UAAY,CAC/BmI,EAAQ,OAAO,EACfA,EAAQ,OAAO,EACfzD,EAAO,QAAQ,CACjB,CAAC,EACMyD,CACT,CAEA,IAAIG,GAAe,kCACfC,EAAoB,8BACpBC,GAA6B,GAAG,OAAOD,EAAmB,wBAA0B,EACpFE,GAAyB,GAAG,OAAOF,EAAmB,wBAA0B,EACpF,SAASG,GAAUnJ,EAAOQ,EAAYC,EAAQ,CAM5C,IAAI0E,EAAS,IAAIN,EACbI,EAAU8B,EAAoB,CAChC,QAAS,EACX,EAAI,GACAoC,EAAW,CAOb,MAAO,UAAiB,CAOtB,KAAK,GAAK3I,EAAW,KAAK,KAAK,iBAAiBuI,EAAY,EAQ5D,KAAK,GAAKvI,EAAW,KAAK,KAAK,iBAAiBwI,CAAiB,EAQjE,KAAK,eAAiB,CACpB,SAAUxI,EAAW,KAAK,KAAK,iBAAiByI,EAA0B,EAC1E,KAAMzI,EAAW,KAAK,KAAK,iBAAiB0I,EAAsB,CACpE,EACA,KAAK,YAAY,CACnB,EAOA,UAAW,UAAqB,CAC9B,QAASnN,EAAI,EAAGA,EAAI,KAAK,GAAG,OAAQA,IAClC,KAAK,SAAS,KAAK,GAAGA,CAAC,EAAE,QAAQ,CAErC,EAOA,aAAc,UAAwB,CACpC,QAASA,EAAI,EAAGA,EAAI,KAAK,GAAG,OAAQA,IAClC,KAAK,YAAY,KAAK,GAAGA,CAAC,EAAE,QAAQ,CAExC,EAQA,SAAU,SAAkBqN,EAAU,CACpC,IAAI7J,EAAWS,EAAM,SACjBF,EAAOsJ,EAASpJ,EAAM,KAAK,EAE1BF,GAIDA,IACFA,EAAK,UAAU,IAAIP,EAAS,QAAQ,IAAI,MAAM,EAC9CiD,GAAS1C,CAAI,EAAE,QAAQ,SAAU6D,EAAS,CACxCA,EAAQ,UAAU,OAAOpE,EAAS,QAAQ,IAAI,MAAM,CACtD,CAAC,EAEL,EAQA,YAAa,SAAqB6J,EAAU,CAC1C,IAAItJ,EAAOsJ,EAASpJ,EAAM,KAAK,EAE3BF,GACFA,EAAK,UAAU,OAAOE,EAAM,SAAS,QAAQ,IAAI,MAAM,CAE3D,EAKA,cAAe,UAAyB,CACtC,GAAI,CAAAA,EAAM,SAAS,OAInB,KAAIqJ,EAAOF,EAAS,eAAe,KAC/BtH,EAAWsH,EAAS,eAAe,SACvC,KAAK,gBAAgBE,EAAMxH,CAAQ,EAE/B7B,EAAM,QAAU,GAClB,KAAK,aAAa6B,CAAQ,EAGxB7B,EAAM,QAAUQ,EAAW,IAAI,QACjC,KAAK,aAAa6I,CAAI,EAE1B,EAOA,gBAAiB,UAA2B,CAG1C,QAFI9J,EAAWS,EAAM,SAEZsJ,EAAO,UAAU,OAAQC,EAAQ,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAChFD,EAAMC,CAAI,EAAI,UAAUA,CAAI,EAG9BD,EAAM,QAAQ,SAAUE,EAAM,CAC5B5G,EAAQ4G,CAAI,EAAE,QAAQ,SAAUC,EAAS,CACvCA,EAAQ,UAAU,OAAOnK,EAAS,QAAQ,MAAM,QAAQ,CAC1D,CAAC,CACH,CAAC,CACH,EAOA,aAAc,UAAwB,CAGpC,QAFIA,EAAWS,EAAM,SAEZ2J,EAAQ,UAAU,OAAQJ,EAAQ,IAAI,MAAMI,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACrFL,EAAMK,CAAK,EAAI,UAAUA,CAAK,EAGhCL,EAAM,QAAQ,SAAUE,EAAM,CAC5B5G,EAAQ4G,CAAI,EAAE,QAAQ,SAAUC,EAAS,CACvCA,EAAQ,UAAU,IAAInK,EAAS,QAAQ,MAAM,QAAQ,CACvD,CAAC,CACH,CAAC,CACH,EAOA,YAAa,UAAuB,CAClC,QAASxD,EAAI,EAAGA,EAAI,KAAK,GAAG,OAAQA,IAClC,KAAK,KAAK,KAAK,GAAGA,CAAC,EAAE,QAAQ,CAEjC,EAOA,eAAgB,UAA0B,CACxC,QAASA,EAAI,EAAGA,EAAI,KAAK,GAAG,OAAQA,IAClC,KAAK,OAAO,KAAK,GAAGA,CAAC,EAAE,QAAQ,CAEnC,EAQA,KAAM,SAAc8N,EAAU,CAC5B,QAAS9N,EAAI,EAAGA,EAAI8N,EAAS,OAAQ9N,IACnCoJ,EAAO,GAAG,QAAS0E,EAAS9N,CAAC,EAAG,KAAK,KAAK,EAC1CoJ,EAAO,GAAG,aAAc0E,EAAS9N,CAAC,EAAG,KAAK,MAAOkJ,CAAO,CAE5D,EAQA,OAAQ,SAAgB4E,EAAU,CAChC,QAAS9N,EAAI,EAAGA,EAAI8N,EAAS,OAAQ9N,IACnCoJ,EAAO,IAAI,CAAC,QAAS,YAAY,EAAG0E,EAAS9N,CAAC,CAAC,CAEnD,EAUA,MAAO,SAAe2D,EAAO,CACvB,CAACqH,GAAqBrH,EAAM,OAAS,cACvCA,EAAM,eAAe,EAGvB,IAAIoB,EAAYpB,EAAM,cAAc,aAAa,gBAAgB,EACjEc,EAAW,IAAI,KAAKA,EAAW,UAAU,QAAQM,CAAS,CAAC,CAC7D,CACF,EACA,OAAA9B,EAAOmK,EAAU,QAAS,CAMxB,IAAK,UAAe,CAClB,OAAOA,EAAS,EAClB,CACF,CAAC,EAOD1I,EAAO,GAAG,CAAC,cAAe,YAAY,EAAG,UAAY,CACnD0I,EAAS,UAAU,CACrB,CAAC,EAKD1I,EAAO,GAAG,CAAC,cAAe,KAAK,EAAG,UAAY,CAC5C0I,EAAS,cAAc,CACzB,CAAC,EAMD1I,EAAO,GAAG,UAAW,UAAY,CAC/B0I,EAAS,eAAe,EACxBA,EAAS,aAAa,EACtBhE,EAAO,QAAQ,CACjB,CAAC,EACMgE,CACT,CAEA,SAASW,GAAU9J,EAAOQ,EAAYC,EAAQ,CAM5C,IAAI0E,EAAS,IAAIN,EACbiF,EAAW,CAMb,MAAO,UAAiB,CAClB9J,EAAM,SAAS,UACjB,KAAK,KAAK,CAEd,EAOA,KAAM,UAAgB,CACpBmF,EAAO,GAAG,QAAS,SAAU,KAAK,KAAK,CACzC,EAOA,OAAQ,UAAkB,CACxBA,EAAO,IAAI,QAAS,QAAQ,CAC9B,EAQA,MAAO,SAAezF,EAAO,CAC3B,IAAIwI,EAAWlI,EAAM,SAAS,SAE1BN,EAAM,OAAS,cACjBc,EAAW,IAAI,KAAKA,EAAW,UAAU,QAAQ,GAAG,OAAO0H,EAAU,GAAG,CAAC,CAAC,EAGxExI,EAAM,OAAS,aACjBc,EAAW,IAAI,KAAKA,EAAW,UAAU,QAAQ,GAAG,OAAO0H,EAAU,GAAG,CAAC,CAAC,CAE9E,CACF,EAOA,OAAAzH,EAAO,GAAG,CAAC,UAAW,QAAQ,EAAG,UAAY,CAC3CqJ,EAAS,OAAO,CAClB,CAAC,EAMDrJ,EAAO,GAAG,SAAU,UAAY,CAC9BqJ,EAAS,MAAM,CACjB,CAAC,EAMDrJ,EAAO,GAAG,UAAW,UAAY,CAC/B0E,EAAO,QAAQ,CACjB,CAAC,EACM2E,CACT,CAEA,SAASC,GAAU/J,EAAOQ,EAAYC,EAAQ,CAM5C,IAAI0E,EAAS,IAAIN,EACbkF,EAAW,CAMb,MAAO,UAAiB,CACtB,KAAK,OAAO,EACZ,KAAK,MAAM,EAEP/J,EAAM,SAAS,YACjB,KAAK,KAAK,CAEd,EAOA,OAAQ,UAAkB,CACxB,KAAK,GAAK,EACZ,EAOA,QAAS,UAAmB,CAC1B,KAAK,GAAK,EACZ,EAQA,MAAO,UAAiB,CACtB,IAAIW,EAAQ,KAEP,KAAK,KAIV,KAAK,OAAO,EAERX,EAAM,SAAS,UACbzB,GAAY,KAAK,EAAE,IACrB,KAAK,GAAK,YAAY,UAAY,CAChCoC,EAAM,KAAK,EAEXH,EAAW,IAAI,KAAK,GAAG,EAEvBG,EAAM,MAAM,EAEZF,EAAO,KAAK,UAAU,CACxB,EAAG,KAAK,IAAI,GAGlB,EAOA,KAAM,UAAgB,CACpB,KAAK,GAAK,cAAc,KAAK,EAAE,CACjC,EAOA,KAAM,UAAgB,CACpB,IAAIgI,EAAS,KAEbtD,EAAO,GAAG,YAAa3E,EAAW,KAAK,KAAM,UAAY,CACnDiI,EAAO,IACTA,EAAO,KAAK,CAEhB,CAAC,EACDtD,EAAO,GAAG,WAAY3E,EAAW,KAAK,KAAM,UAAY,CAClDiI,EAAO,IACTA,EAAO,MAAM,CAEjB,CAAC,CACH,EAOA,OAAQ,UAAkB,CACxBtD,EAAO,IAAI,CAAC,YAAa,UAAU,EAAG3E,EAAW,KAAK,IAAI,CAC5D,CACF,EACA,OAAAxB,EAAO+K,EAAU,OAAQ,CAOvB,IAAK,UAAe,CAClB,IAAIC,EAAWxJ,EAAW,KAAK,OAAOR,EAAM,KAAK,EAAE,aAAa,qBAAqB,EAErF,OACShC,EADLgM,GAIShK,EAAM,SAAS,QAHL,CAIzB,CACF,CAAC,EAODS,EAAO,GAAG,CAAC,UAAW,QAAQ,EAAG,UAAY,CAC3CsJ,EAAS,OAAO,CAClB,CAAC,EAUDtJ,EAAO,GAAG,CAAC,aAAc,cAAe,QAAQ,EAAG,UAAY,CAC7DsJ,EAAS,KAAK,CAChB,CAAC,EACDtJ,EAAO,GAAG,CAAC,QAAS,SAAS,EAAG,UAAY,CAC1CsJ,EAAS,QAAQ,EACjBA,EAAS,KAAK,CAChB,CAAC,EAQDtJ,EAAO,GAAG,CAAC,YAAa,WAAW,EAAG,UAAY,CAChDsJ,EAAS,MAAM,CACjB,CAAC,EAQDtJ,EAAO,GAAG,CAAC,MAAM,EAAG,UAAY,CAC9BsJ,EAAS,OAAO,EAChBA,EAAS,MAAM,CACjB,CAAC,EAMDtJ,EAAO,GAAG,SAAU,UAAY,CAC9BsJ,EAAS,MAAM,CACjB,CAAC,EAMDtJ,EAAO,GAAG,UAAW,UAAY,CAC/B0E,EAAO,QAAQ,CACjB,CAAC,EACM4E,CACT,CASA,SAASE,GAAgBC,EAAQ,CAC/B,OAAI9L,EAAS8L,CAAM,EACV/K,GAAS+K,CAAM,GAEtBpM,EAAK,sCAAsC,EAGtC,CAAC,EACV,CAEA,SAASqM,GAAanK,EAAOQ,EAAYC,EAAQ,CAM/C,IAAI0E,EAAS,IAAIN,EAObtF,EAAWS,EAAM,SASjBkK,EAASD,GAAgB1K,EAAS,WAAW,EAO7C1B,EAAW,OAAO,OAAO,CAAC,EAAG0B,CAAQ,EACrC4K,EAAc,CAOhB,MAAO,SAAeD,EAAQ,CAC5B,GAAI,OAAO,OAAO,WAAe,KAC/B,QAASE,KAASF,EAChB,GAAIA,EAAO,eAAeE,CAAK,GACzB,OAAO,WAAW,eAAe,OAAOA,EAAO,KAAK,CAAC,EAAE,QACzD,OAAOF,EAAOE,CAAK,EAM3B,OAAOvM,CACT,CACF,EAMA,cAAO,OAAO0B,EAAU4K,EAAY,MAAMD,CAAM,CAAC,EAMjD/E,EAAO,GAAG,SAAU,OAAQ3D,EAAS,UAAY,CAC/CxB,EAAM,SAAWV,EAAaC,EAAU4K,EAAY,MAAMD,CAAM,CAAC,CACnE,EAAGlK,EAAM,SAAS,QAAQ,CAAC,EAM3BS,EAAO,GAAG,SAAU,UAAY,CAC9ByJ,EAASD,GAAgBC,CAAM,EAC/BrM,EAAW,OAAO,OAAO,CAAC,EAAG0B,CAAQ,CACvC,CAAC,EAMDkB,EAAO,GAAG,UAAW,UAAY,CAC/B0E,EAAO,IAAI,SAAU,MAAM,CAC7B,CAAC,EACMgF,CACT,CAEA,IAAIE,GAAa,CAEf,KAAMrH,GACN,UAAWqD,GACX,WAAYK,GACZ,UAAWpB,GACX,KAAMnC,GACN,MAAOI,GACP,KAAMpB,GACN,KAAMiB,GACN,OAAQS,GACR,OAAQqB,GACR,MAAOzB,GACP,IAAKlD,GAEL,MAAO6G,GACP,OAAQuB,GACR,QAASC,GACT,SAAUO,GACV,SAAUW,GACV,SAAUC,GACV,YAAaI,EACf,EAEInK,EAAqB,SAAUsK,EAAO,CACxClO,GAAU4D,EAAOsK,CAAK,EAEtB,IAAIC,EAASvN,GAAagD,CAAK,EAE/B,SAASA,GAAQ,CACf,OAAAvE,EAAgB,KAAMuE,CAAK,EAEpBuK,EAAO,MAAM,KAAM,SAAS,CACrC,CAEA,OAAAtO,EAAa+D,EAAO,CAAC,CACnB,IAAK,QACL,MAAO,UAAiB,CACtB,IAAIrB,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EACtF,OAAOlB,EAAKjB,EAAgBwD,EAAM,SAAS,EAAG,QAAS,IAAI,EAAE,KAAK,KAAM,OAAO,OAAO,CAAC,EAAGqK,GAAY1L,CAAU,CAAC,CACnH,CACF,CAAC,CAAC,EAEKqB,CACT,EAAED,EAAO,EC9xHT,SAAS,iBAAiB,cAAe,IAAM,CAE3C,OAAO,KAAK,aAAc,KAAO,CAC7B,SAAU,GACV,MAAO,CACH,KAAK,OAAO,WAAayK,GAAU,CAC3BA,GACA,WAAW,IAAM,KAAK,eAAe,EAAG,GAAG,CAEnD,CAAC,CACL,EACA,gBAAiB,CACb,OAAO,SAAS,CAAC,KAAM,EAAG,IAAK,SAAS,KAAK,aAAc,SAAU,QAAQ,CAAC,CAClF,CACJ,EAAE,EAGF,OAAO,KAAK,UAAW,KAAO,CAC1B,SAAU,GACV,OAAQ,KACR,KAAM,KACN,MAAO,CACH,KAAK,KAAO,SAAS,cAAc,MAAM,CAC7C,EACA,UAAW,CACP,KAAK,SAAW,GAChB,KAAK,KAAK,UAAU,IAAI,QAAQ,CACpC,EACA,WAAY,CACR,KAAK,SAAW,GAChB,KAAK,KAAK,UAAU,OAAO,QAAQ,CACvC,CACJ,EAAE,CACN,CAAC,EAED,GAAI,SAAS,iBAAiB,QAAQ,IAAM,KAIxC,IAFIC,EAAU,SAAS,iBAAiB,QAAQ,EAEvCC,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAC5BC,EAAQ,IAAIC,EAAMH,EAAQC,CAAC,EAAG,CAC9B,KAAM,WACN,QAAS,EACT,YAAa,CACT,IAAK,CACD,QAAS,CACb,EACA,IAAK,CACD,QAAS,CACb,CACJ,EACA,QAAS,SACT,SAAU,GACd,CAAC,EAEDC,EAAM,MAAM,EAlBZ,IAAAF,EAGIE,EADCD,EAoBb,GAAI,SAAS,iBAAiB,mBAAmB,IAAM,KAInD,IAFID,EAAU,SAAS,iBAAiB,mBAAmB,EAElDC,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAC5BC,EAAQ,IAAIC,EAAMH,EAAQC,CAAC,EAAG,CAC9B,KAAM,SACN,QAAS,EACT,QAAS,EACT,QAAS,SACT,OAAQ,EACZ,CAAC,EAEDC,EAAM,MAAM,EAXZ,IAAAF,EAGIE,EADCD", "names": ["_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "_assertThisInitialized", "self", "_possibleConstructorReturn", "call", "_createSuper", "Derived", "hasNativeReflectConstruct", "Super", "result", "NewTarget", "_superPropBase", "object", "property", "_get", "receiver", "base", "desc", "defaults", "warn", "msg", "toInt", "value", "toFloat", "isString", "isObject", "type", "isFunction", "isUndefined", "isArray", "mount", "glide", "extensions", "events", "components", "name", "_name", "define", "prop", "definition", "sortKeys", "r", "k", "mergeOptions", "settings", "options", "EventsBus", "event", "handler", "index", "context", "item", "Glide$1", "Glide", "selector", "transformers", "pattern", "distance", "interval", "status", "Run", "Components", "Events", "move", "_this", "length", "steps", "direction", "viewSize", "calculateForwardIndex", "normalizeForwardIndex", "_index", "calculateBackwardIndex", "normalizeBackwardIndex", "view", "step", "now", "throttle", "func", "wait", "timeout", "args", "previous", "later", "throttled", "at", "remaining", "MARGIN_TYPE", "Gaps", "slides", "len", "style", "perView", "siblings", "node", "n", "matched", "exist", "toArray", "nodeList", "TRACK_SELECTOR", "Html", "slide", "t", "Peek", "Move", "offset", "translate", "Sizes", "width", "Build", "classes", "sibling", "_Glide$settings$class", "Clones", "items", "_Glide$settings", "cloningRatio", "peekIncrementer", "cloneCount", "append", "prepend", "clone", "_i", "_clone", "_Components$Html", "wrapper", "half", "_i2", "_i3", "EventsBinder", "listeners", "el", "closure", "capture", "Resize", "Binder", "VALID_DIRECTIONS", "FLIPED_MOVEMENTS", "Direction", "token", "Rtl", "Gap", "multiplier", "Grow", "Peeking", "peek", "Focusing", "gap", "focusAt", "slideWidth", "mutator", "TRANSFORMERS", "transformer", "Translate", "transform", "translate3d", "travelDistance", "startWidth", "Transition", "disabled", "callback", "supportsPassive", "opts", "supportsPassive$1", "START_EVENTS", "MOVE_EVENTS", "END_EVENTS", "MOUSE_EVENTS", "Swipe", "swipeSin", "swipeStartX", "swipeStartY", "swipe", "touchAngle", "touchRatio", "subExSx", "subEySy", "powEX", "powEY", "swipeHypotenuse", "swipeCathetus", "_Glide$settings2", "perSwipe", "threshold", "swipeDistance", "swipeDeg", "_Glide$settings3", "swipeThreshold", "dragThreshold", "_this2", "_this3", "Images", "Anchors", "detached", "prevented", "NAV_SELECTOR", "CONTROLS_SELECTOR", "PREVIOUS_CONTROLS_SELECTOR", "NEXT_CONTROLS_SELECTOR", "Controls", "controls", "next", "_len", "lists", "_key", "list", "element", "_len2", "_key2", "elements", "Keyboard", "Autoplay", "autoplay", "sortBreakpoints", "points", "Breakpoints", "point", "COMPONENTS", "_Core", "_super", "value", "sliders", "i", "glide", "Glide"] }