{"version":3,"file":"application-B1oUVx0W.js","sources":["../../../app/assets/application_controllers/accordion_controller.js","../../../node_modules/tiny-slider/dist/tiny-slider.js","../../../app/assets/application_controllers/careers_controller.js","../../../app/assets/application_controllers/dropdown_controller.js","../../../app/assets/application_controllers/home_controller.js","../../../app/assets/application_controllers/image_preview_controller.js","../../../node_modules/tailwindcss-stimulus-components/dist/tailwindcss-stimulus-components.module.js","../../../app/assets/application_controllers/modal_controller.js","../../../app/assets/application_controllers/portfolio_controller.js","../../../app/assets/application_controllers/pricing_controller.js","../../../app/assets/application_controllers/slider_controller.js","../../../app/assets/application_controllers/tabs_controller.js","../../../node_modules/@rails/request.js/src/fetch_response.js","../../../node_modules/@rails/request.js/src/request_interceptor.js","../../../node_modules/@rails/request.js/src/lib/utils.js","../../../node_modules/@rails/request.js/src/fetch_request.js","../../../node_modules/@rails/request.js/src/verbs.js","../../../app/assets/application_controllers/turbo_controller.js","../../../app/assets/application_controllers/turbo_form_redirect_controller.js","../../../app/assets/application_controllers/video_controller.js","../../../app/assets/entrypoints/application.js"],"sourcesContent":["import { Controller } from '@hotwired/stimulus'\n\nexport default class Accordion extends Controller {\n static targets = ['accordion']\n\n manageAccordionState () {\n this.notClickedBlocks = this.accordionTargets.filter(\n accordionBlock => accordionBlock.id !== window.event.currentTarget.id\n )\n this.notClickedBlocks.forEach(notClickedBlock => notClickedBlock.classList.remove('accordion__block-open'))\n window.event.currentTarget.classList.toggle('accordion__block-open')\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar win$1 = window;\nvar raf = win$1.requestAnimationFrame || win$1.webkitRequestAnimationFrame || win$1.mozRequestAnimationFrame || win$1.msRequestAnimationFrame || function (cb) {\n return setTimeout(cb, 16);\n};\n\nvar win = window;\nvar caf = win.cancelAnimationFrame || win.mozCancelAnimationFrame || function (id) {\n clearTimeout(id);\n};\n\nfunction extend() {\n var obj,\n name,\n copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n return target;\n}\n\nfunction checkStorageValue(value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}\n\nfunction setLocalStorage(storage, key, value, access) {\n if (access) {\n try {\n storage.setItem(key, value);\n } catch (e) {}\n }\n\n return value;\n}\n\nfunction getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n return 'tns' + window.tnsId;\n}\n\nfunction getBody() {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}\n\nvar docElement = document.documentElement;\n\nfunction setFakeBody(body) {\n var docOverflow = '';\n\n if (body.fake) {\n docOverflow = docElement.style.overflow; //avoid crashing IE8, if background image is used\n\n body.style.background = ''; //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}\n\nfunction resetFakeBody(body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow; // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n\n docElement.offsetHeight;\n }\n}\n\n// get css-calc \nfunction calc() {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n result = false;\n body.appendChild(div);\n\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n\n if (div.offsetWidth === 100) {\n result = val.replace(str, '');\n break;\n }\n }\n } catch (e) {}\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n return result;\n}\n\n// get subpixel support value\nfunction percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '<div></div>';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n return supported;\n}\n\nfunction mediaquerySupport() {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n return position === \"absolute\";\n}\n\n// create and append style sheet\nfunction createStyleSheet(media, nonce) {\n // Create the <style> tag\n var style = document.createElement(\"style\"); // style.setAttribute(\"type\", \"text/css\");\n // Add a media (and/or media query) here if you'd like!\n // style.setAttribute(\"media\", \"screen\")\n // style.setAttribute(\"media\", \"only screen and (max-width : 1024px)\")\n\n if (media) {\n style.setAttribute(\"media\", media);\n } // Add nonce attribute for Content Security Policy\n\n\n if (nonce) {\n style.setAttribute(\"nonce\", nonce);\n } // WebKit hack :(\n // style.appendChild(document.createTextNode(\"\"));\n // Add the <style> element to the page\n\n\n document.querySelector('head').appendChild(style);\n return style.sheet ? style.sheet : style.styleSheet;\n}\n\n// cross browsers addRule method\nfunction addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ? sheet.insertRule(selector + '{' + rules + '}', index) : sheet.addRule(selector, rules, index); // });\n}\n\n// cross browsers addRule method\nfunction removeCSSRule(sheet, index) {\n // return raf(function() {\n 'deleteRule' in sheet ? sheet.deleteRule(index) : sheet.removeRule(index); // });\n}\n\nfunction getCssRulesLength(sheet) {\n var rule = 'insertRule' in sheet ? sheet.cssRules : sheet.rules;\n return rule.length;\n}\n\nfunction toDegree(y, x) {\n return Math.atan2(y, x) * (180 / Math.PI);\n}\n\nfunction getTouchDirection(angle, range) {\n var direction = false,\n gap = Math.abs(90 - Math.abs(angle));\n\n if (gap >= 90 - range) {\n direction = 'horizontal';\n } else if (gap <= range) {\n direction = 'vertical';\n }\n\n return direction;\n}\n\n// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nfunction forEach(arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}\n\nvar classListSupport = ('classList' in document.createElement('_'));\n\nvar hasClass = classListSupport ? function (el, str) {\n return el.classList.contains(str);\n} : function (el, str) {\n return el.className.indexOf(str) >= 0;\n};\n\nvar addClass = classListSupport ? function (el, str) {\n if (!hasClass(el, str)) {\n el.classList.add(str);\n }\n} : function (el, str) {\n if (!hasClass(el, str)) {\n el.className += ' ' + str;\n }\n};\n\nvar removeClass = classListSupport ? function (el, str) {\n if (hasClass(el, str)) {\n el.classList.remove(str);\n }\n} : function (el, str) {\n if (hasClass(el, str)) {\n el.className = el.className.replace(str, '');\n }\n};\n\nfunction hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}\n\nfunction getAttr(el, attr) {\n return el.getAttribute(attr);\n}\n\nfunction isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\";\n}\n\nfunction setAttrs(els, attrs) {\n els = isNodeList(els) || els instanceof Array ? els : [els];\n\n if (Object.prototype.toString.call(attrs) !== '[object Object]') {\n return;\n }\n\n for (var i = els.length; i--;) {\n for (var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}\n\nfunction removeAttrs(els, attrs) {\n els = isNodeList(els) || els instanceof Array ? els : [els];\n attrs = attrs instanceof Array ? attrs : [attrs];\n var attrLength = attrs.length;\n\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}\n\nfunction arrayFromNodeList(nl) {\n var arr = [];\n\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n\n return arr;\n}\n\nfunction hideElement(el, forceHide) {\n if (el.style.display !== 'none') {\n el.style.display = 'none';\n }\n}\n\nfunction showElement(el, forceHide) {\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n}\n\nfunction isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}\n\nfunction whichProperty(props) {\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n prefixes.forEach(function (prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n props = arr;\n }\n\n var el = document.createElement('fakeelement');\n props.length;\n\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n\n if (el.style[prop] !== undefined) {\n return prop;\n }\n }\n\n return false; // explicit for ie9-\n}\n\nfunction has3DTransforms(tf) {\n if (!tf) {\n return false;\n }\n\n if (!window.getComputedStyle) {\n return false;\n }\n\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n cssTF += 'transform'; // Add it to the body to get the computed style\n\n body.insertBefore(el, null);\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n return has3d !== undefined && has3d.length > 0 && has3d !== \"none\";\n}\n\n// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nfunction getEndProperty(propIn, propOut) {\n var endProp = false;\n\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n\n return endProp;\n}\n\n// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\n\nvar passiveOption = supportsPassive ? {\n passive: true\n} : false;\n\nfunction addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}\n\nfunction removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}\n\nfunction Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function (eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function (fn) {\n fn(data, eventName);\n });\n }\n }\n };\n}\n\nfunction jsTransform(element, attr, prefix, postfix, to, duration, callback) {\n var tick = Math.min(duration, 10),\n unit = to.indexOf('%') >= 0 ? '%' : 'px',\n to = to.replace(unit, ''),\n from = Number(element.style[attr].replace(prefix, '').replace(postfix, '').replace(unit, '')),\n positionTick = (to - from) / duration * tick;\n setTimeout(moveElement, tick);\n\n function moveElement() {\n duration -= tick;\n from += positionTick;\n element.style[attr] = prefix + from + unit + postfix;\n\n if (duration > 0) {\n setTimeout(moveElement, tick);\n } else {\n callback();\n }\n }\n}\n\n// Object.keys\nif (!Object.keys) {\n Object.keys = function (object) {\n var keys = [];\n\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n\n return keys;\n };\n} // ChildNode.remove\n\n\nif (!(\"remove\" in Element.prototype)) {\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\nvar tns = function (options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date();\n\n try {\n tnsStorage = win.localStorage;\n\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n\n if (!localStorageAccess) {\n tnsStorage = {};\n }\n } catch (e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function (item) {\n tnsStorage.removeItem(item);\n });\n } // update browserInfo\n\n\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess); // get element nodes from selectors\n\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n tnsList.forEach(function (item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) {\n console.warn('Can\\'t find', options[item]);\n }\n\n return;\n }\n }\n }); // make sure at least 1 slide\n\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) {\n console.warn('No slides found in', options.container);\n }\n\n return;\n } // update options\n\n\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n\n for (var key in responsive) {\n var val = responsive[key]; // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n\n val = typeof val === 'number' ? {\n items: val\n } : val;\n responsiveTem[key] = val;\n }\n\n responsive = responsiveTem;\n responsiveTem = null;\n } // update options\n\n\n function updateOptions(obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') {\n obj[key] = 'page';\n }\n\n if (key === 'edgePadding') {\n obj[key] = false;\n }\n\n if (key === 'autoHeight') {\n obj[key] = false;\n }\n } // update responsive options\n\n\n if (key === 'responsive') {\n updateOptions(obj[key]);\n }\n }\n }\n\n if (!carousel) {\n updateOptions(options);\n } // === define and set variables ===\n\n\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n\n if (responsive) {\n setBreakpointZone();\n }\n\n if (carousel) {\n container.className += ' tns-vpfix';\n } // fixedWidth: viewport > rightBoundary > indexMax\n\n\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions,\n // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = !carousel || !loop ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = function () {\n if (fixedWidth) {\n return function () {\n return center && !loop ? slideCount - 1 : Math.ceil(-rightBoundary / (fixedWidth + gutter));\n };\n } else if (autoWidth) {\n return function () {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= -rightBoundary) {\n return i;\n }\n }\n };\n } else {\n return function () {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n }(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index;\n getCurrentSlide();\n var indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {\n 'visibilitychange': onVisibilityChange\n },\n docmentKeydownEvent = {\n 'keydown': onDocumentKeydown\n },\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n },\n dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false; // controls\n\n\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n } // nav\n\n\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n } // autoplay\n\n\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['<span class=\\'tns-visually-hidden\\'>', ' animation</span>'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n panStart = false,\n rafIndex,\n getDist = horizontal ? function (a, b) {\n return a.x - b.x;\n } : function (a, b) {\n return a.y - b.y;\n };\n } // disable slider when slidecount <= items\n\n\n if (!autoWidth) {\n resetVariblesWhenDisable(disable || freeze);\n }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n }\n\n if (carousel) {\n container.className = container.className.replace('tns-vpfix', '');\n }\n\n initStructure();\n initSheet();\n initSliderTransform(); // === COMMON FUNCTIONS === //\n\n function resetVariblesWhenDisable(condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide() {\n var tem = carousel ? index - cloneCount : index;\n\n while (tem < 0) {\n tem += slideCount;\n }\n\n return tem % slideCount + 1;\n }\n\n function getStartIndex(ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex(i) {\n if (i == null) {\n i = index;\n }\n\n if (carousel) {\n i -= cloneCount;\n }\n\n while (i < 0) {\n i += slideCount;\n }\n\n return Math.floor(i % slideCount);\n }\n\n function getCurrentNavIndex() {\n var absIndex = getAbsIndex(),\n result;\n result = navAsThumbnails ? absIndex : fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : Math.floor(absIndex / items); // set active nav to the last one when reaches the right edge\n\n if (!loop && carousel && index === indexMax) {\n result = pages - 1;\n }\n\n return result;\n }\n\n function getItemsMax() {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || fixedWidth && !viewportMax) {\n return slideCount - 1; // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) {\n arr.push(options[str]);\n }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n\n if (tem && (fixedWidth || tem < slideCount)) {\n arr.push(tem);\n }\n }\n }\n\n if (!arr.length) {\n arr.push(0);\n }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop() {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount) / 2) : itemsMax * 4 - slideCount;\n result = Math.max(itemsMax, result);\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth() {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition(pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth(el) {\n if (el == null) {\n return;\n }\n\n var div = doc.createElement('div'),\n rect,\n width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth() {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption(item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) {\n return true;\n }\n }\n }\n\n return false;\n }\n } // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n\n\n function getOption(item, ww) {\n if (ww == null) {\n ww = windowWidth;\n }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) {\n result = responsive[bp][item];\n }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') {\n result = getOption('items');\n }\n\n if (!carousel && (item === 'slideBy' || item === 'items')) {\n result = Math.floor(result);\n }\n\n return result;\n }\n }\n\n function getSlideMarginLeft(i) {\n return CALC ? CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles(edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n\n if (gutterTem) {\n gap -= gutterTem;\n }\n\n str = horizontal ? 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' : 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';';\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) {\n str += getTransitionDurationStyle(speedTem);\n }\n\n return str;\n }\n\n function getContainerWidth(fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ? CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' : slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle(fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = fixedWidthTem + gutterTem + 'px';\n } else {\n if (!carousel) {\n itemsTem = Math.floor(itemsTem);\n }\n\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? CALC + '(100% / ' + dividend + ')' : 100 / dividend + '%';\n }\n\n width = 'width:' + width; // inner slider: overwrite outer slider styles\n\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle(gutterTem) {\n var str = ''; // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix(name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n\n if (prefix) {\n prefix = '-' + prefix + '-';\n }\n\n return prefix;\n }\n\n function getTransitionDurationStyle(speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle(speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure() {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner';\n hasOption('gutter');\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw'; // set container properties\n\n if (container.id === '') {\n container.id = slideId;\n }\n\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n\n if (autoWidth) {\n newContainerClasses += ' tns-autowidth';\n }\n\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses; // add constrain layer for carousel\n\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container); // add id, class, aria attributes\n // before clone slides\n\n forEach(slideItems, function (item, i) {\n addClass(item, 'tns-item');\n\n if (!item.id) {\n item.id = slideId + '-item' + i;\n }\n\n if (!carousel && animateNormal) {\n addClass(item, animateNormal);\n }\n\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n }); // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j % slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n }\n\n function initSliderTransform() {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img'); // add img load event listener\n\n forEach(imgs, function (img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n img.src = src; // data img\n } else {\n imgLoaded(img);\n }\n }\n }); // set imgsComplete\n\n raf(function () {\n imgsLoadedCheck(arrayFromNodeList(imgs), function () {\n imgsComplete = true;\n });\n }); // reset imgs for auto height: check visible imgs only\n\n if (hasOption('autoHeight')) {\n imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1));\n }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function () {\n imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck);\n });\n } else {\n // set container transform property\n if (carousel) {\n doContainerTransformSilent();\n } // update slider tools and events\n\n\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck() {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n Math.abs(left - right) <= 1 ? initSliderTransformCore() : setTimeout(function () {\n stylesApplicationCheck();\n }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n function initSliderTransformCore() {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n\n if (freezable) {\n freeze = getFreeze();\n }\n\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n } // set container transform property\n\n\n if (carousel) {\n doContainerTransformSilent();\n } // update slider tools and events\n\n\n initTools();\n initEvents();\n }\n\n function initSheet() {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n } // #### LAYOUT\n // ## INLINE-BLOCK VS FLOAT\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n\n\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n } // ## BASIC STYLES\n\n\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n } // inner wrapper styles\n\n\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet)); // container styles\n\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n\n if (TRANSITIONDURATION) {\n str += getTransitionDurationStyle(speed);\n }\n\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n } // slide styles\n\n\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n\n if (options.gutter) {\n str += getSlideGutterStyle(options.gutter);\n } // set gallery items transition-duration\n\n\n if (!carousel) {\n if (TRANSITIONDURATION) {\n str += getTransitionDurationStyle(speed);\n }\n\n if (ANIMATIONDURATION) {\n str += getAnimationDurationStyle(speed);\n }\n }\n\n if (str) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n } // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n\n } else {\n // middle wrapper styles\n update_carousel_transition_duration(); // inner wrapper styles\n\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight); // container styles\n\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n } // slide styles\n\n\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n\n if (gutter) {\n str += getSlideGutterStyle(gutter);\n } // append to the last line\n\n\n if (str) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n } // ## MEDIAQUERIES\n\n\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp); // middle wrapper string\n\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n } // inner wrapper string\n\n\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n } // container string\n\n\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || fixedWidth && 'gutter' in opts)) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n } // slide string\n\n\n if ('fixedWidth' in opts || fixedWidth && 'gutter' in opts || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n } // set gallery items transition-duration\n\n\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) {\n slideStr += getTransitionDurationStyle(speedBP);\n }\n\n if (ANIMATIONDURATION) {\n slideStr += getAnimationDurationStyle(speedBP);\n }\n }\n\n if (slideStr) {\n slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}';\n } // add up\n\n\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools() {\n // == slides ==\n updateSlideStatus(); // == live region ==\n\n outerWrapper.insertAdjacentHTML('afterbegin', '<div class=\"tns-liveregion tns-visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">slide <span class=\"current\">' + getLiveRegionStr() + '</span> of ' + slideCount + '</div>');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current'); // == autoplayInit ==\n\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n\n if (autoplayButton) {\n setAttrs(autoplayButton, {\n 'data-action': txt\n });\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '<button type=\"button\" data-action=\"' + txt + '\">' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '</button>');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n } // add event\n\n\n if (autoplayButton) {\n addEvents(autoplayButton, {\n 'click': toggleAutoplay\n });\n }\n\n if (autoplay) {\n startAutoplay();\n\n if (autoplayHoverPause) {\n addEvents(container, hoverEvents);\n }\n\n if (autoplayResetOnVisibility) {\n addEvents(container, visibilityEvent);\n }\n }\n } // == navInit ==\n\n\n if (hasNav) {\n // will not hide the navs in case they're thumbnails\n\n if (navContainer) {\n setAttrs(navContainer, {\n 'aria-label': 'Carousel Pagination'\n });\n navItems = navContainer.children;\n forEach(navItems, function (item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId\n });\n }); // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '<button type=\"button\" data-nav=\"' + i + '\" tabindex=\"-1\" aria-controls=\"' + slideId + '\" ' + hiddenStr + ' aria-label=\"' + navStr + (i + 1) + '\"></button>';\n }\n\n navHtml = '<div class=\"tns-nav\" aria-label=\"Carousel Pagination\">' + navHtml + '</div>';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility(); // add transition\n\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {\n 'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent\n });\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass); // add events\n\n addEvents(navContainer, navEvents);\n } // == controlsInit ==\n\n\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '<div class=\"tns-controls\" aria-label=\"Carousel Navigation\" tabindex=\"0\"><button type=\"button\" data-controls=\"prev\" tabindex=\"-1\" aria-controls=\"' + slideId + '\">' + controlsText[0] + '</button><button type=\"button\" data-controls=\"next\" tabindex=\"-1\" aria-controls=\"' + slideId + '\">' + controlsText[1] + '</button></div>');\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || options.prevButton && options.nextButton) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1'\n });\n }\n\n if (options.controlsContainer || options.prevButton && options.nextButton) {\n setAttrs(prevButton, {\n 'data-controls': 'prev'\n });\n setAttrs(nextButton, {\n 'data-controls': 'next'\n });\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n updateControlsStatus(); // add events\n\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n } // hide tools if needed\n\n\n disableUI();\n }\n\n function initEvents() {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) {\n addEvents(container, touchEvents, options.preventScrollOnTouch);\n }\n\n if (mouseDrag) {\n addEvents(container, dragEvents);\n }\n\n if (arrowKeys) {\n addEvents(doc, docmentKeydownEvent);\n }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {\n 'resize': onResize\n });\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) {\n doAutoHeight();\n }\n }\n\n doLazyLoad();\n\n if (disable) {\n disableSlider();\n } else if (freeze) {\n freezeSlider();\n }\n\n events.on('indexChanged', additionalUpdates);\n\n if (nested === 'inner') {\n events.emit('innerLoaded', info());\n }\n\n if (typeof onInit === 'function') {\n onInit(info());\n }\n\n isOn = true;\n }\n\n function destroy() {\n // sheet\n sheet.disabled = true;\n\n if (sheet.ownerNode) {\n sheet.ownerNode.remove();\n } // remove win event listeners\n\n\n removeEvents(win, {\n 'resize': onResize\n }); // arrowKeys, controls, nav\n\n if (arrowKeys) {\n removeEvents(doc, docmentKeydownEvent);\n }\n\n if (controlsContainer) {\n removeEvents(controlsContainer, controlsEvents);\n }\n\n if (navContainer) {\n removeEvents(navContainer, navEvents);\n } // autoplay\n\n\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n\n if (autoplayButton) {\n removeEvents(autoplayButton, {\n 'click': toggleAutoplay\n });\n }\n\n if (autoplay) {\n clearInterval(autoplayTimer);\n } // container\n\n\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n\n if (touch) {\n removeEvents(container, touchEvents);\n }\n\n if (mouseDrag) {\n removeEvents(container, dragEvents);\n } // cache Object values in options && reset HTML\n\n\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n tnsList.forEach(function (item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n }); // reset variables\n\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = panStart = rafIndex = getDist = touch = mouseDrag = null; // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') {\n this[a] = null;\n }\n }\n\n isOn = false;\n } // === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n\n\n function onResize(e) {\n raf(function () {\n resizeTasks(getEvent(e));\n });\n }\n\n function resizeTasks(e) {\n if (!isOn) {\n return;\n }\n\n if (nested === 'outer') {\n events.emit('outerResized', info(e));\n }\n\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone; // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n\n if (bpChanged) {\n events.emit('newBreakpointStart', info(e));\n }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n } // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n\n\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n } // update options\n\n\n resetVariblesWhenDisable(disable);\n viewport = getViewportWidth(); // <= edgePadding, gutter\n\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n\n needContainerTransform = true;\n }\n }\n\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) {\n indexMax = getIndexMax();\n } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n\n\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n\n if (!autoplay) {\n autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ? addEvents(doc, docmentKeydownEvent) : removeEvents(doc, docmentKeydownEvent);\n }\n\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) {\n showElement(prevButton);\n }\n\n if (nextButton) {\n showElement(nextButton);\n }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) {\n hideElement(prevButton);\n }\n\n if (nextButton) {\n hideElement(nextButton);\n }\n }\n }\n }\n\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer);\n }\n }\n\n if (touch !== touchTem) {\n touch ? addEvents(container, touchEvents, options.preventScrollOnTouch) : removeEvents(container, touchEvents);\n }\n\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ? addEvents(container, dragEvents) : removeEvents(container, dragEvents);\n }\n\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) {\n showElement(autoplayButton);\n }\n\n if (!animating && !autoplayUserPaused) {\n startAutoplay();\n }\n } else {\n if (autoplayButton) {\n hideElement(autoplayButton);\n }\n\n if (animating) {\n stopAutoplay();\n }\n }\n }\n\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ? addEvents(container, hoverEvents) : removeEvents(container, hoverEvents);\n }\n\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ? addEvents(doc, visibilityEvent) : removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) {\n needContainerTransform = true;\n }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) {\n innerWrapper.style.height = '';\n }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) {\n needContainerTransform = true;\n }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) {\n additionalUpdates();\n }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) {\n updateGallerySlidePositions();\n }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n } // slide styles\n\n\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + getSlideGutterStyle(gutter); // remove the last line and\n // add new styles\n\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n } // auto height\n\n\n if (autoHeight) {\n doAutoHeight();\n }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) {\n events.emit('newBreakpointEnd', info(e));\n }\n } // === INITIALIZATION FUNCTIONS === //\n\n\n function getFreeze() {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone() {\n breakpointZone = 0;\n\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n\n if (windowWidth >= bp) {\n breakpointZone = bp;\n }\n }\n } // (slideBy, indexMin, indexMax) => index\n\n\n var updateIndex = function () {\n return loop ? carousel ? // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n leftEdge += slideBy;\n rightEdge -= slideBy; // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter) % (fixedWidth + gutter)) {\n rightEdge -= 1;\n }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } : // loop + gallery\n function () {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) {\n index -= slideCount;\n }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) {\n index += slideCount;\n }\n }\n } : // non-loop\n function () {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n }();\n\n function disableUI() {\n if (!autoplay && autoplayButton) {\n hideElement(autoplayButton);\n }\n\n if (!nav && navContainer) {\n hideElement(navContainer);\n }\n\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) {\n hideElement(prevButton);\n }\n\n if (nextButton) {\n hideElement(nextButton);\n }\n }\n }\n }\n\n function enableUI() {\n if (autoplay && autoplayButton) {\n showElement(autoplayButton);\n }\n\n if (nav && navContainer) {\n showElement(navContainer);\n }\n\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) {\n showElement(prevButton);\n }\n\n if (nextButton) {\n showElement(nextButton);\n }\n }\n }\n }\n\n function freezeSlider() {\n if (frozen) {\n return;\n } // remove edge padding from inner wrapper\n\n\n if (edgePadding) {\n innerWrapper.style.margin = '0px';\n } // add class tns-transparent to cloned slides\n\n\n if (cloneCount) {\n var str = 'tns-transparent';\n\n for (var i = cloneCount; i--;) {\n if (carousel) {\n addClass(slideItems[i], str);\n }\n\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n } // update tools\n\n\n disableUI();\n frozen = true;\n }\n\n function unfreezeSlider() {\n if (!frozen) {\n return;\n } // restore edge padding for inner wrapper\n // for mordern browsers\n\n\n if (edgePadding && CSSMQ) {\n innerWrapper.style.margin = '';\n } // remove class tns-transparent to cloned slides\n\n\n if (cloneCount) {\n var str = 'tns-transparent';\n\n for (var i = cloneCount; i--;) {\n if (carousel) {\n removeClass(slideItems[i], str);\n }\n\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n } // update tools\n\n\n enableUI();\n frozen = false;\n }\n\n function disableSlider() {\n if (disabled) {\n return;\n }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) {\n hideElement(slideItems[j]);\n }\n\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n } // vertical slider\n\n\n if (!horizontal || !carousel) {\n removeAttrs(innerWrapper, ['style']);\n } // gallery\n\n\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n } // update tools\n\n\n disableUI();\n disabled = true;\n }\n\n function enableSlider() {\n if (!disabled) {\n return;\n }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) {\n showElement(slideItems[j]);\n }\n\n showElement(slideItems[slideCountNew - j - 1]);\n }\n } // gallery\n\n\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n } // update tools\n\n\n enableUI();\n disabled = false;\n }\n\n function updateLiveRegion() {\n var str = getLiveRegionStr();\n\n if (liveregionCurrent.innerHTML !== str) {\n liveregionCurrent.innerHTML = str;\n }\n }\n\n function getLiveRegionStr() {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange(val) {\n if (val == null) {\n val = getContainerTransformValue();\n }\n\n var start = index,\n end,\n rangestart,\n rangeend; // get range start, range end for autoWidth and fixedWidth\n\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = -(parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n } // get start, end\n // - check auto width\n\n\n if (autoWidth) {\n slidePositions.forEach(function (point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) {\n start = i;\n }\n\n if (rangeend - point >= 0.5) {\n end = i;\n }\n }\n }); // - check percentage width, fixed width\n } else {\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n\n if (center || edgePadding) {\n start = Math.floor(rangestart / cell);\n end = Math.ceil(rangeend / cell - 1);\n } else {\n end = start + Math.ceil(viewport / cell) - 1;\n }\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad() {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n\n eve[TRANSITIONEND] = function (e) {\n e.stopPropagation();\n };\n\n addEvents(img, eve);\n addEvents(img, imgEvents); // update src\n\n img.src = getAttr(img, 'data-src'); // update srcset\n\n var srcset = getAttr(img, 'data-srcset');\n\n if (srcset) {\n img.srcset = srcset;\n }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded(e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed(e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded(img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed(img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted(img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray(start, end, imgSelector) {\n var imgs = [];\n\n if (!imgSelector) {\n imgSelector = 'img';\n }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) {\n imgs.push(img);\n });\n start++;\n }\n\n return imgs;\n } // check if all visible images are loaded\n // and update container height if it's done\n\n\n function doAutoHeight() {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function () {\n imgsLoadedCheck(imgs, updateInnerWrapperHeight);\n });\n }\n\n function imgsLoadedCheck(imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) {\n return cb();\n } // check image classes\n\n\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) {\n imgCompleted(img);\n } // Check image.complete\n\n\n if (hasClass(img, imgCompleteClass)) {\n imgs.splice(index, 1);\n }\n }); // execute callback function if selected images are all complete\n\n if (!imgs.length) {\n return cb();\n } // otherwise execute this functiona again\n\n\n raf(function () {\n imgsLoadedCheck(imgs, cb);\n });\n }\n\n function additionalUpdates() {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n function update_carousel_transition_duration() {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight(slideStart, slideRange) {\n var heights = [];\n\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n } // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n\n\n function updateInnerWrapperHeight() {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) {\n wp.style.height = maxHeight + 'px';\n }\n } // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n\n\n function setSlidePositions() {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n forEach(slideItems, function (item, i) {\n // skip the first slide\n if (i) {\n slidePositions.push(item.getBoundingClientRect()[attr] - base);\n } // add the end edge\n\n\n if (i === slideCountNew - 1) {\n slidePositions.push(item.getBoundingClientRect()[attr2] - base);\n }\n });\n } // update slide\n\n\n function updateSlideStatus() {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n forEach(slideItems, function (item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n } // hide slides\n\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n } // gallery: update slide position\n\n\n function updateGallerySlidePositions() {\n var l = index + Math.min(slideCount, items);\n\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n } // remove outlet animation\n\n\n removeClass(item, animateOut);\n } // removing '.tns-moving'\n\n\n setTimeout(function () {\n forEach(slideItems, function (el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n } // set tabindex on Nav\n\n\n function updateNavStatus() {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n setAttrs(navCurrent, {\n 'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent\n });\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName(el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton(el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled(el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement(isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n } // set 'disabled' to true on controls when reach the edges\n\n\n function updateControlsStatus() {\n if (!controls || rewind || loop) {\n return;\n }\n\n var prevDisabled = prevIsButton ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = nextIsButton ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = index <= indexMin ? true : false,\n disableNext = !rewind && index >= indexMax ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n } // set duration\n\n\n function resetDuration(el, str) {\n if (TRANSITIONDURATION) {\n el.style[TRANSITIONDURATION] = str;\n }\n }\n\n function getSliderWidth() {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap(num) {\n if (num == null) {\n num = index;\n }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? (viewport - gap - (slidePositions[num + 1] - slidePositions[num] - gutter)) / 2 : fixedWidth ? (viewport - fixedWidth) / 2 : (items - 1) / 2;\n }\n\n function getRightBoundary() {\n var gap = edgePadding ? gutter : 0,\n result = viewport + gap - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? -(fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() : getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n\n if (result > 0) {\n result = 0;\n }\n\n return result;\n }\n\n function getContainerTransformValue(num) {\n if (num == null) {\n num = index;\n }\n\n var val;\n\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = -(fixedWidth + gutter) * num;\n\n if (center) {\n val += getCenterGap();\n }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n\n if (center) {\n num -= getCenterGap();\n }\n\n val = -num * 100 / denominator;\n }\n } else {\n val = -slidePositions[num];\n\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) {\n val = Math.max(val, rightBoundary);\n }\n\n val += horizontal && !autoWidth && !fixedWidth ? '%' : 'px';\n return val;\n }\n\n function doContainerTransformSilent(val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform(val) {\n if (val == null) {\n val = getContainerTransformValue();\n }\n\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide(number, classOut, classIn, isOut) {\n var l = number + items;\n\n if (!loop) {\n l = Math.min(l, slideCountNew);\n }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i]; // set item positions\n\n if (!isOut) {\n item.style.left = (i - index) * 100 / items + '%';\n }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) {\n slideItemsOut.push(item);\n }\n }\n } // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n\n\n var transformCore = function () {\n return carousel ? function () {\n resetDuration(container, '');\n\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform(); // run fallback function manually\n // when duration is 0 / container is hidden\n\n if (!speed || !isVisible(container)) {\n onTransitionEnd();\n }\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) {\n updateContentWrapperHeight();\n }\n } : function () {\n slideItemsOut = [];\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn); // run fallback function manually\n // when transition or animation not supported / duration is 0\n\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) {\n onTransitionEnd();\n }\n };\n }();\n\n function render(e, sliderMoved) {\n if (updateIndexBeforeTransform) {\n updateIndex();\n } // render when slider was moved (touch or drag) even though index may not change\n\n\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n\n if (autoHeight) {\n doAutoHeight();\n } // pause autoplay when click or keydown from user\n\n\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) {\n stopAutoplay();\n }\n\n running = true;\n transformCore();\n }\n }\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n\n\n function strTrans(str) {\n return str.toLowerCase().replace(/-/g, '');\n } // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n\n\n function onTransitionEnd(event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i]; // set item positions\n\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n\n\n if (!event || !carousel && event.target.parentNode === container || event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') {\n events.emit('innerLoaded', info());\n }\n\n running = false;\n indexCached = index;\n }\n }\n } // # ACTIONS\n\n\n function goTo(targetIndex, e) {\n if (freeze) {\n return;\n } // prev slideBy\n\n\n if (targetIndex === 'prev') {\n onControlsClick(e, -1); // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1); // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = -absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') {\n targetIndex = parseInt(targetIndex);\n }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) {\n targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex));\n }\n\n indexGap = targetIndex - absIndex;\n }\n } // gallery: make sure new page won't overlap with current page\n\n\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += index + indexGap - slideCount >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap; // make sure index is in range\n\n if (carousel && loop) {\n if (index < indexMin) {\n index += slideCount;\n }\n\n if (index > indexMax) {\n index -= slideCount;\n }\n } // if index is changed, start rendering\n\n\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n }\n } // on controls click\n\n\n function onControlsClick(e, dir) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) {\n target = target.parentNode;\n }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n\n if (autoWidth) {\n index = Math.floor(index);\n } // pass e when click control buttons or keydown\n\n\n render(passEventObject || e && e.type === 'keydown' ? e : null);\n }\n } // on nav click\n\n\n function onNavClick(e) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n e = getEvent(e);\n var target = getTarget(e),\n navIndex; // find the clicked nav item\n\n while (target !== navContainer && !hasAttr(target, 'data-nav')) {\n target = target.parentNode;\n }\n\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) {\n stopAutoplay();\n }\n\n navClicked = -1; // reset navClicked\n }\n }\n } // autoplay functions\n\n\n function setAutoplayTimer() {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n animating = true;\n }\n\n function stopAutoplayTimer() {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton(action, txt) {\n setAttrs(autoplayButton, {\n 'data-action': action\n });\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay() {\n setAutoplayTimer();\n\n if (autoplayButton) {\n updateAutoplayButton('stop', autoplayText[1]);\n }\n }\n\n function stopAutoplay() {\n stopAutoplayTimer();\n\n if (autoplayButton) {\n updateAutoplayButton('start', autoplayText[0]);\n }\n } // programaitcally play/pause the slider\n\n\n function play() {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function pause() {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay() {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange() {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause() {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart() {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n } // keydown events on document\n\n\n function onDocumentKeydown(e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n } // on key control\n\n\n function onControlsKeydown(e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) {\n onControlsClick(e, -1);\n }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n } // set focus\n\n\n function setFocus(el) {\n el.focus();\n } // on key nav\n\n\n function onNavKeydown(e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n\n if (!hasAttr(curElement, 'data-nav')) {\n return;\n } // var code = e.keyCode,\n\n\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) {\n setFocus(navItems[navIndex - 1]);\n }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) {\n setFocus(navItems[navIndex + 1]);\n }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent(e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n\n function getTarget(e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent(e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected() {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart(e) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n\n if (autoplay && animating) {\n stopAutoplayTimer();\n }\n\n panStart = true;\n\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove(e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) {\n rafIndex = raf(function () {\n panUpdate(e);\n });\n }\n } else {\n if (moveDirectionExpected === '?') {\n moveDirectionExpected = getMoveDirectionExpected();\n }\n\n if (moveDirectionExpected) {\n preventScroll = true;\n }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate(e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n\n caf(rafIndex);\n\n if (panStart) {\n rafIndex = raf(function () {\n panUpdate(e);\n });\n }\n\n if (moveDirectionExpected === '?') {\n moveDirectionExpected = getMoveDirectionExpected();\n }\n\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) {\n preventScroll = true;\n }\n\n try {\n if (e.type) {\n events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e));\n }\n } catch (err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew) : dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd(e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n if (carousel) {\n resetDuration(container, '');\n }\n\n panStart = false;\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {\n 'click': function preventClick(e) {\n preventDefaultBehavior(e);\n removeEvents(target, {\n 'click': preventClick\n });\n }\n });\n }\n\n if (carousel) {\n rafIndex = raf(function () {\n if (horizontal && !autoWidth) {\n var indexMoved = -dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = -(translateInit + dist);\n\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n\n if (moved > slidePositions[i] && dist < 0) {\n index += 1;\n }\n\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n } // reset\n\n\n if (options.preventScrollOnTouch === 'auto') {\n preventScroll = false;\n }\n\n if (swipeAngle) {\n moveDirectionExpected = '?';\n }\n\n if (autoplay && !animating) {\n setAutoplayTimer();\n }\n } // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n\n\n function updateContentWrapperHeight() {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages() {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n\n\n function updateNavVisibility() {\n if (!nav || navAsThumbnails) {\n return;\n }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n } // cache pages\n\n\n pagesCached = pages;\n }\n }\n\n function info(e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {}\n };\n }\n\n return {\n version: '2.9.4',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function () {\n return tns(extend(options, optionsElements));\n }\n };\n};\n\nexports.tns = tns;\n","import { Controller } from '@hotwired/stimulus'\nimport { tns } from 'tiny-slider'\nexport default class CareersController extends Controller {\n static targets = ['carousel', 'next', 'prev']\n\n static values = {\n mode: { type: String, default: 'gallery' }\n }\n\n connect () {\n this.render()\n }\n\n render () {\n new tns({\n container: this.carouselTarget,\n items: 2,\n mode: this.modeValue,\n center: false,\n nav: false,\n autoWidth: false,\n slideBy: 2,\n gutter: 16,\n autoplay: true,\n autoplayButtonOutput: false,\n controls: false,\n loop: true,\n rewind: false,\n speed: 3500,\n mouseDrag: true,\n autoplayTimeout: 4500,\n responsive: {\n 768: {\n gutter: 32,\n items: 3,\n slideBy: 1,\n center: true,\n autoplayTimeout: 4500,\n speed: 3500\n }\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class Dropdown extends Controller {\n static targets = ['content']\n\n manageDropdownState () {\n this.contentTarget.classList.toggle('dropdown__content-open')\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { tns } from 'tiny-slider'\n\nexport default class PortfolioController extends Controller {\n static targets = ['gallery', 'prev', 'next', 'carousel']\n\n static values = {\n mode: { type: String, default: 'gallery' }\n }\n\n connect () {\n this.render()\n }\n\n render () {\n new tns({\n container: this.galleryTarget,\n mode: this.modeValue,\n items: 1,\n slideBy: 1,\n loop: false,\n swipeAngle: false,\n // speed: 300,\n edgePadding: 0,\n // animateIn: 'fadeIn',\n // animateOut: 'fadeOut',\n nav: this.modeValue === 'gallery',\n nextButton: this.nextTarget,\n prevButton: this.prevTarget,\n autoplay: false,\n autoplayTimeout: 10000,\n autoplayButtonOutput: false,\n responsive: {\n 640: {\n items: this.modeValue === 'carousel' ? 2 : 1,\n },\n 1024: {\n items: this.modeValue === 'carousel' ? 3 : 1,\n nav: false,\n }\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['output', 'input']\n\n readURL () {\n const input = this.inputTarget\n const output = this.outputTarget\n\n if (input.files && input.files[0]) {\n const reader = new FileReader()\n\n reader.onload = () => {\n output.src = reader.result\n }\n\n reader.readAsDataURL(input.files[0])\n }\n }\n}\n","var L=Object.defineProperty;var I=(t,e,s)=>e in t?L(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var a=(t,e,s)=>(I(t,typeof e!=\"symbol\"?e+\"\":e,s),s),S=(t,e,s)=>{if(!e.has(t))throw TypeError(\"Cannot \"+s)};var x=(t,e,s)=>{if(e.has(t))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(t):e.set(t,s)};var V=(t,e,s)=>(S(t,e,\"access private method\"),s);import{Controller as A}from\"@hotwired/stimulus\";async function i(t,e,s={}){e?l(t,s):u(t,s)}async function l(t,e={}){let s=t.dataset.transitionEnter||e.enter||\"enter\",r=t.dataset.transitionEnterFrom||e.enterFrom||\"enter-from\",n=t.dataset.transitionEnterTo||e.enterTo||\"enter-to\",g=t.dataset.toggleClass||e.toggleClass||\"hidden\";t.classList.add(...s.split(\" \")),t.classList.add(...r.split(\" \")),t.classList.remove(...n.split(\" \")),t.classList.remove(...g.split(\" \")),await C(),t.classList.remove(...r.split(\" \")),t.classList.add(...n.split(\" \"));try{await y(t)}finally{t.classList.remove(...s.split(\" \"))}}async function u(t,e={}){let s=t.dataset.transitionLeave||e.leave||\"leave\",r=t.dataset.transitionLeaveFrom||e.leaveFrom||\"leave-from\",n=t.dataset.transitionLeaveTo||e.leaveTo||\"leave-to\",g=t.dataset.toggleClass||e.toogle||\"hidden\";t.classList.add(...s.split(\" \")),t.classList.add(...r.split(\" \")),t.classList.remove(...n.split(\" \")),await C(),t.classList.remove(...r.split(\" \")),t.classList.add(...n.split(\" \"));try{await y(t)}finally{t.classList.remove(...s.split(\" \")),t.classList.add(...g.split(\" \"))}}function C(){return new Promise(t=>{requestAnimationFrame(()=>{requestAnimationFrame(t)})})}function y(t){return Promise.all(t.getAnimations().map(e=>e.finished))}var T=class extends A{connect(){setTimeout(()=>{l(this.element)},this.showDelayValue),this.hasDismissAfterValue&&setTimeout(()=>{this.close()},this.dismissAfterValue)}close(){u(this.element).then(()=>{this.element.remove()})}};a(T,\"values\",{dismissAfter:Number,showDelay:{type:Number,default:0},removeDelay:{type:Number,default:1100}});import{Controller as D}from\"@hotwired/stimulus\";var c=class extends D{connect(){this.timeout=null}save(){clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.statusTarget.textContent=this.submittingTextValue,this.formTarget.requestSubmit()},this.submitDurationValue)}success(){this.setStatus(this.successTextValue)}error(){this.setStatus(this.errorTextValue)}setStatus(t){this.statusTarget.textContent=t,this.timeout=setTimeout(()=>{this.statusTarget.textContent=\"\"},this.statusDurationValue)}};a(c,\"targets\",[\"form\",\"status\"]),a(c,\"values\",{submitDuration:{type:Number,default:1e3},statusDuration:{type:Number,default:2e3},submittingText:{type:String,default:\"Saving...\"},successText:{type:String,default:\"Saved!\"},errorText:{type:String,default:\"Unable to save.\"}});import{Controller as E}from\"@hotwired/stimulus\";var d=class extends E{update(){this.preview=this.colorTarget.value}set preview(t){this.previewTarget.style[this.styleValue]=t;let e=this._getContrastYIQ(t);this.styleValue===\"color\"?this.previewTarget.style.backgroundColor=e:this.previewTarget.style.color=e}_getContrastYIQ(t){t=t.replace(\"#\",\"\");let e=128,s=parseInt(t.substr(0,2),16),r=parseInt(t.substr(2,2),16),n=parseInt(t.substr(4,2),16);return(s*299+r*587+n*114)/1e3>=e?\"#000\":\"#fff\"}};a(d,\"targets\",[\"preview\",\"color\"]),a(d,\"values\",{style:{type:String,default:\"backgroundColor\"}});import{Controller as k}from\"@hotwired/stimulus\";var v,w,o=class extends k{constructor(){super(...arguments);x(this,v)}connect(){document.addEventListener(\"turbo:before-cache\",this.beforeCache.bind(this)),V(this,v,w).call(this)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.beforeCache.bind(this)),this.hasButtonTarget&&(this.buttonTarget.removeEventListener(\"keydown\",this._onMenuButtonKeydown),this.buttonTarget.removeAttribute(\"aria-haspopup\"))}openValueChanged(){i(this.menuTarget,this.openValue,this.transitionOptions),this.openValue===!0&&this.hasMenuItemTarget&&this.menuItemTargets[0].focus()}show(){this.openValue=!0}close(){this.openValue=!1}hide(e){this.closeOnClickOutsideValue&&e.target.nodeType&&this.element.contains(e.target)===!1&&this.openValue&&(this.openValue=!1),this.closeOnEscapeValue&&e.key===\"Escape\"&&this.openValue&&(this.openValue=!1)}toggle(){this.openValue=!this.openValue}nextItem(e){e.preventDefault(),this.menuItemTargets[this.nextIndex].focus()}previousItem(e){e.preventDefault(),this.menuItemTargets[this.previousIndex].focus()}get currentItemIndex(){return this.menuItemTargets.indexOf(document.activeElement)}get nextIndex(){return Math.min(this.currentItemIndex+1,this.menuItemTargets.length-1)}get previousIndex(){return Math.max(this.currentItemIndex-1,0)}get transitionOptions(){return{enter:this.hasEnterClass?this.enterClass:\"transition ease-out duration-100\",enterFrom:this.hasEnterFromClass?this.enterFromClass:\"transform opacity-0 scale-95\",enterTo:this.hasEnterToClass?this.enterToClass:\"transform opacity-100 scale-100\",leave:this.hasLeaveClass?this.leaveClass:\"transition ease-in duration-75\",leaveFrom:this.hasLeaveFromClass?this.leaveFromClass:\"transform opacity-100 scale-100\",leaveTo:this.hasLeaveToClass?this.leaveToClass:\"transform opacity-0 scale-95\",toggleClass:this.hasToggleClass?this.toggleClass:\"hidden\"}}beforeCache(){this.openValue=!1,this.menuTarget.classList.add(\"hidden\")}};v=new WeakSet,w=function(){let e=this.element.dataset.action?this.element.dataset.action.split(\" \"):[];e.push(\"click->dropdown#toggle\"),e.push(\"click@window->dropdown#hide\"),e.push(\"keydown.up->dropdown#previousItem\"),e.push(\"keydown.down->dropdown#nextItem\"),e.push(\"keydown.esc->dropdown#hide\"),this.element.dataset.action=[...new Set(e)].join(\" \")},a(o,\"targets\",[\"menu\",\"button\",\"menuItem\"]),a(o,\"values\",{open:{type:Boolean,default:!1},closeOnEscape:{type:Boolean,default:!0},closeOnClickOutside:{type:Boolean,default:!0}}),a(o,\"classes\",[\"enter\",\"enterFrom\",\"enterTo\",\"leave\",\"leaveFrom\",\"leaveTo\",\"toggle\"]);import{Controller as F}from\"@hotwired/stimulus\";var m=class extends F{connect(){document.addEventListener(\"turbo:before-cache\",this.beforeCache.bind(this))}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.beforeCache.bind(this))}open(){this.openValue=!0}close(){this.openValue=!1}closeBackground(t){t.target===this.backgroundTarget&&this.close()}async openValueChanged(){this.openValue?(this.containerTarget.focus(),this.lockScroll(),l(this.backgroundTarget),l(this.containerTarget)):(u(this.containerTarget),await u(this.backgroundTarget),this.unlockScroll())}lockScroll(){this.restoreScrollValue&&(this.saveScrollPosition(),document.body.style.top=`-${this.scrollPosition}px`);let t=window.innerWidth-document.documentElement.clientWidth;document.body.style.paddingRight=`${t}px`,document.body.classList.add(\"fixed\",\"inset-x-0\",\"overflow-hidden\")}unlockScroll(){document.body.style.paddingRight=null,document.body.classList.remove(\"fixed\",\"inset-x-0\",\"overflow-hidden\"),this.restoreScrollValue&&(this.restoreScrollPosition(),document.body.style.top=null)}saveScrollPosition(){this.scrollPosition=window.pageYOffset||document.body.scrollTop}restoreScrollPosition(){this.scrollPosition!==void 0&&(document.documentElement.scrollTop=this.scrollPosition)}beforeCache(){this.close(),this.backgroundTarget.classList.add(\"hidden\"),this.containerTarget.classList.add(\"hidden\")}};a(m,\"targets\",[\"container\",\"background\"]),a(m,\"values\",{open:{type:Boolean,default:!1},restoreScroll:{type:Boolean,default:!0}});import{Controller as B}from\"@hotwired/stimulus\";var p=class extends B{openValueChanged(){i(this.contentTarget,this.openValue),this.shouldAutoDismiss&&this.scheduleDismissal()}show(t){this.shouldAutoDismiss&&this.scheduleDismissal(),this.openValue=!0}hide(){this.openValue=!1}toggle(){this.openValue=!this.openValue}get shouldAutoDismiss(){return this.openValue&&this.hasDismissAfterValue}scheduleDismissal(){this.hasDismissAfterValue&&(this.cancelDismissal(),this.timeoutId=setTimeout(()=>{this.hide(),this.timeoutId=void 0},this.dismissAfterValue))}cancelDismissal(){typeof this.timeoutId==\"number\"&&(clearTimeout(this.timeoutId),this.timeoutId=void 0)}};a(p,\"targets\",[\"content\"]),a(p,\"values\",{dismissAfter:Number,open:{type:Boolean,default:!1}});var b=class extends o{openValueChanged(){i(this.overlayTarget,this.openValue),i(this.menuTarget,this.openValue),this.hasCloseTarget&&i(this.closeTarget,this.openValue)}};a(b,\"targets\",[\"overlay\",\"close\"]);import{Controller as P}from\"@hotwired/stimulus\";var h=class extends P{initialize(){this.anchor&&(this.indexValue=this.tabTargets.findIndex(t=>t.id===this.anchor))}connect(){this.showTab()}change(t){t.currentTarget.tagName===\"SELECT\"?this.indexValue=t.currentTarget.selectedIndex:t.currentTarget.dataset.index?this.indexValue=t.currentTarget.dataset.index:t.currentTarget.dataset.id?this.indexValue=this.tabTargets.findIndex(e=>e.id==t.currentTarget.dataset.id):this.indexValue=this.tabTargets.indexOf(t.currentTarget),window.dispatchEvent(new CustomEvent(\"tsc:tab-change\"))}nextTab(){this.indexValue=Math.min(this.indexValue+1,this.tabsCount-1)}previousTab(){this.indexValue=Math.max(this.indexValue-1,0)}firstTab(){this.indexValue=0}lastTab(){this.indexValue=this.tabsCount-1}indexValueChanged(){if(this.showTab(),this.updateAnchorValue){let t=this.tabTargets[this.indexValue].id;if(this.scrollToAnchorValue)location.hash=t;else{let s=window.location.href.split(\"#\")[0]+\"#\"+t;history.replaceState({},document.title,s)}}}showTab(){this.panelTargets.forEach((t,e)=>{let s=this.tabTargets[e];e===this.indexValue?(t.classList.remove(\"hidden\"),this.hasInactiveTabClass&&s?.classList?.remove(...this.inactiveTabClasses),this.hasActiveTabClass&&s?.classList?.add(...this.activeTabClasses)):(t.classList.add(\"hidden\"),this.hasActiveTabClass&&s?.classList?.remove(...this.activeTabClasses),this.hasInactiveTabClass&&s?.classList?.add(...this.inactiveTabClasses))}),this.hasSelectTarget&&(this.selectTarget.selectedIndex=this.indexValue)}get tabsCount(){return this.tabTargets.length}get anchor(){return document.URL.split(\"#\").length>1?document.URL.split(\"#\")[1]:null}};a(h,\"classes\",[\"activeTab\",\"inactiveTab\"]),a(h,\"targets\",[\"tab\",\"panel\",\"select\"]),a(h,\"values\",{index:0,updateAnchor:Boolean,scrollToAnchor:Boolean});import{Controller as q}from\"@hotwired/stimulus\";var f=class extends q{toggle(t){this.openValue=!this.openValue,this.animate()}toggleInput(t){this.openValue=t.target.checked,this.animate()}hide(){this.openValue=!1,this.animate()}show(){this.openValue=!0,this.animate()}animate(){this.toggleableTargets.forEach(t=>{i(t,this.openValue)})}};a(f,\"targets\",[\"toggleable\"]),a(f,\"values\",{open:{type:Boolean,default:!1}});export{T as Alert,c as Autosave,d as ColorPreview,o as Dropdown,m as Modal,p as Popover,b as Slideover,h as Tabs,f as Toggle};\n","import { Modal } from 'tailwindcss-stimulus-components'\n\nexport default class ModalController extends Modal {\n static targets = ['turboFrame', 'autofocus']\n\n open () {\n super.open()\n\n if (this.hasAutofocusTarget) {\n setTimeout(() => this.autofocusTarget.focus(), 100)\n }\n }\n\n close () {\n super.close()\n this.dispatch('close')\n\n if (this.hasTurboFrameTarget) {\n this.turboFrameTarget.src = null\n this.turboFrameTarget.innerHTML = ''\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { tns } from 'tiny-slider'\n\nexport default class PortfolioController extends Controller {\n static targets = ['carousel']\n\n static values = {\n mode: { type: String, default: 'gallery' }\n }\n\n connect () {\n this.render()\n }\n\n render () {\n new tns({\n items: 1,\n slideBy: 1,\n gutter: 16,\n speed: 3500,\n autoplayTimeout: 9000,\n container: this.carouselTarget,\n mode: this.modeValue,\n center: true,\n controls: false,\n nav: true,\n navAsThumbnails: true,\n autoplay: true,\n autoplayButtonOutput: false,\n mouseDrag: true,\n responsive: {\n 320: {\n fixedWidth: 360\n },\n 375: {\n fixedWidth: 410\n },\n 640: {\n fixedWidth: 550\n },\n 768: {\n gutter: 32,\n fixedWidth: 960\n }\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nconst servicesArray = ['audit', 'design', 'web', 'mobile', 'mvp']\nconst complexityArray = ['low', 'mid', 'high']\nconst sizeArray = ['small', 'medium', 'big']\nconst durationArray = ['gt6', 'bt25', 'ls2']\nconst PRICING = {\n web: {\n low_small_gt6: '$153K - $307K',\n low_small_bt25: '$51K - $128K',\n low_small_ls2: '$25K - $51K',\n low_medium_gt6: '$230K - $460K',\n low_medium_bt25: '$76K - $192K',\n low_medium_ls2: '$38K - $76K',\n\n low_big_gt6: '$307K - $614K',\n low_big_bt25: '$102K - $256K',\n low_big_ls2: '$51K - $102K',\n\n mid_small_gt6: '$230K - $460K',\n mid_small_bt25: '$76K - $192K',\n mid_small_ls2: '$38K - $76K',\n\n mid_medium_gt6: '$307K - $614K',\n mid_medium_bt25: '$102K - $256K',\n mid_medium_ls2: '$51K - $102K',\n\n mid_big_gt6: '$384K - $768K',\n mid_big_bt25: '$128K - $320K',\n mid_big_ls2: '$64K - $128K',\n\n high_small_gt6: '$307K - $614K',\n high_small_bt25: '$102K - $256K',\n high_small_ls2: '$51K - $102K',\n\n high_medium_gt6: '$384K - $768K',\n high_medium_bt25: '$128K - $320K',\n high_medium_ls2: '$64K - $128K',\n\n high_big_gt6: '$460K - $921K',\n high_big_bt25: '$153K - $384K',\n high_big_ls2: '$76K - $153K'\n },\n mvp: {\n low_small_gt6: '$161K - $322K',\n low_small_bt25: '$53K - $134K',\n low_small_ls2: '$26K - $53K',\n\n low_medium_gt6: '$241K - $483K',\n low_medium_bt25: '$80K - $201K',\n low_medium_ls2: '$40K - $80K',\n\n low_big_gt6: '$403K - $806K',\n low_big_bt25: '$134K - $336K',\n low_big_ls2: '$67K - $134K',\n\n mid_small_gt6: '$241K - $483K',\n mid_small_bt25: '$80K - $201K',\n mid_small_ls2: '$40K - $80K',\n\n mid_medium_gt6: '$322K - $645K',\n mid_medium_bt25: '$107K - $268K',\n mid_medium_ls2: '$53K - $107K',\n\n mid_big_gt6: '$483K - $967K',\n mid_big_bt25: '$161K - $403K',\n mid_big_ls2: '$80K - $161K',\n\n high_small_gt6: '$322K - $645K',\n high_small_bt25: '$107K - $268K',\n high_small_ls2: '$53K - $107K',\n\n high_medium_gt6: '$403K - $806K',\n high_medium_bt25: '$134K - $336K',\n high_medium_ls2: '$67K - $134K',\n\n high_big_gt6: '$564K - $1,128K',\n high_big_bt25: '$188K - $470K',\n high_big_ls2: '$94K - $188K'\n },\n mobile: {\n low_small_gt6: '$168K - $336K',\n low_small_bt25: '$56K - $140K',\n low_small_ls2: '$28K - $56K',\n\n low_medium_gt6: '$252K - $504K',\n low_medium_bt25: '$84K - $210K',\n low_medium_ls2: '$42K - $84K',\n\n low_big_gt6: '$420K - $840K',\n low_big_bt25: '$140K - $350K',\n low_big_ls2: '$70K - $140K',\n\n mid_small_gt6: '$252K - $504K',\n mid_small_bt25: '$84K - $210K',\n mid_small_ls2: '$42K - $84K',\n\n mid_medium_gt6: '$336K - $672K',\n mid_medium_bt25: '$112K - $280K',\n mid_medium_ls2: '$56K - $112K',\n\n mid_big_gt6: '$504K - $1,008K',\n mid_big_bt25: '$168K - $420K',\n mid_big_ls2: '$84K - $168K',\n\n high_small_gt6: '$336K - $672K',\n high_small_bt25: '$112K - $280K',\n high_small_ls2: '$56K - $112K',\n\n high_medium_gt6: '$420K - $840K',\n high_medium_bt25: '$140K - $350K',\n high_medium_ls2: '$70K - $140K',\n\n high_big_gt6: '$588K - $1,176K',\n high_big_bt25: '$196K - $490K',\n high_big_ls2: '$98K - $196K'\n },\n audit: {\n low_small_ls2: '$6K - $12K',\n low_medium_ls2: '$9K - $19K',\n low_big_ls2: '$12K - $25K',\n\n mid_small_ls2: '$8K - $16K',\n mid_medium_ls2: '$12K - $24K',\n mid_big_ls2: '$16K - $32K',\n\n high_small_ls2: '$9K - $19K',\n high_medium_ls2: '$14K - $28K',\n high_big_ls2: '$19K - $38K'\n },\n design: {\n low_small_ls2: '$6K - $12K',\n low_medium_ls2: '$9K - $19K',\n low_big_ls2: '$12K - $25K',\n\n mid_small_ls2: '$8K - $16K',\n mid_medium_ls2: '$12K - $24K',\n mid_big_ls2: '$16K - $32K',\n\n high_small_ls2: '$9K - $19K',\n high_medium_ls2: '$14K - $28K',\n high_big_ls2: '$19K - $38K'\n }\n}\n\nexport default class Pricing extends Controller {\n static targets = ['total', 'duration', 'service']\n\n static values = {\n service: { type: String, default: 'web' },\n complexity: { type: String, default: 'low' },\n size: { type: String, default: 'small' },\n duration: { type: String, default: 'ls2' }\n }\n\n connect () {\n this.serviceTarget.querySelector(`input[value=${this.serviceValue}]`).checked = true\n\n this.modalTimeout = setTimeout(() => {\n this.dispatch('openModal')\n }, 30000)\n }\n\n disconnect () {\n clearTimeout(this.modalTimeout)\n }\n\n serviceValueChanged (value) {\n if (value === 'audit' || value === 'design') {\n this.durationTargets.forEach(input => {\n if (input.value === 'ls2') {\n input.checked = true\n } else {\n input.disabled = true\n }\n })\n\n this.durationValue = 'ls2'\n } else {\n this.durationTargets.forEach(input => {\n input.disabled = false\n })\n }\n\n this.calculateBudget()\n }\n\n complexityValueChanged () {\n this.calculateBudget()\n }\n\n sizeValueChanged () {\n this.calculateBudget()\n }\n\n durationValueChanged () {\n this.calculateBudget()\n }\n\n setData (input) {\n const { name, value } = input.target\n\n switch (name) {\n case 'service':\n this.serviceValue = value\n break\n case 'complexity':\n this.complexityValue = value\n break\n case 'size':\n this.sizeValue = value\n break\n case 'duration':\n this.durationValue = value\n break\n default:\n console.warn(`Unknown input name: ${name}`)\n break\n }\n }\n\n calculateBudget () {\n this.checkError()\n\n const key = [this.complexityValue, this.sizeValue, this.durationValue].join('_')\n\n this.totalTarget.classList.add('pricing__value-animate')\n this.totalTarget.innerText = PRICING[`${this.serviceValue}`][key]\n\n setTimeout(() => {\n this.totalTarget.classList.remove('pricing__value-animate')\n }, '1000')\n }\n\n checkError () {\n if (!servicesArray.includes(this.serviceValue)) {\n throw new Error('You can choose only one service. For example: web, mvp, mobile, audit, design')\n }\n if (!complexityArray.includes(this.complexityValue)) {\n throw new Error('You can choose only one complexity. For example: low, mid or high')\n }\n if (!sizeArray.includes(this.sizeValue)) {\n throw new Error('You can choose only one size. For example: low, medium, big')\n }\n if (!durationArray.includes(this.durationValue)) {\n throw new Error('You can choose only one duration. For example: gt6, bt25 or ls2')\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { tns } from 'tiny-slider'\nexport default class SliderController extends Controller {\n static targets = ['carousel', 'next', 'prev']\n\n static values = {\n mode: { type: String, default: 'gallery' },\n nav: { type: Boolean, default: true }\n }\n\n connect () {\n this.render()\n }\n\n render () {\n new tns({\n container: this.carouselTarget,\n items: 1,\n mode: this.modeValue,\n center: true,\n nav: true,\n nextButton: this.nextTarget,\n prevButton: this.prevTarget,\n controls: !this.navValue,\n responsive: {\n 550: {\n controls: true\n },\n 768: {\n nav: this.navValue\n }\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class Tabs extends Controller {\n static targets = ['tabButton', 'tabContent']\n static values = { activeButtonClass: String }\n\n connect () {\n this.currentTabIndex = Number(this.element.dataset.index)\n this.showCurrentTab()\n }\n\n onButtonClick () {\n this.currentTabIndex = (this.tabButtonTargets.findIndex(tab => tab.id === window.event.currentTarget.id))\n this.showCurrentTab()\n }\n\n showCurrentTab () {\n this.tabButtonTargets.forEach((element, index) => {\n index === this.currentTabIndex ? element.classList.add(this.activeButtonClassValue) : element.classList.remove(this.activeButtonClassValue)\n })\n\n this.tabContentTargets.forEach((element, index) => {\n index === this.currentTabIndex ? element.classList.remove('tab__content--hidden') : element.classList.add('tab__content--hidden')\n })\n }\n}\n","export class FetchResponse {\n constructor (response) {\n this.response = response\n }\n\n get statusCode () {\n return this.response.status\n }\n\n get redirected () {\n return this.response.redirected\n }\n\n get ok () {\n return this.response.ok\n }\n\n get unauthenticated () {\n return this.statusCode === 401\n }\n\n get unprocessableEntity () {\n return this.statusCode === 422\n }\n\n get authenticationURL () {\n return this.response.headers.get('WWW-Authenticate')\n }\n\n get contentType () {\n const contentType = this.response.headers.get('Content-Type') || ''\n\n return contentType.replace(/;.*$/, '')\n }\n\n get headers () {\n return this.response.headers\n }\n\n get html () {\n if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n return this.text\n }\n\n return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n }\n\n get json () {\n if (this.contentType.match(/^application\\/.*json$/)) {\n return this.responseJson || (this.responseJson = this.response.json())\n }\n\n return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n }\n\n get text () {\n return this.responseText || (this.responseText = this.response.text())\n }\n\n get isTurboStream () {\n return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n }\n\n async renderTurboStream () {\n if (this.isTurboStream) {\n if (window.Turbo) {\n await window.Turbo.renderStreamMessage(await this.text)\n } else {\n console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n }\n } else {\n return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n }\n }\n}\n","export class RequestInterceptor {\n static register (interceptor) {\n this.interceptor = interceptor\n }\n\n static get () {\n return this.interceptor\n }\n\n static reset () {\n this.interceptor = undefined\n }\n}\n","export function getCookie (name) {\n const cookies = document.cookie ? document.cookie.split('; ') : []\n const prefix = `${encodeURIComponent(name)}=`\n const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n if (cookie) {\n const value = cookie.split('=').slice(1).join('=')\n\n if (value) {\n return decodeURIComponent(value)\n }\n }\n}\n\nexport function compact (object) {\n const result = {}\n\n for (const key in object) {\n const value = object[key]\n if (value !== undefined) {\n result[key] = value\n }\n }\n\n return result\n}\n\nexport function metaContent (name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n return [...formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n for (const [name, value] of entries) {\n if (value instanceof window.File) continue\n\n if (searchParams.has(name)) {\n searchParams.delete(name)\n searchParams.set(name, value)\n } else {\n searchParams.append(name, value)\n }\n }\n}\n","import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n constructor (method, url, options = {}) {\n this.method = method\n this.options = options\n this.originalUrl = url.toString()\n }\n\n async perform () {\n try {\n const requestInterceptor = RequestInterceptor.get()\n if (requestInterceptor) {\n await requestInterceptor(this)\n }\n } catch (error) {\n console.error(error)\n }\n\n const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n if (response.unauthenticated && response.authenticationURL) {\n return Promise.reject(window.location.href = response.authenticationURL)\n }\n\n if (response.ok && response.isTurboStream) {\n await response.renderTurboStream()\n }\n\n return response\n }\n\n addHeader (key, value) {\n const headers = this.additionalHeaders\n headers[key] = value\n this.options.headers = headers\n }\n\n get fetchOptions () {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: 'same-origin',\n redirect: this.redirect\n }\n }\n\n get headers () {\n return compact(\n Object.assign({\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': this.csrfToken,\n 'Content-Type': this.contentType,\n Accept: this.accept\n },\n this.additionalHeaders)\n )\n }\n\n get csrfToken () {\n return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n }\n\n get contentType () {\n if (this.options.contentType) {\n return this.options.contentType\n } else if (this.body == null || this.body instanceof window.FormData) {\n return undefined\n } else if (this.body instanceof window.File) {\n return this.body.type\n }\n\n return 'application/json'\n }\n\n get accept () {\n switch (this.responseKind) {\n case 'html':\n return 'text/html, application/xhtml+xml'\n case 'turbo-stream':\n return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n case 'json':\n return 'application/json, application/vnd.api+json'\n default:\n return '*/*'\n }\n }\n\n get body () {\n return this.options.body\n }\n\n get query () {\n const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n const params = new URLSearchParams(originalQuery)\n\n let requestQuery = this.options.query\n if (requestQuery instanceof window.FormData) {\n requestQuery = stringEntriesFromFormData(requestQuery)\n } else if (requestQuery instanceof window.URLSearchParams) {\n requestQuery = requestQuery.entries()\n } else {\n requestQuery = Object.entries(requestQuery || {})\n }\n\n mergeEntries(params, requestQuery)\n\n const query = params.toString()\n return (query.length > 0 ? `?${query}` : '')\n }\n\n get url () {\n return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n }\n\n get responseKind () {\n return this.options.responseKind || 'html'\n }\n\n get signal () {\n return this.options.signal\n }\n\n get redirect () {\n return this.options.redirect || 'follow'\n }\n\n get additionalHeaders () {\n return this.options.headers || {}\n }\n\n get formattedBody () {\n const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n if (contentTypeIsJson && !bodyIsAString) {\n return JSON.stringify(this.body)\n }\n\n return this.body\n }\n}\n","import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n const request = new FetchRequest('get', url, options)\n return request.perform()\n}\n\nasync function post (url, options) {\n const request = new FetchRequest('post', url, options)\n return request.perform()\n}\n\nasync function put (url, options) {\n const request = new FetchRequest('put', url, options)\n return request.perform()\n}\n\nasync function patch (url, options) {\n const request = new FetchRequest('patch', url, options)\n return request.perform()\n}\n\nasync function destroy (url, options) {\n const request = new FetchRequest('delete', url, options)\n return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n","import { Controller } from '@hotwired/stimulus'\nimport { get, post } from '@rails/request.js'\n\nexport default class extends Controller {\n getTurboSteam (event) {\n event.preventDefault()\n get(event.target.href, {\n contentType: 'text/vnd.turbo-stream.html',\n responseKind: 'turbo-stream'\n })\n }\n\n postTurboSteam (event) {\n event.preventDefault()\n post(event.target.href, {\n contentType: 'text/vnd.turbo-stream.html',\n responseKind: 'turbo-stream'\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport * as Turbo from '@hotwired/turbo'\n\nexport default class extends Controller {\n connect () {\n this.element.addEventListener('turbo:submit-end', (event) => {\n this.#next(event)\n })\n }\n\n #next (event) {\n if (event.detail.success) {\n Turbo.visit(event.detail.fetchResponse.response.url)\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class Video extends Controller {\n static targets = ['source']\n\n connect () {\n if ('IntersectionObserver' in window) {\n var lazyVideoObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (video) {\n if (video.isIntersecting) {\n for (const source in video.target.children) {\n const videoSource = video.target.children[source]\n if (typeof videoSource.tagName === 'string' && videoSource.tagName === 'SOURCE') {\n videoSource.src = videoSource.dataset.src\n }\n }\n\n video.target.load()\n video.target.classList.remove('lazy')\n lazyVideoObserver.unobserve(video.target)\n }\n })\n })\n\n lazyVideoObserver.observe(this.element)\n }\n }\n}\n","import { Application } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nimport { registerControllers } from 'stimulus-vite-helpers'\nimport { Alert, Tabs, Toggle } from 'tailwindcss-stimulus-components'\nimport TextareaAutogrow from 'stimulus-textarea-autogrow'\n\nconst application = Application.start()\nconst controllers = import.meta.glob('~/application_controllers/**/*_controller.js', { eager: true })\n\napplication.register('alert', Alert)\napplication.register('ttabs', Tabs)\napplication.register('toggle', Toggle)\napplication.register('textarea-autogrow', TextareaAutogrow)\n\nwindow.Stimulus = application\nregisterControllers(application, controllers)\n\nTurbo.setProgressBarDelay(500)\n\ndocument.addEventListener('turbo:load', function () {\n window.CLUTCHCO && window.CLUTCHCO.Init()\n})\n"],"names":["Accordion","Controller","accordionBlock","notClickedBlock","__publicField","tinySlider","win$1","raf","cb","win","caf","id","extend","obj","name","copy","target","i","length","checkStorageValue","value","setLocalStorage","storage","key","access","getSlideId","getBody","doc","body","docElement","setFakeBody","docOverflow","resetFakeBody","calc","div","result","str","vals","val","percentageLayout","wrapper","outer","count","perPage","supported","mediaquerySupport","style","rule","position","createStyleSheet","media","nonce","addCSSRule","sheet","selector","rules","index","removeCSSRule","getCssRulesLength","toDegree","y","x","getTouchDirection","angle","range","direction","gap","forEach","arr","callback","scope","classListSupport","hasClass","el","addClass","removeClass","hasAttr","attr","getAttr","isNodeList","setAttrs","els","attrs","removeAttrs","attrLength","j","arrayFromNodeList","nl","l","hideElement","forceHide","showElement","isVisible","whichProperty","props","Props","prefixes","prefix","prop","has3DTransforms","tf","has3d","cssTF","getEndProperty","propIn","propOut","endProp","supportsPassive","opts","passiveOption","addEvents","preventScrolling","option","removeEvents","Events","eventName","fn","data","jsTransform","element","postfix","to","duration","tick","unit","from","positionTick","moveElement","object","keys","tns","options","KEYS","tnsStorage","localStorageAccess","browserInfo","uid","item","CALC","PERCENTAGELAYOUT","CSSMQ","TRANSFORM","HAS3DTRANSFORMS","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","responsive","nested","carousel","responsiveTem","updateOptions","animateIn","animateOut","animateDelay","animateNormal","horizontal","outerWrapper","innerWrapper","middleWrapper","container","containerParent","containerHTML","slideItems","slideCount","breakpointZone","windowWidth","getWindowWidth","isOn","setBreakpointZone","autoWidth","fixedWidth","getOption","edgePadding","gutter","viewport","getViewportWidth","center","items","slideBy","viewportMax","arrowKeys","speed","rewind","loop","autoHeight","controls","controlsText","nav","touch","mouseDrag","autoplay","autoplayTimeout","autoplayText","autoplayHoverPause","autoplayResetOnVisibility","lazyload","lazyloadSelector","slidePositions","slideItemsOut","cloneCount","getCloneCountForLoop","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","getCurrentSlide","indexMin","indexMax","preventActionWhenRunning","swipeAngle","moveDirectionExpected","running","onInit","events","newContainerClasses","slideId","disable","disabled","freezable","freeze","getFreeze","frozen","controlsEvents","onControlsClick","onControlsKeydown","navEvents","onNavClick","onNavKeydown","hoverEvents","mouseoverPause","mouseoutRestart","visibilityEvent","onVisibilityChange","docmentKeydownEvent","onDocumentKeydown","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasOption","hasNav","navAsThumbnails","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","slideClonedClass","imgCompleteClass","imgEvents","onImgLoaded","onImgFailed","imgsComplete","liveregionCurrent","preventScroll","controlsContainer","controlsContainerHTML","prevButton","nextButton","prevButtonHTML","nextButtonHTML","prevIsButton","nextIsButton","navContainer","navContainerHTML","navItems","pages","getPages","pagesCached","navClicked","navCurrentIndex","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayDirection","autoplayButton","autoplayButtonHTML","autoplayHtmlStrings","autoplayTimer","animating","autoplayHoverPaused","autoplayUserPaused","autoplayVisibilityPaused","initPosition","lastPosition","translateInit","panStart","rafIndex","getDist","a","b","resetVariblesWhenDisable","initStructure","initSheet","initSliderTransform","condition","tem","ind","getAbsIndex","absIndex","getItemsMax","bp","itemsMax","getInsertPosition","pos","getClientWidth","rect","width","ww","getSlideMarginLeft","getInnerWrapperStyles","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","autoHeightBP","gutterTemUnit","dir","getTransitionDurationStyle","getContainerWidth","itemsTem","getSlideWidthStyle","dividend","getSlideGutterStyle","getCSSPrefix","num","getAnimationDurationStyle","classOuter","classInner","wp","fragmentBefore","fragmentAfter","cloneFirst","cloneLast","imgs","img","src","imgLoaded","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","left","right","initSliderTransformCore","setSlidePositions","updateContentWrapperHeight","slide","update_carousel_transition_duration","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","gutterBP","updateSlideStatus","getLiveRegionStr","txt","toggleAutoplay","startAutoplay","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","eve","onTransitionEnd","resizeTasks","info","onResize","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","destroy","htmlList","prevEl","parentEl","e","getEvent","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","updateIndex","enableSlider","doContainerTransform","getContainerTransformValue","unfreezeSlider","stopAutoplay","html","len","updateLiveRegion","updateGallerySlidePositions","vp","leftEdge","rightEdge","enableUI","classN","getVisibleSlideRange","start","end","rangestart","rangeend","point","cell","arg","srcset","getTarget","imgFailed","imgCompleted","imgSelector","updateInnerWrapperHeight","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","attr2","base","navPrev","navCurrent","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","resetDuration","getSliderWidth","getCenterGap","denominator","animateSlide","number","classOut","classIn","isOut","transformCore","render","sliderMoved","strTrans","event","goTo","targetIndex","indexGap","factor","passEventObject","targetIn","navIndex","targetIndexBase","setAutoplayTimer","stopAutoplayTimer","updateAutoplayButton","action","play","pause","keyIndex","setFocus","curElement","isTouchEvent","preventDefaultBehavior","getMoveDirectionExpected","$","panUpdate","dist","percentageX","preventClick","indexMoved","moved","rough","min","max","tns_1","CareersController","Dropdown","_a","image_preview_controller","input","output","reader","L","I","t","S","V","u","r","n","C","T","A","c","D","d","E","v","w","o","k","m","F","p","B","h","P","s","_b","_c","_d","f","q","ModalController","Modal","PortfolioController","servicesArray","complexityArray","sizeArray","durationArray","PRICING","Pricing","SliderController","Tabs","tab","FetchResponse","response","RequestInterceptor","interceptor","getCookie","cookies","cookie","compact","metaContent","stringEntriesFromFormData","formData","entries","mergeEntries","searchParams","FetchRequest","method","url","requestInterceptor","error","headers","originalQuery","params","requestQuery","query","bodyIsAString","get","post","turbo_controller","turbo_form_redirect_controller","__privateAdd","_turbo_form_redirect_controller_instances","__privateMethod","next_fn","Turbo.visit","Video","lazyVideoObserver","observer","video","source","videoSource","application","Application","controllers","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","Alert","Toggle","TextareaAutogrow","registerControllers","Turbo.setProgressBarDelay"],"mappings":"iiBAEe,MAAMA,WAAkBC,CAAW,CAGhD,sBAAwB,CACtB,KAAK,iBAAmB,KAAK,iBAAiB,OAC5CC,GAAkBA,EAAe,KAAO,OAAO,MAAM,cAAc,EACzE,EACI,KAAK,iBAAiB,QAAQC,GAAmBA,EAAgB,UAAU,OAAO,uBAAuB,CAAC,EAC1G,OAAO,MAAM,cAAc,UAAU,OAAO,uBAAuB,CACvE,CACA,CATEC,EADmBJ,GACZ,UAAU,CAAC,WAAW,4HCD/B,OAAO,eAAeK,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAE5D,IAAIC,GAAQ,OACRC,GAAMD,GAAM,uBAAyBA,GAAM,6BAA+BA,GAAM,0BAA4BA,GAAM,yBAA2B,SAAUE,EAAI,CAC7J,OAAO,WAAWA,EAAI,EAAE,CAC1B,EAEIC,GAAM,OACNC,GAAMD,GAAI,sBAAwBA,GAAI,yBAA2B,SAAUE,EAAI,CACjF,aAAaA,CAAE,CACjB,EAEA,SAASC,IAAS,CAQhB,QAPIC,EACAC,EACAC,EACAC,EAAS,UAAU,CAAC,GAAK,CAAE,EAC3BC,EAAI,EACJC,EAAS,UAAU,OAEhBD,EAAIC,EAAQD,IACjB,IAAKJ,EAAM,UAAUI,CAAC,KAAO,KAC3B,IAAKH,KAAQD,EACXE,EAAOF,EAAIC,CAAI,EAEXE,IAAWD,GAEJA,IAAS,SAClBC,EAAOF,CAAI,EAAIC,GAMvB,OAAOC,CACT,CAEA,SAASG,GAAkBC,EAAO,CAChC,MAAO,CAAC,OAAQ,OAAO,EAAE,QAAQA,CAAK,GAAK,EAAI,KAAK,MAAMA,CAAK,EAAIA,CACrE,CAEA,SAASC,GAAgBC,EAASC,EAAKH,EAAOI,EAAQ,CACpD,GAAIA,EACF,GAAI,CACFF,EAAQ,QAAQC,EAAKH,CAAK,CAC3B,MAAW,CAAA,CAGd,OAAOA,CACT,CAEA,SAASK,IAAa,CACpB,IAAId,EAAK,OAAO,MAChB,cAAO,MAASA,EAASA,EAAK,EAAT,EACd,MAAQ,OAAO,KACxB,CAEA,SAASe,IAAU,CACjB,IAAIC,EAAM,SACNC,EAAOD,EAAI,KAEf,OAAKC,IACHA,EAAOD,EAAI,cAAc,MAAM,EAC/BC,EAAK,KAAO,IAGPA,CACT,CAEA,IAAIC,GAAa,SAAS,gBAE1B,SAASC,GAAYF,EAAM,CACzB,IAAIG,EAAc,GAElB,OAAIH,EAAK,OACPG,EAAcF,GAAW,MAAM,SAE/BD,EAAK,MAAM,WAAa,GAExBA,EAAK,MAAM,SAAWC,GAAW,MAAM,SAAW,SAClDA,GAAW,YAAYD,CAAI,GAGtBG,CACT,CAEA,SAASC,GAAcJ,EAAMG,EAAa,CACpCH,EAAK,OACPA,EAAK,OAAQ,EACbC,GAAW,MAAM,SAAWE,EAG5BF,GAAW,aAEf,CAGA,SAASI,IAAO,CACd,IAAIN,EAAM,SACNC,EAAOF,GAAS,EAChBK,EAAcD,GAAYF,CAAI,EAC9BM,EAAMP,EAAI,cAAc,KAAK,EAC7BQ,EAAS,GACbP,EAAK,YAAYM,CAAG,EAEpB,GAAI,CAKF,QAJIE,EAAM,cACNC,EAAO,CAAC,OAASD,EAAK,YAAcA,EAAK,eAAiBA,CAAG,EAC7DE,EAEKrB,EAAI,EAAGA,EAAI,EAAGA,IAIrB,GAHAqB,EAAMD,EAAKpB,CAAC,EACZiB,EAAI,MAAM,MAAQI,EAEdJ,EAAI,cAAgB,IAAK,CAC3BC,EAASG,EAAI,QAAQF,EAAK,EAAE,EAC5B,KACR,CAEG,MAAW,CAAA,CAEZ,OAAAR,EAAK,KAAOI,GAAcJ,EAAMG,CAAW,EAAIG,EAAI,OAAQ,EACpDC,CACT,CAGA,SAASI,IAAmB,CAE1B,IAAIZ,EAAM,SACNC,EAAOF,GAAS,EAChBK,EAAcD,GAAYF,CAAI,EAC9BY,EAAUb,EAAI,cAAc,KAAK,EACjCc,EAAQd,EAAI,cAAc,KAAK,EAC/BS,EAAM,GACNM,EAAQ,GACRC,EAAU,EACVC,EAAY,GAChBJ,EAAQ,UAAY,cACpBC,EAAM,UAAY,WAElB,QAASxB,GAAI,EAAGA,GAAIyB,EAAOzB,KACzBmB,GAAO,cAGT,OAAAK,EAAM,UAAYL,EAClBI,EAAQ,YAAYC,CAAK,EACzBb,EAAK,YAAYY,CAAO,EACxBI,EAAY,KAAK,IAAIJ,EAAQ,sBAAqB,EAAG,KAAOC,EAAM,SAASC,EAAQC,CAAO,EAAE,sBAAqB,EAAG,IAAI,EAAI,EAC5Hf,EAAK,KAAOI,GAAcJ,EAAMG,CAAW,EAAIS,EAAQ,OAAQ,EACxDI,CACT,CAEA,SAASC,IAAoB,CAC3B,GAAI,OAAO,YAAc,OAAO,aAC9B,MAAO,GAGT,IAAIlB,EAAM,SACNC,EAAOF,GAAS,EAChBK,EAAcD,GAAYF,CAAI,EAC9BM,EAAMP,EAAI,cAAc,KAAK,EAC7BmB,EAAQnB,EAAI,cAAc,OAAO,EACjCoB,EAAO,kEACPC,EACJ,OAAAF,EAAM,KAAO,WACbZ,EAAI,UAAY,cAChBN,EAAK,YAAYkB,CAAK,EACtBlB,EAAK,YAAYM,CAAG,EAEhBY,EAAM,WACRA,EAAM,WAAW,QAAUC,EAE3BD,EAAM,YAAYnB,EAAI,eAAeoB,CAAI,CAAC,EAG5CC,EAAW,OAAO,iBAAmB,OAAO,iBAAiBd,CAAG,EAAE,SAAWA,EAAI,aAAa,SAC9FN,EAAK,KAAOI,GAAcJ,EAAMG,CAAW,EAAIG,EAAI,OAAQ,EACpDc,IAAa,UACtB,CAGA,SAASC,GAAiBC,EAAOC,EAAO,CAEtC,IAAIL,EAAQ,SAAS,cAAc,OAAO,EAU1C,OAAIK,GACFL,EAAM,aAAa,QAASK,CAAK,EAMnC,SAAS,cAAc,MAAM,EAAE,YAAYL,CAAK,EACzCA,EAAM,MAAQA,EAAM,MAAQA,EAAM,UAC3C,CAGA,SAASM,GAAWC,EAAOC,EAAUC,EAAOC,EAAO,CAEjD,eAAgBH,EAAQA,EAAM,WAAWC,EAAW,IAAMC,EAAQ,IAAKC,CAAK,EAAIH,EAAM,QAAQC,EAAUC,EAAOC,CAAK,CACtH,CAGA,SAASC,GAAcJ,EAAOG,EAAO,CAEnC,eAAgBH,EAAQA,EAAM,WAAWG,CAAK,EAAIH,EAAM,WAAWG,CAAK,CAC1E,CAEA,SAASE,GAAkBL,EAAO,CAChC,IAAIN,EAAO,eAAgBM,EAAQA,EAAM,SAAWA,EAAM,MAC1D,OAAON,EAAK,MACd,CAEA,SAASY,GAASC,EAAGC,EAAG,CACtB,OAAO,KAAK,MAAMD,EAAGC,CAAC,GAAK,IAAM,KAAK,GACxC,CAEA,SAASC,GAAkBC,EAAOC,EAAO,CACvC,IAAIC,EAAY,GACZC,EAAM,KAAK,IAAI,GAAK,KAAK,IAAIH,CAAK,CAAC,EAEvC,OAAIG,GAAO,GAAKF,EACdC,EAAY,aACHC,GAAOF,IAChBC,EAAY,YAGPA,CACT,CAGA,SAASE,GAAQC,EAAKC,EAAUC,EAAO,CACrC,QAASrD,EAAI,EAAG,EAAImD,EAAI,OAAQnD,EAAI,EAAGA,IACrCoD,EAAS,KAAKC,EAAOF,EAAInD,CAAC,EAAGA,CAAC,CAElC,CAEA,IAAIsD,GAAoB,cAAe,SAAS,cAAc,GAAG,EAE7DC,GAAWD,GAAmB,SAAUE,EAAIrC,EAAK,CACnD,OAAOqC,EAAG,UAAU,SAASrC,CAAG,CAClC,EAAI,SAAUqC,EAAIrC,EAAK,CACrB,OAAOqC,EAAG,UAAU,QAAQrC,CAAG,GAAK,CACtC,EAEIsC,EAAWH,GAAmB,SAAUE,EAAIrC,EAAK,CAC9CoC,GAASC,EAAIrC,CAAG,GACnBqC,EAAG,UAAU,IAAIrC,CAAG,CAExB,EAAI,SAAUqC,EAAIrC,EAAK,CAChBoC,GAASC,EAAIrC,CAAG,IACnBqC,EAAG,WAAa,IAAMrC,EAE1B,EAEIuC,GAAcJ,GAAmB,SAAUE,EAAIrC,EAAK,CAClDoC,GAASC,EAAIrC,CAAG,GAClBqC,EAAG,UAAU,OAAOrC,CAAG,CAE3B,EAAI,SAAUqC,EAAIrC,EAAK,CACjBoC,GAASC,EAAIrC,CAAG,IAClBqC,EAAG,UAAYA,EAAG,UAAU,QAAQrC,EAAK,EAAE,EAE/C,EAEA,SAASwC,GAAQH,EAAII,EAAM,CACzB,OAAOJ,EAAG,aAAaI,CAAI,CAC7B,CAEA,SAASC,GAAQL,EAAII,EAAM,CACzB,OAAOJ,EAAG,aAAaI,CAAI,CAC7B,CAEA,SAASE,GAAWN,EAAI,CAEtB,OAAO,OAAOA,EAAG,KAAS,GAC5B,CAEA,SAASO,GAASC,EAAKC,EAAO,CAG5B,GAFAD,EAAMF,GAAWE,CAAG,GAAKA,aAAe,MAAQA,EAAM,CAACA,CAAG,EAEtD,OAAO,UAAU,SAAS,KAAKC,CAAK,IAAM,kBAI9C,QAASjE,EAAIgE,EAAI,OAAQhE,KACvB,QAASM,KAAO2D,EACdD,EAAIhE,CAAC,EAAE,aAAaM,EAAK2D,EAAM3D,CAAG,CAAC,CAGzC,CAEA,SAAS4D,GAAYF,EAAKC,EAAO,CAC/BD,EAAMF,GAAWE,CAAG,GAAKA,aAAe,MAAQA,EAAM,CAACA,CAAG,EAC1DC,EAAQA,aAAiB,MAAQA,EAAQ,CAACA,CAAK,EAG/C,QAFIE,EAAaF,EAAM,OAEdjE,EAAIgE,EAAI,OAAQhE,KACvB,QAASoE,EAAID,EAAYC,KACvBJ,EAAIhE,CAAC,EAAE,gBAAgBiE,EAAMG,CAAC,CAAC,CAGrC,CAEA,SAASC,GAAkBC,EAAI,CAG7B,QAFInB,EAAM,CAAE,EAEHnD,EAAI,EAAGuE,EAAID,EAAG,OAAQtE,EAAIuE,EAAGvE,IACpCmD,EAAI,KAAKmB,EAAGtE,CAAC,CAAC,EAGhB,OAAOmD,CACT,CAEA,SAASqB,GAAYhB,EAAIiB,EAAW,CAC9BjB,EAAG,MAAM,UAAY,SACvBA,EAAG,MAAM,QAAU,OAEvB,CAEA,SAASkB,GAAYlB,EAAIiB,EAAW,CAC9BjB,EAAG,MAAM,UAAY,SACvBA,EAAG,MAAM,QAAU,GAEvB,CAEA,SAASmB,GAAUnB,EAAI,CACrB,OAAO,OAAO,iBAAiBA,CAAE,EAAE,UAAY,MACjD,CAEA,SAASoB,GAAcC,EAAO,CAC5B,GAAI,OAAOA,GAAU,SAAU,CAC7B,IAAI1B,EAAM,CAAC0B,CAAK,EACZC,EAAQD,EAAM,OAAO,CAAC,EAAE,cAAgBA,EAAM,OAAO,CAAC,EACtDE,EAAW,CAAC,SAAU,MAAO,KAAM,GAAG,EAC1CA,EAAS,QAAQ,SAAUC,EAAQ,EAC7BA,IAAW,MAAQH,IAAU,cAC/B1B,EAAI,KAAK6B,EAASF,CAAK,CAE/B,CAAK,EACDD,EAAQ1B,CACZ,CAEE,IAAIK,EAAK,SAAS,cAAc,aAAa,EACzCqB,EAAM,OAEV,QAAS7E,EAAI,EAAGA,EAAI6E,EAAM,OAAQ7E,IAAK,CACrC,IAAIiF,EAAOJ,EAAM7E,CAAC,EAElB,GAAIwD,EAAG,MAAMyB,CAAI,IAAM,OACrB,OAAOA,CAEb,CAEE,MAAO,EACT,CAEA,SAASC,GAAgBC,EAAI,CAK3B,GAJI,CAACA,GAID,CAAC,OAAO,iBACV,MAAO,GAGT,IAAIzE,EAAM,SACNC,EAAOF,GAAS,EAChBK,EAAcD,GAAYF,CAAI,EAC9B6C,EAAK9C,EAAI,cAAc,GAAG,EAC1B0E,EACAC,EAAQF,EAAG,OAAS,EAAI,IAAMA,EAAG,MAAM,EAAG,EAAE,EAAE,YAAa,EAAG,IAAM,GACxE,OAAAE,GAAS,YAET1E,EAAK,aAAa6C,EAAI,IAAI,EAC1BA,EAAG,MAAM2B,CAAE,EAAI,2BACfC,EAAQ,OAAO,iBAAiB5B,CAAE,EAAE,iBAAiB6B,CAAK,EAC1D1E,EAAK,KAAOI,GAAcJ,EAAMG,CAAW,EAAI0C,EAAG,OAAQ,EACnD4B,IAAU,QAAaA,EAAM,OAAS,GAAKA,IAAU,MAC9D,CAMA,SAASE,GAAeC,EAAQC,EAAS,CACvC,IAAIC,EAAU,GAEd,MAAI,UAAU,KAAKF,CAAM,EACvBE,EAAU,SAAWD,EAAU,MACtB,KAAK,KAAKD,CAAM,EACzBE,EAAU,IAAMD,EAAU,MACjBD,IACTE,EAAUD,EAAQ,YAAW,EAAK,OAG7BC,CACT,CAGA,IAAIC,GAAkB,GAEtB,GAAI,CACF,IAAIC,GAAO,OAAO,eAAe,CAAA,EAAI,UAAW,CAC9C,IAAK,UAAY,CACfD,GAAkB,EACxB,CACA,CAAG,EACD,OAAO,iBAAiB,OAAQ,KAAMC,EAAI,CAC5C,MAAY,CAAA,CAEZ,IAAIC,GAAgBF,GAAkB,CACpC,QAAS,EACX,EAAI,GAEJ,SAASG,EAAUrC,EAAI5D,EAAKkG,EAAkB,CAC5C,QAASb,KAAQrF,EAAK,CACpB,IAAImG,EAAS,CAAC,aAAc,WAAW,EAAE,QAAQd,CAAI,GAAK,GAAK,CAACa,EAAmBF,GAAgB,GACnGpC,EAAG,iBAAiByB,EAAMrF,EAAIqF,CAAI,EAAGc,CAAM,CAC/C,CACA,CAEA,SAASC,EAAaxC,EAAI5D,EAAK,CAC7B,QAASqF,KAAQrF,EAAK,CACpB,IAAImG,EAAS,CAAC,aAAc,WAAW,EAAE,QAAQd,CAAI,GAAK,EAAIW,GAAgB,GAC9EpC,EAAG,oBAAoByB,EAAMrF,EAAIqF,CAAI,EAAGc,CAAM,CAClD,CACA,CAEA,SAASE,IAAS,CAChB,MAAO,CACL,OAAQ,CAAE,EACV,GAAI,SAAUC,EAAWC,EAAI,CAC3B,KAAK,OAAOD,CAAS,EAAI,KAAK,OAAOA,CAAS,GAAK,CAAE,EACrD,KAAK,OAAOA,CAAS,EAAE,KAAKC,CAAE,CAC/B,EACD,IAAK,SAAUD,EAAWC,EAAI,CAC5B,GAAI,KAAK,OAAOD,CAAS,GACvB,QAASlG,EAAI,EAAGA,EAAI,KAAK,OAAOkG,CAAS,EAAE,OAAQlG,IACjD,GAAI,KAAK,OAAOkG,CAAS,EAAElG,CAAC,IAAMmG,EAAI,CACpC,KAAK,OAAOD,CAAS,EAAE,OAAOlG,EAAG,CAAC,EAClC,KACZ,EAGK,EACD,KAAM,SAAUkG,EAAWE,EAAM,CAC/BA,EAAK,KAAOF,EAER,KAAK,OAAOA,CAAS,GACvB,KAAK,OAAOA,CAAS,EAAE,QAAQ,SAAUC,EAAI,CAC3CA,EAAGC,EAAMF,CAAS,CAC5B,CAAS,CAET,CACG,CACH,CAEA,SAASG,GAAYC,EAAS1C,EAAMoB,EAAQuB,EAASC,GAAIC,EAAUrD,EAAU,CAC3E,IAAIsD,EAAO,KAAK,IAAID,EAAU,EAAE,EAC5BE,EAAOH,GAAG,QAAQ,GAAG,GAAK,EAAI,IAAM,KACpCA,GAAKA,GAAG,QAAQG,EAAM,EAAE,EACxBC,GAAO,OAAON,EAAQ,MAAM1C,CAAI,EAAE,QAAQoB,EAAQ,EAAE,EAAE,QAAQuB,EAAS,EAAE,EAAE,QAAQI,EAAM,EAAE,CAAC,EAC5FE,IAAgBL,GAAKI,IAAQH,EAAWC,EAC5C,WAAWI,GAAaJ,CAAI,EAE5B,SAASI,IAAc,CACrBL,GAAYC,EACZE,IAAQC,GACRP,EAAQ,MAAM1C,CAAI,EAAIoB,EAAS4B,GAAOD,EAAOJ,EAEzCE,EAAW,EACb,WAAWK,GAAaJ,CAAI,EAE5BtD,EAAU,CAEhB,CACA,CAGK,OAAO,OACV,OAAO,KAAO,SAAU2D,EAAQ,CAC9B,IAAIC,EAAO,CAAE,EAEb,QAASnH,KAAQkH,EACX,OAAO,UAAU,eAAe,KAAKA,EAAQlH,CAAI,GACnDmH,EAAK,KAAKnH,CAAI,EAIlB,OAAOmH,CACR,GAIG,WAAY,QAAQ,YACxB,QAAQ,UAAU,OAAS,UAAY,CACjC,KAAK,YACP,KAAK,WAAW,YAAY,IAAI,CAEnC,GAEH,IAAIC,GAAM,SAAUC,EAAS,CAC3BA,EAAUvH,GAAO,CACf,UAAW,UACX,KAAM,WACN,KAAM,aACN,MAAO,EACP,OAAQ,EACR,YAAa,EACb,WAAY,GACZ,UAAW,GACX,YAAa,GACb,QAAS,EACT,OAAQ,GACR,SAAU,GACV,iBAAkB,MAClB,aAAc,CAAC,OAAQ,MAAM,EAC7B,kBAAmB,GACnB,WAAY,GACZ,WAAY,GACZ,IAAK,GACL,YAAa,MACb,aAAc,GACd,gBAAiB,GACjB,UAAW,GACX,MAAO,IACP,SAAU,GACV,iBAAkB,MAClB,gBAAiB,IACjB,kBAAmB,UACnB,aAAc,CAAC,QAAS,MAAM,EAC9B,mBAAoB,GACpB,eAAgB,GAChB,qBAAsB,GACtB,0BAA2B,GAC3B,UAAW,aACX,WAAY,cACZ,cAAe,aACf,aAAc,GACd,KAAM,GACN,OAAQ,GACR,WAAY,GACZ,WAAY,GACZ,SAAU,GACV,iBAAkB,gBAClB,MAAO,GACP,UAAW,GACX,WAAY,GACZ,OAAQ,GACR,yBAA0B,GAC1B,qBAAsB,GACtB,UAAW,GACX,OAAQ,GACR,gBAAiB,GACjB,MAAO,EACX,EAAKuH,GAAW,CAAA,CAAE,EAChB,IAAIxG,EAAM,SACNlB,EAAM,OACN2H,EAAO,CACT,MAAO,GACP,MAAO,GACP,KAAM,GACN,MAAO,EACR,EACGC,EAAa,CAAE,EACfC,EAAqBH,EAAQ,gBAEjC,GAAIG,EAAoB,CAEtB,IAAIC,EAAc,UAAU,UACxBC,EAAM,IAAI,KAEd,GAAI,CACFH,EAAa5H,EAAI,aAEb4H,GACFA,EAAW,QAAQG,EAAKA,CAAG,EAC3BF,EAAqBD,EAAW,QAAQG,CAAG,GAAKA,EAChDH,EAAW,WAAWG,CAAG,GAEzBF,EAAqB,GAGlBA,IACHD,EAAa,CAAE,EAElB,MAAW,CACVC,EAAqB,EAC3B,CAEQA,IAEED,EAAW,QAAaA,EAAW,SAAcE,GACnD,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,KAAK,EAAE,QAAQ,SAAUE,EAAM,CACvGJ,EAAW,WAAWI,CAAI,CACpC,CAAS,EAIH,aAAa,OAAYF,EAE/B,CAEE,IAAIG,EAAOL,EAAW,GAAQlH,GAAkBkH,EAAW,EAAK,EAAIhH,GAAgBgH,EAAY,KAAMpG,GAAI,EAAIqG,CAAkB,EAC5HK,GAAmBN,EAAW,IAASlH,GAAkBkH,EAAW,GAAM,EAAIhH,GAAgBgH,EAAY,MAAO9F,GAAgB,EAAI+F,CAAkB,EACvJM,GAAQP,EAAW,IAASlH,GAAkBkH,EAAW,GAAM,EAAIhH,GAAgBgH,EAAY,MAAOxF,GAAiB,EAAIyF,CAAkB,EAC7IO,GAAYR,EAAW,IAASlH,GAAkBkH,EAAW,GAAM,EAAIhH,GAAgBgH,EAAY,MAAOxC,GAAc,WAAW,EAAGyC,CAAkB,EACxJQ,GAAkBT,EAAW,IAASlH,GAAkBkH,EAAW,GAAM,EAAIhH,GAAgBgH,EAAY,MAAOlC,GAAgB0C,EAAS,EAAGP,CAAkB,EAC9JS,EAAqBV,EAAW,KAAUlH,GAAkBkH,EAAW,IAAO,EAAIhH,GAAgBgH,EAAY,OAAQxC,GAAc,oBAAoB,EAAGyC,CAAkB,EAC7KU,GAAkBX,EAAW,KAAUlH,GAAkBkH,EAAW,IAAO,EAAIhH,GAAgBgH,EAAY,OAAQxC,GAAc,iBAAiB,EAAGyC,CAAkB,EACvKW,GAAoBZ,EAAW,KAAUlH,GAAkBkH,EAAW,IAAO,EAAIhH,GAAgBgH,EAAY,OAAQxC,GAAc,mBAAmB,EAAGyC,CAAkB,EAC3KY,GAAiBb,EAAW,KAAUlH,GAAkBkH,EAAW,IAAO,EAAIhH,GAAgBgH,EAAY,OAAQxC,GAAc,gBAAgB,EAAGyC,CAAkB,EACrKa,GAAgBd,EAAW,IAASlH,GAAkBkH,EAAW,GAAM,EAAIhH,GAAgBgH,EAAY,MAAO9B,GAAewC,EAAoB,YAAY,EAAGT,CAAkB,EAClLc,GAAef,EAAW,IAASlH,GAAkBkH,EAAW,GAAM,EAAIhH,GAAgBgH,EAAY,MAAO9B,GAAe0C,GAAmB,WAAW,EAAGX,CAAkB,EAE/Ke,GAAqB5I,EAAI,SAAW,OAAOA,EAAI,QAAQ,MAAS,WAChE6I,GAAU,CAAC,YAAa,oBAAqB,aAAc,aAAc,eAAgB,gBAAgB,EACzGC,GAAkB,CAAE,EAmBxB,GAlBAD,GAAQ,QAAQ,SAAUb,EAAM,CAC9B,GAAI,OAAON,EAAQM,CAAI,GAAM,SAAU,CACrC,IAAIrG,EAAM+F,EAAQM,CAAI,EAClBhE,EAAK9C,EAAI,cAAcS,CAAG,EAG9B,GAFAmH,GAAgBd,CAAI,EAAIrG,EAEpBqC,GAAMA,EAAG,SACX0D,EAAQM,CAAI,EAAIhE,MACX,CACD4E,IACF,QAAQ,KAAK,aAAelB,EAAQM,CAAI,CAAC,EAG3C,MACR,CACA,CACA,CAAG,EAEGN,EAAQ,UAAU,SAAS,OAAS,EAAG,CACrCkB,IACF,QAAQ,KAAK,qBAAsBlB,EAAQ,SAAS,EAGtD,MACD,CAGD,IAAIqB,EAAarB,EAAQ,WACrBsB,GAAStB,EAAQ,OACjBuB,EAAWvB,EAAQ,OAAS,WAEhC,GAAIqB,EAAY,CAEV,KAAKA,IACPrB,EAAUvH,GAAOuH,EAASqB,EAAW,CAAC,CAAC,EACvC,OAAOA,EAAW,CAAC,GAGrB,IAAIG,GAAgB,CAAE,EAEtB,QAASpI,MAAOiI,EAAY,CAC1B,IAAIlH,GAAMkH,EAAWjI,EAAG,EAOxBe,GAAM,OAAOA,IAAQ,SAAW,CAC9B,MAAOA,EACf,EAAUA,GACJqH,GAAcpI,EAAG,EAAIe,EAC3B,CAEIkH,EAAaG,GACbA,GAAgB,IACjB,CAGD,SAASC,GAAc/I,EAAK,CAC1B,QAASU,KAAOV,EACT6I,IACCnI,IAAQ,YACVV,EAAIU,CAAG,EAAI,QAGTA,IAAQ,gBACVV,EAAIU,CAAG,EAAI,IAGTA,IAAQ,eACVV,EAAIU,CAAG,EAAI,KAKXA,IAAQ,cACVqI,GAAc/I,EAAIU,CAAG,CAAC,CAG9B,CAOE,GALKmI,GACHE,GAAczB,CAAO,EAInB,CAACuB,EAAU,CACbvB,EAAQ,KAAO,aACfA,EAAQ,QAAU,OAClBA,EAAQ,YAAc,GACtB,IAAI0B,GAAY1B,EAAQ,UACpB2B,GAAa3B,EAAQ,WACrB4B,GAAe5B,EAAQ,aACvB6B,GAAgB7B,EAAQ,aAChC,CAEE,IAAI8B,EAAa9B,EAAQ,OAAS,aAC9B+B,GAAevI,EAAI,cAAc,KAAK,EACtCwI,GAAexI,EAAI,cAAc,KAAK,EACtCyI,GACAC,EAAYlC,EAAQ,UACpBmC,GAAkBD,EAAU,WAC5BE,GAAgBF,EAAU,UAC1BG,EAAaH,EAAU,SACvBI,EAAaD,EAAW,OACxBE,GACAC,GAAcC,GAAgB,EAC9BC,GAAO,GAEPrB,GACFsB,GAAmB,EAGjBpB,IACFW,EAAU,WAAa,cAIzB,IAAIU,EAAY5C,EAAQ,UACpB6C,EAAaC,EAAU,YAAY,EACnCC,EAAcD,EAAU,aAAa,EACrCE,EAASF,EAAU,QAAQ,EAC3BG,EAAWC,GAAkB,EAC7BC,EAASL,EAAU,QAAQ,EAC3BM,EAASR,EAA6C,EAAjC,KAAK,MAAME,EAAU,OAAO,CAAC,EAClDO,GAAUP,EAAU,SAAS,EAC7BQ,GAActD,EAAQ,aAAeA,EAAQ,wBAC7CuD,GAAYT,EAAU,WAAW,EACjCU,GAAQV,EAAU,OAAO,EACzBW,GAASzD,EAAQ,OACjB0D,EAAOD,GAAS,GAAQzD,EAAQ,KAChC2D,GAAab,EAAU,YAAY,EACnCc,GAAWd,EAAU,UAAU,EAC/Be,GAAef,EAAU,cAAc,EACvCgB,GAAMhB,EAAU,KAAK,EACrBiB,GAAQjB,EAAU,OAAO,EACzBkB,GAAYlB,EAAU,WAAW,EACjCmB,EAAWnB,EAAU,UAAU,EAC/BoB,GAAkBpB,EAAU,iBAAiB,EAC7CqB,GAAerB,EAAU,cAAc,EACvCsB,GAAqBtB,EAAU,oBAAoB,EACnDuB,GAA4BvB,EAAU,2BAA2B,EACjE5H,EAAQJ,GAAiB,KAAMgI,EAAU,OAAO,CAAC,EACjDwB,GAAWtE,EAAQ,SACnBuE,GAAmBvE,EAAQ,iBAC3BwE,EAEJC,GAAgB,CAAE,EACdC,EAAahB,EAAOiB,GAAoB,EAAK,EAC7CC,EAAiBrD,EAAqCe,EAAaoC,EAAa,EAApDpC,EAAaoC,EACzCG,GAAoB,IAAAhC,GAAcD,IAAc,CAACc,GACjDoB,GAAgBjC,EAAakC,GAAgB,EAAK,KAClDC,GAA6B,CAACzD,GAAY,CAACmC,EAE/CuB,GAAgBnD,EAAa,OAAS,MAClCoD,GAAkB,GAClBC,GAAmB,GAEvBC,GAAc,UAAY,CACxB,OAAIvC,EACK,UAAY,CACjB,OAAOM,GAAU,CAACO,EAAOpB,EAAa,EAAI,KAAK,KAAK,CAACwC,IAAiBjC,EAAaG,EAAO,CAC3F,EACQJ,EACF,UAAY,CACjB,QAAS9J,EAAI,EAAGA,EAAI8L,EAAe9L,IACjC,GAAI0L,EAAe1L,CAAC,GAAK,CAACgM,GACxB,OAAOhM,CAGZ,EAEM,UAAY,CACjB,OAAIqK,GAAU5B,GAAY,CAACmC,EAClBpB,EAAa,EAEboB,GAAQnC,EAAW,KAAK,IAAI,EAAGqD,EAAgB,KAAK,KAAKxB,CAAK,CAAC,EAAIwB,EAAgB,CAE7F,CAEP,EAAK,EACCvJ,EAAQgK,GAAcvC,EAAU,YAAY,CAAC,EAC7CwC,GAAcjK,EACdkK,GAAiB,EACjB,IAAIC,GAAW,EACfC,GAAY7C,EAA4B,KAAhBwC,GAAW,EACnCM,GAA2B1F,EAAQ,yBACnC2F,GAAa3F,EAAQ,WACrB4F,GAAwBD,GAAa,IAAM,GAC3CE,GAAU,GACVC,GAAS9F,EAAQ,OACjB+F,EAAS,IAAIhH,GAEjBiH,GAAsB,mBAAqBhG,EAAQ,KAC/CiG,EAAU/D,EAAU,IAAM5I,GAAY,EACtC4M,GAAUpD,EAAU,SAAS,EAC7BqD,GAAW,GACXC,GAAYpG,EAAQ,UACpBqG,GAASD,IAAa,CAACxD,EAAY0D,GAAW,EAAG,GACjDC,GAAS,GACTC,GAAiB,CACnB,MAASC,GACT,QAAWC,EACZ,EACGC,GAAY,CACd,MAASC,GACT,QAAWC,EACZ,EACGC,GAAc,CAChB,UAAaC,GACb,SAAYC,EACb,EACGC,GAAkB,CACpB,iBAAoBC,EACrB,EACGC,GAAsB,CACxB,QAAWC,EACZ,EACGC,GAAc,CAChB,WAAcC,GACd,UAAaC,GACb,SAAYC,GACZ,YAAeA,EAChB,EACGC,GAAa,CACf,UAAaH,GACb,UAAaC,GACb,QAAWC,GACX,WAAcA,EACf,EACGE,GAAcC,GAAU,UAAU,EAClCC,GAASD,GAAU,KAAK,EACxBE,GAAkBjF,EAAY,GAAO5C,EAAQ,gBAC7C8H,GAAcH,GAAU,UAAU,EAClCI,GAAWJ,GAAU,OAAO,EAC5BK,GAAeL,GAAU,WAAW,EACpCM,GAAmB,mBACnBC,GAAmB,mBACnBC,GAAmB,eACnBC,GAAY,CACd,KAAQC,GACR,MAASC,EACV,EACGC,GACAC,GACAC,GAAgBzI,EAAQ,uBAAyB,QAGrD,GAAI0H,GACF,IAAIgB,EAAoB1I,EAAQ,kBAC5B2I,GAAwB3I,EAAQ,kBAAoBA,EAAQ,kBAAkB,UAAY,GAC1F4I,EAAa5I,EAAQ,WACrB6I,EAAa7I,EAAQ,WACrB8I,GAAiB9I,EAAQ,WAAaA,EAAQ,WAAW,UAAY,GACrE+I,GAAiB/I,EAAQ,WAAaA,EAAQ,WAAW,UAAY,GACrEgJ,GACAC,GAIN,GAAIrB,GACF,IAAIsB,EAAelJ,EAAQ,aACvBmJ,GAAmBnJ,EAAQ,aAAeA,EAAQ,aAAa,UAAY,GAC3EoJ,GACAC,GAAQzG,EAAYN,EAAagH,GAAU,EAC3CC,GAAc,EACdC,GAAa,GACbC,GAAkBC,GAAoB,EACtCC,GAAwBF,GACxBG,GAAiB,iBACjBC,GAAS,iBACTC,GAAgB,mBAItB,GAAIhC,GACF,IAAIiC,GAAoB/J,EAAQ,oBAAsB,UAAY,EAAI,GAClEgK,EAAiBhK,EAAQ,eACzBiK,GAAqBjK,EAAQ,eAAiBA,EAAQ,eAAe,UAAY,GACjFkK,GAAsB,CAAC,qCAAwC,mBAAmB,EAClFC,GACAC,GACAC,GACAC,GACAC,GAGN,GAAIxC,IAAYC,GACd,IAAIwC,GAAe,CAAE,EACjBC,GAAe,CAAE,EACjBC,GACAC,GAAW,GACXC,GACAC,GAAU/I,EAAa,SAAUgJ,EAAGC,EAAG,CACzC,OAAOD,EAAE,EAAIC,EAAE,CACrB,EAAQ,SAAUD,EAAGC,EAAG,CAClB,OAAOD,EAAE,EAAIC,EAAE,CAChB,EAIEnI,GACHoI,GAAyB9E,IAAWG,EAAM,EAGxC3F,KACFuE,GAAgBvE,GAChBwE,GAAkB,YAEdvE,IACFuE,IAAmBpD,EAAa,MAAQ,WACxCqD,GAAmBrD,EAAa,cAAgB,WAEhDoD,IAAmBpD,EAAa,KAAO,KACvCqD,GAAmB,MAInB5D,IACFW,EAAU,UAAYA,EAAU,UAAU,QAAQ,YAAa,EAAE,GAGnE+I,GAAe,EACfC,GAAW,EACXC,KAEA,SAASH,GAAyBI,EAAW,CACvCA,IACFxH,GAAWE,GAAMC,GAAQC,GAAYT,GAAYU,EAAWG,GAAqBC,GAA4B,GAEnH,CAEE,SAASkB,IAAkB,CAGzB,QAFI8F,EAAM9J,EAAWlG,EAAQqJ,EAAarJ,EAEnCgQ,EAAM,GACXA,GAAO/I,EAGT,OAAO+I,EAAM/I,EAAa,CAC9B,CAEE,SAAS+C,GAAciG,EAAK,CAC1B,OAAAA,EAAMA,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI5H,EAAOpB,EAAa,EAAIA,EAAac,EAAOkI,CAAG,CAAC,EAAI,EAC9E/J,EAAW+J,EAAM5G,EAAa4G,CACzC,CAEE,SAASC,GAAYzS,EAAG,CAStB,IARIA,GAAK,OACPA,EAAIuC,GAGFkG,IACFzI,GAAK4L,GAGA5L,EAAI,GACTA,GAAKwJ,EAGP,OAAO,KAAK,MAAMxJ,EAAIwJ,CAAU,CACpC,CAEE,SAASoH,IAAqB,CAC5B,IAAI8B,EAAWD,GAAa,EACxBvR,EACJ,OAAAA,EAAS6N,GAAkB2D,EAAW3I,GAAcD,EAAY,KAAK,MAAM4I,EAAW,GAAKnC,GAAQ/G,EAAa,CAAC,EAAI,KAAK,MAAMkJ,EAAWpI,CAAK,EAE5I,CAACM,GAAQnC,GAAYlG,IAAUoK,KACjCzL,EAASqP,GAAQ,GAGZrP,CACX,CAEE,SAASyR,IAAc,CAErB,GAAI7I,GAAaC,GAAc,CAACS,GAC9B,OAAOhB,EAAa,EAEpB,IAAIrI,EAAM4I,EAAa,aAAe,QAClC5G,EAAM,CAAE,EAMZ,IAJI4G,GAAc7C,EAAQ/F,CAAG,EAAIqI,IAC/BrG,EAAI,KAAK+D,EAAQ/F,CAAG,CAAC,EAGnBoH,EACF,QAASqK,KAAMrK,EAAY,CACzB,IAAIgK,EAAMhK,EAAWqK,CAAE,EAAEzR,CAAG,EAExBoR,IAAQxI,GAAcwI,EAAM/I,IAC9BrG,EAAI,KAAKoP,CAAG,CAExB,CAGM,OAAKpP,EAAI,QACPA,EAAI,KAAK,CAAC,EAGL,KAAK,KAAK4G,EAAaS,GAAc,KAAK,IAAI,MAAM,KAAMrH,CAAG,EAAI,KAAK,IAAI,MAAM,KAAMA,CAAG,CAAC,CAEvG,CAEE,SAAS0I,IAAuB,CAC9B,IAAIgH,EAAWF,GAAa,EACxBzR,EAASuH,EAAW,KAAK,MAAMoK,EAAW,EAAIrJ,GAAc,CAAC,EAAIqJ,EAAW,EAAIrJ,EACpF,OAAAtI,EAAS,KAAK,IAAI2R,EAAU3R,CAAM,EAC3B2N,GAAU,aAAa,EAAI3N,EAAS,EAAIA,CACnD,CAEE,SAASyI,IAAiB,CACxB,OAAOnK,EAAI,YAAckB,EAAI,gBAAgB,aAAeA,EAAI,KAAK,WACzE,CAEE,SAASoS,GAAkBC,EAAK,CAC9B,OAAOA,IAAQ,MAAQ,aAAe,WAC1C,CAEE,SAASC,GAAexP,EAAI,CAC1B,GAAIA,GAAM,KAIV,KAAIvC,EAAMP,EAAI,cAAc,KAAK,EAC7BuS,EACAC,EACJ,OAAA1P,EAAG,YAAYvC,CAAG,EAClBgS,EAAOhS,EAAI,sBAAuB,EAClCiS,EAAQD,EAAK,MAAQA,EAAK,KAC1BhS,EAAI,OAAQ,EACLiS,GAASF,GAAexP,EAAG,UAAU,EAChD,CAEE,SAAS4G,IAAmB,CAC1B,IAAInH,EAAMgH,EAAcA,EAAc,EAAIC,EAAS,EACnD,OAAO8I,GAAe3J,EAAe,EAAIpG,CAC7C,CAEE,SAAS4L,GAAUrH,EAAM,CACvB,GAAIN,EAAQM,CAAI,EACd,MAAO,GAEP,GAAIe,GACF,QAASqK,KAAMrK,EACb,GAAIA,EAAWqK,CAAE,EAAEpL,CAAI,EACrB,MAAO,GAKb,MAAO,EAEV,CAMD,SAASwC,EAAUxC,EAAM2L,EAAI,CAK3B,GAJIA,GAAM,OACRA,EAAKzJ,IAGHlC,IAAS,SAAWuC,EACtB,OAAO,KAAK,OAAOI,EAAWD,IAAWH,EAAaG,EAAO,GAAK,EAElE,IAAIhJ,EAASgG,EAAQM,CAAI,EAEzB,GAAIe,EACF,QAASqK,KAAMrK,EAET4K,GAAM,SAASP,CAAE,GACfpL,KAAQe,EAAWqK,CAAE,IACvB1R,EAASqH,EAAWqK,CAAE,EAAEpL,CAAI,GAMpC,OAAIA,IAAS,WAAatG,IAAW,SACnCA,EAAS8I,EAAU,OAAO,GAGxB,CAACvB,IAAajB,IAAS,WAAaA,IAAS,WAC/CtG,EAAS,KAAK,MAAMA,CAAM,GAGrBA,CAEb,CAEE,SAASkS,GAAmBpT,EAAG,CAC7B,OAAOyH,EAAOA,EAAO,IAAMzH,EAAI,IAAM,OAAS8L,EAAgB,IAAM9L,EAAI,IAAM8L,EAAgB,GAClG,CAEE,SAASuH,GAAsBC,EAAgBC,EAAWC,EAAeC,EAAUC,EAAc,CAC/F,IAAIvS,EAAM,GAEV,GAAImS,IAAmB,OAAW,CAChC,IAAIrQ,EAAMqQ,EAENC,IACFtQ,GAAOsQ,GAGTpS,EAAM6H,EAAa,aAAe/F,EAAM,QAAUqQ,EAAiB,MAAQ,WAAaA,EAAiB,QAAUrQ,EAAM,OAC/H,SAAesQ,GAAa,CAACC,EAAe,CACtC,IAAIG,EAAgB,IAAMJ,EAAY,KAClCK,EAAM5K,EAAa2K,EAAgB,OAAS,KAAOA,EAAgB,KACvExS,EAAM,aAAeyS,EAAM,GACjC,CAEI,MAAI,CAACnL,GAAYiL,GAAgB5L,GAAsB2L,IACrDtS,GAAO0S,GAA2BJ,CAAQ,GAGrCtS,CACX,CAEE,SAAS2S,GAAkBN,EAAeD,EAAWQ,EAAU,CAC7D,OAAIP,GACMA,EAAgBD,GAAazH,EAAgB,KAE9CrE,EAAOA,EAAO,IAAMqE,EAAgB,IAAM,OAASiI,EAAW,IAAMjI,EAAgB,IAAMiI,EAAW,GAElH,CAEE,SAASC,GAAmBR,EAAeD,EAAWQ,EAAU,CAC9D,IAAIb,EAEJ,GAAIM,EACFN,EAAQM,EAAgBD,EAAY,SAC/B,CACA9K,IACHsL,EAAW,KAAK,MAAMA,CAAQ,GAGhC,IAAIE,EAAWxL,EAAWqD,EAAgBiI,EAC1Cb,EAAQzL,EAAOA,EAAO,WAAawM,EAAW,IAAM,IAAMA,EAAW,GAC3E,CAEI,OAAAf,EAAQ,SAAWA,EAEZ1K,KAAW,QAAU0K,EAAQ,IAAMA,EAAQ,cACtD,CAEE,SAASgB,GAAoBX,EAAW,CACtC,IAAIpS,EAAM,GAGV,GAAIoS,IAAc,GAAO,CACvB,IAAItO,EAAO+D,EAAa,WAAa,UACjC4K,EAAM5K,EAAa,QAAU,SACjC7H,EAAM8D,EAAO2O,EAAM,KAAOL,EAAY,KAC5C,CAEI,OAAOpS,CACX,CAEE,SAASgT,GAAatU,EAAMuU,EAAK,CAC/B,IAAIpP,EAASnF,EAAK,UAAU,EAAGA,EAAK,OAASuU,CAAG,EAAE,YAAa,EAE/D,OAAIpP,IACFA,EAAS,IAAMA,EAAS,KAGnBA,CACX,CAEE,SAAS6O,GAA2BnJ,EAAO,CACzC,OAAOyJ,GAAarM,EAAoB,EAAE,EAAI,uBAAyB4C,EAAQ,IAAO,IAC1F,CAEE,SAAS2J,GAA0B3J,EAAO,CACxC,OAAOyJ,GAAanM,GAAmB,EAAE,EAAI,sBAAwB0C,EAAQ,IAAO,IACxF,CAEE,SAASyH,IAAgB,CACvB,IAAImC,EAAa,YACbC,EAAa,YA+BjB,GA9BI1F,GAAU,QAAQ,EACtB5F,GAAa,UAAYqL,EACzBpL,GAAa,UAAYqL,EACzBtL,GAAa,GAAKkE,EAAU,MAC5BjE,GAAa,GAAKiE,EAAU,MAExB/D,EAAU,KAAO,KACnBA,EAAU,GAAK+D,GAGjBD,IAAuBxF,IAAoBoC,EAAY,gBAAkB,mBACzEoD,IAAuBzF,EAAO,YAAc,eAExCqC,IACFoD,IAAuB,kBAGzBA,IAAuB,QAAUhG,EAAQ,KACzCkC,EAAU,WAAa8D,GAEnBzE,GACFU,GAAgBzI,EAAI,cAAc,KAAK,EACvCyI,GAAc,GAAKgE,EAAU,MAC7BhE,GAAc,UAAY,UAC1BF,GAAa,YAAYE,EAAa,EACtCA,GAAc,YAAYD,EAAY,GAEtCD,GAAa,YAAYC,EAAY,EAGnC2B,GAAY,CACd,IAAI2J,EAAKrL,IAAgCD,GACzCsL,EAAG,WAAa,SACtB,CAyBI,GAvBAnL,GAAgB,aAAaJ,GAAcG,CAAS,EACpDF,GAAa,YAAYE,CAAS,EAGlClG,GAAQqG,EAAY,SAAU/B,EAAMxH,GAAG,CACrCyD,EAAS+D,EAAM,UAAU,EAEpBA,EAAK,KACRA,EAAK,GAAK2F,EAAU,QAAUnN,IAG5B,CAACyI,GAAYM,IACftF,EAAS+D,EAAMuB,EAAa,EAG9BhF,GAASyD,EAAM,CACb,cAAe,OACf,SAAY,IACpB,CAAO,CACP,CAAK,EAIGoE,EAAY,CAId,QAHI6I,EAAiB/T,EAAI,uBAAwB,EAC7CgU,EAAgBhU,EAAI,uBAAwB,EAEvC0D,EAAIwH,EAAYxH,KAAM,CAC7B,IAAIgQ,EAAMhQ,EAAIoF,EACVmL,EAAapL,EAAW6K,CAAG,EAAE,UAAU,EAAI,EAK/C,GAJA3Q,EAASkR,EAAYvF,EAAgB,EACrClL,GAAYyQ,EAAY,IAAI,EAC5BD,EAAc,aAAaC,EAAYD,EAAc,UAAU,EAE3DjM,EAAU,CACZ,IAAImM,EAAYrL,EAAWC,EAAa,EAAI4K,CAAG,EAAE,UAAU,EAAI,EAC/D3Q,EAASmR,EAAWxF,EAAgB,EACpClL,GAAY0Q,EAAW,IAAI,EAC3BH,EAAe,YAAYG,CAAS,CAC9C,CACA,CAEMxL,EAAU,aAAaqL,EAAgBrL,EAAU,UAAU,EAC3DA,EAAU,YAAYsL,CAAa,EACnCnL,EAAaH,EAAU,QAC7B,CACA,CAEE,SAASiJ,IAAsB,CAE7B,GAAIxD,GAAU,YAAY,GAAK/E,GAAa,CAACd,EAAY,CACvD,IAAI6L,EAAOzL,EAAU,iBAAiB,KAAK,EAE3ClG,GAAQ2R,EAAM,SAAUC,EAAK,CAC3B,IAAIC,EAAMD,EAAI,IAETtJ,KAECuJ,GAAOA,EAAI,QAAQ,YAAY,EAAI,GACrCD,EAAI,IAAM,GACVjP,EAAUiP,EAAKxF,EAAS,EACxB7L,EAASqR,EAAK,SAAS,EACvBA,EAAI,IAAMC,GAEVC,GAAUF,CAAG,EAGzB,CAAO,EAEDxV,GAAI,UAAY,CACd2V,GAAgB5Q,GAAkBwQ,CAAI,EAAG,UAAY,CACnDpF,GAAe,EACzB,CAAS,CACT,CAAO,EAEGZ,GAAU,YAAY,IACxBgG,EAAOK,GAAc3S,EAAO,KAAK,IAAIA,EAAQ+H,EAAQ,EAAGwB,EAAgB,CAAC,CAAC,GAG5EN,GAAW2J,KAAkC7V,GAAI,UAAY,CAC3D2V,GAAgB5Q,GAAkBwQ,CAAI,EAAGM,EAA6B,CAC9E,CAAO,CACP,MAEU1M,GACF2M,GAA4B,EAI9BC,GAAW,EACXC,GAAY,CAElB,CAEE,SAASH,IAAgC,CACvC,GAAIrL,GAAaN,EAAa,EAAG,CAE/B,IAAI4K,EAAMxJ,EAAOrI,EAAQiH,EAAa,GAErC,SAAS+L,GAAyB,CACjC,IAAIC,EAAOjM,EAAW6K,CAAG,EAAE,sBAAuB,EAAC,KAC/CqB,EAAQlM,EAAW6K,EAAM,CAAC,EAAE,sBAAqB,EAAG,MACxD,KAAK,IAAIoB,EAAOC,CAAK,GAAK,EAAIC,GAAuB,EAAK,WAAW,UAAY,CAC/EH,EAAwB,CACzB,EAAE,EAAE,CACb,GAAU,CACV,MACMG,GAAyB,CAE/B,CAEE,SAASA,IAA0B,EAE7B,CAAC1M,GAAcc,KACjB6L,GAAmB,EAEf7L,GACFkC,GAAgBC,GAAkB,EAE9BqB,KACFC,GAASC,GAAW,GAGtBb,GAAWL,GAAW,EAEtB4F,GAAyB9E,IAAWG,EAAM,GAE1CqI,GAA4B,GAK5BnN,GACF2M,GAA4B,EAI9BC,GAAW,EACXC,GAAY,CAChB,CAEE,SAASlD,IAAY,CAGnB,GAAI,CAAC3J,EACH,QAASzI,EAAIuC,EAAOgC,EAAIhC,EAAQ,KAAK,IAAIiH,EAAYc,CAAK,EAAGtK,EAAIuE,EAAGvE,IAAK,CACvE,IAAIwH,EAAO+B,EAAWvJ,CAAC,EACvBwH,EAAK,MAAM,MAAQxH,EAAIuC,GAAS,IAAM+H,EAAQ,IAC9C7G,EAAS+D,EAAMoB,EAAS,EACxBlF,GAAY8D,EAAMuB,EAAa,CACvC,CAyBI,GAZIC,IACEtB,IAAoBoC,GACtB3H,GAAWC,EAAO,IAAM+K,EAAU,eAAgB,aAAe3N,EAAI,iBAAiB+J,EAAW,CAAC,CAAC,EAAE,SAAW,IAAK9G,GAAkBL,CAAK,CAAC,EAC7ID,GAAWC,EAAO,IAAM+K,EAAS,eAAgB1K,GAAkBL,CAAK,CAAC,GAChEqG,GACTvF,GAAQqG,EAAY,SAAUsM,GAAO7V,GAAG,CACtC6V,GAAM,MAAM,WAAazC,GAAmBpT,EAAC,CACvD,CAAS,GAKD2H,GAAO,CAET,GAAIG,EAAoB,CACtB,IAAI3G,EAAMgI,IAAiBjC,EAAQ,WAAa2M,GAA2B3M,EAAQ,KAAK,EAAI,GAC5F/E,GAAWC,EAAO,IAAM+K,EAAU,MAAOhM,EAAKsB,GAAkBL,CAAK,CAAC,CACvE,CAGDjB,EAAMkS,GAAsBnM,EAAQ,YAAaA,EAAQ,OAAQA,EAAQ,WAAYA,EAAQ,MAAOA,EAAQ,UAAU,EACtH/E,GAAWC,EAAO,IAAM+K,EAAU,MAAOhM,EAAKsB,GAAkBL,CAAK,CAAC,EAElEqG,IACFtH,EAAM6H,GAAc,CAACc,EAAY,SAAWgK,GAAkB5M,EAAQ,WAAYA,EAAQ,OAAQA,EAAQ,KAAK,EAAI,IAAM,GAErHY,IACF3G,GAAO0S,GAA2BnJ,EAAK,GAGzCvI,GAAWC,EAAO,IAAM+K,EAAShM,EAAKsB,GAAkBL,CAAK,CAAC,GAIhEjB,EAAM6H,GAAc,CAACc,EAAYkK,GAAmB9M,EAAQ,WAAYA,EAAQ,OAAQA,EAAQ,KAAK,EAAI,GAErGA,EAAQ,SACV/F,GAAO+S,GAAoBhN,EAAQ,MAAM,GAItCuB,IACCX,IACF3G,GAAO0S,GAA2BnJ,EAAK,GAGrC1C,KACF7G,GAAOkT,GAA0B3J,EAAK,IAItCvJ,GACFgB,GAAWC,EAAO,IAAM+K,EAAU,eAAgBhM,EAAKsB,GAAkBL,CAAK,CAAC,CAMvF,KAAW,CAEL0T,KAEA5M,GAAa,MAAM,QAAUmK,GAAsBpJ,EAAaC,EAAQH,EAAYc,EAAU,EAE1FpC,GAAYO,GAAc,CAACc,IAC7BV,EAAU,MAAM,MAAQ0K,GAAkB/J,EAAYG,EAAQI,CAAK,GAIrE,IAAInJ,EAAM6H,GAAc,CAACc,EAAYkK,GAAmBjK,EAAYG,EAAQI,CAAK,EAAI,GAEjFJ,IACF/I,GAAO+S,GAAoBhK,CAAM,GAI/B/I,GACFgB,GAAWC,EAAO,IAAM+K,EAAU,eAAgBhM,EAAKsB,GAAkBL,CAAK,CAAC,CAElF,CAGD,GAAImG,GAAcZ,GAChB,QAASiL,KAAMrK,EAAY,CAEzBqK,EAAK,SAASA,CAAE,EAChB,IAAIjN,EAAO4C,EAAWqK,CAAE,EACpBzR,EAAM,GACN4U,EAAmB,GACnBC,EAAkB,GAClBC,EAAe,GACfC,EAAW,GACXC,GAAWrM,EAAqC,KAAzBE,EAAU,QAAS4I,CAAE,EAC5CwD,GAAepM,EAAU,aAAc4I,CAAE,EACzCyD,GAAUrM,EAAU,QAAS4I,CAAE,EAC/B0D,GAAgBtM,EAAU,cAAe4I,CAAE,EAC3Cc,GAAe1J,EAAU,aAAc4I,CAAE,EACzC2D,GAAWvM,EAAU,SAAU4I,CAAE,EAEjC9K,GAAsBqB,IAAiBa,EAAU,aAAc4I,CAAE,GAAK,UAAWjN,IACnFoQ,EAAmB,IAAM5I,EAAU,OAAS0G,GAA2BwC,EAAO,EAAI,MAIhF,gBAAiB1Q,GAAQ,WAAYA,KACvCqQ,EAAkB,IAAM7I,EAAU,OAASkG,GAAsBiD,GAAeC,GAAUH,GAAcC,GAAS3C,EAAY,EAAI,KAI/HjL,GAAYO,GAAc,CAACc,IAAc,eAAgBnE,GAAQ,UAAWA,GAAQoE,GAAc,WAAYpE,KAChHsQ,EAAe,SAAWnC,GAAkBsC,GAAcG,GAAUJ,EAAO,EAAI,KAG7ErO,GAAsB,UAAWnC,IACnCsQ,GAAgBpC,GAA2BwC,EAAO,GAGhDJ,IACFA,EAAe,IAAM9I,EAAU,IAAM8I,EAAe,MAIlD,eAAgBtQ,GAAQoE,GAAc,WAAYpE,GAAQ,CAAC8C,GAAY,UAAW9C,KACpFuQ,GAAYlC,GAAmBoC,GAAcG,GAAUJ,EAAO,GAG5D,WAAYxQ,IACduQ,GAAYhC,GAAoBqC,EAAQ,GAItC,CAAC9N,GAAY,UAAW9C,IACtBmC,IACFoO,GAAYrC,GAA2BwC,EAAO,GAG5CrO,KACFkO,GAAY7B,GAA0BgC,EAAO,IAI7CH,IACFA,EAAW,IAAM/I,EAAU,gBAAkB+I,EAAW,KAI1D/U,EAAM4U,EAAmBC,EAAkBC,EAAeC,EAEtD/U,GACFiB,EAAM,WAAW,sBAAwBwQ,EAAK,GAAK,QAAUzR,EAAM,IAAKiB,EAAM,SAAS,MAAM,CAEvG,CAEA,CAEE,SAASiT,IAAY,CAOnB,GALAmB,KAEAvN,GAAa,mBAAmB,aAAc,qHAAuHwN,GAAgB,EAAK,eAAiBjN,EAAa,QAAQ,EAChOkG,GAAoBzG,GAAa,cAAc,0BAA0B,EAErE+F,GAAa,CACf,IAAI0H,EAAMvL,EAAW,OAAS,QAE1B+F,EACFnN,GAASmN,EAAgB,CACvB,cAAewF,CACzB,CAAS,EACQxP,EAAQ,uBACjB+B,GAAa,mBAAmB6J,GAAkB5L,EAAQ,gBAAgB,EAAG,sCAAwCwP,EAAM,KAAOtF,GAAoB,CAAC,EAAIsF,EAAMtF,GAAoB,CAAC,EAAI/F,GAAa,CAAC,EAAI,WAAW,EACvN6F,EAAiBjI,GAAa,cAAc,eAAe,GAIzDiI,GACFrL,EAAUqL,EAAgB,CACxB,MAASyF,EACnB,CAAS,EAGCxL,IACFyL,GAAe,EAEXtL,IACFzF,EAAUuD,EAAW4E,EAAW,EAG9BzC,IACF1F,EAAUuD,EAAW+E,EAAe,EAGzC,CAGD,GAAIW,GAAQ,CAGV,GAAIsB,EACFrM,GAASqM,EAAc,CACrB,aAAc,qBACxB,CAAS,EACDE,GAAWF,EAAa,SACxBlN,GAAQoN,GAAU,SAAU9I,EAAMxH,EAAG,CACnC+D,GAASyD,EAAM,CACb,WAAYxH,EACZ,SAAY,KACZ,aAAc+Q,IAAU/Q,EAAI,GAC5B,gBAAiBmN,CAC7B,CAAW,CACX,CAAS,MACI,CAIL,QAHI0J,EAAU,GACVC,EAAY/H,GAAkB,GAAK,uBAE9B/O,EAAI,EAAGA,EAAIwJ,EAAYxJ,IAE9B6W,GAAW,mCAAqC7W,EAAI,kCAAoCmN,EAAU,KAAO2J,EAAY,gBAAkB/F,IAAU/Q,EAAI,GAAK,cAG5J6W,EAAU,yDAA2DA,EAAU,SAC/E5N,GAAa,mBAAmB6J,GAAkB5L,EAAQ,WAAW,EAAG2P,CAAO,EAC/EzG,EAAenH,GAAa,cAAc,UAAU,EACpDqH,GAAWF,EAAa,QAChC,CAIM,GAFA2G,KAEIjP,EAAoB,CACtB,IAAI9C,EAAS8C,EAAmB,UAAU,EAAGA,EAAmB,OAAS,EAAE,EAAE,YAAa,EACtF3G,EAAM,mBAAqBuJ,GAAQ,IAAO,IAE1C1F,IACF7D,EAAM,IAAM6D,EAAS,IAAM7D,GAG7BgB,GAAWC,EAAO,mBAAqB+K,EAAU,SAAUhM,EAAKsB,GAAkBL,CAAK,CAAC,CAChG,CAEM2B,GAASuM,GAASK,EAAe,EAAG,CAClC,aAAcI,IAAUJ,GAAkB,GAAKK,EACvD,CAAO,EACD9M,GAAYoM,GAASK,EAAe,EAAG,UAAU,EACjDlN,EAAS6M,GAASK,EAAe,EAAGG,EAAc,EAElDjL,EAAUuK,EAAcvC,EAAS,CAClC,CAGGe,KACE,CAACgB,IAAsB,CAACE,GAAc,CAACC,KACzC9G,GAAa,mBAAmB6J,GAAkB5L,EAAQ,gBAAgB,EAAG,mJAAqJiG,EAAU,KAAOpC,GAAa,CAAC,EAAI,oFAAsFoC,EAAU,KAAOpC,GAAa,CAAC,EAAI,iBAAiB,EAC/Y6E,EAAoB3G,GAAa,cAAc,eAAe,IAG5D,CAAC6G,GAAc,CAACC,KAClBD,EAAaF,EAAkB,SAAS,CAAC,EACzCG,EAAaH,EAAkB,SAAS,CAAC,GAGvC1I,EAAQ,mBACVnD,GAAS6L,EAAmB,CAC1B,aAAc,sBACd,SAAY,GACtB,CAAS,GAGC1I,EAAQ,mBAAqBA,EAAQ,YAAcA,EAAQ,aAC7DnD,GAAS,CAAC+L,EAAYC,CAAU,EAAG,CACjC,gBAAiB5C,EACjB,SAAY,IACtB,CAAS,GAGCjG,EAAQ,mBAAqBA,EAAQ,YAAcA,EAAQ,cAC7DnD,GAAS+L,EAAY,CACnB,gBAAiB,MAC3B,CAAS,EACD/L,GAASgM,EAAY,CACnB,gBAAiB,MAC3B,CAAS,GAGHG,GAAe8G,GAASlH,CAAU,EAClCK,GAAe6G,GAASjH,CAAU,EAClCkH,KAEIrH,EACF/J,EAAU+J,EAAmBlC,EAAc,GAE3C7H,EAAUiK,EAAYpC,EAAc,EACpC7H,EAAUkK,EAAYrC,EAAc,IAKxCwJ,GAAW,CACf,CAEE,SAAS5B,IAAa,CAEpB,GAAI7M,GAAYP,GAAe,CAC7B,IAAIiP,EAAM,CAAE,EACZA,EAAIjP,EAAa,EAAIkP,GACrBvR,EAAUuD,EAAW+N,CAAG,CAC9B,CAEQlM,IACFpF,EAAUuD,EAAWmF,GAAarH,EAAQ,oBAAoB,EAG5DgE,IACFrF,EAAUuD,EAAWuF,EAAU,EAG7BlE,IACF5E,EAAUnF,EAAK2N,EAAmB,EAGhC7F,KAAW,QACbyE,EAAO,GAAG,eAAgB,UAAY,CACpCoK,GAAa,EACbpK,EAAO,KAAK,cAAeqK,IAAM,CACzC,CAAO,GACQ/O,GAAcwB,GAAcD,GAAae,IAAc,CAAC7B,IACjEnD,EAAUrG,EAAK,CACb,OAAU+X,EAClB,CAAO,EAGC1M,KACErC,KAAW,QACbyE,EAAO,GAAG,cAAeuK,EAAY,EAC3BpK,IACVoK,GAAc,GAIlBC,GAAY,EAERrK,GACFsK,GAAe,EACNnK,IACToK,GAAc,EAGhB1K,EAAO,GAAG,eAAgB2K,EAAiB,EAEvCpP,KAAW,SACbyE,EAAO,KAAK,cAAeqK,IAAM,EAG/B,OAAOtK,IAAW,YACpBA,GAAOsK,GAAI,CAAE,EAGf1N,GAAO,EACX,CAEE,SAASiO,IAAU,CAwCjB,GAtCAzV,EAAM,SAAW,GAEbA,EAAM,WACRA,EAAM,UAAU,OAAQ,EAI1B4D,EAAaxG,EAAK,CAChB,OAAU+X,EAChB,CAAK,EAEG9M,IACFzE,EAAatF,EAAK2N,EAAmB,EAGnCuB,GACF5J,EAAa4J,EAAmBlC,EAAc,EAG5C0C,GACFpK,EAAaoK,EAAcvC,EAAS,EAItC7H,EAAaoD,EAAW4E,EAAW,EACnChI,EAAaoD,EAAW+E,EAAe,EAEnC+C,GACFlL,EAAakL,EAAgB,CAC3B,MAASyF,EACjB,CAAO,EAGCxL,GACF,cAAckG,EAAa,EAIzB5I,GAAYP,GAAe,CAC7B,IAAIiP,EAAM,CAAE,EACZA,EAAIjP,EAAa,EAAIkP,GACrBpR,EAAaoD,EAAW+N,CAAG,CACjC,CAEQlM,IACFjF,EAAaoD,EAAWmF,EAAW,EAGjCrD,IACFlF,EAAaoD,EAAWuF,EAAU,EAIpC,IAAImJ,EAAW,CAACxO,GAAeuG,GAAuBG,GAAgBC,GAAgBI,GAAkBc,EAAkB,EAC1H9I,GAAQ,QAAQ,SAAUb,EAAMxH,EAAG,CACjC,IAAIwD,EAAKgE,IAAS,YAAcyB,GAAe/B,EAAQM,CAAI,EAE3D,GAAI,OAAOhE,GAAO,UAAYA,EAAI,CAChC,IAAIuU,EAASvU,EAAG,uBAAyBA,EAAG,uBAAyB,GACjEwU,EAAWxU,EAAG,WAClBA,EAAG,UAAYsU,EAAS9X,CAAC,EACzBkH,EAAQM,CAAI,EAAIuQ,EAASA,EAAO,mBAAqBC,EAAS,iBACtE,CACA,CAAK,EAED3P,GAAUO,GAAYC,GAAaC,GAAeC,GAAgBC,EAAaC,GAAeC,GAAeE,EAAYC,GAAkBC,GAAgBC,EAAaC,EAAaC,GAAiBC,GAAcI,EAAYC,EAAaE,EAAcC,EAASC,EAAWG,EAAQC,GAAUC,GAAcC,GAAYC,GAAQC,GAASC,EAAOC,GAAazI,EAAQoJ,GAAWE,EAAiBC,GAAgBC,EAAaE,EAAgBC,GAAmBC,GAAgBE,GAA6BC,GAAgBC,GAAkBC,GAAmBC,GAAc/J,EAAQiK,GAAcE,GAAWC,GAAWE,GAAaC,GAAwBC,GAAUC,GAASC,EAASC,GAAsBC,EAAUC,GAAUC,GAAWC,GAAYC,GAASE,GAASC,GAAiBG,GAAYG,GAAcG,GAAkBE,GAAsBE,GAAcI,GAAaC,GAAcE,GAASC,GAAkBC,GAAcC,GAAWC,GAAeC,GAAmBE,GAAmBC,GAAYG,GAAe3E,GAAWC,GAAe6E,EAAoBC,GAAwBC,EAAaC,EAAaG,GAAeC,GAAenF,GAAMoF,EAAeC,GAAmBC,GAAWC,GAAQE,GAAcC,GAAaC,GAAkBE,GAAwBC,GAAiBC,GAASC,GAAgB7F,EAAWC,GAAkB6F,GAAoB5F,GAAeC,GAAqB4F,EAAiBC,GAAqB5F,GAA4B6F,GAAsBC,GAAgBC,GAAYC,GAAsBC,GAAqBC,GAA2BC,GAAeC,GAAeC,GAAgBC,GAAWC,GAAWC,GAAU9G,GAAQC,GAAY,KAG7oD,QAAS8G,KAAK,KACRA,IAAM,YACR,KAAKA,CAAC,EAAI,MAIdpI,GAAO,EACR,CAID,SAAS2N,GAASU,EAAG,CACnB3Y,GAAI,UAAY,CACd+X,GAAYa,GAASD,CAAC,CAAC,CAC7B,CAAK,CACL,CAEE,SAASZ,GAAYY,EAAG,CACtB,GAAKrO,GAIL,CAAIpB,KAAW,SACbyE,EAAO,KAAK,eAAgBqK,GAAKW,CAAC,CAAC,EAGrCvO,GAAcC,GAAgB,EAC9B,IAAIwO,EACAC,EAAoB3O,GACpB4O,EAAyB,GAEzB9P,IACFsB,GAAmB,EACnBsO,EAAYC,IAAsB3O,GAE9B0O,GACFlL,EAAO,KAAK,qBAAsBqK,GAAKW,CAAC,CAAC,GAI7C,IAAIK,EACAC,EACAxE,EAAWzJ,EACXkO,EAAapL,GACbqL,EAAYlL,GACZmL,EAAejO,GACfkO,GAAc7N,GACd8N,GAAS5N,GACT6N,GAAW5N,GACX6N,GAAe5N,GACf6N,GAAc5N,EACd6N,GAAwB1N,GACxB2N,GAA+B1N,GAC/B2N,GAAW3W,EAEf,GAAI4V,EAAW,CACb,IAAI3E,GAAgBzJ,EAChBoP,GAAgBtO,GAChBuO,GAAkBrO,GAClBsO,GAAYhP,EACZiP,GAAkBjO,GAEtB,GAAI,CAAC1D,GACH,IAAI4L,GAAYrJ,EACZoJ,GAAiBrJ,CAExB,CAmLD,GA7KAQ,GAAYT,EAAU,WAAW,EACjCc,GAAWd,EAAU,UAAU,EAC/BgB,GAAMhB,EAAU,KAAK,EACrBiB,GAAQjB,EAAU,OAAO,EACzBK,EAASL,EAAU,QAAQ,EAC3BkB,GAAYlB,EAAU,WAAW,EACjCmB,EAAWnB,EAAU,UAAU,EAC/BsB,GAAqBtB,EAAU,oBAAoB,EACnDuB,GAA4BvB,EAAU,2BAA2B,EAE7DmO,IACF/K,GAAUpD,EAAU,SAAS,EAC7BD,EAAaC,EAAU,YAAY,EACnCU,GAAQV,EAAU,OAAO,EACzBa,GAAab,EAAU,YAAY,EACnCe,GAAef,EAAU,cAAc,EACvCqB,GAAerB,EAAU,cAAc,EACvCoB,GAAkBpB,EAAU,iBAAiB,EAExCrC,KACHsC,EAAcD,EAAU,aAAa,EACrCE,EAASF,EAAU,QAAQ,IAK/BkI,GAAyB9E,EAAO,EAChCjD,EAAWC,GAAgB,GAEtB,CAACpB,GAAcc,IAAc,CAACsD,KACjCuI,GAAmB,EAEd3M,IACH4M,KAEAyC,EAAyB,MAIzBtO,GAAcD,KAChBkC,GAAgBC,GAAgB,EAGhCU,GAAWL,GAAW,IAIpB6L,GAAapO,KACfO,EAAQN,EAAU,OAAO,EACzBO,GAAUP,EAAU,SAAS,EAC7BuO,EAAejO,IAAUyJ,EAErBwE,IACE,CAACxO,GAAc,CAACD,IAClB6C,GAAWL,GAAa,GAM1BiN,GAAa,IAIbpB,GACE/K,KAAYoL,IACVpL,GACFsK,GAAe,EAEf8B,MAKFlM,KAAc6K,GAAapO,GAAcD,KAC3CyD,GAASC,GAAS,EAIdD,KAAWkL,IACTlL,IACFkM,GAAqBC,GAA2BnN,GAAc,CAAC,CAAC,CAAC,EACjEoL,GAAc,IAEdgC,GAAgB,EAChBtB,EAAyB,MAK/BnG,GAAyB9E,IAAWG,EAAM,EAErCpC,IACHG,GAAqBC,GAA4B,IAG/Cd,KAAciO,IAChBjO,GAAY5E,EAAUnF,EAAK2N,EAAmB,EAAIrI,EAAatF,EAAK2N,EAAmB,GAGrFvD,KAAa6N,KACX7N,GACE8E,EACFlL,GAAYkL,CAAiB,GAEzBE,GACFpL,GAAYoL,CAAU,EAGpBC,GACFrL,GAAYqL,CAAU,GAItBH,EACFpL,GAAYoL,CAAiB,GAEzBE,GACFtL,GAAYsL,CAAU,EAGpBC,GACFvL,GAAYuL,CAAU,IAM1B/E,KAAQ4N,KACN5N,IACFtG,GAAY0L,CAAY,EACxB2G,GAAqB,GAErBvS,GAAY4L,CAAY,GAIxBnF,KAAU4N,KACZ5N,GAAQpF,EAAUuD,EAAWmF,GAAarH,EAAQ,oBAAoB,EAAIlB,EAAaoD,EAAWmF,EAAW,GAG3GrD,KAAc4N,KAChB5N,GAAYrF,EAAUuD,EAAWuF,EAAU,EAAI3I,EAAaoD,EAAWuF,EAAU,GAG/ExD,IAAa4N,KACX5N,GACE+F,GACFxM,GAAYwM,CAAc,EAGxB,CAACI,IAAa,CAACE,IACjBoF,GAAe,IAGb1F,GACF1M,GAAY0M,CAAc,EAGxBI,IACFsI,GAAc,IAKhBtO,KAAuB0N,KACzB1N,GAAqBzF,EAAUuD,EAAW4E,EAAW,EAAIhI,EAAaoD,EAAW4E,EAAW,GAG1FzC,KAA8B0N,KAChC1N,GAA4B1F,EAAUnF,EAAKyN,EAAe,EAAInI,EAAatF,EAAKyN,EAAe,GAG7FgK,GAgBF,IAfIpO,IAAeyJ,IAAiBnJ,IAAWgP,MAC7ChB,EAAyB,IAGvBxN,KAAesO,KACZtO,KACH3B,GAAa,MAAM,OAAS,KAI5B4B,IAAYC,KAAiBqO,KAC/BtJ,EAAW,UAAY/E,GAAa,CAAC,EACrCgF,EAAW,UAAYhF,GAAa,CAAC,GAGnCmG,GAAkB7F,KAAiBiO,GAAiB,CACtD,IAAItZ,GAAImL,EAAW,EAAI,EACnB0O,GAAO3I,EAAe,UACtB4I,GAAMD,GAAK,OAASP,GAAgBtZ,EAAC,EAAE,OAEvC6Z,GAAK,UAAUC,EAAG,IAAMR,GAAgBtZ,EAAC,IAC3CkR,EAAe,UAAY2I,GAAK,UAAU,EAAGC,EAAG,EAAIzO,GAAarL,EAAC,EAE5E,OAEUqK,IAAWN,GAAcD,KAC3BuO,EAAyB,IA4B7B,IAxBIE,GAAgBxO,GAAc,CAACD,KACjCyG,GAAQC,GAAU,EAClBuG,GAAqB,GAGvBuB,EAAa/V,IAAU2W,GAEnBZ,GACFrL,EAAO,KAAK,eAAgBqK,IAAM,EAClCe,EAAyB,IAChBE,EACJD,GACHV,GAAmB,GAEZ7N,GAAcD,KACvB2N,GAAY,EACZjB,GAAmB,EACnBuD,GAAkB,GAGhBxB,GAAgB,CAAC9P,GACnBuR,GAA6B,EAG3B,CAAC5M,IAAW,CAACG,GAAQ,CAEvB,GAAI4K,GAAa,CAACxQ,MAGZsC,IAAgBqJ,IAAkBpJ,IAAWqJ,MAC/CrK,GAAa,MAAM,QAAUmK,GAAsBpJ,EAAaC,EAAQH,EAAYW,GAAOG,EAAU,GAGnG7B,GAAY,CAEVP,IACFW,EAAU,MAAM,MAAQ0K,GAAkB/J,EAAYG,EAAQI,CAAK,GAIrE,IAAInJ,GAAM6S,GAAmBjK,EAAYG,EAAQI,CAAK,EAAI4J,GAAoBhK,CAAM,EAGpF1H,GAAcJ,EAAOK,GAAkBL,CAAK,EAAI,CAAC,EACjDD,GAAWC,EAAO,IAAM+K,EAAU,eAAgBhM,GAAKsB,GAAkBL,CAAK,CAAC,CACzF,CAIUyI,IACF2M,GAAc,EAGZa,IACFjD,GAA4B,EAC5B5I,GAAcjK,EAEtB,CAEQ4V,GACFlL,EAAO,KAAK,mBAAoBqK,GAAKW,CAAC,CAAC,EAE1C,CAGD,SAASzK,IAAY,CACnB,GAAI,CAACzD,GAAc,CAACD,EAAW,CAC7B,IAAIkI,EAAI3H,EAASC,GAASA,EAAQ,GAAK,EAAIA,EAC3C,OAAOd,GAAcwI,CAC3B,CAEI,IAAIkB,EAAQnJ,GAAcA,EAAaG,GAAUV,EAAakC,EAAelC,CAAU,EACnFyQ,EAAKhQ,EAAcE,EAAWF,EAAc,EAAIE,EAAWD,EAE/D,OAAIG,IACF4P,GAAMlQ,GAAcI,EAAWJ,GAAc,GAAKI,GAAYuB,EAAenJ,EAAQ,CAAC,EAAImJ,EAAenJ,CAAK,EAAI2H,IAAW,GAGxHgJ,GAAS+G,CACpB,CAEE,SAASpQ,IAAoB,CAC3BJ,GAAiB,EAEjB,QAASmJ,KAAMrK,EACbqK,EAAK,SAASA,CAAE,EAEZlJ,IAAekJ,IACjBnJ,GAAiBmJ,EAGtB,CAGD,IAAI2G,GAAc,UAAY,CAC5B,OAAO3O,EAAOnC,EACd,UAAY,CACV,IAAIyR,EAAWxN,GACXyN,EAAYxN,GAChBuN,GAAY3P,GACZ4P,GAAa5P,GAGTN,GACFiQ,GAAY,EACZC,GAAa,GACJpQ,IACJI,EAAWD,IAAWH,EAAaG,KACtCiQ,GAAa,GAIbvO,IACErJ,EAAQ4X,EACV5X,GAASiH,EACAjH,EAAQ2X,IACjB3X,GAASiH,GAGd,EACD,UAAY,CACV,GAAIjH,EAAQoK,GACV,KAAOpK,GAASmK,GAAWlD,GACzBjH,GAASiH,UAEFjH,EAAQmK,GACjB,KAAOnK,GAASoK,GAAWnD,GACzBjH,GAASiH,CAGd,EACD,UAAY,CACVjH,EAAQ,KAAK,IAAImK,GAAU,KAAK,IAAIC,GAAUpK,CAAK,CAAC,CACrD,CACL,EAAK,EAEH,SAAS2U,IAAY,CACf,CAAC/L,GAAY+F,GACf1M,GAAY0M,CAAc,EAGxB,CAAClG,IAAOoF,GACV5L,GAAY4L,CAAY,EAGrBtF,KACC8E,EACFpL,GAAYoL,CAAiB,GAEzBE,GACFtL,GAAYsL,CAAU,EAGpBC,GACFvL,GAAYuL,CAAU,GAIhC,CAEE,SAASqK,IAAW,CACdjP,GAAY+F,GACdxM,GAAYwM,CAAc,EAGxBlG,IAAOoF,GACT1L,GAAY0L,CAAY,EAGtBtF,KACE8E,EACFlL,GAAYkL,CAAiB,GAEzBE,GACFpL,GAAYoL,CAAU,EAGpBC,GACFrL,GAAYqL,CAAU,GAIhC,CAEE,SAAS4H,IAAe,CACtB,GAAI,CAAAlK,GAUJ,IALIxD,IACFf,GAAa,MAAM,OAAS,OAI1B0C,EAGF,QAFIzK,EAAM,kBAEDnB,EAAI4L,EAAY5L,KACnByI,GACFhF,EAAS8F,EAAWvJ,CAAC,EAAGmB,CAAG,EAG7BsC,EAAS8F,EAAWuC,EAAgB9L,EAAI,CAAC,EAAGmB,CAAG,EAKnD+V,GAAW,EACXzJ,GAAS,GACb,CAEE,SAASkM,IAAiB,CACxB,GAAKlM,GAWL,IALIxD,GAAetC,KACjBuB,GAAa,MAAM,OAAS,IAI1B0C,EAGF,QAFIzK,EAAM,kBAEDnB,EAAI4L,EAAY5L,KACnByI,GACF/E,GAAY6F,EAAWvJ,CAAC,EAAGmB,CAAG,EAGhCuC,GAAY6F,EAAWuC,EAAgB9L,EAAI,CAAC,EAAGmB,CAAG,EAKtDiZ,GAAU,EACV3M,GAAS,GACb,CAEE,SAASiK,IAAgB,CACvB,GAAI,CAAArK,GAQJ,IAJAjL,EAAM,SAAW,GACjBgH,EAAU,UAAYA,EAAU,UAAU,QAAQ8D,GAAoB,UAAU,CAAC,EAAG,EAAE,EACtFhJ,GAAYkF,EAAW,CAAC,OAAO,CAAC,EAE5BwB,EACF,QAASxG,EAAIwH,EAAYxH,KACnBqE,GACFjE,GAAY+E,EAAWnF,CAAC,CAAC,EAG3BI,GAAY+E,EAAWuC,EAAgB1H,EAAI,CAAC,CAAC,EAUjD,IALI,CAAC4E,GAAc,CAACP,IAClBvE,GAAYgF,GAAc,CAAC,OAAO,CAAC,EAIjC,CAACT,EACH,QAASzI,EAAIuC,EAAOgC,EAAIhC,EAAQiH,EAAYxJ,EAAIuE,EAAGvE,IAAK,CACtD,IAAIwH,EAAO+B,EAAWvJ,CAAC,EACvBkE,GAAYsD,EAAM,CAAC,OAAO,CAAC,EAC3B9D,GAAY8D,EAAMoB,EAAS,EAC3BlF,GAAY8D,EAAMuB,EAAa,CACvC,CAIImO,GAAW,EACX7J,GAAW,GACf,CAEE,SAASmM,IAAe,CACtB,GAAKnM,GAQL,IAJAjL,EAAM,SAAW,GACjBgH,EAAU,WAAa8D,GACvBkI,GAA4B,EAExBxK,EACF,QAASxG,EAAIwH,EAAYxH,KACnBqE,GACF/D,GAAY6E,EAAWnF,CAAC,CAAC,EAG3BM,GAAY6E,EAAWuC,EAAgB1H,EAAI,CAAC,CAAC,EAKjD,GAAI,CAACqE,EACH,QAASzI,EAAIuC,EAAOgC,EAAIhC,EAAQiH,EAAYxJ,EAAIuE,EAAGvE,IAAK,CACtD,IAAIwH,EAAO+B,EAAWvJ,CAAC,EACnBqa,EAASra,EAAIuC,EAAQ+H,EAAQ1B,GAAYG,GAC7CvB,EAAK,MAAM,MAAQxH,EAAIuC,GAAS,IAAM+H,EAAQ,IAC9C7G,EAAS+D,EAAM6S,CAAM,CAC7B,CAIID,GAAU,EACV/M,GAAW,GACf,CAEE,SAAS0M,IAAmB,CAC1B,IAAI5Y,EAAMsV,GAAkB,EAExB/G,GAAkB,YAAcvO,IAClCuO,GAAkB,UAAYvO,EAEpC,CAEE,SAASsV,IAAmB,CAC1B,IAAItT,EAAMmX,GAAsB,EAC5BC,EAAQpX,EAAI,CAAC,EAAI,EACjBqX,EAAMrX,EAAI,CAAC,EAAI,EACnB,OAAOoX,IAAUC,EAAMD,EAAQ,GAAKA,EAAQ,OAASC,CACzD,CAEE,SAASF,GAAqBjZ,EAAK,CAC7BA,GAAO,OACTA,EAAMqY,GAA4B,GAGpC,IAAIa,EAAQhY,EACRiY,EACAC,EACAC,EAgBJ,GAdIrQ,GAAUJ,GACRH,GAAaC,KACf0Q,EAAa,EAAE,WAAWpZ,CAAG,EAAI4I,GACjCyQ,EAAWD,EAAatQ,EAAWF,EAAc,GAG/CH,IACF2Q,EAAa/O,EAAenJ,CAAK,EACjCmY,EAAWD,EAAatQ,GAMxBL,EACF4B,EAAe,QAAQ,SAAUiP,EAAO3a,EAAG,CACrCA,EAAI8L,KACDzB,GAAUJ,IAAgB0Q,GAASF,EAAa,KACnDF,EAAQva,GAGN0a,EAAWC,GAAS,KACtBH,EAAMxa,GAGlB,CAAO,MACI,CACL,GAAI+J,EAAY,CACd,IAAI6Q,EAAO7Q,EAAaG,EAEpBG,GAAUJ,GACZsQ,EAAQ,KAAK,MAAME,EAAaG,CAAI,EACpCJ,EAAM,KAAK,KAAKE,EAAWE,EAAO,CAAC,GAEnCJ,EAAMD,EAAQ,KAAK,KAAKpQ,EAAWyQ,CAAI,EAAI,CAErD,SACYvQ,GAAUJ,EAAa,CACzB,IAAI+H,EAAI1H,EAAQ,EAShB,GAPID,GACFkQ,GAASvI,EAAI,EACbwI,EAAMjY,EAAQyP,EAAI,GAElBwI,EAAMjY,EAAQyP,EAGZ/H,EAAa,CACf,IAAIgI,EAAIhI,EAAcK,EAAQH,EAC9BoQ,GAAStI,EACTuI,GAAOvI,CACnB,CAEUsI,EAAQ,KAAK,MAAMA,CAAK,EACxBC,EAAM,KAAK,KAAKA,CAAG,CAC7B,MACUA,EAAMD,EAAQjQ,EAAQ,EAI1BiQ,EAAQ,KAAK,IAAIA,EAAO,CAAC,EACzBC,EAAM,KAAK,IAAIA,EAAK1O,EAAgB,CAAC,CAC3C,CAEI,MAAO,CAACyO,EAAOC,CAAG,CACtB,CAEE,SAAS/C,IAAa,CACpB,GAAIjM,IAAY,CAAC4B,GAAS,CACxB,IAAIyN,EAAMP,GAAsB,EAChCO,EAAI,KAAKpP,EAAgB,EACzByJ,GAAc,MAAM,KAAM2F,CAAG,EAAE,QAAQ,SAAU/F,EAAK,CACpD,GAAI,CAACvR,GAASuR,EAAKzF,EAAgB,EAAG,CAEpC,IAAI8H,EAAM,CAAE,EAEZA,EAAIjP,EAAa,EAAI,SAAU+P,EAAG,CAChCA,EAAE,gBAAiB,CACpB,EAEDpS,EAAUiP,EAAKqC,CAAG,EAClBtR,EAAUiP,EAAKxF,EAAS,EAExBwF,EAAI,IAAMjR,GAAQiR,EAAK,UAAU,EAEjC,IAAIgG,EAASjX,GAAQiR,EAAK,aAAa,EAEnCgG,IACFhG,EAAI,OAASgG,GAGfrX,EAASqR,EAAK,SAAS,CACjC,CACA,CAAO,CACP,CACA,CAEE,SAASvF,GAAY0I,EAAG,CACtBjD,GAAU+F,GAAU9C,CAAC,CAAC,CAC1B,CAEE,SAASzI,GAAYyI,EAAG,CACtB+C,GAAUD,GAAU9C,CAAC,CAAC,CAC1B,CAEE,SAASjD,GAAUF,EAAK,CACtBrR,EAASqR,EAAK,QAAQ,EACtBmG,GAAanG,CAAG,CACpB,CAEE,SAASkG,GAAUlG,EAAK,CACtBrR,EAASqR,EAAK,QAAQ,EACtBmG,GAAanG,CAAG,CACpB,CAEE,SAASmG,GAAanG,EAAK,CACzBrR,EAASqR,EAAKzF,EAAgB,EAC9B3L,GAAYoR,EAAK,SAAS,EAC1B9O,EAAa8O,EAAKxF,EAAS,CAC/B,CAEE,SAAS4F,GAAcqF,EAAOC,EAAKU,EAAa,CAC9C,IAAIrG,EAAO,CAAE,EAMb,IAJKqG,IACHA,EAAc,OAGTX,GAASC,GACdtX,GAAQqG,EAAWgR,CAAK,EAAE,iBAAiBW,CAAW,EAAG,SAAUpG,EAAK,CACtED,EAAK,KAAKC,CAAG,CACrB,CAAO,EACDyF,IAGF,OAAO1F,CACR,CAID,SAAS2C,IAAe,CACtB,IAAI3C,EAAOK,GAAc,MAAM,KAAMoF,GAAoB,CAAE,EAC3Dhb,GAAI,UAAY,CACd2V,GAAgBJ,EAAMsG,EAAwB,CACpD,CAAK,CACL,CAEE,SAASlG,GAAgBJ,EAAMtV,EAAI,CAkBjC,GAhBIkQ,KAKJoF,EAAK,QAAQ,SAAUC,EAAKvS,EAAO,CAC7B,CAACiJ,IAAYsJ,EAAI,UACnBmG,GAAanG,CAAG,EAIdvR,GAASuR,EAAKzF,EAAgB,GAChCwF,EAAK,OAAOtS,EAAO,CAAC,CAE5B,CAAK,EAEG,CAACsS,EAAK,QACR,OAAOtV,EAAI,EAIbD,GAAI,UAAY,CACd2V,GAAgBJ,EAAMtV,CAAE,CAC9B,CAAK,CACL,CAEE,SAASqY,IAAoB,CAC3BH,GAAY,EACZjB,GAAmB,EACnBuD,GAAkB,EAClB9C,GAAsB,EACtBmE,GAAiB,CACrB,CAEE,SAAStF,IAAsC,CACzCrN,GAAYoC,KACd1B,GAAc,MAAMrB,CAAkB,EAAI4C,GAAQ,IAAO,IAE/D,CAEE,SAAS2Q,GAAkBC,EAAYC,EAAY,CAGjD,QAFIC,EAAU,CAAE,EAEPxb,EAAIsb,EAAY/W,EAAI,KAAK,IAAI+W,EAAaC,EAAYzP,CAAa,EAAG9L,EAAIuE,EAAGvE,IACpFwb,EAAQ,KAAKjS,EAAWvJ,CAAC,EAAE,YAAY,EAGzC,OAAO,KAAK,IAAI,MAAM,KAAMwb,CAAO,CACpC,CAOD,SAASL,IAA2B,CAClC,IAAIM,EAAY5Q,GAAawQ,GAAkB9Y,EAAO+H,CAAK,EAAI+Q,GAAkBzP,EAAYpC,CAAU,EACnGgL,EAAKrL,IAAgCD,GAErCsL,EAAG,MAAM,SAAWiH,IACtBjH,EAAG,MAAM,OAASiH,EAAY,KAEjC,CAID,SAAS9F,IAAoB,CAC3BjK,EAAiB,CAAC,CAAC,EACnB,IAAI9H,EAAOoF,EAAa,OAAS,MAC7B0S,EAAQ1S,EAAa,QAAU,SAC/B2S,EAAOpS,EAAW,CAAC,EAAE,sBAAqB,EAAG3F,CAAI,EACrDV,GAAQqG,EAAY,SAAU/B,EAAMxH,EAAG,CAEjCA,GACF0L,EAAe,KAAKlE,EAAK,sBAAqB,EAAG5D,CAAI,EAAI+X,CAAI,EAI3D3b,IAAM8L,EAAgB,GACxBJ,EAAe,KAAKlE,EAAK,sBAAqB,EAAGkU,CAAK,EAAIC,CAAI,CAEtE,CAAK,CACF,CAGD,SAASnF,IAAoB,CAC3B,IAAIzT,EAAQuX,GAAsB,EAC9BC,EAAQxX,EAAM,CAAC,EACfyX,EAAMzX,EAAM,CAAC,EACjBG,GAAQqG,EAAY,SAAU/B,EAAMxH,EAAG,CAEjCA,GAAKua,GAASva,GAAKwa,EACjB7W,GAAQ6D,EAAM,aAAa,IAC7BtD,GAAYsD,EAAM,CAAC,cAAe,UAAU,CAAC,EAC7C/D,EAAS+D,EAAM2H,EAAgB,GAI5BxL,GAAQ6D,EAAM,aAAa,IAC9BzD,GAASyD,EAAM,CACb,cAAe,OACf,SAAY,IACxB,CAAW,EACD9D,GAAY8D,EAAM2H,EAAgB,EAG5C,CAAK,CACF,CAGD,SAAS6K,IAA8B,CAGrC,QAFIzV,EAAIhC,EAAQ,KAAK,IAAIiH,EAAYc,CAAK,EAEjCtK,EAAI8L,EAAe9L,KAAM,CAChC,IAAIwH,EAAO+B,EAAWvJ,CAAC,EAEnBA,GAAKuC,GAASvC,EAAIuE,GAEpBd,EAAS+D,EAAM,YAAY,EAC3BA,EAAK,MAAM,MAAQxH,EAAIuC,GAAS,IAAM+H,EAAQ,IAC9C7G,EAAS+D,EAAMoB,EAAS,EACxBlF,GAAY8D,EAAMuB,EAAa,GACtBvB,EAAK,MAAM,OACpBA,EAAK,MAAM,KAAO,GAClB/D,EAAS+D,EAAMuB,EAAa,EAC5BrF,GAAY8D,EAAMoB,EAAS,GAI7BlF,GAAY8D,EAAMqB,EAAU,CAC7B,CAGD,WAAW,UAAY,CACrB3F,GAAQqG,EAAY,SAAU/F,EAAI,CAChCE,GAAYF,EAAI,YAAY,CACpC,CAAO,CACF,EAAE,GAAG,CACP,CAGD,SAAS4X,IAAkB,CAEzB,GAAIpQ,KACF2F,GAAkBD,IAAc,EAAIA,GAAaE,GAAoB,EACrEF,GAAa,GAETC,KAAoBE,IAAuB,CAC7C,IAAI+K,EAAUtL,GAASO,EAAqB,EACxCgL,EAAavL,GAASK,EAAe,EACzC5M,GAAS6X,EAAS,CAChB,SAAY,KACZ,aAAc7K,IAAUF,GAAwB,EAC1D,CAAS,EACDnN,GAAYkY,EAAS9K,EAAc,EACnC/M,GAAS8X,EAAY,CACnB,aAAc9K,IAAUJ,GAAkB,GAAKK,EACzD,CAAS,EACD9M,GAAY2X,EAAY,UAAU,EAClCpY,EAASoY,EAAY/K,EAAc,EACnCD,GAAwBF,EAChC,CAEA,CAEE,SAASmL,GAAqBtY,EAAI,CAChC,OAAOA,EAAG,SAAS,YAAa,CACpC,CAEE,SAASwT,GAASxT,EAAI,CACpB,OAAOsY,GAAqBtY,CAAE,IAAM,QACxC,CAEE,SAASuY,GAAevY,EAAI,CAC1B,OAAOA,EAAG,aAAa,eAAe,IAAM,MAChD,CAEE,SAASwY,GAAiBhF,EAAUxT,EAAInC,EAAK,CACvC2V,EACFxT,EAAG,SAAWnC,EAEdmC,EAAG,aAAa,gBAAiBnC,EAAI,SAAQ,CAAE,CAElD,CAGD,SAAS4V,IAAuB,CAC9B,GAAI,GAACnM,IAAYH,IAAUC,GAI3B,KAAIqR,EAAe/L,GAAeJ,EAAW,SAAWiM,GAAejM,CAAU,EAC7EoM,EAAe/L,GAAeJ,EAAW,SAAWgM,GAAehM,CAAU,EAC7EoM,EAAc5Z,GAASmK,GACvB0P,EAAc,CAACzR,IAAUpI,GAASoK,GAElCwP,GAAe,CAACF,GAClBD,GAAiB9L,GAAcJ,EAAY,EAAI,EAG7C,CAACqM,GAAeF,GAClBD,GAAiB9L,GAAcJ,EAAY,EAAK,EAG9CsM,GAAe,CAACF,GAClBF,GAAiB7L,GAAcJ,EAAY,EAAI,EAG7C,CAACqM,GAAeF,GAClBF,GAAiB7L,GAAcJ,EAAY,EAAK,EAEnD,CAGD,SAASsM,GAAc7Y,EAAIrC,EAAK,CAC1B2G,IACFtE,EAAG,MAAMsE,CAAkB,EAAI3G,EAErC,CAEE,SAASmb,IAAiB,CACxB,OAAOvS,GAAcA,EAAaG,GAAU4B,EAAgBJ,EAAeI,CAAa,CAC5F,CAEE,SAASyQ,GAAanI,EAAK,CACrBA,GAAO,OACTA,EAAM7R,GAGR,IAAIU,EAAMgH,EAAcC,EAAS,EACjC,OAAOJ,GAAaK,EAAWlH,GAAOyI,EAAe0I,EAAM,CAAC,EAAI1I,EAAe0I,CAAG,EAAIlK,IAAW,EAAIH,GAAcI,EAAWJ,GAAc,GAAKO,EAAQ,GAAK,CAClK,CAEE,SAAS2B,IAAmB,CAC1B,IAAIhJ,EAAMgH,EAAcC,EAAS,EAC7BhJ,EAASiJ,EAAWlH,EAAMqZ,GAAgB,EAE9C,OAAIjS,GAAU,CAACO,IACb1J,EAAS6I,EAAa,EAAEA,EAAaG,IAAW4B,EAAgB,GAAKyQ,GAAY,EAAKA,GAAazQ,EAAgB,CAAC,EAAIJ,EAAeI,EAAgB,CAAC,GAGtJ5K,EAAS,IACXA,EAAS,GAGJA,CACX,CAEE,SAASwY,GAA2BtF,EAAK,CACnCA,GAAO,OACTA,EAAM7R,GAGR,IAAIlB,EAEJ,GAAI2H,GAAc,CAACc,EACjB,GAAIC,EACF1I,EAAM,EAAE0I,EAAaG,GAAUkK,EAE3B/J,IACFhJ,GAAOkb,GAAc,OAElB,CACL,IAAIC,EAAc5U,GAAYkE,EAAgBxB,EAE1CD,IACF+J,GAAOmI,GAAc,GAGvBlb,EAAM,CAAC+S,EAAM,IAAMoI,CAC3B,MAEMnb,EAAM,CAACqK,EAAe0I,CAAG,EAErB/J,GAAUP,IACZzI,GAAOkb,GAAc,GAIzB,OAAIxQ,KACF1K,EAAM,KAAK,IAAIA,EAAK2K,EAAa,GAGnC3K,GAAO2H,GAAc,CAACc,GAAa,CAACC,EAAa,IAAM,KAChD1I,CACX,CAEE,SAAS+T,GAA2B/T,EAAK,CACvCgb,GAAcjT,EAAW,IAAI,EAC7BqQ,GAAqBpY,CAAG,CAC5B,CAEE,SAASoY,GAAqBpY,EAAK,CAC7BA,GAAO,OACTA,EAAMqY,GAA4B,GAGpCtQ,EAAU,MAAM+C,EAAa,EAAIC,GAAkB/K,EAAMgL,EAC7D,CAEE,SAASoQ,GAAaC,EAAQC,EAAUC,EAASC,EAAO,CACtD,IAAItY,EAAImY,EAASpS,EAEZM,IACHrG,EAAI,KAAK,IAAIA,EAAGuH,CAAa,GAG/B,QAAS9L,EAAI0c,EAAQ1c,EAAIuE,EAAGvE,IAAK,CAC/B,IAAIwH,EAAO+B,EAAWvJ,CAAC,EAElB6c,IACHrV,EAAK,MAAM,MAAQxH,EAAIuC,GAAS,IAAM+H,EAAQ,KAG5CxB,IAAgBf,KAClBP,EAAK,MAAMO,EAAe,EAAIP,EAAK,MAAMS,EAAc,EAAIa,IAAgB9I,EAAI0c,GAAU,IAAO,KAGlGhZ,GAAY8D,EAAMmV,CAAQ,EAC1BlZ,EAAS+D,EAAMoV,CAAO,EAElBC,GACFlR,GAAc,KAAKnE,CAAI,CAE/B,CACG,CAKD,IAAIsV,GAAgB,UAAY,CAC9B,OAAOrU,EAAW,UAAY,CAC5B4T,GAAcjT,EAAW,EAAE,EAEvBtB,GAAsB,CAAC4C,IAGzB+O,MAGI,CAAC/O,IAAS,CAAC/F,GAAUyE,CAAS,IAChCgO,GAAiB,GAInB/Q,GAAY+C,EAAW+C,GAAeC,GAAiBC,GAAkBqN,GAA4B,EAAEhP,GAAO0M,EAAe,EAG1HpO,GACH4M,GAA4B,CAEpC,EAAQ,UAAY,CACdjK,GAAgB,CAAE,EAClB,IAAIwL,EAAM,CAAE,EACZA,EAAIjP,EAAa,EAAIiP,EAAIhP,EAAY,EAAIiP,GACzCpR,EAAauD,EAAWiD,EAAW,EAAG2K,CAAG,EACzCtR,EAAU0D,EAAWhH,CAAK,EAAG4U,CAAG,EAChCsF,GAAajQ,GAAa5D,GAAWC,GAAY,EAAI,EACrD4T,GAAala,EAAOwG,GAAeH,EAAS,GAGxC,CAACV,IAAiB,CAACC,IAAgB,CAACuC,IAAS,CAAC/F,GAAUyE,CAAS,IACnEgO,GAAiB,CAEpB,CACL,EAAK,EAEH,SAAS2F,GAAO9E,EAAG+E,EAAa,CAC1B9Q,IACFqN,GAAa,GAIXhX,IAAUiK,IAAewQ,KAE3B/P,EAAO,KAAK,eAAgBqK,IAAM,EAClCrK,EAAO,KAAK,kBAAmBqK,IAAM,EAEjCzM,IACF2M,GAAc,EAIZlG,IAAa2G,GAAK,CAAC,QAAS,SAAS,EAAE,QAAQA,EAAE,IAAI,GAAK,GAC5D2B,GAAc,EAGhB7M,GAAU,GACV+P,GAAe,EAErB,CAUE,SAASG,GAAS9b,EAAK,CACrB,OAAOA,EAAI,YAAW,EAAG,QAAQ,KAAM,EAAE,CAC1C,CAUD,SAASiW,GAAgB8F,EAAO,CAG9B,GAAIzU,GAAYsE,GAAS,CAGvB,GAFAE,EAAO,KAAK,gBAAiBqK,GAAK4F,CAAK,CAAC,EAEpC,CAACzU,GAAYkD,GAAc,OAAS,EACtC,QAAS3L,EAAI,EAAGA,EAAI2L,GAAc,OAAQ3L,IAAK,CAC7C,IAAIwH,EAAOmE,GAAc3L,CAAC,EAE1BwH,EAAK,MAAM,KAAO,GAEdS,IAAkBF,KACpBP,EAAK,MAAMS,EAAc,EAAI,GAC7BT,EAAK,MAAMO,EAAe,EAAI,IAGhCrE,GAAY8D,EAAMqB,EAAU,EAC5BpF,EAAS+D,EAAMuB,EAAa,CACtC,CAaM,GAAI,CAACmU,GAAS,CAACzU,GAAYyU,EAAM,OAAO,aAAe9T,GAAa8T,EAAM,SAAW9T,GAAa6T,GAASC,EAAM,YAAY,IAAMD,GAAS9Q,EAAa,EAAG,CAC1J,GAAI,CAACD,GAA4B,CAC/B,IAAIgN,EAAW3W,EACfgX,GAAa,EAEThX,IAAU2W,IACZjM,EAAO,KAAK,eAAgBqK,IAAM,EAClClC,GAA4B,EAExC,CAEY5M,KAAW,SACbyE,EAAO,KAAK,cAAeqK,IAAM,EAGnCvK,GAAU,GACVP,GAAcjK,CACtB,CACA,CACG,CAGD,SAAS4a,GAAKC,EAAanF,EAAG,CAC5B,GAAI,CAAA1K,GAKJ,GAAI6P,IAAgB,OAClBzP,GAAgBsK,EAAG,EAAE,UACZmF,IAAgB,OACzBzP,GAAgBsK,EAAG,CAAC,MACf,CACL,GAAIlL,GAAS,CACX,GAAIH,GACF,OAEAwK,GAAiB,CAE3B,CAEM,IAAI1E,EAAWD,GAAa,EACxB4K,EAAW,EAsBf,GApBID,IAAgB,QAClBC,EAAW,CAAC3K,EACH0K,IAAgB,OACzBC,EAAW5U,EAAWe,EAAac,EAAQoI,EAAWlJ,EAAa,EAAIkJ,GAEnE,OAAO0K,GAAgB,WACzBA,EAAc,SAASA,CAAW,GAG/B,MAAMA,CAAW,IAEfnF,IACHmF,EAAc,KAAK,IAAI,EAAG,KAAK,IAAI5T,EAAa,EAAG4T,CAAW,CAAC,GAGjEC,EAAWD,EAAc1K,IAKzB,CAACjK,GAAY4U,GAAY,KAAK,IAAIA,CAAQ,EAAI/S,EAAO,CACvD,IAAIgT,EAASD,EAAW,EAAI,EAAI,GAChCA,GAAY9a,EAAQ8a,EAAW7T,GAAckD,GAAWlD,EAAa8T,EAAS9T,EAAa,EAAI8T,EAAS,EAChH,CAEM/a,GAAS8a,EAEL5U,GAAYmC,IACVrI,EAAQmK,KACVnK,GAASiH,GAGPjH,EAAQoK,KACVpK,GAASiH,IAKTiJ,GAAYlQ,CAAK,IAAMkQ,GAAYjG,EAAW,GAChDuQ,GAAO9E,CAAC,CAEhB,CACG,CAGD,SAAStK,GAAgBsK,EAAGrE,EAAK,CAC/B,GAAI7G,GAAS,CACX,GAAIH,GACF,OAEAwK,GAAiB,CAEzB,CAEI,IAAImG,EAEJ,GAAI,CAAC3J,EAAK,CACRqE,EAAIC,GAASD,CAAC,EAGd,QAFIlY,EAASgb,GAAU9C,CAAC,EAEjBlY,IAAW6P,GAAqB,CAACE,EAAYC,CAAU,EAAE,QAAQhQ,CAAM,EAAI,GAChFA,EAASA,EAAO,WAGlB,IAAIyd,EAAW,CAAC1N,EAAYC,CAAU,EAAE,QAAQhQ,CAAM,EAElDyd,GAAY,IACdD,EAAkB,GAClB3J,EAAM4J,IAAa,EAAI,GAAK,EAEpC,CAEI,GAAI7S,IACF,GAAIpI,IAAUmK,IAAYkH,IAAQ,GAAI,CACpCuJ,GAAK,OAAQlF,CAAC,EACd,MACD,SAAU1V,IAAUoK,IAAYiH,IAAQ,EAAG,CAC1CuJ,GAAK,QAASlF,CAAC,EACf,MACR,EAGQrE,IACFrR,GAASgI,GAAUqJ,EAEf9J,IACFvH,EAAQ,KAAK,MAAMA,CAAK,GAI1Bwa,GAAOQ,GAAmBtF,GAAKA,EAAE,OAAS,UAAYA,EAAI,IAAI,EAEjE,CAGD,SAASnK,GAAWmK,EAAG,CACrB,GAAIlL,GAAS,CACX,GAAIH,GACF,OAEAwK,GAAiB,CAEzB,CAEIa,EAAIC,GAASD,CAAC,EAId,QAHIlY,EAASgb,GAAU9C,CAAC,EACpBwF,EAEG1d,IAAWqQ,GAAgB,CAACzM,GAAQ5D,EAAQ,UAAU,GAC3DA,EAASA,EAAO,WAGlB,GAAI4D,GAAQ5D,EAAQ,UAAU,EAAG,CAC/B,IAAI0d,EAAW/M,GAAa,OAAO7M,GAAQ9D,EAAQ,UAAU,CAAC,EAC1D2d,EAAkB3T,GAAcD,EAAY2T,EAAWjU,EAAa+G,GAAQkN,EAAWnT,EACvF8S,EAAcrO,GAAkB0O,EAAW,KAAK,IAAI,KAAK,KAAKC,CAAe,EAAGlU,EAAa,CAAC,EAClG2T,GAAKC,EAAanF,CAAC,EAEftH,KAAoB8M,IAClBnM,IACFsI,GAAc,EAGhBlJ,GAAa,GAErB,CACG,CAGD,SAASiN,IAAmB,CAC1BtM,GAAgB,YAAY,UAAY,CACtC1D,GAAgB,KAAMsD,EAAiB,CACxC,EAAE7F,EAAe,EAClBkG,GAAY,EAChB,CAEE,SAASsM,IAAoB,CAC3B,cAAcvM,EAAa,EAC3BC,GAAY,EAChB,CAEE,SAASuM,GAAqBC,EAAQpH,EAAK,CACzC3S,GAASmN,EAAgB,CACvB,cAAe4M,CACrB,CAAK,EACD5M,EAAe,UAAYE,GAAoB,CAAC,EAAI0M,EAAS1M,GAAoB,CAAC,EAAIsF,CAC1F,CAEE,SAASE,IAAgB,CACvB+G,GAAkB,EAEdzM,GACF2M,GAAqB,OAAQxS,GAAa,CAAC,CAAC,CAElD,CAEE,SAASuO,IAAe,CACtBgE,GAAmB,EAEf1M,GACF2M,GAAqB,QAASxS,GAAa,CAAC,CAAC,CAEhD,CAGD,SAAS0S,IAAO,CACV5S,GAAY,CAACmG,KACfsF,GAAe,EACfpF,GAAqB,GAE3B,CAEE,SAASwM,IAAQ,CACX1M,KACFsI,GAAc,EACdpI,GAAqB,GAE3B,CAEE,SAASmF,IAAiB,CACpBrF,IACFsI,GAAc,EACdpI,GAAqB,KAErBoF,GAAe,EACfpF,GAAqB,GAE3B,CAEE,SAASpD,IAAqB,CACxB1N,EAAI,OACF4Q,KACFsM,GAAmB,EACnBnM,GAA2B,IAEpBA,KACTkM,GAAkB,EAClBlM,GAA2B,GAEjC,CAEE,SAASxD,IAAiB,CACpBqD,KACFsM,GAAmB,EACnBrM,GAAsB,GAE5B,CAEE,SAASrD,IAAkB,CACrBqD,KACFoM,GAAkB,EAClBpM,GAAsB,GAEzB,CAGD,SAASjD,GAAkB2J,EAAG,CAC5BA,EAAIC,GAASD,CAAC,EACd,IAAIgG,EAAW,CAAC9W,EAAK,KAAMA,EAAK,KAAK,EAAE,QAAQ8Q,EAAE,OAAO,EAEpDgG,GAAY,GACdtQ,GAAgBsK,EAAGgG,IAAa,EAAI,GAAK,CAAC,CAE7C,CAGD,SAASrQ,GAAkBqK,EAAG,CAC5BA,EAAIC,GAASD,CAAC,EACd,IAAIgG,EAAW,CAAC9W,EAAK,KAAMA,EAAK,KAAK,EAAE,QAAQ8Q,EAAE,OAAO,EAEpDgG,GAAY,IACVA,IAAa,EACVnO,EAAW,UACdnC,GAAgBsK,EAAG,EAAE,EAEblI,EAAW,UACrBpC,GAAgBsK,EAAG,CAAC,EAGzB,CAGD,SAASiG,GAAS1a,EAAI,CACpBA,EAAG,MAAO,CACX,CAGD,SAASuK,GAAakK,EAAG,CACvBA,EAAIC,GAASD,CAAC,EACd,IAAIkG,EAAazd,EAAI,cAErB,GAAKiD,GAAQwa,EAAY,UAAU,EAKnC,KAAIF,EAAW,CAAC9W,EAAK,KAAMA,EAAK,MAAOA,EAAK,MAAOA,EAAK,KAAK,EAAE,QAAQ8Q,EAAE,OAAO,EAC5EwF,EAAW,OAAO5Z,GAAQsa,EAAY,UAAU,CAAC,EAEjDF,GAAY,IACVA,IAAa,EACXR,EAAW,GACbS,GAAS5N,GAASmN,EAAW,CAAC,CAAC,EAExBQ,IAAa,EAClBR,EAAWlN,GAAQ,GACrB2N,GAAS5N,GAASmN,EAAW,CAAC,CAAC,GAGjC/M,GAAa+M,EACbN,GAAKM,EAAUxF,CAAC,IAGxB,CAEE,SAASC,GAASD,EAAG,CACnB,OAAAA,EAAIA,GAAKzY,EAAI,MACN4e,GAAanG,CAAC,EAAIA,EAAE,eAAe,CAAC,EAAIA,CACnD,CAEE,SAAS8C,GAAU9C,EAAG,CACpB,OAAOA,EAAE,QAAUzY,EAAI,MAAM,UACjC,CAEE,SAAS4e,GAAanG,EAAG,CACvB,OAAOA,EAAE,KAAK,QAAQ,OAAO,GAAK,CACtC,CAEE,SAASoG,GAAuBpG,EAAG,CACjCA,EAAE,eAAiBA,EAAE,eAAc,EAAKA,EAAE,YAAc,EAC5D,CAEE,SAASqG,IAA2B,CAClC,OAAOzb,GAAkBH,GAASiP,GAAa,EAAID,GAAa,EAAGC,GAAa,EAAID,GAAa,CAAC,EAAG7E,EAAU,IAAM3F,EAAQ,IACjI,CAEE,SAASsH,GAAWyJ,EAAG,CACrB,GAAIlL,GAAS,CACX,GAAIH,GACF,OAEAwK,GAAiB,CAEzB,CAEQjM,GAAYmG,IACdsM,GAAmB,EAGrB/L,GAAW,GAEPC,KACFrS,GAAIqS,EAAQ,EACZA,GAAW,MAGb,IAAIyM,EAAIrG,GAASD,CAAC,EAClBhL,EAAO,KAAKmR,GAAanG,CAAC,EAAI,aAAe,YAAaX,GAAKW,CAAC,CAAC,EAE7D,CAACmG,GAAanG,CAAC,GAAK,CAAC,MAAO,GAAG,EAAE,QAAQ6D,GAAqBf,GAAU9C,CAAC,CAAC,CAAC,GAAK,GAClFoG,GAAuBpG,CAAC,EAG1BtG,GAAa,EAAID,GAAa,EAAI6M,EAAE,QACpC5M,GAAa,EAAID,GAAa,EAAI6M,EAAE,QAEhC9V,IACFmJ,GAAgB,WAAWxI,EAAU,MAAM+C,EAAa,EAAE,QAAQC,GAAiB,EAAE,CAAC,EACtFiQ,GAAcjT,EAAW,IAAI,EAEnC,CAEE,SAASqF,GAAUwJ,EAAG,CACpB,GAAIpG,GAAU,CACZ,IAAI0M,EAAIrG,GAASD,CAAC,EAClBtG,GAAa,EAAI4M,EAAE,QACnB5M,GAAa,EAAI4M,EAAE,QAEf9V,EACGqJ,KACHA,GAAWxS,GAAI,UAAY,CACzBkf,GAAUvG,CAAC,CACvB,CAAW,IAGCnL,KAA0B,MAC5BA,GAAwBwR,GAA0B,GAGhDxR,KACF6C,GAAgB,MAIf,OAAOsI,EAAE,YAAe,WAAaA,EAAE,aAAetI,IACzDsI,EAAE,eAAgB,CAE1B,CACA,CAEE,SAASuG,GAAUvG,EAAG,CACpB,GAAI,CAACnL,GAAuB,CAC1B+E,GAAW,GACX,MACN,CAcI,GAZApS,GAAIqS,EAAQ,EAERD,KACFC,GAAWxS,GAAI,UAAY,CACzBkf,GAAUvG,CAAC,CACnB,CAAO,GAGCnL,KAA0B,MAC5BA,GAAwBwR,GAA0B,GAGhDxR,GAAuB,CACrB,CAAC6C,IAAiByO,GAAanG,CAAC,IAClCtI,GAAgB,IAGlB,GAAI,CACEsI,EAAE,MACJhL,EAAO,KAAKmR,GAAanG,CAAC,EAAI,YAAc,WAAYX,GAAKW,CAAC,CAAC,CAElE,MAAa,CAAA,CAEd,IAAIrV,EAAIgP,GACJ6M,EAAO1M,GAAQJ,GAAcD,EAAY,EAE7C,GAAI,CAAC1I,GAAce,GAAcD,EAC/BlH,GAAK6b,EACL7b,GAAK,SACA,CACL,IAAI8b,EAAc9W,GAAY6W,EAAOnU,EAAQ,MAAQH,EAAWD,GAAU4B,GAAiB2S,EAAO,KAAOtU,EAAWD,GACpHtH,GAAK8b,EACL9b,GAAK,GACb,CAEMwG,EAAU,MAAM+C,EAAa,EAAIC,GAAkBxJ,EAAIyJ,EAC7D,CACA,CAEE,SAASqC,GAASuJ,EAAG,CACnB,GAAIpG,GAAU,CACRC,KACFrS,GAAIqS,EAAQ,EACZA,GAAW,MAGTrJ,GACF4T,GAAcjT,EAAW,EAAE,EAG7ByI,GAAW,GACX,IAAI0M,EAAIrG,GAASD,CAAC,EAClBtG,GAAa,EAAI4M,EAAE,QACnB5M,GAAa,EAAI4M,EAAE,QACnB,IAAIE,EAAO1M,GAAQJ,GAAcD,EAAY,EAE7C,GAAI,KAAK,IAAI+M,CAAI,EAAG,CAElB,GAAI,CAACL,GAAanG,CAAC,EAAG,CAEpB,IAAIlY,EAASgb,GAAU9C,CAAC,EACxBpS,EAAU9F,EAAQ,CAChB,MAAS,SAAS4e,EAAa1G,EAAG,CAChCoG,GAAuBpG,CAAC,EACxBjS,EAAajG,EAAQ,CACnB,MAAS4e,CACzB,CAAe,CACf,CACA,CAAW,CACX,CAEYlW,EACFqJ,GAAWxS,GAAI,UAAY,CACzB,GAAI0J,GAAc,CAACc,EAAW,CAC5B,IAAI8U,EAAa,CAACH,EAAOnU,GAASH,EAAWD,GAC7C0U,EAAaH,EAAO,EAAI,KAAK,MAAMG,CAAU,EAAI,KAAK,KAAKA,CAAU,EACrErc,GAASqc,CACvB,KAAmB,CACL,IAAIC,EAAQ,EAAEjN,GAAgB6M,GAE9B,GAAII,GAAS,EACXtc,EAAQmK,WACCmS,GAASnT,EAAeI,EAAgB,CAAC,EAClDvJ,EAAQoK,OAIR,SAFI3M,EAAI,EAEDA,EAAI8L,GAAiB+S,GAASnT,EAAe1L,CAAC,GACnDuC,EAAQvC,EAEJ6e,EAAQnT,EAAe1L,CAAC,GAAKye,EAAO,IACtClc,GAAS,GAGXvC,GAGlB,CAEY+c,GAAO9E,EAAGwG,CAAI,EACdxR,EAAO,KAAKmR,GAAanG,CAAC,EAAI,WAAa,UAAWX,GAAKW,CAAC,CAAC,CACzE,CAAW,EAEGnL,IACFa,GAAgBsK,EAAGwG,EAAO,EAAI,GAAK,CAAC,CAGhD,CACK,CAGGvX,EAAQ,uBAAyB,SACnCyI,GAAgB,IAGd9C,KACFC,GAAwB,KAGtB3B,GAAY,CAACmG,IACfqM,GAAkB,CAErB,CAID,SAAS/H,IAA6B,CACpC,IAAIpB,EAAKrL,IAAgCD,GACzCsL,EAAG,MAAM,OAAS9I,EAAenJ,EAAQ+H,CAAK,EAAIoB,EAAenJ,CAAK,EAAI,IAC9E,CAEE,SAASiO,IAAW,CAClB,IAAIsO,EAAQ/U,GAAcA,EAAaG,GAAUV,EAAaW,EAAWX,EAAac,EACtF,OAAO,KAAK,IAAI,KAAK,KAAKwU,CAAK,EAAGtV,CAAU,CAChD,CAQE,SAASuN,IAAsB,CAC7B,GAAI,GAAC/L,IAAO+D,KAIRwB,KAAUE,GAAa,CACzB,IAAIsO,EAAMtO,GACNuO,EAAMzO,GACNpK,EAAKzB,GAQT,IANI+L,GAAcF,KAChBwO,EAAMxO,GACNyO,EAAMvO,GACNtK,EAAK3B,IAGAua,EAAMC,GACX7Y,EAAGmK,GAASyO,CAAG,CAAC,EAChBA,IAIFtO,GAAcF,EACpB,CACA,CAEE,SAAS+G,GAAKW,EAAG,CACf,MAAO,CACL,UAAW7O,EACX,WAAYG,EACZ,aAAc6G,EACd,SAAUE,GACV,kBAAmBV,EACnB,YAAahB,GACb,WAAYkB,EACZ,WAAYC,EACZ,MAAOzF,EACP,QAASC,GACT,WAAYqB,EACZ,WAAYpC,EACZ,cAAesC,EACf,MAAOvJ,EACP,YAAaiK,GACb,aAAcC,GAAiB,EAC/B,gBAAiBkE,GACjB,sBAAuBE,GACvB,MAAON,GACP,YAAaE,GACb,MAAOrO,EACP,KAAMwH,GACN,MAAOqO,GAAK,CAAA,CACb,CACL,CAEE,MAAO,CACL,QAAS,QACT,QAASX,GACT,OAAQrK,EACR,KAAMkQ,GACN,KAAMY,GACN,MAAOC,GACP,KAAMpU,GACN,mBAAoBuR,GACpB,QAAS9I,GACT,QAASwF,GACT,QAAS,UAAY,CACnB,OAAO5Q,GAAItH,GAAOuH,EAASoB,EAAe,CAAC,CACjD,CACG,CACH,EAEA2W,GAAA7f,GAAA,IAAc6H,GCplHC,MAAMiY,WAA0BlgB,CAAW,CAOxD,SAAW,CACT,KAAK,OAAM,CACf,CAEE,QAAU,CACR,IAAIiI,GAAI,CACN,UAAW,KAAK,eAChB,MAAO,EACP,KAAM,KAAK,UACX,OAAQ,GACR,IAAK,GACL,UAAW,GACX,QAAS,EACT,OAAQ,GACR,SAAU,GACV,qBAAsB,GACtB,SAAU,GACV,KAAM,GACN,OAAQ,GACR,MAAO,KACP,UAAW,GACX,gBAAiB,KACjB,WAAY,CACV,IAAK,CACH,OAAQ,GACR,MAAO,EACP,QAAS,EACT,OAAQ,GACR,gBAAiB,KACjB,MAAO,IACjB,CACA,CACK,CAAA,CACL,CACA,CAxCE9H,EADmB+f,GACZ,UAAU,CAAC,WAAY,OAAQ,MAAM,GAE5C/f,EAHmB+f,GAGZ,SAAS,CACd,KAAM,CAAE,KAAM,OAAQ,QAAS,SAAS,CAC5C,kHCLe,MAAMC,WAAiBngB,CAAW,CAG/C,qBAAuB,CACrB,KAAK,cAAc,UAAU,OAAO,wBAAwB,CAChE,CACA,CALEG,EADmBggB,GACZ,UAAU,CAAC,SAAS,iICAdC,GAAA,cAAkCpgB,CAAW,CAO1D,SAAW,CACT,KAAK,OAAM,CACf,CAEE,QAAU,CACR,IAAIiI,GAAI,CACN,UAAW,KAAK,cAChB,KAAM,KAAK,UACX,MAAO,EACP,QAAS,EACT,KAAM,GACN,WAAY,GAEZ,YAAa,EAGb,IAAK,KAAK,YAAc,UACxB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,SAAU,GACV,gBAAiB,IACjB,qBAAsB,GACtB,WAAY,CACV,IAAK,CACH,MAAO,KAAK,YAAc,WAAa,EAAI,CAC5C,EACD,KAAM,CACJ,MAAO,KAAK,YAAc,WAAa,EAAI,EAC3C,IAAK,EACf,CACA,CACK,CAAA,CACL,CACA,EAvCE9H,EADaigB,GACN,UAAU,CAAC,UAAW,OAAQ,OAAQ,UAAU,GAEvDjgB,EAHaigB,GAGN,SAAS,CACd,KAAM,CAAE,KAAM,OAAQ,QAAS,SAAS,CAC5C,GALeA,mHCDA,MAAKC,WAASrgB,CAAW,CAGtC,SAAW,CACT,MAAMsgB,EAAQ,KAAK,YACbC,EAAS,KAAK,aAEpB,GAAID,EAAM,OAASA,EAAM,MAAM,CAAC,EAAG,CACjC,MAAME,EAAS,IAAI,WAEnBA,EAAO,OAAS,IAAM,CACpBD,EAAO,IAAMC,EAAO,MAC5B,EAEMA,EAAO,cAAcF,EAAM,MAAM,CAAC,CAAC,CACzC,CACA,CACA,CAhBEngB,EADkBkgB,GACX,UAAU,CAAC,SAAU,OAAO,kHCHrC,IAAII,GAAE,OAAO,eAAmBC,GAAE,CAACC,EAAE1H,EAAE,IAAIA,KAAK0H,EAAEF,GAAEE,EAAE1H,EAAE,CAAC,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE0H,EAAE1H,CAAC,EAAE,EAAMjG,EAAE,CAAC2N,EAAE1H,EAAE,KAAKyH,GAAEC,EAAE,OAAO1H,GAAG,SAASA,EAAE,GAAGA,EAAE,CAAC,EAAE,GAAG2H,GAAE,CAACD,EAAE1H,EAAE,IAAI,CAAC,GAAG,CAACA,EAAE,IAAI0H,CAAC,EAAE,MAAM,UAAU,UAAU,CAAC,CAAC,EAAM/c,GAAE,CAAC+c,EAAE1H,EAAE,IAAI,CAAC,GAAGA,EAAE,IAAI0H,CAAC,EAAE,MAAM,UAAU,mDAAmD,EAAE1H,aAAa,QAAQA,EAAE,IAAI0H,CAAC,EAAE1H,EAAE,IAAI0H,EAAE,CAAC,CAAC,EAAME,GAAE,CAACF,EAAE1H,EAAE,KAAK2H,GAAED,EAAE1H,EAAE,uBAAuB,EAAE,GAAmD,eAAejY,GAAE2f,EAAE1H,EAAE,EAAE,GAAG,CAACA,EAAE1T,GAAEob,EAAE,CAAC,EAAEG,GAAEH,EAAE,CAAC,CAAC,CAAC,eAAepb,GAAEob,EAAE1H,EAAE,CAAA,EAAG,CAAC,IAAI,EAAE0H,EAAE,QAAQ,iBAAiB1H,EAAE,OAAO,QAAQ8H,EAAEJ,EAAE,QAAQ,qBAAqB1H,EAAE,WAAW,aAAa+H,EAAEL,EAAE,QAAQ,mBAAmB1H,EAAE,SAAS,WAAW,EAAE0H,EAAE,QAAQ,aAAa1H,EAAE,aAAa,SAAS0H,EAAE,UAAU,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,EAAEA,EAAE,UAAU,IAAI,GAAGI,EAAE,MAAM,GAAG,CAAC,EAAEJ,EAAE,UAAU,OAAO,GAAGK,EAAE,MAAM,GAAG,CAAC,EAAEL,EAAE,UAAU,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,MAAMM,KAAIN,EAAE,UAAU,OAAO,GAAGI,EAAE,MAAM,GAAG,CAAC,EAAEJ,EAAE,UAAU,IAAI,GAAGK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAMrd,GAAEgd,CAAC,CAAC,QAAC,CAAQA,EAAE,UAAU,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAeG,GAAEH,EAAE1H,EAAE,GAAG,CAAC,IAAI,EAAE0H,EAAE,QAAQ,iBAAiB1H,EAAE,OAAO,QAAQ8H,EAAEJ,EAAE,QAAQ,qBAAqB1H,EAAE,WAAW,aAAa+H,EAAEL,EAAE,QAAQ,mBAAmB1H,EAAE,SAAS,WAAW,EAAE0H,EAAE,QAAQ,aAAa1H,EAAE,QAAQ,SAAS0H,EAAE,UAAU,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,EAAEA,EAAE,UAAU,IAAI,GAAGI,EAAE,MAAM,GAAG,CAAC,EAAEJ,EAAE,UAAU,OAAO,GAAGK,EAAE,MAAM,GAAG,CAAC,EAAE,MAAMC,GAAG,EAACN,EAAE,UAAU,OAAO,GAAGI,EAAE,MAAM,GAAG,CAAC,EAAEJ,EAAE,UAAU,IAAI,GAAGK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAMrd,GAAEgd,CAAC,CAAC,QAAC,CAAQA,EAAE,UAAU,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAEA,EAAE,UAAU,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAASM,IAAG,CAAC,OAAO,IAAI,QAAQN,GAAG,CAAC,sBAAsB,IAAI,CAAC,sBAAsBA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAShd,GAAEgd,EAAE,CAAC,OAAO,QAAQ,IAAIA,EAAE,gBAAgB,IAAI1H,GAAGA,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAIiI,GAAE,cAAcC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC5b,GAAE,KAAK,OAAO,CAAC,EAAE,KAAK,cAAc,EAAE,KAAK,sBAAsB,WAAW,IAAI,CAAC,KAAK,MAAK,CAAE,EAAE,KAAK,iBAAiB,CAAC,CAAC,OAAO,CAACub,GAAE,KAAK,OAAO,EAAE,KAAK,IAAI,CAAC,KAAK,QAAQ,OAAM,CAAE,CAAC,CAAC,CAAC,EAAE9N,EAAEkO,GAAE,SAAS,CAAC,aAAa,OAAO,UAAU,CAAC,KAAK,OAAO,QAAQ,CAAC,EAAE,YAAY,CAAC,KAAK,OAAO,QAAQ,IAAI,CAAC,CAAC,EAAkD,IAAIE,GAAE,cAAcC,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,KAAK,QAAQ,WAAW,IAAI,CAAC,KAAK,aAAa,YAAY,KAAK,oBAAoB,KAAK,WAAW,cAAe,CAAA,EAAE,KAAK,mBAAmB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,KAAK,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK,cAAc,CAAC,CAAC,UAAUV,EAAE,CAAC,KAAK,aAAa,YAAYA,EAAE,KAAK,QAAQ,WAAW,IAAI,CAAC,KAAK,aAAa,YAAY,EAAE,EAAE,KAAK,mBAAmB,CAAC,CAAC,EAAE3N,EAAEoO,GAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,EAAEpO,EAAEoO,GAAE,SAAS,CAAC,eAAe,CAAC,KAAK,OAAO,QAAQ,GAAG,EAAE,eAAe,CAAC,KAAK,OAAO,QAAQ,GAAG,EAAE,eAAe,CAAC,KAAK,OAAO,QAAQ,WAAW,EAAE,YAAY,CAAC,KAAK,OAAO,QAAQ,QAAQ,EAAE,UAAU,CAAC,KAAK,OAAO,QAAQ,iBAAiB,CAAC,CAAC,EAAkD,IAAIE,GAAE,cAAcC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,KAAK,YAAY,KAAK,CAAC,IAAI,QAAQZ,EAAE,CAAC,KAAK,cAAc,MAAM,KAAK,UAAU,EAAEA,EAAE,IAAI1H,EAAE,KAAK,gBAAgB0H,CAAC,EAAE,KAAK,aAAa,QAAQ,KAAK,cAAc,MAAM,gBAAgB1H,EAAE,KAAK,cAAc,MAAM,MAAMA,CAAC,CAAC,gBAAgB0H,EAAE,CAACA,EAAEA,EAAE,QAAQ,IAAI,EAAE,EAAE,IAAI1H,EAAE,IAAI,EAAE,SAAS0H,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAEI,EAAE,SAASJ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAEK,EAAE,SAASL,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAII,EAAE,IAAIC,EAAE,KAAK,KAAK/H,EAAE,OAAO,MAAM,CAAC,EAAEjG,EAAEsO,GAAE,UAAU,CAAC,UAAU,OAAO,CAAC,EAAEtO,EAAEsO,GAAE,SAAS,CAAC,MAAM,CAAC,KAAK,OAAO,QAAQ,iBAAiB,CAAC,CAAC,EAAkD,IAAIE,GAAEC,GAAEC,GAAE,cAAcC,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,EAAE/d,GAAE,KAAK4d,EAAC,CAAC,CAAC,SAAS,CAAC,SAAS,iBAAiB,qBAAqB,KAAK,YAAY,KAAK,IAAI,CAAC,EAAEX,GAAE,KAAKW,GAAEC,EAAC,EAAE,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,oBAAoB,qBAAqB,KAAK,YAAY,KAAK,IAAI,CAAC,EAAE,KAAK,kBAAkB,KAAK,aAAa,oBAAoB,UAAU,KAAK,oBAAoB,EAAE,KAAK,aAAa,gBAAgB,eAAe,EAAE,CAAC,kBAAkB,CAACzgB,GAAE,KAAK,WAAW,KAAK,UAAU,KAAK,iBAAiB,EAAE,KAAK,YAAY,IAAI,KAAK,mBAAmB,KAAK,gBAAgB,CAAC,EAAE,MAAO,CAAA,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,0BAA0B,EAAE,OAAO,UAAU,KAAK,QAAQ,SAAS,EAAE,MAAM,IAAI,IAAI,KAAK,YAAY,KAAK,UAAU,IAAI,KAAK,oBAAoB,EAAE,MAAM,UAAU,KAAK,YAAY,KAAK,UAAU,GAAG,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,eAAgB,EAAC,KAAK,gBAAgB,KAAK,SAAS,EAAE,MAAO,CAAA,CAAC,aAAa,EAAE,CAAC,EAAE,eAAc,EAAG,KAAK,gBAAgB,KAAK,aAAa,EAAE,MAAK,CAAE,CAAC,IAAI,kBAAkB,CAAC,OAAO,KAAK,gBAAgB,QAAQ,SAAS,aAAa,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,KAAK,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc,KAAK,WAAW,mCAAmC,UAAU,KAAK,kBAAkB,KAAK,eAAe,+BAA+B,QAAQ,KAAK,gBAAgB,KAAK,aAAa,kCAAkC,MAAM,KAAK,cAAc,KAAK,WAAW,iCAAiC,UAAU,KAAK,kBAAkB,KAAK,eAAe,kCAAkC,QAAQ,KAAK,gBAAgB,KAAK,aAAa,+BAA+B,YAAY,KAAK,eAAe,KAAK,YAAY,QAAQ,CAAC,CAAC,aAAa,CAAC,KAAK,UAAU,GAAG,KAAK,WAAW,UAAU,IAAI,QAAQ,CAAC,CAAC,EAAEwgB,GAAE,IAAI,QAAQC,GAAE,UAAU,CAAC,IAAI,EAAE,KAAK,QAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ,OAAO,MAAM,GAAG,EAAE,CAAA,EAAG,EAAE,KAAK,wBAAwB,EAAE,EAAE,KAAK,6BAA6B,EAAE,EAAE,KAAK,mCAAmC,EAAE,EAAE,KAAK,iCAAiC,EAAE,EAAE,KAAK,4BAA4B,EAAE,KAAK,QAAQ,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAEzO,EAAE0O,GAAE,UAAU,CAAC,OAAO,SAAS,UAAU,CAAC,EAAE1O,EAAE0O,GAAE,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,QAAQ,QAAQ,EAAE,EAAE,oBAAoB,CAAC,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAE1O,EAAE0O,GAAE,UAAU,CAAC,QAAQ,YAAY,UAAU,QAAQ,YAAY,UAAU,QAAQ,CAAC,EAAkD,IAAIE,GAAE,cAAcC,CAAC,CAAC,SAAS,CAAC,SAAS,iBAAiB,qBAAqB,KAAK,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,oBAAoB,qBAAqB,KAAK,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC,gBAAgBlB,EAAE,CAACA,EAAE,SAAS,KAAK,kBAAkB,KAAK,MAAO,CAAA,CAAC,MAAM,kBAAkB,CAAC,KAAK,WAAW,KAAK,gBAAgB,MAAO,EAAC,KAAK,aAAapb,GAAE,KAAK,gBAAgB,EAAEA,GAAE,KAAK,eAAe,IAAIub,GAAE,KAAK,eAAe,EAAE,MAAMA,GAAE,KAAK,gBAAgB,EAAE,KAAK,aAAY,EAAG,CAAC,YAAY,CAAC,KAAK,qBAAqB,KAAK,qBAAqB,SAAS,KAAK,MAAM,IAAI,IAAI,KAAK,cAAc,MAAM,IAAIH,EAAE,OAAO,WAAW,SAAS,gBAAgB,YAAY,SAAS,KAAK,MAAM,aAAa,GAAGA,CAAC,KAAK,SAAS,KAAK,UAAU,IAAI,QAAQ,YAAY,iBAAiB,CAAC,CAAC,cAAc,CAAC,SAAS,KAAK,MAAM,aAAa,KAAK,SAAS,KAAK,UAAU,OAAO,QAAQ,YAAY,iBAAiB,EAAE,KAAK,qBAAqB,KAAK,sBAAqB,EAAG,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,KAAK,eAAe,OAAO,aAAa,SAAS,KAAK,SAAS,CAAC,uBAAuB,CAAC,KAAK,iBAAiB,SAAS,SAAS,gBAAgB,UAAU,KAAK,eAAe,CAAC,aAAa,CAAC,KAAK,MAAO,EAAC,KAAK,iBAAiB,UAAU,IAAI,QAAQ,EAAE,KAAK,gBAAgB,UAAU,IAAI,QAAQ,CAAC,CAAC,EAAE3N,EAAE4O,GAAE,UAAU,CAAC,YAAY,YAAY,CAAC,EAAE5O,EAAE4O,GAAE,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAkD,IAAIE,GAAE,cAAcC,CAAC,CAAC,kBAAkB,CAAC/gB,GAAE,KAAK,cAAc,KAAK,SAAS,EAAE,KAAK,mBAAmB,KAAK,mBAAmB,CAAC,KAAK2f,EAAE,CAAC,KAAK,mBAAmB,KAAK,oBAAoB,KAAK,UAAU,EAAE,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC,IAAI,mBAAmB,CAAC,OAAO,KAAK,WAAW,KAAK,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,uBAAuB,KAAK,gBAAiB,EAAC,KAAK,UAAU,WAAW,IAAI,CAAC,KAAK,KAAI,EAAG,KAAK,UAAU,MAAM,EAAE,KAAK,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,OAAO,KAAK,WAAW,WAAW,aAAa,KAAK,SAAS,EAAE,KAAK,UAAU,OAAO,CAAC,EAAE3N,EAAE8O,GAAE,UAAU,CAAC,SAAS,CAAC,EAAE9O,EAAE8O,GAAE,SAAS,CAAC,aAAa,OAAO,KAAK,CAAC,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI7O,GAAE,cAAcyO,EAAC,CAAC,kBAAkB,CAAC1gB,GAAE,KAAK,cAAc,KAAK,SAAS,EAAEA,GAAE,KAAK,WAAW,KAAK,SAAS,EAAE,KAAK,gBAAgBA,GAAE,KAAK,YAAY,KAAK,SAAS,CAAC,CAAC,EAAEgS,EAAEC,GAAE,UAAU,CAAC,UAAU,OAAO,CAAC,EAAkD,IAAI+O,GAAE,cAAcC,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS,KAAK,WAAW,KAAK,WAAW,UAAUtB,GAAGA,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,QAAS,CAAA,CAAC,OAAOA,EAAE,CAACA,EAAE,cAAc,UAAU,SAAS,KAAK,WAAWA,EAAE,cAAc,cAAcA,EAAE,cAAc,QAAQ,MAAM,KAAK,WAAWA,EAAE,cAAc,QAAQ,MAAMA,EAAE,cAAc,QAAQ,GAAG,KAAK,WAAW,KAAK,WAAW,UAAU1H,GAAGA,EAAE,IAAI0H,EAAE,cAAc,QAAQ,EAAE,EAAE,KAAK,WAAW,KAAK,WAAW,QAAQA,EAAE,aAAa,EAAE,OAAO,cAAc,IAAI,YAAY,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,KAAK,UAAU,CAAC,CAAC,mBAAmB,CAAC,GAAG,KAAK,QAAS,EAAC,KAAK,kBAAkB,CAAC,IAAIA,EAAE,KAAK,WAAW,KAAK,UAAU,EAAE,GAAG,GAAG,KAAK,oBAAoB,SAAS,KAAKA,MAAM,CAAC,IAAIuB,EAAE,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,IAAIvB,EAAE,QAAQ,aAAa,CAAE,EAAC,SAAS,MAAMuB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,aAAa,QAAQ,CAACvB,EAAE1H,IAAI,aAAC,IAAI,EAAE,KAAK,WAAWA,CAAC,EAAEA,IAAI,KAAK,YAAY0H,EAAE,UAAU,OAAO,QAAQ,EAAE,KAAK,uBAAqBP,EAAA,iBAAG,YAAH,MAAAA,EAAc,OAAO,GAAG,KAAK,qBAAoB,KAAK,qBAAmB+B,EAAA,iBAAG,YAAH,MAAAA,EAAc,IAAI,GAAG,KAAK,qBAAoBxB,EAAE,UAAU,IAAI,QAAQ,EAAE,KAAK,qBAAmByB,EAAA,iBAAG,YAAH,MAAAA,EAAc,OAAO,GAAG,KAAK,mBAAkB,KAAK,uBAAqBC,EAAA,iBAAG,YAAH,MAAAA,EAAc,IAAI,GAAG,KAAK,qBAAoB,CAAC,EAAE,KAAK,kBAAkB,KAAK,aAAa,cAAc,KAAK,WAAW,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,WAAW,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,SAAS,IAAI,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAErP,EAAEgP,GAAE,UAAU,CAAC,YAAY,aAAa,CAAC,EAAEhP,EAAEgP,GAAE,UAAU,CAAC,MAAM,QAAQ,QAAQ,CAAC,EAAEhP,EAAEgP,GAAE,SAAS,CAAC,MAAM,EAAE,aAAa,QAAQ,eAAe,OAAO,CAAC,EAAkD,IAAIM,GAAE,cAAcC,CAAC,CAAC,OAAO5B,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,UAAU,KAAK,SAAS,CAAC,YAAYA,EAAE,CAAC,KAAK,UAAUA,EAAE,OAAO,QAAQ,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU,GAAG,KAAK,QAAO,CAAE,CAAC,MAAM,CAAC,KAAK,UAAU,GAAG,KAAK,QAAS,CAAA,CAAC,SAAS,CAAC,KAAK,kBAAkB,QAAQA,GAAG,CAAC3f,GAAE2f,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE3N,EAAEsP,GAAE,UAAU,CAAC,YAAY,CAAC,EAAEtP,EAAEsP,GAAE,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAAC,ECEt5U,MAAME,WAAwBC,EAAM,CAGjD,MAAQ,CACN,MAAM,KAAI,EAEN,KAAK,oBACP,WAAW,IAAM,KAAK,gBAAgB,MAAO,EAAE,GAAG,CAExD,CAEE,OAAS,CACP,MAAM,MAAK,EACX,KAAK,SAAS,OAAO,EAEjB,KAAK,sBACP,KAAK,iBAAiB,IAAM,KAC5B,KAAK,iBAAiB,UAAY,GAExC,CACA,CAnBEtiB,EADmBqiB,GACZ,UAAU,CAAC,aAAc,WAAW,kHCA9B,MAAME,WAA4B1iB,CAAW,CAO1D,SAAW,CACT,KAAK,OAAM,CACf,CAEE,QAAU,CACR,IAAIiI,GAAI,CACN,MAAO,EACP,QAAS,EACT,OAAQ,GACR,MAAO,KACP,gBAAiB,IACjB,UAAW,KAAK,eAChB,KAAM,KAAK,UACX,OAAQ,GACR,SAAU,GACV,IAAK,GACL,gBAAiB,GACjB,SAAU,GACV,qBAAsB,GACtB,UAAW,GACX,WAAY,CACV,IAAK,CACH,WAAY,GACb,EACD,IAAK,CACH,WAAY,GACb,EACD,IAAK,CACH,WAAY,GACb,EACD,IAAK,CACH,OAAQ,GACR,WAAY,GACtB,CACA,CACK,CAAA,CACL,CACA,CA3CE9H,EADmBuiB,GACZ,UAAU,CAAC,UAAU,GAE5BviB,EAHmBuiB,GAGZ,SAAS,CACd,KAAM,CAAE,KAAM,OAAQ,QAAS,SAAS,CAC5C,kHCNMC,GAAgB,CAAC,QAAS,SAAU,MAAO,SAAU,KAAK,EAC1DC,GAAkB,CAAC,MAAO,MAAO,MAAM,EACvCC,GAAY,CAAC,QAAS,SAAU,KAAK,EACrCC,GAAgB,CAAC,MAAO,OAAQ,KAAK,EACrCC,GAAU,CACd,IAAK,CACH,cAAe,gBACf,eAAgB,eAChB,cAAe,cACf,eAAgB,gBAChB,gBAAiB,eACjB,eAAgB,cAEhB,YAAa,gBACb,aAAc,gBACd,YAAa,eAEb,cAAe,gBACf,eAAgB,eAChB,cAAe,cAEf,eAAgB,gBAChB,gBAAiB,gBACjB,eAAgB,eAEhB,YAAa,gBACb,aAAc,gBACd,YAAa,eAEb,eAAgB,gBAChB,gBAAiB,gBACjB,eAAgB,eAEhB,gBAAiB,gBACjB,iBAAkB,gBAClB,gBAAiB,eAEjB,aAAc,gBACd,cAAe,gBACf,aAAc,cACf,EACD,IAAK,CACH,cAAe,gBACf,eAAgB,eAChB,cAAe,cAEf,eAAgB,gBAChB,gBAAiB,eACjB,eAAgB,cAEhB,YAAa,gBACb,aAAc,gBACd,YAAa,eAEb,cAAe,gBACf,eAAgB,eAChB,cAAe,cAEf,eAAgB,gBAChB,gBAAiB,gBACjB,eAAgB,eAEhB,YAAa,gBACb,aAAc,gBACd,YAAa,eAEb,eAAgB,gBAChB,gBAAiB,gBACjB,eAAgB,eAEhB,gBAAiB,gBACjB,iBAAkB,gBAClB,gBAAiB,eAEjB,aAAc,kBACd,cAAe,gBACf,aAAc,cACf,EACD,OAAQ,CACN,cAAe,gBACf,eAAgB,eAChB,cAAe,cAEf,eAAgB,gBAChB,gBAAiB,eACjB,eAAgB,cAEhB,YAAa,gBACb,aAAc,gBACd,YAAa,eAEb,cAAe,gBACf,eAAgB,eAChB,cAAe,cAEf,eAAgB,gBAChB,gBAAiB,gBACjB,eAAgB,eAEhB,YAAa,kBACb,aAAc,gBACd,YAAa,eAEb,eAAgB,gBAChB,gBAAiB,gBACjB,eAAgB,eAEhB,gBAAiB,gBACjB,iBAAkB,gBAClB,gBAAiB,eAEjB,aAAc,kBACd,cAAe,gBACf,aAAc,cACf,EACD,MAAO,CACL,cAAe,aACf,eAAgB,aAChB,YAAa,cAEb,cAAe,aACf,eAAgB,cAChB,YAAa,cAEb,eAAgB,aAChB,gBAAiB,cACjB,aAAc,aACf,EACD,OAAQ,CACN,cAAe,aACf,eAAgB,aAChB,YAAa,cAEb,cAAe,aACf,eAAgB,cAChB,YAAa,cAEb,eAAgB,aAChB,gBAAiB,cACjB,aAAc,aAClB,CACA,EAEe,MAAMC,WAAgBhjB,CAAW,CAU9C,SAAW,CACT,KAAK,cAAc,cAAc,eAAe,KAAK,YAAY,GAAG,EAAE,QAAU,GAEhF,KAAK,aAAe,WAAW,IAAM,CACnC,KAAK,SAAS,WAAW,CAC/B,EAAO,GAAK,CACZ,CAEE,YAAc,CACZ,aAAa,KAAK,YAAY,CAClC,CAEE,oBAAqBmB,EAAO,CACtBA,IAAU,SAAWA,IAAU,UACjC,KAAK,gBAAgB,QAAQmf,GAAS,CAChCA,EAAM,QAAU,MAClBA,EAAM,QAAU,GAEhBA,EAAM,SAAW,EAEpB,CAAA,EAED,KAAK,cAAgB,OAErB,KAAK,gBAAgB,QAAQA,GAAS,CACpCA,EAAM,SAAW,EAClB,CAAA,EAGH,KAAK,gBAAe,CACxB,CAEE,wBAA0B,CACxB,KAAK,gBAAe,CACxB,CAEE,kBAAoB,CAClB,KAAK,gBAAe,CACxB,CAEE,sBAAwB,CACtB,KAAK,gBAAe,CACxB,CAEE,QAASA,EAAO,CACd,KAAM,CAAE,KAAAzf,EAAM,MAAAM,CAAO,EAAGmf,EAAM,OAE9B,OAAQzf,EAAI,CACV,IAAK,UACH,KAAK,aAAeM,EACpB,MACF,IAAK,aACH,KAAK,gBAAkBA,EACvB,MACF,IAAK,OACH,KAAK,UAAYA,EACjB,MACF,IAAK,WACH,KAAK,cAAgBA,EACrB,MACF,QACE,QAAQ,KAAK,uBAAuBN,CAAI,EAAE,EAC1C,KACR,CACA,CAEE,iBAAmB,CACjB,KAAK,WAAU,EAEf,MAAMS,EAAM,CAAC,KAAK,gBAAiB,KAAK,UAAW,KAAK,aAAa,EAAE,KAAK,GAAG,EAE/E,KAAK,YAAY,UAAU,IAAI,wBAAwB,EACvD,KAAK,YAAY,UAAYyhB,GAAQ,GAAG,KAAK,YAAY,EAAE,EAAEzhB,CAAG,EAEhE,WAAW,IAAM,CACf,KAAK,YAAY,UAAU,OAAO,wBAAwB,CAChE,EAAO,MAAM,CACb,CAEE,YAAc,CACZ,GAAI,CAACqhB,GAAc,SAAS,KAAK,YAAY,EAC3C,MAAM,IAAI,MAAM,+EAA+E,EAEjG,GAAI,CAACC,GAAgB,SAAS,KAAK,eAAe,EAChD,MAAM,IAAI,MAAM,mEAAmE,EAErF,GAAI,CAACC,GAAU,SAAS,KAAK,SAAS,EACpC,MAAM,IAAI,MAAM,6DAA6D,EAE/E,GAAI,CAACC,GAAc,SAAS,KAAK,aAAa,EAC5C,MAAM,IAAI,MAAM,iEAAiE,CAEvF,CACA,CAtGE3iB,EADmB6iB,GACZ,UAAU,CAAC,QAAS,WAAY,SAAS,GAEhD7iB,EAHmB6iB,GAGZ,SAAS,CACd,QAAS,CAAE,KAAM,OAAQ,QAAS,KAAO,EACzC,WAAY,CAAE,KAAM,OAAQ,QAAS,KAAO,EAC5C,KAAM,CAAE,KAAM,OAAQ,QAAS,OAAS,EACxC,SAAU,CAAE,KAAM,OAAQ,QAAS,KAAK,CAC5C,kHCvJe,MAAMC,WAAyBjjB,CAAW,CAQvD,SAAW,CACT,KAAK,OAAM,CACf,CAEE,QAAU,CACR,IAAIiI,GAAI,CACN,UAAW,KAAK,eAChB,MAAO,EACP,KAAM,KAAK,UACX,OAAQ,GACR,IAAK,GACL,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,SAAU,CAAC,KAAK,SAChB,WAAY,CACV,IAAK,CACH,SAAU,EACX,EACD,IAAK,CACH,IAAK,KAAK,QACpB,CACA,CACK,CAAA,CACL,CACA,CA/BE9H,EADmB8iB,GACZ,UAAU,CAAC,WAAY,OAAQ,MAAM,GAE5C9iB,EAHmB8iB,GAGZ,SAAS,CACd,KAAM,CAAE,KAAM,OAAQ,QAAS,SAAW,EAC1C,IAAK,CAAE,KAAM,QAAS,QAAS,EAAI,CACvC,kHCNe,MAAMC,WAAaljB,CAAW,CAI3C,SAAW,CACT,KAAK,gBAAkB,OAAO,KAAK,QAAQ,QAAQ,KAAK,EACxD,KAAK,eAAc,CACvB,CAEE,eAAiB,CACf,KAAK,gBAAmB,KAAK,iBAAiB,UAAUmjB,GAAOA,EAAI,KAAO,OAAO,MAAM,cAAc,EAAE,EACvG,KAAK,eAAc,CACvB,CAEE,gBAAkB,CAChB,KAAK,iBAAiB,QAAQ,CAAC7b,EAAS/D,IAAU,CAChDA,IAAU,KAAK,gBAAkB+D,EAAQ,UAAU,IAAI,KAAK,sBAAsB,EAAIA,EAAQ,UAAU,OAAO,KAAK,sBAAsB,CAC3I,CAAA,EAED,KAAK,kBAAkB,QAAQ,CAACA,EAAS/D,IAAU,CACjDA,IAAU,KAAK,gBAAkB+D,EAAQ,UAAU,OAAO,sBAAsB,EAAIA,EAAQ,UAAU,IAAI,sBAAsB,CACjI,CAAA,CACL,CACA,CAtBEnH,EADmB+iB,GACZ,UAAU,CAAC,YAAa,YAAY,GAC3C/iB,EAFmB+iB,GAEZ,SAAS,CAAE,kBAAmB,MAAM,kHCJtC,MAAME,EAAc,CACzB,YAAaC,EAAU,CACrB,KAAK,SAAWA,CACpB,CAEE,IAAI,YAAc,CAChB,OAAO,KAAK,SAAS,MACzB,CAEE,IAAI,YAAc,CAChB,OAAO,KAAK,SAAS,UACzB,CAEE,IAAI,IAAM,CACR,OAAO,KAAK,SAAS,EACzB,CAEE,IAAI,iBAAmB,CACrB,OAAO,KAAK,aAAe,GAC/B,CAEE,IAAI,qBAAuB,CACzB,OAAO,KAAK,aAAe,GAC/B,CAEE,IAAI,mBAAqB,CACvB,OAAO,KAAK,SAAS,QAAQ,IAAI,kBAAkB,CACvD,CAEE,IAAI,aAAe,CAGjB,OAFoB,KAAK,SAAS,QAAQ,IAAI,cAAc,GAAK,IAE9C,QAAQ,OAAQ,EAAE,CACzC,CAEE,IAAI,SAAW,CACb,OAAO,KAAK,SAAS,OACzB,CAEE,IAAI,MAAQ,CACV,OAAI,KAAK,YAAY,MAAM,yCAAyC,EAC3D,KAAK,KAGP,QAAQ,OAAO,IAAI,MAAM,sCAAsC,KAAK,WAAW,WAAW,CAAC,CACtG,CAEE,IAAI,MAAQ,CACV,OAAI,KAAK,YAAY,MAAM,uBAAuB,EACzC,KAAK,eAAiB,KAAK,aAAe,KAAK,SAAS,KAAM,GAGhE,QAAQ,OAAO,IAAI,MAAM,qCAAqC,KAAK,WAAW,WAAW,CAAC,CACrG,CAEE,IAAI,MAAQ,CACV,OAAO,KAAK,eAAiB,KAAK,aAAe,KAAK,SAAS,KAAM,EACzE,CAEE,IAAI,eAAiB,CACnB,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAClE,CAEE,MAAM,mBAAqB,CACzB,GAAI,KAAK,cACH,OAAO,MACT,MAAM,OAAO,MAAM,oBAAoB,MAAM,KAAK,IAAI,EAEtD,QAAQ,KAAK,kGAAkG,MAGjH,QAAO,QAAQ,OAAO,IAAI,MAAM,6CAA6C,KAAK,WAAW,WAAW,CAAC,CAE/G,CACA,CC1EO,MAAMC,EAAmB,CAC9B,OAAO,SAAUC,EAAa,CAC5B,KAAK,YAAcA,CACvB,CAEE,OAAO,KAAO,CACZ,OAAO,KAAK,WAChB,CAEE,OAAO,OAAS,CACd,KAAK,YAAc,MACvB,CACA,CCZO,SAASC,GAAW3iB,EAAM,CAC/B,MAAM4iB,EAAU,SAAS,OAAS,SAAS,OAAO,MAAM,IAAI,EAAI,CAAA,EAC1Dzd,EAAS,GAAG,mBAAmBnF,CAAI,CAAC,IACpC6iB,EAASD,EAAQ,KAAKC,GAAUA,EAAO,WAAW1d,CAAM,CAAC,EAE/D,GAAI0d,EAAQ,CACV,MAAMviB,EAAQuiB,EAAO,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAEjD,GAAIviB,EACF,OAAO,mBAAmBA,CAAK,CAErC,CACA,CAEO,SAASwiB,GAAS5b,EAAQ,CAC/B,MAAM7F,EAAS,CAAA,EAEf,UAAWZ,KAAOyG,EAAQ,CACxB,MAAM5G,EAAQ4G,EAAOzG,CAAG,EACpBH,IAAU,SACZe,EAAOZ,CAAG,EAAIH,EAEpB,CAEE,OAAOe,CACT,CAEO,SAAS0hB,GAAa/iB,EAAM,CACjC,MAAMyG,EAAU,SAAS,KAAK,cAAc,cAAczG,CAAI,IAAI,EAClE,OAAOyG,GAAWA,EAAQ,OAC5B,CAEO,SAASuc,GAA2BC,EAAU,CACnD,MAAO,CAAC,GAAGA,CAAQ,EAAE,OAAO,CAACC,EAAS,CAACljB,EAAMM,CAAK,IACzC4iB,EAAQ,OAAO,OAAO5iB,GAAU,SAAW,CAAC,CAACN,EAAMM,CAAK,CAAC,EAAI,CAAE,CAAA,EACrE,CAAE,CAAA,CACP,CAEO,SAAS6iB,GAAcC,EAAcF,EAAS,CACnD,SAAW,CAACljB,EAAMM,CAAK,IAAK4iB,EACtB5iB,aAAiB,OAAO,OAExB8iB,EAAa,IAAIpjB,CAAI,GACvBojB,EAAa,OAAOpjB,CAAI,EACxBojB,EAAa,IAAIpjB,EAAMM,CAAK,GAE5B8iB,EAAa,OAAOpjB,EAAMM,CAAK,EAGrC,CC7CO,MAAM+iB,EAAa,CACxB,YAAaC,EAAQC,EAAKlc,EAAU,CAAA,EAAI,CACtC,KAAK,OAASic,EACd,KAAK,QAAUjc,EACf,KAAK,YAAckc,EAAI,SAAQ,CACnC,CAEE,MAAM,SAAW,CACf,GAAI,CACF,MAAMC,EAAqBf,GAAmB,IAAG,EAC7Ce,GACF,MAAMA,EAAmB,IAAI,CAEhC,OAAQC,EAAO,CACd,QAAQ,MAAMA,CAAK,CACzB,CAEI,MAAMjB,EAAW,IAAID,GAAc,MAAM,OAAO,MAAM,KAAK,IAAK,KAAK,YAAY,CAAC,EAElF,OAAIC,EAAS,iBAAmBA,EAAS,kBAChC,QAAQ,OAAO,OAAO,SAAS,KAAOA,EAAS,iBAAiB,GAGrEA,EAAS,IAAMA,EAAS,eAC1B,MAAMA,EAAS,kBAAiB,EAG3BA,EACX,CAEE,UAAW/hB,EAAKH,EAAO,CACrB,MAAMojB,EAAU,KAAK,kBACrBA,EAAQjjB,CAAG,EAAIH,EACf,KAAK,QAAQ,QAAUojB,CAC3B,CAEE,IAAI,cAAgB,CAClB,MAAO,CACL,OAAQ,KAAK,OAAO,YAAa,EACjC,QAAS,KAAK,QACd,KAAM,KAAK,cACX,OAAQ,KAAK,OACb,YAAa,cACb,SAAU,KAAK,QACrB,CACA,CAEE,IAAI,SAAW,CACb,OAAOZ,GACL,OAAO,OAAO,CACZ,mBAAoB,iBACpB,eAAgB,KAAK,UACrB,eAAgB,KAAK,YACrB,OAAQ,KAAK,MACd,EACD,KAAK,iBAAiB,CAC5B,CACA,CAEE,IAAI,WAAa,CACf,OAAOH,GAAUI,GAAY,YAAY,CAAC,GAAKA,GAAY,YAAY,CAC3E,CAEE,IAAI,aAAe,CACjB,OAAI,KAAK,QAAQ,YACR,KAAK,QAAQ,YACX,KAAK,MAAQ,MAAQ,KAAK,gBAAgB,OAAO,SAC1D,OACS,KAAK,gBAAgB,OAAO,KAC9B,KAAK,KAAK,KAGZ,kBACX,CAEE,IAAI,QAAU,CACZ,OAAQ,KAAK,aAAY,CACvB,IAAK,OACH,MAAO,mCACT,IAAK,eACH,MAAO,+DACT,IAAK,OACH,MAAO,6CACT,QACE,MAAO,KACf,CACA,CAEE,IAAI,MAAQ,CACV,OAAO,KAAK,QAAQ,IACxB,CAEE,IAAI,OAAS,CACX,MAAMY,GAAiB,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,GAAK,IAAI,MAAM,GAAG,EAAE,CAAC,EACnEC,EAAS,IAAI,gBAAgBD,CAAa,EAEhD,IAAIE,EAAe,KAAK,QAAQ,MAC5BA,aAAwB,OAAO,SACjCA,EAAeb,GAA0Ba,CAAY,EAC5CA,aAAwB,OAAO,gBACxCA,EAAeA,EAAa,QAAO,EAEnCA,EAAe,OAAO,QAAQA,GAAgB,CAAE,CAAA,EAGlDV,GAAaS,EAAQC,CAAY,EAEjC,MAAMC,EAAQF,EAAO,SAAQ,EAC7B,OAAQE,EAAM,OAAS,EAAI,IAAIA,CAAK,GAAK,EAC7C,CAEE,IAAI,KAAO,CACT,OAAQ,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,EAAG,MAAM,GAAG,EAAE,CAAC,EAAI,KAAK,KACjE,CAEE,IAAI,cAAgB,CAClB,OAAO,KAAK,QAAQ,cAAgB,MACxC,CAEE,IAAI,QAAU,CACZ,OAAO,KAAK,QAAQ,MACxB,CAEE,IAAI,UAAY,CACd,OAAO,KAAK,QAAQ,UAAY,QACpC,CAEE,IAAI,mBAAqB,CACvB,OAAO,KAAK,QAAQ,SAAW,CAAA,CACnC,CAEE,IAAI,eAAiB,CACnB,MAAMC,EAAgB,OAAO,UAAU,SAAS,KAAK,KAAK,IAAI,IAAM,kBAGpE,OAF0B,KAAK,QAAQ,cAAc,IAAM,oBAElC,CAACA,EACjB,KAAK,UAAU,KAAK,IAAI,EAG1B,KAAK,IAChB,CACA,CC/IA,eAAeC,GAAKT,EAAKlc,EAAS,CAEhC,OADgB,IAAIgc,GAAa,MAAOE,EAAKlc,CAAO,EACrC,QAAO,CACxB,CAEA,eAAe4c,GAAMV,EAAKlc,EAAS,CAEjC,OADgB,IAAIgc,GAAa,OAAQE,EAAKlc,CAAO,EACtC,QAAO,CACxB,CCPe,MAAK6c,WAAS/kB,CAAW,CACtC,cAAeke,EAAO,CACpBA,EAAM,eAAc,EACpB2G,GAAI3G,EAAM,OAAO,KAAM,CACrB,YAAa,6BACb,aAAc,cACf,CAAA,CACL,CAEE,eAAgBA,EAAO,CACrBA,EAAM,eAAc,EACpB4G,GAAK5G,EAAM,OAAO,KAAM,CACtB,YAAa,6BACb,aAAc,cACf,CAAA,CACL,CACA,0HChBe,MAAK8G,WAAShlB,CAAW,CAAzB,kCAAAilB,GAAA,KAAAC,IACb,SAAW,CACT,KAAK,QAAQ,iBAAiB,mBAAqBhH,GAAU,CAC3DiH,GAAA,KAAKD,GAAAE,IAAL,UAAWlH,EACZ,CAAA,CACL,CAOA,CAZegH,GAAA,YAObE,GAAM,SAAClH,EAAO,CACRA,EAAM,OAAO,SACfmH,GAAYnH,EAAM,OAAO,cAAc,SAAS,GAAG,CAEzD,iHCZe,MAAMoH,WAActlB,CAAW,CAG5C,SAAW,CACT,GAAI,yBAA0B,OAAQ,CACpC,IAAIulB,EAAoB,IAAI,qBAAqB,SAAUxB,EAASyB,EAAU,CAC5EzB,EAAQ,QAAQ,SAAU0B,EAAO,CAC/B,GAAIA,EAAM,eAAgB,CACxB,UAAWC,KAAUD,EAAM,OAAO,SAAU,CAC1C,MAAME,EAAcF,EAAM,OAAO,SAASC,CAAM,EAC5C,OAAOC,EAAY,SAAY,UAAYA,EAAY,UAAY,WACrEA,EAAY,IAAMA,EAAY,QAAQ,IAEtD,CAEYF,EAAM,OAAO,KAAI,EACjBA,EAAM,OAAO,UAAU,OAAO,MAAM,EACpCF,EAAkB,UAAUE,EAAM,MAAM,CACpD,CACS,CAAA,CACF,CAAA,EAEDF,EAAkB,QAAQ,KAAK,OAAO,CAC5C,CACA,CACA,CAxBEplB,EADmBmlB,GACZ,UAAU,CAAC,QAAQ,kHCGtBM,GAAcC,GAAY,MAAK,EAC/BC,GAA+F,OAAA,OAAA,CAAA,mDAAAC,GAAA,8CAAAC,GAAA,iDAAAC,GAAA,kDAAAC,GAAA,8CAAAC,GAAA,uDAAAC,GAAA,+CAAAC,GAAA,mDAAAC,GAAA,iDAAAC,GAAA,gDAAAC,GAAA,8CAAAC,GAAA,+CAAAC,GAAA,6DAAAC,GAAA,+CAAAC,EAAA,CAAA,EAErGhB,GAAY,SAAS,QAASiB,EAAK,EACnCjB,GAAY,SAAS,QAAS1C,EAAI,EAClC0C,GAAY,SAAS,SAAUkB,EAAM,EACrClB,GAAY,SAAS,oBAAqBmB,EAAgB,EAE1D,OAAO,SAAWnB,GAClBoB,GAAoBpB,GAAaE,EAAW,EAE5CmB,GAA0B,GAAG,EAE7B,SAAS,iBAAiB,aAAc,UAAY,CAClD,OAAO,UAAY,OAAO,SAAS,KAAI,CACzC,CAAC","x_google_ignoreList":[1,6,12,13,14,15,16]}