{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/ap-theme.js?cb=1791292499485"],
  "sourcesContent": ["(() => {\n  var __defProp = Object.defineProperty;\n  var __defNormalProp = (obj, key, value) =>\n    key in obj\n      ? __defProp(obj, key, {\n          enumerable: true,\n          configurable: true,\n          writable: true,\n          value,\n        })\n      : (obj[key] = value);\n  var __publicField = (obj, key, value) => {\n    __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n    return value;\n  };\n\n  function Apollo(root) {\n    this.apollolistenMap = [{}, {}];\n    if (root) {\n      this.root(root);\n    }\n    this.handle = Apollo.prototype.handle.bind(this);\n    this._removedListeners = [];\n  }\n  Apollo.prototype.root = function (root) {\n    const apollolistenMap = this.apollolistenMap;\n    let eventType;\n    if (this.rootElement) {\n      for (eventType in apollolistenMap[1]) {\n        if (apollolistenMap[1].hasOwnProperty(eventType)) {\n          this.rootElement.removeEventListener(eventType, this.handle, true);\n        }\n      }\n      for (eventType in apollolistenMap[0]) {\n        if (apollolistenMap[0].hasOwnProperty(eventType)) {\n          this.rootElement.removeEventListener(eventType, this.handle, false);\n        }\n      }\n    }\n    if (!root || !root.addEventListener) {\n      if (this.rootElement) {\n        delete this.rootElement;\n      }\n      return this;\n    }\n    this.rootElement = root;\n    for (eventType in apollolistenMap[1]) {\n      if (apollolistenMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.addEventListener(eventType, this.handle, true);\n      }\n    }\n    for (eventType in apollolistenMap[0]) {\n      if (apollolistenMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.addEventListener(eventType, this.handle, false);\n      }\n    }\n    return this;\n  };\n\n  Apollo.prototype.off = function (eventType, selector, handler, uCapture) {\n    let i;\n    let listener;\n    let apollolistenMap;\n    let listenerList;\n    let singleEventType;\n    if (typeof selector === \"function\") {\n      uCapture = handler;\n      handler = selector;\n      selector = null;\n    }\n    if (uCapture === void 0) {\n      this.off(eventType, selector, handler, true);\n      this.off(eventType, selector, handler, false);\n      return this;\n    }\n    apollolistenMap = this.apollolistenMap[uCapture ? 1 : 0];\n    if (!eventType) {\n      for (singleEventType in apollolistenMap) {\n        if (apollolistenMap.hasOwnProperty(singleEventType)) {\n          this.off(singleEventType, selector, handler);\n        }\n      }\n      return this;\n    }\n    listenerList = apollolistenMap[eventType];\n    if (!listenerList || !listenerList.length) {\n      return this;\n    }\n    for (i = listenerList.length - 1; i >= 0; i--) {\n      listener = listenerList[i];\n      if (\n        (!selector || selector === listener.selector) &&\n        (!handler || handler === listener.handler)\n      ) {\n        this._removedListeners.push(listener);\n        listenerList.splice(i, 1);\n      }\n    }\n    if (!listenerList.length) {\n      delete apollolistenMap[eventType];\n      if (this.rootElement) {\n        this.rootElement.removeEventListener(eventType, this.handle, uCapture);\n      }\n    }\n    return this;\n  };\n  Apollo.prototype.on = function (evtType, selector, handler, uCapture) {\n    let root;\n    let apollolistenMap;\n    let matcher;\n    let matcherParam;\n    if (!evtType) {\n      throw new TypeError(\"Invalid event type: \" + evtType);\n    }\n    if (typeof selector === \"function\") {\n      uCapture = handler;\n      handler = selector;\n      selector = null;\n    }\n    if (uCapture === void 0) {\n      uCapture = this.captureForType(evtType);\n    }\n    if (typeof handler !== \"function\") {\n      throw new TypeError(\"Handler must be a type of Function\");\n    }\n    root = this.rootElement;\n    apollolistenMap = this.apollolistenMap[uCapture ? 1 : 0];\n    if (!apollolistenMap[evtType]) {\n      if (root) {\n        root.addEventListener(evtType, this.handle, uCapture);\n      }\n      apollolistenMap[evtType] = [];\n    }\n    if (!selector) {\n      matcherParam = null;\n      matcher = apolloMatchesRoot.bind(this);\n    } else if (/^[a-z]+$/i.test(selector)) {\n      matcherParam = selector;\n      matcher = apolloMatchesTag;\n    } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n      matcherParam = selector.slice(1);\n      matcher = matchesId;\n    } else {\n      matcherParam = selector;\n      matcher = Element.prototype.matches;\n    }\n    apollolistenMap[evtType].push({\n      selector,\n      handler,\n      matcher,\n      matcherParam,\n    });\n    return this;\n  };\n  Apollo.prototype.captureForType = function (evtType) {\n    return [\"blur\", \"error\", \"focus\", \"load\", \"resize\", \"scroll\"].indexOf(evtType) !== -1;\n  };\n  Apollo.prototype.fire = function (event, target, listener) {\n    return listener.handler.call(target, event, target);\n  };\n\n  function apolloMatchesTag(tagName, element) {\n    return tagName.toLowerCase() === element.tagName.toLowerCase();\n  }\n\n  function apolloMatchesRoot(selector, element) {\n    if (this.rootElement === window) {\n      return element === document || element === document.documentElement || element === window;\n    }\n    return this.rootElement === element;\n  }\n\n  function matchesId(id, element) {\n    return id === element.id;\n  }\n  Apollo.prototype.destroy = function () {\n    this.off();\n    this.root();\n  };\n  Apollo.prototype.handle = function (event) {\n    let i;\n    let l;\n    const type = event.type;\n    let root;\n    let phase;\n    let listener;\n    let returned;\n    let listenerList = [];\n    let target;\n    const eventIgnore = \"ApolloIgnore\";\n    if (event[eventIgnore] === true) {\n      return;\n    }\n    target = event.target;\n    if (target.nodeType === 3) {\n      target = target.parentNode;\n    }\n    if (target.correspondingUseElement) {\n      target = target.correspondingUseElement;\n    }\n    root = this.rootElement;\n    phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2);\n    switch (phase) {\n      case 1:\n        listenerList = this.apollolistenMap[1][type];\n        break;\n      case 2:\n        if (this.apollolistenMap[0] && this.apollolistenMap[0][type]) {\n          listenerList = listenerList.concat(this.apollolistenMap[0][type]);\n        }\n        if (this.apollolistenMap[1] && this.apollolistenMap[1][type]) {\n          listenerList = listenerList.concat(this.apollolistenMap[1][type]);\n        }\n        break;\n      case 3:\n        listenerList = this.apollolistenMap[0][type];\n        break;\n    }\n    let toFire = [];\n    l = listenerList.length;\n    while (target && l) {\n      for (i = 0; i < l; i++) {\n        listener = listenerList[i];\n        if (!listener) {\n          break;\n        }\n        if (\n          target.tagName &&\n          [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 &&\n          target.hasAttribute(\"disabled\")\n        ) {\n          toFire = [];\n        } else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n      }\n      if (target === root) {\n        break;\n      }\n      l = listenerList.length;\n      target = target.parentElement || target.parentNode;\n      if (target instanceof HTMLDocument) {\n        break;\n      }\n    }\n    let ret;\n    for (i = 0; i < toFire.length; i++) {\n      if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n        continue;\n      }\n      returned = this.fire.apply(this, toFire[i]);\n      if (returned === false) {\n        toFire[i][0][eventIgnore] = true;\n        toFire[i][0].preventDefault();\n        ret = false;\n        break;\n      }\n    }\n    return ret;\n  };\n\n  var main_default = Apollo;\n\n  var ApolloInputBindingManager = class {\n    constructor() {\n      this.apolloElement = new main_default(document.body);\n      this.apolloElement.on(\"change\", \"[data-bind-value]\", this._evtOnValueChanged.bind(this));\n    }\n    _evtOnValueChanged(event, target) {\n      const boundElement = document.getElementById(target.getAttribute(\"data-bind-value\"));\n\n      if (boundElement) {\n        if (target.tagName === \"SELECT\") {\n          target = target.options[target.selectedIndex];\n        }\n        boundElement.innerHTML = target.hasAttribute(\"title\")\n          ? target.getAttribute(\"title\")\n          : target.value;\n      }\n    }\n  };\n\n  function triggerEvent(element, name, data = {}) {\n    //thanhvn\n    element.dispatchEvent(\n      new CustomEvent(name, {\n        bubbles: true,\n        detail: data,\n      })\n    );\n  }\n\n  function triggerNonBubblingEvent(element, name, data = {}) {\n    element.dispatchEvent(\n      new CustomEvent(name, {\n        bubbles: false,\n        detail: data,\n      })\n    );\n  }\n\n  var CustomHTMLElement = class extends HTMLElement {\n    constructor() {\n      super();\n      this._sectionReloadedStatus = false;\n      if (Shopify.designMode) {\n        this.rootApollo.on(\"shopify:section:select\", (event) => {\n          const parentSection = this.closest(\".shopify-section\");\n          if (event.target === parentSection && event.detail.load) {\n            this._sectionReloadedStatus = true;\n          }\n        });\n      }\n    }\n    get rootApollo() {\n      return (this._rootApollo = this._rootApollo || new main_default(document.documentElement));\n    }\n    get apollo() {\n      return (this._apollo = this._apollo || new main_default(this));\n    }\n    loadingBarEnable() {\n      triggerEvent(document.documentElement, \"theme:loading:start\");\n    }\n    loadingBarDisable() {\n      triggerEvent(document.documentElement, \"theme:loading:end\");\n    }\n    untilObjectVisible(\n      intersectionObserverOptions = {\n        rootMargin: \"30px 0px\",\n        threshold: 0,\n      }\n    ) {\n      const onObjectVisible = () => {\n        this.classList.add(\"ap-object-loaded\");\n        this.style.opacity = \"1\";\n      };\n      return new Promise((resolve) => {\n        if (window.IntersectionObserver) {\n          this.intersectionObserver = new IntersectionObserver((event) => {\n            if (event[0].isIntersecting) {\n              this.intersectionObserver.disconnect();\n              requestAnimationFrame(() => {\n                resolve();\n                onObjectVisible();\n              });\n            }\n          }, intersectionObserverOptions);\n          this.intersectionObserver.observe(this);\n        } else {\n          resolve();\n          onObjectVisible();\n        }\n      });\n    }\n    disconnectedCallback() {\n      var _a;\n      this.apollo.destroy();\n      this.rootApollo.destroy();\n      (_a = this.intersectionObserver) == null ? void 0 : _a.disconnect();\n      delete this._apollo;\n      delete this._rootApollo;\n    }\n  };\n\n  var apollohtmltagSelectors = [\n    \"input\",\n    \"select\",\n    \"textarea\",\n    \"a[href]\",\n    \"button\",\n    \"[tabindex]\",\n    \"audio[controls]\",\n    \"video[controls]\",\n    '[contenteditable]:not([contenteditable=\"false\"])',\n    \"details>summary:first-of-type\",\n    \"details\",\n  ];\n  var apollohtmltagSelector = /* @__PURE__ */ apollohtmltagSelectors.join(\",\");\n  var matches =\n    typeof Element === \"undefined\"\n      ? function () {}\n      : Element.prototype.matches ||\n        Element.prototype.msMatchesSelector ||\n        Element.prototype.webkitMatchesSelector;\n  var apolloHtmltag = function apolloHtmltag2(el, includeContainer, filter) {\n    var apollohtmltags = Array.prototype.slice.apply(el.querySelectorAll(apollohtmltagSelector));\n    if (includeContainer && matches.call(el, apollohtmltagSelector)) {\n      apollohtmltags.unshift(el);\n    }\n    apollohtmltags = apollohtmltags.filter(filter);\n    return apollohtmltags;\n  };\n  var apolloContentEditableStatus = function apolloContentEditableStatusFunction(node) {\n    return node.contentEditable === \"true\";\n  };\n  var indexOfTab = function indexOfTabFunction(node) {\n    var arrTabindex = parseInt(node.getAttribute(\"tabindex\"), 10);\n    if (!isNaN(arrTabindex)) {\n      return arrTabindex;\n    }\n    if (apolloContentEditableStatus(node)) {\n      return 0;\n    }\n    let status =\n      node.nodeName === \"AUDIO\" || node.nodeName === \"VIDEO\" || node.nodeName === \"DETAILS\";\n    status = status && node.getAttribute(\"tabindex\") === null;\n    if (status) {\n      return 0;\n    }\n    return node.tabIndex;\n  };\n  var sortTabOrdered = function sortTabOrderedFunction(a, b) {\n    if (a.tabIndex === b.tabIndex) {\n      return a.documentOrder - b.documentOrder;\n    } else {\n      return a.tabIndex - b.tabIndex;\n    }\n  };\n  var inputStatus = function inputStatusFunction(node) {\n    return node.tagName === \"INPUT\";\n  };\n  var hiddenInputStatus = function hiddenInputStatusFuncrion(node) {\n    return inputStatus(node) && node.type === \"hidden\";\n  };\n  var detailsWithSummaryStatus = function detailsWithSummaryStatusFunction(node) {\n    var r = node.tagName === \"DETAILS\";\n    var r2 = Array.prototype.slice.apply(node.children).some(function (child) {\n      return child.tagName === \"SUMMARY\";\n    });\n    return r && r2;\n  };\n  var radioCheckedStatus = function radioCheckedStatusFunction(nodes, form) {\n    for (var i = 0; i < nodes.length; i++) {\n      if (nodes[i].checked && nodes[i].form === form) {\n        return nodes[i];\n      }\n    }\n  };\n  var tabRadioStatus = function tabRadioStatusFunction(node) {\n    if (!node.name) {\n      return true;\n    }\n    var radioScope = node.form || node.ownerDocument;\n    var qObjectRadios = function qObjectRadiosFunction(name) {\n      let status = radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n      return status;\n    };\n    var radioSet;\n    if (\n      typeof window !== \"undefined\" &&\n      typeof window.CSS !== \"undefined\" &&\n      typeof window.CSS.escape === \"function\"\n    ) {\n      radioSet = qObjectRadios(window.CSS.escape(node.name));\n    } else {\n      try {\n        radioSet = qObjectRadios(node.name);\n      } catch (err) {\n        console.error(\"%s\", err.message);\n        return false;\n      }\n    }\n    var checked = radioCheckedStatus(radioSet, node.form);\n    return !checked || checked === node;\n  };\n  var radioStatus = function radioStatusFunction(node) {\n    return inputStatus(node) && node.type === \"radio\";\n  };\n  var nonRadioTabbableStatus = function nonRadioTabbableStatusFunction(node) {\n    return radioStatus(node) && !tabRadioStatus(node);\n  };\n  var hiddenStatus = function hiddenStatusFunction(node, displayCheck) {\n    if (getComputedStyle(node).visibility === \"hidden\") {\n      return true;\n    }\n    var isDirectSummary = matches.call(node, \"details>summary:first-of-type\");\n    if (isDirectSummary) {\n      var nodeUnderDetails = node.parentElement;\n    } else {\n      var nodeUnderDetails = node;\n    }\n\n    if (matches.call(nodeUnderDetails, \"details:not([open]) *\")) {\n      return true;\n    }\n    if (!displayCheck || displayCheck === \"full\") {\n      while (node) {\n        if (getComputedStyle(node).display === \"none\") {\n          return true;\n        }\n        node = node.parentElement;\n      }\n    } else if (displayCheck === \"non-zero-area\") {\n      var _node$getBoundingClie = node.getBoundingClientRect();\n      var width = _node$getBoundingClie.width;\n      var height = _node$getBoundingClie.height;\n      return width === 0 && height === 0;\n    }\n    return false;\n  };\n  var fromFieldDisabledStatus = function fromFieldDisabledStatusFunction(node) {\n    if (\n      inputStatus(node) ||\n      node.tagName === \"SELECT\" ||\n      node.tagName === \"TEXTAREA\" ||\n      node.tagName === \"BUTTON\"\n    ) {\n      var parentNode = node.parentElement;\n      while (parentNode) {\n        if (parentNode.tagName === \"FIELDSET\" && parentNode.disabled) {\n          for (var i = 0; i < parentNode.children.length; i++) {\n            var child = parentNode.children.item(i);\n            if (child.tagName === \"LEGEND\") {\n              if (child.contains(node)) {\n                return false;\n              }\n              return true;\n            }\n          }\n          return true;\n        }\n        parentNode = parentNode.parentElement;\n      }\n    }\n    return false;\n  };\n  var nodeFocusMatchingSelectoreStatus = function nodeFocusMatchingSelectoreStatusFunction(\n    options,\n    node\n  ) {\n    if (\n      node.disabled ||\n      hiddenInputStatus(node) ||\n      hiddenStatus(node, options.displayCheck) ||\n      detailsWithSummaryStatus(node) ||\n      fromFieldDisabledStatus(node)\n    ) {\n      return false;\n    }\n    return true;\n  };\n  var nodeSelectorTabbableMatchingStatus = function nodeSelectorTabbableMatchingStatusFunction(\n    options,\n    node\n  ) {\n    if (\n      !nodeFocusMatchingSelectoreStatus(options, node) ||\n      nonRadioTabbableStatus(node) ||\n      indexOfTab(node) < 0\n    ) {\n      return false;\n    }\n    return true;\n  };\n  var objTabbable = function objTabbableFunction(el, options) {\n    options = options || {};\n    var regularTabbables = [];\n    var orderedTabbables = [];\n    var apollohtmltags = apolloHtmltag(\n      el,\n      options.includeContainer,\n      nodeSelectorTabbableMatchingStatus.bind(null, options)\n    );\n    apollohtmltags.forEach(function (apollohtmltag, i) {\n      var apollohtmltagTabindex = indexOfTab(apollohtmltag);\n      if (apollohtmltagTabindex === 0) {\n        regularTabbables.push(apollohtmltag);\n      } else {\n        orderedTabbables.push({\n          documentOrder: i,\n          tabIndex: apollohtmltagTabindex,\n          node: apollohtmltag,\n        });\n      }\n    });\n    var objTabbableNodes = orderedTabbables\n      .sort(sortTabOrdered)\n      .map(function (a) {\n        return a.node;\n      })\n      .concat(regularTabbables);\n    return objTabbableNodes;\n  };\n  var focusableCandidateSelector = /* @__PURE__ */ apollohtmltagSelectors\n    .concat(\"iframe\")\n    .join(\",\");\n  var focusableStatus = function focusableStatusFunction(node, options) {\n    options = options || {};\n    if (!node) {\n      throw new Error(\"No node provided\");\n    }\n    if (matches.call(node, focusableCandidateSelector) === false) {\n      return false;\n    }\n    return nodeFocusMatchingSelectoreStatus(options, node);\n  };\n\n  function apolloPrivateKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      if (enumerableOnly) {\n        symbols = symbols.filter(function (sym) {\n          return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        });\n      }\n      keys.push.apply(keys, symbols);\n    }\n    return keys;\n  }\n  var apolloTrapsActiveFocus = (function () {\n    var trapQueue = [];\n    return {\n      apolloTrapClose: function apolloTrapClose(trap) {\n        var index = trapQueue.indexOf(trap);\n        if (index !== -1) {\n          trapQueue.splice(index, 1);\n        }\n        if (trapQueue.length > 0) {\n          trapQueue[trapQueue.length - 1].unpause();\n        }\n      },\n      apolloTrapOpen: function apolloTrapOpen(trap) {\n        if (trapQueue.length > 0) {\n          var active = trapQueue[trapQueue.length - 1];\n          if (active !== trap) {\n            active.pause();\n          }\n        }\n        var index = trapQueue.indexOf(trap);\n        if (index === -1) {\n          trapQueue.push(trap);\n        } else {\n          trapQueue.splice(index, 1);\n          trapQueue.push(trap);\n        }\n      },\n    };\n  })();\n\n  function _objectAdvandFunction(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      if (arguments[i] != null) {\n        var source = arguments[i];\n      } else {\n        var source = {};\n      }\n      if (i % 2) {\n        apolloPrivateKeys(Object(source), true).forEach(function (key) {\n          _defineObjectProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        apolloPrivateKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n    return target;\n  }\n\n  function _defineObjectProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value,\n        enumerable: true,\n        configurable: true,\n        writable: true,\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  }\n\n  var inputSelectableStatus = function inputSelectableStatusFunction(node) {\n    return (\n      node.tagName && node.tagName.toLowerCase() === \"input\" && typeof node.select === \"function\"\n    );\n  };\n  var eventEscapeStatus = function eventEscapeStatusFunction(e) {\n    return e.key === \"Escape\" || e.key === \"Esc\" || e.keyCode === 27;\n  };\n  var eventTabStatus = function eventTabStatusFunction(e) {\n    return e.key === \"Tab\" || e.keyCode === 9;\n  };\n  var delay = function delayFunction(fn) {\n    return setTimeout(fn, 0);\n  };\n  var findIndex = function findIndexFunction(arr, fn) {\n    var idx = -1;\n    arr.every(function (value, i) {\n      if (fn(value)) {\n        idx = i;\n        return false;\n      }\n      return true;\n    });\n    return idx;\n  };\n  var checkValueOHandler = function checkValueOHandlerFunction(value) {\n    for (\n      var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n      _key < _len;\n      _key++\n    ) {\n      params[_key - 1] = arguments[_key];\n    }\n    if (typeof value === \"function\") {\n      return value.apply(void 0, params);\n    } else {\n      return value;\n    }\n  };\n  var createObjectFocusTrap = function createObjectFocusTrapFunction(elements, userOptions) {\n    var doc = document;\n    var config = _objectAdvandFunction(\n      {\n        returnFocusOnDeactivate: true,\n        escapeDeactivates: true,\n        delayInitialFocus: true,\n      },\n      userOptions\n    );\n    var state = {\n      containers: [],\n      objTabbableGroups: [],\n      nodeFocusedBeforeActivation: null,\n      mostRecentlyFocusedNode: null,\n      active: false,\n      paused: false,\n      delayInitialFocusTimer: void 0,\n    };\n    var trap;\n    var getObjectOption = function getObjectOptionFunction(\n      configOverrideOptions,\n      optionName,\n      configOptionName\n    ) {\n      if (configOverrideOptions && configOverrideOptions[optionName] !== void 0) {\n        return configOverrideOptions[optionName];\n      } else {\n        return config[configOptionName || optionName];\n      }\n    };\n    var containersObjectContain = function containersObjectContainFunction(element) {\n      return state.containers.some(function (container) {\n        return container.contains(element);\n      });\n    };\n    var objectNodeForOptionContent = function objectNodeForOptionContentFunction(optionName) {\n      var optionValue = config[optionName];\n      if (!optionValue) {\n        return null;\n      }\n      var node = optionValue;\n      if (typeof optionValue === \"string\") {\n        node = doc.querySelector(optionValue);\n        if (!node) {\n          throw new Error(\"`\".concat(optionName, \"`\"));\n        }\n      }\n      if (typeof optionValue === \"function\") {\n        node = optionValue();\n        if (!node) {\n          throw new Error(\"`\".concat(optionName, \"`\"));\n        }\n      }\n      return node;\n    };\n    var objectInitialFocusNodeContent = function objectInitialFocusNodeContentFunction() {\n      var node;\n      if (getObjectOption({}, \"initialFocus\") === false) {\n        return false;\n      }\n      if (objectNodeForOptionContent(\"initialFocus\") !== null) {\n        node = objectNodeForOptionContent(\"initialFocus\");\n      } else if (containersObjectContain(doc.activeElement)) {\n        node = doc.activeElement;\n      } else {\n        var firstObjectGroupTabbable = state.objTabbableGroups[0];\n        var firstTabbableNode =\n          firstObjectGroupTabbable && firstObjectGroupTabbable.firstTabbableNode;\n        node = firstTabbableNode || objectNodeForOptionContent(\"fallbackFocus\");\n      }\n      if (!node) {\n        throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n      }\n      return node;\n    };\n    var updateObjectTabbableNodes = function updateObjectTabbableNodesFunction() {\n      state.objTabbableGroups = state.containers\n        .map(function (container) {\n          var objTabbableNodes = objTabbable(container);\n          if (objTabbableNodes.length > 0) {\n            return {\n              container,\n              firstTabbableNode: objTabbableNodes[0],\n              lastTabbableNode: objTabbableNodes[objTabbableNodes.length - 1],\n            };\n          }\n          return void 0;\n        })\n        .filter(function (group) {\n          return !!group;\n        });\n      if (state.objTabbableGroups.length <= 0 && !objectNodeForOptionContent(\"fallbackFocus\")) {\n        throw new Error(\n          \"Your focus-trap must have at least one container with at least one objTabbable node in it at all times\"\n        );\n      }\n    };\n    var elementTryFocus = function elementTryFocusFunction(node) {\n      if (node === false) {\n        return;\n      }\n      if (node === doc.activeElement) {\n        return;\n      }\n      if (!node || !node.focus) {\n        elementTryFocusFunction(objectInitialFocusNodeContent());\n        return;\n      }\n      node.focus({\n        preventScroll: !!config.preventScroll,\n      });\n      state.mostRecentlyFocusedNode = node;\n      if (inputSelectableStatus(node)) {\n        node.select();\n      }\n    };\n    var contentReturnFocusNode = function contentReturnFocusNodeFunction(previousActiveElement) {\n      var node = objectNodeForOptionContent(\"setReturnFocus\");\n      return node ? node : previousActiveElement;\n    };\n    var checkObjectPointerDown = function checkObjectPointerDownFunctions(e) {\n      if (containersObjectContain(e.target)) {\n        return;\n      }\n      if (checkValueOHandler(config.clickOutsideDeactivates, e)) {\n        trap.deactivate({\n          returnFocus: config.returnFocusOnDeactivate && !focusableStatus(e.target),\n        });\n        return;\n      }\n      if (checkValueOHandler(config.allowOutsideClick, e)) {\n        return;\n      }\n      e.preventDefault();\n    };\n    var objectFocusInCheck = function objectFocusInCheckFunction(e) {\n      var targetContained = containersObjectContain(e.target);\n      if (targetContained || e.target instanceof Document) {\n        if (targetContained) {\n          state.mostRecentlyFocusedNode = e.target;\n        }\n      } else {\n        e.stopImmediatePropagation();\n        elementTryFocus(state.mostRecentlyFocusedNode || objectInitialFocusNodeContent());\n      }\n    };\n    var objectTabStatus = function objectTabStatusFunction(e) {\n      updateObjectTabbableNodes();\n      var destinationNode = null;\n      if (state.objTabbableGroups.length > 0) {\n        var containerIndex = findIndex(state.objTabbableGroups, function (_ref) {\n          var container = _ref.container;\n          return container.contains(e.target);\n        });\n        if (containerIndex < 0) {\n          if (e.shiftKey) {\n            destinationNode =\n              state.objTabbableGroups[state.objTabbableGroups.length - 1].lastTabbableNode;\n          } else {\n            destinationNode = state.objTabbableGroups[0].firstTabbableNode;\n          }\n        } else if (e.shiftKey) {\n          var startOfGroupIndex = findIndex(state.objTabbableGroups, function (_ref2) {\n            var firstTabbableNode = _ref2.firstTabbableNode;\n            return e.target === firstTabbableNode;\n          });\n          if (\n            startOfGroupIndex < 0 &&\n            state.objTabbableGroups[containerIndex].container === e.target\n          ) {\n            startOfGroupIndex = containerIndex;\n          }\n          if (startOfGroupIndex >= 0) {\n            if (startOfGroupIndex === 0) {\n              var destinationGroupIndex = state.objTabbableGroups.length - 1;\n            } else {\n              var destinationGroupIndex = startOfGroupIndex - 1;\n            }\n            var destinationGroup = state.objTabbableGroups[destinationGroupIndex];\n            destinationNode = destinationGroup.lastTabbableNode;\n          }\n        } else {\n          var lastOfGroupIndex = findIndex(state.objTabbableGroups, function (_ref3) {\n            var lastTabbableNode = _ref3.lastTabbableNode;\n            return e.target === lastTabbableNode;\n          });\n          if (\n            lastOfGroupIndex < 0 &&\n            state.objTabbableGroups[containerIndex].container === e.target\n          ) {\n            lastOfGroupIndex = containerIndex;\n          }\n          if (lastOfGroupIndex >= 0) {\n            if (lastOfGroupIndex === state.objTabbableGroups.length - 1) {\n              var _destinationGroupIndex = 0;\n            } else {\n              var _destinationGroupIndex = lastOfGroupIndex + 1;\n            }\n            var _destinationGroup = state.objTabbableGroups[_destinationGroupIndex];\n            destinationNode = _destinationGroup.firstTabbableNode;\n          }\n        }\n      } else {\n        destinationNode = objectNodeForOptionContent(\"fallbackFocus\");\n      }\n      if (destinationNode) {\n        e.preventDefault();\n        elementTryFocus(destinationNode);\n      }\n    };\n    var checkKey = function checkKey2(e) {\n      if (eventEscapeStatus(e) && checkValueOHandler(config.escapeDeactivates) !== false) {\n        e.preventDefault();\n        trap.deactivate();\n        return;\n      }\n      if (eventTabStatus(e)) {\n        objectTabStatus(e);\n        return;\n      }\n    };\n    var checkClick = function checkClick2(e) {\n      if (checkValueOHandler(config.clickOutsideDeactivates, e)) {\n        return;\n      }\n      if (containersObjectContain(e.target)) {\n        return;\n      }\n      if (checkValueOHandler(config.allowOutsideClick, e)) {\n        return;\n      }\n      e.preventDefault();\n      e.stopImmediatePropagation();\n    };\n    var addListeners = function addListeners2() {\n      if (!state.active) {\n        return;\n      }\n      apolloTrapsActiveFocus.apolloTrapOpen(trap);\n      state.delayInitialFocusTimer = config.delayInitialFocus\n        ? delay(function () {\n            elementTryFocus(objectInitialFocusNodeContent());\n          })\n        : elementTryFocus(objectInitialFocusNodeContent());\n      doc.addEventListener(\"focusin\", objectFocusInCheck, true);\n      doc.addEventListener(\"mousedown\", checkObjectPointerDown, {\n        capture: true,\n        passive: false,\n      });\n      doc.addEventListener(\"touchstart\", checkObjectPointerDown, {\n        capture: true,\n        passive: false,\n      });\n      doc.addEventListener(\"click\", checkClick, {\n        capture: true,\n        passive: false,\n      });\n      doc.addEventListener(\"keydown\", checkKey, {\n        capture: true,\n        passive: false,\n      });\n      return trap;\n    };\n    var removeListeners = function removeListeners2() {\n      if (!state.active) {\n        return;\n      }\n      doc.removeEventListener(\"focusin\", objectFocusInCheck, true);\n      doc.removeEventListener(\"mousedown\", checkObjectPointerDown, true);\n      doc.removeEventListener(\"touchstart\", checkObjectPointerDown, true);\n      doc.removeEventListener(\"click\", checkClick, true);\n      doc.removeEventListener(\"keydown\", checkKey, true);\n      return trap;\n    };\n    trap = {\n      activate: function activate(activateOptions) {\n        if (state.active) {\n          return this;\n        }\n        var onActivate = getObjectOption(activateOptions, \"onActivate\");\n        var onPostActivate = getObjectOption(activateOptions, \"onPostActivate\");\n        var checkCanFocusTrap = getObjectOption(activateOptions, \"checkCanFocusTrap\");\n        if (!checkCanFocusTrap) {\n          updateObjectTabbableNodes();\n        }\n        state.active = true;\n        state.paused = false;\n        state.nodeFocusedBeforeActivation = doc.activeElement;\n        if (onActivate) {\n          onActivate();\n        }\n        var finishActivation = function finishActivation2() {\n          if (checkCanFocusTrap) {\n            updateObjectTabbableNodes();\n          }\n          addListeners();\n          if (onPostActivate) {\n            onPostActivate();\n          }\n        };\n        if (checkCanFocusTrap) {\n          checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n          return this;\n        }\n        finishActivation();\n        return this;\n      },\n      deactivate: function deactivate(deactivateOptions) {\n        if (!state.active) {\n          return this;\n        }\n        clearTimeout(state.delayInitialFocusTimer);\n        state.delayInitialFocusTimer = void 0;\n        removeListeners();\n        state.active = false;\n        state.paused = false;\n        apolloTrapsActiveFocus.apolloTrapClose(trap);\n        var onDeactivate = getObjectOption(deactivateOptions, \"onDeactivate\");\n        var onPostDeactivate = getObjectOption(deactivateOptions, \"onPostDeactivate\");\n        var checkCanReturnFocus = getObjectOption(deactivateOptions, \"checkCanReturnFocus\");\n        if (onDeactivate) {\n          onDeactivate();\n        }\n        var returnFocus = getObjectOption(\n          deactivateOptions,\n          \"returnFocus\",\n          \"returnFocusOnDeactivate\"\n        );\n        var finishDeactivation = function finishDeactivation2() {\n          delay(function () {\n            if (returnFocus) {\n              elementTryFocus(contentReturnFocusNode(state.nodeFocusedBeforeActivation));\n            }\n            if (onPostDeactivate) {\n              onPostDeactivate();\n            }\n          });\n        };\n        if (returnFocus && checkCanReturnFocus) {\n          checkCanReturnFocus(contentReturnFocusNode(state.nodeFocusedBeforeActivation)).then(\n            finishDeactivation,\n            finishDeactivation\n          );\n          return this;\n        }\n        finishDeactivation();\n        return this;\n      },\n      pause: function pause() {\n        if (state.paused || !state.active) {\n          return this;\n        }\n        state.paused = true;\n        removeListeners();\n        return this;\n      },\n      unpause: function unpause() {\n        if (!state.paused || !state.active) {\n          return this;\n        }\n        state.paused = false;\n        updateObjectTabbableNodes();\n        addListeners();\n        return this;\n      },\n      updateContainerElements: function updateContainerElements(containerElements) {\n        var elementsAsArray = [].concat(containerElements).filter(Boolean);\n        state.containers = elementsAsArray.map(function (element) {\n          return typeof element === \"string\" ? doc.querySelector(element) : element;\n        });\n        if (state.active) {\n          updateObjectTabbableNodes();\n        }\n        return this;\n      },\n    };\n    trap.updateContainerElements(elements);\n    return trap;\n  };\n\n  function apolloShopifyEventFilter(event, domElement, callback) {\n    let executeCallback = false;\n    if (event.type.includes(\"shopify:section\")) {\n      if (\n        domElement.hasAttribute(\"section\") &&\n        domElement.getAttribute(\"section\") === event.detail.sectionId\n      ) {\n        executeCallback = true;\n      }\n    } else if (event.type.includes(\"shopify:block\") && event.target === domElement) {\n      executeCallback = true;\n    }\n    if (executeCallback) {\n      callback(event);\n    }\n  }\n\n  class LocalizationForm extends HTMLElement {\n    constructor() {\n      super();\n      this.elements = {\n        input: this.querySelector('input[name=\"language_code\"], input[name=\"country_code\"]'),\n        button: this.querySelector(\"button\"),\n        panel: this.querySelector(\"ul\"),\n      };\n      this.elements.button.addEventListener(\"click\", this.openSelector.bind(this));\n      this.elements.button.addEventListener(\"focusout\", this.closeSelector.bind(this));\n      this.addEventListener(\"keyup\", this.onContainerKeyUp.bind(this));\n\n      this.querySelectorAll(\"a\").forEach((item) =>\n        item.addEventListener(\"click\", this.onItemClick.bind(this))\n      );\n    }\n\n    hidePanel() {\n      this.elements.button.setAttribute(\"aria-expanded\", \"false\");\n      this.elements.panel.setAttribute(\"hidden\", true);\n    }\n\n    onContainerKeyUp(event) {\n      if (event.code.toUpperCase() !== \"ESCAPE\") return;\n\n      this.hidePanel();\n      this.elements.button.focus();\n    }\n\n    onItemClick(event) {\n      event.preventDefault();\n      const form = this.querySelector(\"form\");\n      this.elements.input.value = event.currentTarget.dataset.value;\n      if (form) form.submit();\n    }\n\n    openSelector() {\n      this.elements.button.focus();\n      this.elements.panel.toggleAttribute(\"hidden\");\n      this.elements.button.setAttribute(\n        \"aria-expanded\",\n        (this.elements.button.getAttribute(\"aria-expanded\") === \"false\").toString()\n      );\n    }\n\n    closeSelector(event) {\n      const shouldClose = event.relatedTarget && event.relatedTarget.nodeName === \"BUTTON\";\n      if (event.relatedTarget === null || shouldClose) {\n        this.hidePanel();\n      }\n    }\n  }\n\n  customElements.define(\"localization-form\", LocalizationForm);\n\n  var ApolloOpenableElement = class extends CustomHTMLElement {\n    static get observedAttributes() {\n      return [\"open\"];\n    }\n    constructor() {\n      super();\n      if (Shopify.designMode) {\n        this.rootApollo.on(\"shopify:section:select\", (event) =>\n          apolloShopifyEventFilter(event, this, () => (this.open = true))\n        );\n        this.rootApollo.on(\"shopify:section:deselect\", (event) =>\n          apolloShopifyEventFilter(event, this, () => (this.open = false))\n        );\n      }\n      if (this.hasAttribute(\"ap-appendbody\")) {\n        const existingNode = document.getElementById(this.id);\n        this.removeAttribute(\"ap-appendbody\");\n        if (existingNode && existingNode !== this) {\n          existingNode.replaceWith(this.cloneNode(true));\n          this.remove();\n        } else {\n          document.body.appendChild(this);\n        }\n      }\n    }\n    connectedCallback() {\n      this.apollo.on(\"click\", \".openable__overlay\", () => (this.open = false));\n      this.apollo.on(\"click\", '[data-action=\"close\"]', (event) => {\n        event.stopPropagation();\n        this.open = false;\n      });\n    }\n    get requiresLoading() {\n      return this.hasAttribute(\"href\");\n    }\n    get open() {\n      return this.hasAttribute(\"open\");\n    }\n    set open(value) {\n      if (value) {\n        (async () => {\n          await this._load();\n          this.clientWidth;\n          this.setAttribute(\"open\", \"\");\n        })();\n      } else {\n        this.removeAttribute(\"open\");\n      }\n    }\n    get shouldTrapFocus() {\n      return true;\n    }\n    get returnFocusOnDeactivate() {\n      return !this.hasAttribute(\"return-focus\") || this.getAttribute(\"return-focus\") === \"true\";\n    }\n    get focusTrap() {\n      return (this._focusTrap =\n        this._focusTrap ||\n        createObjectFocusTrap(this, {\n          fallbackFocus: this,\n          initialFocus: this.getAttribute(\"initial-focus-selector\"),\n          clickOutsideDeactivates: (event) =>\n            !(\n              event.target.hasAttribute(\"ap-controlsaria\") &&\n              event.target.getAttribute(\"ap-controlsaria\") === this.id\n            ),\n          allowOutsideClick: (event) =>\n            event.target.hasAttribute(\"ap-controlsaria\") &&\n            event.target.getAttribute(\"ap-controlsaria\") === this.id,\n          returnFocusOnDeactivate: this.returnFocusOnDeactivate,\n          onDeactivate: () => (this.open = false),\n          preventScroll: true,\n        }));\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      switch (name) {\n        case \"open\":\n          if (oldval === null && newval === \"\") {\n            if (this.shouldTrapFocus) {\n              setTimeout(() => this.focusTrap.activate(), 150);\n            }\n            triggerEvent(this, \"ap-elementopen:open\");\n          } else if (newval === null) {\n            if (this.shouldTrapFocus) {\n              this.focusTrap.deactivate();\n            }\n            triggerEvent(this, \"ap-elementopen:close\");\n          }\n      }\n    }\n    async _load() {\n      if (!this.requiresLoading) {\n        return;\n      }\n      triggerNonBubblingEvent(this, \"ap-elementopen:load:start\");\n      const responseContent = await fetch(this.getAttribute(\"href\"));\n      const objectElement = document.createElement(\"div\");\n      objectElement.innerHTML = await responseContent.text();\n      this.innerHTML = objectElement.querySelector(this.tagName.toLowerCase()).innerHTML;\n      this.removeAttribute(\"href\");\n      triggerNonBubblingEvent(this, \"ap-elementopen:load:end\");\n    }\n  };\n  window.customElements.define(\"ap-elementopen\", ApolloOpenableElement);\n\n  window.addEventListener(\"pageshow\", (event) => {\n    if (event.persisted) {\n      document.querySelectorAll(\"[open]\").forEach((el) => {\n        if (el instanceof ApolloOpenableElement) {\n          el.open = false;\n        }\n      });\n    }\n  });\n\n  var ApolloContentCollapsible = class extends ApolloOpenableElement {\n    constructor() {\n      super();\n      this.ignoreNextTransition = this.open;\n      this.addEventListener(\"shopify:block:select\", () => (this.open = true));\n      this.addEventListener(\"shopify:block:deselect\", () => (this.open = false));\n    }\n    get animateItems() {\n      return this.hasAttribute(\"animate-items\");\n    }\n    attributeChangedCallback(name) {\n      if (this.ignoreNextTransition) {\n        return (this.ignoreNextTransition = false);\n      }\n      switch (name) {\n        case \"open\":\n          this.style.overflow = \"hidden\";\n          const keyframes = {\n            height: [\"0px\", `${this.scrollHeight}px`],\n            visibility: [\"hidden\", \"visible\"],\n          };\n          if (this.animateItems) {\n            keyframes[\"opacity\"] = this.open ? [0, 0] : [0, 1];\n          }\n          this.animate(keyframes, {\n            duration: 500,\n            direction: this.open ? \"normal\" : \"reverse\",\n            easing: \"cubic-bezier(0.75, 0, 0.175, 1)\",\n          }).onfinish = () => {\n            this.style.overflow = this.open ? \"visible\" : \"hidden\";\n          };\n          if (this.animateItems && this.open) {\n            this.animate(\n              {\n                opacity: [0, 1],\n                transform: [\"translateY(10px)\", \"translateY(0)\"],\n              },\n              {\n                duration: 250,\n                delay: 250,\n                easing: \"cubic-bezier(0.75, 0, 0.175, 1)\",\n              }\n            );\n          }\n          let aptriger = \"\";\n          if (this.open) {\n            aptriger = \"ap-elementopen:open\";\n          } else {\n            aptriger = \"ap-elementopen:close\";\n          }\n          triggerEvent(this, aptriger);\n      }\n    }\n  };\n  window.customElements.define(\"ap-contentcollapsible\", ApolloContentCollapsible);\n\n  var ApolloContentCollapsible2 = class extends ApolloOpenableElement {\n    constructor() {\n      super();\n      this.ignoreNextTransition = this.open;\n      this.addEventListener(\"shopify:block:select\", () => (this.open = true));\n      this.addEventListener(\"shopify:block:deselect\", () => (this.open = false));\n    }\n    get animateItems() {\n      return this.hasAttribute(\"animate-items\");\n    }\n    attributeChangedCallback(name) {\n      if (this.ignoreNextTransition) {\n        return (this.ignoreNextTransition = false);\n      }\n      switch (name) {\n        case \"open\":\n          this.style.overflow = \"hidden\";\n          const keyframes = {\n            height: [\"0px\", `${this.scrollHeight}px`],\n            visibility: [\"hidden\", \"visible\"],\n          };\n          if (this.animateItems) {\n            keyframes[\"opacity\"] = this.open ? [0, 0] : [0, 1];\n          }\n          this.animate(keyframes, {\n            duration: 500,\n            direction: this.open ? \"normal\" : \"reverse\",\n            easing: \"cubic-bezier(0.75, 0, 0.175, 1)\",\n          }).onfinish = () => {\n            this.style.overflow = this.open ? \"visible\" : \"hidden\";\n          };\n          if (this.animateItems && this.open) {\n            this.animate(\n              {\n                opacity: [0, 1],\n                transform: [\"translateY(10px)\", \"translateY(0)\"],\n              },\n              {\n                duration: 250,\n                delay: 250,\n                easing: \"cubic-bezier(0.75, 0, 0.175, 1)\",\n              }\n            );\n          }\n          let aptriger = \"\";\n          if (this.open) {\n            aptriger = \"ap-elementopen:open\";\n          } else {\n            aptriger = \"ap-elementopen:close\";\n          }\n          triggerEvent(this, aptriger);\n      }\n    }\n  };\n  window.customElements.define(\"ap-contentcollapsible-2\", ApolloContentCollapsible2);\n\n  var apolloButtonConfirm = class extends HTMLButtonElement {\n    connectedCallback() {\n      this.addEventListener(\"click\", (event) => {\n        if (\n          !window.confirm(this.getAttribute(\"data-message\") || \"Are you sure you wish to do this?\")\n        ) {\n          event.preventDefault();\n        }\n      });\n    }\n  };\n  window.customElements.define(\"confirm-button\", apolloButtonConfirm, {\n    extends: \"button\",\n  });\n\n  var apolloLoaderButtonMixin = {\n    _buttonPrepare() {\n      this.originalContent = this.innerHTML;\n      this._transitionStartPromise = null;\n      this.innerHTML = `\n      <span class=\"ap-text-loaderbutton\">${this.innerHTML}</span>\n      <span class=\"ap-loader-loaderbutton\" hidden>\n        <div class=\"spinner\">\n          <svg focusable=\"false\" width=\"25\" height=\"25\" class=\"icon icon--spinner\" viewBox=\"25 25 50 50\">\n            <circle cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n          </svg>\n        </div>\n      </span>\n    `;\n      this.spinnerElement = this.lastElementChild;\n      this.textElement = this.firstElementChild;\n      window.addEventListener(\"pagehide\", () => this.removeAttribute(\"ap-ariabusy\"));\n    },\n    _transitionStart() {\n      const animationtext = this.textElement.animate(\n        {\n          opacity: [1, 0],\n          transform: [\"translateY(0)\", \"translateY(-10px)\"],\n        },\n        {\n          duration: 75,\n          easing: \"ease\",\n          fill: \"forwards\",\n        }\n      );\n      this.spinnerElement.hidden = false;\n      const animationspinner = this.spinnerElement.animate(\n        {\n          opacity: [0, 1],\n          transform: [\"translate(-50%, 0%)\", \"translate(-50%, -50%)\"],\n        },\n        {\n          duration: 75,\n          delay: 75,\n          easing: \"ease\",\n          fill: \"forwards\",\n        }\n      );\n      this._transitionStartPromise = Promise.all([\n        new Promise((resolve) => (animationtext.onfinish = () => resolve())),\n        new Promise((resolve) => (animationspinner.onfinish = () => resolve())),\n      ]);\n    },\n    async _transitionEnd() {\n      if (!this._transitionStartPromise) {\n        return;\n      }\n      await this._transitionStartPromise;\n      this.spinnerElement.animate(\n        {\n          opacity: [1, 0],\n          transform: [\"translate(-50%, -50%)\", \"translate(-50%, -100%)\"],\n        },\n        {\n          duration: 75,\n          delay: 100,\n          easing: \"ease\",\n          fill: \"forwards\",\n        }\n      ).onfinish = () => (this.spinnerElement.hidden = true);\n      this.textElement.animate(\n        {\n          opacity: [0, 1],\n          transform: [\"translateY(10px)\", \"translateY(0)\"],\n        },\n        {\n          duration: 75,\n          delay: 175,\n          easing: \"ease\",\n          fill: \"forwards\",\n        }\n      );\n      this._transitionStartPromise = null;\n    },\n  };\n\n  var apolloLoaderButton = class extends HTMLButtonElement {\n    static get observedAttributes() {\n      return [\"ap-ariabusy\"];\n    }\n    constructor() {\n      super();\n      this.addEventListener(\"click\", (event) => {\n        if (\n          this.type === \"submit\" &&\n          this.form &&\n          this.form.checkValidity() &&\n          !this.form.hasAttribute(\"is\")\n        ) {\n          if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n            event.preventDefault();\n            this.setAttribute(\"ap-ariabusy\", \"true\");\n            setTimeout(() => this.form.submit(), 250);\n          } else {\n            this.setAttribute(\"ap-ariabusy\", \"true\");\n          }\n        }\n      });\n    }\n    connectedCallback() {\n      this._buttonPrepare();\n      if (document.getElementById(\"agree_terms_conditions\")) {\n        document\n          .getElementById(\"agree_terms_conditions\")\n          .addEventListener(\"change\", function (event) {\n            //document.getElementById('form_cart').submit();\n            if (document.getElementById(\"agree_terms_conditions\").checked) {\n              document.getElementById(\"bt_checkout\").removeAttribute(\"disabled\");\n            } else {\n              document.getElementById(\"bt_checkout\").setAttribute(\"disabled\", \"disabled\");\n            }\n          });\n      }\n    }\n    disconnectedCallback() {\n      this.innerHTML = this.originalContent;\n    }\n    attributeChangedCallback(property, oldval, newval) {\n      if (property === \"ap-ariabusy\") {\n        if (newval === \"true\") {\n          this._transitionStart();\n        } else {\n          this._transitionEnd();\n        }\n      }\n    }\n  };\n  Object.assign(apolloLoaderButton.prototype, apolloLoaderButtonMixin);\n  window.customElements.define(\"loader-button\", apolloLoaderButton, {\n    extends: \"button\",\n  });\n\n  var ApPagePagination = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (this.hasAttribute(\"ajax\")) {\n        this.apollo.on(\"click\", \"a\", this._onLinkClicked.bind(this));\n      }\n    }\n    _onLinkClicked(event, target) {\n      event.preventDefault();\n      const url = new URL(window.location.href);\n      url.searchParams.set(\"page\", target.getAttribute(\"data-page\"));\n      triggerEvent(this, \"pagination:page-changed\", {\n        url: url.toString(),\n      });\n    }\n  };\n  window.customElements.define(\"ap-pagepagination\", ApPagePagination);\n\n  var ApToggleButton = class extends HTMLButtonElement {\n    static get observedAttributes() {\n      return [\"ap-expanded-aria\", \"ap-ariabusy\"];\n    }\n    constructor() {\n      super();\n      if (this.hasAttribute(\"loader\")) {\n        this._buttonPrepare();\n      }\n      this.addEventListener(\"click\", this._onButtonClick.bind(this));\n      this.rootApollo = new main_default(document.documentElement);\n    }\n    _onButtonClick() {\n      this.expandedStatus = !this.expandedStatus;\n    }\n    connectedCallback() {\n      document.addEventListener(\"ap-elementopen:close\", (event) => {\n        if (this.objectElementControlled === event.target) {\n          this.expandedStatus = false;\n          event.stopPropagation();\n        }\n      });\n      document.addEventListener(\"ap-elementopen:open\", (event) => {\n        if (this.objectElementControlled === event.target) {\n          this.expandedStatus = true;\n          event.stopPropagation();\n        }\n      });\n      this.rootApollo.on(\n        \"ap-elementopen:load:start\",\n        `#${this.getAttribute(\"ap-controlsaria\")}`,\n        () => {\n          if (this.classList.contains(\"button\")) {\n            this.setAttribute(\"ap-ariabusy\", \"true\");\n          } else if (this.offsetParent !== null) {\n            triggerEvent(document.documentElement, \"theme:loading:start\");\n          }\n        },\n        true\n      );\n      this.rootApollo.on(\n        \"ap-elementopen:load:end\",\n        `#${this.getAttribute(\"ap-controlsaria\")}`,\n        () => {\n          if (this.classList.contains(\"button\")) {\n            this.removeAttribute(\"ap-ariabusy\");\n          } else if (this.offsetParent !== null) {\n            triggerEvent(document.documentElement, \"theme:loading:end\");\n          }\n        },\n        true\n      );\n    }\n    disconnectedCallback() {\n      this.rootApollo.destroy();\n    }\n    get expandedStatus() {\n      return this.getAttribute(\"ap-expanded-aria\") === \"true\";\n    }\n    set expandedStatus(value) {\n      let val = \"false\";\n      if (value) {\n        val = \"true\";\n      }\n      this.setAttribute(\"ap-expanded-aria\", val);\n    }\n    get objectElementControlled() {\n      return document.getElementById(this.getAttribute(\"ap-controlsaria\"));\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      switch (name) {\n        case \"ap-expanded-aria\":\n          if (oldval === \"false\" && newval === \"true\") {\n            this.objectElementControlled.open = true;\n          } else if (oldval === \"true\" && newval === \"false\") {\n            this.objectElementControlled.open = false;\n          }\n          break;\n        case \"ap-ariabusy\":\n          if (this.hasAttribute(\"loader\")) {\n            if (newval === \"true\") {\n              this._transitionStart();\n            } else {\n              this._transitionEnd();\n            }\n          }\n          break;\n      }\n    }\n  };\n  Object.assign(ApToggleButton.prototype, apolloLoaderButtonMixin);\n  window.customElements.define(\"toggle-button\", ApToggleButton, {\n    extends: \"button\",\n  });\n\n  var apToggleLink = class extends HTMLAnchorElement {\n    static get observedAttributes() {\n      return [\"ap-expanded-aria\"];\n    }\n    constructor() {\n      super();\n      this.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n        this.expandedStatus = !this.expandedStatus;\n      });\n      this.rootApollo = new main_default(document.documentElement);\n    }\n    connectedCallback() {\n      this.rootApollo.on(\n        \"ap-elementopen:close\",\n        `#${this.getAttribute(\"ap-controlsaria\")}`,\n        (event) => {\n          if (this.objectElementControlled === event.target) {\n            this.expandedStatus = false;\n          }\n        },\n        true\n      );\n      this.rootApollo.on(\n        \"ap-elementopen:open\",\n        `#${this.getAttribute(\"ap-controlsaria\")}`,\n        (event) => {\n          if (this.objectElementControlled === event.target) {\n            this.expandedStatus = true;\n          }\n        },\n        true\n      );\n    }\n    disconnectedCallback() {\n      this.rootApollo.destroy();\n    }\n    get expandedStatus() {\n      return this.getAttribute(\"ap-expanded-aria\") === \"true\";\n    }\n    set expandedStatus(value) {\n      this.setAttribute(\"ap-expanded-aria\", value ? \"true\" : \"false\");\n    }\n    get objectElementControlled() {\n      return document.querySelector(`#${this.getAttribute(\"ap-controlsaria\")}`);\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      switch (name) {\n        case \"ap-expanded-aria\":\n          if (oldval === \"false\" && newval === \"true\") {\n            this.objectElementControlled.open = true;\n          } else if (oldval === \"true\" && newval === \"false\") {\n            this.objectElementControlled.open = false;\n          }\n      }\n    }\n  };\n  window.customElements.define(\"ap-togglelink\", apToggleLink, {\n    extends: \"a\",\n  });\n\n  var apPageDots = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.buttons = Array.from(this.querySelectorAll(\"button\"));\n      this.apollo.on(\"click\", \"button\", (event, target) => {\n        this._apEvtDispatch(this.buttons.indexOf(target));\n      });\n      if (this.hasAttribute(\"animation-timer\")) {\n        this.apollo.on(\"animationend\", (event) => {\n          if (event.elapsedTime > 0) {\n            this._apEvtDispatch(\n              (this.selectedIndex + 1 + this.buttons.length) % this.buttons.length\n            );\n          }\n        });\n      }\n    }\n    get selectedIndex() {\n      return this.buttons.findIndex((button) => button.getAttribute(\"ap-currentaria\") === \"true\");\n    }\n    set selectedIndex(selectedIndex) {\n      this.buttons.forEach((button, index) =>\n        button.setAttribute(\"ap-currentaria\", selectedIndex === index ? \"true\" : \"false\")\n      );\n      if (this.hasAttribute(\"ap-selectedalign\")) {\n        const windowHalfWidth = window.innerWidth / 2;\n        const selectedItem = this.buttons[selectedIndex];\n        const apBoundingRect = selectedItem.getBoundingClientRect();\n        const scrollableElement = this._apFindElementFirstScrollable(this.parentElement);\n        if (scrollableElement) {\n          let left =\n            scrollableElement.scrollLeft +\n            (apBoundingRect.left - windowHalfWidth) +\n            apBoundingRect.width / 2;\n          let behavior = \"smooth\";\n          scrollableElement.scrollTo({\n            behavior: behavior,\n            left: left,\n          });\n        }\n      }\n    }\n    _apEvtDispatch(index) {\n      if (index !== this.selectedIndex) {\n        this.dispatchEvent(\n          new CustomEvent(\"ap-pagedots:changed\", {\n            bubbles: true,\n            detail: {\n              index,\n            },\n          })\n        );\n      }\n    }\n    _apFindElementFirstScrollable(item, depth = 0) {\n      if (item === null || depth > 3) {\n        return null;\n      }\n      if (item.scrollWidth > item.clientWidth) {\n        return item;\n      } else {\n        return this._apFindElementFirstScrollable(item.parentElement, depth + 1);\n      }\n    }\n  };\n  window.customElements.define(\"ap-pagedots\", apPageDots);\n\n  var apButtonsNextPrevious = class extends HTMLElement {\n    connectedCallback() {\n      this.prevButton = this.querySelector(\"button:first-of-type\");\n      this.nextButton = this.querySelector(\"button:last-of-type\");\n      this.prevButton.addEventListener(\"click\", () =>\n        this.prevButton.dispatchEvent(\n          new CustomEvent(\"ap-nextprev:prev\", {\n            bubbles: true,\n          })\n        )\n      );\n      this.nextButton.addEventListener(\"click\", () =>\n        this.nextButton.dispatchEvent(\n          new CustomEvent(\"ap-nextprev:next\", {\n            bubbles: true,\n          })\n        )\n      );\n    }\n    set isPrevDisabled(value) {\n      this.prevButton.disabled = value;\n    }\n    set isNextDisabled(value) {\n      this.nextButton.disabled = value;\n    }\n  };\n  var apPrevButton = class extends HTMLButtonElement {\n    connectedCallback() {\n      this.addEventListener(\"click\", () =>\n        this.dispatchEvent(\n          new CustomEvent(\"ap-nextprev:prev\", {\n            bubbles: true,\n          })\n        )\n      );\n    }\n  };\n  var apNextButton = class extends HTMLButtonElement {\n    connectedCallback() {\n      this.addEventListener(\"click\", () =>\n        this.dispatchEvent(\n          new CustomEvent(\"ap-nextprev:next\", {\n            bubbles: true,\n          })\n        )\n      );\n    }\n  };\n  window.customElements.define(\"ap-button-nextprev\", apButtonsNextPrevious);\n  window.customElements.define(\"ap-buttonprev\", apPrevButton, {\n    extends: \"button\",\n  });\n  window.customElements.define(\"ap-buttonnext\", apNextButton, {\n    extends: \"button\",\n  });\n\n  function apStickyHeaderOffsetContent() {\n    const documentStyles = getComputedStyle(document.documentElement);\n    return (\n      parseInt(documentStyles.getPropertyValue(\"--header-height\") || 0) *\n        parseInt(documentStyles.getPropertyValue(\"--enable-sticky-header\") || 0) +\n      parseInt(documentStyles.getPropertyValue(\"--ap-announcementbar-height\") || 0) *\n        parseInt(documentStyles.getPropertyValue(\"--enable-sticky-ap-announcementbar\") || 0)\n    );\n  }\n\n  var apSafeSticky = class extends HTMLElement {\n    connectedCallback() {\n      this.lastKnownY = window.scrollY;\n      this.currentTop = 0;\n      this.hasPendingRaf = false;\n      window.addEventListener(\"scroll\", this._apGetPosition.bind(this));\n    }\n    get initialTopOffset() {\n      return apStickyHeaderOffsetContent() + (parseInt(this.getAttribute(\"offset\")) || 0);\n    }\n    _apGetPosition() {\n      if (this.hasPendingRaf) {\n        return;\n      }\n      this.hasPendingRaf = true;\n      requestAnimationFrame(() => {\n        let bounds = this.getBoundingClientRect();\n        let maxTop = bounds.top + window.scrollY - this.offsetTop + this.initialTopOffset;\n        let minTop = this.clientHeight - window.innerHeight;\n        if (window.scrollY < this.lastKnownY) {\n          this.currentTop -= window.scrollY - this.lastKnownY;\n        } else {\n          this.currentTop += this.lastKnownY - window.scrollY;\n        }\n        this.currentTop = Math.min(\n          Math.max(this.currentTop, -minTop),\n          maxTop,\n          this.initialTopOffset\n        );\n        this.lastKnownY = window.scrollY;\n        this.style.top = `${this.currentTop}px`;\n        this.hasPendingRaf = false;\n      });\n    }\n  };\n  window.customElements.define(\"ap-safesticky\", apSafeSticky);\n\n  function apStream(callback, delay3 = 15) {\n    let apStreamTimeout = null,\n      storedEvent = null;\n    const apStreamdEventHandler = (event) => {\n      storedEvent = event;\n      const shouldHandleEvent = !apStreamTimeout;\n      if (shouldHandleEvent) {\n        callback(storedEvent);\n        storedEvent = null;\n        apStreamTimeout = setTimeout(() => {\n          apStreamTimeout = null;\n          if (storedEvent) {\n            apStreamdEventHandler(storedEvent);\n          }\n        }, delay3);\n      }\n    };\n    return apStreamdEventHandler;\n  }\n\n  // js/custom-element/behavior/ap-spyscroll.js\n  // var apSpyScroll = class extends HTMLElement {\n  //   connectedCallback() {\n  //     this._createSvg();\n  //     this.elementsToObserve = Array.from(this.querySelectorAll(\"a\")).map((linkElement) => document.querySelector(linkElement.getAttribute(\"href\")));\n  //     this.navListItems = Array.from(this.querySelectorAll(\"li\"));\n  //     this.navItems = this.navListItems.map((listItem) => {\n  //       const anchor = listItem.firstElementChild, targetID = anchor && anchor.getAttribute(\"href\").slice(1), target = document.getElementById(targetID);\n  //       return { listItem, anchor, target };\n  //     }).filter((item) => item.target);\n  //     this.drawPath();\n  //     window.addEventListener(\"scroll\", apStream(this.markVisibleSection.bind(this), 25));\n  //     window.addEventListener(\"orientationchange\", () => {\n  //       window.addEventListener(\"resize\", () => {\n  //         this.drawPath();\n  //         this.markVisibleSection();\n  //       }, { once: true });\n  //     });\n  //     this.markVisibleSection();\n  //   }\n  //   _createSvg() {\n  //     this.navPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n  //     const svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n  //     svgElement.insertAdjacentElement(\"beforeend\", this.navPath);\n  //     this.insertAdjacentElement(\"beforeend\", svgElement);\n  //     this.lastPathStart = this.lastPathEnd = null;\n  //   }\n  //   drawPath() {\n  //     let path = [], pathIndent;\n  //     this.navItems.forEach((item, i) => {\n  //       const x = item.anchor.offsetLeft - 5, y = item.anchor.offsetTop, height = item.anchor.offsetHeight;\n  //       if (i === 0) {\n  //         path.push(\"M\", x, y, \"L\", x, y + height);\n  //         item.pathStart = 0;\n  //       } else {\n  //         if (pathIndent !== x) {\n  //           path.push(\"L\", pathIndent, y);\n  //         }\n  //         path.push(\"L\", x, y);\n  //         this.navPath.setAttribute(\"d\", path.join(\" \"));\n  //         item.pathStart = this.navPath.getTotalLength() || 0;\n  //         path.push(\"L\", x, y + height);\n  //       }\n  //       pathIndent = x;\n  //       this.navPath.setAttribute(\"d\", path.join(\" \"));\n  //       item.pathEnd = this.navPath.getTotalLength();\n  //     });\n  //   }\n  //   syncPath() {\n  //     const someElsAreVisible = () => this.querySelectorAll(\".is-visible\").length > 0, thisElIsVisible = (el) => el.classList.contains(\"is-visible\"), pathLength = this.navPath.getTotalLength();\n  //     let pathStart = pathLength, pathEnd = 0;\n  //     this.navItems.forEach((item) => {\n  //       if (thisElIsVisible(item.listItem)) {\n  //         pathStart = Math.min(item.pathStart, pathStart);\n  //         pathEnd = Math.max(item.pathEnd, pathEnd);\n  //       }\n  //     });\n  //     if (someElsAreVisible() && pathStart < pathEnd) {\n  //       if (pathStart !== this.lastPathStart || pathEnd !== this.lastPathEnd) {\n  //         const dashArray = `1 ${pathStart} ${pathEnd - pathStart} ${pathLength}`;\n  //         this.navPath.style.setProperty(\"stroke-dashoffset\", \"1\");\n  //         this.navPath.style.setProperty(\"stroke-dasharray\", dashArray);\n  //         this.navPath.style.setProperty(\"opacity\", \"1\");\n  //       }\n  //     } else {\n  //       this.navPath.style.setProperty(\"opacity\", \"0\");\n  //     }\n  //     this.lastPathStart = pathStart;\n  //     this.lastPathEnd = pathEnd;\n  //   }\n  //   markVisibleSection() {\n  //     this.navListItems.forEach((item) => item.classList.remove(\"is-visible\"));\n  //     for (const [index, elementToObserve] of this.elementsToObserve.entries()) {\n  //       const boundingClientRect = elementToObserve.getBoundingClientRect();\n  //       if (boundingClientRect.top > apStickyHeaderOffsetContent() || index === this.elementsToObserve.length - 1) {\n  //         this.querySelector(`a[href=\"#${elementToObserve.id}\"]`).parentElement.classList.add(\"is-visible\");\n  //         break;\n  //       }\n  //     }\n  //     this.syncPath();\n  //   }\n  // };\n  // window.customElements.define(\"ap-spyscroll\", apSpyScroll);\n\n  // js/custom-element/behavior/ap-shadowscroll.js\n\n  var ApUpdateProcess = class {\n    constructor(targetElement) {\n      this.scheduleUpdate = apStream(() =>\n        this.updateProcess(targetElement, getComputedStyle(targetElement))\n      );\n      this.resizeObserver = new ResizeObserver(this.scheduleUpdate.bind(this));\n    }\n    startProcess(element) {\n      if (this.element) {\n        this.stopProcess();\n      }\n      if (element) {\n        element.addEventListener(\"scroll\", this.scheduleUpdate);\n        this.resizeObserver.observe(element);\n        this.element = element;\n      }\n    }\n    stopProcess() {\n      if (this.element) {\n        this.element.removeEventListener(\"scroll\", this.scheduleUpdate);\n        this.resizeObserver.unobserve(this.element);\n        this.element = null;\n      } else {\n        return;\n      }\n    }\n    updateProcess(targetElement, style) {\n      if (this.element) {\n        const maxSize = style.getPropertyValue(\"--ap-shadowscroll-size\")\n          ? parseInt(style.getPropertyValue(\"--ap-shadowscroll-size\"))\n          : 0;\n        const scroll = {\n          top: Math.max(this.element.scrollTop, 0),\n          bottom: Math.max(\n            this.element.scrollHeight - this.element.offsetHeight - this.element.scrollTop,\n            0\n          ),\n          left: Math.max(this.element.scrollLeft, 0),\n          right: Math.max(\n            this.element.scrollWidth - this.element.offsetWidth - this.element.scrollLeft,\n            0\n          ),\n        };\n        requestAnimationFrame(() => {\n          for (const position of [\"top\", \"bottom\", \"left\", \"right\"]) {\n            targetElement.style.setProperty(\n              `--${position}`,\n              `${scroll[position] > maxSize ? maxSize : scroll[position]}px`\n            );\n          }\n        });\n      } else {\n        return;\n      }\n    }\n  };\n  var ApShadowScroll = class extends HTMLElement {\n    constructor() {\n      super();\n      this.attachShadow({\n        mode: \"open\",\n      }).innerHTML = `\n      <style>\n        :host {\n          display: inline-block;\n          contain: layout;\n          position: relative;\n        }\n        \n        :host([hidden]) {\n          display: none;\n        }\n        \n        s {\n          position: absolute;\n          top: 0;\n          bottom: 0;\n          left: 0;\n          right: 0;\n          pointer-events: none;\n          background-image:\n            var(--ap-shadowscroll-top, radial-gradient(farthest-side at 50% 0%, rgba(0,0,0,.2), rgba(0,0,0,0))),\n            var(--ap-shadowscroll-bottom, radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0))),\n            var(--ap-shadowscroll-left, radial-gradient(farthest-side at 0%, rgba(0,0,0,.2), rgba(0,0,0,0))),\n            var(--ap-shadowscroll-right, radial-gradient(farthest-side at 100%, rgba(0,0,0,.2), rgba(0,0,0,0)));\n          background-position: top, bottom, left, right;\n          background-repeat: no-repeat;\n          background-size: 100% var(--top, 0), 100% var(--bottom, 0), var(--left, 0) 100%, var(--right, 0) 100%;\n        }\n      </style>\n      <slot></slot>\n      <s></s>\n    `;\n      this.updater = new ApUpdateProcess(this.shadowRoot.lastElementChild);\n    }\n    connectedCallback() {\n      this.shadowRoot.querySelector(\"slot\").addEventListener(\"slotchange\", () => this.start());\n      this.start();\n    }\n    disconnectedCallback() {\n      this.updater.stopProcess();\n    }\n    start() {\n      this.updater.startProcess(this.firstElementChild);\n    }\n  };\n  if (\"ResizeObserver\" in window) {\n    window.customElements.define(\"ap-shadowscroll\", ApShadowScroll);\n  }\n\n  var ApShareApToggleButton = class extends ApToggleButton {\n    _onButtonClick() {\n      if (window.matchMedia(window.themeVariables.breakpoints.phone).matches && navigator.share) {\n        if (this.hasAttribute(\"share-title\")) {\n          let title = this.getAttribute(\"share-title\");\n        } else {\n          let title = document.title;\n        }\n        if (this.hasAttribute(\"share-url\")) {\n          let url = this.getAttribute(\"share-url\");\n        } else {\n          let url = window.location.href;\n        }\n        navigator.share({\n          title: title,\n          url: url,\n        });\n      } else {\n        super._onButtonClick();\n      }\n    }\n  };\n  window.customElements.define(\"ap-sharetogglebutton\", ApShareApToggleButton, {\n    extends: \"button\",\n  });\n\n  var APCarousel = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\"ap-carousel-item\"));\n      this.pageDotsElements = Array.from(this.querySelectorAll(\"ap-pagedots\"));\n      this.prevNextButtonsElements = Array.from(this.querySelectorAll(\"ap-button-nextprev\"));\n      if (this.items.length > 1) {\n        this.addEventListener(\"ap-nextprev:prev\", this.prevCarouselItem.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.nextCarouselItem.bind(this));\n        this.addEventListener(\"ap-pagedots:changed\", (event) =>\n          this.select(event.detail.index, true)\n        );\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", (event) =>\n            this.select(event.target.index, !event.detail.load)\n          );\n        }\n      }\n      const scrollerElement = this.items[0].parentElement;\n      let rootMargin = `${scrollerElement.clientHeight}px 0px`;\n      this.intersectionObserver = new IntersectionObserver(this._onVisibilityChanged.bind(this), {\n        root: scrollerElement,\n        rootMargin: rootMargin,\n        threshold: 0.8,\n      });\n      this.items.forEach((item) => this.intersectionObserver.observe(item));\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      this.intersectionObserver.disconnect();\n    }\n    get selectedIndex() {\n      return this.items.findIndex((item) => item.selected);\n    }\n    prevCarouselItem(useEffect = true) {\n      this.select(Math.max(this.selectedIndex - 1, 0), useEffect);\n    }\n    nextCarouselItem(useEffect = true) {\n      this.select(Math.min(this.selectedIndex + 1, this.items.length - 1), useEffect);\n    }\n    select(index, useEffect = true) {\n      const clampIndex = Math.max(0, Math.min(index, this.items.length));\n      const selectedElement = this.items[clampIndex];\n      this._apElementAdjustNavigation(selectedElement);\n      if (useEffect) {\n        this.items.forEach((item) => this.intersectionObserver.unobserve(item));\n        setInterval(() => {\n          this.items.forEach((item) => this.intersectionObserver.observe(item));\n        }, 800);\n      }\n      this.items.forEach((item, loopIndex) => (item.selected = loopIndex === clampIndex));\n      const direction = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      selectedElement.parentElement.scrollTo({\n        left: direction * (selectedElement.clientWidth * clampIndex),\n        behavior: useEffect ? \"smooth\" : \"auto\",\n      });\n    }\n    _apElementAdjustNavigation(selectedElement) {\n      this.items.forEach((item) => (item.selected = selectedElement === item));\n      this.pageDotsElements.forEach((pageDot) => (pageDot.selectedIndex = selectedElement.index));\n      this.prevNextButtonsElements.forEach((prevNextButton) => {\n        prevNextButton.isPrevDisabled = selectedElement.index === 0;\n        prevNextButton.isNextDisabled = selectedElement.index === this.items.length - 1;\n      });\n    }\n    _onVisibilityChanged(entries) {\n      for (let entry of entries) {\n        if (entry.isIntersecting) {\n          this._apElementAdjustNavigation(entry.target);\n          break;\n        }\n      }\n    }\n  };\n  var APCarouselItem = class extends CustomHTMLElement {\n    static get observedAttributes() {\n      return [\"hidden\"];\n    }\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    set selected(value) {\n      this.hidden = !value;\n    }\n  };\n  window.customElements.define(\"ap-carousel-item\", APCarouselItem);\n  window.customElements.define(\"ap-carousel\", APCarousel);\n\n  var ApCursorOfDrag = class extends HTMLElement {\n    connectedCallback() {\n      this.scrollableElement = this.parentElement;\n      this.scrollableElement.addEventListener(\"mouseenter\", this._onMouseEnter.bind(this));\n      this.scrollableElement.addEventListener(\"mousemove\", this._apEvtOnMouseMove.bind(this));\n      this.scrollableElement.addEventListener(\"mouseleave\", this._onMouseLeave.bind(this));\n      this.innerHTML = `\n      <svg fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 120 120\">\n        <path d=\"M0 60C0 26.863 26.863 0 60 0s60 26.863 60 60-26.863 60-60 60S0 93.137 0 60z\" fill=\"rgb(var(--color-body))\"/>\n        <path d=\"M46 50L36 60l10 10M74 50l10 10-10 10\" stroke=\"rgb(var(--section-background))\" stroke-width=\"4\"/>\n      </svg>\n    `;\n    }\n    _onMouseEnter(event) {\n      this.removeAttribute(\"hidden\");\n      this._positionCursor(event);\n    }\n    _onMouseLeave() {\n      this.setAttribute(\"hidden\", \"\");\n    }\n    _apEvtOnMouseMove(event) {\n      this.toggleAttribute(\n        \"hidden\",\n        event.target.tagName === \"BUTTON\" || event.target.tagName === \"A\"\n      );\n      this._positionCursor(event);\n    }\n    _positionCursor(event) {\n      const elementBoundingRect = this.scrollableElement.getBoundingClientRect();\n      const x = event.clientX - elementBoundingRect.x;\n      const y = event.clientY - elementBoundingRect.y;\n      this.style.transform = `translate(${x - this.clientWidth / 2}px, ${\n        y - this.clientHeight / 2\n      }px)`;\n    }\n  };\n  window.customElements.define(\"ap-cursorofdrag\", ApCursorOfDrag);\n\n  var ApScrollableContent = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (this.draggable) {\n        this._apDraggSetup();\n      }\n      this._apScrollCheck();\n      window.addEventListener(\"resize\", this._apScrollCheck.bind(this));\n      this.addEventListener(\"scroll\", apStream(this._apProgressCalculator.bind(this), 15));\n    }\n    get draggable() {\n      return this.hasAttribute(\"draggable\");\n    }\n    _apDraggSetup() {\n      this.insertAdjacentHTML(\n        \"afterend\",\n        '<ap-cursorofdrag hidden class=\"custom-ap-cursorofdrag\"></ap-cursorofdrag>'\n      );\n      const mediaQuery = matchMedia(\"(hover: none)\");\n      mediaQuery.addListener(this._apMediaChanges.bind(this));\n      if (!mediaQuery.matches) {\n        this._apListenersAttachDraggable();\n      }\n    }\n    _apListenersAttachDraggable() {\n      this.apollo.on(\"mousedown\", this._apEvtOnMouseDown.bind(this));\n      this.apollo.on(\"mousemove\", this._apEvtOnMouseMove.bind(this));\n      this.apollo.on(\"mouseup\", this._apEvtOnMouseUp.bind(this));\n    }\n    _apListenersRemoveDraggable() {\n      this.apollo.off(\"mousedown\");\n      this.apollo.off(\"mousemove\");\n      this.apollo.off(\"mouseup\");\n    }\n    _apScrollCheck() {\n      this.classList.toggle(\"is-scrollable\", this.scrollWidth > this.offsetWidth);\n    }\n    _apProgressCalculator() {\n      const scrollLeft =\n        this.scrollLeft * (window.themeVariables.settings.direction === \"ltr\" ? 1 : -1);\n      const progress =\n        Math.max(0, Math.min(1, scrollLeft / (this.scrollWidth - this.clientWidth))) * 100;\n      triggerEvent(this, \"ap-scrollablecontent:progress\", {\n        progress,\n      });\n    }\n    _apMediaChanges(event) {\n      if (!event.matches) {\n        this._apListenersAttachDraggable();\n      } else {\n        this._apListenersRemoveDraggable();\n      }\n    }\n    _apEvtOnMouseDown(event) {\n      if (event.target && event.target.nodeName === \"IMG\") {\n        event.preventDefault();\n      }\n      this.startX = event.clientX + this.scrollLeft;\n      this.diffX = 0;\n      this.drag = true;\n    }\n    _apEvtOnMouseMove(event) {\n      if (this.drag) {\n        this.diffX = this.startX - (event.clientX + this.scrollLeft);\n        this.scrollLeft += this.diffX;\n      }\n    }\n    _apEvtOnMouseUp() {\n      this.drag = false;\n      let st = 1;\n      let animate = () => {\n        let step = Math.sinh(st);\n        if (step <= 0) {\n          window.cancelAnimationFrame(animate);\n        } else {\n          this.scrollLeft += this.diffX * step;\n          st -= 0.03;\n          window.requestAnimationFrame(animate);\n        }\n      };\n      animate();\n    }\n  };\n  window.customElements.define(\"ap-scrollablecontent\", ApScrollableContent);\n\n  var APLoadingBar = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.rootApollo.on(\"theme:loading:start\", this.show.bind(this));\n      this.rootApollo.on(\"theme:loading:end\", this.hide.bind(this));\n      this.apollo.on(\"transitionend\", this._onTransitionEnd.bind(this));\n    }\n    show() {\n      this.classList.add(\"is-visible\");\n      this.style.transform = \"scaleX(0.4)\";\n    }\n    hide() {\n      this.style.transform = \"scaleX(1)\";\n      this.classList.add(\"isfinished\");\n    }\n    _onTransitionEnd(event) {\n      if (event.propertyName === \"transform\" && this.classList.contains(\"isfinished\")) {\n        this.classList.remove(\"is-visible\");\n        this.classList.remove(\"isfinished\");\n        this.style.transform = \"scaleX(0)\";\n      }\n    }\n  };\n  window.customElements.define(\"ap-loadingbar\", APLoadingBar);\n\n  var APSplitLines = class extends HTMLElement {\n    connectedCallback() {\n      this.originalContent = this.textContent;\n      this.lastWidth = window.innerWidth;\n      this.hasBeenSplitted = false;\n      window.addEventListener(\"resize\", this._apEvtOnResize.bind(this));\n    }\n    [Symbol.asyncIterator]() {\n      return {\n        splitPromise: this.split.bind(this),\n        index: 0,\n        async next() {\n          const lines = await this.splitPromise();\n          if (this.index !== lines.length) {\n            return {\n              done: false,\n              value: lines[this.index++],\n            };\n          } else {\n            return {\n              done: true,\n            };\n          }\n        },\n      };\n    }\n    split(force = false) {\n      if (this.childElementCount > 0 && !force) {\n        return Promise.resolve(Array.from(this.children));\n      }\n      this.hasBeenSplitted = true;\n      return new Promise((resolve) => {\n        requestAnimationFrame(() => {\n          this.innerHTML = this.originalContent\n            .replace(/./g, \"<span>$&</span>\")\n            .replace(/\\s/g, \" \");\n          const bounds = {};\n          Array.from(this.children).forEach((child) => {\n            const rect = child.getBoundingClientRect().top;\n            bounds[rect] = (bounds[rect] || \"\") + child.textContent;\n          });\n          this.innerHTML = Object.values(bounds)\n            .map(\n              (item) =>\n                `<span ${this.hasAttribute(\"reveal\") && !force ? \"reveal\" : \"\"} ${\n                  this.hasAttribute(\"ap-revealvisibility\") && !force ? \"ap-revealvisibility\" : \"\"\n                } style=\"display: block\">${item.trim()}</span>`\n            )\n            .join(\"\");\n          this.style.opacity = this.hasAttribute(\"reveal\") ? 1 : null;\n          if (this.hasAttribute(\"ap-revealvisibility\")) {\n            this.style.visibility = \"visible\";\n          } else {\n            this.style.visibility = null;\n          }\n          resolve(Array.from(this.children));\n        });\n      });\n    }\n    async _apEvtOnResize() {\n      if (this.lastWidth === window.innerWidth || !this.hasBeenSplitted) {\n        return;\n      }\n      await this.split(true);\n      this.dispatchEvent(   \n        new CustomEvent(\"ap-splitlines:re-split\", {\n          bubbles: true,\n        })\n      );\n      this.lastWidth = window.innerWidth;\n    }\n  };\n  window.customElements.define(\"ap-splitlines\", APSplitLines);\n\n  var ApolloPopContent = class extends ApolloOpenableElement {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"click\", \".popover__overlay\", () => (this.open = false));\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          document.documentElement.classList.toggle(\"ap-lockmobile\", this.open);\n      }\n    }\n  };\n  window.customElements.define(\"apollopop-content\", ApolloPopContent);\n\n  var ApNavTabs = class extends HTMLElement {\n    connectedCallback() {\n      this.buttons = Array.from(this.querySelectorAll(\"button[ap-controlsaria]\"));\n      this.scrollerElement = this.querySelector(\".ap-navtabs__scroller\");\n      this.buttons.forEach((button) =>\n        button.addEventListener(\"click\", () => this.selectButton(button))\n      );\n      this.addEventListener(\"shopify:block:select\", (event) =>\n        this.selectButton(event.target, !event.detail.load)\n      );\n      this.positionElement = document.createElement(\"span\");\n      this.positionElement.classList.add(\"ap-navtabs__position\");\n      this.buttons[0].parentElement.insertAdjacentElement(\"afterend\", this.positionElement);\n      window.addEventListener(\"resize\", this._apEvtOnResizedWindow.bind(this));\n      this._apEvtNavigationPositionChange();\n      if (this.hasArrows) {\n        this._apEvtArrowsHandle();\n      }\n    }\n    get hasArrows() {\n      return this.hasAttribute(\"arrows\");\n    }\n    get selectedTabIndex() {\n      return this.buttons.findIndex((button) => button.getAttribute(\"ap-expanded-aria\") === \"true\");\n    }\n    get selectedButton() {\n      return this.buttons.find((button) => button.getAttribute(\"ap-expanded-aria\") === \"true\");\n    }\n    selectButton(button, animate = true) {\n      if (!this.buttons.includes(button) || this.selectedButton === button) {\n        return;\n      }\n      const from = document.getElementById(this.selectedButton.getAttribute(\"ap-controlsaria\")),\n        to = document.getElementById(button.getAttribute(\"ap-controlsaria\"));\n      if (animate) {\n        this._apEvtContentTransition(from, to);\n      } else {\n        from.hidden = true;\n        to.hidden = false;\n      }\n      this.selectedButton.setAttribute(\"ap-expanded-aria\", \"false\");\n      button.setAttribute(\"ap-expanded-aria\", \"true\");\n      triggerEvent(this, \"ap-navtabs:changed\", {\n        button,\n      });\n      this._apEvtNavigationPositionChange();\n    }\n    addButton(button) {\n      button.addEventListener(\"click\", () => this.selectButton(button));\n      button.setAttribute(\"ap-expanded-aria\", \"false\");\n      this.buttons[this.buttons.length - 1].insertAdjacentElement(\"afterend\", button);\n      this.buttons.push(button);\n      this._apEvtNavigationPositionChange(false);\n    }\n    _apEvtContentTransition(from, to) {\n      from.animate(\n        {\n          opacity: [1, 0],\n        },\n        {\n          duration: 250,\n          easing: \"ease\",\n        }\n      ).onfinish = () => {\n        from.hidden = true;\n        to.hidden = false;\n        to.animate(\n          {\n            opacity: [0, 1],\n          },\n          {\n            duration: 250,\n            easing: \"ease\",\n          }\n        );\n      };\n    }\n    _apEvtOnResizedWindow() {\n      this._apEvtNavigationPositionChange();\n    }\n    _apEvtNavigationPositionChange(useEffect = true) {\n      const scale =\n          this.selectedButton.clientWidth / this.positionElement.parentElement.clientWidth,\n        translate =\n          this.selectedButton.offsetLeft / this.positionElement.parentElement.clientWidth / scale,\n        windowHalfWidth = this.scrollerElement.clientWidth / 2;\n      let behavior = \"auto\";\n      if (useEffect) {\n        behavior = \"smooth\";\n      }\n      let left =\n        this.selectedButton.offsetLeft - windowHalfWidth + this.selectedButton.clientWidth / 2;\n      this.scrollerElement.scrollTo({\n        behavior: behavior,\n        left: left,\n      });\n      if (!useEffect) {\n        this.positionElement.style.transition = \"none\";\n      }\n      this.positionElement.style.setProperty(\"--scale\", scale);\n      this.positionElement.style.setProperty(\"--translate\", `${translate * 100}%`);\n      this.positionElement.clientWidth;\n      requestAnimationFrame(() => {\n        this.positionElement.classList.add(\"is-initialized\");\n        this.positionElement.style.transition = null;\n      });\n    }\n    _apEvtArrowsHandle() {\n      if (this.querySelector(\".ap-navtabs__arrows\")) {\n        const arrowsContainer = this.querySelector(\".ap-navtabs__arrows\");\n        arrowsContainer.firstElementChild.addEventListener(\"click\", () => {\n          this.selectButton(this.buttons[Math.max(this.selectedTabIndex - 1, 0)]);\n        });\n        arrowsContainer.lastElementChild.addEventListener(\"click\", () => {\n          this.selectButton(\n            this.buttons[Math.min(this.selectedTabIndex + 1, this.buttons.length - 1)]\n          );\n        });\n      }\n    }\n  };\n  window.customElements.define(\"ap-navtabs\", ApNavTabs);\n\n  var ApLoaderLibrary = class {\n    static load(libraryName) {\n      const STATUS_REQUESTED = \"requested\";\n      const STATUS_LOADED = \"loaded\";\n      const aplib = this.libraries[libraryName];\n      if (!aplib) {\n        return;\n      }\n      if (aplib.status === STATUS_REQUESTED) {\n        return aplib.promise;\n      }\n      if (aplib.status === STATUS_LOADED) {\n        return Promise.resolve();\n      }\n      let promise;\n      if (aplib.type === \"script\") {\n        promise = new Promise((resolve, reject) => {\n          let tag = document.createElement(\"script\");\n          tag.id = aplib.tagId;\n          tag.src = aplib.src;\n          tag.onerror = reject;\n          tag.onload = () => {\n            aplib.status = STATUS_LOADED;\n            resolve();\n          };\n          document.body.appendChild(tag);\n        });\n      } else {\n        promise = new Promise((resolve, reject) => {\n          let tag = document.createElement(\"link\");\n          tag.id = aplib.tagId;\n          tag.href = aplib.src;\n          tag.rel = \"stylesheet\";\n          tag.type = \"text/css\";\n          tag.onerror = reject;\n          tag.onload = () => {\n            aplib.status = STATUS_LOADED;\n            resolve();\n          };\n          document.body.appendChild(tag);\n        });\n      }\n      aplib.promise = promise;\n      aplib.status = STATUS_REQUESTED;\n      return promise;\n    }\n  };\n  __publicField(ApLoaderLibrary, \"libraries\", {\n    modelViewerUiStyles: {\n      tagId: \"shopify-model-viewer-ui-styles\",\n      src: window.themeVariables.libs.modelViewerUiStyles,\n      type: \"link\",\n    },\n    flickity: {\n      tagId: \"flickity\",\n      src: window.themeVariables.libs.flickity,\n      type: \"script\",\n    },\n    photoswipe: {\n      tagId: \"photoswipe\",\n      src: window.themeVariables.libs.photoswipe,\n      type: \"script\",\n    },\n  });\n\n  var MediaFeatures = class {\n    static prefersReducedMotion() {\n      return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n    }\n    static supportsHover() {\n      return window.matchMedia(\"(any-hover: hover)\").matches;\n    }\n  };\n\n  var ApLocalizationSelector = class extends HTMLSelectElement {\n    connectedCallback() {\n      this.localizationProvinceElement = document.getElementById(this.getAttribute(\"ap-ariaowns\"));\n      this.addEventListener(\"change\", this._updateLocalizationProvinceVisibility.bind(this));\n      if (this.hasAttribute(\"data-default\")) {\n        for (let i = 0; i !== this.options.length; ++i) {\n          if (this.options[i].text === this.getAttribute(\"data-default\")) {\n            this.selectedIndex = i;\n            break;\n          }\n        }\n      }\n      if (this.localizationProvinceElement.hasAttribute(\"data-default\")) {\n        for (let i = 0; i !== this.localizationProvinceElement.options.length; ++i) {\n          if (\n            this.localizationProvinceElement.options[i].text ===\n            this.localizationProvinceElement.getAttribute(\"data-default\")\n          ) {\n            this.localizationProvinceElement.selectedIndex = i;\n            break;\n          }\n        }\n      }\n      this._updateLocalizationProvinceVisibility();\n    }\n    _updateLocalizationProvinceVisibility() {\n      const selectedOption = this.options[this.selectedIndex];\n      if (!selectedOption) {\n        return;\n      }\n      let provinces = JSON.parse(selectedOption.getAttribute(\"data-provinces\") || \"[]\");\n      let localizationProvinceSelectElement =\n        this.localizationProvinceElement.querySelector(\"select\");\n      if (\n        (localizationProvinceSelectElement = this.localizationProvinceElement.tagName === \"SELECT\")\n      ) {\n        localizationProvinceSelectElement = this.localizationProvinceElement;\n      }\n      if (localizationProvinceSelectElement) {\n        localizationProvinceSelectElement.innerHTML = \"\";\n      }\n      if (provinces.length === 0) {\n        this.localizationProvinceElement.hidden = true;\n        return;\n      }\n      provinces.forEach((data) => {\n        localizationProvinceSelectElement.options.add(new Option(data[1], data[0]));\n      });\n      this.localizationProvinceElement.hidden = false;\n    }\n  };\n  window.customElements.define(\"ap-localizationselector\", ApLocalizationSelector, {\n    extends: \"select\",\n  });\n\n  var ApLinkBar = class extends HTMLElement {\n    connectedCallback() {\n      const linkBarSelectedItem = this.querySelector(\".ap-linkbar__link-item--selected\");\n      if (linkBarSelectedItem) {\n        requestAnimationFrame(() => {\n          linkBarSelectedItem.style.scrollSnapAlign = \"none\";\n        });\n      }\n    }\n  };\n  window.customElements.define(\"ap-linkbar\", ApLinkBar);\n\n  var ApContentModal = class extends ApolloOpenableElement {\n    connectedCallback() {\n      super.connectedCallback();\n      if (this.apAppearAfterDelay && !(this.apOnlyOnce && this.apHasAppearedOnce)) {\n        setTimeout(() => (this.open = true), this.apApparitionDelay);\n      }\n      this.apollo.on(\"click\", \".modal__overlay\", () => (this.open = false));\n    }\n    get apAppearAfterDelay() {\n      return this.hasAttribute(\"ap-delayapparition\");\n    }\n    get apApparitionDelay() {\n      return parseInt(this.getAttribute(\"ap-delayapparition\") || 0) * 1e3;\n    }\n    get apOnlyOnce() {\n      return this.hasAttribute(\"only-once\");\n    }\n    get apHasAppearedOnce() {\n      return localStorage.getItem(\"theme:popup-appeared\") !== null;\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          document.documentElement.classList.toggle(\"ap-lockall\", this.open);\n          if (this.open) {\n            localStorage.setItem(\"theme:popup-appeared\", true);\n          }\n      }\n    }\n  };\n  window.customElements.define(\"ap-contentmodal\", ApContentModal);\n\n  var ApPriceRange = class extends HTMLElement {\n    connectedCallback() {\n      this.rangeMinBound = this.querySelector(\".ap-pricerange__range-group input:first-child\");\n      this.rangeMaxBound = this.querySelector(\".ap-pricerange__range-group input:last-child\");\n      this.textInputMinBound = this.querySelector(\".ap-pricerange__input:first-child input\");\n      this.textInputMaxBound = this.querySelector(\".ap-pricerange__input:last-child input\");\n      this.textInputMinBound.addEventListener(\"focus\", () => this.textInputMinBound.select());\n      this.textInputMaxBound.addEventListener(\"focus\", () => this.textInputMaxBound.select());\n      this.textInputMaxBound.addEventListener(\"change\", (event) => {\n        event.target.value = Math.min(\n          Math.max(\n            parseInt(event.target.value),\n            parseInt(this.textInputMinBound.value || event.target.min) + 1\n          ),\n          event.target.max\n        );\n        this.rangeMaxBound.value = event.target.value;\n        let val = (parseInt(this.rangeMaxBound.value) / parseInt(this.rangeMaxBound.max)) * 100;\n        this.rangeMaxBound.parentElement.style.setProperty(\"--range-max\", `${val}%`);\n      });\n      this.textInputMinBound.addEventListener(\"change\", (event) => {\n        event.target.value = Math.max(\n          Math.min(\n            parseInt(event.target.value),\n            parseInt(this.textInputMaxBound.value || event.target.max) - 1\n          ),\n          event.target.min\n        );\n        this.rangeMinBound.value = event.target.value;\n        let val = (parseInt(this.rangeMinBound.value) / parseInt(this.rangeMinBound.max)) * 100;\n        this.rangeMinBound.parentElement.style.setProperty(\"--range-min\", `${val}%`);\n      });\n      this.rangeMaxBound.addEventListener(\"change\", (event) => {\n        this.textInputMaxBound.value = event.target.value;\n        this.textInputMaxBound.dispatchEvent(\n          new Event(\"change\", {\n            bubbles: true,\n          })\n        );\n      });\n      this.rangeMinBound.addEventListener(\"change\", (event) => {\n        this.textInputMinBound.value = event.target.value;\n        this.textInputMinBound.dispatchEvent(\n          new Event(\"change\", {\n            bubbles: true,\n          })\n        );\n      });\n      this.rangeMaxBound.addEventListener(\"input\", (event) => {\n        triggerEvent(this, \"facet:abort-loading\");\n        event.target.value = Math.max(\n          parseInt(event.target.value),\n          parseInt(this.textInputMinBound.value || event.target.min) + 1\n        );\n        let val = (parseInt(event.target.value) / parseInt(event.target.max)) * 100;\n        event.target.parentElement.style.setProperty(\"--range-max\", `${val}%`);\n        this.textInputMaxBound.value = event.target.value;\n      });\n      this.rangeMinBound.addEventListener(\"input\", (event) => {\n        triggerEvent(this, \"facet:abort-loading\");\n        event.target.value = Math.min(\n          parseInt(event.target.value),\n          parseInt(this.textInputMaxBound.value || event.target.max) - 1\n        );\n        let val = (parseInt(event.target.value) / parseInt(event.target.max)) * 100;\n        event.target.parentElement.style.setProperty(\"--range-min\", `${val}%`);\n        this.textInputMinBound.value = event.target.value;\n      });\n    }\n  };\n  window.customElements.define(\"ap-pricerange\", ApPriceRange);\n\n  window.addEventListener(\"load\", function () {\n    var APFlickityCarousel = class extends CustomHTMLElement {\n      constructor() {\n        super();\n        if (this.getAttribute(\"list-type\")) {\n          var list = document.getElementsByClassName(\"product__media-item\");\n          for (var i = 0; i < list.length; i++) {\n            let id = list[i].id;\n            if (list[i].getAttribute(\"data-media-type\") == \"image\") {\n              list[i].onclick = function () {\n                for (var j = 0; j < list.length; j++) {\n                  list[j].classList.remove(\"is-selected\");\n                }\n                if (id == this.id) {\n                  this.classList.add(\"is-selected\");\n                  let buttonZoom = document.getElementsByClassName(\"product__zoom-button\");\n                  buttonZoom[0].click();\n                }\n              };\n            }\n          }\n          return;\n        } else {\n          if (this.childElementCount === 1) {\n            document.querySelector('.product__media-item').classList.add('d-show');\n            return;\n          }\n          this.addEventListener(\"flickity:ready\", this._ApEvtPreloadNextImage.bind(this));\n          this.addEventListener(\"flickity:slide-changed\", this._ApEvtPreloadNextImage.bind(this));\n          this._apFlickityCreate();\n        }\n      }\n      async disconnectedCallback() {\n        if (this.flickity) {\n          const flickityInstance = await this.flickity;\n          flickityInstance.destroy();\n        }\n      }\n      get flickityConfig() {\n        return JSON.parse(this.getAttribute(\"flickity-config\"));\n      }\n      get flickityInstance() {\n        return this.flickity;\n      }\n      async next() {\n        (await this.flickityInstance).next();\n      }\n      async previous() {\n        (await this.flickityInstance).previous();\n      }\n      async select(indexOrSelector) {\n        (await this.flickityInstance).selectCell(indexOrSelector);\n      }\n      async setDraggable(draggable) {\n        const flickityInstance = await this.flickity;\n        flickityInstance.options.draggable = draggable;\n        flickityInstance.updateDraggable();\n      }\n      async reload() {\n        const flickityInstance = await this.flickity;\n        flickityInstance.destroy();\n        if (this.flickityConfig[\"cellSelector\"]) {\n          Array.from(this.children)\n            .sort((a, b) =>\n              parseInt(a.getAttribute(\"data-original-position\")) >\n              parseInt(b.getAttribute(\"data-original-position\"))\n                ? 1\n                : -1\n            )\n            .forEach((node) => this.appendChild(node));\n        }\n        this._apFlickityCreate();\n      }\n      async _apFlickityCreate() {\n        this.flickity = new Promise(async (resolve) => {\n          await ApLoaderLibrary.load(\"flickity\");\n          await this.untilObjectVisible({\n            rootMargin: \"400px\",\n            threshold: 0,\n          });\n          const flickityInstance = new window.ThemeFlickity(this, {\n            ...this.flickityConfig,\n            ...{\n              rightToLeft: window.themeVariables.settings.direction === \"rtl\",\n              accessibility: MediaFeatures.supportsHover(),\n              on: {\n                ready: (event) => triggerEvent(this, \"flickity:ready\", event),\n                change: (event) => triggerEvent(this, \"flickity:slide-changed\", event),\n                settle: (event) => triggerEvent(this, \"flickity:slide-settled\", event),\n              },\n            },\n          });\n          resolve(flickityInstance);\n\n          const firstImg = this.querySelector(\".product__media-item img\");\n          if (firstImg) {\n            const reveal = () => {\n              requestAnimationFrame(() => {\n                flickityInstance.resize();\n                firstImg.classList.add(\"mg-decoded\");\n              });\n            };\n            if (firstImg.complete && firstImg.naturalWidth > 0) {\n              reveal();\n            } else {\n              const ready = firstImg.decode\n                ? firstImg.decode().catch(() => {})\n                : new Promise((res) => firstImg.addEventListener(\"load\", res, { once: true }));\n              ready.then(reveal);\n              // Safety net: never leave the image invisible if decode()/load\n              // never fires for some reason.\n              setTimeout(reveal, 3000);\n            }\n          }\n        });\n        if (this.hasAttribute(\"click-nav\")) {\n          const flickityInstance = await this.flickityInstance;\n          flickityInstance.on(\"staticClick\", this._ApEvtOnStaticClick.bind(this));\n          this.addEventListener(\"mousemove\", this._apEvtOnMouseMove.bind(this));\n        }\n      }\n      async _ApEvtOnStaticClick(event, pointer, cellElement) {\n        const flickityInstance = await this.flickityInstance,\n          isVideoOrModelType =\n            flickityInstance.selectedElement.hasAttribute(\"data-media-type\") &&\n            [\"video\", \"external_video\", \"model\"].includes(\n              flickityInstance.selectedElement.getAttribute(\"data-media-type\")\n            );\n        if (\n          !cellElement ||\n          isVideoOrModelType ||\n          window.matchMedia(window.themeVariables.breakpoints.phone).matches\n        ) {\n          return;\n        }\n        const flickityViewport = flickityInstance.viewport,\n          apBoundingRect = flickityViewport.getBoundingClientRect(),\n          halfEdge = Math.floor(apBoundingRect.right - apBoundingRect.width / 2);\n\n        if (pointer.clientX > halfEdge) {\n          flickityInstance.next();\n        } else {\n          flickityInstance.previous();\n        }\n      }\n      async _apEvtOnMouseMove(event) {\n        const flickityInstance = await this.flickityInstance,\n          isVideoOrModelType =\n            flickityInstance.selectedElement.hasAttribute(\"data-media-type\") &&\n            [\"video\", \"external_video\", \"model\"].includes(\n              flickityInstance.selectedElement.getAttribute(\"data-media-type\")\n            );\n        this.classList.toggle(\n          \"is-hovering-right\",\n          event.offsetX > this.clientWidth / 2 && !isVideoOrModelType\n        );\n        this.classList.toggle(\n          \"is-hovering-left\",\n          event.offsetX <= this.clientWidth / 2 && !isVideoOrModelType\n        );\n      }\n      async _ApEvtPreloadNextImage() {\n        var _a;\n        const flickityInstance = await this.flickity;\n        if (flickityInstance.selectedElement.nextElementSibling) {\n          (_a = flickityInstance.selectedElement.nextElementSibling.querySelector(\"img\")) == null\n            ? void 0\n            : _a.setAttribute(\"loading\", \"eager\");\n        }\n      }\n    };\n    window.customElements.define(\"ap-flickitycarousel\", APFlickityCarousel);\n  });\n\n  function apSiblings(element, filter, includeSelf = false) {\n    let apContentSiblings = [];\n    let currentObjectElement = element;\n    while ((currentObjectElement = currentObjectElement.previousElementSibling)) {\n      if (!filter || currentObjectElement.matches(filter)) {\n        apContentSiblings.push(currentObjectElement);\n      }\n    }\n    if (includeSelf) {\n      apContentSiblings.push(element);\n    }\n    currentObjectElement = element;\n    while ((currentObjectElement = currentObjectElement.nextElementSibling)) {\n      if (!filter || currentObjectElement.matches(filter)) {\n        apContentSiblings.push(currentObjectElement);\n      }\n    }\n    return apContentSiblings;\n  }\n  async function resolveAsyncIterator(target) {\n    const processedTarget = [];\n    if (!(target != null && typeof target[Symbol.iterator] === \"function\")) {\n      target = [target];\n    }\n    for (const targetItem of target) {\n      if (typeof targetItem[Symbol.asyncIterator] === \"function\") {\n        for await (const awaitTarget of targetItem) {\n          processedTarget.push(awaitTarget);\n        }\n      } else {\n        processedTarget.push(targetItem);\n      }\n    }\n    return processedTarget;\n  }\n\n  var ApFlickityControls = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.flickityCarousel.addEventListener(\n        \"flickity:ready\",\n        this._onSlideChanged.bind(this, false)\n      );\n      this.flickityCarousel.addEventListener(\n        \"flickity:slide-changed\",\n        this._onSlideChanged.bind(this, true)\n      );\n      this.apollo.on(\"click\", '[data-action=\"prev\"]', () => this.flickityCarousel.previous());\n      this.apollo.on(\"click\", '[data-action=\"next\"]', () => this.flickityCarousel.next());\n      this.apollo.on(\"click\", '[data-action=\"select\"]', (event, target) =>\n        this.flickityCarousel.select(`#${target.getAttribute(\"ap-controlsaria\")}`)\n      );\n    }\n    get flickityCarousel() {\n      return (this._flickityCarousel =\n        this._flickityCarousel || document.getElementById(this.getAttribute(\"controls\")));\n    }\n    async _onSlideChanged(animate = true) {\n      let flickityInstance = await this.flickityCarousel.flickityInstance;\n      let flickityactiveItems = Array.from(\n        this.querySelectorAll(`[ap-controlsaria=\"${flickityInstance.selectedElement.id}\"]`)\n      );\n      flickityactiveItems.forEach((activeItem) => {\n        activeItem.setAttribute(\"ap-currentaria\", \"true\");\n        apSiblings(activeItem).forEach((sibling) => sibling.removeAttribute(\"ap-currentaria\"));\n        requestAnimationFrame(() => {\n          if (activeItem.offsetParent && activeItem.offsetParent !== this) {\n            const windowHalfHeight = activeItem.offsetParent.clientHeight / 2,\n              windowHalfWidth = activeItem.offsetParent.clientWidth / 2;\n            let behavior = \"auto\";\n            if (animate) {\n              behavior = \"smooth\";\n            }\n            let top = activeItem.offsetTop - windowHalfHeight + activeItem.clientHeight / 2;\n            let left = activeItem.offsetLeft - windowHalfWidth + activeItem.clientWidth / 2;\n            activeItem.offsetParent.scrollTo({\n              behavior: behavior,\n              top: top,\n              left: left,\n            });\n          }\n        });\n      });\n    }\n  };\n  window.customElements.define(\"ap-flickitycontrols\", ApFlickityControls);\n\n  var ApVideoExternal = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.hasLoaded = false;\n      (async () => {\n        if (this.autoPlay) {\n          await this.untilObjectVisible({\n            rootMargin: \"300px\",\n            threshold: 0,\n          });\n          this.play();\n        } else {\n          this.addEventListener(\"click\", this.play.bind(this), {\n            once: true,\n          });\n        }\n      })();\n    }\n    get autoPlay() {\n      return this.hasAttribute(\"autoplay\");\n    }\n    get provider() {\n      return this.getAttribute(\"provider\");\n    }\n    async play() {\n      if (!this.hasLoaded) {\n        await this._setupVideoPlayer();\n      }\n      if (this.provider === \"youtube\") {\n        this.firstElementChild.contentWindow.postMessage(\n          JSON.stringify({\n            event: \"command\",\n            func: \"playVideo\",\n            args: \"\",\n          }),\n          \"*\"\n        );\n      } else if (this.provider === \"vimeo\") {\n        this.firstElementChild.contentWindow.postMessage(\n          JSON.stringify({\n            method: \"play\",\n          }),\n          \"*\"\n        );\n      }\n    }\n    pause() {\n      if (!this.hasLoaded) {\n        return;\n      }\n      if (this.provider === \"youtube\") {\n        this.firstElementChild.contentWindow.postMessage(\n          JSON.stringify({\n            event: \"command\",\n            func: \"pauseVideo\",\n            args: \"\",\n          }),\n          \"*\"\n        );\n      } else if (this.provider === \"vimeo\") {\n        this.firstElementChild.contentWindow.postMessage(\n          JSON.stringify({\n            method: \"pause\",\n          }),\n          \"*\"\n        );\n      }\n    }\n    _setupVideoPlayer() {\n      if (this._setupPromise) {\n        return this._setupPromise;\n      }\n      return (this._setupPromise = new Promise((resolve) => {\n        const node = this.querySelector(\"template\").content.firstElementChild.cloneNode(true);\n        node.onload = () => {\n          this.hasLoaded = true;\n          resolve();\n        };\n        this.innerHTML = \"\";\n        this.appendChild(node);\n      }));\n    }\n  };\n  window.customElements.define(\"ap-videoexternal\", ApVideoExternal);\n\n  var ApLoaderProduct = class {\n    static load(productHandle) {\n      if (!productHandle) {\n        return;\n      }\n      if (this.loadedProducts[productHandle]) {\n        return this.loadedProducts[productHandle];\n      }\n      this.loadedProducts[productHandle] = new Promise(async (resolve) => {\n        const response = await fetch(\n          `${window.themeVariables.routes.rootUrlWithoutSlash}/products/${productHandle}.js`\n        );\n        const responseAsJson = await response.json();\n        resolve(responseAsJson);\n      });\n      return this.loadedProducts[productHandle];\n    }\n  };\n  __publicField(ApLoaderProduct, \"loadedProducts\", {});\n\n  // js/custom-element/ui/model-media.js\n  // var ModelMedia = class extends HTMLElement {\n  //   constructor() {\n  //     super();\n  //     ApLoaderLibrary.load(\"modelViewerUiStyles\");\n  //     window.Shopify.loadFeatures([\n  //       {\n  //         name: \"shopify-xr\",\n  //         version: \"1.0\",\n  //         onLoad: this._setupShopifyXr.bind(this)\n  //       },\n  //       {\n  //         name: \"model-viewer-ui\",\n  //         version: \"1.0\",\n  //         onLoad: () => {\n  //           this.modelUi = new window.Shopify.ModelViewerUI(this.firstElementChild, { focusOnPlay: false });\n  //           const modelViewer = this.querySelector(\"model-viewer\");\n  //           modelViewer.addEventListener(\"shopify_model_viewer_ui_toggle_play\", () => {\n  //             modelViewer.dispatchEvent(new CustomEvent(\"model:played\", { bubbles: true }));\n  //           });\n  //           modelViewer.addEventListener(\"shopify_model_viewer_ui_toggle_pause\", () => {\n  //             modelViewer.dispatchEvent(new CustomEvent(\"model:paused\", { bubbles: true }));\n  //           });\n  //         }\n  //       }\n  //     ]);\n  //   }\n  //   disconnectedCallback() {\n  //     var _a;\n  //     (_a = this.modelUi) == null ? void 0 : _a.destroy();\n  //   }\n  //   play() {\n  //     if (this.modelUi) {\n  //       this.modelUi.play();\n  //     }\n  //   }\n  //   pause() {\n  //     if (this.modelUi) {\n  //       this.modelUi.pause();\n  //     }\n  //   }\n  //   async _setupShopifyXr() {\n  //     if (!window.ShopifyXR) {\n  //       document.addEventListener(\"shopify_xr_initialized\", this._setupShopifyXr.bind(this));\n  //     } else {\n  //       const product = await ApLoaderProduct.load(this.getAttribute(\"product-handle\"));\n  //       const models = product[\"media\"].filter((media) => media[\"media_type\"] === \"model\");\n  //       window.ShopifyXR.addModels(models);\n  //       window.ShopifyXR.setupXRElements();\n  //     }\n  //   }\n  // };\n  // window.customElements.define(\"model-media\", ModelMedia);\n\n  // js/custom-element/ui/native-video.js\n  // var NativeVideo = class extends HTMLElement {\n  //   constructor() {\n  //     super();\n  //     this.hasLoaded = false;\n  //     if (this.autoPlay) {\n  //       this.play();\n  //     } else {\n  //       this.addEventListener(\"click\", this.play.bind(this), { once: true });\n  //     }\n  //   }\n  //   get autoPlay() {\n  //     return this.hasAttribute(\"autoplay\");\n  //   }\n  //   play() {\n  //     if (!this.hasLoaded) {\n  //       this._replaceContent();\n  //     }\n  //     this.querySelector(\"video\").play();\n  //   }\n  //   pause() {\n  //     if (this.hasLoaded) {\n  //       this.querySelector(\"video\").pause();\n  //     }\n  //   }\n  //   _replaceContent() {\n  //     const node = this.querySelector(\"template\").content.firstElementChild.cloneNode(true);\n  //     this.innerHTML = \"\";\n  //     this.appendChild(node);\n  //     this.firstElementChild.addEventListener(\"play\", () => {\n  //       this.dispatchEvent(new CustomEvent(\"video:played\", { bubbles: true }));\n  //     });\n  //     this.firstElementChild.addEventListener(\"pause\", () => {\n  //       this.dispatchEvent(new CustomEvent(\"video:paused\", { bubbles: true }));\n  //     });\n  //     this.hasLoaded = true;\n  //   }\n  // };\n  // window.customElements.define(\"native-video\", NativeVideo);\n\n  var ApComboBox = class extends ApolloOpenableElement {\n    connectedCallback() {\n      super.connectedCallback();\n      this.options = Array.from(this.querySelectorAll('[role=\"option\"]'));\n      this.apollo.on(\"click\", '[role=\"option\"]', this._evtOnValueClicked.bind(this));\n      this.apollo.on(\"keydown\", '[role=\"listbox\"]', this._evtOnKeyDown.bind(this));\n      this.apollo.on(\"change\", \"select\", this._evtOnValueChanged.bind(this));\n      this.apollo.on(\"click\", \".ap-combobox__overlay\", () => (this.open = false));\n      if (this.hasAttribute(\"fit-toggle\")) {\n        const maxWidth = Math.max(...this.options.map((item) => item.clientWidth)),\n          control = document.querySelector(`[ap-controlsaria=\"${this.id}\"]`);\n        if (control) {\n          control.style.setProperty(\"--largest-option-width\", `${maxWidth + 2}px`);\n        }\n      }\n    }\n    get nativeSelect() {\n      return this.querySelector(\"select\");\n    }\n    set selectedValue(value) {\n      this.options.forEach((option) => {\n        let val = \"false\";\n        if (option.getAttribute(\"value\") === value) {\n          val = \"true\";\n        }\n        option.setAttribute(\"aria-selected\", val);\n      });\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          if (this.open) {\n            const apBoundingRect = this.getBoundingClientRect();\n            let status = apBoundingRect.top >= (window.innerHeight / 2) * 1.5;\n            this.classList.toggle(\"ap-top-combobox\", status);\n            setTimeout(() => this.focusTrap.activate(), 150);\n          } else {\n            this.focusTrap.deactivate();\n            setTimeout(() => this.classList.remove(\"ap-top-combobox\"), 200);\n          }\n          document.documentElement.classList.toggle(\"ap-lockmobile\", this.open);\n      }\n    }\n    _evtOnValueClicked(event, target) {\n      this.selectedValue = target.value;\n      this.nativeSelect.value = target.value;\n      this.nativeSelect.dispatchEvent(\n        new Event(\"change\", {\n          bubbles: true,\n        })\n      );\n      this.open = false;\n    }\n    _evtOnValueChanged(event, target) {\n      Array.from(this.nativeSelect.options).forEach((option) =>\n        option.toggleAttribute(\"selected\", target.value === option.value)\n      );\n      this.selectedValue = target.value;\n    }\n    _evtOnKeyDown(event) {\n      var _a, _b;\n      if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n        event.preventDefault();\n        if (event.key === \"ArrowDown\") {\n          (_a = document.activeElement.nextElementSibling) == null ? void 0 : _a.focus();\n        } else {\n          (_b = document.activeElement.previousElementSibling) == null ? void 0 : _b.focus();\n        }\n      }\n    }\n  };\n  window.customElements.define(\"ap-combobox\", ApComboBox);\n\n  var ApQuantitySelector = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.inputElement = this.querySelector(\"input\");\n      this.apollo.on(\n        \"click\",\n        \"button:first-child\",\n        () => (this.inputElement.quantity = this.inputElement.quantity - 1)\n      );\n      this.apollo.on(\n        \"click\",\n        \"button:last-child\",\n        () => (this.inputElement.quantity = this.inputElement.quantity + 1)\n      );\n    }\n  };\n  window.customElements.define(\"ap-quantityselector\", ApQuantitySelector);\n\n  var ApInputNumber = class extends HTMLInputElement {\n    connectedCallback() {\n      this.addEventListener(\"input\", this._evtOnValueInput.bind(this));\n      this.addEventListener(\"change\", this._evtOnValueChanged.bind(this));\n      this.addEventListener(\"keydown\", this._evtOnKeyDown.bind(this));\n    }\n    get quantity() {\n      return parseInt(this.value);\n    }\n    set quantity(quantity) {\n      const isNumeric =\n        (typeof quantity === \"number\" ||\n          (typeof quantity === \"string\" && quantity.trim() !== \"\")) &&\n        !isNaN(quantity);\n      if (quantity === \"\") {\n        return;\n      }\n      if (!isNumeric || quantity < 0) {\n        quantity = parseInt(quantity) || 1;\n      }\n      this.value = Math.max(\n        this.min || 1,\n        Math.min(quantity, this.max || Number.MAX_VALUE)\n      ).toString();\n      this.size = Math.max(this.value.length + 1, 2);\n    }\n    _evtOnValueInput() {\n      this.quantity = this.value;\n    }\n    _evtOnValueChanged() {\n      if (this.value === \"\") {\n        this.quantity = 1;\n      }\n    }\n    _evtOnKeyDown(event) {\n      event.stopPropagation();\n      if (event.key === \"ArrowUp\") {\n        this.quantity = this.quantity + 1;\n      } else if (event.key === \"ArrowDown\") {\n        this.quantity = this.quantity - 1;\n      }\n    }\n  };\n  window.customElements.define(\"ap-inputnumber\", ApInputNumber, {\n    extends: \"input\",\n  });\n\n  var CustomAnnouncementBar = class extends CustomHTMLElement {\n    async connectedCallback() {\n      await customElements.whenDefined(\"ap-announcementbar-item\");\n      this.items = Array.from(this.querySelectorAll(\"ap-announcementbar-item\"));\n      this.pendingTransitionStatus = false;\n      this.apollo.on(\"click\", '[data-action=\"prev\"]', this.previous.bind(this));\n      this.apollo.on(\"click\", '[data-action=\"next\"]', this.next.bind(this));\n      this.apollo.on(\"ap-announcementbar:content:open\", this._pausePlayer.bind(this));\n      this.apollo.on(\"ap-announcementbar:content:close\", this._startPlayer.bind(this));\n      if (window.ResizeObserver) {\n        this.resizeObserver = new ResizeObserver(this._apUpdatePropertiesCustom.bind(this));\n        this.resizeObserver.observe(this);\n      }\n      if (this.autoPlay) {\n        this._startPlayer();\n      }\n      if (Shopify.designMode) {\n        this.apollo.on(\"shopify:block:select\", (event) => this.select(event.target.index, false));\n      }\n    }\n    get autoPlay() {\n      return this.hasAttribute(\"auto-play\");\n    }\n    get selectedIndex() {\n      return this.items.findIndex((item) => item.selected);\n    }\n    previous() {\n      let val = (this.selectedIndex - 1 + this.items.length) % this.items.length;\n      this.select(val);\n    }\n    next() {\n      let val = (this.selectedIndex + 1 + this.items.length) % this.items.length;\n      this.select(val);\n    }\n    async select(index, animate = true) {\n      if (this.selectedIndex === index || this.pendingTransitionStatus) {\n        return;\n      }\n      this._pausePlayer();\n      this.pendingTransitionStatus = true;\n      await this.items[this.selectedIndex].deselect(animate);\n      await this.items[index].select(animate);\n      this.pendingTransitionStatus = false;\n      if (this.autoPlay) {\n        this._startPlayer();\n      }\n    }\n    _pausePlayer() {\n      clearInterval(this._interval);\n    }\n    _startPlayer() {\n      this._interval = setInterval(\n        this.next.bind(this),\n        parseInt(this.getAttribute(\"cycle-speed\")) * 1e3\n      );\n    }\n    _apUpdatePropertiesCustom(entries) {\n      entries.forEach((entry) => {\n        if (entry.target === this) {\n          const height = entry.borderBoxSize\n            ? entry.borderBoxSize.length > 0\n              ? entry.borderBoxSize[0].blockSize\n              : entry.borderBoxSize.blockSize\n            : entry.target.clientHeight;\n          document.documentElement.style.setProperty(\"--ap-announcementbar-height\", `${height}px`);\n        }\n      });\n    }\n  };\n  window.customElements.define(\"ap-announcementbar\", CustomAnnouncementBar);\n\n  var CustomAnnouncementBarItem = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (this.hasContent) {\n        this.contentElement = this.querySelector(\".ap-announcementbar__content\");\n        this.apollo.on(\"click\", '[data-action=\"open-content\"]', this.clickOpenContent.bind(this));\n        this.apollo.on(\"click\", '[data-action=\"close-content\"]', this.clickCloseContent.bind(this));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", this.clickOpenContent.bind(this));\n          this.addEventListener(\"shopify:block:deselect\", this.clickCloseContent.bind(this));\n        }\n      }\n    }\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get hasContent() {\n      return this.hasAttribute(\"has-content\");\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    get focusTrap() {\n      return (this._trapFocus =\n        this._trapFocus ||\n        createObjectFocusTrap(\n          this.contentElement.querySelector(\".ap-announcementbar__content-inner\"),\n          {\n            fallbackFocus: this,\n            clickOutsideDeactivates: (event) => !(event.target.tagName === \"BUTTON\"),\n            allowOutsideClick: (event) => event.target.tagName === \"BUTTON\",\n            onDeactivate: this.clickCloseContent.bind(this),\n            preventScroll: true,\n          }\n        ));\n    }\n    async select(animate = true) {\n      this.removeAttribute(\"hidden\");\n      await new Promise((resolve) => {\n        this.animate(\n          {\n            transform: [\"translateY(8px)\", \"translateY(0)\"],\n            opacity: [0, 1],\n          },\n          {\n            duration: animate ? 150 : 0,\n            easing: \"ease-in-out\",\n          }\n        ).onfinish = resolve;\n      });\n    }\n    async deselect(animate = true) {\n      await this.clickCloseContent();\n      await new Promise((resolve) => {\n        this.animate(\n          {\n            transform: [\"translateY(0)\", \"translateY(-8px)\"],\n            opacity: [1, 0],\n          },\n          {\n            duration: animate ? 150 : 0,\n            easing: \"ease-in-out\",\n          }\n        ).onfinish = resolve;\n      });\n      this.setAttribute(\"hidden\", \"\");\n    }\n    async clickOpenContent() {\n      if (this.hasContent) {\n        this.contentElement.addEventListener(\"transitionend\", () => this.focusTrap.activate(), {\n          once: true,\n        });\n        this.contentElement.removeAttribute(\"hidden\");\n        document.documentElement.classList.add(\"ap-lockall\");\n        this.dispatchEvent(\n          new CustomEvent(\"ap-announcementbar:content:open\", {\n            bubbles: true,\n          })\n        );\n      }\n    }\n    async clickCloseContent() {\n      if (!this.hasContent || this.contentElement.hasAttribute(\"hidden\")) {\n        return Promise.resolve();\n      }\n      await new Promise((resolve) => {\n        this.contentElement.addEventListener(\"transitionend\", () => resolve(), {\n          once: true,\n        });\n        this.contentElement.setAttribute(\"hidden\", \"\");\n        this.focusTrap.deactivate();\n        document.documentElement.classList.remove(\"ap-lockall\");\n        this.dispatchEvent(\n          new CustomEvent(\"ap-announcementbar:content:close\", {\n            bubbles: true,\n          })\n        );\n      });\n    }\n  };\n  window.customElements.define(\"ap-announcementbar-item\", CustomAnnouncementBarItem);\n\n  var SearchPage = class extends HTMLElement {\n    connectedCallback() {\n      this.facetToolbar = document.getElementById(\"mobile-facet-toolbar\");\n      this.tabsNav = document.getElementById(\"search-ap-navtabs\");\n      this.tabsNav.addEventListener(\"ap-navtabs:changed\", this._onCategoryChanged.bind(this));\n      this._completeSearch();\n    }\n    get terms() {\n      return this.getAttribute(\"terms\");\n    }\n    get sortSy() {\n      return this.querySelector(\"#input-s\").getAttribute(\"value\");\n    }\n    get completeFor() {\n      return JSON.parse(this.getAttribute(\"complete-for\")).filter((item) => !(item === \"\"));\n    }\n    async _completeSearch() {\n      const promisesList = [];\n      this.completeFor.forEach((item) => {\n        promisesList.push(\n          fetch(\n            `${window.themeVariables.routes.searchUrl}?section_id=${this.getAttribute(\n              \"section-id\"\n            )}&q=${this.terms}&type=${item}&options[prefix]=last&options[unavailable_products]=${\n              window.themeVariables.settings.searchProductsUnavailable\n            }`\n          )\n        );\n        // this.querySelector(\"#input-q\").setAttribute(\"value\", `${this.terms}`);\n        // console.log(this.terms);\n        this.querySelector(\"#clear-all\").setAttribute(\"href\", `/search?sort_by=${this.sortSy}&q=${this.terms}&type=product&options[prefix]=last&options[unavailable_products]=last`);\n      });\n      const responses = await Promise.all(promisesList);\n      await Promise.all(\n        responses.map(async (response) => {\n          const div = document.createElement(\"div\");\n          div.innerHTML = await response.text();\n          const categoryResultDiv = div.querySelector(\".main-search__category-result\"),\n            tabNavItem = div.querySelector(\"#search-ap-navtabs .ap-navtabs__item\");\n          if (categoryResultDiv) {\n            categoryResultDiv.setAttribute(\"hidden\", \"\");\n            this.insertAdjacentElement(\"beforeend\", categoryResultDiv);\n            this.tabsNav.addButton(tabNavItem);\n          }\n        })\n      );\n    }\n    _onCategoryChanged(event) {\n      const button = event.detail.button;\n      this.tabsNav.classList.toggle(\"is-collapsed\", button.getAttribute(\"data-type\") !== \"product\");\n    }\n  };\n  window.customElements.define(\"search-page\", SearchPage);\n\n  var WishlistCount = class extends CustomHTMLElement {\n    connectedCallback() {\n      let wishlist = this._getCookie(\"apwl\");\n      if (wishlist) {\n        wishlist = wishlist.split(\",\");\n        this.innerHTML = wishlist.length;\n      } else {\n        this.innerHTML = 0;\n      }\n    }\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-wishlistcount\", WishlistCount);\n\n  var WishlistButton = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.apollo.on(\"click\", '[data-action~=\"add\"]', this._addWishlist.bind(this));\n      this.apollo.on(\"click\", '[data-action~=\"remove\"]', this._removeWishlist.bind(this));\n      this._initWishlist();\n    }\n    _initWishlist() {\n      let wishlist = this._getCookie(\"apwl\");\n      let id = this.getAttribute(\"data-id\");\n      if (wishlist != \"\") {\n        wishlist = wishlist.split(\",\");\n        if (wishlist.includes(id)) {\n          this.classList.add(\"active\");\n          this.setAttribute(\"data-action\", \"remove\");\n          this.setAttribute(\"alt\", window.themeVariables.strings.removeWishlist);\n        }\n      }\n    }\n    _addWishlist() {\n      let wishlist = this._getCookie(\"apwl\");\n      let id = this.getAttribute(\"data-id\");\n      if (wishlist != \"\") {\n        wishlist = wishlist.split(\",\");\n        if (wishlist.includes(id) == false) {\n          wishlist.push(id);\n        }\n        wishlist = wishlist.join(\",\");\n      } else {\n        wishlist = id;\n      }\n      this._setCookie(\"apwl\", wishlist, 365);\n      this.classList.add(\"active\");\n      this.setAttribute(\"data-action\", \"remove\");\n      this.setAttribute(\"alt\", window.themeVariables.strings.removeWishlist);\n      document.querySelector(\"ap-wishlistcount\").innerHTML = wishlist.split(\",\").length;\n    }\n    _removeWishlist() {\n      let wishlist = this._getCookie(\"apwl\");\n      let id = this.getAttribute(\"data-id\");\n      if (wishlist != \"\") {\n        wishlist = wishlist.split(\",\");\n        if (wishlist.indexOf(id) > -1) {\n          wishlist.splice(wishlist.indexOf(id), 1);\n        }\n        wishlist = wishlist.join(\",\");\n        this._setCookie(\"apwl\", wishlist, 365);\n        this.classList.remove(\"active\");\n        this.setAttribute(\"data-action\", \"add\");\n        this.setAttribute(\"alt\", window.themeVariables.strings.addToWishlist);\n        document.querySelector(\"ap-wishlistcount\").innerHTML = wishlist.split(\",\").length;\n      } else {\n        document.querySelector(\"ap-wishlistcount\").innerHTML = 0;\n      }\n      if (document.querySelector(\"body\").classList.contains(\"page.wishlist\")) {\n        document.getElementById(\"product-item-\" + id).remove();\n      }\n    }\n    _setCookie(cname, cvalue, exdays) {\n      const d = new Date();\n      d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n      let expires = \"expires=\" + d.toUTCString();\n      document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\n    }\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-wishlistbutton\", WishlistButton);\n\n  var ApWishlistDisplay = class extends HTMLElement {\n    async connectedCallback() {\n      if (this.searchQueryString === \"\") {\n        document.getElementById(\"no-wishlistdisplay\").classList = \"active\";\n        return;\n      }\n      const response = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${this.searchQueryString}&resources[limit]=10&resources[type]=product&section_id=${this.sectionId}`\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const recentlyViewedProductsElement = div.querySelector(\"ap-wishlistdisplay\");\n      if (recentlyViewedProductsElement.hasChildNodes()) {\n        this.innerHTML = recentlyViewedProductsElement.innerHTML;\n      }\n    }\n\n    get searchQueryString() {\n      let wishlist = this._getCookie(\"apwl\");\n      if (wishlist != \"\") {\n        wishlist = wishlist.split(\",\");\n        return wishlist\n          .map((item) => \"id:\" + item)\n          .slice(0, this.productsCount)\n          .join(\" OR \");\n      }\n      return \"\";\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-wishlistdisplay\", ApWishlistDisplay);\n\n  var CompareCount = class extends CustomHTMLElement {\n    async connectedCallback() {\n      let compare = this._getCookie(\"apcp\");\n      if (compare) {\n        compare = compare.split(\",\");\n        this.innerHTML = compare.length;\n      } else {\n        this.innerHTML = 0;\n      }\n    }\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-comparecount\", CompareCount);\n\n  var CompareButton = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.apollo.on(\"click\", '[data-action~=\"add\"]', this._addCompare.bind(this));\n      this.apollo.on(\"click\", '[data-action~=\"remove\"]', this._removeCompare.bind(this));\n      this._initCompare();\n    }\n    _initCompare() {\n      let compare = this._getCookie(\"apcp\");\n      let id = this.getAttribute(\"data-id\");\n      if (compare != \"\") {\n        compare = compare.split(\",\");\n        if (compare.includes(id)) {\n          this.classList.add(\"active\");\n          this.setAttribute(\"data-action\", \"remove\");\n          this.setAttribute(\"alt\", window.themeVariables.strings.removeCompare);\n        }\n      }\n    }\n    _addCompare() {\n      let compare = this._getCookie(\"apcp\");\n      let id = this.getAttribute(\"data-id\");\n      if (compare != \"\") {\n        compare = compare.split(\",\");\n        if (compare.includes(id) == false) {\n          compare.push(id);\n        }\n        compare = compare.join(\",\");\n      } else {\n        compare = id;\n      }\n      this._setCookie(\"apcp\", compare, 365);\n      this.classList.add(\"active\");\n      this.setAttribute(\"data-action\", \"remove\");\n      this.setAttribute(\"alt\", window.themeVariables.strings.removeCompare);\n      document.querySelector(\"ap-comparecount\").innerHTML = compare.split(\",\").length;\n    }\n    _removeCompare() {\n      let compare = this._getCookie(\"apcp\");\n      let id = this.getAttribute(\"data-id\");\n      if (compare != \"\") {\n        compare = compare.split(\",\");\n        if (compare.indexOf(id) > -1) {\n          compare.splice(compare.indexOf(id), 1);\n        }\n        compare = compare.join(\",\");\n        this._setCookie(\"apcp\", compare, 365);\n        this.classList.remove(\"active\");\n        this.setAttribute(\"data-action\", \"add\");\n        this.setAttribute(\"alt\", window.themeVariables.strings.addToCompare);\n        document.querySelector(\"ap-comparecount\").innerHTML = compare.split(\",\").length;\n      } else {\n        document.querySelector(\"ap-comparecount\").innerHTML = 0;\n      }\n\n      if (document.querySelector(\"body\").classList.contains(\"page.compare\")) {\n        document.getElementById(\"product-item-\" + id).remove();\n      }\n    }\n    _setCookie(cname, cvalue, exdays) {\n      const d = new Date();\n      d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n      let expires = \"expires=\" + d.toUTCString();\n      document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\n    }\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-comparebutton\", CompareButton);\n\n  var ApCompareDisplay = class extends HTMLElement {\n    async connectedCallback() {\n      if (this.searchQueryString === \"\") {\n        document.getElementById(\"no-comparedisplay\").classList = \"active\";\n        return;\n      }\n      const response = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${this.searchQueryString}&resources[limit]=10&resources[type]=product&section_id=${this.sectionId}`\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const recentlyViewedProductsElement = div.querySelector(\"ap-comparedisplay\");\n      if (recentlyViewedProductsElement.hasChildNodes()) {\n        this.innerHTML = recentlyViewedProductsElement.innerHTML;\n      }\n    }\n\n    get searchQueryString() {\n      let compare = this._getCookie(\"apcp\");\n      if (compare != \"\") {\n        compare = compare.split(\",\");\n        return compare\n          .map((item) => \"id:\" + item)\n          .slice(0, this.productsCount)\n          .join(\" OR \");\n      }\n      return \"\";\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-comparedisplay\", ApCompareDisplay);\n\n  var CookieBar = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (window.Shopify && window.Shopify.designMode) {\n        this.rootApollo.on(\"shopify:section:select\", (event) =>\n          apolloShopifyEventFilter(event, this, () => (this.open = true))\n        );\n        this.rootApollo.on(\"shopify:section:deselect\", (event) =>\n          apolloShopifyEventFilter(event, this, () => (this.open = false))\n        );\n      }\n      this.apollo.on(\"click\", '[data-action~=\"accept-policy\"]', this._acceptPolicy.bind(this));\n      this.apollo.on(\"click\", '[data-action~=\"decline-policy\"]', this._declinePolicy.bind(this));\n      window.Shopify.loadFeatures([\n        {\n          name: \"consent-tracking-api\",\n          version: \"0.1\",\n          onLoad: this._onCookieBarSetup.bind(this),\n        },\n      ]);\n    }\n    set open(value) {\n      this.toggleAttribute(\"hidden\", !value);\n    }\n    _onCookieBarSetup() {\n      if (this._getCookie(\"cookie_policy\") == \"true\") {\n        this.open = false;\n      } else {\n        this.open = true;\n      }\n    }\n    _acceptPolicy() {\n      this._setCookie(\"cookie_policy\", true, 365);\n      this.open = false;\n    }\n    _declinePolicy() {\n      this.open = false;\n    }\n    _setCookie(cname, cvalue, exdays) {\n      const d = new Date();\n      d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n      let expires = \"expires=\" + d.toUTCString();\n      document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\n    }\n    _getCookie(cname) {\n      let name = cname + \"=\";\n      let ca = document.cookie.split(\";\");\n      for (let i = 0; i < ca.length; i++) {\n        let c = ca[i];\n        while (c.charAt(0) == \" \") {\n          c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n          return c.substring(name.length, c.length);\n        }\n      }\n      return \"\";\n    }\n  };\n  window.customElements.define(\"ap-cookiebar\", CookieBar);\n\n  ApProductRecommendations = class extends HTMLElement {\n    async connectedCallback() {\n      if (!this.hasAttribute(\"use-automaticrecommendations\")) {\n        return;\n      }\n      const response = await fetch(\n        `${window.themeVariables.routes.productUrlRecommendations}?product_id=${this.productId}&limit=${this.recommendationsCount}&section_id=${this.sectionId}`\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const productRecommendationsElement = div.querySelector(\"ap-productrecommendations\");\n      if (productRecommendationsElement.hasChildNodes()) {\n        this.innerHTML = productRecommendationsElement.innerHTML;\n      }\n    }\n    get productId() {\n      return this.getAttribute(\"product-id\");\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n    get recommendationsCount() {\n      return parseInt(this.getAttribute(\"recommendations-count\") || 4);\n    }\n  };\n  window.customElements.define(\"ap-productrecommendations\", ApProductRecommendations);\n\n  var ApRecentlyProductsViewed = class extends HTMLElement {\n    async connectedCallback() {\n      if (this.searchQueryString === \"\") {\n        return;\n      }\n      const response = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${this.searchQueryString}&resources[limit]=10&resources[type]=product&section_id=${this.sectionId}`\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const recentlyViewedProductsElement = div.querySelector(\"ap-recentlyproductsviewed\");\n      if (recentlyViewedProductsElement.hasChildNodes()) {\n        this.innerHTML = recentlyViewedProductsElement.innerHTML;\n      }\n    }\n    get searchQueryString() {\n      const items = JSON.parse(localStorage.getItem(\"theme:ap-recentlyproductsviewed\") || \"[]\");\n      if (\n        this.hasAttribute(\"exclude-product-id\") &&\n        items.includes(parseInt(this.getAttribute(\"exclude-product-id\")))\n      ) {\n        items.splice(items.indexOf(parseInt(this.getAttribute(\"exclude-product-id\"))), 1);\n      }\n      return items\n        .map((item) => \"id:\" + item)\n        .slice(0, this.productsCount)\n        .join(\" OR \");\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n    get productsCount() {\n      return this.getAttribute(\"products-count\") || 4;\n    }\n  };\n  window.customElements.define(\"ap-recentlyproductsviewed\", ApRecentlyProductsViewed);\n\n  var ApRecentlyProductsViewedPopup = class extends ApolloOpenableElement {\n    async connectedCallback() {\n      super.connectedCallback();\n      if (this.searchQueryString === \"\") {\n        return;\n      }\n      document\n        .getElementById(\"shopify-section-recently-viewed-products-popup\")\n        .classList.add(\"active\");\n      const response = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${this.searchQueryString}&resources[limit]=10&resources[type]=product&section_id=${this.sectionId}`\n      );\n\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const recentlyViewedProductsElement = div.querySelector(\"ap-recentlyproductsviewed-popup\");\n      if (recentlyViewedProductsElement.hasChildNodes()) {\n        this.innerHTML = recentlyViewedProductsElement.innerHTML;\n      }\n      const productsviewedbutton = div.querySelector(\"ap-productsviewed-button\");\n      if (productsviewedbutton.hasChildNodes()) {\n        document.querySelector(\"ap-productsviewed-button\").innerHTML =\n          productsviewedbutton.innerHTML;\n      }\n\n      if (this.hasAttribute(\"reverse-breakpoint\")) {\n        this.originalDirection = this.classList.contains(\"drawer--from-left\") ? \"left\" : \"right\";\n        const matchMedia2 = window.matchMedia(this.getAttribute(\"reverse-breakpoint\"));\n        matchMedia2.addListener(this._objCheckReverseOpenDirec.bind(this));\n        this._objCheckReverseOpenDirec(matchMedia2);\n      }\n      this.apollo.on(\"click\", \".drawer__overlay\", () => (this.open = false));\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          document.documentElement.classList.toggle(\"ap-lockall\", this.open);\n      }\n    }\n    _objCheckReverseOpenDirec(match) {\n      this.classList.remove(\"drawer--from-left\");\n      if (\n        (this.originalDirection === \"left\" && !match.matches) ||\n        (this.originalDirection !== \"left\" && match.matches)\n      ) {\n        this.classList.add(\"drawer--from-left\");\n      }\n    }\n    get searchQueryString() {\n      const items = JSON.parse(localStorage.getItem(\"theme:ap-recentlyproductsviewed\") || \"[]\");\n      if (\n        this.hasAttribute(\"exclude-product-id\") &&\n        items.includes(parseInt(this.getAttribute(\"exclude-product-id\")))\n      ) {\n        items.splice(items.indexOf(parseInt(this.getAttribute(\"exclude-product-id\"))), 1);\n      }\n      return items\n        .map((item) => \"id:\" + item)\n        .slice(0, this.productsCount)\n        .join(\" OR \");\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n    get productsCount() {\n      return this.getAttribute(\"products-count\") || 4;\n    }\n  };\n  window.customElements.define(\"ap-recentlyproductsviewed-popup\", ApRecentlyProductsViewedPopup);\n\n  var ApRecentlyProductsViewedPopupButton = class extends CustomHTMLElement {};\n  window.customElements.define(\"ap-productsviewed-button\", ApRecentlyProductsViewedPopupButton);\n\n  var ApCrossSelling = class extends HTMLElement {\n    async connectedCallback() {\n      if (this.searchQueryString === \"\") {\n        return;\n      }\n      const response = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${this.searchQueryString}&resources[limit]=10&resources[type]=product&section_id=${this.sectionId}`\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const recentlyViewedProductsElement = div.querySelector(\"ap-crossselling\");\n      if (recentlyViewedProductsElement.hasChildNodes()) {\n        this.innerHTML = recentlyViewedProductsElement.innerHTML;\n      }\n      const closeModal = document.getElementById(\"close\");\n      closeModal.onclick = () => {\n        document.getElementById(\"modal-productsell\").classList.remove(\"modal-active\");\n      };\n    }\n\n    get searchQueryString() {\n      let ids = this.getAttribute(\"data-id\");\n      if (ids != \"\") {\n        ids = ids.split(\",\");\n        return ids.map((item) => \"id:\" + item).join(\" OR \");\n      }\n      return \"\";\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n  };\n  window.customElements.define(\"ap-crossselling\", ApCrossSelling);\n\n  var ApUpsell = class extends HTMLElement {\n    async connectedCallback() {\n      if (this.searchQueryString === \"\") {\n        return;\n      }\n      const response = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${this.searchQueryString}&resources[limit]=10&resources[type]=product&section_id=${this.sectionId}`\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      const recentlyViewedProductsElement = div.querySelector(\"ap-upsell\");\n      if (recentlyViewedProductsElement.hasChildNodes()) {\n        this.innerHTML = recentlyViewedProductsElement.innerHTML;\n      }\n\n      const closeModal = document.getElementById(\"close\");\n      closeModal.onclick = () => {\n        document.getElementById(\"modal-productsell\").classList.remove(\"modal-active\");\n      };\n    }\n\n    get searchQueryString() {\n      let ids = this.getAttribute(\"data-id\");\n      if (ids != \"\") {\n        ids = ids.split(\",\");\n        return ids.map((item) => \"id:\" + item).join(\" OR \");\n      }\n      return \"\";\n    }\n    get sectionId() {\n      return this.getAttribute(\"section-id\");\n    }\n  };\n  window.customElements.define(\"ap-upsell\", ApUpsell);\n\n  var ApLoadMoreProducts = class extends HTMLElement {\n    async connectedCallback() {\n      if (this.searchQueryString === \"\" || document.getElementById(\"ap_loadmoreproduct\") == null) {\n        return;\n      }\n      this._onWindowScrollListener = apStream(this._function_loadmore.bind(this), 100);\n      window.addEventListener(\"scroll\", this._onWindowScrollListener);\n    }\n\n    _function_loadmore(event) {\n      let loadmore = document.getElementById(\"ap_loadmoreproduct\");\n      if (window.scrollY - loadmore.offsetTop > 0) {\n        if (document.getElementById(\"ap_loadmoreproduct\").className == \"\") {\n          document.getElementById(\"ap_loadmoreproduct\").classList.add(\"loading\");\n          this._nextpage();\n        }\n      }\n    }\n\n    _nextpage() {\n      let page = parseInt(document.getElementById(\"ap_page_load\").value);\n      let max_page = parseInt(document.getElementById(\"ap_max_page\").value);\n      let nextpage = page + 1;\n      if (max_page >= nextpage) {\n        const formData = new FormData(document.getElementById(\"ap-facetfilters-form\"));\n        let searchParamsAsString = new URLSearchParams(formData).toString();\n        if (searchParamsAsString.indexOf(\"page=\" + page) == -1) {\n          searchParamsAsString = searchParamsAsString + \"&page=\" + nextpage;\n        } else {\n          searchParamsAsString = searchParamsAsString.replace(\"page=\" + page, \"page=\" + nextpage);\n        }\n        document.getElementById(\"loading-more-product-icon\").style.display = \"block\";\n        let url = `${\n          window.location.pathname\n        }?${searchParamsAsString}&section_id=${this.getAttribute(\"section-id\")}`;\n        fetch(url)\n          .then((x) => x.text())\n          .then((y) => this._updatehtmlcontent(y));\n      }\n    }\n\n    _updatehtmlcontent(content) {\n      const parser = new DOMParser();\n      const html = parser.parseFromString(content, \"text/html\");\n      const loadmoreproduct = html.getElementById(\"ap_productlist\");\n      if (loadmoreproduct.children.length) {\n        let str = \"\";\n        for (let i = 0; i < loadmoreproduct.children.length; i++) {\n          document.getElementById(\"ap_productlist\").append(loadmoreproduct.children[i]);\n          i--;\n        }\n        let page = parseInt(document.getElementById(\"ap_page_load\").value) + 1;\n        document.getElementById(\"ap_page_load\").value = page;\n        if (window.scrollY - document.getElementById(\"ap_loadmoreproduct\").offsetTop < 0) {\n          document.getElementById(\"ap_loadmoreproduct\").classList = \"\";\n          this._onWindowScrollListener = apStream(this._function_loadmore.bind(this), 100);\n          window.addEventListener(\"scroll\", this._onWindowScrollListener);\n        }\n      }\n      document.getElementById(\"loading-more-product-icon\").style.display = \"none\";\n    }\n  };\n  window.customElements.define(\"ap-loadmoreproduct\", ApLoadMoreProducts);\n\n  function apGetSizedOfMediaUrl(media, size) {\n    let src = \"\";\n    if (typeof media === \"string\") {\n      src = media;\n    } else {\n      if (media[\"preview_image\"]) {\n        src = media[\"preview_image\"][\"src\"];\n      } else {\n        src = media[\"url\"];\n      }\n    }\n    if (size === null) {\n      return src;\n    }\n    if (size === \"master\") {\n      return src.replace(/http(s)?:/, \"\");\n    }\n    const match = src.match(/\\.(jpeg|jpg|png|bmp|gif|tiff|tif|bitmap|webp|avif)(\\?v=\\d+)?$/i);\n    if (match) {\n      const prefix = src.split(match[0]);\n      const suffix = match[0];\n      return (prefix[0] + \"_\" + size + suffix).replace(/http(s)?:/, \"\");\n    } else {\n      return null;\n    }\n  }\n\n  function apGetMediaSrcset(media, sizeList) {\n    let srcset = [];\n    let supportedSizes = apGetSupportedSizes(media, sizeList);\n    if (typeof media === \"string\") {\n      supportedSizes = sizeList;\n    }\n    supportedSizes.forEach((supportedSize) => {\n      srcset.push(`${apGetSizedOfMediaUrl(media, supportedSize + \"x\")} ${supportedSize}w`);\n    });\n    return srcset.join(\",\");\n  }\n\n  function apGetSupportedSizes(media, desiredSizes) {\n    let supportedSizes = [];\n    let mediaWidth = media[\"preview_image\"][\"width\"];\n    desiredSizes.forEach((width) => {\n      if (mediaWidth >= width) {\n        supportedSizes.push(width);\n      }\n    });\n    return supportedSizes;\n  }\n\n  function imageLoaded(image) {\n    return new Promise((resolve) => {\n      if (!image || image.tagName !== \"IMG\" || image.complete) {\n        resolve();\n      } else {\n        image.onload = () => resolve();\n      }\n    });\n  }\n\n  var ApAnimationCustom = class {\n    constructor(effect) {\n      this._effect = effect;\n      this._playState = \"idle\";\n      this._finished = Promise.resolve();\n    }\n    get finished() {\n      return this._finished;\n    }\n    get animationEffects() {\n      if (this._effect instanceof ApEffectOfCustomKeyframe) {\n        return [this._effect];\n      } else {\n        return this._effect.animationEffects;\n      }\n    }\n    cancel() {\n      this.animationEffects.forEach((animationEffect) => animationEffect.cancel());\n    }\n    finish() {\n      this.animationEffects.forEach((animationEffect) => animationEffect.finish());\n    }\n    play() {\n      this._playState = \"running\";\n      this._effect.play();\n      this._finished = this._effect.finished;\n      this._finished.then(\n        () => {\n          this._playState = \"finished\";\n        },\n        (rejection) => {\n          this._playState = \"idle\";\n        }\n      );\n    }\n  };\n  var ApEffectOfCustomKeyframe = class {\n    constructor(target, keyframes, options = {}) {\n      if (!target) {\n        return;\n      }\n      if (\"Animation\" in window) {\n        this._customanimation = new Animation(new KeyframeEffect(target, keyframes, options));\n      } else {\n        options[\"fill\"] = \"forwards\";\n        this._customanimation = target.animate(keyframes, options);\n        this._customanimation.pause();\n      }\n      this._customanimation.addEventListener(\"finish\", () => {\n        target.style.opacity = keyframes.hasOwnProperty(\"opacity\")\n          ? keyframes[\"opacity\"][keyframes[\"opacity\"].length - 1]\n          : null;\n        target.style.visibility = keyframes.hasOwnProperty(\"visibility\")\n          ? keyframes[\"visibility\"][keyframes[\"visibility\"].length - 1]\n          : null;\n      });\n    }\n    get finished() {\n      if (!this._customanimation) {\n        return Promise.resolve();\n      }\n      return this._customanimation.finished\n        ? this._customanimation.finished\n        : new Promise((resolve) => (this._customanimation.onfinish = resolve));\n    }\n    play() {\n      if (this._customanimation) {\n        this._customanimation.startTime = null;\n        this._customanimation.play();\n      }\n    }\n    cancel() {\n      if (this._customanimation) {\n        this._customanimation.cancel();\n      }\n    }\n    finish() {\n      if (this._customanimation) {\n        this._customanimation.finish();\n      }\n    }\n  };\n  var ApEffectGroup = class {\n    constructor(childrenEffects) {\n      this._childrenEffects = childrenEffects;\n      this._finished = Promise.resolve();\n    }\n    get finished() {\n      return this._finished;\n    }\n    get animationEffects() {\n      return this._childrenEffects.flatMap((effect) => {\n        return effect instanceof ApEffectOfCustomKeyframe ? effect : effect.animationEffects;\n      });\n    }\n  };\n  var ApEffectParallel = class extends ApEffectGroup {\n    play() {\n      const promises = [];\n      for (const effect of this._childrenEffects) {\n        effect.play();\n        promises.push(effect.finished);\n      }\n      this._finished = Promise.all(promises);\n    }\n  };\n  var ApEffectSequence = class extends ApEffectGroup {\n    play() {\n      this._finished = new Promise(async (resolve, reject) => {\n        try {\n          for (const effect of this._childrenEffects) {\n            effect.play();\n            await effect.finished;\n          }\n          resolve();\n        } catch (exception) {\n          reject();\n        }\n      });\n    }\n  };\n\n  var ApSlideshowItem = class extends HTMLElement {\n    async connectedCallback() {\n      this._pendingAnimations = [];\n      this.addEventListener(\"ap-splitlines:re-split\", (event) => {\n        Array.from(event.target.children).forEach(\n          (line) => (line.style.visibility = this.selected ? \"visible\" : \"hidden\")\n        );\n      });\n      if (MediaFeatures.prefersReducedMotion()) {\n        this.setAttribute(\"ap-revealvisibility\", \"\");\n        Array.from(this.querySelectorAll(\"[reveal], [ap-revealvisibility]\")).forEach((item) => {\n          item.removeAttribute(\"reveal\");\n          item.removeAttribute(\"ap-revealvisibility\");\n        });\n      }\n    }\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    async transitionToLeave(transitionType, useEffect = true) {\n      if (transitionType !== \"reveal\") {\n        this.setAttribute(\"hidden\", \"\");\n      }\n      this._pendingAnimations.forEach((animation2) => animation2.cancel());\n      this._pendingAnimations = [];\n      let animation = null,\n        textElements = await resolveAsyncIterator(\n          this.querySelectorAll(\n            \"ap-splitlines, .button-group, .button-wrapper\"\n          )\n        );\n      let elementImages = Array.from(this.querySelectorAll(\".slideshow__image-wrapper\"));\n      switch (transitionType) {\n        case \"sweep\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                this,\n                {\n                  visibility: [\"visible\", \"hidden\"],\n                },\n                {\n                  duration: 500,\n                }\n              ),\n              new ApEffectParallel(\n                textElements.map((item) => {\n                  return new ApEffectOfCustomKeyframe(item, {\n                    opacity: [1, 0],\n                    visibility: [\"visible\", \"hidden\"],\n                  });\n                })\n              ),\n            ])\n          );\n          break;\n        case \"fade\":\n          animation = new ApAnimationCustom(\n            new ApEffectOfCustomKeyframe(\n              this,\n              {\n                opacity: [1, 0],\n                visibility: [\"visible\", \"hidden\"],\n              },\n              {\n                duration: 250,\n                easing: \"ease-in-out\",\n              }\n            )\n          );\n          break;\n        case \"reveal\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectParallel(\n                textElements.reverse().map((item) => {\n                  return new ApEffectOfCustomKeyframe(\n                    item,\n                    {\n                      opacity: [1, 0],\n                      visibility: [\"visible\", \"hidden\"],\n                    },\n                    {\n                      duration: 250,\n                      easing: \"ease-in-out\",\n                    }\n                  );\n                })\n              ),\n              new ApEffectParallel(\n                elementImages.map((item) => {\n                  if (!item.classList.contains(\"slideshow__image-wrapper--secondary\")) {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"visible\", \"hidden\"],\n                        clipPath: [\"inset(0 0 0 0)\", \"inset(0 0 100% 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        easing: \"cubic-bezier(0.99, 0.01, 0.50, 0.94)\",\n                      }\n                    );\n                  } else {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"visible\", \"hidden\"],\n                        clipPath: [\"inset(0 0 0 0)\", \"inset(100% 0 0 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        easing: \"cubic-bezier(0.99, 0.01, 0.50, 0.94)\",\n                      }\n                    );\n                  }\n                })\n              ),\n            ])\n          );\n          break;\n      }\n      await this._executeAnimation(animation, useEffect);\n      if (transitionType === \"reveal\") {\n        this.setAttribute(\"hidden\", \"\");\n      }\n    }\n    async transitionToEnter(transitionType, useEffect = true, reverseDirection = false) {\n      this.removeAttribute(\"hidden\");\n      await this._untilReady();\n      let animation = null,\n        textElements = await resolveAsyncIterator(\n          this.querySelectorAll(\n            \"ap-splitlines, .button-group, .button-wrapper\"\n          )\n        ),\n        elementImages = Array.from(this.querySelectorAll(\".slideshow__image-wrapper\"));\n      switch (transitionType) {\n        case \"sweep\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                this,\n                {\n                  visibility: [\"hidden\", \"visible\"],\n                  clipPath: reverseDirection\n                    ? [\"inset(0 100% 0 0)\", \"inset(0 0 0 0)\"]\n                    : [\"inset(0 0 0 100%)\", \"inset(0 0 0 0)\"],\n                },\n                {\n                  duration: 500,\n                  easing: \"cubic-bezier(1, 0, 0, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                textElements.map((item, index) => {\n                  return new ApEffectOfCustomKeyframe(\n                    item,\n                    {\n                      opacity: [0, 1],\n                      visibility: [\"hidden\", \"visible\"],\n                      clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                      transform: [\"translateY(100%)\", \"translateY(0)\"],\n                    },\n                    {\n                      duration: 450,\n                      delay: 100 * index,\n                      easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                    }\n                  );\n                })\n              ),\n            ])\n          );\n          break;\n        case \"fade\":\n          animation = new ApAnimationCustom(\n            new ApEffectOfCustomKeyframe(\n              this,\n              {\n                opacity: [0, 1],\n                visibility: [\"hidden\", \"visible\"],\n              },\n              {\n                duration: 250,\n                easing: \"ease-in-out\",\n              }\n            )\n          );\n          break;\n        case \"reveal\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectParallel(\n                elementImages.map((item) => {\n                  if (!item.classList.contains(\"slideshow__image-wrapper--secondary\")) {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"hidden\", \"visible\"],\n                        clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        delay: 100,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  } else {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"hidden\", \"visible\"],\n                        clipPath: [\"inset(100% 0 0 0)\", \"inset(0 0 0 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        delay: 100,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                })\n              ),\n              new ApEffectParallel(\n                textElements.map((item, index) => {\n                  return new ApEffectOfCustomKeyframe(\n                    item,\n                    {\n                      opacity: [0, 1],\n                      visibility: [\"hidden\", \"visible\"],\n                      clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                      transform: [\"translateY(100%)\", \"translateY(0)\"],\n                    },\n                    {\n                      duration: 450,\n                      delay: 100 * index,\n                      easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                    }\n                  );\n                })\n              ),\n            ])\n          );\n          break;\n      }\n      return this._executeAnimation(animation, useEffect);\n    }\n    async _executeAnimation(animation, useEffect) {\n      this._pendingAnimations.push(animation);\n      useEffect ? animation.play() : animation.finish();\n      return animation.finished;\n    }\n    async _untilReady() {\n      return Promise.all(this._getVisibleImages().map((image) => imageLoaded(image)));\n    }\n    _preloadImages() {\n      this._getVisibleImages().forEach((image) => {\n        image.setAttribute(\"loading\", \"eager\");\n      });\n    }\n    _getVisibleImages() {\n      return Array.from(this.querySelectorAll(\"img\")).filter((image) => {\n        return getComputedStyle(image.parentElement).display !== \"none\";\n      });\n    }\n  };\n  window.customElements.define(\"ap-slideshowitem\", ApSlideshowItem);\n\n  var ApBlockerMixinVerticalScroll = {\n    _blockVerticalScroll(threshold = 18) {\n      this.addEventListener(\"touchstart\", (event) => {\n        this.firstTouchClientX = event.touches[0].clientX;\n      });\n      this.addEventListener(\n        \"touchmove\",\n        (event) => {\n          const touchClientX = event.touches[0].clientX - this.firstTouchClientX;\n          if (Math.abs(touchClientX) > threshold) {\n            event.preventDefault();\n          }\n        },\n        {\n          passive: false,\n        }\n      );\n    },\n  };\n\n  var ApSlideshow = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.listItems = Array.from(this.querySelectorAll(\"ap-slideshowitem\"));\n      this.pageDots = this.querySelector(\"ap-pagedots\");\n      this.transitioningStatus = false;\n      if (this.listItems.length > 1) {\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:deselect\", this.startPlayer.bind(this));\n          this.addEventListener(\"shopify:block:select\", (event) => {\n            this.pausePlayer();\n            this.intersectionObserver.disconnect();\n            if (!(!event.detail.load && event.target.selected)) {\n              this.select(event.target.index, !event.detail.load);\n            }\n          });\n        }\n        this.addEventListener(\"swiperight\", this.previous.bind(this));\n        this.addEventListener(\"swipeleft\", this.next.bind(this));\n        this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        this._blockVerticalScroll();\n      }\n      this._setupTextOverlayImageVisibility();\n    }\n    get selectedIndex() {\n      return this.listItems.findIndex((item) => item.selected);\n    }\n    get transitionType() {\n      if (MediaFeatures.prefersReducedMotion()) {\n        return \"fade\";\n      } else {\n        return this.getAttribute(\"transition-type\");\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      await this.listItems[this.selectedIndex]\n        .transitionToEnter(this.transitionType)\n        .catch((error) => {});\n      this.startPlayer();\n    }\n    previous() {\n      this.select(\n        (this.selectedIndex - 1 + this.listItems.length) % this.listItems.length,\n        true,\n        true\n      );\n    }\n    next() {\n      this.select(\n        (this.selectedIndex + 1 + this.listItems.length) % this.listItems.length,\n        true,\n        false\n      );\n    }\n    async select(index, shouldTransition = true, reverseDirection = false) {\n      if (this.transitionType === \"reveal\" && this.transitioningStatus) {\n        return;\n      }\n      this.transitioningStatus = true;\n      const itemPrevious = this.listItems[this.selectedIndex],\n        newItem = this.listItems[index];\n      this.listItems[(newItem.index + 1) % this.listItems.length]._preloadImages();\n      if (itemPrevious && itemPrevious !== newItem) {\n        if (this.transitionType !== \"reveal\") {\n          itemPrevious.transitionToLeave(this.transitionType, shouldTransition);\n        } else {\n          await itemPrevious.transitionToLeave(this.transitionType, shouldTransition);\n        }\n      }\n      if (this.pageDots) {\n        this.pageDots.selectedIndex = newItem.index;\n      }\n      await newItem\n        .transitionToEnter(this.transitionType, shouldTransition, reverseDirection)\n        .catch((error) => {});\n      this.transitioningStatus = false;\n    }\n    pausePlayer() {\n      this.style.setProperty(\"--section-animation-play-state\", \"paused\");\n    }\n    startPlayer() {\n      if (this.hasAttribute(\"auto-play\")) {\n        this.style.setProperty(\"--section-animation-play-state\", \"running\");\n      }\n    }\n  };\n  Object.assign(ApSlideshow.prototype, ApBlockerMixinVerticalScroll);\n  window.customElements.define(\"ap-slideshow\", ApSlideshow);\n\n  var ApProductsSlideshowItem = class extends HTMLElement {\n    async connectedCallback() {\n      this._pendingAnimations = [];\n      this.addEventListener(\"ap-splitlines:re-split\", (event) => {\n        Array.from(event.target.children).forEach(\n          (line) => (line.style.visibility = this.selected ? \"visible\" : \"hidden\")\n        );\n      });\n      if (MediaFeatures.prefersReducedMotion()) {\n        this.setAttribute(\"ap-revealvisibility\", \"\");\n        Array.from(this.querySelectorAll(\"[reveal], [ap-revealvisibility]\")).forEach((item) => {\n          item.removeAttribute(\"reveal\");\n          item.removeAttribute(\"ap-revealvisibility\");\n        });\n      }\n    }\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    async transitionToLeave(transitionType, useEffect = true) {\n      if (transitionType !== \"reveal\") {\n        this.setAttribute(\"hidden\", \"\");\n      }\n      this._pendingAnimations.forEach((animation2) => animation2.cancel());\n      this._pendingAnimations = [];\n      let animation = null,\n        textElements = await resolveAsyncIterator(\n          this.querySelectorAll(\n            \"ap-splitlines, .button-group, .button-wrapper\"\n          )\n        );\n      let elementImages = Array.from(this.querySelectorAll(\".slideshow__image-wrapper\"));\n      switch (transitionType) {\n        case \"sweep\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                this,\n                {\n                  visibility: [\"visible\", \"hidden\"],\n                },\n                {\n                  duration: 500,\n                }\n              ),    \n              new ApEffectParallel(\n                textElements.map((item) => {\n                  return new ApEffectOfCustomKeyframe(item, {\n                    opacity: [1, 0],\n                    visibility: [\"visible\", \"hidden\"],\n                  });\n                })\n              ),\n            ])\n          );\n          break;\n        case \"fade\":\n          animation = new ApAnimationCustom(\n            new ApEffectOfCustomKeyframe(\n              this,\n              {\n                opacity: [1, 0],\n                visibility: [\"visible\", \"hidden\"],\n              },\n              {\n                duration: 250,\n                easing: \"ease-in-out\",\n              }\n            )\n          );\n          break;\n        case \"reveal\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectParallel(\n                textElements.reverse().map((item) => {\n                  return new ApEffectOfCustomKeyframe(\n                    item,\n                    {\n                      opacity: [1, 0],\n                      visibility: [\"visible\", \"hidden\"],\n                    },\n                    {\n                      duration: 250,\n                      easing: \"ease-in-out\",\n                    }\n                  );\n                })\n              ),\n              new ApEffectParallel(\n                elementImages.map((item) => {\n                  if (!item.classList.contains(\"slideshow__image-wrapper--secondary\")) {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"visible\", \"hidden\"],\n                        clipPath: [\"inset(0 0 0 0)\", \"inset(0 0 100% 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        easing: \"cubic-bezier(0.99, 0.01, 0.50, 0.94)\",\n                      }\n                    );\n                  } else {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"visible\", \"hidden\"],\n                        clipPath: [\"inset(0 0 0 0)\", \"inset(100% 0 0 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        easing: \"cubic-bezier(0.99, 0.01, 0.50, 0.94)\",\n                      }\n                    );\n                  }\n                })\n              ),\n            ])\n          );\n          break;\n      }\n      await this._executeAnimation(animation, useEffect);\n      if (transitionType === \"reveal\") {\n        this.setAttribute(\"hidden\", \"\");\n      }\n    }\n    async transitionToEnter(transitionType, useEffect = true, reverseDirection = false) {\n      this.removeAttribute(\"hidden\");\n      await this._untilReady();\n      let animation = null,\n        textElements = await resolveAsyncIterator(\n          this.querySelectorAll(\n            \"ap-splitlines, .button-group, .button-wrapper\"\n          )\n        ),\n        elementImages = Array.from(this.querySelectorAll(\".slideshow__image-wrapper\"));\n      switch (transitionType) {\n        case \"sweep\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                this,\n                {\n                  visibility: [\"hidden\", \"visible\"],\n                  clipPath: reverseDirection\n                    ? [\"inset(0 100% 0 0)\", \"inset(0 0 0 0)\"]\n                    : [\"inset(0 0 0 100%)\", \"inset(0 0 0 0)\"],\n                },\n                {\n                  duration: 500,\n                  easing: \"cubic-bezier(1, 0, 0, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                textElements.map((item, index) => {\n                  return new ApEffectOfCustomKeyframe(\n                    item,\n                    {\n                      opacity: [0, 1],\n                      visibility: [\"hidden\", \"visible\"],\n                      clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                      transform: [\"translateY(100%)\", \"translateY(0)\"],\n                    },\n                    {\n                      duration: 450,\n                      delay: 100 * index,\n                      easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                    }\n                  );\n                })\n              ),\n            ])\n          );\n          break;\n        case \"fade\":\n          animation = new ApAnimationCustom(\n            new ApEffectOfCustomKeyframe(\n              this,\n              {\n                opacity: [0, 1],\n                visibility: [\"hidden\", \"visible\"],\n              },\n              {\n                duration: 250,\n                easing: \"ease-in-out\",\n              }\n            )\n          );\n          break;\n        case \"reveal\":\n          animation = new ApAnimationCustom(\n            new ApEffectSequence([\n              new ApEffectParallel(\n                elementImages.map((item) => {\n                  if (!item.classList.contains(\"slideshow__image-wrapper--secondary\")) {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"hidden\", \"visible\"],\n                        clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        delay: 100,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  } else {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        visibility: [\"hidden\", \"visible\"],\n                        clipPath: [\"inset(100% 0 0 0)\", \"inset(0 0 0 0)\"],\n                      },\n                      {\n                        duration: 450,\n                        delay: 100,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                })\n              ),\n              new ApEffectParallel(\n                textElements.map((item, index) => {\n                  return new ApEffectOfCustomKeyframe(\n                    item,\n                    {\n                      opacity: [0, 1],\n                      visibility: [\"hidden\", \"visible\"],\n                      clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                      transform: [\"translateY(100%)\", \"translateY(0)\"],\n                    },\n                    {\n                      duration: 450,\n                      delay: 100 * index,\n                      easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                    }\n                  );\n                })\n              ),\n            ])\n          );\n          break;\n      }\n      return this._executeAnimation(animation, useEffect);\n    }\n    async _executeAnimation(animation, useEffect) {\n      this._pendingAnimations.push(animation);\n      useEffect ? animation.play() : animation.finish();\n      return animation.finished;\n    }\n    async _untilReady() {\n      return Promise.all(this._getVisibleImages().map((image) => imageLoaded(image)));\n    }\n    _preloadImages() {\n      this._getVisibleImages().forEach((image) => {\n        image.setAttribute(\"loading\", \"eager\");\n      });\n    }\n    _getVisibleImages() {\n      return Array.from(this.querySelectorAll(\"img\")).filter((image) => {\n        return getComputedStyle(image.parentElement).display !== \"none\";\n      });\n    }\n  };\n  window.customElements.define(\"ap-productsslideshowitem\", ApProductsSlideshowItem);\n\n  var ApProductsSlideshow = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.listItems = Array.from(this.querySelectorAll(\"ap-productsslideshowitem\"));\n      this.pageDots = this.querySelector(\"ap-pagedots\");\n      this.transitioningStatus = false;\n      if (this.listItems.length > 1) {\n        this.addEventListener(\"swiperight\", this.previous.bind(this));\n        this.addEventListener(\"swipeleft\", this.next.bind(this));\n        this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n        this._blockVerticalScroll();\n      }\n      this._setupTextOverlayImageVisibility();\n    }\n    get selectedIndex() {\n      if (this.listItems.findIndex((item) => item.selected) < 0) {\n        return 0;\n      }\n      return this.listItems.findIndex((item) => item.selected);\n    }\n    get transitionType() {\n      if (MediaFeatures.prefersReducedMotion()) {\n        return \"fade\";\n      } else {\n        return this.getAttribute(\"transition-type\");\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      if (this.listItems.length) {\n        await this.listItems[this.selectedIndex]\n          .transitionToEnter(this.transitionType)\n          .catch((error) => {});\n        this.startPlayer();\n      }\n    }\n    previous() {\n      this.select(\n        (this.selectedIndex - 1 + this.listItems.length) % this.listItems.length,\n        true,\n        true\n      );\n    }\n    next() {\n      this.select(\n        (this.selectedIndex + 1 + this.listItems.length) % this.listItems.length,\n        true,\n        false\n      );\n    }\n    async select(index, shouldTransition = true, reverseDirection = false) {\n      if (this.transitionType === \"reveal\" && this.transitioningStatus) {\n        return;\n      }\n      this.transitioningStatus = true;\n      const itemPrevious = this.listItems[this.selectedIndex];\n      const newItem = this.listItems[index];\n      this.listItems[(newItem.index + 1) % this.listItems.length]._preloadImages();\n      if (itemPrevious && itemPrevious !== newItem) {\n        if (this.transitionType !== \"reveal\") {\n          itemPrevious.transitionToLeave(this.transitionType, shouldTransition);\n        } else {\n          await itemPrevious.transitionToLeave(this.transitionType, shouldTransition);\n        }\n      }\n      if (this.pageDots) {\n        this.pageDots.selectedIndex = newItem.index;\n      }\n      await newItem\n        .transitionToEnter(this.transitionType, shouldTransition, reverseDirection)\n        .catch((error) => {});\n      this.transitioningStatus = false;\n    }\n    pausePlayer() {\n      this.style.setProperty(\"--section-animation-play-state\", \"paused\");\n    }\n    startPlayer() {\n      if (this.hasAttribute(\"auto-play\")) {\n        this.style.setProperty(\"--section-animation-play-state\", \"running\");\n      }\n    }\n  };\n  Object.assign(ApProductsSlideshow.prototype, ApBlockerMixinVerticalScroll);\n  window.customElements.define(\"ap-productsslideshow\", ApProductsSlideshow);\n\n  var ApApImageWithTextItem = class extends HTMLElement {\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    get hasAttachedImage() {\n      return this.hasAttribute(\"attached-image\");\n    }\n    async transitionToEnter(useEffect = true) {\n      this.removeAttribute(\"hidden\");\n      const textWrapper = this.querySelector(\".ap-imagewithtext__text-wrapper\"),\n        headings = await resolveAsyncIterator(\n          this.querySelectorAll(\".ap-imagewithtext__content ap-splitlines\")\n        );\n      const animation = new ApAnimationCustom(\n        new ApEffectSequence([\n          new ApEffectParallel(\n            headings.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 0.2, 1],\n                  transform: [\"translateY(100%)\", \"translateY(0)\"],\n                  clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0 0)\"],\n                },\n                {\n                  duration: 350,\n                  delay: 120 * index,\n                  easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                }\n              );\n            })\n          ),\n          new ApEffectOfCustomKeyframe(\n            textWrapper,\n            {\n              opacity: [0, 1],\n            },\n            {\n              duration: 300,\n            }\n          ),\n        ])\n      );\n      useEffect ? animation.play() : animation.finish();\n      return animation.finished;\n    }\n    async transitionToLeave(useEffect = true) {\n      const elements = await resolveAsyncIterator(\n        this.querySelectorAll(\n          \".ap-imagewithtext__text-wrapper, .ap-imagewithtext__content ap-splitlines\"\n        )\n      );\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          elements.map((item) => {\n            return new ApEffectOfCustomKeyframe(\n              item,\n              {\n                opacity: [1, 0],\n              },\n              {\n                duration: 200,\n              }\n            );\n          })\n        )\n      );\n      useEffect ? animation.play() : animation.finish();\n      await animation.finished;\n      this.setAttribute(\"hidden\", \"\");\n    }\n  };\n  window.customElements.define(\"ap-imagewithtext-item\", ApApImageWithTextItem);\n\n  var ApImageWithText = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\"ap-imagewithtext-item\"));\n      this.imageItems = Array.from(this.querySelectorAll(\".ap-imagewithtext__image\"));\n      this.pageDots = this.querySelector(\"ap-pagedots\");\n      this.pendingTransitionStatus = false;\n      if (this.items.length > 1) {\n        this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:deselect\", this.startPlayer.bind(this));\n          this.addEventListener(\"shopify:block:select\", (event) => {\n            this.intersectionObserver.disconnect();\n            this.pausePlayer();\n            this.select(event.target.index, !event.detail.load);\n          });\n        }\n      }\n      this._setupTextOverlayImageVisibility();\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        await this.transitionImage(this.selectedIndex);\n        this.select(this.selectedIndex);\n      }\n      this.startPlayer();\n    }\n    get selectedIndex() {\n      return this.items.findIndex((item) => item.selected);\n    }\n    async select(index, useEffect = true) {\n      if (this.pendingTransitionStatus) {\n        return;\n      }\n      this.pendingTransitionStatus = true;\n      if (this.items[index].hasAttachedImage || !useEffect) {\n        await this.transitionImage(index, useEffect);\n      }\n      if (this.selectedIndex !== index) {\n        await this.items[this.selectedIndex].transitionToLeave(useEffect);\n      }\n      if (this.pageDots) {\n        this.pageDots.selectedIndex = index;\n      }\n      await this.items[index].transitionToEnter(useEffect);\n      this.pendingTransitionStatus = false;\n    }\n    async transitionImage(index, useEffect = true) {\n      const activeImage = this.imageItems.find((item) => !item.hasAttribute(\"hidden\")),\n        nextImage =\n          this.imageItems.find(\n            (item) => item.id === this.items[index].getAttribute(\"attached-image\")\n          ) || activeImage;\n      if (!activeImage || !nextImage) {\n        return;\n      }\n      activeImage.setAttribute(\"hidden\", \"\");\n      nextImage.removeAttribute(\"hidden\");\n      await imageLoaded(nextImage);\n      const animation = new ApAnimationCustom(\n        new ApEffectOfCustomKeyframe(\n          nextImage,\n          {\n            visibility: [\"hidden\", \"visible\"],\n            clipPath: [\"inset(0 0 0 100%)\", \"inset(0 0 0 0)\"],\n          },\n          {\n            duration: 600,\n            easing: \"cubic-bezier(1, 0, 0, 1)\",\n          }\n        )\n      );\n      useEffect ? animation.play() : animation.finish();\n    }\n    pausePlayer() {\n      this.style.setProperty(\"--section-animation-play-state\", \"paused\");\n    }\n    startPlayer() {\n      this.style.setProperty(\"--section-animation-play-state\", \"running\");\n    }\n  };\n  window.customElements.define(\"ap-imagewithtext\", ApImageWithText);\n\n  var ApTestimonialItem = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.addEventListener(\"ap-splitlines:re-split\", (event) => {\n        Array.from(event.target.children).forEach(\n          (line) => (line.style.visibility = this.selected ? \"visible\" : \"hidden\")\n        );\n      });\n    }\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    async transitionToLeave(useEffect = true) {\n      const textLines = await resolveAsyncIterator(\n          this.querySelectorAll(\n            \"ap-splitlines, .testimonial__author, .testimonial__icon , .testimonial__info\"\n          )\n        ),\n        animation = new ApAnimationCustom(\n          new ApEffectParallel(\n            textLines.reverse().map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  visibility: [\"visible\", \"hidden\"],\n                  clipPath: [\"inset(0 0 0 0)\", \"inset(0 0 100% 0)\"],\n                  transform: [\"translateY(0)\", \"translateY(100%)\"],\n                },\n                {\n                  duration: 350,\n                  delay: 60 * index,\n                  easing: \"cubic-bezier(0.68, 0.00, 0.77, 0.00)\",\n                }\n              );\n            })\n          )\n        );\n      useEffect ? animation.play() : animation.finish();\n      await animation.finished;\n      this.setAttribute(\"hidden\", \"\");\n    }\n    async transitionToEnter(useEffect = true) {\n      const textLines = await resolveAsyncIterator(\n          this.querySelectorAll(\n            \"ap-splitlines, .testimonial__author, .testimonial__icon , .testimonial__info \"\n          )\n        ),\n        animation = new ApAnimationCustom(\n          new ApEffectParallel(\n            textLines.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  visibility: [\"hidden\", \"visible\"],\n                  clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0px 0)\"],\n                  transform: [\"translateY(100%)\", \"translateY(0)\"],\n                },\n                {\n                  duration: 550,\n                  delay: 120 * index,\n                  easing: \"cubic-bezier(0.23, 1, 0.32, 1)\",\n                }\n              );\n            })\n          )\n        );\n      this.removeAttribute(\"hidden\");\n      useEffect ? animation.play() : animation.finish();\n      return animation.finished;\n    }\n  };\n  window.customElements.define(\"ap-testimonialitem\", ApTestimonialItem);\n\n  var ApListTestimonial = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.listItems = Array.from(this.querySelectorAll(\"ap-testimonialitem\"));\n      this.pageDots = this.querySelector(\"ap-pagedots\");\n      this.pendingTransitionStatus = false;\n      if (this.listItems.length > 1) {\n        this.addEventListener(\"swiperight\", this.previous.bind(this));\n        this.addEventListener(\"swipeleft\", this.next.bind(this));\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", (event) => {\n            var _a;\n            (_a = this.intersectionObserver) == null ? void 0 : _a.disconnect();\n            if (event.detail.load || !event.target.selected) {\n              this.select(event.target.index, !event.detail.load);\n            }\n          });\n        }\n        this._blockVerticalScroll();\n      }\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    get selectedIndex() {\n      return this.listItems.findIndex((item) => item.selected);\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      this.listItems[this.selectedIndex].transitionToEnter();\n    }\n    previous() {\n      this.select((this.selectedIndex - 1 + this.listItems.length) % this.listItems.length);\n    }\n    next() {\n      this.select((this.selectedIndex + 1 + this.listItems.length) % this.listItems.length);\n    }\n    async select(index, useEffect = true) {\n      if (this.pendingTransitionStatus) {\n        return;\n      }\n      this.pendingTransitionStatus = true;\n      await this.listItems[this.selectedIndex].transitionToLeave(useEffect);\n      if (this.pageDots) {\n        this.pageDots.selectedIndex = index;\n      }\n      await this.listItems[index].transitionToEnter(useEffect);\n      this.pendingTransitionStatus = false;\n    }\n  };\n  Object.assign(ApListTestimonial.prototype, ApBlockerMixinVerticalScroll);\n  window.customElements.define(\"ap-listtestimonial\", ApListTestimonial);\n\n  var TestimonialCarousel = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.testimonialListInner = this.querySelector(\".ap-productlist__inner\");\n      this.testimonialItems = Array.from(this.querySelectorAll(\"testimonial-carousel-item\"));\n    }\n    connectedCallback() {\n      this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n      this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      if (!this.hidden && this.staggerApparition) {\n        this._staggerProductsApparition();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n    get apparitionAnimation() {\n      return (this._customanimation =\n        this._customanimation ||\n        new ApAnimationCustom(\n          new ApEffectParallel(\n            this.testimonialItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\n                    `translateY(${\n                      MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                    }px)`,\n                    \"translateY(0)\",\n                  ],\n                },\n                {\n                  duration: 600,\n                  delay: MediaFeatures.prefersReducedMotion()\n                    ? 0\n                    : 100 * index - Math.min(3 * index * index, 100 * index),\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        ));\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.testimonialListInner.scrollLeft * directionFlip -\n          (this.testimonialListInner.clientWidth + columnGap) <=\n          0\n      );\n      this.testimonialListInner.scrollBy({\n        left: -(this.testimonialListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.testimonialListInner.scrollLeft * directionFlip +\n          (this.testimonialListInner.clientWidth + columnGap) * 2 >=\n          this.testimonialListInner.scrollWidth\n      );\n      this.testimonialListInner.scrollBy({\n        left: (this.testimonialListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    attributeChangedCallback(name) {\n      var _a, _b;\n      if (!this.staggerApparition) {\n        return;\n      }\n      switch (name) {\n        case \"hidden\":\n          if (!this.hidden) {\n            this.testimonialListInner.scrollLeft = 0;\n            this.testimonialListInner.parentElement.scrollLeft = 0;\n            (_a = this.querySelector(\".ap-nextap-buttonprev--prev\")) == null\n              ? void 0\n              : _a.setAttribute(\"disabled\", \"\");\n            (_b = this.querySelector(\".ap-nextap-buttonprev--next\")) == null\n              ? void 0\n              : _b.removeAttribute(\"disabled\");\n            this._staggerProductsApparition();\n          } else {\n            this.apparitionAnimation.finish();\n          }\n      }\n    }\n    async _staggerProductsApparition() {\n      this.testimonialItems.forEach((item) => (item.style.opacity = 0));\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      this.apparitionAnimation.play();\n    }\n  };\n  __publicField(TestimonialCarousel, \"observedAttributes\", [\"hidden\"]);\n  window.customElements.define(\"testimonial-carousel\", TestimonialCarousel);\n\n  var BannerCarousel = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.bannerListInner = this.querySelector(\".ap-productlist__inner\");\n      this.bannerItems = Array.from(this.querySelectorAll(\"banner-carousel-item\"));\n    }\n    connectedCallback() {\n      this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n      this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      if (!this.hidden && this.staggerApparition) {\n        this._staggerProductsApparition();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n    get apparitionAnimation() {\n      return (this._customanimation =\n        this._customanimation ||\n        new ApAnimationCustom(\n          new ApEffectParallel(\n            this.bannerItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\n                    `translateY(${\n                      MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                    }px)`,\n                    \"translateY(0)\",\n                  ],\n                },\n                {\n                  duration: 600,\n                  delay: MediaFeatures.prefersReducedMotion()\n                    ? 0\n                    : 100 * index - Math.min(3 * index * index, 100 * index),\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        ));\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.bannerListInner.scrollLeft * directionFlip -\n          (this.bannerListInner.clientWidth + columnGap) <=\n          0\n      );\n      this.bannerListInner.scrollBy({\n        left: -(this.bannerListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.bannerListInner.scrollLeft * directionFlip +\n          (this.bannerListInner.clientWidth + columnGap) * 2 >=\n          this.bannerListInner.scrollWidth\n      );\n      this.bannerListInner.scrollBy({\n        left: (this.bannerListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    attributeChangedCallback(name) {\n      var _a, _b;\n      if (!this.staggerApparition) {\n        return;\n      }\n      switch (name) {\n        case \"hidden\":\n          if (!this.hidden) {\n            this.bannerListInner.scrollLeft = 0;\n            this.bannerListInner.parentElement.scrollLeft = 0;\n            (_a = this.querySelector(\".ap-nextap-buttonprev--prev\")) == null\n              ? void 0\n              : _a.setAttribute(\"disabled\", \"\");\n            (_b = this.querySelector(\".ap-nextap-buttonprev--next\")) == null\n              ? void 0\n              : _b.removeAttribute(\"disabled\");\n            this._staggerProductsApparition();\n          } else {\n            this.apparitionAnimation.finish();\n          }\n      }\n    }\n    async _staggerProductsApparition() {\n      this.bannerItems.forEach((item) => (item.style.opacity = 0));\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      this.apparitionAnimation.play();\n    }\n  };\n  __publicField(BannerCarousel, \"observedAttributes\", [\"hidden\"]);\n  window.customElements.define(\"banner-carousel\", BannerCarousel);\n\n  var ApTheLookbookShopItem = class extends HTMLElement {\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    async transitionToLeave(useEffect = true) {\n      this.setAttribute(\"hidden\", \"\");\n      const animation = new ApAnimationCustom(\n        new ApEffectOfCustomKeyframe(\n          this,\n          {\n            visibility: [\"visible\", \"hidden\"],\n          },\n          {\n            duration: 500,\n          }\n        )\n      );\n      useEffect ? animation.play() : animation.finish();\n      return animation.finished;\n    }\n    async transitionToEnter(useEffect = true) {\n      this.removeAttribute(\"hidden\");\n      const dots = Array.from(this.querySelectorAll(\".ap-lookbookshop__dot\"));\n      dots.forEach((dot) => (dot.style.opacity = 0));\n      const animation = new ApAnimationCustom(\n        new ApEffectSequence([\n          new ApEffectParallel(\n            Array.from(this.querySelectorAll(\".ap-lookbookshop__image\")).map((item) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [1, 1],\n                },\n                {\n                  duration: 0,\n                }\n              );\n            })\n          ),\n          new ApEffectOfCustomKeyframe(\n            this,\n            {\n              visibility: [\"hidden\", \"visible\"],\n              zIndex: [0, 1],\n              clipPath: [\"inset(0 0 0 100%)\", \"inset(0 0 0 0)\"],\n            },\n            {\n              duration: 500,\n              easing: \"cubic-bezier(1, 0, 0, 1)\",\n            }\n          ),\n          new ApEffectParallel(\n            dots.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\"scale(0)\", \"scale(1)\"],\n                },\n                {\n                  duration: 120,\n                  delay: 75 * index,\n                  easing: \"ease-in-out\",\n                }\n              );\n            })\n          ),\n        ])\n      );\n      useEffect ? animation.play() : animation.finish();\n      await animation.finished;\n      if (window.matchMedia(window.themeVariables.breakpoints.tabletAndUp).matches) {\n        const firstPopover = this.querySelector(\n          \".ap-lookbookshop__product-wrapper .ap-lookbookshop__dot\"\n        );\n        firstPopover == null ? void 0 : firstPopover.setAttribute(\"ap-expanded-aria\", \"true\");\n      }\n    }\n  };\n  window.customElements.define(\"ap-lookbookshop-item\", ApTheLookbookShopItem);\n\n  var ApTheLookbookShopNav = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.shopTheLook = this.closest(\"ap-lookbookshop\");\n      this.apollo.on(\"click\", '[data-action=\"prev\"]', () => this.shopTheLook.previous());\n      this.apollo.on(\"click\", '[data-action=\"next\"]', () => this.shopTheLook.next());\n    }\n    transitionToIndex(index, useEffect = true) {\n      const indexElements = Array.from(\n          this.querySelectorAll(\".ap-lookbookshop__counter-page-transition\")\n        ),\n        currentObjectElement = indexElements.find((item) => !item.hasAttribute(\"hidden\")),\n        nextElement = indexElements[index];\n      currentObjectElement.animate(\n        {\n          transform: [\"translateY(0)\", \"translateY(-100%)\"],\n        },\n        {\n          duration: useEffect ? 1e3 : 0,\n          easing: \"cubic-bezier(1, 0, 0, 1)\",\n        }\n      ).onfinish = () => currentObjectElement.setAttribute(\"hidden\", \"\");\n      nextElement.removeAttribute(\"hidden\");\n      nextElement.animate(\n        {\n          transform: [\"translateY(100%)\", \"translateY(0)\"],\n        },\n        {\n          duration: useEffect ? 1e3 : 0,\n          easing: \"cubic-bezier(1, 0, 0, 1)\",\n        }\n      );\n    }\n  };\n  window.customElements.define(\"ap-lookbookshopnav\", ApTheLookbookShopNav);\n\n  var TheLookbookShop = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.lookItems = Array.from(this.querySelectorAll(\"ap-lookbookshop-item\"));\n      this.nav = this.querySelector(\"ap-lookbookshopnav\");\n      this.pendingTransitionStatus = false;\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n      if (this.lookItems.length > 1 && Shopify.designMode) {\n        this.addEventListener(\"shopify:block:select\", async (event) => {\n          this.intersectionObserver.disconnect();\n          await this.select(event.target.index, !event.detail.load);\n          this.nav.animate(\n            {\n              opacity: [0, 1],\n              transform: [\"translateY(30px)\", \"translateY(0)\"],\n            },\n            {\n              duration: 0,\n              fill: \"forwards\",\n              easing: \"ease-in-out\",\n            }\n          );\n        });\n      }\n    }\n    get selectedIndex() {\n      return this.lookItems.findIndex((item) => item.selected);\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const images = Array.from(\n        this.lookItems[this.selectedIndex].querySelectorAll(\".ap-lookbookshop__image\")\n      );\n      for (let image of images) {\n        if (image.offsetParent !== null) {\n          await imageLoaded(image);\n        }\n      }\n      await this.lookItems[this.selectedIndex].transitionToEnter();\n      if (this.nav) {\n        this.nav.animate(\n          {\n            opacity: [0, 1],\n            transform: [\"translateY(30px)\", \"translateY(0)\"],\n          },\n          {\n            duration: 150,\n            fill: \"forwards\",\n            easing: \"ease-in-out\",\n          }\n        );\n      }\n    }\n    previous() {\n      this.select((this.selectedIndex - 1 + this.lookItems.length) % this.lookItems.length);\n    }\n    next() {\n      this.select((this.selectedIndex + 1 + this.lookItems.length) % this.lookItems.length);\n    }\n    async select(index, animate = true) {\n      const currentLook = this.lookItems[this.selectedIndex],\n        nextLook = this.lookItems[index];\n      if (this.pendingTransitionStatus) {\n        return;\n      }\n      this.pendingTransitionStatus = true;\n      if (currentLook !== nextLook) {\n        this.nav.transitionToIndex(index, animate);\n        currentLook.transitionToLeave();\n      }\n      nextLook.transitionToEnter(animate);\n      this.pendingTransitionStatus = false;\n    }\n  };\n  window.customElements.define(\"ap-lookbookshop\", TheLookbookShop);\n\n  var ApCollectionList = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\".list-collections__item\"));\n      if (this.hasAttribute(\"scrollable\")) {\n        this.scroller = this.querySelector(\".list-collections__scroller\");\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        this.addEventListener(\"shopify:block:select\", (event) =>\n          event.target.scrollIntoView({\n            block: \"nearest\",\n            inline: \"center\",\n            behavior: event.detail.load ? \"auto\" : \"smooth\",\n          })\n        );\n      }\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          this.items.map((item, index) => {\n            return new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".list-collections__item-image\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                Array.from(item.querySelectorAll(\".list-collections__item-info [reveal]\")).map(\n                  (textItem, subIndex) => {\n                    return new ApEffectOfCustomKeyframe(\n                      textItem,\n                      {\n                        opacity: [0, 1],\n                        clipPath: [\n                          `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                          \"inset(0 0 0 0)\",\n                        ],\n                        transform: [\n                          `translateY(${prefersReducedMotion ? 0 : \"100%\"})`,\n                          \"translateY(0)\",\n                        ],\n                      },\n                      {\n                        duration: 200,\n                        delay: prefersReducedMotion ? 0 : 150 * index + 150 * subIndex,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                )\n              ),\n            ]);\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n    previous() {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      this.scroller.scrollBy({\n        left: -this.items[0].clientWidth * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next() {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      this.scroller.scrollBy({\n        left: this.items[0].clientWidth * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n  };\n  window.customElements.define(\"ap-collectionlist\", ApCollectionList);\n\n  var ApBannerGrid = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\".banner-content\"));\n      if (this.hasAttribute(\"scrollable\")) {\n        this.scroller = this.querySelector(\".list-collections__scroller\");\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        this.addEventListener(\"shopify:block:select\", (event) =>\n          event.target.scrollIntoView({\n            block: \"nearest\",\n            inline: \"center\",\n            behavior: event.detail.load ? \"auto\" : \"smooth\",\n          })\n        );\n      }\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          this.items.map((item, index) => {\n            return new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".banner-list-image\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".image-child\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".image-banner-video\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".image-child-2\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                Array.from(item.querySelectorAll(\".banner-text [reveal]\")).map(\n                  (textItem, subIndex) => {\n                    return new ApEffectOfCustomKeyframe(\n                      textItem,\n                      {\n                        opacity: [0, 1],\n                        clipPath: [\n                          `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                          \"inset(0 0 0 0)\",\n                        ],\n                        transform: [\n                          `translateY(${prefersReducedMotion ? 0 : \"100%\"})`,\n                          \"translateY(0)\",\n                        ],\n                      },\n                      {\n                        duration: 200,\n                        delay: prefersReducedMotion ? 0 : 150 * index + 150 * subIndex,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                )\n              ),\n            ]);\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n    previous() {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      this.scroller.scrollBy({\n        left: -this.items[0].clientWidth * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next() {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      this.scroller.scrollBy({\n        left: this.items[0].clientWidth * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n  };\n  window.customElements.define(\"banner-content\", ApBannerGrid);\n\n  var ApService = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\".service-item\"));\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          this.items.map((item, index) => {\n            return new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".service-list-image\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                Array.from(item.querySelectorAll(\".service-list-content [reveal]\")).map(\n                  (textItem, subIndex) => {\n                    return new ApEffectOfCustomKeyframe(\n                      textItem,\n                      {\n                        opacity: [0, 1],\n                        clipPath: [\n                          `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                          \"inset(0 0 0 0)\",\n                        ],\n                        transform: [\n                          `translateY(${prefersReducedMotion ? 0 : \"100%\"})`,\n                          \"translateY(0)\",\n                        ],\n                      },\n                      {\n                        duration: 200,\n                        delay: prefersReducedMotion ? 0 : 150 * index + 150 * subIndex,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                )\n              ),\n              new ApEffectParallel(\n                Array.from(item.querySelectorAll(\".icon-item [reveal]\")).map(\n                  (textItem, subIndex) => {\n                    return new ApEffectOfCustomKeyframe(\n                      textItem,\n                      {\n                        opacity: [0, 1],\n                        clipPath: [\n                          `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                          \"inset(0 0 0 0)\",\n                        ],\n                        transform: [\n                          `translateY(${prefersReducedMotion ? 0 : \"100%\"})`,\n                          \"translateY(0)\",\n                        ],\n                      },\n                      {\n                        duration: 200,\n                        delay: prefersReducedMotion ? 0 : 150 * index + 150 * subIndex,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                )\n              ),\n            ]);\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n  };\n  window.customElements.define(\"service-item\", ApService);\n\n  var ApNewsletter = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\".ap-newsletter\"));\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          this.items.map((item, index) => {\n            return new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".newsletter-list-image\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                Array.from(item.querySelectorAll(\".newsletter-content [reveal]\")).map(\n                  (textItem, subIndex) => {\n                    return new ApEffectOfCustomKeyframe(\n                      textItem,\n                      {\n                        opacity: [0, 1],\n                        clipPath: [\n                          `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                          \"inset(0 0 0 0)\",\n                        ],\n                        transform: [\n                          `translateY(${prefersReducedMotion ? 0 : \"100%\"})`,\n                          \"translateY(0)\",\n                        ],\n                      },\n                      {\n                        duration: 200,\n                        delay: prefersReducedMotion ? 0 : 150 * index + 150 * subIndex,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                )\n              ),\n            ]);\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n  };\n  window.customElements.define(\"ap-newsletter\", ApNewsletter);\n\n  var ApAdvancedImage = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\".adv-image\"));\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          this.items.map((item, index) => {\n            return new ApEffectSequence([\n              new ApEffectOfCustomKeyframe(\n                item.querySelector(\".adv-list-image\"),\n                {\n                  opacity: [0, 1],\n                  transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n                },\n                {\n                  duration: 250,\n                  delay: prefersReducedMotion ? 0 : 150 * index,\n                  easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                }\n              ),\n              new ApEffectParallel(\n                Array.from(item.querySelectorAll(\".adv-img-content [reveal]\")).map(\n                  (textItem, subIndex) => {\n                    return new ApEffectOfCustomKeyframe(\n                      textItem,\n                      {\n                        opacity: [0, 1],\n                        clipPath: [\n                          `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                          \"inset(0 0 0 0)\",\n                        ],\n                        transform: [\n                          `translateY(${prefersReducedMotion ? 0 : \"100%\"})`,\n                          \"translateY(0)\",\n                        ],\n                      },\n                      {\n                        duration: 200,\n                        delay: prefersReducedMotion ? 0 : 150 * index + 150 * subIndex,\n                        easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n                      }\n                    );\n                  }\n                )\n              ),\n            ]);\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n  };\n  window.customElements.define(\"adv-image\", ApAdvancedImage);\n\n  var ApProductList = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.productListInner = this.querySelector(\".ap-productlist__inner\");\n      this.productItems = Array.from(this.querySelectorAll(\"product-item\"));\n    }\n    connectedCallback() {\n      this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n      this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      if (!this.hidden && this.staggerApparition) {\n        this._staggerProductsApparition();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n    get apparitionAnimation() {\n      return (this._customanimation =\n        this._customanimation ||\n        new ApAnimationCustom(\n          new ApEffectParallel(\n            this.productItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\n                    `translateY(${\n                      MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                    }px)`,\n                    \"translateY(0)\",\n                  ],\n                },\n                {\n                  duration: 600,\n                  delay: MediaFeatures.prefersReducedMotion()\n                    ? 0\n                    : 100 * index - Math.min(3 * index * index, 100 * index),\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        ));\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.productListInner.scrollLeft * directionFlip -\n          (this.productListInner.clientWidth + columnGap) <=\n          0\n      );\n      this.productListInner.scrollBy({\n        left: -(this.productListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.productListInner.scrollLeft * directionFlip +\n          (this.productListInner.clientWidth + columnGap) * 2 >=\n          this.productListInner.scrollWidth\n      );\n      this.productListInner.scrollBy({\n        left: (this.productListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    attributeChangedCallback(name) {\n      var _a, _b;\n      if (!this.staggerApparition) {\n        return;\n      }\n      switch (name) {\n        case \"hidden\":\n          if (!this.hidden) {\n            this.productListInner.scrollLeft = 0;\n            this.productListInner.parentElement.scrollLeft = 0;\n            (_a = this.querySelector(\".ap-nextap-buttonprev--prev\")) == null\n              ? void 0\n              : _a.setAttribute(\"disabled\", \"\");\n            (_b = this.querySelector(\".ap-nextap-buttonprev--next\")) == null\n              ? void 0\n              : _b.removeAttribute(\"disabled\");\n            this._staggerProductsApparition();\n          } else {\n            this.apparitionAnimation.finish();\n          }\n      }\n    }\n    async _staggerProductsApparition() {\n      this.productItems.forEach((item) => (item.style.opacity = 0));\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      this.apparitionAnimation.play();\n    }\n  };\n  __publicField(ApProductList, \"observedAttributes\", [\"hidden\"]);\n  window.customElements.define(\"ap-productlist\", ApProductList);\n\n  // product-testimonial\n  var ApProductCarouselItem = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.addEventListener(\"ap-splitlines:re-split\", (event) => {\n        Array.from(event.target.children).forEach(\n          (line) => (line.style.visibility = this.selected ? \"visible\" : \"hidden\")\n        );\n      });\n    }\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get selected() {\n      return !this.hasAttribute(\"hidden\");\n    }\n    async transitionToLeave(useEffect = true) {\n      const textLines = await resolveAsyncIterator(this.querySelectorAll(\".product-carousel-box\")),\n        animation = new ApAnimationCustom(\n          new ApEffectParallel(\n            textLines.reverse().map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  visibility: [\"visible\", \"hidden\"],\n                  clipPath: [\"inset(0 0 0 0)\", \"inset(0 0 0 100%)\"],\n                  transform: [\"translateX(0)\", \"translateX(-100%)\"],\n                },\n                {\n                  duration: 350,\n                  delay: 60 * index,\n                  easing: \"cubic-bezier(0.68, 0.00, 0.77, 0.00)\",\n                }\n              );\n            })\n          )\n        );\n      useEffect ? animation.play() : animation.finish();\n      await animation.finished;\n      this.setAttribute(\"hidden\", \"\");\n    }\n    async transitionToEnter(useEffect = true) {\n      const textLines = await resolveAsyncIterator(this.querySelectorAll(\".product-carousel-box\")),\n        animation = new ApAnimationCustom(\n          new ApEffectParallel(\n            textLines.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  visibility: [\"hidden\", \"visible\"],\n                  clipPath: [\"inset(0 100% 0 0)\", \"inset(0 0 0px 0)\"],\n                  transform: [\"translateX(100%)\", \"translateX(0)\"],\n                },\n                {\n                  duration: 550,\n                  delay: 120 * index,\n                  easing: \"cubic-bezier(0.23, 1, 0.32, 1)\",\n                }\n              );\n            })\n          )\n        );\n      this.removeAttribute(\"hidden\");\n      useEffect ? animation.play() : animation.finish();\n      return animation.finished;\n    }\n  };\n  window.customElements.define(\"product-carousel\", ApProductCarouselItem);\n\n  var ApProductCarousel = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.listItems = Array.from(this.querySelectorAll(\"product-carousel\"));\n      this.pageDots = this.querySelector(\"ap-pagedots\");\n      this.pendingTransitionStatus = false;\n      if (this.listItems.length > 1) {\n        this.addEventListener(\"swiperight\", this.previous.bind(this));\n        this.addEventListener(\"swipeleft\", this.next.bind(this));\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", (event) => {\n            var _a;\n            (a = this.intersectionObserver) == null ? void 0 : a.disconnect();\n            if (event.detail.load || !event.target.selected) {\n              this.select(event.target.index, !event.detail.load);\n            }\n          });\n        }\n        this._blockVerticalScroll();\n      }\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    get selectedIndex() {\n      return this.listItems.findIndex((item) => item.selected);\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      this.listItems[this.selectedIndex].transitionToEnter();\n    }\n    previous() {\n      this.select((this.selectedIndex - 1 + this.listItems.length) % this.listItems.length);\n    }\n    next() {\n      this.select((this.selectedIndex + 1 + this.listItems.length) % this.listItems.length);\n    }\n    async select(index, useEffect = true) {\n      if (this.pendingTransitionStatus) {\n        return;\n      }\n      this.pendingTransitionStatus = true;\n      await this.listItems[this.selectedIndex].transitionToLeave(useEffect);\n      if (this.pageDots) {\n        this.pageDots.selectedIndex = index;\n      }\n      await this.listItems[index].transitionToEnter(useEffect);\n      this.pendingTransitionStatus = false;\n    }\n  };\n  Object.assign(ApProductCarousel.prototype, ApBlockerMixinVerticalScroll);\n  window.customElements.define(\"ap-product-carousel\", ApProductCarousel);\n  // end\n\n  var ApLogoList = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.items = Array.from(this.querySelectorAll(\".ap-logolist__item\"));\n      this.logoListScrollable = this.querySelector(\".ap-logolist__list\");\n      if (this.items.length > 1) {\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      }\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          this.items.map((item, index) => {\n            return new ApEffectOfCustomKeyframe(\n              item,\n              {\n                opacity: [0, 1],\n                transform: [\n                  `translateY(${MediaFeatures.prefersReducedMotion() ? 0 : \"30px\"})`,\n                  \"translateY(0)\",\n                ],\n              },\n              {\n                duration: 600,\n                delay: MediaFeatures.prefersReducedMotion() ? 0 : 100 * index,\n                easing: \"ease\",\n              }\n            );\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.logoListScrollable.scrollLeft * directionFlip -\n          (this.logoListScrollable.clientWidth + 24) <=\n          0\n      );\n      this.logoListScrollable.scrollBy({\n        left: -(this.logoListScrollable.clientWidth + 24) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1;\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.logoListScrollable.scrollLeft * directionFlip +\n          (this.logoListScrollable.clientWidth + 24) * 2 >=\n          this.logoListScrollable.scrollWidth\n      );\n      this.logoListScrollable.scrollBy({\n        left: (this.logoListScrollable.clientWidth + 24) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n  };\n  window.customElements.define(\"ap-logolist\", ApLogoList);\n\n  var ApBlogPostNavigation = class extends HTMLElement {\n    connectedCallback() {\n      window.addEventListener(\"scroll\", apStream(this._updateObjectProgressBar.bind(this), 15));\n    }\n    get hasNextArticle() {\n      return this.hasAttribute(\"has-next-article\");\n    }\n    _updateObjectProgressBar() {\n      const apOffsetStickyHeader = apStickyHeaderOffsetContent(),\n        marginCompensation = window.matchMedia(window.themeVariables.breakpoints.pocket).matches\n          ? 40\n          : 80,\n        articleNavBoundingBox = this.getBoundingClientRect(),\n        articleMainPartBoundingBox = this.parentElement.getBoundingClientRect(),\n        difference =\n          articleMainPartBoundingBox.bottom - (articleNavBoundingBox.bottom - marginCompensation),\n        progress = Math.max(\n          -1 * (difference / (articleMainPartBoundingBox.height + marginCompensation) - 1),\n          0\n        );\n      this.classList.toggle(\n        \"is-visible\",\n        articleMainPartBoundingBox.top < apOffsetStickyHeader &&\n          articleMainPartBoundingBox.bottom >\n            apOffsetStickyHeader + this.clientHeight - marginCompensation\n      );\n      if (this.hasNextArticle) {\n        if (progress > 0.8) {\n          this.classList.add(\"article__nav--show-next\");\n        } else {\n          this.classList.remove(\"article__nav--show-next\");\n        }\n      }\n      this.style.setProperty(\"--transform\", `${progress}`);\n    }\n  };\n  window.customElements.define(\"ap-blogpostnavigation\", ApBlogPostNavigation);\n\n  var ApBlogCarousel = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.blogListInner = this.querySelector(\".ap-productlist__inner\");\n      this.blogItems = Array.from(this.querySelectorAll(\"blog-item\"));\n    }\n    connectedCallback() {\n      this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n      this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      if (!this.hidden && this.staggerApparition) {\n        this._staggerProductsApparition();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n    get apparitionAnimation() {\n      return (this._customanimation =\n        this._customanimation ||\n        new ApAnimationCustom(\n          new ApEffectParallel(\n            this.blogItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\n                    `translateY(${\n                      MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                    }px)`,\n                    \"translateY(0)\",\n                  ],\n                },\n                {\n                  duration: 600,\n                  delay: MediaFeatures.prefersReducedMotion()\n                    ? 0\n                    : 100 * index - Math.min(3 * index * index, 100 * index),\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        ));\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.blogListInner.scrollLeft * directionFlip -\n          (this.blogListInner.clientWidth + columnGap) <=\n          0\n      );\n      this.blogListInner.scrollBy({\n        left: -(this.blogListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.blogListInner.scrollLeft * directionFlip +\n          (this.blogListInner.clientWidth + columnGap) * 2 >=\n          this.blogListInner.scrollWidth\n      );\n      this.blogListInner.scrollBy({\n        left: (this.blogListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    attributeChangedCallback(name) {\n      var _a, _b;\n      if (!this.staggerApparition) {\n        return;\n      }\n      switch (name) {\n        case \"hidden\":\n          if (!this.hidden) {\n            this.blogListInner.scrollLeft = 0;\n            this.blogListInner.parentElement.scrollLeft = 0;\n            (_a = this.querySelector(\".ap-nextap-buttonprev--prev\")) == null\n              ? void 0\n              : _a.setAttribute(\"disabled\", \"\");\n            (_b = this.querySelector(\".ap-nextap-buttonprev--next\")) == null\n              ? void 0\n              : _b.removeAttribute(\"disabled\");\n            this._staggerProductsApparition();\n          } else {\n            this.apparitionAnimation.finish();\n          }\n      }\n    }\n    async _staggerProductsApparition() {\n      this.blogItems.forEach((item) => (item.style.opacity = 0));\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      this.apparitionAnimation.play();\n    }\n  };\n  __publicField(ApBlogCarousel, \"observedAttributes\", [\"hidden\"]);\n  window.customElements.define(\"ap-blogcarousel\", ApBlogCarousel);\n\n  var CollectionCarousel = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.collectionListInner = this.querySelector(\".ap-productlist__inner\");\n      this.collectionItems = Array.from(this.querySelectorAll(\"collection-carousel-item\"));\n    }\n    connectedCallback() {\n      this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n      this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      if (!this.hidden && this.staggerApparition) {\n        this._staggerProductsApparition();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n    get apparitionAnimation() {\n      return (this._customanimation =\n        this._customanimation ||\n        new ApAnimationCustom(\n          new ApEffectParallel(\n            this.collectionItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\n                    `translateY(${\n                      MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                    }px)`,\n                    \"translateY(0)\",\n                  ],\n                },\n                {\n                  duration: 600,\n                  delay: MediaFeatures.prefersReducedMotion()\n                    ? 0\n                    : 100 * index - Math.min(3 * index * index, 100 * index),\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        ));\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.collectionListInner.scrollLeft * directionFlip -\n          (this.collectionListInner.clientWidth + columnGap) <=\n          0\n      );\n      this.collectionListInner.scrollBy({\n        left: -(this.collectionListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.collectionListInner.scrollLeft * directionFlip +\n          (this.collectionListInner.clientWidth + columnGap) * 2 >=\n          this.collectionListInner.scrollWidth\n      );\n      this.collectionListInner.scrollBy({\n        left: (this.collectionListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    attributeChangedCallback(name) {\n      var _a, _b;\n      if (!this.staggerApparition) {\n        return;\n      }\n      switch (name) {\n        case \"hidden\":\n          if (!this.hidden) {\n            this.collectionListInner.scrollLeft = 0;\n            this.collectionListInner.parentElement.scrollLeft = 0;\n            (_a = this.querySelector(\".ap-nextap-buttonprev--prev\")) == null\n              ? void 0\n              : _a.setAttribute(\"disabled\", \"\");\n            (_b = this.querySelector(\".ap-nextap-buttonprev--next\")) == null\n              ? void 0\n              : _b.removeAttribute(\"disabled\");\n            this._staggerProductsApparition();\n          } else {\n            this.apparitionAnimation.finish();\n          }\n      }\n    }\n    async _staggerProductsApparition() {\n      this.collectionItems.forEach((item) => (item.style.opacity = 0));\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      this.apparitionAnimation.play();\n    }\n  };\n  __publicField(CollectionCarousel, \"observedAttributes\", [\"hidden\"]);\n  window.customElements.define(\"collection-carousel\", CollectionCarousel);\n\n  var CollectionCarousel = class extends CustomHTMLElement {\n    constructor() {\n      super();\n      this.collectionListInner = this.querySelector(\".ap-productlist__inner\");\n      this.collectionItems = Array.from(this.querySelectorAll(\"instagram-carousel-item\"));\n    }\n    connectedCallback() {\n      this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n      this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n      if (!this.hidden && this.staggerApparition) {\n        this._staggerProductsApparition();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n    get apparitionAnimation() {\n      return (this._customanimation =\n        this._customanimation ||\n        new ApAnimationCustom(\n          new ApEffectParallel(\n            this.collectionItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\n                    `translateY(${\n                      MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                    }px)`,\n                    \"translateY(0)\",\n                  ],\n                },\n                {\n                  duration: 600,\n                  delay: MediaFeatures.prefersReducedMotion()\n                    ? 0\n                    : 100 * index - Math.min(3 * index * index, 100 * index),\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        ));\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.collectionListInner.scrollLeft * directionFlip -\n          (this.collectionListInner.clientWidth + columnGap) <=\n          0\n      );\n      this.collectionListInner.scrollBy({\n        left: -(this.collectionListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-productlist-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.collectionListInner.scrollLeft * directionFlip +\n          (this.collectionListInner.clientWidth + columnGap) * 2 >=\n          this.collectionListInner.scrollWidth\n      );\n      this.collectionListInner.scrollBy({\n        left: (this.collectionListInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    attributeChangedCallback(name) {\n      var _a, _b;\n      if (!this.staggerApparition) {\n        return;\n      }\n      switch (name) {\n        case \"hidden\":\n          if (!this.hidden) {\n            this.collectionListInner.scrollLeft = 0;\n            this.collectionListInner.parentElement.scrollLeft = 0;\n            (_a = this.querySelector(\".ap-nextap-buttonprev--prev\")) == null\n              ? void 0\n              : _a.setAttribute(\"disabled\", \"\");\n            (_b = this.querySelector(\".ap-nextap-buttonprev--next\")) == null\n              ? void 0\n              : _b.removeAttribute(\"disabled\");\n            this._staggerProductsApparition();\n          } else {\n            this.apparitionAnimation.finish();\n          }\n      }\n    }\n    async _staggerProductsApparition() {\n      this.collectionItems.forEach((item) => (item.style.opacity = 0));\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      this.apparitionAnimation.play();\n    }\n  };\n  __publicField(CollectionCarousel, \"observedAttributes\", [\"hidden\"]);\n  window.customElements.define(\"instagram-carousel\", CollectionCarousel);\n\n  var ApMultiColumn = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (!this.hasAttribute(\"stack\")) {\n        this.multiColumnInner = this.querySelector(\".ap-multicolumn__inner\");\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", (event) => {\n            event.target.scrollIntoView({\n              inline: \"center\",\n              block: \"nearest\",\n              behavior: event.detail.load ? \"auto\" : \"smooth\",\n            });\n          });\n        }\n      }\n      if (this.hasAttribute(\"stagger-apparition\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible({\n        threshold: this.clientHeight > 0 ? Math.min(50 / this.clientHeight, 1) : 0,\n      });\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel(\n          Array.from(this.querySelectorAll(\".ap-multicolumn__item\")).map((item, index) => {\n            return new ApEffectOfCustomKeyframe(\n              item,\n              {\n                opacity: [0, 1],\n                transform: [\n                  `translateY(${\n                    MediaFeatures.prefersReducedMotion() ? 0 : window.innerWidth < 1e3 ? 35 : 60\n                  }px)`,\n                  \"translateY(0)\",\n                ],\n              },\n              {\n                duration: 600,\n                delay: prefersReducedMotion ? 0 : 100 * index,\n                easing: \"ease\",\n              }\n            );\n          })\n        )\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n    previous(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-multicolumn-column-gap\")\n        );\n      event.target.nextElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.multiColumnInner.scrollLeft * directionFlip -\n          (this.multiColumnInner.clientWidth + columnGap) <=\n          0\n      );\n      this.multiColumnInner.scrollBy({\n        left: -(this.multiColumnInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n    next(event) {\n      const directionFlip = window.themeVariables.settings.direction === \"ltr\" ? 1 : -1,\n        columnGap = parseInt(\n          getComputedStyle(this).getPropertyValue(\"--ap-multicolumn-column-gap\")\n        );\n      event.target.previousElementSibling.removeAttribute(\"disabled\");\n      event.target.toggleAttribute(\n        \"disabled\",\n        this.multiColumnInner.scrollLeft * directionFlip +\n          (this.multiColumnInner.clientWidth + columnGap) * 2 >=\n          this.multiColumnInner.scrollWidth\n      );\n      this.multiColumnInner.scrollBy({\n        left: (this.multiColumnInner.clientWidth + columnGap) * directionFlip,\n        behavior: \"smooth\",\n      });\n    }\n  };\n  window.customElements.define(\"ap-multicolumn\", ApMultiColumn);\n\n  var ApGalleryList = class extends HTMLElement {\n    connectedCallback() {\n      this.listItems = Array.from(this.querySelectorAll(\"ap-galleryitem\"));\n      this.scrollBarElement = this.querySelector(\".ap-gallery__progress-bar\");\n      this.listWrapperElement = this.querySelector(\".ap-gallery__list-wrapper\");\n      if (this.listItems.length > 1) {\n        this.addEventListener(\n          \"ap-scrollablecontent:progress\",\n          this._updateObjectProgressBar.bind(this)\n        );\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", (event) =>\n            this.select(event.target.index, !event.detail.load)\n          );\n        }\n      }\n    }\n    previous() {\n      this.select(\n        [...this.listItems].reverse().find((item) => item.isOnLeftHalfPartOfScreen).index\n      );\n    }\n    next() {\n      this.select(this.listItems.findIndex((item) => item.isOnRightHalfPartOfScreen));\n    }\n    select(index, animate = true) {\n      const apBoundingRect = this.listItems[index].getBoundingClientRect();\n      this.listWrapperElement.scrollBy({\n        behavior: animate ? \"smooth\" : \"auto\",\n        left: Math.floor(apBoundingRect.left - window.innerWidth / 2 + apBoundingRect.width / 2),\n      });\n    }\n    _updateObjectProgressBar(event) {\n      var _a;\n      (_a = this.scrollBarElement) == null\n        ? void 0\n        : _a.style.setProperty(\"--transform\", `${event.detail.progress}%`);\n    }\n  };\n  window.customElements.define(\"ap-gallerylist\", ApGalleryList);\n\n  var ApGalleryItem = class extends HTMLElement {\n    get index() {\n      return [...this.parentNode.children].indexOf(this);\n    }\n    get isOnRightHalfPartOfScreen() {\n      let left = this.getBoundingClientRect().left;\n      let right = this.getBoundingClientRect().right;\n      if (window.themeVariables.settings.direction === \"ltr\") {\n        return left > window.innerWidth / 2;\n      } else {\n        return right < window.innerWidth / 2;\n      }\n    }\n    get isOnLeftHalfPartOfScreen() {\n      let right = this.getBoundingClientRect().right;\n      let left = this.getBoundingClientRect().left;\n      if (window.themeVariables.settings.direction === \"ltr\") {\n        return right < window.innerWidth / 2;\n      } else {\n        return left > window.innerWidth / 2;\n      }\n    }\n  };\n  window.customElements.define(\"ap-galleryitem\", ApGalleryItem);\n\n  var ApTextOverlayImage = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (this.hasAttribute(\"parallax\") && !MediaFeatures.prefersReducedMotion()) {\n        this._hasPendingRaF = false;\n        this._onScrollListenerTextOverlayImage = this._onScrollTextOverlayImage.bind(this);\n        window.addEventListener(\"scroll\", this._onScrollListenerTextOverlayImage);\n      }\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      if (this._onScrollListenerTextOverlayImage) {\n        window.removeEventListener(\"scroll\", this._onScrollListenerTextOverlayImage);\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const image = this.querySelector(\".image-overlay__image\"),\n        headings = await resolveAsyncIterator(this.querySelectorAll(\"ap-splitlines\")),\n        prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      await imageLoaded(image);\n      const innerEffect = [\n        new ApEffectOfCustomKeyframe(\n          image,\n          {\n            opacity: [0, 1],\n            transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n          },\n          {\n            duration: 500,\n            easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n          }\n        ),\n        new ApEffectParallel(\n          headings.map((item, index) => {\n            return new ApEffectOfCustomKeyframe(\n              item,\n              {\n                opacity: [0, 0.2, 1],\n                transform: [`translateY(${prefersReducedMotion ? 0 : \"100%\"})`, \"translateY(0)\"],\n                clipPath: [\n                  `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                  \"inset(0 0 0 0)\",\n                ],\n              },\n              {\n                duration: 300,\n                delay: prefersReducedMotion ? 0 : 120 * index,\n                easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n              }\n            );\n          })\n        ),\n        new ApEffectOfCustomKeyframe(\n          this.querySelector(\".image-overlay__text-container\"),\n          {\n            opacity: [0, 1],\n          },\n          {\n            duration: 300,\n          }\n        ),\n      ];\n      const animation = prefersReducedMotion\n        ? new ApAnimationCustom(new ApEffectParallel(innerEffect))\n        : new ApAnimationCustom(new ApEffectSequence(innerEffect));\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n    _onScrollTextOverlayImage() {\n      if (this._hasPendingRaF) {\n        return;\n      }\n      this._hasPendingRaF = true;\n      requestAnimationFrame(() => {\n        const apBoundingRect = this.getBoundingClientRect(),\n          speedFactor = 3,\n          contentElement = this.querySelector(\".image-overlay__content-wrapper\"),\n          elementImage = this.querySelector(\".image-overlay__image\"),\n          apBoundingRectBottom = apBoundingRect.bottom,\n          apBoundingRectHeight = apBoundingRect.height,\n          apOffsetStickyHeader = apStickyHeaderOffsetContent();\n        if (contentElement) {\n          contentElement.style.opacity = Math.max(\n            1 - speedFactor * (1 - Math.min(apBoundingRectBottom / apBoundingRectHeight, 1)),\n            0\n          ).toString();\n        }\n        if (elementImage) {\n          elementImage.style.transform = `translateY(${\n            100 -\n            Math.max(\n              1 -\n                (1 -\n                  Math.min(\n                    apBoundingRectBottom / (apBoundingRectHeight + apOffsetStickyHeader),\n                    1\n                  )),\n              0\n            ) *\n              100\n          }px)`;\n        }\n        this._hasPendingRaF = false;\n      });\n    }\n  };\n  window.customElements.define(\"ap-textoverlayimage\", ApTextOverlayImage);\n\n  var ApImageTextBlock = class extends CustomHTMLElement {\n    async connectedCallback() {\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const images = Array.from(this.querySelectorAll(\".ap-imagetextblock__image[reveal]\")),\n        headings = await resolveAsyncIterator(this.querySelectorAll(\"ap-splitlines\")),\n        prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      for (const image of images) {\n        if (image.offsetParent !== null) {\n          await imageLoaded(image);\n        }\n      }\n      const innerEffect = [\n        new ApEffectParallel(\n          images.map((item) => {\n            return new ApEffectOfCustomKeyframe(\n              item,\n              {\n                opacity: [0, 1],\n                transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n              },\n              {\n                duration: 500,\n                easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n              }\n            );\n          })\n        ),\n        new ApEffectOfCustomKeyframe(\n          this.querySelector(\".ap-imagetextblock__content\"),\n          {\n            opacity: [0, 1],\n            transform: [`translateY(${prefersReducedMotion ? 0 : \"60px\"})`, \"translateY(0)\"],\n          },\n          {\n            duration: 150,\n            easing: \"ease-in-out\",\n          }\n        ),\n        new ApEffectParallel(\n          headings.map((item, index) => {\n            return new ApEffectOfCustomKeyframe(\n              item,\n              {\n                opacity: [0, 0.2, 1],\n                transform: [`translateY(${prefersReducedMotion ? 0 : \"100%\"})`, \"translateY(0)\"],\n                clipPath: [\n                  `inset(${prefersReducedMotion ? \"0 0 0 0\" : \"0 0 100% 0\"})`,\n                  \"inset(0 0 0 0)\",\n                ],\n              },\n              {\n                duration: 300,\n                delay: prefersReducedMotion ? 0 : 120 * index,\n                easing: \"cubic-bezier(0.5, 0.06, 0.01, 0.99)\",\n              }\n            );\n          })\n        ),\n        new ApEffectOfCustomKeyframe(\n          this.querySelector(\".ap-imagetextblock__text-container\"),\n          {\n            opacity: [0, 1],\n          },\n          {\n            duration: 300,\n          }\n        ),\n      ];\n      const animation = prefersReducedMotion\n        ? new ApAnimationCustom(new ApEffectParallel(innerEffect))\n        : new ApAnimationCustom(new ApEffectSequence(innerEffect));\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n  };\n  window.customElements.define(\"ap-imagetextblock\", ApImageTextBlock);\n\n  var ApListArticle = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.articleItems = Array.from(this.querySelectorAll(\".article-item\"));\n      if (this.staggerApparition) {\n        let val = 0;\n        if (this.clientHeight > 0) {\n          val = Math.min(50 / this.clientHeight, 1);\n        }\n        await this.untilObjectVisible({\n          threshold: val,\n        });\n        const animation = new ApAnimationCustom(\n          new ApEffectParallel(\n            this.articleItems.map((item, index) => {\n              let transform = 0;\n              if (MediaFeatures.prefersReducedMotion()) {\n                transform = 0;\n              } else {\n                if (window.innerWidth < 1e3) {\n                  transform = 35;\n                } else {\n                  transform = 60;\n                }\n              }\n              let delay = 0;\n              if (MediaFeatures.prefersReducedMotion()) {\n                delay = 0;\n              } else {\n                delay = 100 * index - Math.min(3 * index * index, 100 * index);\n              }\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [`translateY(${transform}px)`, \"translateY(0)\"],\n                },\n                {\n                  duration: 600,\n                  delay: delay,\n                  easing: \"ease\",\n                }\n              );\n            })\n          )\n        );\n        this._sectionReloadedStatus ? animation.finish() : animation.play();\n      }\n    }\n    get staggerApparition() {\n      return this.hasAttribute(\"stagger-apparition\");\n    }\n  };\n  window.customElements.define(\"ap-listarticle\", ApListArticle);\n\n  // var ApBlogPostHeader = class extends HTMLElement {\n  //   async connectedCallback() {\n  //     const image = this.querySelector(\".article__image\");\n  //     if (MediaFeatures.prefersReducedMotion()) {\n  //       image.removeAttribute(\"reveal\");\n  //     } else {\n  //       await imageLoaded(image);\n  //       image.animate({ opacity: [0, 1], transform: [\"scale(1.1)\", \"scale(1)\"] }, { duration: 500, fill: \"forwards\", easing: \"cubic-bezier(0.65, 0, 0.35, 1)\" });\n  //     }\n  //   }\n  // };\n  // window.customElements.define(\"ap-blogpostheader\", ApBlogPostHeader);\n\n  var ApPredictiveSearchInput = class extends HTMLInputElement {\n    connectedCallback() {\n      this.addEventListener(\n        \"click\",\n        () => (document.getElementById(this.getAttribute(\"ap-controlsaria\")).open = true)\n      );\n    }\n  };\n  window.customElements.define(\"ap-predictivesearchinput\", ApPredictiveSearchInput, {\n    extends: \"input\",\n  });\n\n  var ApDrawerContent = class extends ApolloOpenableElement {\n    connectedCallback() {\n      super.connectedCallback();\n      if (this.hasAttribute(\"reverse-breakpoint\")) {\n        this.originalDirection = this.classList.contains(\"drawer--from-left\") ? \"left\" : \"right\";\n        const matchMedia2 = window.matchMedia(this.getAttribute(\"reverse-breakpoint\"));\n        matchMedia2.addListener(this._objCheckReverseOpenDirec.bind(this));\n        this._objCheckReverseOpenDirec(matchMedia2);\n      }\n      this.apollo.on(\"click\", \".drawer__overlay\", () => (this.open = false));\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          document.documentElement.classList.toggle(\"ap-lockall\", this.open);\n      }\n    }\n    _objCheckReverseOpenDirec(match) {\n      this.classList.remove(\"drawer--from-left\");\n      if (\n        (this.originalDirection === \"left\" && !match.matches) ||\n        (this.originalDirection !== \"left\" && match.matches)\n      ) {\n        this.classList.add(\"drawer--from-left\");\n      }\n    }\n  };\n  window.customElements.define(\"ap-drawercontent\", ApDrawerContent);\n\n  var ApSearchDrawer = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.inputElement = this.querySelector('[name=\"q\"]');\n      this._apDrawerContentElement = this.querySelector(\".drawer__content\");\n      this._apDrawerFooterElement = this.querySelector(\".drawer__footer\");\n      this._apLoadingStateElement = this.querySelector(\".predictive-search__loading-state\");\n      this._apResultsElement = this.querySelector(\".predictive-search__results\");\n      this._apMenuListElement = this.querySelector(\".predictive-search__menu-list\");\n      this.apollo.on(\"input\", '[name=\"q\"]', this._debounce(this._apOnSearch.bind(this), 200));\n      this.apollo.on(\n        \"click\",\n        '[data-action=\"reset-search\"]',\n        this._apStartWithNewSearch.bind(this)\n      );\n    }\n    async _apOnSearch(event, target) {\n      if (event.key === \"Enter\") {\n        return;\n      }\n      if (this.abortController) {\n        this.abortController.abort();\n      }\n      this._apDrawerContentElement.classList.remove(\"drawer__content--center\");\n      this._apDrawerFooterElement.hidden = true;\n      if (target.value === \"\") {\n        this._apLoadingStateElement.hidden = true;\n        this._apResultsElement.hidden = true;\n        this._apMenuListElement ? (this._apMenuListElement.hidden = false) : \"\";\n      } else {\n        this._apDrawerContentElement.classList.add(\"drawer__content--center\");\n        this._apLoadingStateElement.hidden = false;\n        this._apResultsElement.hidden = true;\n        this._apMenuListElement ? (this._apMenuListElement.hidden = true) : \"\";\n        let apSearchResults = {};\n        try {\n          this.abortController = new AbortController();\n          if (this._apSupportSearchApi()) {\n            apSearchResults = await this._apDrawerDoWithSearch(target.value);\n          } else {\n            apSearchResults = await this._apLiquidWithSearch(target.value);\n          }\n        } catch (e) {\n          if (e.name === \"AbortError\") {\n            return;\n          }\n        }\n        this._apLoadingStateElement.hidden = true;\n        this._apResultsElement.hidden = false;\n        this._apMenuListElement ? (this._apMenuListElement.hidden = true) : \"\";\n        if (apSearchResults.hasResults) {\n          this._apDrawerFooterElement.hidden = false;\n          this._apDrawerContentElement.classList.remove(\"drawer__content--center\");\n        }\n        this._apResultsElement.innerHTML = apSearchResults.html;\n      }\n    }\n    async _apDrawerDoWithSearch(term) {\n      const apresponse = await fetch(\n        `${window.themeVariables.routes.apDrawerSearchUrl}?q=${term}&resources[limit]=10&resources[type]=${window.themeVariables.settings.searchMode}&resources[options[unavailable_products]]=${window.themeVariables.settings.searchProductsUnavailable}&resources[options[fields]]=title,body,product_type,variants.title,vendor&section_id=predictive-search`,\n        {\n          signal: this.abortController.signal,\n        }\n      );\n      const div = document.createElement(\"div\");\n      div.innerHTML = await apresponse.text();\n      return {\n        hasResults: div.querySelector(\".predictive-search__results-categories\") !== null,\n        html: div.firstElementChild.innerHTML,\n      };\n    }\n    async _apLiquidWithSearch(term) {\n      let promises = [],\n        supportedTypes = window.themeVariables.settings.searchMode\n          .split(\",\")\n          .filter((item) => item !== \"collection\");\n      supportedTypes.forEach((searchType) => {\n        promises.push(\n          fetch(\n            `${window.themeVariables.routes.searchUrl}?section_id=predictive-search-compatibility&q=${term}&type=${searchType}&options[unavailable_products]=${window.themeVariables.settings.searchProductsUnavailable}&options[prefix]=last`,\n            {\n              signal: this.abortController.signal,\n            }\n          )\n        );\n      });\n      let results = await Promise.all(promises),\n        resultsByCategories = {};\n      for (const [index, value] of results.entries()) {\n        const resultAsText = await value.text();\n        const fakeDiv = document.createElement(\"div\");\n        fakeDiv.innerHTML = resultAsText;\n        fakeDiv.innerHTML = fakeDiv.firstElementChild.innerHTML;\n        if (fakeDiv.childElementCount > 0) {\n          resultsByCategories[supportedTypes[index]] = fakeDiv.innerHTML;\n        }\n      }\n      if (Object.keys(resultsByCategories).length > 0) {\n        const entries = Object.entries(resultsByCategories),\n          keys = Object.keys(resultsByCategories);\n        let html = `\n        <ap-navtabs class=\"ap-navtabs ap-navtabs--edge2edge ap-navtabs--narrow ap-navtabs--no-border\">\n          <ap-scrollablecontent class=\"ap-navtabs__scroller hide-scrollbar\">\n            <div class=\"ap-navtabs__scroller-inner\">\n              <div class=\"ap-navtabs__item-list\">\n      `;\n        for (let [type, value] of entries) {\n          html += `\n          <button type=\"button\" class=\"ap-navtabs__item heading heading--small\" ap-expanded-aria=\"${\n            type === keys[0] ? \"true\" : \"false\"\n          }\" ap-controlsaria=\"predictive-search-${type}\">\n            ${\n              window.themeVariables.strings[\n                \"search\" + type.charAt(0).toUpperCase() + type.slice(1) + \"s\"\n              ]\n            }\n          </button>\n        `;\n        }\n        html += `\n              </div>\n            </div>\n          </ap-scrollablecontent>\n        </ap-navtabs>\n      `;\n        html += '<div class=\"predictive-search__results-categories\">';\n        for (let [type, value] of entries) {\n          html += `\n          <div class=\"predictive-search__results-categories-item\" ${\n            type !== keys[0] ? \"hidden\" : \"\"\n          } id=\"predictive-search-${type}\">\n            ${value}\n          </div>\n        `;\n        }\n        html += \"</div>\";\n        return {\n          hasResults: true,\n          html,\n        };\n      } else {\n        return {\n          hasResults: false,\n          html: `\n        <p class=\"text--large\">${window.themeVariables.strings.searchNoResults}</p>\n          <div class=\"button-wrapper\">\n            <button type=\"button\" data-action=\"reset-search\" class=\"button button--primary\">${window.themeVariables.strings.searchNewSearch}</button>\n          </div>\n        `,\n        };\n      }\n    }\n    _apStartWithNewSearch() {\n      this.inputElement.value = \"\";\n      this.inputElement.focus();\n      const event = new Event(\"input\", {\n        bubbles: true,\n        cancelable: true,\n      });\n      this.inputElement.dispatchEvent(event);\n    }\n    _apSupportSearchApi() {\n      const shopifyFeatureRequests = JSON.parse(\n        document.getElementById(\"shopify-features\").innerHTML\n      );\n      return shopifyFeatureRequests[\"predictiveSearch\"];\n    }\n    _debounce(fn, delay3) {\n      let timer = null;\n      return (...args) => {\n        clearTimeout(timer);\n        timer = setTimeout(() => {\n          fn.apply(this, args);\n        }, delay3);\n      };\n    }\n  };\n  window.customElements.define(\"ap-predictivesearchdrawer\", ApSearchDrawer);\n\n  var ApTimeline = class extends HTMLElement {\n    connectedCallback() {\n      this.prevNextButtons = this.querySelector(\"ap-button-nextprev\");\n      this.pageDots = this.querySelector(\"ap-pagedots\");\n      this.scrollBarElement = this.querySelector(\".timeline__progress-bar\");\n      this.listWrapperElement = this.querySelector(\".timeline__list-wrapper\");\n      this.listItemElements = Array.from(this.querySelectorAll(\".timeline__item\"));\n      this.isScrolling = false;\n      if (this.listItemElements.length > 1) {\n        this.addEventListener(\"ap-nextprev:prev\", this.previous.bind(this));\n        this.addEventListener(\"ap-nextprev:next\", this.next.bind(this));\n        this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n        if (Shopify.designMode) {\n          this.addEventListener(\"shopify:block:select\", (event) => {\n            this.select(\n              [...event.target.parentNode.children].indexOf(event.target),\n              !event.detail.load\n            );\n          });\n        }\n        this.itemIntersectionObserver = new IntersectionObserver(\n          this._evtOnItemObserved.bind(this),\n          {\n            threshold: 0.4,\n          }\n        );\n        const mediaQuery = window.matchMedia(window.themeVariables.breakpoints.pocket);\n        mediaQuery.addListener(this._evtOnChangedMedia.bind(this));\n        this._evtOnChangedMedia(mediaQuery);\n      }\n    }\n    get selectedIndex() {\n      return this.listItemElements.findIndex((item) => !item.hasAttribute(\"hidden\"));\n    }\n    previous() {\n      this.select(Math.max(0, this.selectedIndex - 1));\n    }\n    next() {\n      this.select(Math.min(this.selectedIndex + 1, this.listItemElements.length - 1));\n    }\n    select(index, animate = true) {\n      const listItemElement = this.listItemElements[index],\n        apBoundingRect = listItemElement.getBoundingClientRect();\n      if (animate) {\n        this.isScrolling = true;\n        setTimeout(() => (this.isScrolling = false), 800);\n      }\n      if (window.matchMedia(window.themeVariables.breakpoints.pocket).matches) {\n        this.listWrapperElement.scrollTo({\n          behavior: animate ? \"smooth\" : \"auto\",\n          left: this.listItemElements[0].clientWidth * index,\n        });\n      } else {\n        this.listWrapperElement.scrollBy({\n          behavior: animate ? \"smooth\" : \"auto\",\n          left: Math.floor(apBoundingRect.left - window.innerWidth / 2 + apBoundingRect.width / 2),\n        });\n      }\n      this._evtOnSelectedItem(index);\n    }\n    _evtOnSelectedItem(index) {\n      var _a;\n      const listItemElement = this.listItemElements[index];\n      listItemElement.removeAttribute(\"hidden\", \"false\");\n      apSiblings(listItemElement).forEach((item) => item.setAttribute(\"hidden\", \"\"));\n      this.prevNextButtons.isPrevDisabled = index === 0;\n      this.prevNextButtons.isNextDisabled = index === this.listItemElements.length - 1;\n      this.pageDots.selectedIndex = index;\n      (_a = this.scrollBarElement) == null\n        ? void 0\n        : _a.style.setProperty(\n            \"--transform\",\n            `${(100 / (this.listItemElements.length - 1)) * index}%`\n          );\n    }\n    _evtOnItemObserved(entries) {\n      if (this.isScrolling) {\n        return;\n      }\n      entries.forEach((entry) => {\n        if (entry.isIntersecting) {\n          this._evtOnSelectedItem([...entry.target.parentNode.children].indexOf(entry.target));\n        }\n      });\n    }\n    _evtOnChangedMedia(event) {\n      if (event.matches) {\n        this.listItemElements.forEach((item) => this.itemIntersectionObserver.observe(item));\n      } else {\n        this.listItemElements.forEach((item) => this.itemIntersectionObserver.unobserve(item));\n      }\n    }\n  };\n  window.customElements.define(\"ap-timeline\", ApTimeline);\n\n  // js/custom-element/section/press/press-list.js\n  // var PressList = class extends CustomHTMLElement {\n  //   connectedCallback() {\n  //     this.pressItemsWrapper = this.querySelector(\".press-list__wrapper\");\n  //     this.pressItems = Array.from(this.querySelectorAll(\"press-item\"));\n  //     this.pageDots = this.querySelector(\"ap-pagedots\");\n  //     if (this.pressItems.length > 1) {\n  //       if (Shopify.designMode) {\n  //         this.addEventListener(\"shopify:block:select\", (event) => {\n  //           var _a;\n  //           (_a = this.intersectionObserver) == null ? void 0 : _a.disconnect();\n  //           if (event.detail.load || !event.target.selected) {\n  //             this.select(event.target.index, !event.detail.load);\n  //           }\n  //         });\n  //       }\n  //       this.pressItemsWrapper.addEventListener(\"swiperight\", this.previous.bind(this));\n  //       this.pressItemsWrapper.addEventListener(\"swipeleft\", this.next.bind(this));\n  //       this.addEventListener(\"ap-pagedots:changed\", (event) => this.select(event.detail.index));\n  //       this._blockVerticalScroll();\n  //     }\n  //     if (this.hasAttribute(\"reveal-on-scroll\")) {\n  //       this._setupTextOverlayImageVisibility();\n  //     }\n  //   }\n  //   async _setupTextOverlayImageVisibility() {\n  //     await this.untilObjectVisible();\n  //     this.pressItems[this.selectedIndex].transitionToEnter();\n  //   }\n  //   get selectedIndex() {\n  //     return this.pressItems.findIndex((item) => item.selected);\n  //   }\n  //   previous() {\n  //     this.select((this.selectedIndex - 1 + this.pressItems.length) % this.pressItems.length);\n  //   }\n  //   next() {\n  //     this.select((this.selectedIndex + 1 + this.pressItems.length) % this.pressItems.length);\n  //   }\n  //   async select(index, useEffect = true) {\n  //     const previousItem = this.pressItems[this.selectedIndex], newItem = this.pressItems[index];\n  //     await previousItem.transitionToLeave(useEffect);\n  //     this.pageDots.selectedIndex = index;\n  //     await newItem.transitionToEnter(useEffect);\n  //   }\n  // };\n  // Object.assign(PressList.prototype, ApBlockerMixinVerticalScroll);\n  // window.customElements.define(\"press-list\", PressList);\n\n  // js/custom-element/section/press/press-item.js\n  // var PressItem = class extends HTMLElement {\n  //   connectedCallback() {\n  //     this.addEventListener(\"ap-splitlines:re-split\", (event) => {\n  //       Array.from(event.target.children).forEach((line) => line.style.visibility = this.selected ? \"visible\" : \"hidden\");\n  //     });\n  //   }\n  //   get index() {\n  //     return [...this.parentNode.children].indexOf(this);\n  //   }\n  //   get selected() {\n  //     return !this.hasAttribute(\"hidden\");\n  //   }\n  //   async transitionToLeave(useEffect = true) {\n  //     const textLines = await resolveAsyncIterator(this.querySelectorAll(\"ap-splitlines\")), animation = new ApAnimationCustom(new ApEffectParallel(textLines.reverse().map((item, index) => {\n  //       return new ApEffectOfCustomKeyframe(item, {\n  //         visibility: [\"visible\", \"hidden\"],\n  //         clipPath: [\"inset(0 0 0 0)\", \"inset(0 0 100% 0)\"],\n  //         transform: [\"translateY(0)\", \"translateY(100%)\"]\n  //       }, {\n  //         duration: 350,\n  //         delay: 60 * index,\n  //         easing: \"cubic-bezier(0.68, 0.00, 0.77, 0.00)\"\n  //       });\n  //     })));\n  //     useEffect ? animation.play() : animation.finish();\n  //     await animation.finished;\n  //     this.setAttribute(\"hidden\", \"\");\n  //   }\n  //   async transitionToEnter(useEffect = true) {\n  //     this.removeAttribute(\"hidden\");\n  //     const textLines = await resolveAsyncIterator(this.querySelectorAll(\"ap-splitlines, .testimonial__author, .testimonial__icon\")), animation = new ApAnimationCustom(new ApEffectParallel(textLines.map((item, index) => {\n  //       return new ApEffectOfCustomKeyframe(item, {\n  //         visibility: [\"hidden\", \"visible\"],\n  //         clipPath: [\"inset(0 0 100% 0)\", \"inset(0 0 0px 0)\"],\n  //         transform: [\"translateY(100%)\", \"translateY(0)\"]\n  //       }, {\n  //         duration: 550,\n  //         delay: 120 * index,\n  //         easing: \"cubic-bezier(0.23, 1, 0.32, 1)\"\n  //       });\n  //     })));\n  //     useEffect ? animation.play() : animation.finish();\n  //     return animation.finished;\n  //   }\n  // };\n  // window.customElements.define(\"press-item\", PressItem);\n\n  // js/custom-element/section/header/ap-navigationofdesktop.js\n  var NavigationOfDesktop = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.timeoutOpen = null;\n      this.megaMenuCurrent = null;\n      this.apollo.on(\n        \"mouseenter\",\n        \".has-dropdown\",\n        (event, target) => {\n          if (event.target === target && event.relatedTarget !== null) {\n            this.openDropdown(target);\n          }\n        },\n        true\n      );\n      this.apollo.on(\"shopify:block:select\", (event) =>\n        this.openDropdown(event.target.parentElement)\n      );\n      this.apollo.on(\"shopify:block:deselect\", (event) =>\n        this.closeDropdown(event.target.parentElement)\n      );\n    }\n    openDropdown(parentElement) {\n      const itemmenu = parentElement.querySelector(\"[ap-controlsaria]\");\n      const itemdropdown = parentElement.querySelector(\n        `#${itemmenu.getAttribute(\"ap-controlsaria\")}`\n      );\n      if (itemdropdown.classList.contains(\"mega-menu\")) {\n        this.megaMenuCurrent = itemdropdown;\n      } else {\n        this.megaMenuCurrent = null;\n      }\n      let timeoutOpen = setTimeout(() => {\n        if (itemmenu.getAttribute(\"ap-expanded-aria\") === \"true\") {\n          return;\n        }\n        itemmenu.setAttribute(\"ap-expanded-aria\", \"true\");\n        itemdropdown.removeAttribute(\"hidden\");\n        if (itemdropdown.classList.contains(\"mega-menu\") && !MediaFeatures.prefersReducedMotion()) {\n          const items = Array.from(\n            itemdropdown.querySelectorAll(\".mega-menu__column, .mega-menu__image-push\")\n          );\n          items.forEach((item) => {\n            item.getAnimations().forEach((animation2) => animation2.cancel());\n            item.style.opacity = 0;\n          });\n          const animation = new ApAnimationCustom(\n            new ApEffectParallel(\n              items.map((item, index) => {\n                return new ApEffectOfCustomKeyframe(\n                  item,\n                  {\n                    opacity: [0, 1],\n                    transform: [\"translateY(-50px)\", \"translateY(0)\"],\n                  },\n                  {\n                    duration: 250,\n                    delay: 100 + 60 * index,\n                    easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n                  }\n                );\n              })\n            )\n          );\n          animation.play();\n        }\n        const leaveListener = (event) => {\n          if (event.relatedTarget !== null) {\n            this.closeDropdown(parentElement);\n            parentElement.removeEventListener(\"mouseleave\", leaveListener);\n          }\n        };\n        const leaveDocumentListener = () => {\n          this.closeDropdown(parentElement);\n          document.documentElement.removeEventListener(\"mouseleave\", leaveDocumentListener);\n        };\n        parentElement.addEventListener(\"mouseleave\", leaveListener);\n        document.documentElement.addEventListener(\"mouseleave\", leaveDocumentListener);\n        timeoutOpen = null;\n        this.dispatchEvent(\n          new CustomEvent(\"desktop-nav:dropdown:open\", {\n            bubbles: true,\n          })\n        );\n      }, 100);\n      parentElement.addEventListener(\n        \"mouseleave\",\n        () => {\n          if (timeoutOpen) {\n            clearTimeout(timeoutOpen);\n          }\n        },\n        {\n          once: true,\n        }\n      );\n    }\n    closeDropdown(parentElement) {\n      const itemmenu = parentElement.querySelector(\"[ap-controlsaria]\");\n      const itemdropdown = parentElement.querySelector(\n        `#${itemmenu.getAttribute(\"ap-controlsaria\")}`\n      );\n      requestAnimationFrame(() => {\n        itemdropdown.classList.add(\"is-closing\");\n        itemmenu.setAttribute(\"ap-expanded-aria\", \"false\");\n        setTimeout(\n          () => {\n            itemdropdown.setAttribute(\"hidden\", \"\");\n            clearTimeout(this.timeoutOpen);\n            itemdropdown.classList.remove(\"is-closing\");\n          },\n          itemdropdown.classList.contains(\"mega-menu\") && this.megaMenuCurrent !== itemdropdown\n            ? 250\n            : 0\n        );\n        this.dispatchEvent(\n          new CustomEvent(\"desktop-nav:dropdown:close\", {\n            bubbles: true,\n          })\n        );\n      });\n    }\n  };\n  window.customElements.define(\"ap-navigationofdesktop\", NavigationOfDesktop);\n\n  var ApolloMobileMenu = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"click\", \"a[href]\", () => {\n        this.open = false;\n      });\n    }\n    get apparitionAnimation() {\n      if (this._apparitionAnimation) {\n        return this._apparitionAnimation;\n      }\n      if (!MediaFeatures.prefersReducedMotion()) {\n        const navItems = Array.from(this.querySelectorAll('.mobile-nav__item[data-level=\"1\"]')),\n          effects = [];\n        effects.push(\n          new ApEffectParallel(\n            navItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\"translateX(-40px)\", \"translateX(0)\"],\n                },\n                {\n                  duration: 300,\n                  delay: 300 + 120 * index - Math.min(2 * index * index, 120 * index),\n                  easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n                }\n              );\n            })\n          )\n        );\n        const bottomBar = this.querySelector(\".drawer__footer\");\n        if (bottomBar) {\n          effects.push(\n            new ApEffectOfCustomKeyframe(\n              bottomBar,\n              {\n                opacity: [0, 1],\n                transform: [\"translateY(100%)\", \"translateY(0)\"],\n              },\n              {\n                duration: 300,\n                delay: 500 + Math.max(125 * navItems.length - 25 * navItems.length, 25),\n                easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n              }\n            )\n          );\n        }\n        return (this._apparitionAnimation = new ApAnimationCustom(new ApEffectParallel(effects)));\n      }\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          if (this.open && this.apparitionAnimation) {\n            Array.from(\n              this.querySelectorAll('.mobile-nav__item[data-level=\"1\"], .drawer__footer')\n            ).forEach((item) => (item.style.opacity = 0));\n            this.apparitionAnimation.play();\n          }\n          triggerEvent(this, this.open ? \"mobile-nav:open\" : \"mobile-nav:close\");\n      }\n    }\n  };\n  window.customElements.define(\"apollo-mobile-menu\", ApolloMobileMenu);\n\n  var ApolloVerticalMenu = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"click\", \"a[href]\", () => {\n        this.open = false;\n      });\n    }\n    get apparitionAnimation() {\n      if (this._apparitionAnimation) {\n        return this._apparitionAnimation;\n      }\n      if (!MediaFeatures.prefersReducedMotion()) {\n        const navItems = Array.from(this.querySelectorAll('.vertical-nav__item[data-level=\"1\"]')),\n          effects = [];\n        effects.push(\n          new ApEffectParallel(\n            navItems.map((item, index) => {\n              return new ApEffectOfCustomKeyframe(\n                item,\n                {\n                  opacity: [0, 1],\n                  transform: [\"translateX(-40px)\", \"translateX(0)\"],\n                },\n                {\n                  duration: 300,\n                  delay: 300 + 120 * index - Math.min(2 * index * index, 120 * index),\n                  easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n                }\n              );\n            })\n          )\n        );\n        const bottomBar = this.querySelector(\".drawer__footer\");\n        if (bottomBar) {\n          effects.push(\n            new ApEffectOfCustomKeyframe(\n              bottomBar,\n              {\n                opacity: [0, 1],\n                transform: [\"translateY(100%)\", \"translateY(0)\"],\n              },\n              {\n                duration: 300,\n                delay: 500 + Math.max(125 * navItems.length - 25 * navItems.length, 25),\n                easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n              }\n            )\n          );\n        }\n        return (this._apparitionAnimation = new ApAnimationCustom(new ApEffectParallel(effects)));\n      }\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          if (this.open && this.apparitionAnimation) {\n            Array.from(\n              this.querySelectorAll('.vertical-nav__item[data-level=\"1\"], .drawer__footer')\n            ).forEach((item) => (item.style.opacity = 0));\n            this.apparitionAnimation.play();\n          }\n          triggerEvent(this, this.open ? \"vertical-nav:open\" : \"vertical-nav:close\");\n      }\n    }\n  };\n\n  window.customElements.define(\"vertical-menu\", ApolloVerticalMenu);\n\n  var ApolloVerticalMenu = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"click\", \"a[href]\", () => {\n        this.open = false;\n      });\n    }\n    get apparitionAnimation() {\n      if (this._apparitionAnimation) {\n        return this._apparitionAnimation;\n      }\n    }\n    attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n    }\n  };\n  window.customElements.define(\"bar-menu\", ApolloVerticalMenu);\n\n  var ApHeaderStore = class extends CustomHTMLElement {\n    connectedCallback() {\n      if (window.ResizeObserver) {\n        this.resizeObserver = new ResizeObserver(this._apUpdatePropertiesCustom.bind(this));\n        this.resizeObserver.observe(this);\n        this.resizeObserver.observe(this.querySelector(\".header_wrapper\"));\n      }\n      if (this.transparentStatus) {\n        this.isTransparencyDetectionLocked = false;\n        this.apollo.on(\"desktop-nav:dropdown:open\", () => (this.lockTransparency = true));\n        this.apollo.on(\"desktop-nav:dropdown:close\", () => (this.lockTransparency = false));\n        this.rootApollo.on(\"mobile-nav:open\", () => (this.lockTransparency = true));\n        this.rootApollo.on(\"mobile-nav:close\", () => (this.lockTransparency = false));\n        this.apollo.on(\"mouseenter\", this._checkHeaderTransparent.bind(this), true);\n        this.apollo.on(\"mouseleave\", this._checkHeaderTransparent.bind(this));\n        if (this.stickyStatus) {\n          this._checkHeaderTransparent();\n          this._onWindowScrollListener = apStream(this._checkHeaderTransparent.bind(this), 100);\n          window.addEventListener(\"scroll\", this._onWindowScrollListener);\n        }\n      }\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      if (window.ResizeObserver) {\n        this.resizeObserver.disconnect();\n      }\n      if (this.transparentStatus && this.stickyStatus) {\n        window.removeEventListener(\"scroll\", this._onWindowScrollListener);\n      }\n    }\n    get stickyStatus() {\n      return this.hasAttribute(\"sticky\");\n    }\n    get transparentStatus() {\n      return this.hasAttribute(\"transparent\");\n    }\n    get transparentHeaderThreshold() {\n      return 25;\n    }\n    set lockTransparency(value) {\n      this.isTransparencyDetectionLocked = value;\n      this._checkHeaderTransparent();\n    }\n    _apUpdatePropertiesCustom(entries) {\n      entries.forEach((entry) => {\n        if (entry.target === this) {\n          let h = 0;\n          if (entry.borderBoxSize) {\n            if (entry.borderBoxSize.length > 0) {\n              h = entry.borderBoxSize[0].blockSize;\n            } else {\n              h = entry.borderBoxSize.blockSize;\n            }\n          } else {\n            h = entry.target.clientHeight;\n          }\n          const height = h;\n          document.documentElement.style.setProperty(\"--header-height\", `${height}px`);\n        }\n        if (entry.target.classList.contains(\"header_wrapper\")) {\n          let h = 0;\n          if (entry.borderBoxSize) {\n            if (entry.borderBoxSize.length > 0) {\n              h = entry.borderBoxSize[0].blockSize;\n            } else {\n              h = entry.borderBoxSize.blockSize;\n            }\n          } else {\n            h = entry.target.clientHeight;\n          }\n          const heightWithoutNav = h;\n          document.documentElement.style.setProperty(\n            \"--header-height-without-bottom-nav\",\n            `${heightWithoutNav}px`\n          );\n        }\n      });\n    }\n    _checkHeaderTransparent(event) {\n      if (\n        this.isTransparencyDetectionLocked ||\n        window.scrollY > this.transparentHeaderThreshold ||\n        (event && event.type === \"mouseenter\")\n      ) {\n        this.classList.remove(\"header-transparent\");\n      } else {\n        this.classList.add(\"header-transparent\");\n      }\n    }\n  };\n  window.customElements.define(\"ap-headerstore\", ApHeaderStore);\n\n  var ApSwipePhotoUi = class {\n    constructor(pswp) {\n      this.photoSwipeInstance = pswp;\n      this.apollo = new main_default(this.photoSwipeInstance.scrollWrap);\n      this.maxSpreadZoom = window.themeVariables.settings.mobileZoomFactor || 2;\n      this.pswpUi = this.photoSwipeInstance.scrollWrap.querySelector(\".pswp__ui\");\n      this.apollo.on(\"click\", '[data-action=\"pswp-close\"]', this._close.bind(this));\n      this.apollo.on(\"click\", '[data-action=\"pswp-prev\"]', this._evtGoToPrev.bind(this));\n      this.apollo.on(\"click\", '[data-action=\"pswp-next\"]', this._evtGoToNext.bind(this));\n      this.apollo.on(\"click\", '[data-action=\"apswp-move-to\"]', this._evtMoveTo.bind(this));\n      this.photoSwipeInstance.listen(\"close\", this._evtOnClosedApSwp.bind(this));\n      this.photoSwipeInstance.listen(\"doubleTap\", this._evtOnDoubleTapApSwp.bind(this));\n      this.photoSwipeInstance.listen(\"beforeChange\", this._evtOnBeforeChangeApSwp.bind(this));\n      this.photoSwipeInstance.listen(\n        \"initialZoomInEnd\",\n        this._evtOnInitialZoomInEndApSwp.bind(this)\n      );\n      this.photoSwipeInstance.listen(\"initialZoomOut\", this._evtOnInitialZoomOutApSwp.bind(this));\n      this.photoSwipeInstance.listen(\n        \"parseVerticalMargin\",\n        this._evtOnParseVerticalMarginApSwp.bind(this)\n      );\n      this.apollo.on(\"pswpTap\", \".pswp__img\", this._evtOnTapApSwp.bind(this));\n    }\n    init() {\n      const buttonsNextPrev = this.pswpUi.querySelector(\".pswp__prev-next-buttons\");\n      const wrapperNavDots = this.pswpUi.querySelector(\".pswp__dots-nav-wrapper\");\n      if (this.photoSwipeInstance.items.length <= 1) {\n        buttonsNextPrev.style.display = \"none\";\n        wrapperNavDots.style.display = \"none\";\n        return;\n      }\n      buttonsNextPrev.style.display = \"\";\n      wrapperNavDots.style.display = \"\";\n      let dotsHtmlNav = \"\";\n      this.photoSwipeInstance.items.forEach((item, index) => {\n        dotsHtmlNav += `\n        <button class=\"dots-nav__item tap-area\" ${\n          index === 0 ? 'ap-currentaria=\"true\"' : \"\"\n        } data-action=\"apswp-move-to\">\n          <span class=\"visually-hidden\">Go to slide ${index}</span>\n        </button>\n      `;\n      });\n      wrapperNavDots.querySelector(\".pswp__dots-nav-wrapper .dots-nav\").innerHTML = dotsHtmlNav;\n    }\n    _close() {\n      this.photoSwipeInstance.close();\n    }\n    _evtGoToPrev() {\n      this.photoSwipeInstance.prev();\n    }\n    _evtGoToNext() {\n      this.photoSwipeInstance.next();\n    }\n    _evtMoveTo(event, target) {\n      this.photoSwipeInstance.goTo([...target.parentNode.children].indexOf(target));\n    }\n    _evtOnClosedApSwp() {\n      this.apollo.off(\"pswpTap\");\n    }\n    _evtOnDoubleTapApSwp(point) {\n      const initialZoomLevel = this.photoSwipeInstance.currItem.initialZoomLevel;\n      if (this.photoSwipeInstance.getZoomLevel() !== initialZoomLevel) {\n        this.photoSwipeInstance.zoomTo(initialZoomLevel, point, 333);\n      } else {\n        let val = this.maxSpreadZoom;\n        if (initialZoomLevel < 0.7) {\n          val = 1;\n        }\n        this.photoSwipeInstance.zoomTo(val, point, 333);\n      }\n    }\n    _evtOnTapApSwp(event) {\n      if (event.detail.pointerType === \"mouse\") {\n        this.photoSwipeInstance.toggleDesktopZoom(event.detail.releasePoint);\n      }\n    }\n    _evtOnBeforeChangeApSwp() {\n      if (this.photoSwipeInstance.items.length <= 1) {\n        return;\n      }\n      const activeDot = this.photoSwipeInstance.scrollWrap.querySelector(\n        `.dots-nav__item:nth-child(${this.photoSwipeInstance.getCurrentIndex() + 1})`\n      );\n      activeDot.setAttribute(\"ap-currentaria\", \"true\");\n      apSiblings(activeDot).forEach((item) => item.removeAttribute(\"ap-currentaria\"));\n    }\n    _evtOnInitialZoomInEndApSwp() {\n      var _a;\n      (_a = this.pswpUi) == null ? void 0 : _a.classList.remove(\"pswp__ui--hidden\");\n    }\n    _evtOnInitialZoomOutApSwp() {\n      var _a;\n      (_a = this.pswpUi) == null ? void 0 : _a.classList.add(\"pswp__ui--hidden\");\n    }\n    _evtOnParseVerticalMarginApSwp(item) {\n      item.vGap.bottom =\n        this.photoSwipeInstance.items.length <= 1 ||\n        window.matchMedia(window.themeVariables.breakpoints.lapAndUp).matches\n          ? 0\n          : 60;\n    }\n  };\n  var ApProductZoomImage = class extends ApolloOpenableElement {\n    connectedCallback() {\n      super.connectedCallback();\n      this.mediaElement = document.getElementById(\"ap_product_detail_media\");\n      this.maxSpreadZoom = window.themeVariables.settings.mobileZoomFactor || 2;\n      ApLoaderLibrary.load(\"photoswipe\");\n    }\n    disconnectedCallback() {\n      var _a;\n      super.disconnectedCallback();\n      (_a = this.photoSwipeInstance) == null ? void 0 : _a.destroy();\n    }\n    async attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          if (this.open) {\n            await ApLoaderLibrary.load(\"photoswipe\");\n            this._openPhotoSwipe();\n          }\n      }\n    }\n    async _openPhotoSwipe() {\n      const items = await this._buildItemsSwipe();\n      this.photoSwipeInstance = new window.ThemePhotoSwipe(this, ApSwipePhotoUi, items, {\n        index: items.findIndex((item) => item.selected),\n        maxSpreadZoom: this.maxSpreadZoom,\n        loop: false,\n        allowPanToNext: false,\n        closeOnScroll: false,\n        closeOnVerticalDrag: MediaFeatures.supportsHover(),\n        showHideOpacity: true,\n        arrowKeys: true,\n        history: false,\n        getThumbBoundsFn: () => {\n          const thumbnail = this.mediaElement.querySelector(\".product__media-item.is-selected\");\n          const pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\n          const rect = thumbnail.getBoundingClientRect();\n          return {\n            x: rect.left,\n            y: rect.top + pageYScroll,\n            w: rect.width,\n          };\n        },\n        getDoubleTapZoom: (isMouseClick, item) => {\n          if (isMouseClick) {\n            if (item.w > item.h) {\n              return 1.6;\n            } else {\n              return 1;\n            }\n          } else {\n            if (item.initialZoomLevel < 0.7) {\n              return 1;\n            } else {\n              return 1.33;\n            }\n          }\n        },\n      });\n      let last_Width = null;\n      this.photoSwipeInstance.updateSize = new Proxy(this.photoSwipeInstance.updateSize, {\n        apply: (target, thisArg, argArray) => {\n          if (last_Width !== window.innerWidth) {\n            Reflect.apply(target, thisArg, argArray);\n            last_Width = window.innerWidth;\n          }\n        },\n      });\n      this.photoSwipeInstance.listen(\"close\", () => {\n        this.open = false;\n      });\n      this.photoSwipeInstance.init();\n    }\n    async _buildItemsSwipe() {\n      const activeImages = Array.from(\n          this.mediaElement.querySelectorAll(\n            '.product__media-item[data-media-type=\"image\"]:not(.is-filtered)'\n          )\n        ),\n        product = await ApLoaderProduct.load(this.getAttribute(\"product-handle\"));\n      return Promise.resolve(\n        activeImages.map((item) => {\n          const matchedMedia = product[\"media\"].find(\n            (media) => media.id === parseInt(item.getAttribute(\"data-media-id\"))\n          );\n          const supportedSizes = apGetSupportedSizes(\n            matchedMedia,\n            [\n              200, 300, 400, 500, 600, 700, 800, 1e3, 1200, 1400, 1600, 1800, 2e3, 2200, 2400, 2600,\n              2800, 3e3,\n            ]\n          );\n          const desiredWidth = Math.min(\n            supportedSizes[supportedSizes.length - 1],\n            window.innerWidth\n          );\n          return {\n            selected: item.classList.contains(\"is-selected\"),\n            src: apGetSizedOfMediaUrl(\n              matchedMedia,\n              `${Math.ceil(\n                Math.min(desiredWidth * window.devicePixelRatio * this.maxSpreadZoom, 3e3)\n              )}x`\n            ),\n            msrc: item.firstElementChild.currentSrc,\n            originalMedia: matchedMedia,\n            w: desiredWidth,\n            h: parseInt(desiredWidth / matchedMedia[\"aspect_ratio\"]),\n          };\n        })\n      );\n    }\n  };\n  window.customElements.define(\"ap-productzoomimage\", ApProductZoomImage);\n\n  var ApInventoryProduct = class extends HTMLElement {\n    connectedCallback() {\n      var _a;\n      const scriptTag = this.querySelector(\"script\");\n      if (!scriptTag) {\n        return;\n      }\n      this.inventories = JSON.parse(scriptTag.innerHTML);\n      if ((_a = document.getElementById(this.getAttribute(\"form-id\"))) == null) {\n        void 0;\n      } else {\n        _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n      }\n    }\n    _evtOnChangedVariant(event) {\n      var _a;\n      (_a = this.querySelector(\"span\")) == null ? void 0 : _a.remove();\n      if (event.detail.variant && this.inventories[event.detail.variant[\"id\"]] !== \"\") {\n        this.hidden = false;\n        this.insertAdjacentHTML(\"afterbegin\", this.inventories[event.detail.variant[\"id\"]]);\n      } else {\n        this.hidden = true;\n      }\n    }\n  };\n  window.customElements.define(\"ap-inventoryproduct\", ApInventoryProduct);\n\n  var ApContainerPayment = class extends HTMLElement {\n    connectedCallback() {\n      var _a;\n      if ((_a = document.getElementById(this.getAttribute(\"form-id\"))) == null) {\n        void 0;\n      } else {\n        _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n      }\n      if (Shopify.designMode && Shopify.PaymentButton) {\n        Shopify.PaymentButton.init();\n      }\n    }\n    _evtOnChangedVariant(event) {\n      this._evtUpdateAddToCartButton(event.detail.variant);\n      this._evtUpdateCheckoutButtonDynamic(event.detail.variant);\n    }\n    _evtUpdateAddToCartButton(variant) {\n      let addToCartObjectButtonElement = this.querySelector(\"[data-product-add-to-cart-button]\");\n      if (!addToCartObjectButtonElement) {\n        return;\n      }\n      let addToCartTextButton = \"\";\n      addToCartObjectButtonElement.classList.remove(\n        \"button--primary\",\n        \"button--secondary\",\n        \"button--ternary\"\n      );\n      if (!variant) {\n        addToCartObjectButtonElement.setAttribute(\"disabled\", \"disabled\");\n        addToCartObjectButtonElement.classList.add(\"button--ternary\");\n        addToCartTextButton = window.themeVariables.strings.productFormUnavailable;\n      } else {\n        if (variant[\"available\"]) {\n          addToCartObjectButtonElement.removeAttribute(\"disabled\");\n          addToCartObjectButtonElement.classList.add(\n            addToCartObjectButtonElement.hasAttribute(\"data-use-primary\")\n              ? \"button--primary\"\n              : \"button--secondary\"\n          );\n          addToCartTextButton = addToCartObjectButtonElement.getAttribute(\"data-button-content\");\n        } else {\n          addToCartObjectButtonElement.setAttribute(\"disabled\", \"disabled\");\n          addToCartObjectButtonElement.classList.add(\"button--ternary\");\n          addToCartTextButton = window.themeVariables.strings.productFormSoldOut;\n        }\n      }\n      if (addToCartObjectButtonElement.getAttribute(\"is\") === \"loader-button\") {\n        addToCartObjectButtonElement.firstElementChild.innerHTML = addToCartTextButton;\n      } else {\n        addToCartObjectButtonElement.innerHTML = addToCartTextButton;\n      }\n    }\n    _evtUpdateCheckoutButtonDynamic(variant) {\n      let paymentObjectButtonElement = this.querySelector(\".shopify-payment-button\");\n      if (!paymentObjectButtonElement) {\n        return;\n      }\n      paymentObjectButtonElement.style.display =\n        !variant || !variant[\"available\"] ? \"none\" : \"block\";\n    }\n  };\n  window.customElements.define(\"ap-paymentcontainerproduct\", ApContainerPayment);\n\n  var ApProductPaymentTerms = class extends CustomHTMLElement {\n    connectedCallback() {\n      var _a;\n      if ((_a = document.getElementById(this.getAttribute(\"form-id\"))) == null) {\n        void 0;\n      } else {\n        _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n      }\n    }\n    _evtOnChangedVariant(event) {\n      const variant = event.detail.variant;\n      if (variant) {\n        const elementId = this.querySelector('[name=\"id\"]');\n        elementId.value = variant[\"id\"];\n        elementId.dispatchEvent(\n          new Event(\"change\", {\n            bubbles: true,\n          })\n        );\n      }\n    }\n  };\n  window.customElements.define(\"ap-productpaymentterms\", ApProductPaymentTerms);\n\n  var ApProductForm = class extends HTMLFormElement {\n    connectedCallback() {\n      this.id.disabled = false;\n      if (\n        window.themeVariables.settings.cartType === \"page\" ||\n        window.themeVariables.settings.pageType === \"cart\"\n      ) {\n        return;\n      }\n      this.addEventListener(\"submit\", this._onSubmitApProductForm.bind(this));\n    }\n    async _onSubmitApProductForm(event) {\n      event.preventDefault();\n      if (!this.checkValidity()) {\n        this.reportValidity();\n        return;\n      }\n      const submitButtons = Array.from(this.elements).filter((button) => button.type === \"submit\");\n      submitButtons.forEach((submitButton) => {\n        submitButton.setAttribute(\"disabled\", \"disabled\");\n        submitButton.setAttribute(\"ap-ariabusy\", \"true\");\n      });\n      const product_Form = new FormData(this);\n      product_Form.append(\"sections\", [\"mini-cart\"]);\n      product_Form.delete(\"option1\");\n      product_Form.delete(\"option2\");\n      product_Form.delete(\"option3\");\n      const response = await fetch(`${window.themeVariables.routes.cartAddUrl}.js`, {\n        body: product_Form,\n        method: \"POST\",\n        headers: {\n          \"X-Requested-With\": \"XMLHttpRequest\",\n        },\n      });\n      submitButtons.forEach((submitButton) => {\n        submitButton.removeAttribute(\"disabled\");\n        submitButton.removeAttribute(\"ap-ariabusy\");\n      });\n      const responseJson = await response.json();\n      if (response.ok) {\n        let val = responseJson;\n        if (responseJson.hasOwnProperty(\"items\")) {\n          val = responseJson[\"items\"][0];\n        }\n        this.dispatchEvent(\n          new CustomEvent(\"variant:added\", {\n            bubbles: true,\n            detail: {\n              variant: val,\n            },\n          })\n        );\n        fetch(`${window.themeVariables.routes.cartUrl}.js`).then(async (response2) => {\n          const cartContent = await response2.json();\n          document.documentElement.dispatchEvent(\n            new CustomEvent(\"cart:updated\", {\n              bubbles: true,\n              detail: {\n                cart: cartContent,\n              },\n            })\n          );\n        });\n        document.documentElement.dispatchEvent(\n          // NOTE: deliberately NOT passing `cart` here. ApCartDrawer._rerenderCart\n          // only uses event.detail.cart.sections[\"mini-cart\"] when detail.cart is\n          // present, but /cart/add.js's JSON response has no `.sections` key -\n          // that branch throws (silently, drawer never re-renders) if `cart` is\n          // set to the raw add response. Omitting it routes to the fallback\n          // branch, which correctly re-fetches the section's own fresh HTML.\n          // Same fix already applied in sections/mini-cart.liquid's bundle-add\n          // handler - see the comment there for the original diagnosis.\n          new CustomEvent(\"cart:refresh\", {\n            bubbles: true,\n            detail: {\n              // Deliberately never auto-open the drawer on add-to-cart - the\n              // drawer's content is still kept fresh in the background (per the\n              // fix above), it just doesn't pop open on its own. It should only\n              // open when the customer explicitly clicks a cart icon.\n              openMiniCart: false,\n            },\n          })\n        );\n      }\n      this.dispatchEvent(\n        new CustomEvent(\"ap-cartnotification:show\", {\n          bubbles: true,\n          cancelable: true,\n          detail: {\n            status: response.ok ? \"success\" : \"error\",\n            error: responseJson[\"description\"] || \"\",\n          },\n        })\n      );\n    }\n  };\n  window.customElements.define(\"ap-productform\", ApProductForm, {\n    extends: \"form\",\n  });\n\n  var ApProductMedia = class extends CustomHTMLElement {\n    async connectedCallback() {\n      var _a;\n      this.flickityCarousel = this.querySelector(\"ap-flickitycarousel\");\n      if (this.hasAttribute(\"reveal-on-scroll\")) {\n        this._setupTextOverlayImageVisibility();\n      }\n      if (\n        this.flickityCarousel.childElementCount === 1 ||\n        this.querySelector(\".ap-product-media-list\").getAttribute(\"list-type\")\n      ) {\n        return;\n      }\n      this.selectedVariantMediaId = null;\n      this.viewInSpaceElement = this.querySelector(\"[data-shopify-model3d-id]\");\n      this.buttonZoom = this.querySelector(\".product__zoom-button\");\n      this.product = await ApLoaderProduct.load(this.getAttribute(\"product-handle\"));\n      (_a = document.getElementById(this.getAttribute(\"form-id\"))) == null\n        ? void 0\n        : _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n      this.flickityCarousel.addEventListener(\"model:played\", () =>\n        this.flickityCarousel.setDraggable(false)\n      );\n      this.flickityCarousel.addEventListener(\"model:paused\", () =>\n        this.flickityCarousel.setDraggable(true)\n      );\n      this.flickityCarousel.addEventListener(\"video:played\", () =>\n        this.flickityCarousel.setDraggable(false)\n      );\n      this.flickityCarousel.addEventListener(\"video:paused\", () =>\n        this.flickityCarousel.setDraggable(true)\n      );\n      // this.flickityCarousel.addEventListener(\"flickity:ready\", this._evtOnFlickityReady.bind(this));\n      this.flickityCarousel.addEventListener(\n        \"flickity:slide-changed\",\n        this._eveOnFlickityChanged.bind(this)\n      );\n      this.flickityCarousel.addEventListener(\n        \"flickity:slide-settled\",\n        this._evtOnFlickitySettled.bind(this)\n      );\n      // this._evtOnFlickityReady();\n    }\n    get thumbnailsPosition() {\n      return window.matchMedia(window.themeVariables.breakpoints.pocket).matches\n        ? \"bottom\"\n        : this.getAttribute(\"thumbnails-position\");\n    }\n    async _setupTextOverlayImageVisibility() {\n      await this.untilObjectVisible();\n      const flickityInstance = await this.flickityCarousel.flickityInstance;\n      let ap_image = this.querySelector(\".ap-product-media-image-wrapper img\");\n      if (flickityInstance) {\n        ap_image = flickityInstance.selectedElement.querySelector(\"img\");\n      }\n      const image = ap_image;\n      const prefersReducedMotion = MediaFeatures.prefersReducedMotion();\n      await imageLoaded(image);\n      const animation = new ApAnimationCustom(\n        new ApEffectParallel([\n          new ApEffectOfCustomKeyframe(\n            image,\n            {\n              opacity: [0, 1],\n              transform: [`scale(${prefersReducedMotion ? 1 : 1.1})`, \"scale(1)\"],\n            },\n            {\n              duration: 500,\n              easing: \"cubic-bezier(0.65, 0, 0.35, 1)\",\n            }\n          ),\n          new ApEffectParallel(\n            Array.from(this.querySelectorAll(\".product__thumbnail-item:not(.is-filtered)\")).map(\n              (item, index) => {\n                return new ApEffectOfCustomKeyframe(\n                  item,\n                  {\n                    opacity: [0, 1],\n                    transform:\n                      this.thumbnailsPosition === \"left\"\n                        ? [`translateY(${prefersReducedMotion ? 0 : \"40px\"})`, \"translateY(0)\"]\n                        : [`translateX(${prefersReducedMotion ? 0 : \"50px\"})`, \"translateX(0)\"],\n                  },\n                  {\n                    duration: 250,\n                    delay: prefersReducedMotion ? 0 : 100 * index,\n                    easing: \"cubic-bezier(0.75, 0, 0.175, 1)\",\n                  }\n                );\n              }\n            )\n          ),\n        ])\n      );\n      this._sectionReloadedStatus ? animation.finish() : animation.play();\n    }\n    async _evtOnChangedVariant(event) {\n      const productvariant = event.detail.variant;\n      const mediaIdsFiltered = [];\n      let mediaReloadStatus = false;\n      this.product[\"media\"].forEach((media) => {\n        var _a;\n        let matchMedia2 =\n          productvariant[\"featured_media\"] &&\n          media[\"id\"] === productvariant[\"featured_media\"][\"id\"];\n        if ((_a = media[\"alt\"]) == null ? void 0 : _a.includes(\"#\")) {\n          mediaReloadStatus = true;\n          if (!matchMedia2) {\n            const altofParts = media[\"alt\"].split(\"#\"),\n              mediaGroupParts = altofParts.pop().split(\"_\");\n            this.product[\"options\"].forEach((option) => {\n              if (option[\"name\"].toLowerCase() === mediaGroupParts[0].toLowerCase()) {\n                if (\n                  productvariant[\"options\"][option[\"position\"] - 1].toLowerCase() !==\n                  mediaGroupParts[1].trim().toLowerCase()\n                ) {\n                  mediaIdsFiltered.push(media[\"id\"]);\n                }\n              }\n            });\n          }\n        }\n      });\n      const currentlyFilteredIds = [\n        ...new Set(\n          Array.from(this.querySelectorAll(\".is-filtered[data-media-id]\")).map((item) =>\n            parseInt(item.getAttribute(\"data-media-id\"))\n          )\n        ),\n      ];\n      if (currentlyFilteredIds.some((value) => !mediaIdsFiltered.includes(value))) {\n        const selectedMediaId = productvariant[\"featured_media\"]\n          ? productvariant[\"featured_media\"][\"id\"]\n          : this.product[\"media\"]\n              .map((item) => item.id)\n              .filter((item) => !mediaIdsFiltered.includes(item))[0];\n        Array.from(this.querySelectorAll(\"[data-media-id]\")).forEach((item) => {\n          item.classList.toggle(\n            \"is-filtered\",\n            mediaIdsFiltered.includes(parseInt(item.getAttribute(\"data-media-id\")))\n          );\n          item.classList.toggle(\n            \"is-selected\",\n            selectedMediaId === parseInt(item.getAttribute(\"data-media-id\"))\n          );\n          item.classList.toggle(\n            \"is-initial-selected\",\n            selectedMediaId === parseInt(item.getAttribute(\"data-media-id\"))\n          );\n        });\n        this.flickityCarousel.reload();\n      } else {\n        if (\n          !event.detail.variant[\"featured_media\"] ||\n          this.selectedVariantMediaId === event.detail.variant[\"featured_media\"][\"id\"]\n        ) {\n          return;\n        }\n        this.flickityCarousel.select(\n          `[data-media-id=\"${event.detail.variant[\"featured_media\"][\"id\"]}\"]`\n        );\n      }\n      this.selectedVariantMediaId = event.detail.variant[\"featured_media\"]\n        ? event.detail.variant[\"featured_media\"][\"id\"]\n        : null;\n    }\n    // async _evtOnFlickityReady() {\n    //   const flickityInstance = await this.flickityCarousel.flickityInstance;\n    //   if ([\"video\", \"external_video\"].includes(flickityInstance.selectedElement.getAttribute(\"data-media-type\")) && this.hasAttribute(\"autoplay-video\")) {\n    //     flickityInstance.selectedElement.firstElementChild.play();\n    //   }\n    // }\n    async _eveOnFlickityChanged() {\n      const flickityInstance = await this.flickityCarousel.flickityInstance;\n      flickityInstance.cells.forEach((item) => {\n        if (\n          [\"external_video\", \"video\", \"model\"].includes(\n            item.element.getAttribute(\"data-media-type\")\n          )\n        ) {\n          if (item.element.firstElementChild) {\n            item.element.firstElementChild.pause();\n          }\n        }\n      });\n    }\n    async _evtOnFlickitySettled() {\n      const flickityInstance = await this.flickityCarousel.flickityInstance;\n      const selectedSlide = flickityInstance.selectedElement;\n      if (this.buttonZoom) {\n        this.buttonZoom.hidden = selectedSlide.getAttribute(\"data-media-type\") !== \"image\";\n      }\n      if (this.viewInSpaceElement) {\n        this.viewInSpaceElement.setAttribute(\n          \"data-shopify-model3d-id\",\n          this.viewInSpaceElement.getAttribute(\"data-shopify-model3d-default-id\")\n        );\n      }\n      switch (selectedSlide.getAttribute(\"data-media-type\")) {\n        case \"model\":\n          this.viewInSpaceElement.setAttribute(\n            \"data-shopify-model3d-id\",\n            selectedSlide.getAttribute(\"data-media-id\")\n          );\n          selectedSlide.firstElementChild.play();\n          break;\n        case \"external_video\":\n        case \"video\":\n          if (this.hasAttribute(\"autoplay-video\")) {\n            selectedSlide.firstElementChild.play();\n          }\n          break;\n      }\n    }\n  };\n  window.customElements.define(\"ap-productmedia\", ApProductMedia);\n\n  function apMoneyFormat(cents, format = \"\") {\n    if (typeof cents === \"string\") {\n      cents = cents.replace(\".\", \"\");\n    }\n    const placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/,\n      formatString = format || window.themeVariables.settings.moneyFormat;\n\n    function defaultTo(value2, defaultValue) {\n      return value2 == null || value2 !== value2 ? defaultValue : value2;\n    }\n\n    function formatWithDelimiters(number, precision, thousands, decimal) {\n      precision = defaultTo(precision, 2);\n      thousands = defaultTo(thousands, \",\");\n      decimal = defaultTo(decimal, \".\");\n      if (isNaN(number) || number == null) {\n        return 0;\n      }\n      number = (number / 100).toFixed(precision);\n      let parts = number.split(\".\"),\n        dollarsAmount = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1\" + thousands),\n        centsAmount = parts[1] ? decimal + parts[1] : \"\";\n      return dollarsAmount + centsAmount;\n    }\n    let value = \"\";\n    switch (formatString.match(placeholderRegex)[1]) {\n      case \"amount\":\n        value = formatWithDelimiters(cents, 2);\n        break;\n      case \"amount_no_decimals\":\n        value = formatWithDelimiters(cents, 0);\n        break;\n      case \"amount_with_space_separator\":\n        value = formatWithDelimiters(cents, 2, \" \", \".\");\n        break;\n      case \"amount_with_comma_separator\":\n        value = formatWithDelimiters(cents, 2, \".\", \",\");\n        break;\n      case \"amount_with_apostrophe_separator\":\n        value = formatWithDelimiters(cents, 2, \"'\", \".\");\n        break;\n      case \"amount_no_decimals_with_comma_separator\":\n        value = formatWithDelimiters(cents, 0, \",\", \".\");\n        break;\n      case \"amount_no_decimals_with_space_separator\":\n        value = formatWithDelimiters(cents, 0, \" \");\n        break;\n      case \"amount_no_decimals_with_apostrophe_separator\":\n        value = formatWithDelimiters(cents, 0, \"'\");\n        break;\n    }\n    if (formatString.indexOf(\"with_comma_separator\") !== -1) {\n      return formatString.replace(placeholderRegex, value);\n    } else {\n      return formatString.replace(placeholderRegex, value);\n    }\n  }\n\n  var ApProductMeta = class extends HTMLElement {\n    connectedCallback() {\n      var _a;\n      (_a = document.getElementById(this.getAttribute(\"form-id\"))) == null\n        ? void 0\n        : _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n    }\n    get priceClass() {\n      return this.getAttribute(\"ap-priceclass\") || \"\";\n    }\n    get unitPriceClass() {\n      return this.getAttribute(\"ap-unitpriceclass\") || \"\";\n    }\n    _evtOnChangedVariant(event) {\n      this._evtLabelsUpdate(event.detail.variant);\n      this._evtPricesUpdate(event.detail.variant);\n      this._evtSkuUpdate(event.detail.variant);\n    }\n    _evtLabelsUpdate(variant) {\n      let productListLabel = this.querySelector(\"[data-product-label-list]\");\n      if (!productListLabel) {\n        return;\n      }\n      if (!variant) {\n        productListLabel.innerHTML = \"\";\n      } else {\n        productListLabel.innerHTML = \"\";\n        if (!variant[\"available\"]) {\n          productListLabel.innerHTML = `<span class=\"label label--subdued\">${window.themeVariables.strings.collectionSoldOut}</span>`;\n        } else if (variant[\"compare_at_price\"] > variant[\"price\"]) {\n          let priceDiscount = \"\";\n          if (window.themeVariables.settings.discountMode === \"percentage\") {\n            priceDiscount = `${Math.round(\n              ((variant[\"compare_at_price\"] - variant[\"price\"]) * 100) / variant[\"compare_at_price\"]\n            )}%`;\n          } else {\n            priceDiscount = apMoneyFormat(variant[\"compare_at_price\"] - variant[\"price\"]);\n          }\n          productListLabel.innerHTML = `<span class=\"label label--highlight\">${window.themeVariables.strings.collectionDiscount.replace(\n            \"@savings@\",\n            priceDiscount\n          )}</span>`;\n        }\n      }\n    }\n    _evtPricesUpdate(variant) {\n      let listProductPrices = this.querySelector(\"[data-product-price-list]\");\n      let currencyFormat = window.themeVariables.settings.moneyFormat;\n      if (window.themeVariables.settings.currencyCodeEnabled) {\n        currencyFormat = window.themeVariables.settings.moneyWithCurrencyFormat;\n      }\n      if (!listProductPrices) {\n        return;\n      }\n      if (!variant) {\n        listProductPrices.style.display = \"none\";\n      } else {\n        listProductPrices.innerHTML = \"\";\n        if (variant[\"compare_at_price\"] > variant[\"price\"]) {\n          listProductPrices.innerHTML += `<span class=\"price price--highlight ${\n            this.priceClass\n          }\"><span class=\"visually-hidden\">${\n            window.themeVariables.strings.productSalePrice\n          }</span>${apMoneyFormat(variant[\"price\"], currencyFormat)}</span>`;\n          listProductPrices.innerHTML += `<span class=\"price price--compare\"><span class=\"visually-hidden\">${\n            window.themeVariables.strings.productRegularPrice\n          }</span>${apMoneyFormat(variant[\"compare_at_price\"], currencyFormat)}</span>`;\n        } else {\n          listProductPrices.innerHTML += `<span class=\"price ${\n            this.priceClass\n          }\"><span class=\"visually-hidden\">${\n            window.themeVariables.strings.productSalePrice\n          }</span>${apMoneyFormat(variant[\"price\"], currencyFormat)}</span>`;\n        }\n        if (variant[\"unit_price_measurement\"]) {\n          let referenceValue = \"\";\n          if (variant[\"unit_price_measurement\"][\"reference_value\"] !== 1) {\n            referenceValue = `<span class=\"unit-price-measurement__reference-value\">${variant[\"unit_price_measurement\"][\"reference_value\"]}</span>`;\n          }\n          listProductPrices.innerHTML += `\n          <div class=\"price text--subdued ${this.unitPriceClass}\">\n            <div class=\"unit-price-measurement\">\n              <span class=\"unit-price-measurement__price\">${apMoneyFormat(\n                variant[\"unit_price\"]\n              )}</span>\n              <span class=\"unit-price-measurement__separator\">/</span>\n              ${referenceValue}\n              <span class=\"unit-price-measurement__reference-unit\">${\n                variant[\"unit_price_measurement\"][\"reference_unit\"]\n              }</span>\n            </div>\n          </div>\n        `;\n        }\n        listProductPrices.style.display = \"\";\n      }\n    }\n    _evtSkuUpdate(variant) {\n      let sku = this.querySelector(\"[data-product-sku-container]\");\n      if (!sku) {\n        return;\n      }\n      let skuNumber = sku.querySelector(\"[data-product-sku-number]\");\n      if (!variant || !variant[\"sku\"]) {\n        sku.style.display = \"none\";\n      } else {\n        skuNumber.innerHTML = variant[\"sku\"];\n        sku.style.display = \"\";\n      }\n    }\n  };\n  window.customElements.define(\"ap-productmeta\", ApProductMeta);\n\n  var ApQuickBuy = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n    }\n    async _load() {\n      await super._load();\n      this.elementImage = this.querySelector(\".ap-quickbuyproduct__image\");\n      if (window.Shopify && window.Shopify.PaymentButton) {\n        window.Shopify.PaymentButton.init();\n      }\n    }\n    _evtOnChangedVariant(event) {\n      const variant = event.detail.variant;\n      if (variant) {\n        Array.from(this.querySelectorAll(`[href*=\"/products\"]`)).forEach((link) => {\n          const url = new URL(link.href);\n          url.searchParams.set(\"variant\", variant[\"id\"]);\n          link.setAttribute(\"href\", url.toString());\n        });\n      }\n      if (!this.elementImage || !variant || !variant[\"featured_media\"]) {\n        return;\n      }\n      const featuredMedia = variant[\"featured_media\"];\n      if (featuredMedia[\"alt\"]) {\n        this.elementImage.setAttribute(\"alt\", featuredMedia[\"alt\"]);\n      }\n      this.elementImage.setAttribute(\"width\", featuredMedia[\"preview_image\"][\"width\"]);\n      this.elementImage.setAttribute(\"height\", featuredMedia[\"preview_image\"][\"height\"]);\n      this.elementImage.setAttribute(\"src\", apGetSizedOfMediaUrl(featuredMedia, \"342x\"));\n      this.elementImage.setAttribute(\"srcset\", apGetMediaSrcset(featuredMedia, [114, 228, 342]));\n    }\n  };\n  window.customElements.define(\"ap-quickbuy\", ApQuickBuy);\n\n  var ApPopoverQuickBuy = class extends ApolloPopContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n      this.apollo.on(\"variant:added\", () => (this.open = false));\n    }\n    async _load() {\n      await super._load();\n      this.elementImage = this.querySelector(\".ap-quickbuyproduct__image\");\n    }\n    _evtOnChangedVariant(event) {\n      const variant = event.detail.variant;\n      if (variant) {\n        Array.from(this.querySelectorAll(`[href*=\"/products\"]`)).forEach((link) => {\n          const url = new URL(link.href);\n          url.searchParams.set(\"variant\", variant[\"id\"]);\n          link.setAttribute(\"href\", url.toString());\n        });\n      }\n      if (!this.elementImage || !variant || !variant[\"featured_media\"]) {\n        return;\n      }\n      const featuredMedia = variant[\"featured_media\"];\n      if (featuredMedia[\"alt\"]) {\n        this.elementImage.setAttribute(\"alt\", featuredMedia[\"alt\"]);\n      }\n      let w = featuredMedia[\"preview_image\"][\"width\"];\n      this.elementImage.setAttribute(\"width\", w);\n      let h = featuredMedia[\"preview_image\"][\"height\"];\n      let src = apGetSizedOfMediaUrl(featuredMedia, \"195x\");\n      let srcset = apGetMediaSrcset(featuredMedia, [65, 130, 195]);\n      this.elementImage.setAttribute(\"height\", h);\n      this.elementImage.setAttribute(\"src\", src);\n      this.elementImage.setAttribute(\"srcset\", srcset);\n    }\n  };\n  window.customElements.define(\"ap-popoverquickbuy\", ApPopoverQuickBuy);\n\n  var ApPickupStore = class extends HTMLElement {\n    connectedCallback() {\n      var _a;\n      (_a = document.getElementById(this.getAttribute(\"form-id\"))) == null\n        ? void 0\n        : _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n    }\n    _evtOnChangedVariant(event) {\n      if (!event.detail.variant) {\n        this.innerHTML = \"\";\n      } else {\n        this._evtRenderForVariant(event.detail.variant[\"id\"]);\n      }\n    }\n    async _evtRenderForVariant(id) {\n      const response = await fetch(\n          `${window.themeVariables.routes.rootUrlWithoutSlash}/variants/${id}?section_id=store-availability`\n        ),\n        div = document.createElement(\"div\");\n      div.innerHTML = await response.text();\n      this.innerHTML = div.firstElementChild.innerHTML.trim();\n    }\n  };\n  window.customElements.define(\"ap-pickupstore\", ApPickupStore);\n\n  var ApProductVariants = class extends CustomHTMLElement {\n    async connectedCallback() {\n      this.masterSelector = document.getElementById(this.getAttribute(\"form-id\")).id;\n      this.optionSelectors = Array.from(this.querySelectorAll(\"[data-selector-type]\"));\n      if (!this.masterSelector) {\n        console.warn(\n          `The variant selector for product with handle ${this.productHandle} is not linked to any product form.`\n        );\n        return;\n      }\n      this.product = await ApLoaderProduct.load(this.productHandle);\n      this.apollo.on(\"change\", '[name^=\"option\"]', this._evtOnChangedOption.bind(this));\n      this.masterSelector.addEventListener(\"change\", this._evtOnMasterChangedSelector.bind(this));\n      this._updateDisableSelectors();\n      this.selectVariant(this.selectedVariant[\"id\"]);\n    }\n    get selectedVariant() {\n      return this._getVariantById(parseInt(this.masterSelector.value));\n    }\n    get productHandle() {\n      return this.getAttribute(\"handle\");\n    }\n    get hideSoldOutVariants() {\n      return this.hasAttribute(\"hide-sold-out-variants\");\n    }\n    get updateUrl() {\n      return this.hasAttribute(\"update-url\");\n    }\n    selectVariant(id) {\n      var _a;\n      if (!this._isVariantSelectable(this._getVariantById(id))) {\n        id = this._getFirstMatchingAvailableVariant()[\"id\"];\n      }\n      if (((_a = this.selectedVariant) == null ? void 0 : _a.id) === id) {\n        return;\n      }\n      this.masterSelector.value = id;\n      this.masterSelector.dispatchEvent(\n        new Event(\"change\", {\n          bubbles: true,\n        })\n      );\n      if (this.updateUrl && history.replaceState) {\n        const newUrl = new URL(window.location.href);\n        if (id) {\n          newUrl.searchParams.set(\"variant\", id);\n        } else {\n          newUrl.searchParams.delete(\"variant\");\n        }\n        window.history.replaceState(\n          {\n            path: newUrl.toString(),\n          },\n          \"\",\n          newUrl.toString()\n        );\n      }\n      this._updateDisableSelectors();\n      triggerEvent(this.masterSelector.form, \"variant:changed\", {\n        variant: this.selectedVariant,\n      });\n    }\n    _evtOnChangedOption() {\n      var _a;\n      this.selectVariant((_a = this._getVariantFromOptions()) == null ? void 0 : _a.id);\n    }\n    _evtOnMasterChangedSelector() {\n      var _a;\n      const options = ((_a = this.selectedVariant) == null ? void 0 : _a.options) || [];\n      options.forEach((value, index) => {\n        let input = this.querySelector(\n            `input[name=\"option${index + 1}\"][value=\"${CSS.escape(value)}\"], select[name=\"option${\n              index + 1\n            }\"]`\n          ),\n          triggerChangeEvent = false;\n        if (input.tagName === \"SELECT\") {\n          triggerChangeEvent = input.value !== value;\n          input.value = value;\n        } else if (input.tagName === \"INPUT\") {\n          triggerChangeEvent = !input.checked && input.value === value;\n          input.checked = input.value === value;\n        }\n        if (triggerChangeEvent) {\n          input.dispatchEvent(\n            new Event(\"change\", {\n              bubbles: true,\n            })\n          );\n        }\n      });\n    }\n    _getVariantById(id) {\n      return this.product[\"variants\"].find((variant) => variant[\"id\"] === id);\n    }\n    _getVariantFromOptions() {\n      const options = this._getSelectedOptionValues();\n      return this.product[\"variants\"].find((variant) => {\n        return variant[\"options\"].every((value, index) => value === options[index]);\n      });\n    }\n    _isVariantSelectable(variant) {\n      if (!variant) {\n        return false;\n      } else {\n        return variant[\"available\"] || (!this.hideSoldOutVariants && !variant[\"available\"]);\n      }\n    }\n    _getFirstMatchingAvailableVariant() {\n      let options = this._getSelectedOptionValues(),\n        matchedVariant = null,\n        slicedCount = 0;\n      do {\n        options.pop();\n        slicedCount += 1;\n        matchedVariant = this.product[\"variants\"].find((variant) => {\n          return (\n            variant[\"available\"] &&\n            variant[\"options\"]\n              .slice(0, variant[\"options\"].length - slicedCount)\n              .every((value, index) => value === options[index])\n          );\n        });\n      } while (!matchedVariant && options.length > 0);\n      return matchedVariant;\n    }\n    _getSelectedOptionValues() {\n      const options = [];\n      Array.from(\n        this.querySelectorAll('input[name^=\"option\"]:checked, select[name^=\"option\"]')\n      ).forEach((option) => options.push(option.value));\n      return options;\n    }\n    _updateDisableSelectors() {\n      const selectedVariant = this.selectedVariant;\n      if (!selectedVariant) {\n        return;\n      }\n      const applyClassToSelector = (selector, valueIndex, available, hasAtLeastOneCombination) => {\n        let selectorType = selector.getAttribute(\"data-selector-type\"),\n          cssSelector = \"\";\n        switch (selectorType) {\n          case \"color\":\n            cssSelector = `.color-swatch:nth-child(${valueIndex + 1})`;\n            break;\n          case \"variant-image\":\n            cssSelector = `.variant-swatch:nth-child(${valueIndex + 1})`;\n            break;\n          case \"block\":\n            cssSelector = `.block-swatch:nth-child(${valueIndex + 1})`;\n            break;\n          case \"dropdown\":\n            cssSelector = `.ap-combobox__option-item:nth-child(${valueIndex + 1})`;\n            break;\n        }\n        selector.querySelector(cssSelector).toggleAttribute(\"hidden\", !hasAtLeastOneCombination);\n        if (this.hideSoldOutVariants) {\n          selector.querySelector(cssSelector).toggleAttribute(\"hidden\", !available);\n        } else {\n          selector.querySelector(cssSelector).classList.toggle(\"is-disabled\", !available);\n        }\n      };\n      if (this.optionSelectors && this.optionSelectors[0]) {\n        this.product[\"options\"][0][\"values\"].forEach((value, valueIndex) => {\n          const hasAtLeastOneCombination = this.product[\"variants\"].some(\n              (variant) => variant[\"option1\"] === value && variant\n            ),\n            hasAvailableVariant = this.product[\"variants\"].some(\n              (variant) => variant[\"option1\"] === value && variant[\"available\"]\n            );\n          applyClassToSelector(\n            this.optionSelectors[0],\n            valueIndex,\n            hasAvailableVariant,\n            hasAtLeastOneCombination\n          );\n          if (this.optionSelectors[1]) {\n            this.product[\"options\"][1][\"values\"].forEach((value2, valueIndex2) => {\n              const hasAtLeastOneCombination2 = this.product[\"variants\"].some(\n                  (variant) =>\n                    variant[\"option2\"] === value2 &&\n                    variant[\"option1\"] === selectedVariant[\"option1\"] &&\n                    variant\n                ),\n                hasAvailableVariant2 = this.product[\"variants\"].some(\n                  (variant) =>\n                    variant[\"option2\"] === value2 &&\n                    variant[\"option1\"] === selectedVariant[\"option1\"] &&\n                    variant[\"available\"]\n                );\n              applyClassToSelector(\n                this.optionSelectors[1],\n                valueIndex2,\n                hasAvailableVariant2,\n                hasAtLeastOneCombination2\n              );\n              if (this.optionSelectors[2]) {\n                this.product[\"options\"][2][\"values\"].forEach((value3, valueIndex3) => {\n                  const hasAtLeastOneCombination3 = this.product[\"variants\"].some(\n                      (variant) =>\n                        variant[\"option3\"] === value3 &&\n                        variant[\"option1\"] === selectedVariant[\"option1\"] &&\n                        variant[\"option2\"] === selectedVariant[\"option2\"] &&\n                        variant\n                    ),\n                    hasAvailableVariant3 = this.product[\"variants\"].some(\n                      (variant) =>\n                        variant[\"option3\"] === value3 &&\n                        variant[\"option1\"] === selectedVariant[\"option1\"] &&\n                        variant[\"option2\"] === selectedVariant[\"option2\"] &&\n                        variant[\"available\"]\n                    );\n                  applyClassToSelector(\n                    this.optionSelectors[2],\n                    valueIndex3,\n                    hasAvailableVariant3,\n                    hasAtLeastOneCombination3\n                  );\n                });\n              }\n            });\n          }\n        });\n      }\n    }\n  };\n  window.customElements.define(\"ap-productvariants\", ApProductVariants);\n\n  var ProductItem = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.primaryImageList = Array.from(this.querySelectorAll(\".product-item__primary-image\"));\n      this.apollo.on(\n        \"change\",\n        \".product-item-meta__swatch-list .color-swatch__radio\",\n        this._evtOnChangedColorSwatch.bind(this)\n      );\n      this.apollo.on(\n        \"mouseenter\",\n        \".product-item-meta__swatch-list .color-swatch__item\",\n        this._evtOnHoveredColorSwatch.bind(this),\n        true\n      );\n      if (this.querySelector(\".variants-item-size\")) {\n        var elements = this.getElementsByClassName(\"variant-size\");\n        for (var i = 0; i < elements.length; i++) {\n          elements[i].addEventListener(\"click\", function (e) {\n            var current = this;\n            for (var i = 0; i < elements.length; i++) {\n              if (current != elements[i]) {\n                elements[i].classList.remove(\"active\");\n              } else if (current.classList.contains(\"active\") === true) {\n                current.classList.remove(\"active\");\n              } else {\n                current.classList.add(\"active\");\n              }\n            }\n            e.preventDefault();\n          });\n        }\n      }\n      if (this.querySelector(\".variants-item-color\")) {\n        const itemVariantColor = Array.from(document.getElementsByClassName(\"variant-color\"));\n        itemVariantColor.forEach(function (item, idx) {\n          item.onclick = function (e) {\n            if (document.querySelector(\".variant-color.active\")) {\n              console.log(\n                document.querySelector(\".variant-color.active\").classList.remove(\"active\")\n              );\n              document.querySelector(\".variant-color.active\").classList.remove(\"active\");\n            }\n            item.classList.add(\"active\");\n            e.preventDefault();\n          };\n        });\n      }\n    }\n    async _evtOnChangedColorSwatch(event, target) {\n      Array.from(this.querySelectorAll(`[href*=\"/products\"]`)).forEach((link) => {\n        let url;\n        if (link.tagName === \"A\") {\n          url = new URL(link.href);\n        } else {\n          url = new URL(link.getAttribute(\"href\"), `https://${window.themeVariables.routes.host}`);\n        }\n        url.searchParams.set(\"variant\", target.getAttribute(\"data-variant-id\"));\n        link.setAttribute(\"href\", url.toString());\n      });\n      if (target.hasAttribute(\"data-variant-featured-media\")) {\n        const newImage = this.primaryImageList.find(\n          (image) =>\n            image.getAttribute(\"data-media-id\") ===\n            target.getAttribute(\"data-variant-featured-media\")\n        );\n        newImage.setAttribute(\"loading\", \"eager\");\n        const onImageLoaded = newImage.complete\n          ? Promise.resolve()\n          : new Promise((resolve) => (newImage.onload = resolve));\n        await onImageLoaded;\n        newImage.removeAttribute(\"hidden\");\n        let properties = {};\n        if (\n          Array.from(newImage.parentElement.classList).some((item) =>\n            [\"aspect-ratio--short\", \"aspect-ratio--tall\", \"aspect-ratio--square\"].includes(item)\n          )\n        ) {\n          properties = [\n            {\n              clipPath: \"polygon(0 0, 0 0, 0 100%, 0% 100%)\",\n              transform: \"translate(calc(-50% - 20px), -50%)\",\n              zIndex: 1,\n              offset: 0,\n            },\n            {\n              clipPath: \"polygon(0 0, 20% 0, 5% 100%, 0 100%)\",\n              transform: \"translate(calc(-50% - 20px), -50%)\",\n              zIndex: 1,\n              offset: 0.3,\n            },\n            {\n              clipPath: \"polygon(0 0, 100% 0, 100% 100%, 0 100%)\",\n              transform: \"translate(-50%, -50%)\",\n              zIndex: 1,\n              offset: 1,\n            },\n          ];\n        } else {\n          properties = [\n            {\n              clipPath: \"polygon(0 0, 0 0, 0 100%, 0% 100%)\",\n              transform: \"translateX(-20px)\",\n              zIndex: 1,\n              offset: 0,\n            },\n            {\n              clipPath: \"polygon(0 0, 20% 0, 5% 100%, 0 100%)\",\n              transform: \"translateX(-20px)\",\n              zIndex: 1,\n              offset: 0.3,\n            },\n            {\n              clipPath: \"polygon(0 0, 100% 0, 100% 100%, 0 100%)\",\n              transform: \"translateX(0px)\",\n              zIndex: 1,\n              offset: 1,\n            },\n          ];\n        }\n        await newImage.animate(properties, {\n          duration: 500,\n          easing: \"ease-in-out\",\n        }).finished;\n        this.primaryImageList\n          .filter(\n            (image) => image.classList.contains(\"product-item__primary-image\") && image !== newImage\n          )\n          .forEach((image) => image.setAttribute(\"hidden\", \"\"));\n      }\n    }\n    _evtOnHoveredColorSwatch(event, target) {\n      const input = target.previousElementSibling;\n      if (input.hasAttribute(\"data-variant-featured-media\")) {\n        const newImage = this.primaryImageList.find(\n          (image) =>\n            image.getAttribute(\"data-media-id\") ===\n            input.getAttribute(\"data-variant-featured-media\")\n        );\n        newImage.setAttribute(\"loading\", \"eager\");\n      }\n    }\n  };\n  window.customElements.define(\"product-item\", ProductItem);\n\n  var ApProductFacet = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.apollo.on(\"pagination:page-changed\", this._rerenderApProductFacet.bind(this));\n      this.apollo.on(\"facet:criteria-changed\", this._rerenderApProductFacet.bind(this));\n      this.apollo.on(\"facet:abort-loading\", this._abortApProductFacet.bind(this));\n    }\n    async _rerenderApProductFacet(event) {\n      history.replaceState({}, \"\", event.detail.url);\n      this._abortApProductFacet();\n      this.loadingBarEnable();\n      const url = new URL(window.location);\n      url.searchParams.set(\"section_id\", this.getAttribute(\"section-id\"));\n      try {\n        this.abortController = new AbortController();\n        const response = await fetch(url.toString(), {\n          signal: this.abortController.signal,\n        });\n        const responseAsText = await response.text();\n        const fakeDiv = document.createElement(\"div\");\n        fakeDiv.innerHTML = responseAsText;\n        this.querySelector(\"#facet-main\").innerHTML =\n          fakeDiv.querySelector(\"#facet-main\").innerHTML;\n        const activeFilterList = Array.from(\n            fakeDiv.querySelectorAll(\".ap-productfacet__active-list\")\n          ),\n          toolbarItem = document.querySelector(\".mobile-toolbar__item--filters\");\n        if (toolbarItem) {\n          toolbarItem.classList.toggle(\"has-filters\", activeFilterList.length > 0);\n        }\n        const filtersTempDiv = fakeDiv.querySelector(\"#ap-facetfilters\");\n        if (filtersTempDiv) {\n          const previousScrollTop = this.querySelector(\n            \"#ap-facetfilters .drawer__content\"\n          ).scrollTop;\n          Array.from(this.querySelectorAll(\"#ap-facetfilters-form .collapsible-toggle\")).forEach(\n            (filterToggle) => {\n              const filtersTempDivToggle = filtersTempDiv.querySelector(\n                  `[ap-controlsaria=\"${filterToggle.getAttribute(\"ap-controlsaria\")}\"]`\n                ),\n                expandedStatus = filterToggle.getAttribute(\"ap-expanded-aria\") === \"true\";\n              if (expandedStatus) {\n                let ex_s = \"true\";\n              } else {\n                let ex_s = \"false\";\n              }\n              filtersTempDivToggle.setAttribute(\"ap-expanded-aria\", ex_s);\n              filtersTempDivToggle.nextElementSibling.toggleAttribute(\"open\", expandedStatus);\n              if (expandedStatus) {\n                let ex_vi = \"visible\";\n              } else {\n                let ex_vi = \"\";\n              }\n              filtersTempDivToggle.nextElementSibling.style.overflow = ex_vi;\n            }\n          );\n          this.querySelector(\"#ap-facetfilters\").innerHTML = filtersTempDiv.innerHTML;\n          this.querySelector(\"#ap-facetfilters .drawer__content\").scrollTop = previousScrollTop;\n        }\n        const scrollTo =\n          this.querySelector(\".ap-productfacet__meta-bar\") ||\n          this.querySelector(\".ap-productfacet__ap-productlist\") ||\n          this.querySelector(\".ap-productfacet__main\");\n        requestAnimationFrame(() => {\n          scrollTo.scrollIntoView({\n            block: \"start\",\n            behavior: \"smooth\",\n          });\n        });\n        this.loadingBarDisable();\n      } catch (e) {\n        if (e.name === \"AbortError\") {\n          return;\n        }\n      }\n    }\n    _abortApProductFacet() {\n      if (this.abortController) {\n        this.abortController.abort();\n      }\n    }\n  };\n  window.customElements.define(\"ap-productfacet\", ApProductFacet);\n\n  var ApFacetFilters = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"change\", '[name^=\"filter.\"]', this._evtOnChangedFilter.bind(this));\n      this.rootApollo.on(\n        \"click\",\n        '[data-action=\"clear-filters\"]',\n        this._evtOnClearedFilters.bind(this)\n      );\n      if (this.alwaysVisible) {\n        this.matchMedia = window.matchMedia(window.themeVariables.breakpoints.pocket);\n        this.matchMedia.addListener(this._evtAdjustDrawer.bind(this));\n        this._evtAdjustDrawer(this.matchMedia);\n      }\n    }\n    get alwaysVisible() {\n      return this.hasAttribute(\"always-visible\");\n    }\n    _evtOnClearedFilters(event, target) {\n      event.preventDefault();\n      triggerEvent(this, \"facet:criteria-changed\", {\n        url: target.href,\n      });\n      this.checked = false;\n      window.location.reload();\n    }\n    _evtOnChangedFilter() {\n      const formData = new FormData(this.querySelector(\"#ap-facetfilters-form\"));\n      const searchParamsAsString = new URLSearchParams(formData).toString();\n\n      //thanhvn\n      triggerEvent(this, \"facet:criteria-changed\", {\n        url: `${window.location.pathname}?${searchParamsAsString}`,\n      });\n      window.location.reload();\n    }\n    _evtAdjustDrawer(match) {\n      this.classList.toggle(\"drawer\", match.matches);\n      this.classList.toggle(\"drawer--from-left\", match.matches);\n    }\n  };\n  window.customElements.define(\"ap-facetfilters\", ApFacetFilters);\n\n  var ApSortByPopover = class extends ApolloPopContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.apollo.on(\"change\", '[name=\"sort_by\"]', this._evtOnChangedSort.bind(this));\n    }\n    _evtOnChangedSort(event, target) {\n      const url = new URL(location.href);\n      url.searchParams.set(\"sort_by\", target.value);\n      url.searchParams.delete(\"page\");\n      this.open = false;\n      this.dispatchEvent(\n        new CustomEvent(\"facet:criteria-changed\", {\n          bubbles: true,\n          detail: {\n            url: url.toString(),\n          },\n        })\n      );\n    }\n  };\n  window.customElements.define(\"ap-sortbypopover\", ApSortByPopover);\n\n  var ApCartCount = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.rootApollo.on(\n        \"cart:updated\",\n        (event) => (this.innerText = event.detail.cart[\"item_count\"])\n      );\n    }\n\n    async _detailCart(event) {\n      let currencyFormat = window.themeVariables.settings.moneyFormat;\n      if (window.themeVariables.settings.currencyCodeEnabled) {\n        currencyFormat = window.themeVariables.settings.moneyWithCurrencyFormat;\n      }\n      let total = apMoneyFormat(event.detail.cart[\"total_price\"], currencyFormat);\n    }\n  };\n  window.customElements.define(\"ap-cartcount\", ApCartCount);\n\n  var ApCartTotalPrice = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.rootApollo.on(\"cart:updated\", this._detailCart.bind(this));\n    }\n    async _detailCart(event) {\n      let currencyFormat = window.themeVariables.settings.moneyFormat;\n      if (window.themeVariables.settings.currencyCodeEnabled) {\n        currencyFormat = window.themeVariables.settings.moneyWithCurrencyFormat;\n      }\n      let total = apMoneyFormat(event.detail.cart[\"total_price\"], currencyFormat);\n      this.innerText = total;\n    }\n  };\n  window.customElements.define(\"ap-carttotalprice\", ApCartTotalPrice);\n\n  var ApCartDrawer = class extends ApDrawerContent {\n    connectedCallback() {\n      super.connectedCallback();\n      this.nextReplacementDelay = 0;\n      this.rootApollo.on(\"cart:refresh\", this._rerenderCart.bind(this));\n      this.addEventListener(\"variant:added\", () => (this.nextReplacementDelay = 600));\n    }\n    async _rerenderCart(event) {\n      var _a;\n      let cartContent = null,\n        html = \"\";\n      if (event.detail && event.detail[\"cart\"]) {\n        cartContent = event.detail[\"cart\"];\n        html = event.detail[\"cart\"][\"sections\"][\"mini-cart\"];\n      } else {\n        const response = await fetch(\n          `${window.themeVariables.routes.cartUrl}?section_id=${this.getAttribute(\"section\")}`\n        );\n        html = await response.text();\n      }\n      const fakeDiv = document.createElement(\"div\");\n      fakeDiv.innerHTML = html;\n      setTimeout(async () => {\n        var _a2;\n        const previousPosition = this.querySelector(\".drawer__content\").scrollTop;\n        if (cartContent && cartContent[\"item_count\"] === 0) {\n          const animation = new ApAnimationCustom(\n            new ApEffectParallel(\n              Array.from(this.querySelectorAll(\".drawer__content, .drawer__footer\")).map((item) => {\n                return new ApEffectOfCustomKeyframe(\n                  item,\n                  {\n                    opacity: [1, 0],\n                  },\n                  {\n                    duration: 250,\n                    easing: \"ease-in\",\n                  }\n                );\n              })\n            )\n          );\n          animation.play();\n          await animation.finished;\n        }\n        const mgHadItems = this.querySelectorAll(\".line-item\").length > 0;\n        this.innerHTML = fakeDiv.querySelector(\"ap-cartdrawer\").innerHTML;\n        if (mgHadItems && !this.querySelector(\".line-item\")) {\n          // The last item was removed: close the sliding cart instead of showing the empty state.\n          this.open = false;\n          return;\n        }\n        if (cartContent && cartContent[\"item_count\"] === 0) {\n          this.querySelector(\".drawer__content\").animate(\n            {\n              opacity: [0, 1],\n              transform: [\"translateY(40px)\", \"translateY(0)\"],\n            },\n            {\n              duration: 450,\n              easing: \"cubic-bezier(0.33, 1, 0.68, 1)\",\n            }\n          );\n        } else {\n          this.querySelector(\".drawer__content\").scrollTop = previousPosition;\n        }\n        if ((_a2 = event == null ? void 0 : event.detail) == null ? void 0 : _a2.openMiniCart) {\n          this.clientWidth;\n          this.open = true;\n        }\n      }, ((_a = event == null ? void 0 : event.detail) == null ? void 0 : _a.replacementDelay) || this.nextReplacementDelay);\n      this.nextReplacementDelay = 0;\n    }\n    async attributeChangedCallback(name, oldval, newval) {\n      super.attributeChangedCallback(name, oldval, newval);\n      switch (name) {\n        case \"open\":\n          if (this.open) {\n            this.querySelector(\".drawer__content\").scrollTop = 0;\n            if (!MediaFeatures.prefersReducedMotion()) {\n              const lineItems = Array.from(this.querySelectorAll(\".line-item\")),\n                recommendationsInner = this.querySelector(\".mini-cart__recommendations-inner\"),\n                bottomBar = this.querySelector(\".drawer__footer\"),\n                effects = [];\n              if (\n                recommendationsInner &&\n                window.matchMedia(window.themeVariables.breakpoints.pocket).matches\n              ) {\n                lineItems.push(recommendationsInner);\n              }\n              lineItems.forEach((item) => (item.style.opacity = 0));\n              recommendationsInner ? (recommendationsInner.style.opacity = 0) : null;\n              bottomBar ? (bottomBar.style.opacity = 0) : null;\n              effects.push(\n                new ApEffectParallel(\n                  lineItems.map((item, index) => {\n                    return new ApEffectOfCustomKeyframe(\n                      item,\n                      {\n                        opacity: [0, 1],\n                        transform: [\"translateX(40px)\", \"translateX(0)\"],\n                      },\n                      {\n                        duration: 400,\n                        delay: 400 + 120 * index - Math.min(2 * index * index, 120 * index),\n                        easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n                      }\n                    );\n                  })\n                )\n              );\n              if (bottomBar) {\n                effects.push(\n                  new ApEffectOfCustomKeyframe(\n                    bottomBar,\n                    {\n                      opacity: [0, 1],\n                      transform: [\"translateY(100%)\", \"translateY(0)\"],\n                    },\n                    {\n                      duration: 300,\n                      delay: 400,\n                      easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n                    }\n                  )\n                );\n              }\n              if (\n                recommendationsInner &&\n                !window.matchMedia(window.themeVariables.breakpoints.pocket).matches\n              ) {\n                effects.push(\n                  new ApEffectOfCustomKeyframe(\n                    recommendationsInner,\n                    {\n                      opacity: [0, 1],\n                      transform: [\"translateX(100%)\", \"translateX(0)\"],\n                    },\n                    {\n                      duration: 250,\n                      delay: 400 + Math.max(120 * lineItems.length - 25 * lineItems.length, 25),\n                      easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n                    }\n                  )\n                );\n              }\n              let animation = new ApAnimationCustom(new ApEffectParallel(effects));\n              animation.play();\n            }\n          }\n      }\n    }\n  };\n  window.customElements.define(\"ap-cartdrawer\", ApCartDrawer);\n\n  // // js/custom-element/section/cart/ap-cartdrawer-recommendations.js\n  // var _ApCartDrawerRecommendations = class extends HTMLElement {\n  //   async connectedCallback() {\n  //     if (!_ApCartDrawerRecommendations.recommendationsCache[this.productId]) {\n  //       _ApCartDrawerRecommendations.recommendationsCache[this.productId] = fetch(`${window.themeVariables.routes.productUrlRecommendations}?product_id=${this.productId}&limit=10&section_id=${this.sectionId}`);\n  //     }\n  //     const response = await _ApCartDrawerRecommendations.recommendationsCache[this.productId];\n  //     const div = document.createElement(\"div\");\n  //     div.innerHTML = await response.clone().text();\n  //     const productRecommendationsElement = div.querySelector(\"ap-cartdrawer-recommendations\");\n  //     if (productRecommendationsElement && productRecommendationsElement.hasChildNodes()) {\n  //       this.innerHTML = productRecommendationsElement.innerHTML;\n  //     } else {\n  //       this.hidden = true;\n  //     }\n  //   }\n  //   get productId() {\n  //     return this.getAttribute(\"product-id\");\n  //   }\n  //   get sectionId() {\n  //     return this.getAttribute(\"section-id\");\n  //   }\n  // };\n  // var ApCartDrawerRecommendations = _ApCartDrawerRecommendations;\n  // __publicField(ApCartDrawerRecommendations, \"recommendationsCache\", {});\n  // window.customElements.define(\"ap-cartdrawer-recommendations\", ApCartDrawerRecommendations);\n\n  var ApCartNote = class extends HTMLTextAreaElement {\n    connectedCallback() {\n      this.addEventListener(\"change\", this._evtOnChangedNote.bind(this));\n    }\n    get ownedToggle() {\n      return this.hasAttribute(\"ap-ariaowns\")\n        ? document.getElementById(this.getAttribute(\"ap-ariaowns\"))\n        : null;\n    }\n    async _evtOnChangedNote() {\n      if (this.ownedToggle) {\n        this.ownedToggle.innerHTML =\n          this.value === \"\"\n            ? window.themeVariables.strings.cartAddOrderNote\n            : window.themeVariables.strings.cartEditOrderNote;\n      }\n      const response = await fetch(`${window.themeVariables.routes.cartUrl}/update.js`, {\n        body: JSON.stringify({\n          note: this.value,\n        }),\n        credentials: \"same-origin\",\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n      });\n      // const cartContent = await response.json();\n      // document.documentElement.dispatchEvent(\n      //   new CustomEvent(\"cart:updated\", {\n      //     bubbles: true,\n      //     detail: {\n      //       cart: cartContent,\n      //     },\n      //   })\n      // );\n    }\n  };\n  window.customElements.define(\"ap-cartnote\", ApCartNote, {\n    extends: \"textarea\",\n  });\n\n  // var ApFreeShippingBar = class extends HTMLElement {\n  //   connectedCallback() {\n  //     document.documentElement.addEventListener(\"cart:updated\", this._onCartUpdated.bind(this));\n  //   }\n  //   get threshold() {\n  //     return parseFloat(this.getAttribute(\"threshold\"));\n  //   }\n  //   _onCartUpdated(event) {\n  //     this.style.setProperty(\n  //       \"--progress\",\n  //       Math.min(parseFloat(event.detail[\"cart\"][\"total_price\"]) / this.threshold, 1)\n  //     );\n  //   }\n  // };\n  // window.customElements.define(\"ap-freeshippingbar\", ApFreeShippingBar);\n\n  var ApLineItemQuantity = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.apollo.on(\"click\", \"a\", this._onQuantityLinkClicked.bind(this));\n      this.apollo.on(\"change\", \"input\", this._onQuantityChanged.bind(this));\n    }\n    _onQuantityLinkClicked(event, target) {\n      event.preventDefault();\n      this._updateFromLink(target.href);\n    }\n    _onQuantityChanged(event, target) {\n      this._updateFromLink(\n        `${window.themeVariables.routes.cartChangeUrl}?quantity=${\n          target.value\n        }&line=${target.getAttribute(\"data-line\")}`\n      );\n    }\n    async _updateFromLink(link) {\n      if (window.themeVariables.settings.pageType === \"cart\") {\n        window.location.href = link;\n        return;\n      }\n      const changeUrl = new URL(link, `https://${window.themeVariables.routes.host}`),\n        searchParams = changeUrl.searchParams,\n        line = searchParams.get(\"line\"),\n        id = searchParams.get(\"id\"),\n        quantity = parseInt(searchParams.get(\"quantity\"));\n      this.dispatchEvent(\n        new CustomEvent(\"line-item-quantity:change:start\", {\n          bubbles: true,\n          detail: {\n            newLineQuantity: quantity,\n          },\n        })\n      );\n      const response = await fetch(`${window.themeVariables.routes.cartChangeUrl}.js`, {\n        body: JSON.stringify({\n          line,\n          id,\n          quantity,\n          sections: [\"mini-cart\"],\n        }),\n        credentials: \"same-origin\",\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n      });\n      const cartContent = await response.json();\n      this.dispatchEvent(\n        new CustomEvent(\"line-item-quantity:change:end\", {\n          bubbles: true,\n          detail: {\n            cart: cartContent,\n            newLineQuantity: quantity,\n          },\n        })\n      );\n      document.documentElement.dispatchEvent(\n        new CustomEvent(\"cart:updated\", {\n          bubbles: true,\n          detail: {\n            cart: cartContent,\n          },\n        })\n      );\n      document.documentElement.dispatchEvent(\n        new CustomEvent(\"cart:refresh\", {\n          bubbles: true,\n          detail: {\n            cart: cartContent,\n            replacementDelay: quantity === 0 ? 600 : 750,\n          },\n        })\n      );\n    }\n  };\n  window.customElements.define(\"line-item-quantity\", ApLineItemQuantity);\n\n  var LineItem = class extends HTMLElement {\n    connectedCallback() {\n      this.lineItemLoader = this.querySelector(\".line-item__loader\");\n      this.addEventListener(\"line-item-quantity:change:start\", this._onQuantityStart.bind(this));\n      this.addEventListener(\"line-item-quantity:change:end\", this._onQuantityEnd.bind(this));\n    }\n    _onQuantityStart() {\n      if (!this.lineItemLoader) {\n        return;\n      }\n      this.lineItemLoader.hidden = false;\n      this.lineItemLoader.firstElementChild.hidden = false;\n      this.lineItemLoader.lastElementChild.hidden = true;\n    }\n    async _onQuantityEnd(event) {\n      if (event.detail.cart[\"item_count\"] === 0) {\n        return;\n      }\n      if (this.lineItemLoader) {\n        await this.lineItemLoader.firstElementChild.animate(\n          {\n            opacity: [1, 0],\n            transform: [\"translateY(0)\", \"translateY(-10px)\"],\n          },\n          75\n        ).finished;\n        this.lineItemLoader.firstElementChild.hidden = true;\n        if (event.detail.newLineQuantity === 0) {\n          await this.animate(\n            {\n              opacity: [1, 0],\n              height: [`${this.clientHeight}px`, 0],\n            },\n            {\n              duration: 300,\n              easing: \"ease\",\n            }\n          ).finished;\n          this.remove();\n        } else {\n          this.lineItemLoader.lastElementChild.hidden = false;\n          await this.lineItemLoader.lastElementChild.animate(\n            {\n              opacity: [0, 1],\n              transform: [\"translateY(10px)\", \"translateY(0)\"],\n            },\n            {\n              duration: 75,\n              endDelay: 300,\n            }\n          ).finished;\n          this.lineItemLoader.hidden = true;\n        }\n      }\n    }\n  };\n  window.customElements.define(\"line-item\", LineItem);\n\n  var ApCartNotification = class extends CustomHTMLElement {\n    connectedCallback() {\n      this.rootApollo.on(\n        \"ap-cartnotification:show\",\n        this._evtOnShow.bind(this),\n        !this.hasAttribute(\"global\")\n      );\n      this.apollo.on(\"click\", '[data-action=\"close\"]', (event) => {\n        event.stopPropagation();\n        this.hidden = true;\n      });\n      this.addEventListener(\"mouseenter\", this.stopTimer.bind(this));\n      this.addEventListener(\"mouseleave\", this.startTimer.bind(this));\n      window.addEventListener(\"pagehide\", () => (this.hidden = true));\n    }\n    set hidden(value) {\n      if (!value) {\n        this.startTimer();\n      } else {\n        this.stopTimer();\n      }\n      this.toggleAttribute(\"hidden\", value);\n    }\n    get isInsideDrawer() {\n      return this.classList.contains(\"ap-cartnotification--drawer\");\n    }\n    stopTimer() {\n      clearTimeout(this._timeout);\n    }\n    startTimer() {\n      this._timeout = setTimeout(() => (this.hidden = true), 3e3);\n    }\n    _evtOnShow(event) {\n      if (this.isInsideDrawer && !this.closest(\".drawer\").open) {\n        return;\n      }\n      if (\n        this.hasAttribute(\"global\") &&\n        event.detail.status === \"success\" &&\n        window.themeVariables.settings.cartType === \"drawer\"\n      ) {\n        return;\n      }\n      event.stopPropagation();\n      let closeButtonHtml = \"\";\n      if (!this.isInsideDrawer) {\n        closeButtonHtml = `\n        <button class=\"ap-cartnotification__close tap-area hd-phone\" data-action=\"close\">\n          <span class=\"visually-hidden\">${window.themeVariables.strings.accessibilityClose}</span>\n          <svg focusable=\"false\" width=\"14\" height=\"14\" class=\"icon icon--close icon--inline\" viewBox=\"0 0 14 14\">\n            <path d=\"M13 13L1 1M13 1L1 13\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"></path>\n          </svg>\n        </button>\n      `;\n      }\n      if (event.detail.status === \"success\") {\n        this.classList.remove(\"ap-cartnotification--error\");\n        this.innerHTML = `\n        <div class=\"ap-cartnotification__overflow\">\n          <div class=\"container\">\n            <div class=\"ap-cartnotification__wrapper\">\n              <svg focusable=\"false\" width=\"20\" height=\"20\" class=\"icon icon--ap-cartnotification\" viewBox=\"0 0 20 20\">\n                <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"currentColor\"></rect>\n                <path d=\"M6 10L9 13L14 7\" fill=\"none\" stroke=\"rgb(var(--success-color))\" stroke-width=\"2\"></path>\n              </svg>\n              \n              <div class=\"ap-cartnotification__text-wrapper\">\n                <span class=\"ap-cartnotification__heading heading hd-phone\">${window.themeVariables.strings.cartItemAdded}</span>\n                <span class=\"ap-cartnotification__heading heading hd-tablet-and-up\">${window.themeVariables.strings.cartItemAddedShort}</span>\n                <a href=\"${window.themeVariables.routes.cartUrl}\" class=\"ap-cartnotification__view-cart link\">${window.themeVariables.strings.cartViewCart}</a>\n              </div>\n              \n              ${closeButtonHtml}\n            </div>\n          </div>\n        </div>\n      `;\n      } else {\n        this.classList.add(\"ap-cartnotification--error\");\n        this.innerHTML = `\n        <div class=\"ap-cartnotification__overflow\">\n          <div class=\"container\">\n            <div class=\"ap-cartnotification__wrapper\">\n              <svg focusable=\"false\" width=\"20\" height=\"20\" class=\"icon icon--ap-cartnotification\" viewBox=\"0 0 20 20\">\n                <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"currentColor\"></rect>\n                <path d=\"M9.6748 13.2798C9.90332 13.0555 10.1763 12.9434 10.4937 12.9434C10.811 12.9434 11.0819 13.0555 11.3062 13.2798C11.5347 13.5041 11.6489 13.7749 11.6489 14.0923C11.6489 14.4097 11.5347 14.6847 11.3062 14.9175C11.0819 15.146 10.811 15.2603 10.4937 15.2603C10.1763 15.2603 9.90332 15.146 9.6748 14.9175C9.45052 14.6847 9.33838 14.4097 9.33838 14.0923C9.33838 13.7749 9.45052 13.5041 9.6748 13.2798ZM9.56689 12.1816V5.19922H11.4141V12.1816H9.56689Z\" fill=\"rgb(var(--error-color))\"></path>\n              </svg>\n              \n              <div class=\"ap-cartnotification__text-wrapper\">\n                <span class=\"ap-cartnotification__heading heading\">${event.detail.error}</span>\n              </div>\n              \n              ${closeButtonHtml}\n            </div>\n          </div>\n        </div>\n      `;\n      }\n      this.clientHeight;\n      this.hidden = false;\n    }\n  };\n  window.customElements.define(\"ap-cartnotification\", ApCartNotification);\n\n  var ApShippingEstimator = class extends HTMLElement {\n    connectedCallback() {\n      this.submitButton = this.querySelector('[type=\"button\"]');\n      this.submitButton.addEventListener(\"click\", this._evtShippingEstimate.bind(this));\n    }\n    async _evtShippingEstimate() {\n      const zip = this.querySelector('[name=\"ap-shippingestimator[zip]\"]').value;\n      const country = this.querySelector('[name=\"ap-shippingestimator[country]\"]').value;\n      const province = this.querySelector('[name=\"ap-shippingestimator[province]\"]').value;\n      this.submitButton.setAttribute(\"ap-ariabusy\", \"true\");\n      const prepareResponse = await fetch(\n        `${window.themeVariables.routes.cartUrl}/prepare_shipping_rates.json?shipping_address[zip]=${zip}&shipping_address[country]=${country}&shipping_address[province]=${province}`,\n        {\n          method: \"POST\",\n        }\n      );\n      if (prepareResponse.ok) {\n        const shippingRates = await this._getAsyncRatesShipping(zip, country, province);\n        this._formatRatesShipping(shippingRates);\n      } else {\n        const jsonError = await prepareResponse.json();\n        this._errorFormat(jsonError);\n      }\n      this.submitButton.removeAttribute(\"ap-ariabusy\");\n    }\n    async _getAsyncRatesShipping(zip, country, province) {\n      const response = await fetch(\n        `${window.themeVariables.routes.cartUrl}/async_shipping_rates.json?shipping_address[zip]=${zip}&shipping_address[country]=${country}&shipping_address[province]=${province}`\n      );\n      const responseAsText = await response.text();\n      if (responseAsText === null) {\n        return this._getAsyncRatesShipping(zip, country, province);\n      } else {\n        return JSON.parse(responseAsText)[\"shipping_rates\"];\n      }\n    }\n    _formatRatesShipping(shippingRates) {\n      var _a;\n      (_a = this.querySelector(\".ap-shippingestimator__results\")) == null ? void 0 : _a.remove();\n      let formattedShippingRates = \"\";\n      shippingRates.forEach((shippingRate) => {\n        formattedShippingRates += `<li>${shippingRate[\"presentment_name\"]}: ${apMoneyFormat(\n          parseFloat(shippingRate[\"price\"]) * 100\n        )}</li>`;\n      });\n      const html = `\n      <div class=\"ap-shippingestimator__results\">\n        <p>${\n          shippingRates.length === 0\n            ? window.themeVariables.strings.shippingEstimatorNoResults\n            : shippingRates.length === 1\n            ? window.themeVariables.strings.shippingEstimatorOneResult\n            : window.themeVariables.strings.shippingEstimatorMultipleResults\n        }</p>\n        ${\n          formattedShippingRates === \"\"\n            ? \"\"\n            : `<ul class=\"unordered-list\">${formattedShippingRates}</ul>`\n        }\n      </div>\n    `;\n      this.insertAdjacentHTML(\"beforeend\", html);\n    }\n    _errorFormat(errors) {\n      var _a;\n      (_a = this.querySelector(\".ap-shippingestimator__results\")) == null ? void 0 : _a.remove();\n      let formattedShippingRates = \"\";\n      Object.keys(errors).forEach((errorKey) => {\n        formattedShippingRates += `<li>${errorKey} ${errors[errorKey]}</li>`;\n      });\n      const html = `\n      <div class=\"ap-shippingestimator__results\">\n        <p>${window.themeVariables.strings.shippingEstimatorError}</p>\n        <ul class=\"unordered-list\">${formattedShippingRates}</ul>\n      </div>\n    `;\n      this.insertAdjacentHTML(\"beforeend\", html);\n    }\n  };\n  window.customElements.define(\"ap-shippingestimator\", ApShippingEstimator);\n\n  var ApReviewLink = class extends HTMLAnchorElement {\n    constructor() {\n      super();\n      this.addEventListener(\"click\", this._onClick.bind(this));\n    }\n    _onClick() {\n      const shopifyReviewsElement = document.getElementById(\"shopify-product-reviews\");\n      if (!shopifyReviewsElement) {\n        return;\n      }\n      if (window.matchMedia(window.themeVariables.breakpoints.pocket).matches) {\n        shopifyReviewsElement.closest(\"ap-contentcollapsible\").open = true;\n      } else {\n        document\n          .querySelector(\n            `[ap-controlsaria=\"${\n              shopifyReviewsElement.closest(\".product-tabs__tab-item-wrapper\").id\n            }\"]`\n          )\n          .click();\n      }\n    }\n  };\n  window.customElements.define(\"ap-reviewlink\", ApReviewLink, { extends: \"a\" });\n\n  var ApProductStickyForm = class extends HTMLElement {\n    connectedCallback() {\n      var _a;\n      if ((_a = document.getElementById(this.getAttribute(\"form-id\"))) == null) {\n        void 0;\n      } else {\n        _a.addEventListener(\"variant:changed\", this._evtOnChangedVariant.bind(this));\n      }\n      this.elementImage = this.querySelector(\".ap-productstickyform__image\");\n      this.priceElement = this.querySelector(\".ap-productstickyform__price\");\n      this.unitPriceElement = this.querySelector(\".ap-productstickyform__unit-price\");\n      this._setupVisibilityObserversTextOverlayImage();\n    }\n    disconnectedCallback() {\n      this.intersectionObserver.disconnect();\n    }\n    set hidden(value) {\n      this.toggleAttribute(\"hidden\", value);\n      if (value) {\n        document.documentElement.style.removeProperty(\"--ap-cartnotification-offset\");\n      } else {\n        document.documentElement.style.setProperty(\n          \"--ap-cartnotification-offset\",\n          `${this.clientHeight}px`\n        );\n      }\n    }\n    _evtOnChangedVariant(event) {\n      const variant = event.detail.variant;\n      let currencyFormat = window.themeVariables.settings.moneyFormat;\n      if (window.themeVariables.settings.currencyCodeEnabled) {\n        currencyFormat = window.themeVariables.settings.moneyWithCurrencyFormat;\n      }\n      if (!variant) {\n        return;\n      }\n      if (this.priceElement) {\n        this.priceElement.innerHTML = apMoneyFormat(variant[\"price\"], currencyFormat);\n      }\n      if (this.unitPriceElement) {\n        if (variant[\"unit_price_measurement\"]) {\n          this.unitPriceElement.style.display = \"block\";\n        } else {\n          this.unitPriceElement.style.display = \"none\";\n        }\n        if (variant[\"unit_price_measurement\"]) {\n          let referenceValue = \"\";\n          if (variant[\"unit_price_measurement\"][\"reference_value\"] !== 1) {\n            referenceValue = `<span class=\"unit-price-measurement__reference-value\">${variant[\"unit_price_measurement\"][\"reference_value\"]}</span>`;\n          }\n          this.unitPriceElement.innerHTML = `\n          <div class=\"unit-price-measurement\">\n            <span class=\"unit-price-measurement__price\">${apMoneyFormat(\n              variant[\"unit_price\"]\n            )}</span>\n            <span class=\"unit-price-measurement__separator\">/</span>\n            ${referenceValue}\n            <span class=\"unit-price-measurement__reference-unit\">${\n              variant[\"unit_price_measurement\"][\"reference_unit\"]\n            }</span>\n          </div>\n        `;\n        }\n      }\n      if (!this.elementImage || !variant || !variant[\"featured_media\"]) {\n        return;\n      }\n      const featuredMedia = variant[\"featured_media\"];\n      if (featuredMedia[\"alt\"]) {\n        this.elementImage.setAttribute(\"alt\", featuredMedia[\"alt\"]);\n      }\n      this.elementImage.setAttribute(\"width\", featuredMedia[\"preview_image\"][\"width\"]);\n      this.elementImage.setAttribute(\"height\", featuredMedia[\"preview_image\"][\"height\"]);\n      this.elementImage.setAttribute(\"src\", apGetSizedOfMediaUrl(featuredMedia, \"165x\"));\n      this.elementImage.setAttribute(\"srcset\", apGetMediaSrcset(featuredMedia, [55, 110, 165]));\n    }\n    _setupVisibilityObserversTextOverlayImage() {\n      const paymentContainerElement = document.getElementById(\"ApolloProductSticky\"),\n        footerElement = document.querySelector(\".shopify-section--footer\"),\n        apOffsetStickyHeader = apStickyHeaderOffsetContent();\n      this._isFooterVisible = this._isApContainerPaymentPassed = false;\n      this.intersectionObserver = new IntersectionObserver(\n        (entries) => {\n          entries.forEach((entry) => {\n            if (entry.target === footerElement) {\n              this._isFooterVisible = entry.intersectionRatio > 0;\n            }\n            if (entry.target === paymentContainerElement) {\n              const apBoundingRect = paymentContainerElement.getBoundingClientRect();\n              this._isApContainerPaymentPassed =\n                entry.intersectionRatio === 0 &&\n                apBoundingRect.top + apBoundingRect.height <= apOffsetStickyHeader;\n            }\n          });\n          if (window.matchMedia(window.themeVariables.breakpoints.pocket).matches) {\n            this.hidden = !this._isApContainerPaymentPassed || this._isFooterVisible;\n          } else {\n            this.hidden = !this._isApContainerPaymentPassed;\n          }\n        },\n        { rootMargin: `-${apOffsetStickyHeader}px 0px 0px 0px` }\n      );\n      this.intersectionObserver.observe(paymentContainerElement);\n      this.intersectionObserver.observe(footerElement);\n    }\n  };\n  window.customElements.define(\"ap-productstickyform\", ApProductStickyForm);\n\n  (() => {\n    new ApolloInputBindingManager();\n  })();\n  (() => {\n    if (Shopify.designMode) {\n      document.addEventListener(\"shopify:section:load\", () => {\n        if (window.SPR) {\n          window.SPR.initDomEls();\n          window.SPR.loadProducts();\n        }\n      });\n    }\n    window.SPRCallbacks = {\n      onFormSuccess: (event, info) => {\n        document.getElementById(`form_${info.id}`).classList.add(\"spr-form--success\");\n      },\n    };\n  })();\n  (() => {\n    let previousClientWidth = document.documentElement.clientWidth;\n    if (window.visualViewport) {\n      previousClientWidth = window.visualViewport.width;\n    }\n    let setPropertyViewport = () => {\n      const clientWidth = window.visualViewport\n        ? window.visualViewport.width\n        : document.documentElement.clientWidth;\n      const clientHeight = window.visualViewport\n        ? window.visualViewport.height\n        : document.documentElement.clientHeight;\n      if (clientWidth === previousClientWidth) {\n        return;\n      }\n      requestAnimationFrame(() => {\n        document.documentElement.style.setProperty(\"--window-height\", clientHeight + \"px\");\n        previousClientWidth = clientWidth;\n      });\n    };\n    setPropertyViewport();\n    if (window.visualViewport) {\n      window.visualViewport.addEventListener(\"resize\", setPropertyViewport);\n    } else {\n      window.addEventListener(\"resize\", setPropertyViewport);\n    }\n  })();\n  (() => {\n    let documentApollo = new main_default(document.body);\n    documentApollo.on(\n      \"keyup\",\n      'input:not([type=\"checkbox\"]):not([type=\"radio\"]), textarea',\n      (event, target) => {\n        target.classList.toggle(\"is-filled\", target.value !== \"\");\n      }\n    );\n    documentApollo.on(\"change\", \"select\", (event, target) => {\n      target.parentNode.classList.toggle(\"is-filled\", target.value !== \"\");\n    });\n  })();\n  (() => {\n    document.querySelectorAll(\".rte table\").forEach((table) => {\n      table.outerHTML = '<div class=\"table-wrapper\">' + table.outerHTML + \"</div>\";\n    });\n  })();\n  (() => {\n    let documentApollo = new main_default(document.documentElement);\n    documentApollo.on(\"click\", \"[data-smooth-scroll]\", (event, target) => {\n      const elementScrollTo = document.querySelector(target.getAttribute(\"href\"));\n      if (elementScrollTo) {\n        event.preventDefault();\n        elementScrollTo.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n      }\n    });\n  })();\n  (() => {\n    document.addEventListener(\"keyup\", function (event) {\n      if (event.key === \"Tab\") {\n        document.body.classList.remove(\"no-focus-outline\");\n        document.body.classList.add(\"focus-outline\");\n      }\n    });\n  })();\n})();\n/*!\n * focus-trap 6.6.1\n * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n */\n/*!\n * objTabbable 5.2.1\n * @license MIT, https://github.com/focus-trap/objTabbable/blob/master/LICENSE\n */\n// (function($) {\n//   $( document ).ready(function() {\n//     $('.agree_terms_conditions').change(function(){\n//       if($(this).is(\":checked\")){\n//         $('#shopify-section-mini-cart .checkout-button').removeAttr('disabled');\n//       } else {\n//         $('#shopify-section-mini-cart .checkout-button').attr('disabled', 'disabled');\n//       }\n//     });\n//   });\n// })( jQuery );\n\nclass productPopupMedia extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", (event) => {\n      document.getElementById(this.getAttribute(\"data-controls\")).setAttribute(\"open\", \"\");\n    });\n  }\n}\ncustomElements.define(\"product-popup-media\", productPopupMedia);\n\nclass productListMedia extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", (event) => {});\n  }\n}\ncustomElements.define(\"ap-productmedia-list\", productListMedia);\n\nlet tag = document.getElementsByClassName(\"product__info-scroll\");\nif (tag.length) {\n  var product_info_width = tag[0].clientWidth;\n  var product_info_left = tag[0].offsetLeft;\n  window.addEventListener(\"scroll\", function () {\n    if (tag) {\n      if (this.pageYOffset > tag[0].offsetTop) {\n        let header = document.querySelector(\".shopify-section--header\");\n        tag[0].style.width = product_info_width;\n        tag[0].style.position = \"sticky\";\n        tag[0].style.top = header.clientHeight + \"px\";\n        tag[0].style.left = product_info_left + \"px\";\n      }\n    }\n  });\n}\n\nleo_create_instafeed();\nfunction leo_create_instafeed() {\n  if (document.getElementById(\"instafeed\")) {\n    let token = document.getElementById(\"instafeed\").dataset.token;\n    if (token) {\n      let limit = parseInt(document.getElementById(\"instafeed\").dataset.limit);\n      let feed = new Instafeed({\n        accessToken: document.getElementById(\"instafeed\").dataset.token,\n        limit: limit,\n        template:\n          '<div class=\"ap-multicolumn__item ap-multicolumn__item--align-start \" reveal><div class=\"ap-multicolumn__image-wrapper\"><img class=\"ap-multicolumn__image\" alt=\"{{caption}}\" src=\"{{image}}\" ></div></div>',\n        transform: function (item) {\n          var d = new Date(item.timestamp);\n          item.date = [d.getDate(), d.getMonth(), d.getYear()].join(\"/\");\n          return item;\n        },\n\n        after: function () {\n          document.getElementById(\"buttons_instafeed\").style.display = \"flex\";\n        },\n      });\n      feed.run();\n    }\n  }\n}\n\n// Back to top\nwindow.onscroll = () => {\n  toggleTopButton();\n};\nfunction scrollToTop() {\n  window.scrollTo({ top: 0, behavior: \"smooth\" });\n}\n\nfunction toggleTopButton() {\n  if (document.getElementById(\"back-to-up\")) {\n    if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {\n      document.getElementById(\"back-to-up\").classList.remove(\"hd\");\n    } else {\n      document.getElementById(\"back-to-up\").classList.add(\"hd\");\n    }\n  }\n}\n\n(() => {\n  // MODAL UP SELL\n  function modalProduct() {\n    window.addEventListener(\"load\", function (params) {\n      this.setTimeout(() => {\n        let zindex = document.querySelector(\"#modal-productsell\");\n        if (zindex) {\n          zindex.classList.add(\"modal-active\");\n        }\n      }, 2000);\n    });\n  }\n  modalProduct();\n\n  function modalGalleryImg() {\n    window.addEventListener(\"load\", function (params) {\n      const images = document.querySelectorAll(\".images\");\n      const modal = document.querySelector(\".g-modal\");\n      const modalImg = document.querySelector(\".modalImg\");\n      const modalTxt = document.querySelector(\".modalTxt\");\n      const close = document.querySelector(\".close\");\n      var btnPrev = document.querySelector(\".gallery-btn-prev\");\n      var btnNext = document.querySelector(\".gallery-btn-next\");\n\n      images.forEach((image) => {\n        image.addEventListener(\"click\", () => {\n          const imageItem = image.querySelector(\"img\");\n          modalImg.src = imageItem.src;\n          modalImg.srcset = imageItem.srcset;\n          modalTxt.innerHTML = imageItem.alt;\n          modal.classList.add(\"appear\");\n\n          close.addEventListener(\"click\", () => {\n            modal.classList.remove(\"appear\");\n          });\n\n          var locationNow = image;\n          btnNext.addEventListener(\"click\", () => {\n            var quantityImg = images.length;\n\n            locationNow = locationNow < quantityImg - 1 ? locationNow + 1 : 0;\n            var locationNext = images[locationNow];\n\n            var imgNext = locationNext.querySelector(\"img\");\n\n            modalImg.src = imgNext.src;\n            modalImg.srcset = imgNext.srcset;\n          });\n\n          btnPrev.addEventListener(\"click\", () => {\n            var quantityImg = images.length;\n\n            locationNow = locationNow > 0 ? locationNow - 1 : quantityImg - 1;\n            var locationNext = images[locationNow];\n\n            var imgNext = locationNext.querySelector(\"img\");\n\n            modalImg.src = imgNext.src;\n            modalImg.srcset = imgNext.srcset;\n          });\n        });\n      });\n    });\n  }\n  modalGalleryImg();\n\n  function Bgcollection() {\n    if (document.querySelector(\".colgrid__bg--full[data-index='1']\")) {\n      document.querySelector(\".colgrid__bg--full[data-index='1']\").classList.add(\"active\");\n    }\n    Array.from(document.querySelectorAll('.colgrid .colgrid__box')).forEach(function (e) {\n      var index = e.getAttribute(\"data-index\");\n\n      e.addEventListener(\"mouseover\", () => {\n        var item = document.querySelectorAll(\".colgrid__bg--full[data-index='\" + index + \"']\");\n        const itemAc = document.querySelector(\".colgrid__bg--full.active\");\n        const wasActive = itemAc.classList.contains('active');\n        if (wasActive) {\n          itemAc.classList.remove('active');\n        }\n        item.forEach(ii => {\n          ii.classList.add('active');\n        });\n      });\n    });\n  }\n  Bgcollection();\n\n  function filterCollectionTop() {\n    const btnfilter = document.querySelector(\".filter-toggle\");\n    if (btnfilter) {\n      btnfilter.onclick = () => {\n        const btnfilter_2 = btnfilter.parentElement.closest(\".ap-productfacet\");\n        btnfilter_2.querySelector(\".ap-productfacet__aside\").classList.add(\"open\");\n        btnfilter_2.querySelector(\".drawer__overlay-filter\").classList.add(\"open\");\n      };\n    }\n\n    const btnClose = document.querySelector(\".close-filter\");\n    if (btnClose) {\n      btnClose.onclick = () => {\n        const btnClose_2 = btnClose.closest(\".ap-productfacet\");\n        btnClose_2.querySelector(\".ap-productfacet__aside\").classList.remove(\"open\");\n        btnClose_2.querySelector(\".drawer__overlay-filter\").classList.remove(\"open\");\n      };\n    }\n\n    const bgClose = document.querySelector(\".drawer__overlay-filter\");\n    if (bgClose) {\n      bgClose.onclick = () => {\n        const bgClose_2 = bgClose.closest(\".ap-productfacet\");\n        bgClose_2.querySelector(\".ap-productfacet__aside\").classList.remove(\"open\");\n        bgClose.classList.remove(\"open\");\n      };\n    }\n  }\n  filterCollectionTop();\n\n  function loadCountDown() {\n    const second = 1000,\n      minute = second * 60,\n      hour = minute * 60,\n      day = hour * 24;\n\n    const getTime = document.querySelectorAll(\".timer\");\n\n    for (let i = 0; i < getTime.length; i++) {\n      const timeItem = getTime[i].getAttribute(\"data-date\");\n\n      const countDown = new Date(timeItem).getTime(),\n        x = setInterval(function () {\n          const now = new Date().getTime(),\n            distance = countDown - now;\n\n          const itemDay = getTime[i].querySelector(\".js-timer-days\");\n          const itemHour = getTime[i].querySelector(\".js-timer-hours\");\n          const itemMin = getTime[i].querySelector(\".js-timer-minutes\");\n          const itemSec = getTime[i].querySelector(\".js-timer-seconds\");\n\n          (itemDay.innerHTML = Math.floor(distance / day)),\n            (itemHour.innerHTML = Math.floor((distance % day) / hour)),\n            (itemMin.innerHTML = Math.floor((distance % hour) / minute)),\n            (itemSec.innerHTML = Math.floor((distance % minute) / second));\n        }, second);\n    }\n  }\n  loadCountDown();\n\n  function collectionCoupon() {\n    const couponShow = document.getElementById(\"jsCoupon\");\n    const btnCoupon = document.querySelector(\".js-btn-coupon\");\n    if (couponShow) {\n      const set = setInterval(function () {\n        couponShow.classList.add(\"show\");\n      }, couponShow.getAttribute(\"data-delay\"));\n\n      btnCoupon.addEventListener(\"click\", (event) => {\n        const copyText = document.getElementById(\"coupon_code\");\n        const copiEd = document.querySelector(\".coupon-copied\");\n        copyText.select();\n        copyText.setSelectionRange(0, 99999);\n        navigator.clipboard.writeText(copyText.value);\n        copiEd.classList.add(\"show\");\n      });\n      const close = document.querySelector(\".close-coupon\");\n      close.addEventListener(\"click\", (event) => {\n        couponShow.classList.remove(\"show\");\n        clearInterval(set);\n      });\n    }\n  }\n  collectionCoupon();\n  \n  function mouseMove() {\n    var productList = document.querySelectorAll('#ap-scroll');\n\n    for (let i = 0; i < productList.length; i++) {\n      const element = productList[i];\n      element.addEventListener('mousedown', function(event) {\n        event.preventDefault();\n        \n        var startX = event.pageX - element.offsetLeft;   \n        var scrollLeft = element.scrollLeft;\n      \n        document.addEventListener('mousemove', moveList);\n        document.addEventListener('mouseup', removeListeners);\n      \n        function moveList(event) {\n          var x = event.pageX - element.offsetLeft;\n          var walk = (x - startX) * 3;\n          element.scrollLeft = scrollLeft - walk;\n        }\n      \n        function removeListeners() {\n          document.removeEventListener('mousemove', moveList);\n          document.removeEventListener('mouseup', removeListeners);\n        }\n      });\n    }\n  }\n  mouseMove();\n\n  // a11y: mark slides that are not actually within the visible track area\n  // as hidden from assistive tech + the tab order. Keyed off real geometry\n  // (not just Swiper's \"active\" slide) since multi-per-view breakpoints can\n  // show several slides at once.\n  function updateSwiperSlideA11y(swiperInstance) {\n    if (!swiperInstance || !swiperInstance.el) return;\n    const containerRect = swiperInstance.el.getBoundingClientRect();\n    const slides = swiperInstance.slides || swiperInstance.el.querySelectorAll(\".swiper-slide\");\n    slides.forEach((slide) => {\n      const r = slide.getBoundingClientRect();\n      const visible = r.right > containerRect.left - 1 && r.left < containerRect.right + 1;\n      const focusables = slide.querySelectorAll(\"a, button, input, select, textarea, [tabindex]\");\n      if (visible) {\n        slide.removeAttribute(\"aria-hidden\");\n        slide.removeAttribute(\"inert\");\n        focusables.forEach((el) => {\n          // decorative duplicate links are aria-hidden on purpose: keep them out of the tab order\n          if (el.getAttribute(\"aria-hidden\") === \"true\") return;\n          el.removeAttribute(\"tabindex\");\n        });\n      } else {\n        slide.setAttribute(\"aria-hidden\", \"true\");\n        slide.setAttribute(\"inert\", \"\");\n        focusables.forEach((el) => el.setAttribute(\"tabindex\", \"-1\"));\n      }\n    });\n  }\n\n  // Swiper fires slideChange/setTranslate at the START of the slide animation,\n  // when the incoming slide is still off-screen. Re-run the pass once the\n  // animation has settled so the last visible slide does not stay inert.\n  function settleSwiperSlideA11y(swiperInstance) {\n    clearTimeout(swiperInstance._a11yTimer);\n    swiperInstance._a11yTimer = setTimeout(function () {\n      updateSwiperSlideA11y(swiperInstance);\n    }, (swiperInstance.params.speed || 300) + 80);\n  }\n\n  function apSwiper() {\n    // basic options for all sliders\n\n    // call init function\n    initSwipers();\n\n    function initSwipers() {\n      const swipers = document.querySelectorAll(\n        \".swiper-container[data-section-id]\"\n      );\n\n      swipers.forEach((swiper_item) => {\n        const sliderId = swiper_item.getAttribute(\"data-section-id\");\n\n        const nextButton = document.querySelector(\n          `.swiper-button-next[data-section-id=\"${sliderId}-next\"]`\n        );\n        const prevButton = document.querySelector(\n          `.swiper-button-prev[data-section-id=\"${sliderId}-prev\"]`\n        );\n\n        // get options\n        const swiperData = swiper_item.dataset.swiper; // Access data-swiper attribute\n\n        // Parse the swiperData JSON string to an object\n        let swiperOptions = JSON.parse(swiperData || \"{}\");\n\n        // Add pagination and navigation dynamically (if needed)\n        swiperOptions = Object.assign(swiperOptions, {\n          loop: swiperOptions.loop || false,\n          autoplay: swiperOptions.autoplay || false,\n          scrollbar: {\n            el: swiper_item.querySelector(\".swiper-scrollbar\"),\n          },\n          pagination: {\n            el: swiper_item.querySelector(\".swiper-pagination\"),\n            clickable: false, // dots are display-only (a11y target-size); arrows navigate\n          },\n          navigation: {\n            nextEl: nextButton,\n            prevEl: prevButton,\n          },\n          on: {\n            init: function () { updateSwiperSlideA11y(this); },\n            slideChange: function () { updateSwiperSlideA11y(this); settleSwiperSlideA11y(this); },\n            resize: function () { updateSwiperSlideA11y(this); settleSwiperSlideA11y(this); },\n            setTranslate: function () { updateSwiperSlideA11y(this); settleSwiperSlideA11y(this); },\n          },\n        });\n\n        // init\n        new Swiper(swiper_item, swiperOptions);\n      });\n    }\n  }\n  apSwiper();\n  if (Shopify.designMode) {\n    document.addEventListener(\"shopify:section:load\", () => {\n      apSwiper();\n      collectionCoupon();\n      Bgcollection();\n      loadCountDown();\n      filterCollectionTop();\n    });\n  }\n})();\n"],
  "mappings": "CAAC,IAAM,CACL,IAAI,UAAY,OAAO,eACnB,gBAAkB,CAAC,IAAK,IAAK,QAC/B,OAAO,IACH,UAAU,IAAK,IAAK,CAClB,WAAY,GACZ,aAAc,GACd,SAAU,GACV,KACF,CAAC,EACA,IAAI,GAAG,EAAI,MACd,cAAgB,CAAC,IAAK,IAAK,SAC7B,gBAAgB,IAAK,OAAO,KAAQ,SAAW,IAAM,GAAK,IAAK,KAAK,EAC7D,OAGT,SAAS,OAAO,KAAM,CACpB,KAAK,gBAAkB,CAAC,CAAC,EAAG,CAAC,CAAC,EAC1B,MACF,KAAK,KAAK,IAAI,EAEhB,KAAK,OAAS,OAAO,UAAU,OAAO,KAAK,IAAI,EAC/C,KAAK,kBAAoB,CAAC,CAC5B,CACA,OAAO,UAAU,KAAO,SAAU,KAAM,CACtC,MAAM,gBAAkB,KAAK,gBAC7B,IAAI,UACJ,GAAI,KAAK,YAAa,CACpB,IAAK,aAAa,gBAAgB,CAAC,EAC7B,gBAAgB,CAAC,EAAE,eAAe,SAAS,GAC7C,KAAK,YAAY,oBAAoB,UAAW,KAAK,OAAQ,EAAI,EAGrE,IAAK,aAAa,gBAAgB,CAAC,EAC7B,gBAAgB,CAAC,EAAE,eAAe,SAAS,GAC7C,KAAK,YAAY,oBAAoB,UAAW,KAAK,OAAQ,EAAK,CAGxE,CACA,GAAI,CAAC,MAAQ,CAAC,KAAK,iBACjB,OAAI,KAAK,aACP,OAAO,KAAK,YAEP,KAET,KAAK,YAAc,KACnB,IAAK,aAAa,gBAAgB,CAAC,EAC7B,gBAAgB,CAAC,EAAE,eAAe,SAAS,GAC7C,KAAK,YAAY,iBAAiB,UAAW,KAAK,OAAQ,EAAI,EAGlE,IAAK,aAAa,gBAAgB,CAAC,EAC7B,gBAAgB,CAAC,EAAE,eAAe,SAAS,GAC7C,KAAK,YAAY,iBAAiB,UAAW,KAAK,OAAQ,EAAK,EAGnE,OAAO,IACT,EAEA,OAAO,UAAU,IAAM,SAAU,UAAW,SAAU,QAAS,SAAU,CACvE,IAAI,EACA,SACA,gBACA,aACA,gBAMJ,GALI,OAAO,UAAa,aACtB,SAAW,QACX,QAAU,SACV,SAAW,MAET,WAAa,OACf,YAAK,IAAI,UAAW,SAAU,QAAS,EAAI,EAC3C,KAAK,IAAI,UAAW,SAAU,QAAS,EAAK,EACrC,KAGT,GADA,gBAAkB,KAAK,gBAAgB,SAAW,EAAI,CAAC,EACnD,CAAC,UAAW,CACd,IAAK,mBAAmB,gBAClB,gBAAgB,eAAe,eAAe,GAChD,KAAK,IAAI,gBAAiB,SAAU,OAAO,EAG/C,OAAO,IACT,CAEA,GADA,aAAe,gBAAgB,SAAS,EACpC,CAAC,cAAgB,CAAC,aAAa,OACjC,OAAO,KAET,IAAK,EAAI,aAAa,OAAS,EAAG,GAAK,EAAG,IACxC,SAAW,aAAa,CAAC,GAEtB,CAAC,UAAY,WAAa,SAAS,YACnC,CAAC,SAAW,UAAY,SAAS,WAElC,KAAK,kBAAkB,KAAK,QAAQ,EACpC,aAAa,OAAO,EAAG,CAAC,GAG5B,OAAK,aAAa,SAChB,OAAO,gBAAgB,SAAS,EAC5B,KAAK,aACP,KAAK,YAAY,oBAAoB,UAAW,KAAK,OAAQ,QAAQ,GAGlE,IACT,EACA,OAAO,UAAU,GAAK,SAAU,QAAS,SAAU,QAAS,SAAU,CACpE,IAAI,KACA,gBACA,QACA,aACJ,GAAI,CAAC,QACH,MAAM,IAAI,UAAU,uBAAyB,OAAO,EAUtD,GARI,OAAO,UAAa,aACtB,SAAW,QACX,QAAU,SACV,SAAW,MAET,WAAa,SACf,SAAW,KAAK,eAAe,OAAO,GAEpC,OAAO,SAAY,WACrB,MAAM,IAAI,UAAU,oCAAoC,EAE1D,YAAO,KAAK,YACZ,gBAAkB,KAAK,gBAAgB,SAAW,EAAI,CAAC,EAClD,gBAAgB,OAAO,IACtB,MACF,KAAK,iBAAiB,QAAS,KAAK,OAAQ,QAAQ,EAEtD,gBAAgB,OAAO,EAAI,CAAC,GAEzB,SAGM,YAAY,KAAK,QAAQ,GAClC,aAAe,SACf,QAAU,kBACD,mBAAmB,KAAK,QAAQ,GACzC,aAAe,SAAS,MAAM,CAAC,EAC/B,QAAU,YAEV,aAAe,SACf,QAAU,QAAQ,UAAU,UAV5B,aAAe,KACf,QAAU,kBAAkB,KAAK,IAAI,GAWvC,gBAAgB,OAAO,EAAE,KAAK,CAC5B,SACA,QACA,QACA,YACF,CAAC,EACM,IACT,EACA,OAAO,UAAU,eAAiB,SAAU,QAAS,CACnD,MAAO,CAAC,OAAQ,QAAS,QAAS,OAAQ,SAAU,QAAQ,EAAE,QAAQ,OAAO,IAAM,EACrF,EACA,OAAO,UAAU,KAAO,SAAU,MAAO,OAAQ,SAAU,CACzD,OAAO,SAAS,QAAQ,KAAK,OAAQ,MAAO,MAAM,CACpD,EAEA,SAAS,iBAAiB,QAAS,QAAS,CAC1C,OAAO,QAAQ,YAAY,IAAM,QAAQ,QAAQ,YAAY,CAC/D,CAEA,SAAS,kBAAkB,SAAU,QAAS,CAC5C,OAAI,KAAK,cAAgB,OAChB,UAAY,UAAY,UAAY,SAAS,iBAAmB,UAAY,OAE9E,KAAK,cAAgB,OAC9B,CAEA,SAAS,UAAU,GAAI,QAAS,CAC9B,OAAO,KAAO,QAAQ,EACxB,CACA,OAAO,UAAU,QAAU,UAAY,CACrC,KAAK,IAAI,EACT,KAAK,KAAK,CACZ,EACA,OAAO,UAAU,OAAS,SAAU,MAAO,CACzC,IAAI,EACA,EACJ,MAAM,KAAO,MAAM,KACnB,IAAI,KACA,MACA,SACA,SACA,aAAe,CAAC,EAChB,OACJ,MAAM,YAAc,eACpB,GAAI,MAAM,WAAW,IAAM,GACzB,OAWF,OATA,OAAS,MAAM,OACX,OAAO,WAAa,IACtB,OAAS,OAAO,YAEd,OAAO,0BACT,OAAS,OAAO,yBAElB,KAAO,KAAK,YACZ,MAAQ,MAAM,aAAe,MAAM,SAAW,MAAM,cAAgB,EAAI,GAChE,MAAO,CACb,IAAK,GACH,aAAe,KAAK,gBAAgB,CAAC,EAAE,IAAI,EAC3C,MACF,IAAK,GACC,KAAK,gBAAgB,CAAC,GAAK,KAAK,gBAAgB,CAAC,EAAE,IAAI,IACzD,aAAe,aAAa,OAAO,KAAK,gBAAgB,CAAC,EAAE,IAAI,CAAC,GAE9D,KAAK,gBAAgB,CAAC,GAAK,KAAK,gBAAgB,CAAC,EAAE,IAAI,IACzD,aAAe,aAAa,OAAO,KAAK,gBAAgB,CAAC,EAAE,IAAI,CAAC,GAElE,MACF,IAAK,GACH,aAAe,KAAK,gBAAgB,CAAC,EAAE,IAAI,EAC3C,KACJ,CACA,IAAI,OAAS,CAAC,EAEd,IADA,EAAI,aAAa,OACV,QAAU,GAAG,CAClB,IAAK,EAAI,EAAG,EAAI,IACd,SAAW,aAAa,CAAC,EACrB,EAAC,UAFY,IAMf,OAAO,SACP,CAAC,SAAU,QAAS,SAAU,UAAU,EAAE,QAAQ,OAAO,QAAQ,YAAY,CAAC,EAAI,IAClF,OAAO,aAAa,UAAU,EAE9B,OAAS,CAAC,EACD,SAAS,QAAQ,KAAK,OAAQ,SAAS,aAAc,MAAM,GACpE,OAAO,KAAK,CAAC,MAAO,OAAQ,QAAQ,CAAC,EAQzC,GALI,SAAW,OAGf,EAAI,aAAa,OACjB,OAAS,OAAO,eAAiB,OAAO,WACpC,kBAAkB,cACpB,KAEJ,CACA,IAAI,IACJ,IAAK,EAAI,EAAG,EAAI,OAAO,OAAQ,IAC7B,GAAI,OAAK,kBAAkB,QAAQ,OAAO,CAAC,EAAE,CAAC,CAAC,EAAI,MAGnD,SAAW,KAAK,KAAK,MAAM,KAAM,OAAO,CAAC,CAAC,EACtC,WAAa,IAAO,CACtB,OAAO,CAAC,EAAE,CAAC,EAAE,WAAW,EAAI,GAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,eAAe,EAC5B,IAAM,GACN,KACF,CAEF,OAAO,GACT,EAEA,IAAI,aAAe,OAEf,0BAA4B,KAAM,CACpC,aAAc,CACZ,KAAK,cAAgB,IAAI,aAAa,SAAS,IAAI,EACnD,KAAK,cAAc,GAAG,SAAU,oBAAqB,KAAK,mBAAmB,KAAK,IAAI,CAAC,CACzF,CACA,mBAAmB,MAAO,OAAQ,CAChC,MAAM,aAAe,SAAS,eAAe,OAAO,aAAa,iBAAiB,CAAC,EAE/E,eACE,OAAO,UAAY,WACrB,OAAS,OAAO,QAAQ,OAAO,aAAa,GAE9C,aAAa,UAAY,OAAO,aAAa,OAAO,EAChD,OAAO,aAAa,OAAO,EAC3B,OAAO,MAEf,CACF,EAEA,SAAS,aAAa,QAAS,KAAM,KAAO,CAAC,EAAG,CAE9C,QAAQ,cACN,IAAI,YAAY,KAAM,CACpB,QAAS,GACT,OAAQ,IACV,CAAC,CACH,CACF,CAEA,SAAS,wBAAwB,QAAS,KAAM,KAAO,CAAC,EAAG,CACzD,QAAQ,cACN,IAAI,YAAY,KAAM,CACpB,QAAS,GACT,OAAQ,IACV,CAAC,CACH,CACF,CAEA,IAAI,kBAAoB,cAAc,WAAY,CAChD,aAAc,CACZ,MAAM,EACN,KAAK,uBAAyB,GAC1B,QAAQ,YACV,KAAK,WAAW,GAAG,yBAA2B,OAAU,CACtD,MAAM,cAAgB,KAAK,QAAQ,kBAAkB,EACjD,MAAM,SAAW,eAAiB,MAAM,OAAO,OACjD,KAAK,uBAAyB,GAElC,CAAC,CAEL,CACA,IAAI,YAAa,CACf,OAAQ,KAAK,YAAc,KAAK,aAAe,IAAI,aAAa,SAAS,eAAe,CAC1F,CACA,IAAI,QAAS,CACX,OAAQ,KAAK,QAAU,KAAK,SAAW,IAAI,aAAa,IAAI,CAC9D,CACA,kBAAmB,CACjB,aAAa,SAAS,gBAAiB,qBAAqB,CAC9D,CACA,mBAAoB,CAClB,aAAa,SAAS,gBAAiB,mBAAmB,CAC5D,CACA,mBACE,4BAA8B,CAC5B,WAAY,WACZ,UAAW,CACb,EACA,CACA,MAAM,gBAAkB,IAAM,CAC5B,KAAK,UAAU,IAAI,kBAAkB,EACrC,KAAK,MAAM,QAAU,GACvB,EACA,OAAO,IAAI,QAAS,SAAY,CAC1B,OAAO,sBACT,KAAK,qBAAuB,IAAI,qBAAsB,OAAU,CAC1D,MAAM,CAAC,EAAE,iBACX,KAAK,qBAAqB,WAAW,EACrC,sBAAsB,IAAM,CAC1B,QAAQ,EACR,gBAAgB,CAClB,CAAC,EAEL,EAAG,2BAA2B,EAC9B,KAAK,qBAAqB,QAAQ,IAAI,IAEtC,QAAQ,EACR,gBAAgB,EAEpB,CAAC,CACH,CACA,sBAAuB,CACrB,IAAI,GACJ,KAAK,OAAO,QAAQ,EACpB,KAAK,WAAW,QAAQ,GACvB,GAAK,KAAK,uBAAyB,MAAgB,GAAG,WAAW,EAClE,OAAO,KAAK,QACZ,OAAO,KAAK,WACd,CACF,EAEI,uBAAyB,CAC3B,QACA,SACA,WACA,UACA,SACA,aACA,kBACA,kBACA,mDACA,gCACA,SACF,EACI,sBAAwC,uBAAuB,KAAK,GAAG,EACvE,QACF,OAAO,QAAY,IACf,UAAY,CAAC,EACb,QAAQ,UAAU,SAClB,QAAQ,UAAU,mBAClB,QAAQ,UAAU,sBACpB,cAAgB,SAAwB,GAAI,iBAAkB,OAAQ,CACxE,IAAI,eAAiB,MAAM,UAAU,MAAM,MAAM,GAAG,iBAAiB,qBAAqB,CAAC,EAC3F,OAAI,kBAAoB,QAAQ,KAAK,GAAI,qBAAqB,GAC5D,eAAe,QAAQ,EAAE,EAE3B,eAAiB,eAAe,OAAO,MAAM,EACtC,cACT,EACI,4BAA8B,SAA6C,KAAM,CACnF,OAAO,KAAK,kBAAoB,MAClC,EACI,WAAa,SAA4B,KAAM,CACjD,IAAI,YAAc,SAAS,KAAK,aAAa,UAAU,EAAG,EAAE,EAC5D,GAAI,CAAC,MAAM,WAAW,EACpB,OAAO,YAET,GAAI,4BAA4B,IAAI,EAClC,MAAO,GAET,IAAI,OACF,KAAK,WAAa,SAAW,KAAK,WAAa,SAAW,KAAK,WAAa,UAE9E,OADA,OAAS,QAAU,KAAK,aAAa,UAAU,IAAM,KACjD,OACK,EAEF,KAAK,QACd,EACI,eAAiB,SAAgCA,GAAG,EAAG,CACzD,OAAIA,GAAE,WAAa,EAAE,SACZA,GAAE,cAAgB,EAAE,cAEpBA,GAAE,SAAW,EAAE,QAE1B,EACI,YAAc,SAA6B,KAAM,CACnD,OAAO,KAAK,UAAY,OAC1B,EACI,kBAAoB,SAAmC,KAAM,CAC/D,OAAO,YAAY,IAAI,GAAK,KAAK,OAAS,QAC5C,EACI,yBAA2B,SAA0C,KAAM,CAC7E,IAAI,EAAI,KAAK,UAAY,UACrB,GAAK,MAAM,UAAU,MAAM,MAAM,KAAK,QAAQ,EAAE,KAAK,SAAU,MAAO,CACxE,OAAO,MAAM,UAAY,SAC3B,CAAC,EACD,OAAO,GAAK,EACd,EACI,mBAAqB,SAAoC,MAAO,KAAM,CACxE,QAAS,EAAI,EAAG,EAAI,MAAM,OAAQ,IAChC,GAAI,MAAM,CAAC,EAAE,SAAW,MAAM,CAAC,EAAE,OAAS,KACxC,OAAO,MAAM,CAAC,CAGpB,EACI,eAAiB,SAAgC,KAAM,CACzD,GAAI,CAAC,KAAK,KACR,MAAO,GAET,IAAI,WAAa,KAAK,MAAQ,KAAK,cAC/B,cAAgB,SAA+B,KAAM,CAEvD,OADa,WAAW,iBAAiB,6BAA+B,KAAO,IAAI,CAErF,EACI,SACJ,GACE,OAAO,OAAW,KAClB,OAAO,OAAO,IAAQ,KACtB,OAAO,OAAO,IAAI,QAAW,WAE7B,SAAW,cAAc,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,MAErD,IAAI,CACF,SAAW,cAAc,KAAK,IAAI,CACpC,OAAS,IAAK,CACZ,eAAQ,MAAM,KAAM,IAAI,OAAO,EACxB,EACT,CAEF,IAAI,QAAU,mBAAmB,SAAU,KAAK,IAAI,EACpD,MAAO,CAAC,SAAW,UAAY,IACjC,EACI,YAAc,SAA6B,KAAM,CACnD,OAAO,YAAY,IAAI,GAAK,KAAK,OAAS,OAC5C,EACI,uBAAyB,SAAwC,KAAM,CACzE,OAAO,YAAY,IAAI,GAAK,CAAC,eAAe,IAAI,CAClD,EACI,aAAe,SAA8B,KAAM,aAAc,CACnE,GAAI,iBAAiB,IAAI,EAAE,aAAe,SACxC,MAAO,GAET,IAAI,gBAAkB,QAAQ,KAAK,KAAM,+BAA+B,EACxE,GAAI,gBACF,IAAI,iBAAmB,KAAK,kBAE5B,KAAI,iBAAmB,KAGzB,GAAI,QAAQ,KAAK,iBAAkB,uBAAuB,EACxD,MAAO,GAET,GAAI,CAAC,cAAgB,eAAiB,OACpC,KAAO,MAAM,CACX,GAAI,iBAAiB,IAAI,EAAE,UAAY,OACrC,MAAO,GAET,KAAO,KAAK,aACd,SACS,eAAiB,gBAAiB,CAC3C,IAAI,sBAAwB,KAAK,sBAAsB,EACnD,MAAQ,sBAAsB,MAC9B,OAAS,sBAAsB,OACnC,OAAO,QAAU,GAAK,SAAW,CACnC,CACA,MAAO,EACT,EACI,wBAA0B,SAAyC,KAAM,CAC3E,GACE,YAAY,IAAI,GAChB,KAAK,UAAY,UACjB,KAAK,UAAY,YACjB,KAAK,UAAY,SAGjB,QADI,WAAa,KAAK,cACf,YAAY,CACjB,GAAI,WAAW,UAAY,YAAc,WAAW,SAAU,CAC5D,QAAS,EAAI,EAAG,EAAI,WAAW,SAAS,OAAQ,IAAK,CACnD,IAAI,MAAQ,WAAW,SAAS,KAAK,CAAC,EACtC,GAAI,MAAM,UAAY,SACpB,MAAI,OAAM,SAAS,IAAI,CAK3B,CACA,MAAO,EACT,CACA,WAAa,WAAW,aAC1B,CAEF,MAAO,EACT,EACI,iCAAmC,SACrC,QACA,KACA,CACA,MACE,OAAK,UACL,kBAAkB,IAAI,GACtB,aAAa,KAAM,QAAQ,YAAY,GACvC,yBAAyB,IAAI,GAC7B,wBAAwB,IAAI,EAKhC,EACI,mCAAqC,SACvC,QACA,KACA,CACA,MACE,GAAC,iCAAiC,QAAS,IAAI,GAC/C,uBAAuB,IAAI,GAC3B,WAAW,IAAI,EAAI,EAKvB,EACI,YAAc,SAA6B,GAAI,QAAS,CAC1D,QAAU,SAAW,CAAC,EACtB,IAAI,iBAAmB,CAAC,EACpB,iBAAmB,CAAC,EACpB,eAAiB,cACnB,GACA,QAAQ,iBACR,mCAAmC,KAAK,KAAM,OAAO,CACvD,EACA,eAAe,QAAQ,SAAU,cAAe,EAAG,CACjD,IAAI,sBAAwB,WAAW,aAAa,EAChD,wBAA0B,EAC5B,iBAAiB,KAAK,aAAa,EAEnC,iBAAiB,KAAK,CACpB,cAAe,EACf,SAAU,sBACV,KAAM,aACR,CAAC,CAEL,CAAC,EACD,IAAI,iBAAmB,iBACpB,KAAK,cAAc,EACnB,IAAI,SAAUA,GAAG,CAChB,OAAOA,GAAE,IACX,CAAC,EACA,OAAO,gBAAgB,EAC1B,OAAO,gBACT,EACI,2BAA6C,uBAC9C,OAAO,QAAQ,EACf,KAAK,GAAG,EACP,gBAAkB,SAAiC,KAAM,QAAS,CAEpE,GADA,QAAU,SAAW,CAAC,EAClB,CAAC,KACH,MAAM,IAAI,MAAM,kBAAkB,EAEpC,OAAI,QAAQ,KAAK,KAAM,0BAA0B,IAAM,GAC9C,GAEF,iCAAiC,QAAS,IAAI,CACvD,EAEA,SAAS,kBAAkB,OAAQ,eAAgB,CACjD,IAAI,KAAO,OAAO,KAAK,MAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAI,QAAU,OAAO,sBAAsB,MAAM,EAC7C,iBACF,QAAU,QAAQ,OAAO,SAAU,IAAK,CACtC,OAAO,OAAO,yBAAyB,OAAQ,GAAG,EAAE,UACtD,CAAC,GAEH,KAAK,KAAK,MAAM,KAAM,OAAO,CAC/B,CACA,OAAO,IACT,CACA,IAAI,wBAA0B,UAAY,CACxC,IAAI,UAAY,CAAC,EACjB,MAAO,CACL,gBAAiB,SAAyB,KAAM,CAC9C,IAAI,MAAQ,UAAU,QAAQ,IAAI,EAC9B,QAAU,IACZ,UAAU,OAAO,MAAO,CAAC,EAEvB,UAAU,OAAS,GACrB,UAAU,UAAU,OAAS,CAAC,EAAE,QAAQ,CAE5C,EACA,eAAgB,SAAwB,KAAM,CAC5C,GAAI,UAAU,OAAS,EAAG,CACxB,IAAI,OAAS,UAAU,UAAU,OAAS,CAAC,EACvC,SAAW,MACb,OAAO,MAAM,CAEjB,CACA,IAAI,MAAQ,UAAU,QAAQ,IAAI,EAC9B,QAAU,IAGZ,UAAU,OAAO,MAAO,CAAC,EACzB,UAAU,KAAK,IAAI,CAEvB,CACF,CACF,GAAG,EAEH,SAAS,sBAAsB,OAAQ,CACrC,QAAS,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,GAAI,UAAU,CAAC,GAAK,KAClB,IAAI,OAAS,UAAU,CAAC,MAExB,KAAI,OAAS,CAAC,EAEZ,EAAI,EACN,kBAAkB,OAAO,MAAM,EAAG,EAAI,EAAE,QAAQ,SAAU,IAAK,CAC7D,sBAAsB,OAAQ,IAAK,OAAO,GAAG,CAAC,CAChD,CAAC,EACQ,OAAO,0BAChB,OAAO,iBAAiB,OAAQ,OAAO,0BAA0B,MAAM,CAAC,EAExE,kBAAkB,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAU,IAAK,CACvD,OAAO,eAAe,OAAQ,IAAK,OAAO,yBAAyB,OAAQ,GAAG,CAAC,CACjF,CAAC,CAEL,CACA,OAAO,MACT,CAEA,SAAS,sBAAsB,IAAK,IAAK,MAAO,CAC9C,OAAI,OAAO,IACT,OAAO,eAAe,IAAK,IAAK,CAC9B,MACA,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAED,IAAI,GAAG,EAAI,MAEN,GACT,CAEA,IAAI,sBAAwB,SAAuC,KAAM,CACvE,OACE,KAAK,SAAW,KAAK,QAAQ,YAAY,IAAM,SAAW,OAAO,KAAK,QAAW,UAErF,EACI,kBAAoB,SAAmC,EAAG,CAC5D,OAAO,EAAE,MAAQ,UAAY,EAAE,MAAQ,OAAS,EAAE,UAAY,EAChE,EACI,eAAiB,SAAgC,EAAG,CACtD,OAAO,EAAE,MAAQ,OAAS,EAAE,UAAY,CAC1C,EACI,MAAQ,SAAuB,GAAI,CACrC,OAAO,WAAW,GAAI,CAAC,CACzB,EACI,UAAY,SAA2B,IAAK,GAAI,CAClD,IAAI,IAAM,GACV,WAAI,MAAM,SAAU,MAAO,EAAG,CAC5B,OAAI,GAAG,KAAK,GACV,IAAM,EACC,IAEF,EACT,CAAC,EACM,GACT,EACI,mBAAqB,SAAoC,MAAO,CAClE,QACM,KAAO,UAAU,OAAQ,OAAS,IAAI,MAAM,KAAO,EAAI,KAAO,EAAI,CAAC,EAAG,KAAO,EACjF,KAAO,KACP,OAEA,OAAO,KAAO,CAAC,EAAI,UAAU,IAAI,EAEnC,OAAI,OAAO,OAAU,WACZ,MAAM,MAAM,OAAQ,MAAM,EAE1B,KAEX,EACI,sBAAwB,SAAuC,SAAU,YAAa,CACxF,IAAI,IAAM,SACN,OAAS,sBACX,CACE,wBAAyB,GACzB,kBAAmB,GACnB,kBAAmB,EACrB,EACA,WACF,EACI,MAAQ,CACV,WAAY,CAAC,EACb,kBAAmB,CAAC,EACpB,4BAA6B,KAC7B,wBAAyB,KACzB,OAAQ,GACR,OAAQ,GACR,uBAAwB,MAC1B,EACI,KACA,gBAAkB,SACpB,sBACA,WACA,iBACA,CACA,OAAI,uBAAyB,sBAAsB,UAAU,IAAM,OAC1D,sBAAsB,UAAU,EAEhC,OAAO,kBAAoB,UAAU,CAEhD,EACI,wBAA0B,SAAyC,QAAS,CAC9E,OAAO,MAAM,WAAW,KAAK,SAAU,UAAW,CAChD,OAAO,UAAU,SAAS,OAAO,CACnC,CAAC,CACH,EACI,2BAA6B,SAA4C,WAAY,CACvF,IAAI,YAAc,OAAO,UAAU,EACnC,GAAI,CAAC,YACH,OAAO,KAET,IAAI,KAAO,YACX,GAAI,OAAO,aAAgB,WACzB,KAAO,IAAI,cAAc,WAAW,EAChC,CAAC,MACH,MAAM,IAAI,MAAM,IAAI,OAAO,WAAY,GAAG,CAAC,EAG/C,GAAI,OAAO,aAAgB,aACzB,KAAO,YAAY,EACf,CAAC,MACH,MAAM,IAAI,MAAM,IAAI,OAAO,WAAY,GAAG,CAAC,EAG/C,OAAO,IACT,EACI,8BAAgC,UAAiD,CACnF,IAAI,KACJ,GAAI,gBAAgB,CAAC,EAAG,cAAc,IAAM,GAC1C,MAAO,GAET,GAAI,2BAA2B,cAAc,IAAM,KACjD,KAAO,2BAA2B,cAAc,UACvC,wBAAwB,IAAI,aAAa,EAClD,KAAO,IAAI,kBACN,CACL,IAAI,yBAA2B,MAAM,kBAAkB,CAAC,EACpD,kBACF,0BAA4B,yBAAyB,kBACvD,KAAO,mBAAqB,2BAA2B,eAAe,CACxE,CACA,GAAI,CAAC,KACH,MAAM,IAAI,MAAM,8DAA8D,EAEhF,OAAO,IACT,EACI,0BAA4B,UAA6C,CAgB3E,GAfA,MAAM,kBAAoB,MAAM,WAC7B,IAAI,SAAU,UAAW,CACxB,IAAI,iBAAmB,YAAY,SAAS,EAC5C,GAAI,iBAAiB,OAAS,EAC5B,MAAO,CACL,UACA,kBAAmB,iBAAiB,CAAC,EACrC,iBAAkB,iBAAiB,iBAAiB,OAAS,CAAC,CAChE,CAGJ,CAAC,EACA,OAAO,SAAU,MAAO,CACvB,MAAO,CAAC,CAAC,KACX,CAAC,EACC,MAAM,kBAAkB,QAAU,GAAK,CAAC,2BAA2B,eAAe,EACpF,MAAM,IAAI,MACR,wGACF,CAEJ,EACI,gBAAkB,SAAS,wBAAwB,KAAM,CAC3D,GAAI,OAAS,IAGT,OAAS,IAAI,cAGjB,IAAI,CAAC,MAAQ,CAAC,KAAK,MAAO,CACxB,wBAAwB,8BAA8B,CAAC,EACvD,MACF,CACA,KAAK,MAAM,CACT,cAAe,CAAC,CAAC,OAAO,aAC1B,CAAC,EACD,MAAM,wBAA0B,KAC5B,sBAAsB,IAAI,GAC5B,KAAK,OAAO,EAEhB,EACI,uBAAyB,SAAwC,sBAAuB,CAC1F,IAAI,KAAO,2BAA2B,gBAAgB,EACtD,OAAO,MAAc,qBACvB,EACI,uBAAyB,SAAyC,EAAG,CACvE,GAAI,yBAAwB,EAAE,MAAM,EAGpC,IAAI,mBAAmB,OAAO,wBAAyB,CAAC,EAAG,CACzD,KAAK,WAAW,CACd,YAAa,OAAO,yBAA2B,CAAC,gBAAgB,EAAE,MAAM,CAC1E,CAAC,EACD,MACF,CACI,mBAAmB,OAAO,kBAAmB,CAAC,GAGlD,EAAE,eAAe,EACnB,EACI,mBAAqB,SAAoC,EAAG,CAC9D,IAAI,gBAAkB,wBAAwB,EAAE,MAAM,EAClD,iBAAmB,EAAE,kBAAkB,SACrC,kBACF,MAAM,wBAA0B,EAAE,SAGpC,EAAE,yBAAyB,EAC3B,gBAAgB,MAAM,yBAA2B,8BAA8B,CAAC,EAEpF,EACI,gBAAkB,SAAiC,EAAG,CACxD,0BAA0B,EAC1B,IAAI,gBAAkB,KACtB,GAAI,MAAM,kBAAkB,OAAS,EAAG,CACtC,IAAI,eAAiB,UAAU,MAAM,kBAAmB,SAAU,KAAM,CACtE,IAAI,UAAY,KAAK,UACrB,OAAO,UAAU,SAAS,EAAE,MAAM,CACpC,CAAC,EACD,GAAI,eAAiB,EACf,EAAE,SACJ,gBACE,MAAM,kBAAkB,MAAM,kBAAkB,OAAS,CAAC,EAAE,iBAE9D,gBAAkB,MAAM,kBAAkB,CAAC,EAAE,0BAEtC,EAAE,SAAU,CACrB,IAAI,kBAAoB,UAAU,MAAM,kBAAmB,SAAU,MAAO,CAC1E,IAAI,kBAAoB,MAAM,kBAC9B,OAAO,EAAE,SAAW,iBACtB,CAAC,EAOD,GALE,kBAAoB,GACpB,MAAM,kBAAkB,cAAc,EAAE,YAAc,EAAE,SAExD,kBAAoB,gBAElB,mBAAqB,EAAG,CAC1B,GAAI,oBAAsB,EACxB,IAAI,sBAAwB,MAAM,kBAAkB,OAAS,MAE7D,KAAI,sBAAwB,kBAAoB,EAElD,IAAI,iBAAmB,MAAM,kBAAkB,qBAAqB,EACpE,gBAAkB,iBAAiB,gBACrC,CACF,KAAO,CACL,IAAI,iBAAmB,UAAU,MAAM,kBAAmB,SAAU,MAAO,CACzE,IAAI,iBAAmB,MAAM,iBAC7B,OAAO,EAAE,SAAW,gBACtB,CAAC,EAOD,GALE,iBAAmB,GACnB,MAAM,kBAAkB,cAAc,EAAE,YAAc,EAAE,SAExD,iBAAmB,gBAEjB,kBAAoB,EAAG,CACzB,GAAI,mBAAqB,MAAM,kBAAkB,OAAS,EACxD,IAAI,uBAAyB,MAE7B,KAAI,uBAAyB,iBAAmB,EAElD,IAAI,kBAAoB,MAAM,kBAAkB,sBAAsB,EACtE,gBAAkB,kBAAkB,iBACtC,CACF,CACF,MACE,gBAAkB,2BAA2B,eAAe,EAE1D,kBACF,EAAE,eAAe,EACjB,gBAAgB,eAAe,EAEnC,EACI,SAAW,SAAmB,EAAG,CACnC,GAAI,kBAAkB,CAAC,GAAK,mBAAmB,OAAO,iBAAiB,IAAM,GAAO,CAClF,EAAE,eAAe,EACjB,KAAK,WAAW,EAChB,MACF,CACA,GAAI,eAAe,CAAC,EAAG,CACrB,gBAAgB,CAAC,EACjB,MACF,CACF,EACI,WAAa,SAAqB,EAAG,CACnC,mBAAmB,OAAO,wBAAyB,CAAC,GAGpD,wBAAwB,EAAE,MAAM,GAGhC,mBAAmB,OAAO,kBAAmB,CAAC,IAGlD,EAAE,eAAe,EACjB,EAAE,yBAAyB,EAC7B,EACI,aAAe,UAAyB,CAC1C,GAAK,MAAM,OAGX,8BAAuB,eAAe,IAAI,EAC1C,MAAM,uBAAyB,OAAO,kBAClC,MAAM,UAAY,CAChB,gBAAgB,8BAA8B,CAAC,CACjD,CAAC,EACD,gBAAgB,8BAA8B,CAAC,EACnD,IAAI,iBAAiB,UAAW,mBAAoB,EAAI,EACxD,IAAI,iBAAiB,YAAa,uBAAwB,CACxD,QAAS,GACT,QAAS,EACX,CAAC,EACD,IAAI,iBAAiB,aAAc,uBAAwB,CACzD,QAAS,GACT,QAAS,EACX,CAAC,EACD,IAAI,iBAAiB,QAAS,WAAY,CACxC,QAAS,GACT,QAAS,EACX,CAAC,EACD,IAAI,iBAAiB,UAAW,SAAU,CACxC,QAAS,GACT,QAAS,EACX,CAAC,EACM,IACT,EACI,gBAAkB,UAA4B,CAChD,GAAK,MAAM,OAGX,WAAI,oBAAoB,UAAW,mBAAoB,EAAI,EAC3D,IAAI,oBAAoB,YAAa,uBAAwB,EAAI,EACjE,IAAI,oBAAoB,aAAc,uBAAwB,EAAI,EAClE,IAAI,oBAAoB,QAAS,WAAY,EAAI,EACjD,IAAI,oBAAoB,UAAW,SAAU,EAAI,EAC1C,IACT,EACA,YAAO,CACL,SAAU,SAAkB,gBAAiB,CAC3C,GAAI,MAAM,OACR,OAAO,KAET,IAAI,WAAa,gBAAgB,gBAAiB,YAAY,EAC1D,eAAiB,gBAAgB,gBAAiB,gBAAgB,EAClE,kBAAoB,gBAAgB,gBAAiB,mBAAmB,EACvE,mBACH,0BAA0B,EAE5B,MAAM,OAAS,GACf,MAAM,OAAS,GACf,MAAM,4BAA8B,IAAI,cACpC,YACF,WAAW,EAEb,IAAI,iBAAmB,UAA6B,CAC9C,mBACF,0BAA0B,EAE5B,aAAa,EACT,gBACF,eAAe,CAEnB,EACA,OAAI,mBACF,kBAAkB,MAAM,WAAW,OAAO,CAAC,EAAE,KAAK,iBAAkB,gBAAgB,EAC7E,OAET,iBAAiB,EACV,KACT,EACA,WAAY,SAAoB,kBAAmB,CACjD,GAAI,CAAC,MAAM,OACT,OAAO,KAET,aAAa,MAAM,sBAAsB,EACzC,MAAM,uBAAyB,OAC/B,gBAAgB,EAChB,MAAM,OAAS,GACf,MAAM,OAAS,GACf,uBAAuB,gBAAgB,IAAI,EAC3C,IAAI,aAAe,gBAAgB,kBAAmB,cAAc,EAChE,iBAAmB,gBAAgB,kBAAmB,kBAAkB,EACxE,oBAAsB,gBAAgB,kBAAmB,qBAAqB,EAC9E,cACF,aAAa,EAEf,IAAI,YAAc,gBAChB,kBACA,cACA,yBACF,EACI,mBAAqB,UAA+B,CACtD,MAAM,UAAY,CACZ,aACF,gBAAgB,uBAAuB,MAAM,2BAA2B,CAAC,EAEvE,kBACF,iBAAiB,CAErB,CAAC,CACH,EACA,OAAI,aAAe,qBACjB,oBAAoB,uBAAuB,MAAM,2BAA2B,CAAC,EAAE,KAC7E,mBACA,kBACF,EACO,OAET,mBAAmB,EACZ,KACT,EACA,MAAO,UAAiB,CACtB,OAAI,MAAM,QAAU,CAAC,MAAM,OAClB,MAET,MAAM,OAAS,GACf,gBAAgB,EACT,KACT,EACA,QAAS,UAAmB,CAC1B,MAAI,CAAC,MAAM,QAAU,CAAC,MAAM,OACnB,MAET,MAAM,OAAS,GACf,0BAA0B,EAC1B,aAAa,EACN,KACT,EACA,wBAAyB,SAAiC,kBAAmB,CAC3E,IAAI,gBAAkB,CAAC,EAAE,OAAO,iBAAiB,EAAE,OAAO,OAAO,EACjE,aAAM,WAAa,gBAAgB,IAAI,SAAU,QAAS,CACxD,OAAO,OAAO,SAAY,SAAW,IAAI,cAAc,OAAO,EAAI,OACpE,CAAC,EACG,MAAM,QACR,0BAA0B,EAErB,IACT,CACF,EACA,KAAK,wBAAwB,QAAQ,EAC9B,IACT,EAEA,SAAS,yBAAyB,MAAO,WAAY,SAAU,CAC7D,IAAI,gBAAkB,GAClB,MAAM,KAAK,SAAS,iBAAiB,EAErC,WAAW,aAAa,SAAS,GACjC,WAAW,aAAa,SAAS,IAAM,MAAM,OAAO,YAEpD,gBAAkB,IAEX,MAAM,KAAK,SAAS,eAAe,GAAK,MAAM,SAAW,aAClE,gBAAkB,IAEhB,iBACF,SAAS,KAAK,CAElB,CAEA,MAAM,yBAAyB,WAAY,CACzC,aAAc,CACZ,MAAM,EACN,KAAK,SAAW,CACd,MAAO,KAAK,cAAc,yDAAyD,EACnF,OAAQ,KAAK,cAAc,QAAQ,EACnC,MAAO,KAAK,cAAc,IAAI,CAChC,EACA,KAAK,SAAS,OAAO,iBAAiB,QAAS,KAAK,aAAa,KAAK,IAAI,CAAC,EAC3E,KAAK,SAAS,OAAO,iBAAiB,WAAY,KAAK,cAAc,KAAK,IAAI,CAAC,EAC/E,KAAK,iBAAiB,QAAS,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAE/D,KAAK,iBAAiB,GAAG,EAAE,QAAS,MAClC,KAAK,iBAAiB,QAAS,KAAK,YAAY,KAAK,IAAI,CAAC,CAC5D,CACF,CAEA,WAAY,CACV,KAAK,SAAS,OAAO,aAAa,gBAAiB,OAAO,EAC1D,KAAK,SAAS,MAAM,aAAa,SAAU,EAAI,CACjD,CAEA,iBAAiB,MAAO,CAClB,MAAM,KAAK,YAAY,IAAM,WAEjC,KAAK,UAAU,EACf,KAAK,SAAS,OAAO,MAAM,EAC7B,CAEA,YAAY,MAAO,CACjB,MAAM,eAAe,EACrB,MAAM,KAAO,KAAK,cAAc,MAAM,EACtC,KAAK,SAAS,MAAM,MAAQ,MAAM,cAAc,QAAQ,MACpD,MAAM,KAAK,OAAO,CACxB,CAEA,cAAe,CACb,KAAK,SAAS,OAAO,MAAM,EAC3B,KAAK,SAAS,MAAM,gBAAgB,QAAQ,EAC5C,KAAK,SAAS,OAAO,aACnB,iBACC,KAAK,SAAS,OAAO,aAAa,eAAe,IAAM,SAAS,SAAS,CAC5E,CACF,CAEA,cAAc,MAAO,CACnB,MAAM,YAAc,MAAM,eAAiB,MAAM,cAAc,WAAa,UACxE,MAAM,gBAAkB,MAAQ,cAClC,KAAK,UAAU,CAEnB,CACF,CAEA,eAAe,OAAO,oBAAqB,gBAAgB,EAE3D,IAAI,sBAAwB,cAAc,iBAAkB,CAC1D,WAAW,oBAAqB,CAC9B,MAAO,CAAC,MAAM,CAChB,CACA,aAAc,CAUZ,GATA,MAAM,EACF,QAAQ,aACV,KAAK,WAAW,GAAG,yBAA2B,OAC5C,yBAAyB,MAAO,KAAM,IAAO,KAAK,KAAO,EAAK,CAChE,EACA,KAAK,WAAW,GAAG,2BAA6B,OAC9C,yBAAyB,MAAO,KAAM,IAAO,KAAK,KAAO,EAAM,CACjE,GAEE,KAAK,aAAa,eAAe,EAAG,CACtC,MAAM,aAAe,SAAS,eAAe,KAAK,EAAE,EACpD,KAAK,gBAAgB,eAAe,EAChC,cAAgB,eAAiB,MACnC,aAAa,YAAY,KAAK,UAAU,EAAI,CAAC,EAC7C,KAAK,OAAO,GAEZ,SAAS,KAAK,YAAY,IAAI,CAElC,CACF,CACA,mBAAoB,CAClB,KAAK,OAAO,GAAG,QAAS,qBAAsB,IAAO,KAAK,KAAO,EAAM,EACvE,KAAK,OAAO,GAAG,QAAS,wBAA0B,OAAU,CAC1D,MAAM,gBAAgB,EACtB,KAAK,KAAO,EACd,CAAC,CACH,CACA,IAAI,iBAAkB,CACpB,OAAO,KAAK,aAAa,MAAM,CACjC,CACA,IAAI,MAAO,CACT,OAAO,KAAK,aAAa,MAAM,CACjC,CACA,IAAI,KAAK,MAAO,CACV,OACD,UACC,MAAM,KAAK,MAAM,EACjB,KAAK,YACL,KAAK,aAAa,OAAQ,EAAE,MAG9B,KAAK,gBAAgB,MAAM,CAE/B,CACA,IAAI,iBAAkB,CACpB,MAAO,EACT,CACA,IAAI,yBAA0B,CAC5B,MAAO,CAAC,KAAK,aAAa,cAAc,GAAK,KAAK,aAAa,cAAc,IAAM,MACrF,CACA,IAAI,WAAY,CACd,OAAQ,KAAK,WACX,KAAK,YACL,sBAAsB,KAAM,CAC1B,cAAe,KACf,aAAc,KAAK,aAAa,wBAAwB,EACxD,wBAA0B,OACxB,EACE,MAAM,OAAO,aAAa,iBAAiB,GAC3C,MAAM,OAAO,aAAa,iBAAiB,IAAM,KAAK,IAE1D,kBAAoB,OAClB,MAAM,OAAO,aAAa,iBAAiB,GAC3C,MAAM,OAAO,aAAa,iBAAiB,IAAM,KAAK,GACxD,wBAAyB,KAAK,wBAC9B,aAAc,IAAO,KAAK,KAAO,GACjC,cAAe,EACjB,CAAC,CACL,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CACrC,OACD,SACC,SAAW,MAAQ,SAAW,IAC5B,KAAK,iBACP,WAAW,IAAM,KAAK,UAAU,SAAS,EAAG,GAAG,EAEjD,aAAa,KAAM,qBAAqB,GAC/B,SAAW,OAChB,KAAK,iBACP,KAAK,UAAU,WAAW,EAE5B,aAAa,KAAM,sBAAsB,GAGjD,CACA,MAAM,OAAQ,CACZ,GAAI,CAAC,KAAK,gBACR,OAEF,wBAAwB,KAAM,2BAA2B,EACzD,MAAM,gBAAkB,MAAM,MAAM,KAAK,aAAa,MAAM,CAAC,EACvD,cAAgB,SAAS,cAAc,KAAK,EAClD,cAAc,UAAY,MAAM,gBAAgB,KAAK,EACrD,KAAK,UAAY,cAAc,cAAc,KAAK,QAAQ,YAAY,CAAC,EAAE,UACzE,KAAK,gBAAgB,MAAM,EAC3B,wBAAwB,KAAM,yBAAyB,CACzD,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,qBAAqB,EAEpE,OAAO,iBAAiB,WAAa,OAAU,CACzC,MAAM,WACR,SAAS,iBAAiB,QAAQ,EAAE,QAAS,IAAO,CAC9C,cAAc,wBAChB,GAAG,KAAO,GAEd,CAAC,CAEL,CAAC,EAED,IAAI,yBAA2B,cAAc,qBAAsB,CACjE,aAAc,CACZ,MAAM,EACN,KAAK,qBAAuB,KAAK,KACjC,KAAK,iBAAiB,uBAAwB,IAAO,KAAK,KAAO,EAAK,EACtE,KAAK,iBAAiB,yBAA0B,IAAO,KAAK,KAAO,EAAM,CAC3E,CACA,IAAI,cAAe,CACjB,OAAO,KAAK,aAAa,eAAe,CAC1C,CACA,yBAAyB,KAAM,CAC7B,GAAI,KAAK,qBACP,OAAQ,KAAK,qBAAuB,GAEtC,GAAQ,OACD,OADO,CAEV,KAAK,MAAM,SAAW,SACtB,MAAM,UAAY,CAChB,OAAQ,CAAC,MAAO,GAAG,KAAK,YAAY,IAAI,EACxC,WAAY,CAAC,SAAU,SAAS,CAClC,EACI,KAAK,eACP,UAAU,QAAa,KAAK,KAAO,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,CAAC,GAEnD,KAAK,QAAQ,UAAW,CACtB,SAAU,IACV,UAAW,KAAK,KAAO,SAAW,UAClC,OAAQ,iCACV,CAAC,EAAE,SAAW,IAAM,CAClB,KAAK,MAAM,SAAW,KAAK,KAAO,UAAY,QAChD,EACI,KAAK,cAAgB,KAAK,MAC5B,KAAK,QACH,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,iCACV,CACF,EAEF,IAAI,SAAW,GACX,KAAK,KACP,SAAW,sBAEX,SAAW,uBAEb,aAAa,KAAM,QAAQ,CAC/B,CACF,CACF,EACA,OAAO,eAAe,OAAO,wBAAyB,wBAAwB,EAE9E,IAAI,0BAA4B,cAAc,qBAAsB,CAClE,aAAc,CACZ,MAAM,EACN,KAAK,qBAAuB,KAAK,KACjC,KAAK,iBAAiB,uBAAwB,IAAO,KAAK,KAAO,EAAK,EACtE,KAAK,iBAAiB,yBAA0B,IAAO,KAAK,KAAO,EAAM,CAC3E,CACA,IAAI,cAAe,CACjB,OAAO,KAAK,aAAa,eAAe,CAC1C,CACA,yBAAyB,KAAM,CAC7B,GAAI,KAAK,qBACP,OAAQ,KAAK,qBAAuB,GAEtC,GAAQ,OACD,OADO,CAEV,KAAK,MAAM,SAAW,SACtB,MAAM,UAAY,CAChB,OAAQ,CAAC,MAAO,GAAG,KAAK,YAAY,IAAI,EACxC,WAAY,CAAC,SAAU,SAAS,CAClC,EACI,KAAK,eACP,UAAU,QAAa,KAAK,KAAO,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,CAAC,GAEnD,KAAK,QAAQ,UAAW,CACtB,SAAU,IACV,UAAW,KAAK,KAAO,SAAW,UAClC,OAAQ,iCACV,CAAC,EAAE,SAAW,IAAM,CAClB,KAAK,MAAM,SAAW,KAAK,KAAO,UAAY,QAChD,EACI,KAAK,cAAgB,KAAK,MAC5B,KAAK,QACH,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,iCACV,CACF,EAEF,IAAI,SAAW,GACX,KAAK,KACP,SAAW,sBAEX,SAAW,uBAEb,aAAa,KAAM,QAAQ,CAC/B,CACF,CACF,EACA,OAAO,eAAe,OAAO,0BAA2B,yBAAyB,EAEjF,IAAI,oBAAsB,cAAc,iBAAkB,CACxD,mBAAoB,CAClB,KAAK,iBAAiB,QAAU,OAAU,CAErC,OAAO,QAAQ,KAAK,aAAa,cAAc,GAAK,mCAAmC,GAExF,MAAM,eAAe,CAEzB,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,oBAAqB,CAClE,QAAS,QACX,CAAC,EAED,IAAI,wBAA0B,CAC5B,gBAAiB,CACf,KAAK,gBAAkB,KAAK,UAC5B,KAAK,wBAA0B,KAC/B,KAAK,UAAY;AAAA,2CACoB,KAAK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASnD,KAAK,eAAiB,KAAK,iBAC3B,KAAK,YAAc,KAAK,kBACxB,OAAO,iBAAiB,WAAY,IAAM,KAAK,gBAAgB,aAAa,CAAC,CAC/E,EACA,kBAAmB,CACjB,MAAM,cAAgB,KAAK,YAAY,QACrC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,gBAAiB,mBAAmB,CAClD,EACA,CACE,SAAU,GACV,OAAQ,OACR,KAAM,UACR,CACF,EACA,KAAK,eAAe,OAAS,GAC7B,MAAM,iBAAmB,KAAK,eAAe,QAC3C,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,sBAAuB,uBAAuB,CAC5D,EACA,CACE,SAAU,GACV,MAAO,GACP,OAAQ,OACR,KAAM,UACR,CACF,EACA,KAAK,wBAA0B,QAAQ,IAAI,CACzC,IAAI,QAAS,SAAa,cAAc,SAAW,IAAM,QAAQ,CAAE,EACnE,IAAI,QAAS,SAAa,iBAAiB,SAAW,IAAM,QAAQ,CAAE,CACxE,CAAC,CACH,EACA,MAAM,gBAAiB,CAChB,KAAK,0BAGV,MAAM,KAAK,wBACX,KAAK,eAAe,QAClB,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,wBAAyB,wBAAwB,CAC/D,EACA,CACE,SAAU,GACV,MAAO,IACP,OAAQ,OACR,KAAM,UACR,CACF,EAAE,SAAW,IAAO,KAAK,eAAe,OAAS,GACjD,KAAK,YAAY,QACf,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,GACV,MAAO,IACP,OAAQ,OACR,KAAM,UACR,CACF,EACA,KAAK,wBAA0B,KACjC,CACF,EAEI,mBAAqB,cAAc,iBAAkB,CACvD,WAAW,oBAAqB,CAC9B,MAAO,CAAC,aAAa,CACvB,CACA,aAAc,CACZ,MAAM,EACN,KAAK,iBAAiB,QAAU,OAAU,CAEtC,KAAK,OAAS,UACd,KAAK,MACL,KAAK,KAAK,cAAc,GACxB,CAAC,KAAK,KAAK,aAAa,IAAI,IAExB,iCAAiC,KAAK,UAAU,SAAS,GAC3D,MAAM,eAAe,EACrB,KAAK,aAAa,cAAe,MAAM,EACvC,WAAW,IAAM,KAAK,KAAK,OAAO,EAAG,GAAG,GAExC,KAAK,aAAa,cAAe,MAAM,EAG7C,CAAC,CACH,CACA,mBAAoB,CAClB,KAAK,eAAe,EAChB,SAAS,eAAe,wBAAwB,GAClD,SACG,eAAe,wBAAwB,EACvC,iBAAiB,SAAU,SAAU,MAAO,CAEvC,SAAS,eAAe,wBAAwB,EAAE,QACpD,SAAS,eAAe,aAAa,EAAE,gBAAgB,UAAU,EAEjE,SAAS,eAAe,aAAa,EAAE,aAAa,WAAY,UAAU,CAE9E,CAAC,CAEP,CACA,sBAAuB,CACrB,KAAK,UAAY,KAAK,eACxB,CACA,yBAAyB,SAAU,OAAQ,OAAQ,CAC7C,WAAa,gBACX,SAAW,OACb,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAG1B,CACF,EACA,OAAO,OAAO,mBAAmB,UAAW,uBAAuB,EACnE,OAAO,eAAe,OAAO,gBAAiB,mBAAoB,CAChE,QAAS,QACX,CAAC,EAED,IAAI,iBAAmB,cAAc,iBAAkB,CACrD,mBAAoB,CACd,KAAK,aAAa,MAAM,GAC1B,KAAK,OAAO,GAAG,QAAS,IAAK,KAAK,eAAe,KAAK,IAAI,CAAC,CAE/D,CACA,eAAe,MAAO,OAAQ,CAC5B,MAAM,eAAe,EACrB,MAAMC,KAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EACxCA,KAAI,aAAa,IAAI,OAAQ,OAAO,aAAa,WAAW,CAAC,EAC7D,aAAa,KAAM,0BAA2B,CAC5C,IAAKA,KAAI,SAAS,CACpB,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,gBAAgB,EAElE,IAAI,eAAiB,cAAc,iBAAkB,CACnD,WAAW,oBAAqB,CAC9B,MAAO,CAAC,mBAAoB,aAAa,CAC3C,CACA,aAAc,CACZ,MAAM,EACF,KAAK,aAAa,QAAQ,GAC5B,KAAK,eAAe,EAEtB,KAAK,iBAAiB,QAAS,KAAK,eAAe,KAAK,IAAI,CAAC,EAC7D,KAAK,WAAa,IAAI,aAAa,SAAS,eAAe,CAC7D,CACA,gBAAiB,CACf,KAAK,eAAiB,CAAC,KAAK,cAC9B,CACA,mBAAoB,CAClB,SAAS,iBAAiB,uBAAyB,OAAU,CACvD,KAAK,0BAA4B,MAAM,SACzC,KAAK,eAAiB,GACtB,MAAM,gBAAgB,EAE1B,CAAC,EACD,SAAS,iBAAiB,sBAAwB,OAAU,CACtD,KAAK,0BAA4B,MAAM,SACzC,KAAK,eAAiB,GACtB,MAAM,gBAAgB,EAE1B,CAAC,EACD,KAAK,WAAW,GACd,4BACA,IAAI,KAAK,aAAa,iBAAiB,CAAC,GACxC,IAAM,CACA,KAAK,UAAU,SAAS,QAAQ,EAClC,KAAK,aAAa,cAAe,MAAM,EAC9B,KAAK,eAAiB,MAC/B,aAAa,SAAS,gBAAiB,qBAAqB,CAEhE,EACA,EACF,EACA,KAAK,WAAW,GACd,0BACA,IAAI,KAAK,aAAa,iBAAiB,CAAC,GACxC,IAAM,CACA,KAAK,UAAU,SAAS,QAAQ,EAClC,KAAK,gBAAgB,aAAa,EACzB,KAAK,eAAiB,MAC/B,aAAa,SAAS,gBAAiB,mBAAmB,CAE9D,EACA,EACF,CACF,CACA,sBAAuB,CACrB,KAAK,WAAW,QAAQ,CAC1B,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,aAAa,kBAAkB,IAAM,MACnD,CACA,IAAI,eAAe,MAAO,CACxB,IAAI,IAAM,QACN,QACF,IAAM,QAER,KAAK,aAAa,mBAAoB,GAAG,CAC3C,CACA,IAAI,yBAA0B,CAC5B,OAAO,SAAS,eAAe,KAAK,aAAa,iBAAiB,CAAC,CACrE,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,OAAQ,KAAM,CACZ,IAAK,mBACC,SAAW,SAAW,SAAW,OACnC,KAAK,wBAAwB,KAAO,GAC3B,SAAW,QAAU,SAAW,UACzC,KAAK,wBAAwB,KAAO,IAEtC,MACF,IAAK,cACC,KAAK,aAAa,QAAQ,IACxB,SAAW,OACb,KAAK,iBAAiB,EAEtB,KAAK,eAAe,GAGxB,KACJ,CACF,CACF,EACA,OAAO,OAAO,eAAe,UAAW,uBAAuB,EAC/D,OAAO,eAAe,OAAO,gBAAiB,eAAgB,CAC5D,QAAS,QACX,CAAC,EAED,IAAI,aAAe,cAAc,iBAAkB,CACjD,WAAW,oBAAqB,CAC9B,MAAO,CAAC,kBAAkB,CAC5B,CACA,aAAc,CACZ,MAAM,EACN,KAAK,iBAAiB,QAAU,OAAU,CACxC,MAAM,eAAe,EACrB,KAAK,eAAiB,CAAC,KAAK,cAC9B,CAAC,EACD,KAAK,WAAa,IAAI,aAAa,SAAS,eAAe,CAC7D,CACA,mBAAoB,CAClB,KAAK,WAAW,GACd,uBACA,IAAI,KAAK,aAAa,iBAAiB,CAAC,GACvC,OAAU,CACL,KAAK,0BAA4B,MAAM,SACzC,KAAK,eAAiB,GAE1B,EACA,EACF,EACA,KAAK,WAAW,GACd,sBACA,IAAI,KAAK,aAAa,iBAAiB,CAAC,GACvC,OAAU,CACL,KAAK,0BAA4B,MAAM,SACzC,KAAK,eAAiB,GAE1B,EACA,EACF,CACF,CACA,sBAAuB,CACrB,KAAK,WAAW,QAAQ,CAC1B,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,aAAa,kBAAkB,IAAM,MACnD,CACA,IAAI,eAAe,MAAO,CACxB,KAAK,aAAa,mBAAoB,MAAQ,OAAS,OAAO,CAChE,CACA,IAAI,yBAA0B,CAC5B,OAAO,SAAS,cAAc,IAAI,KAAK,aAAa,iBAAiB,CAAC,EAAE,CAC1E,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CACrC,OACD,qBACC,SAAW,SAAW,SAAW,OACnC,KAAK,wBAAwB,KAAO,GAC3B,SAAW,QAAU,SAAW,UACzC,KAAK,wBAAwB,KAAO,IAG5C,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,aAAc,CAC1D,QAAS,GACX,CAAC,EAED,IAAI,WAAa,cAAc,iBAAkB,CAC/C,mBAAoB,CAClB,KAAK,QAAU,MAAM,KAAK,KAAK,iBAAiB,QAAQ,CAAC,EACzD,KAAK,OAAO,GAAG,QAAS,SAAU,CAAC,MAAO,SAAW,CACnD,KAAK,eAAe,KAAK,QAAQ,QAAQ,MAAM,CAAC,CAClD,CAAC,EACG,KAAK,aAAa,iBAAiB,GACrC,KAAK,OAAO,GAAG,eAAiB,OAAU,CACpC,MAAM,YAAc,GACtB,KAAK,gBACF,KAAK,cAAgB,EAAI,KAAK,QAAQ,QAAU,KAAK,QAAQ,MAChE,CAEJ,CAAC,CAEL,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAQ,UAAW,QAAW,OAAO,aAAa,gBAAgB,IAAM,MAAM,CAC5F,CACA,IAAI,cAAc,cAAe,CAI/B,GAHA,KAAK,QAAQ,QAAQ,CAAC,OAAQ,QAC5B,OAAO,aAAa,iBAAkB,gBAAkB,MAAQ,OAAS,OAAO,CAClF,EACI,KAAK,aAAa,kBAAkB,EAAG,CACzC,MAAM,gBAAkB,OAAO,WAAa,EAEtC,eADe,KAAK,QAAQ,aAAa,EACX,sBAAsB,EACpD,kBAAoB,KAAK,8BAA8B,KAAK,aAAa,EAC/E,GAAI,kBAAmB,CACrB,IAAI,KACF,kBAAkB,YACjB,eAAe,KAAO,iBACvB,eAAe,MAAQ,EAEzB,kBAAkB,SAAS,CACzB,SAFa,SAGb,IACF,CAAC,CACH,CACF,CACF,CACA,eAAe,MAAO,CAChB,QAAU,KAAK,eACjB,KAAK,cACH,IAAI,YAAY,sBAAuB,CACrC,QAAS,GACT,OAAQ,CACN,KACF,CACF,CAAC,CACH,CAEJ,CACA,8BAA8B,KAAM,MAAQ,EAAG,CAC7C,OAAI,OAAS,MAAQ,MAAQ,EACpB,KAEL,KAAK,YAAc,KAAK,YACnB,KAEA,KAAK,8BAA8B,KAAK,cAAe,MAAQ,CAAC,CAE3E,CACF,EACA,OAAO,eAAe,OAAO,cAAe,UAAU,EAEtD,IAAI,sBAAwB,cAAc,WAAY,CACpD,mBAAoB,CAClB,KAAK,WAAa,KAAK,cAAc,sBAAsB,EAC3D,KAAK,WAAa,KAAK,cAAc,qBAAqB,EAC1D,KAAK,WAAW,iBAAiB,QAAS,IACxC,KAAK,WAAW,cACd,IAAI,YAAY,mBAAoB,CAClC,QAAS,EACX,CAAC,CACH,CACF,EACA,KAAK,WAAW,iBAAiB,QAAS,IACxC,KAAK,WAAW,cACd,IAAI,YAAY,mBAAoB,CAClC,QAAS,EACX,CAAC,CACH,CACF,CACF,CACA,IAAI,eAAe,MAAO,CACxB,KAAK,WAAW,SAAW,KAC7B,CACA,IAAI,eAAe,MAAO,CACxB,KAAK,WAAW,SAAW,KAC7B,CACF,EACI,aAAe,cAAc,iBAAkB,CACjD,mBAAoB,CAClB,KAAK,iBAAiB,QAAS,IAC7B,KAAK,cACH,IAAI,YAAY,mBAAoB,CAClC,QAAS,EACX,CAAC,CACH,CACF,CACF,CACF,EACI,aAAe,cAAc,iBAAkB,CACjD,mBAAoB,CAClB,KAAK,iBAAiB,QAAS,IAC7B,KAAK,cACH,IAAI,YAAY,mBAAoB,CAClC,QAAS,EACX,CAAC,CACH,CACF,CACF,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,qBAAqB,EACxE,OAAO,eAAe,OAAO,gBAAiB,aAAc,CAC1D,QAAS,QACX,CAAC,EACD,OAAO,eAAe,OAAO,gBAAiB,aAAc,CAC1D,QAAS,QACX,CAAC,EAED,SAAS,6BAA8B,CACrC,MAAM,eAAiB,iBAAiB,SAAS,eAAe,EAChE,OACE,SAAS,eAAe,iBAAiB,iBAAiB,GAAK,CAAC,EAC9D,SAAS,eAAe,iBAAiB,wBAAwB,GAAK,CAAC,EACzE,SAAS,eAAe,iBAAiB,6BAA6B,GAAK,CAAC,EAC1E,SAAS,eAAe,iBAAiB,oCAAoC,GAAK,CAAC,CAEzF,CAEA,IAAI,aAAe,cAAc,WAAY,CAC3C,mBAAoB,CAClB,KAAK,WAAa,OAAO,QACzB,KAAK,WAAa,EAClB,KAAK,cAAgB,GACrB,OAAO,iBAAiB,SAAU,KAAK,eAAe,KAAK,IAAI,CAAC,CAClE,CACA,IAAI,kBAAmB,CACrB,OAAO,4BAA4B,GAAK,SAAS,KAAK,aAAa,QAAQ,CAAC,GAAK,EACnF,CACA,gBAAiB,CACX,KAAK,gBAGT,KAAK,cAAgB,GACrB,sBAAsB,IAAM,CAE1B,IAAI,OADS,KAAK,sBAAsB,EACpB,IAAM,OAAO,QAAU,KAAK,UAAY,KAAK,iBAC7D,OAAS,KAAK,aAAe,OAAO,YACpC,OAAO,QAAU,KAAK,WACxB,KAAK,YAAc,OAAO,QAAU,KAAK,WAEzC,KAAK,YAAc,KAAK,WAAa,OAAO,QAE9C,KAAK,WAAa,KAAK,IACrB,KAAK,IAAI,KAAK,WAAY,CAAC,MAAM,EACjC,OACA,KAAK,gBACP,EACA,KAAK,WAAa,OAAO,QACzB,KAAK,MAAM,IAAM,GAAG,KAAK,UAAU,KACnC,KAAK,cAAgB,EACvB,CAAC,EACH,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,YAAY,EAE1D,SAAS,SAAS,SAAU,OAAS,GAAI,CACvC,IAAI,gBAAkB,KACpB,YAAc,KAChB,MAAM,sBAAyB,OAAU,CACvC,YAAc,MACY,CAAC,kBAEzB,SAAS,WAAW,EACpB,YAAc,KACd,gBAAkB,WAAW,IAAM,CACjC,gBAAkB,KACd,aACF,sBAAsB,WAAW,CAErC,EAAG,MAAM,EAEb,EACA,OAAO,qBACT,CAwFA,IAAI,gBAAkB,KAAM,CAC1B,YAAY,cAAe,CACzB,KAAK,eAAiB,SAAS,IAC7B,KAAK,cAAc,cAAe,iBAAiB,aAAa,CAAC,CACnE,EACA,KAAK,eAAiB,IAAI,eAAe,KAAK,eAAe,KAAK,IAAI,CAAC,CACzE,CACA,aAAa,QAAS,CAChB,KAAK,SACP,KAAK,YAAY,EAEf,UACF,QAAQ,iBAAiB,SAAU,KAAK,cAAc,EACtD,KAAK,eAAe,QAAQ,OAAO,EACnC,KAAK,QAAU,QAEnB,CACA,aAAc,CACZ,GAAI,KAAK,QACP,KAAK,QAAQ,oBAAoB,SAAU,KAAK,cAAc,EAC9D,KAAK,eAAe,UAAU,KAAK,OAAO,EAC1C,KAAK,QAAU,SAEf,OAEJ,CACA,cAAc,cAAe,MAAO,CAClC,GAAI,KAAK,QAAS,CAChB,MAAM,QAAU,MAAM,iBAAiB,wBAAwB,EAC3D,SAAS,MAAM,iBAAiB,wBAAwB,CAAC,EACzD,EACE,OAAS,CACb,IAAK,KAAK,IAAI,KAAK,QAAQ,UAAW,CAAC,EACvC,OAAQ,KAAK,IACX,KAAK,QAAQ,aAAe,KAAK,QAAQ,aAAe,KAAK,QAAQ,UACrE,CACF,EACA,KAAM,KAAK,IAAI,KAAK,QAAQ,WAAY,CAAC,EACzC,MAAO,KAAK,IACV,KAAK,QAAQ,YAAc,KAAK,QAAQ,YAAc,KAAK,QAAQ,WACnE,CACF,CACF,EACA,sBAAsB,IAAM,CAC1B,UAAW,WAAY,CAAC,MAAO,SAAU,OAAQ,OAAO,EACtD,cAAc,MAAM,YAClB,KAAK,QAAQ,GACb,GAAG,OAAO,QAAQ,EAAI,QAAU,QAAU,OAAO,QAAQ,CAAC,IAC5D,CAEJ,CAAC,CACH,KACE,OAEJ,CACF,EACI,eAAiB,cAAc,WAAY,CAC7C,aAAc,CACZ,MAAM,EACN,KAAK,aAAa,CAChB,KAAM,MACR,CAAC,EAAE,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgCf,KAAK,QAAU,IAAI,gBAAgB,KAAK,WAAW,gBAAgB,CACrE,CACA,mBAAoB,CAClB,KAAK,WAAW,cAAc,MAAM,EAAE,iBAAiB,aAAc,IAAM,KAAK,MAAM,CAAC,EACvF,KAAK,MAAM,CACb,CACA,sBAAuB,CACrB,KAAK,QAAQ,YAAY,CAC3B,CACA,OAAQ,CACN,KAAK,QAAQ,aAAa,KAAK,iBAAiB,CAClD,CACF,EACI,mBAAoB,QACtB,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAGhE,IAAI,sBAAwB,cAAc,cAAe,CACvD,gBAAiB,CACf,GAAI,OAAO,WAAW,OAAO,eAAe,YAAY,KAAK,EAAE,SAAW,UAAU,MAAO,CACzF,GAAI,KAAK,aAAa,aAAa,EAAG,CACpC,IAAIC,OAAQ,KAAK,aAAa,aAAa,CAC7C,KAAO,CACL,IAAIA,OAAQ,SAAS,KACvB,CACA,GAAI,KAAK,aAAa,WAAW,EAAG,CAClC,IAAID,KAAM,KAAK,aAAa,WAAW,CACzC,KAAO,CACL,IAAIA,KAAM,OAAO,SAAS,IAC5B,CACA,UAAU,MAAM,CACd,MACA,GACF,CAAC,CACH,MACE,MAAM,eAAe,CAEzB,CACF,EACA,OAAO,eAAe,OAAO,uBAAwB,sBAAuB,CAC1E,QAAS,QACX,CAAC,EAED,IAAI,WAAa,cAAc,iBAAkB,CAC/C,mBAAoB,CAClB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,kBAAkB,CAAC,EACjE,KAAK,iBAAmB,MAAM,KAAK,KAAK,iBAAiB,aAAa,CAAC,EACvE,KAAK,wBAA0B,MAAM,KAAK,KAAK,iBAAiB,oBAAoB,CAAC,EACjF,KAAK,MAAM,OAAS,IACtB,KAAK,iBAAiB,mBAAoB,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAC1E,KAAK,iBAAiB,mBAAoB,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAC1E,KAAK,iBAAiB,sBAAwB,OAC5C,KAAK,OAAO,MAAM,OAAO,MAAO,EAAI,CACtC,EACI,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,OAC7C,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,CACpD,GAGJ,MAAM,gBAAkB,KAAK,MAAM,CAAC,EAAE,cACtC,IAAI,WAAa,GAAG,gBAAgB,YAAY,SAChD,KAAK,qBAAuB,IAAI,qBAAqB,KAAK,qBAAqB,KAAK,IAAI,EAAG,CACzF,KAAM,gBACN,WACA,UAAW,EACb,CAAC,EACD,KAAK,MAAM,QAAS,MAAS,KAAK,qBAAqB,QAAQ,IAAI,CAAC,CACtE,CACA,sBAAuB,CACrB,MAAM,qBAAqB,EAC3B,KAAK,qBAAqB,WAAW,CACvC,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,MAAM,UAAW,MAAS,KAAK,QAAQ,CACrD,CACA,iBAAiB,UAAY,GAAM,CACjC,KAAK,OAAO,KAAK,IAAI,KAAK,cAAgB,EAAG,CAAC,EAAG,SAAS,CAC5D,CACA,iBAAiB,UAAY,GAAM,CACjC,KAAK,OAAO,KAAK,IAAI,KAAK,cAAgB,EAAG,KAAK,MAAM,OAAS,CAAC,EAAG,SAAS,CAChF,CACA,OAAO,MAAO,UAAY,GAAM,CAC9B,MAAM,WAAa,KAAK,IAAI,EAAG,KAAK,IAAI,MAAO,KAAK,MAAM,MAAM,CAAC,EAC3D,gBAAkB,KAAK,MAAM,UAAU,EAC7C,KAAK,2BAA2B,eAAe,EAC3C,YACF,KAAK,MAAM,QAAS,MAAS,KAAK,qBAAqB,UAAU,IAAI,CAAC,EACtE,YAAY,IAAM,CAChB,KAAK,MAAM,QAAS,MAAS,KAAK,qBAAqB,QAAQ,IAAI,CAAC,CACtE,EAAG,GAAG,GAER,KAAK,MAAM,QAAQ,CAAC,KAAM,YAAe,KAAK,SAAW,YAAc,UAAW,EAClF,MAAM,UAAY,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC3E,gBAAgB,cAAc,SAAS,CACrC,KAAM,WAAa,gBAAgB,YAAc,YACjD,SAAU,UAAY,SAAW,MACnC,CAAC,CACH,CACA,2BAA2B,gBAAiB,CAC1C,KAAK,MAAM,QAAS,MAAU,KAAK,SAAW,kBAAoB,IAAK,EACvE,KAAK,iBAAiB,QAAS,SAAa,QAAQ,cAAgB,gBAAgB,KAAM,EAC1F,KAAK,wBAAwB,QAAS,gBAAmB,CACvD,eAAe,eAAiB,gBAAgB,QAAU,EAC1D,eAAe,eAAiB,gBAAgB,QAAU,KAAK,MAAM,OAAS,CAChF,CAAC,CACH,CACA,qBAAqB,QAAS,CAC5B,QAAS,SAAS,QAChB,GAAI,MAAM,eAAgB,CACxB,KAAK,2BAA2B,MAAM,MAAM,EAC5C,KACF,CAEJ,CACF,EACI,eAAiB,cAAc,iBAAkB,CACnD,WAAW,oBAAqB,CAC9B,MAAO,CAAC,QAAQ,CAClB,CACA,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,IAAI,SAAS,MAAO,CAClB,KAAK,OAAS,CAAC,KACjB,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,cAAc,EAC/D,OAAO,eAAe,OAAO,cAAe,UAAU,EAEtD,IAAI,eAAiB,cAAc,WAAY,CAC7C,mBAAoB,CAClB,KAAK,kBAAoB,KAAK,cAC9B,KAAK,kBAAkB,iBAAiB,aAAc,KAAK,cAAc,KAAK,IAAI,CAAC,EACnF,KAAK,kBAAkB,iBAAiB,YAAa,KAAK,kBAAkB,KAAK,IAAI,CAAC,EACtF,KAAK,kBAAkB,iBAAiB,aAAc,KAAK,cAAc,KAAK,IAAI,CAAC,EACnF,KAAK,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA,KAMnB,CACA,cAAc,MAAO,CACnB,KAAK,gBAAgB,QAAQ,EAC7B,KAAK,gBAAgB,KAAK,CAC5B,CACA,eAAgB,CACd,KAAK,aAAa,SAAU,EAAE,CAChC,CACA,kBAAkB,MAAO,CACvB,KAAK,gBACH,SACA,MAAM,OAAO,UAAY,UAAY,MAAM,OAAO,UAAY,GAChE,EACA,KAAK,gBAAgB,KAAK,CAC5B,CACA,gBAAgB,MAAO,CACrB,MAAM,oBAAsB,KAAK,kBAAkB,sBAAsB,EACnE,EAAI,MAAM,QAAU,oBAAoB,EACxC,EAAI,MAAM,QAAU,oBAAoB,EAC9C,KAAK,MAAM,UAAY,aAAa,EAAI,KAAK,YAAc,CAAC,OAC1D,EAAI,KAAK,aAAe,CAC1B,KACF,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,oBAAsB,cAAc,iBAAkB,CACxD,mBAAoB,CACd,KAAK,WACP,KAAK,cAAc,EAErB,KAAK,eAAe,EACpB,OAAO,iBAAiB,SAAU,KAAK,eAAe,KAAK,IAAI,CAAC,EAChE,KAAK,iBAAiB,SAAU,SAAS,KAAK,sBAAsB,KAAK,IAAI,EAAG,EAAE,CAAC,CACrF,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,WAAW,CACtC,CACA,eAAgB,CACd,KAAK,mBACH,WACA,2EACF,EACA,MAAM,WAAa,WAAW,eAAe,EAC7C,WAAW,YAAY,KAAK,gBAAgB,KAAK,IAAI,CAAC,EACjD,WAAW,SACd,KAAK,4BAA4B,CAErC,CACA,6BAA8B,CAC5B,KAAK,OAAO,GAAG,YAAa,KAAK,kBAAkB,KAAK,IAAI,CAAC,EAC7D,KAAK,OAAO,GAAG,YAAa,KAAK,kBAAkB,KAAK,IAAI,CAAC,EAC7D,KAAK,OAAO,GAAG,UAAW,KAAK,gBAAgB,KAAK,IAAI,CAAC,CAC3D,CACA,6BAA8B,CAC5B,KAAK,OAAO,IAAI,WAAW,EAC3B,KAAK,OAAO,IAAI,WAAW,EAC3B,KAAK,OAAO,IAAI,SAAS,CAC3B,CACA,gBAAiB,CACf,KAAK,UAAU,OAAO,gBAAiB,KAAK,YAAc,KAAK,WAAW,CAC5E,CACA,uBAAwB,CACtB,MAAM,WACJ,KAAK,YAAc,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,IACxE,SACJ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,YAAc,KAAK,YAAc,KAAK,YAAY,CAAC,EAAI,IACjF,aAAa,KAAM,gCAAiC,CAClD,QACF,CAAC,CACH,CACA,gBAAgB,MAAO,CAChB,MAAM,QAGT,KAAK,4BAA4B,EAFjC,KAAK,4BAA4B,CAIrC,CACA,kBAAkB,MAAO,CACnB,MAAM,QAAU,MAAM,OAAO,WAAa,OAC5C,MAAM,eAAe,EAEvB,KAAK,OAAS,MAAM,QAAU,KAAK,WACnC,KAAK,MAAQ,EACb,KAAK,KAAO,EACd,CACA,kBAAkB,MAAO,CACnB,KAAK,OACP,KAAK,MAAQ,KAAK,QAAU,MAAM,QAAU,KAAK,YACjD,KAAK,YAAc,KAAK,MAE5B,CACA,iBAAkB,CAChB,KAAK,KAAO,GACZ,IAAI,GAAK,EACL,QAAU,IAAM,CAClB,IAAI,KAAO,KAAK,KAAK,EAAE,EACnB,MAAQ,EACV,OAAO,qBAAqB,OAAO,GAEnC,KAAK,YAAc,KAAK,MAAQ,KAChC,IAAM,IACN,OAAO,sBAAsB,OAAO,EAExC,EACA,QAAQ,CACV,CACF,EACA,OAAO,eAAe,OAAO,uBAAwB,mBAAmB,EAExE,IAAI,aAAe,cAAc,iBAAkB,CACjD,aAAc,CACZ,MAAM,EACN,KAAK,WAAW,GAAG,sBAAuB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,WAAW,GAAG,oBAAqB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC5D,KAAK,OAAO,GAAG,gBAAiB,KAAK,iBAAiB,KAAK,IAAI,CAAC,CAClE,CACA,MAAO,CACL,KAAK,UAAU,IAAI,YAAY,EAC/B,KAAK,MAAM,UAAY,aACzB,CACA,MAAO,CACL,KAAK,MAAM,UAAY,YACvB,KAAK,UAAU,IAAI,YAAY,CACjC,CACA,iBAAiB,MAAO,CAClB,MAAM,eAAiB,aAAe,KAAK,UAAU,SAAS,YAAY,IAC5E,KAAK,UAAU,OAAO,YAAY,EAClC,KAAK,UAAU,OAAO,YAAY,EAClC,KAAK,MAAM,UAAY,YAE3B,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,YAAY,EAE1D,IAAI,aAAe,cAAc,WAAY,CAC3C,mBAAoB,CAClB,KAAK,gBAAkB,KAAK,YAC5B,KAAK,UAAY,OAAO,WACxB,KAAK,gBAAkB,GACvB,OAAO,iBAAiB,SAAU,KAAK,eAAe,KAAK,IAAI,CAAC,CAClE,CACA,CAAC,OAAO,aAAa,GAAI,CACvB,MAAO,CACL,aAAc,KAAK,MAAM,KAAK,IAAI,EAClC,MAAO,EACP,MAAM,MAAO,CACX,MAAM,MAAQ,MAAM,KAAK,aAAa,EACtC,OAAI,KAAK,QAAU,MAAM,OAChB,CACL,KAAM,GACN,MAAO,MAAM,KAAK,OAAO,CAC3B,EAEO,CACL,KAAM,EACR,CAEJ,CACF,CACF,CACA,MAAM,MAAQ,GAAO,CACnB,OAAI,KAAK,kBAAoB,GAAK,CAAC,MAC1B,QAAQ,QAAQ,MAAM,KAAK,KAAK,QAAQ,CAAC,GAElD,KAAK,gBAAkB,GAChB,IAAI,QAAS,SAAY,CAC9B,sBAAsB,IAAM,CAC1B,KAAK,UAAY,KAAK,gBACnB,QAAQ,KAAM,iBAAiB,EAC/B,QAAQ,MAAO,GAAG,EACrB,MAAM,OAAS,CAAC,EAChB,MAAM,KAAK,KAAK,QAAQ,EAAE,QAAS,OAAU,CAC3C,MAAM,KAAO,MAAM,sBAAsB,EAAE,IAC3C,OAAO,IAAI,GAAK,OAAO,IAAI,GAAK,IAAM,MAAM,WAC9C,CAAC,EACD,KAAK,UAAY,OAAO,OAAO,MAAM,EAClC,IACE,MACC,SAAS,KAAK,aAAa,QAAQ,GAAK,CAAC,MAAQ,SAAW,EAAE,IAC5D,KAAK,aAAa,qBAAqB,GAAK,CAAC,MAAQ,sBAAwB,EAC/E,2BAA2B,KAAK,KAAK,CAAC,SAC1C,EACC,KAAK,EAAE,EACV,KAAK,MAAM,QAAU,KAAK,aAAa,QAAQ,EAAI,EAAI,KACnD,KAAK,aAAa,qBAAqB,EACzC,KAAK,MAAM,WAAa,UAExB,KAAK,MAAM,WAAa,KAE1B,QAAQ,MAAM,KAAK,KAAK,QAAQ,CAAC,CACnC,CAAC,CACH,CAAC,EACH,CACA,MAAM,gBAAiB,CACjB,KAAK,YAAc,OAAO,YAAc,CAAC,KAAK,kBAGlD,MAAM,KAAK,MAAM,EAAI,EACrB,KAAK,cACH,IAAI,YAAY,yBAA0B,CACxC,QAAS,EACX,CAAC,CACH,EACA,KAAK,UAAY,OAAO,WAC1B,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,YAAY,EAE1D,IAAI,iBAAmB,cAAc,qBAAsB,CACzD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,QAAS,oBAAqB,IAAO,KAAK,KAAO,EAAM,CACxE,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,QACH,SAAS,gBAAgB,UAAU,OAAO,gBAAiB,KAAK,IAAI,CAE1E,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,gBAAgB,EAElE,IAAI,UAAY,cAAc,WAAY,CACxC,mBAAoB,CAClB,KAAK,QAAU,MAAM,KAAK,KAAK,iBAAiB,yBAAyB,CAAC,EAC1E,KAAK,gBAAkB,KAAK,cAAc,uBAAuB,EACjE,KAAK,QAAQ,QAAS,QACpB,OAAO,iBAAiB,QAAS,IAAM,KAAK,aAAa,MAAM,CAAC,CAClE,EACA,KAAK,iBAAiB,uBAAyB,OAC7C,KAAK,aAAa,MAAM,OAAQ,CAAC,MAAM,OAAO,IAAI,CACpD,EACA,KAAK,gBAAkB,SAAS,cAAc,MAAM,EACpD,KAAK,gBAAgB,UAAU,IAAI,sBAAsB,EACzD,KAAK,QAAQ,CAAC,EAAE,cAAc,sBAAsB,WAAY,KAAK,eAAe,EACpF,OAAO,iBAAiB,SAAU,KAAK,sBAAsB,KAAK,IAAI,CAAC,EACvE,KAAK,+BAA+B,EAChC,KAAK,WACP,KAAK,mBAAmB,CAE5B,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,QAAQ,CACnC,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,QAAQ,UAAW,QAAW,OAAO,aAAa,kBAAkB,IAAM,MAAM,CAC9F,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,QAAQ,KAAM,QAAW,OAAO,aAAa,kBAAkB,IAAM,MAAM,CACzF,CACA,aAAa,OAAQ,QAAU,GAAM,CACnC,GAAI,CAAC,KAAK,QAAQ,SAAS,MAAM,GAAK,KAAK,iBAAmB,OAC5D,OAEF,MAAM,KAAO,SAAS,eAAe,KAAK,eAAe,aAAa,iBAAiB,CAAC,EACtF,GAAK,SAAS,eAAe,OAAO,aAAa,iBAAiB,CAAC,EACjE,QACF,KAAK,wBAAwB,KAAM,EAAE,GAErC,KAAK,OAAS,GACd,GAAG,OAAS,IAEd,KAAK,eAAe,aAAa,mBAAoB,OAAO,EAC5D,OAAO,aAAa,mBAAoB,MAAM,EAC9C,aAAa,KAAM,qBAAsB,CACvC,MACF,CAAC,EACD,KAAK,+BAA+B,CACtC,CACA,UAAU,OAAQ,CAChB,OAAO,iBAAiB,QAAS,IAAM,KAAK,aAAa,MAAM,CAAC,EAChE,OAAO,aAAa,mBAAoB,OAAO,EAC/C,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAAE,sBAAsB,WAAY,MAAM,EAC9E,KAAK,QAAQ,KAAK,MAAM,EACxB,KAAK,+BAA+B,EAAK,CAC3C,CACA,wBAAwB,KAAM,GAAI,CAChC,KAAK,QACH,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,IACV,OAAQ,MACV,CACF,EAAE,SAAW,IAAM,CACjB,KAAK,OAAS,GACd,GAAG,OAAS,GACZ,GAAG,QACD,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,IACV,OAAQ,MACV,CACF,CACF,CACF,CACA,uBAAwB,CACtB,KAAK,+BAA+B,CACtC,CACA,+BAA+B,UAAY,GAAM,CAC/C,MAAM,MACF,KAAK,eAAe,YAAc,KAAK,gBAAgB,cAAc,YACvE,UACE,KAAK,eAAe,WAAa,KAAK,gBAAgB,cAAc,YAAc,MACpF,gBAAkB,KAAK,gBAAgB,YAAc,EACvD,IAAI,SAAW,OACX,YACF,SAAW,UAEb,IAAI,KACF,KAAK,eAAe,WAAa,gBAAkB,KAAK,eAAe,YAAc,EACvF,KAAK,gBAAgB,SAAS,CAC5B,SACA,IACF,CAAC,EACI,YACH,KAAK,gBAAgB,MAAM,WAAa,QAE1C,KAAK,gBAAgB,MAAM,YAAY,UAAW,KAAK,EACvD,KAAK,gBAAgB,MAAM,YAAY,cAAe,GAAG,UAAY,GAAG,GAAG,EAC3E,KAAK,gBAAgB,YACrB,sBAAsB,IAAM,CAC1B,KAAK,gBAAgB,UAAU,IAAI,gBAAgB,EACnD,KAAK,gBAAgB,MAAM,WAAa,IAC1C,CAAC,CACH,CACA,oBAAqB,CACnB,GAAI,KAAK,cAAc,qBAAqB,EAAG,CAC7C,MAAM,gBAAkB,KAAK,cAAc,qBAAqB,EAChE,gBAAgB,kBAAkB,iBAAiB,QAAS,IAAM,CAChE,KAAK,aAAa,KAAK,QAAQ,KAAK,IAAI,KAAK,iBAAmB,EAAG,CAAC,CAAC,CAAC,CACxE,CAAC,EACD,gBAAgB,iBAAiB,iBAAiB,QAAS,IAAM,CAC/D,KAAK,aACH,KAAK,QAAQ,KAAK,IAAI,KAAK,iBAAmB,EAAG,KAAK,QAAQ,OAAS,CAAC,CAAC,CAC3E,CACF,CAAC,CACH,CACF,CACF,EACA,OAAO,eAAe,OAAO,aAAc,SAAS,EAEpD,IAAI,gBAAkB,KAAM,CAC1B,OAAO,KAAK,YAAa,CACvB,MAAM,iBAAmB,YACnB,cAAgB,SAChB,MAAQ,KAAK,UAAU,WAAW,EACxC,GAAI,CAAC,MACH,OAEF,GAAI,MAAM,SAAW,iBACnB,OAAO,MAAM,QAEf,GAAI,MAAM,SAAW,cACnB,OAAO,QAAQ,QAAQ,EAEzB,IAAI,QACJ,OAAI,MAAM,OAAS,SACjB,QAAU,IAAI,QAAQ,CAAC,QAAS,SAAW,CACzC,IAAIE,KAAM,SAAS,cAAc,QAAQ,EACzCA,KAAI,GAAK,MAAM,MACfA,KAAI,IAAM,MAAM,IAChBA,KAAI,QAAU,OACdA,KAAI,OAAS,IAAM,CACjB,MAAM,OAAS,cACf,QAAQ,CACV,EACA,SAAS,KAAK,YAAYA,IAAG,CAC/B,CAAC,EAED,QAAU,IAAI,QAAQ,CAAC,QAAS,SAAW,CACzC,IAAIA,KAAM,SAAS,cAAc,MAAM,EACvCA,KAAI,GAAK,MAAM,MACfA,KAAI,KAAO,MAAM,IACjBA,KAAI,IAAM,aACVA,KAAI,KAAO,WACXA,KAAI,QAAU,OACdA,KAAI,OAAS,IAAM,CACjB,MAAM,OAAS,cACf,QAAQ,CACV,EACA,SAAS,KAAK,YAAYA,IAAG,CAC/B,CAAC,EAEH,MAAM,QAAU,QAChB,MAAM,OAAS,iBACR,OACT,CACF,EACA,cAAc,gBAAiB,YAAa,CAC1C,oBAAqB,CACnB,MAAO,iCACP,IAAK,OAAO,eAAe,KAAK,oBAChC,KAAM,MACR,EACA,SAAU,CACR,MAAO,WACP,IAAK,OAAO,eAAe,KAAK,SAChC,KAAM,QACR,EACA,WAAY,CACV,MAAO,aACP,IAAK,OAAO,eAAe,KAAK,WAChC,KAAM,QACR,CACF,CAAC,EAED,IAAI,cAAgB,KAAM,CACxB,OAAO,sBAAuB,CAC5B,OAAO,OAAO,WAAW,kCAAkC,EAAE,OAC/D,CACA,OAAO,eAAgB,CACrB,OAAO,OAAO,WAAW,oBAAoB,EAAE,OACjD,CACF,EAEI,uBAAyB,cAAc,iBAAkB,CAC3D,mBAAoB,CAGlB,GAFA,KAAK,4BAA8B,SAAS,eAAe,KAAK,aAAa,aAAa,CAAC,EAC3F,KAAK,iBAAiB,SAAU,KAAK,sCAAsC,KAAK,IAAI,CAAC,EACjF,KAAK,aAAa,cAAc,GAClC,QAAS,EAAI,EAAG,IAAM,KAAK,QAAQ,OAAQ,EAAE,EAC3C,GAAI,KAAK,QAAQ,CAAC,EAAE,OAAS,KAAK,aAAa,cAAc,EAAG,CAC9D,KAAK,cAAgB,EACrB,KACF,EAGJ,GAAI,KAAK,4BAA4B,aAAa,cAAc,GAC9D,QAAS,EAAI,EAAG,IAAM,KAAK,4BAA4B,QAAQ,OAAQ,EAAE,EACvE,GACE,KAAK,4BAA4B,QAAQ,CAAC,EAAE,OAC5C,KAAK,4BAA4B,aAAa,cAAc,EAC5D,CACA,KAAK,4BAA4B,cAAgB,EACjD,KACF,EAGJ,KAAK,sCAAsC,CAC7C,CACA,uCAAwC,CACtC,MAAM,eAAiB,KAAK,QAAQ,KAAK,aAAa,EACtD,GAAI,CAAC,eACH,OAEF,IAAI,UAAY,KAAK,MAAM,eAAe,aAAa,gBAAgB,GAAK,IAAI,EAC5E,kCACF,KAAK,4BAA4B,cAAc,QAAQ,EASzD,IAPG,kCAAoC,KAAK,4BAA4B,UAAY,YAElF,kCAAoC,KAAK,6BAEvC,oCACF,kCAAkC,UAAY,IAE5C,UAAU,SAAW,EAAG,CAC1B,KAAK,4BAA4B,OAAS,GAC1C,MACF,CACA,UAAU,QAAS,MAAS,CAC1B,kCAAkC,QAAQ,IAAI,IAAI,OAAO,KAAK,CAAC,EAAG,KAAK,CAAC,CAAC,CAAC,CAC5E,CAAC,EACD,KAAK,4BAA4B,OAAS,EAC5C,CACF,EACA,OAAO,eAAe,OAAO,0BAA2B,uBAAwB,CAC9E,QAAS,QACX,CAAC,EAED,IAAI,UAAY,cAAc,WAAY,CACxC,mBAAoB,CAClB,MAAM,oBAAsB,KAAK,cAAc,kCAAkC,EAC7E,qBACF,sBAAsB,IAAM,CAC1B,oBAAoB,MAAM,gBAAkB,MAC9C,CAAC,CAEL,CACF,EACA,OAAO,eAAe,OAAO,aAAc,SAAS,EAEpD,IAAI,eAAiB,cAAc,qBAAsB,CACvD,mBAAoB,CAClB,MAAM,kBAAkB,EACpB,KAAK,oBAAsB,EAAE,KAAK,YAAc,KAAK,oBACvD,WAAW,IAAO,KAAK,KAAO,GAAO,KAAK,iBAAiB,EAE7D,KAAK,OAAO,GAAG,QAAS,kBAAmB,IAAO,KAAK,KAAO,EAAM,CACtE,CACA,IAAI,oBAAqB,CACvB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,mBAAoB,CACtB,OAAO,SAAS,KAAK,aAAa,oBAAoB,GAAK,CAAC,EAAI,GAClE,CACA,IAAI,YAAa,CACf,OAAO,KAAK,aAAa,WAAW,CACtC,CACA,IAAI,mBAAoB,CACtB,OAAO,aAAa,QAAQ,sBAAsB,IAAM,IAC1D,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,SACH,SAAS,gBAAgB,UAAU,OAAO,aAAc,KAAK,IAAI,EAC7D,KAAK,MACP,aAAa,QAAQ,uBAAwB,EAAI,EAGzD,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,aAAe,cAAc,WAAY,CAC3C,mBAAoB,CAClB,KAAK,cAAgB,KAAK,cAAc,+CAA+C,EACvF,KAAK,cAAgB,KAAK,cAAc,8CAA8C,EACtF,KAAK,kBAAoB,KAAK,cAAc,yCAAyC,EACrF,KAAK,kBAAoB,KAAK,cAAc,wCAAwC,EACpF,KAAK,kBAAkB,iBAAiB,QAAS,IAAM,KAAK,kBAAkB,OAAO,CAAC,EACtF,KAAK,kBAAkB,iBAAiB,QAAS,IAAM,KAAK,kBAAkB,OAAO,CAAC,EACtF,KAAK,kBAAkB,iBAAiB,SAAW,OAAU,CAC3D,MAAM,OAAO,MAAQ,KAAK,IACxB,KAAK,IACH,SAAS,MAAM,OAAO,KAAK,EAC3B,SAAS,KAAK,kBAAkB,OAAS,MAAM,OAAO,GAAG,EAAI,CAC/D,EACA,MAAM,OAAO,GACf,EACA,KAAK,cAAc,MAAQ,MAAM,OAAO,MACxC,IAAI,IAAO,SAAS,KAAK,cAAc,KAAK,EAAI,SAAS,KAAK,cAAc,GAAG,EAAK,IACpF,KAAK,cAAc,cAAc,MAAM,YAAY,cAAe,GAAG,GAAG,GAAG,CAC7E,CAAC,EACD,KAAK,kBAAkB,iBAAiB,SAAW,OAAU,CAC3D,MAAM,OAAO,MAAQ,KAAK,IACxB,KAAK,IACH,SAAS,MAAM,OAAO,KAAK,EAC3B,SAAS,KAAK,kBAAkB,OAAS,MAAM,OAAO,GAAG,EAAI,CAC/D,EACA,MAAM,OAAO,GACf,EACA,KAAK,cAAc,MAAQ,MAAM,OAAO,MACxC,IAAI,IAAO,SAAS,KAAK,cAAc,KAAK,EAAI,SAAS,KAAK,cAAc,GAAG,EAAK,IACpF,KAAK,cAAc,cAAc,MAAM,YAAY,cAAe,GAAG,GAAG,GAAG,CAC7E,CAAC,EACD,KAAK,cAAc,iBAAiB,SAAW,OAAU,CACvD,KAAK,kBAAkB,MAAQ,MAAM,OAAO,MAC5C,KAAK,kBAAkB,cACrB,IAAI,MAAM,SAAU,CAClB,QAAS,EACX,CAAC,CACH,CACF,CAAC,EACD,KAAK,cAAc,iBAAiB,SAAW,OAAU,CACvD,KAAK,kBAAkB,MAAQ,MAAM,OAAO,MAC5C,KAAK,kBAAkB,cACrB,IAAI,MAAM,SAAU,CAClB,QAAS,EACX,CAAC,CACH,CACF,CAAC,EACD,KAAK,cAAc,iBAAiB,QAAU,OAAU,CACtD,aAAa,KAAM,qBAAqB,EACxC,MAAM,OAAO,MAAQ,KAAK,IACxB,SAAS,MAAM,OAAO,KAAK,EAC3B,SAAS,KAAK,kBAAkB,OAAS,MAAM,OAAO,GAAG,EAAI,CAC/D,EACA,IAAI,IAAO,SAAS,MAAM,OAAO,KAAK,EAAI,SAAS,MAAM,OAAO,GAAG,EAAK,IACxE,MAAM,OAAO,cAAc,MAAM,YAAY,cAAe,GAAG,GAAG,GAAG,EACrE,KAAK,kBAAkB,MAAQ,MAAM,OAAO,KAC9C,CAAC,EACD,KAAK,cAAc,iBAAiB,QAAU,OAAU,CACtD,aAAa,KAAM,qBAAqB,EACxC,MAAM,OAAO,MAAQ,KAAK,IACxB,SAAS,MAAM,OAAO,KAAK,EAC3B,SAAS,KAAK,kBAAkB,OAAS,MAAM,OAAO,GAAG,EAAI,CAC/D,EACA,IAAI,IAAO,SAAS,MAAM,OAAO,KAAK,EAAI,SAAS,MAAM,OAAO,GAAG,EAAK,IACxE,MAAM,OAAO,cAAc,MAAM,YAAY,cAAe,GAAG,GAAG,GAAG,EACrE,KAAK,kBAAkB,MAAQ,MAAM,OAAO,KAC9C,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,YAAY,EAE1D,OAAO,iBAAiB,OAAQ,UAAY,CAC1C,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,aAAc,CAEZ,GADA,MAAM,EACF,KAAK,aAAa,WAAW,EAAG,CAElC,QADI,KAAO,SAAS,uBAAuB,qBAAqB,EACvD,EAAI,EAAG,EAAI,KAAK,OAAQ,IAAK,CACpC,IAAI,GAAK,KAAK,CAAC,EAAE,GACb,KAAK,CAAC,EAAE,aAAa,iBAAiB,GAAK,UAC7C,KAAK,CAAC,EAAE,QAAU,UAAY,CAC5B,QAAS,EAAI,EAAG,EAAI,KAAK,OAAQ,IAC/B,KAAK,CAAC,EAAE,UAAU,OAAO,aAAa,EAEpC,IAAM,KAAK,KACb,KAAK,UAAU,IAAI,aAAa,EACf,SAAS,uBAAuB,sBAAsB,EAC5D,CAAC,EAAE,MAAM,EAExB,EAEJ,CACA,MACF,KAAO,CACL,GAAI,KAAK,oBAAsB,EAAG,CAChC,SAAS,cAAc,sBAAsB,EAAE,UAAU,IAAI,QAAQ,EACrE,MACF,CACA,KAAK,iBAAiB,iBAAkB,KAAK,uBAAuB,KAAK,IAAI,CAAC,EAC9E,KAAK,iBAAiB,yBAA0B,KAAK,uBAAuB,KAAK,IAAI,CAAC,EACtF,KAAK,kBAAkB,CACzB,CACF,CACA,MAAM,sBAAuB,CACvB,KAAK,WACkB,MAAM,KAAK,UACnB,QAAQ,CAE7B,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,MAAM,KAAK,aAAa,iBAAiB,CAAC,CACxD,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,QACd,CACA,MAAM,MAAO,EACV,MAAM,KAAK,kBAAkB,KAAK,CACrC,CACA,MAAM,UAAW,EACd,MAAM,KAAK,kBAAkB,SAAS,CACzC,CACA,MAAM,OAAO,gBAAiB,EAC3B,MAAM,KAAK,kBAAkB,WAAW,eAAe,CAC1D,CACA,MAAM,aAAa,UAAW,CAC5B,MAAM,iBAAmB,MAAM,KAAK,SACpC,iBAAiB,QAAQ,UAAY,UACrC,iBAAiB,gBAAgB,CACnC,CACA,MAAM,QAAS,EACY,MAAM,KAAK,UACnB,QAAQ,EACrB,KAAK,eAAe,cACtB,MAAM,KAAK,KAAK,QAAQ,EACrB,KAAK,CAACH,GAAG,IACR,SAASA,GAAE,aAAa,wBAAwB,CAAC,EACjD,SAAS,EAAE,aAAa,wBAAwB,CAAC,EAC7C,EACA,EACN,EACC,QAAS,MAAS,KAAK,YAAY,IAAI,CAAC,EAE7C,KAAK,kBAAkB,CACzB,CACA,MAAM,mBAAoB,CACxB,KAAK,SAAW,IAAI,QAAQ,MAAO,SAAY,CAC7C,MAAM,gBAAgB,KAAK,UAAU,EACrC,MAAM,KAAK,mBAAmB,CAC5B,WAAY,QACZ,UAAW,CACb,CAAC,EACD,MAAM,iBAAmB,IAAI,OAAO,cAAc,KAAM,CACtD,GAAG,KAAK,eAEN,YAAa,OAAO,eAAe,SAAS,YAAc,MAC1D,cAAe,cAAc,cAAc,EAC3C,GAAI,CACF,MAAQ,OAAU,aAAa,KAAM,iBAAkB,KAAK,EAC5D,OAAS,OAAU,aAAa,KAAM,yBAA0B,KAAK,EACrE,OAAS,OAAU,aAAa,KAAM,yBAA0B,KAAK,CACvE,CAEJ,CAAC,EACD,QAAQ,gBAAgB,EAExB,MAAM,SAAW,KAAK,cAAc,0BAA0B,EAC9D,GAAI,SAAU,CACZ,MAAM,OAAS,IAAM,CACnB,sBAAsB,IAAM,CAC1B,iBAAiB,OAAO,EACxB,SAAS,UAAU,IAAI,YAAY,CACrC,CAAC,CACH,EACI,SAAS,UAAY,SAAS,aAAe,EAC/C,OAAO,IAEO,SAAS,OACnB,SAAS,OAAO,EAAE,MAAM,IAAM,CAAC,CAAC,EAChC,IAAI,QAAS,KAAQ,SAAS,iBAAiB,OAAQ,IAAK,CAAE,KAAM,EAAK,CAAC,CAAC,GACzE,KAAK,MAAM,EAGjB,WAAW,OAAQ,GAAI,EAE3B,CACF,CAAC,EACG,KAAK,aAAa,WAAW,KACN,MAAM,KAAK,kBACnB,GAAG,cAAe,KAAK,oBAAoB,KAAK,IAAI,CAAC,EACtE,KAAK,iBAAiB,YAAa,KAAK,kBAAkB,KAAK,IAAI,CAAC,EAExE,CACA,MAAM,oBAAoB,MAAO,QAAS,YAAa,CACrD,MAAM,iBAAmB,MAAM,KAAK,iBAClC,mBACE,iBAAiB,gBAAgB,aAAa,iBAAiB,GAC/D,CAAC,QAAS,iBAAkB,OAAO,EAAE,SACnC,iBAAiB,gBAAgB,aAAa,iBAAiB,CACjE,EACJ,GACE,CAAC,aACD,oBACA,OAAO,WAAW,OAAO,eAAe,YAAY,KAAK,EAAE,QAE3D,OAEF,MAAM,iBAAmB,iBAAiB,SACxC,eAAiB,iBAAiB,sBAAsB,EACxD,SAAW,KAAK,MAAM,eAAe,MAAQ,eAAe,MAAQ,CAAC,EAEnE,QAAQ,QAAU,SACpB,iBAAiB,KAAK,EAEtB,iBAAiB,SAAS,CAE9B,CACA,MAAM,kBAAkB,MAAO,CAC7B,MAAM,iBAAmB,MAAM,KAAK,iBAClC,mBACE,iBAAiB,gBAAgB,aAAa,iBAAiB,GAC/D,CAAC,QAAS,iBAAkB,OAAO,EAAE,SACnC,iBAAiB,gBAAgB,aAAa,iBAAiB,CACjE,EACJ,KAAK,UAAU,OACb,oBACA,MAAM,QAAU,KAAK,YAAc,GAAK,CAAC,kBAC3C,EACA,KAAK,UAAU,OACb,mBACA,MAAM,SAAW,KAAK,YAAc,GAAK,CAAC,kBAC5C,CACF,CACA,MAAM,wBAAyB,CAC7B,IAAI,GACJ,MAAM,iBAAmB,MAAM,KAAK,SAChC,iBAAiB,gBAAgB,sBAClC,GAAK,iBAAiB,gBAAgB,mBAAmB,cAAc,KAAK,IAAM,MAE/E,GAAG,aAAa,UAAW,OAAO,EAE1C,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,CACxE,CAAC,EAED,SAAS,WAAW,QAAS,OAAQ,YAAc,GAAO,CACxD,IAAI,kBAAoB,CAAC,EACrB,qBAAuB,QAC3B,KAAQ,qBAAuB,qBAAqB,yBAC9C,CAAC,QAAU,qBAAqB,QAAQ,MAAM,IAChD,kBAAkB,KAAK,oBAAoB,EAO/C,IAJI,aACF,kBAAkB,KAAK,OAAO,EAEhC,qBAAuB,QACf,qBAAuB,qBAAqB,qBAC9C,CAAC,QAAU,qBAAqB,QAAQ,MAAM,IAChD,kBAAkB,KAAK,oBAAoB,EAG/C,OAAO,iBACT,CACA,eAAe,qBAAqB,OAAQ,CAC1C,MAAM,gBAAkB,CAAC,EACnB,QAAU,MAAQ,OAAO,OAAO,OAAO,QAAQ,GAAM,aACzD,OAAS,CAAC,MAAM,GAElB,UAAW,cAAc,OACvB,GAAI,OAAO,WAAW,OAAO,aAAa,GAAM,WAC9C,gBAAiB,eAAe,WAC9B,gBAAgB,KAAK,WAAW,OAGlC,gBAAgB,KAAK,UAAU,EAGnC,OAAO,eACT,CAEA,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,MAAM,mBAAoB,CACxB,KAAK,iBAAiB,iBACpB,iBACA,KAAK,gBAAgB,KAAK,KAAM,EAAK,CACvC,EACA,KAAK,iBAAiB,iBACpB,yBACA,KAAK,gBAAgB,KAAK,KAAM,EAAI,CACtC,EACA,KAAK,OAAO,GAAG,QAAS,uBAAwB,IAAM,KAAK,iBAAiB,SAAS,CAAC,EACtF,KAAK,OAAO,GAAG,QAAS,uBAAwB,IAAM,KAAK,iBAAiB,KAAK,CAAC,EAClF,KAAK,OAAO,GAAG,QAAS,yBAA0B,CAAC,MAAO,SACxD,KAAK,iBAAiB,OAAO,IAAI,OAAO,aAAa,iBAAiB,CAAC,EAAE,CAC3E,CACF,CACA,IAAI,kBAAmB,CACrB,OAAQ,KAAK,kBACX,KAAK,mBAAqB,SAAS,eAAe,KAAK,aAAa,UAAU,CAAC,CACnF,CACA,MAAM,gBAAgB,QAAU,GAAM,CACpC,IAAI,iBAAmB,MAAM,KAAK,iBAAiB,iBACzB,MAAM,KAC9B,KAAK,iBAAiB,qBAAqB,iBAAiB,gBAAgB,EAAE,IAAI,CACpF,EACoB,QAAS,YAAe,CAC1C,WAAW,aAAa,iBAAkB,MAAM,EAChD,WAAW,UAAU,EAAE,QAAS,SAAY,QAAQ,gBAAgB,gBAAgB,CAAC,EACrF,sBAAsB,IAAM,CAC1B,GAAI,WAAW,cAAgB,WAAW,eAAiB,KAAM,CAC/D,MAAM,iBAAmB,WAAW,aAAa,aAAe,EAC9D,gBAAkB,WAAW,aAAa,YAAc,EAC1D,IAAI,SAAW,OACX,UACF,SAAW,UAEb,IAAI,IAAM,WAAW,UAAY,iBAAmB,WAAW,aAAe,EAC1E,KAAO,WAAW,WAAa,gBAAkB,WAAW,YAAc,EAC9E,WAAW,aAAa,SAAS,CAC/B,SACA,IACA,IACF,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,gBAAkB,cAAc,iBAAkB,CACpD,aAAc,CACZ,MAAM,EACN,KAAK,UAAY,IAChB,SACK,KAAK,UACP,MAAM,KAAK,mBAAmB,CAC5B,WAAY,QACZ,UAAW,CACb,CAAC,EACD,KAAK,KAAK,GAEV,KAAK,iBAAiB,QAAS,KAAK,KAAK,KAAK,IAAI,EAAG,CACnD,KAAM,EACR,CAAC,IAGP,CACA,IAAI,UAAW,CACb,OAAO,KAAK,aAAa,UAAU,CACrC,CACA,IAAI,UAAW,CACb,OAAO,KAAK,aAAa,UAAU,CACrC,CACA,MAAM,MAAO,CACN,KAAK,WACR,MAAM,KAAK,kBAAkB,EAE3B,KAAK,WAAa,UACpB,KAAK,kBAAkB,cAAc,YACnC,KAAK,UAAU,CACb,MAAO,UACP,KAAM,YACN,KAAM,EACR,CAAC,EACD,GACF,EACS,KAAK,WAAa,SAC3B,KAAK,kBAAkB,cAAc,YACnC,KAAK,UAAU,CACb,OAAQ,MACV,CAAC,EACD,GACF,CAEJ,CACA,OAAQ,CACD,KAAK,YAGN,KAAK,WAAa,UACpB,KAAK,kBAAkB,cAAc,YACnC,KAAK,UAAU,CACb,MAAO,UACP,KAAM,aACN,KAAM,EACR,CAAC,EACD,GACF,EACS,KAAK,WAAa,SAC3B,KAAK,kBAAkB,cAAc,YACnC,KAAK,UAAU,CACb,OAAQ,OACV,CAAC,EACD,GACF,EAEJ,CACA,mBAAoB,CAClB,OAAI,KAAK,cACA,KAAK,cAEN,KAAK,cAAgB,IAAI,QAAS,SAAY,CACpD,MAAM,KAAO,KAAK,cAAc,UAAU,EAAE,QAAQ,kBAAkB,UAAU,EAAI,EACpF,KAAK,OAAS,IAAM,CAClB,KAAK,UAAY,GACjB,QAAQ,CACV,EACA,KAAK,UAAY,GACjB,KAAK,YAAY,IAAI,CACvB,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,eAAe,EAEhE,IAAI,gBAAkB,KAAM,CAC1B,OAAO,KAAK,cAAe,CACzB,GAAK,cAGL,OAAI,KAAK,eAAe,aAAa,EAC5B,KAAK,eAAe,aAAa,GAE1C,KAAK,eAAe,aAAa,EAAI,IAAI,QAAQ,MAAO,SAAY,CAIlE,MAAM,eAAiB,MAHN,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,mBAAmB,aAAa,aAAa,KAC/E,GACsC,KAAK,EAC3C,QAAQ,cAAc,CACxB,CAAC,EACM,KAAK,eAAe,aAAa,EAC1C,CACF,EACA,cAAc,gBAAiB,iBAAkB,CAAC,CAAC,EAgGnD,IAAI,WAAa,cAAc,qBAAsB,CACnD,mBAAoB,CAOlB,GANA,MAAM,kBAAkB,EACxB,KAAK,QAAU,MAAM,KAAK,KAAK,iBAAiB,iBAAiB,CAAC,EAClE,KAAK,OAAO,GAAG,QAAS,kBAAmB,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAC7E,KAAK,OAAO,GAAG,UAAW,mBAAoB,KAAK,cAAc,KAAK,IAAI,CAAC,EAC3E,KAAK,OAAO,GAAG,SAAU,SAAU,KAAK,mBAAmB,KAAK,IAAI,CAAC,EACrE,KAAK,OAAO,GAAG,QAAS,wBAAyB,IAAO,KAAK,KAAO,EAAM,EACtE,KAAK,aAAa,YAAY,EAAG,CACnC,MAAM,SAAW,KAAK,IAAI,GAAG,KAAK,QAAQ,IAAK,MAAS,KAAK,WAAW,CAAC,EACvE,QAAU,SAAS,cAAc,qBAAqB,KAAK,EAAE,IAAI,EAC/D,SACF,QAAQ,MAAM,YAAY,yBAA0B,GAAG,SAAW,CAAC,IAAI,CAE3E,CACF,CACA,IAAI,cAAe,CACjB,OAAO,KAAK,cAAc,QAAQ,CACpC,CACA,IAAI,cAAc,MAAO,CACvB,KAAK,QAAQ,QAAS,QAAW,CAC/B,IAAI,IAAM,QACN,OAAO,aAAa,OAAO,IAAM,QACnC,IAAM,QAER,OAAO,aAAa,gBAAiB,GAAG,CAC1C,CAAC,CACH,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAE7C,OADA,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,KAAM,CACZ,IAAK,OACH,GAAI,KAAK,KAAM,CAEb,IAAI,OADmB,KAAK,sBAAsB,EACtB,KAAQ,OAAO,YAAc,EAAK,IAC9D,KAAK,UAAU,OAAO,kBAAmB,MAAM,EAC/C,WAAW,IAAM,KAAK,UAAU,SAAS,EAAG,GAAG,CACjD,MACE,KAAK,UAAU,WAAW,EAC1B,WAAW,IAAM,KAAK,UAAU,OAAO,iBAAiB,EAAG,GAAG,EAEhE,SAAS,gBAAgB,UAAU,OAAO,gBAAiB,KAAK,IAAI,CACxE,CACF,CACA,mBAAmB,MAAO,OAAQ,CAChC,KAAK,cAAgB,OAAO,MAC5B,KAAK,aAAa,MAAQ,OAAO,MACjC,KAAK,aAAa,cAChB,IAAI,MAAM,SAAU,CAClB,QAAS,EACX,CAAC,CACH,EACA,KAAK,KAAO,EACd,CACA,mBAAmB,MAAO,OAAQ,CAChC,MAAM,KAAK,KAAK,aAAa,OAAO,EAAE,QAAS,QAC7C,OAAO,gBAAgB,WAAY,OAAO,QAAU,OAAO,KAAK,CAClE,EACA,KAAK,cAAgB,OAAO,KAC9B,CACA,cAAc,MAAO,CACnB,IAAI,GAAI,IACJ,MAAM,MAAQ,aAAe,MAAM,MAAQ,aAC7C,MAAM,eAAe,EACjB,MAAM,MAAQ,aACf,GAAK,SAAS,cAAc,qBAAuB,MAAgB,GAAG,MAAM,GAE5E,GAAK,SAAS,cAAc,yBAA2B,MAAgB,GAAG,MAAM,EAGvF,CACF,EACA,OAAO,eAAe,OAAO,cAAe,UAAU,EAEtD,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,mBAAoB,CAClB,KAAK,aAAe,KAAK,cAAc,OAAO,EAC9C,KAAK,OAAO,GACV,QACA,qBACA,IAAO,KAAK,aAAa,SAAW,KAAK,aAAa,SAAW,CACnE,EACA,KAAK,OAAO,GACV,QACA,oBACA,IAAO,KAAK,aAAa,SAAW,KAAK,aAAa,SAAW,CACnE,CACF,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,cAAgB,cAAc,gBAAiB,CACjD,mBAAoB,CAClB,KAAK,iBAAiB,QAAS,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAC/D,KAAK,iBAAiB,SAAU,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,UAAW,KAAK,cAAc,KAAK,IAAI,CAAC,CAChE,CACA,IAAI,UAAW,CACb,OAAO,SAAS,KAAK,KAAK,CAC5B,CACA,IAAI,SAAS,SAAU,CACrB,MAAM,WACH,OAAO,UAAa,UAClB,OAAO,UAAa,UAAY,SAAS,KAAK,IAAM,KACvD,CAAC,MAAM,QAAQ,EACb,WAAa,MAGb,CAAC,WAAa,SAAW,KAC3B,SAAW,SAAS,QAAQ,GAAK,GAEnC,KAAK,MAAQ,KAAK,IAChB,KAAK,KAAO,EACZ,KAAK,IAAI,SAAU,KAAK,KAAO,OAAO,SAAS,CACjD,EAAE,SAAS,EACX,KAAK,KAAO,KAAK,IAAI,KAAK,MAAM,OAAS,EAAG,CAAC,EAC/C,CACA,kBAAmB,CACjB,KAAK,SAAW,KAAK,KACvB,CACA,oBAAqB,CACf,KAAK,QAAU,KACjB,KAAK,SAAW,EAEpB,CACA,cAAc,MAAO,CACnB,MAAM,gBAAgB,EAClB,MAAM,MAAQ,UAChB,KAAK,SAAW,KAAK,SAAW,EACvB,MAAM,MAAQ,cACvB,KAAK,SAAW,KAAK,SAAW,EAEpC,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,cAAe,CAC5D,QAAS,OACX,CAAC,EAED,IAAI,sBAAwB,cAAc,iBAAkB,CAC1D,MAAM,mBAAoB,CACxB,MAAM,eAAe,YAAY,yBAAyB,EAC1D,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,yBAAyB,CAAC,EACxE,KAAK,wBAA0B,GAC/B,KAAK,OAAO,GAAG,QAAS,uBAAwB,KAAK,SAAS,KAAK,IAAI,CAAC,EACxE,KAAK,OAAO,GAAG,QAAS,uBAAwB,KAAK,KAAK,KAAK,IAAI,CAAC,EACpE,KAAK,OAAO,GAAG,kCAAmC,KAAK,aAAa,KAAK,IAAI,CAAC,EAC9E,KAAK,OAAO,GAAG,mCAAoC,KAAK,aAAa,KAAK,IAAI,CAAC,EAC3E,OAAO,iBACT,KAAK,eAAiB,IAAI,eAAe,KAAK,0BAA0B,KAAK,IAAI,CAAC,EAClF,KAAK,eAAe,QAAQ,IAAI,GAE9B,KAAK,UACP,KAAK,aAAa,EAEhB,QAAQ,YACV,KAAK,OAAO,GAAG,uBAAyB,OAAU,KAAK,OAAO,MAAM,OAAO,MAAO,EAAK,CAAC,CAE5F,CACA,IAAI,UAAW,CACb,OAAO,KAAK,aAAa,WAAW,CACtC,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,MAAM,UAAW,MAAS,KAAK,QAAQ,CACrD,CACA,UAAW,CACT,IAAI,KAAO,KAAK,cAAgB,EAAI,KAAK,MAAM,QAAU,KAAK,MAAM,OACpE,KAAK,OAAO,GAAG,CACjB,CACA,MAAO,CACL,IAAI,KAAO,KAAK,cAAgB,EAAI,KAAK,MAAM,QAAU,KAAK,MAAM,OACpE,KAAK,OAAO,GAAG,CACjB,CACA,MAAM,OAAO,MAAO,QAAU,GAAM,CAC9B,KAAK,gBAAkB,OAAS,KAAK,0BAGzC,KAAK,aAAa,EAClB,KAAK,wBAA0B,GAC/B,MAAM,KAAK,MAAM,KAAK,aAAa,EAAE,SAAS,OAAO,EACrD,MAAM,KAAK,MAAM,KAAK,EAAE,OAAO,OAAO,EACtC,KAAK,wBAA0B,GAC3B,KAAK,UACP,KAAK,aAAa,EAEtB,CACA,cAAe,CACb,cAAc,KAAK,SAAS,CAC9B,CACA,cAAe,CACb,KAAK,UAAY,YACf,KAAK,KAAK,KAAK,IAAI,EACnB,SAAS,KAAK,aAAa,aAAa,CAAC,EAAI,GAC/C,CACF,CACA,0BAA0B,QAAS,CACjC,QAAQ,QAAS,OAAU,CACzB,GAAI,MAAM,SAAW,KAAM,CACzB,MAAM,OAAS,MAAM,cACjB,MAAM,cAAc,OAAS,EAC3B,MAAM,cAAc,CAAC,EAAE,UACvB,MAAM,cAAc,UACtB,MAAM,OAAO,aACjB,SAAS,gBAAgB,MAAM,YAAY,8BAA+B,GAAG,MAAM,IAAI,CACzF,CACF,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,qBAAqB,EAExE,IAAI,0BAA4B,cAAc,iBAAkB,CAC9D,mBAAoB,CACd,KAAK,aACP,KAAK,eAAiB,KAAK,cAAc,8BAA8B,EACvE,KAAK,OAAO,GAAG,QAAS,+BAAgC,KAAK,iBAAiB,KAAK,IAAI,CAAC,EACxF,KAAK,OAAO,GAAG,QAAS,gCAAiC,KAAK,kBAAkB,KAAK,IAAI,CAAC,EACtF,QAAQ,aACV,KAAK,iBAAiB,uBAAwB,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAC9E,KAAK,iBAAiB,yBAA0B,KAAK,kBAAkB,KAAK,IAAI,CAAC,GAGvF,CACA,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,YAAa,CACf,OAAO,KAAK,aAAa,aAAa,CACxC,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,IAAI,WAAY,CACd,OAAQ,KAAK,WACX,KAAK,YACL,sBACE,KAAK,eAAe,cAAc,oCAAoC,EACtE,CACE,cAAe,KACf,wBAA0B,OAAY,MAAM,OAAO,UAAY,SAC/D,kBAAoB,OAAU,MAAM,OAAO,UAAY,SACvD,aAAc,KAAK,kBAAkB,KAAK,IAAI,EAC9C,cAAe,EACjB,CACF,CACJ,CACA,MAAM,OAAO,QAAU,GAAM,CAC3B,KAAK,gBAAgB,QAAQ,EAC7B,MAAM,IAAI,QAAS,SAAY,CAC7B,KAAK,QACH,CACE,UAAW,CAAC,kBAAmB,eAAe,EAC9C,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,QAAU,IAAM,EAC1B,OAAQ,aACV,CACF,EAAE,SAAW,OACf,CAAC,CACH,CACA,MAAM,SAAS,QAAU,GAAM,CAC7B,MAAM,KAAK,kBAAkB,EAC7B,MAAM,IAAI,QAAS,SAAY,CAC7B,KAAK,QACH,CACE,UAAW,CAAC,gBAAiB,kBAAkB,EAC/C,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,QAAU,IAAM,EAC1B,OAAQ,aACV,CACF,EAAE,SAAW,OACf,CAAC,EACD,KAAK,aAAa,SAAU,EAAE,CAChC,CACA,MAAM,kBAAmB,CACnB,KAAK,aACP,KAAK,eAAe,iBAAiB,gBAAiB,IAAM,KAAK,UAAU,SAAS,EAAG,CACrF,KAAM,EACR,CAAC,EACD,KAAK,eAAe,gBAAgB,QAAQ,EAC5C,SAAS,gBAAgB,UAAU,IAAI,YAAY,EACnD,KAAK,cACH,IAAI,YAAY,kCAAmC,CACjD,QAAS,EACX,CAAC,CACH,EAEJ,CACA,MAAM,mBAAoB,CACxB,GAAI,CAAC,KAAK,YAAc,KAAK,eAAe,aAAa,QAAQ,EAC/D,OAAO,QAAQ,QAAQ,EAEzB,MAAM,IAAI,QAAS,SAAY,CAC7B,KAAK,eAAe,iBAAiB,gBAAiB,IAAM,QAAQ,EAAG,CACrE,KAAM,EACR,CAAC,EACD,KAAK,eAAe,aAAa,SAAU,EAAE,EAC7C,KAAK,UAAU,WAAW,EAC1B,SAAS,gBAAgB,UAAU,OAAO,YAAY,EACtD,KAAK,cACH,IAAI,YAAY,mCAAoC,CAClD,QAAS,EACX,CAAC,CACH,CACF,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,0BAA2B,yBAAyB,EAEjF,IAAI,WAAa,cAAc,WAAY,CACzC,mBAAoB,CAClB,KAAK,aAAe,SAAS,eAAe,sBAAsB,EAClE,KAAK,QAAU,SAAS,eAAe,mBAAmB,EAC1D,KAAK,QAAQ,iBAAiB,qBAAsB,KAAK,mBAAmB,KAAK,IAAI,CAAC,EACtF,KAAK,gBAAgB,CACvB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,aAAa,OAAO,CAClC,CACA,IAAI,QAAS,CACX,OAAO,KAAK,cAAc,UAAU,EAAE,aAAa,OAAO,CAC5D,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,MAAM,KAAK,aAAa,cAAc,CAAC,EAAE,OAAQ,MAAW,OAAS,EAAG,CACtF,CACA,MAAM,iBAAkB,CACtB,MAAM,aAAe,CAAC,EACtB,KAAK,YAAY,QAAS,MAAS,CACjC,aAAa,KACX,MACE,GAAG,OAAO,eAAe,OAAO,SAAS,eAAe,KAAK,aAC3D,YACF,CAAC,MAAM,KAAK,KAAK,SAAS,IAAI,uDAC5B,OAAO,eAAe,SAAS,yBACjC,EACF,CACF,EAGA,KAAK,cAAc,YAAY,EAAE,aAAa,OAAQ,mBAAmB,KAAK,MAAM,MAAM,KAAK,KAAK,uEAAuE,CAC7K,CAAC,EACD,MAAM,UAAY,MAAM,QAAQ,IAAI,YAAY,EAChD,MAAM,QAAQ,IACZ,UAAU,IAAI,MAAO,UAAa,CAChC,MAAM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,kBAAoB,IAAI,cAAc,+BAA+B,EACzE,WAAa,IAAI,cAAc,sCAAsC,EACnE,oBACF,kBAAkB,aAAa,SAAU,EAAE,EAC3C,KAAK,sBAAsB,YAAa,iBAAiB,EACzD,KAAK,QAAQ,UAAU,UAAU,EAErC,CAAC,CACH,CACF,CACA,mBAAmB,MAAO,CACxB,MAAM,OAAS,MAAM,OAAO,OAC5B,KAAK,QAAQ,UAAU,OAAO,eAAgB,OAAO,aAAa,WAAW,IAAM,SAAS,CAC9F,CACF,EACA,OAAO,eAAe,OAAO,cAAe,UAAU,EAEtD,IAAI,cAAgB,cAAc,iBAAkB,CAClD,mBAAoB,CAClB,IAAI,SAAW,KAAK,WAAW,MAAM,EACjC,UACF,SAAW,SAAS,MAAM,GAAG,EAC7B,KAAK,UAAY,SAAS,QAE1B,KAAK,UAAY,CAErB,CACA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,aAAa,EAE9D,IAAI,eAAiB,cAAc,iBAAkB,CACnD,MAAM,mBAAoB,CACxB,KAAK,OAAO,GAAG,QAAS,uBAAwB,KAAK,aAAa,KAAK,IAAI,CAAC,EAC5E,KAAK,OAAO,GAAG,QAAS,0BAA2B,KAAK,gBAAgB,KAAK,IAAI,CAAC,EAClF,KAAK,cAAc,CACrB,CACA,eAAgB,CACd,IAAI,SAAW,KAAK,WAAW,MAAM,EACjC,GAAK,KAAK,aAAa,SAAS,EAChC,UAAY,KACd,SAAW,SAAS,MAAM,GAAG,EACzB,SAAS,SAAS,EAAE,IACtB,KAAK,UAAU,IAAI,QAAQ,EAC3B,KAAK,aAAa,cAAe,QAAQ,EACzC,KAAK,aAAa,MAAO,OAAO,eAAe,QAAQ,cAAc,GAG3E,CACA,cAAe,CACb,IAAI,SAAW,KAAK,WAAW,MAAM,EACjC,GAAK,KAAK,aAAa,SAAS,EAChC,UAAY,IACd,SAAW,SAAS,MAAM,GAAG,EACzB,SAAS,SAAS,EAAE,GAAK,IAC3B,SAAS,KAAK,EAAE,EAElB,SAAW,SAAS,KAAK,GAAG,GAE5B,SAAW,GAEb,KAAK,WAAW,OAAQ,SAAU,GAAG,EACrC,KAAK,UAAU,IAAI,QAAQ,EAC3B,KAAK,aAAa,cAAe,QAAQ,EACzC,KAAK,aAAa,MAAO,OAAO,eAAe,QAAQ,cAAc,EACrE,SAAS,cAAc,kBAAkB,EAAE,UAAY,SAAS,MAAM,GAAG,EAAE,MAC7E,CACA,iBAAkB,CAChB,IAAI,SAAW,KAAK,WAAW,MAAM,EACjC,GAAK,KAAK,aAAa,SAAS,EAChC,UAAY,IACd,SAAW,SAAS,MAAM,GAAG,EACzB,SAAS,QAAQ,EAAE,EAAI,IACzB,SAAS,OAAO,SAAS,QAAQ,EAAE,EAAG,CAAC,EAEzC,SAAW,SAAS,KAAK,GAAG,EAC5B,KAAK,WAAW,OAAQ,SAAU,GAAG,EACrC,KAAK,UAAU,OAAO,QAAQ,EAC9B,KAAK,aAAa,cAAe,KAAK,EACtC,KAAK,aAAa,MAAO,OAAO,eAAe,QAAQ,aAAa,EACpE,SAAS,cAAc,kBAAkB,EAAE,UAAY,SAAS,MAAM,GAAG,EAAE,QAE3E,SAAS,cAAc,kBAAkB,EAAE,UAAY,EAErD,SAAS,cAAc,MAAM,EAAE,UAAU,SAAS,eAAe,GACnE,SAAS,eAAe,gBAAkB,EAAE,EAAE,OAAO,CAEzD,CACA,WAAW,MAAO,OAAQ,OAAQ,CAChC,MAAM,EAAI,IAAI,KACd,EAAE,QAAQ,EAAE,QAAQ,EAAI,OAAS,GAAK,GAAK,GAAK,GAAI,EACpD,IAAI,QAAU,WAAa,EAAE,YAAY,EACzC,SAAS,OAAS,MAAQ,IAAM,OAAS,IAAM,QAAU,SAC3D,CACA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,cAAc,EAEhE,IAAI,kBAAoB,cAAc,WAAY,CAChD,MAAM,mBAAoB,CACxB,GAAI,KAAK,oBAAsB,GAAI,CACjC,SAAS,eAAe,oBAAoB,EAAE,UAAY,SAC1D,MACF,CACA,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,KAAK,iBAAiB,2DAA2D,KAAK,SAAS,EACxJ,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,oBAAoB,EACxE,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,UAEnD,CAEA,IAAI,mBAAoB,CACtB,IAAI,SAAW,KAAK,WAAW,MAAM,EACrC,OAAI,UAAY,IACd,SAAW,SAAS,MAAM,GAAG,EACtB,SACJ,IAAK,MAAS,MAAQ,IAAI,EAC1B,MAAM,EAAG,KAAK,aAAa,EAC3B,KAAK,MAAM,GAET,EACT,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CAEA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,iBAAiB,EAEpE,IAAI,aAAe,cAAc,iBAAkB,CACjD,MAAM,mBAAoB,CACxB,IAAI,QAAU,KAAK,WAAW,MAAM,EAChC,SACF,QAAU,QAAQ,MAAM,GAAG,EAC3B,KAAK,UAAY,QAAQ,QAEzB,KAAK,UAAY,CAErB,CACA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,YAAY,EAE5D,IAAI,cAAgB,cAAc,iBAAkB,CAClD,mBAAoB,CAClB,KAAK,OAAO,GAAG,QAAS,uBAAwB,KAAK,YAAY,KAAK,IAAI,CAAC,EAC3E,KAAK,OAAO,GAAG,QAAS,0BAA2B,KAAK,eAAe,KAAK,IAAI,CAAC,EACjF,KAAK,aAAa,CACpB,CACA,cAAe,CACb,IAAI,QAAU,KAAK,WAAW,MAAM,EAChC,GAAK,KAAK,aAAa,SAAS,EAChC,SAAW,KACb,QAAU,QAAQ,MAAM,GAAG,EACvB,QAAQ,SAAS,EAAE,IACrB,KAAK,UAAU,IAAI,QAAQ,EAC3B,KAAK,aAAa,cAAe,QAAQ,EACzC,KAAK,aAAa,MAAO,OAAO,eAAe,QAAQ,aAAa,GAG1E,CACA,aAAc,CACZ,IAAI,QAAU,KAAK,WAAW,MAAM,EAChC,GAAK,KAAK,aAAa,SAAS,EAChC,SAAW,IACb,QAAU,QAAQ,MAAM,GAAG,EACvB,QAAQ,SAAS,EAAE,GAAK,IAC1B,QAAQ,KAAK,EAAE,EAEjB,QAAU,QAAQ,KAAK,GAAG,GAE1B,QAAU,GAEZ,KAAK,WAAW,OAAQ,QAAS,GAAG,EACpC,KAAK,UAAU,IAAI,QAAQ,EAC3B,KAAK,aAAa,cAAe,QAAQ,EACzC,KAAK,aAAa,MAAO,OAAO,eAAe,QAAQ,aAAa,EACpE,SAAS,cAAc,iBAAiB,EAAE,UAAY,QAAQ,MAAM,GAAG,EAAE,MAC3E,CACA,gBAAiB,CACf,IAAI,QAAU,KAAK,WAAW,MAAM,EAChC,GAAK,KAAK,aAAa,SAAS,EAChC,SAAW,IACb,QAAU,QAAQ,MAAM,GAAG,EACvB,QAAQ,QAAQ,EAAE,EAAI,IACxB,QAAQ,OAAO,QAAQ,QAAQ,EAAE,EAAG,CAAC,EAEvC,QAAU,QAAQ,KAAK,GAAG,EAC1B,KAAK,WAAW,OAAQ,QAAS,GAAG,EACpC,KAAK,UAAU,OAAO,QAAQ,EAC9B,KAAK,aAAa,cAAe,KAAK,EACtC,KAAK,aAAa,MAAO,OAAO,eAAe,QAAQ,YAAY,EACnE,SAAS,cAAc,iBAAiB,EAAE,UAAY,QAAQ,MAAM,GAAG,EAAE,QAEzE,SAAS,cAAc,iBAAiB,EAAE,UAAY,EAGpD,SAAS,cAAc,MAAM,EAAE,UAAU,SAAS,cAAc,GAClE,SAAS,eAAe,gBAAkB,EAAE,EAAE,OAAO,CAEzD,CACA,WAAW,MAAO,OAAQ,OAAQ,CAChC,MAAM,EAAI,IAAI,KACd,EAAE,QAAQ,EAAE,QAAQ,EAAI,OAAS,GAAK,GAAK,GAAK,GAAI,EACpD,IAAI,QAAU,WAAa,EAAE,YAAY,EACzC,SAAS,OAAS,MAAQ,IAAM,OAAS,IAAM,QAAU,SAC3D,CACA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,aAAa,EAE9D,IAAI,iBAAmB,cAAc,WAAY,CAC/C,MAAM,mBAAoB,CACxB,GAAI,KAAK,oBAAsB,GAAI,CACjC,SAAS,eAAe,mBAAmB,EAAE,UAAY,SACzD,MACF,CACA,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,KAAK,iBAAiB,2DAA2D,KAAK,SAAS,EACxJ,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,mBAAmB,EACvE,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,UAEnD,CAEA,IAAI,mBAAoB,CACtB,IAAI,QAAU,KAAK,WAAW,MAAM,EACpC,OAAI,SAAW,IACb,QAAU,QAAQ,MAAM,GAAG,EACpB,QACJ,IAAK,MAAS,MAAQ,IAAI,EAC1B,MAAM,EAAG,KAAK,aAAa,EAC3B,KAAK,MAAM,GAET,EACT,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CAEA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,gBAAgB,EAElE,IAAI,UAAY,cAAc,iBAAkB,CAC9C,mBAAoB,CACd,OAAO,SAAW,OAAO,QAAQ,aACnC,KAAK,WAAW,GAAG,yBAA2B,OAC5C,yBAAyB,MAAO,KAAM,IAAO,KAAK,KAAO,EAAK,CAChE,EACA,KAAK,WAAW,GAAG,2BAA6B,OAC9C,yBAAyB,MAAO,KAAM,IAAO,KAAK,KAAO,EAAM,CACjE,GAEF,KAAK,OAAO,GAAG,QAAS,iCAAkC,KAAK,cAAc,KAAK,IAAI,CAAC,EACvF,KAAK,OAAO,GAAG,QAAS,kCAAmC,KAAK,eAAe,KAAK,IAAI,CAAC,EACzF,OAAO,QAAQ,aAAa,CAC1B,CACE,KAAM,uBACN,QAAS,MACT,OAAQ,KAAK,kBAAkB,KAAK,IAAI,CAC1C,CACF,CAAC,CACH,CACA,IAAI,KAAK,MAAO,CACd,KAAK,gBAAgB,SAAU,CAAC,KAAK,CACvC,CACA,mBAAoB,CACd,KAAK,WAAW,eAAe,GAAK,OACtC,KAAK,KAAO,GAEZ,KAAK,KAAO,EAEhB,CACA,eAAgB,CACd,KAAK,WAAW,gBAAiB,GAAM,GAAG,EAC1C,KAAK,KAAO,EACd,CACA,gBAAiB,CACf,KAAK,KAAO,EACd,CACA,WAAW,MAAO,OAAQ,OAAQ,CAChC,MAAM,EAAI,IAAI,KACd,EAAE,QAAQ,EAAE,QAAQ,EAAI,OAAS,GAAK,GAAK,GAAK,GAAI,EACpD,IAAI,QAAU,WAAa,EAAE,YAAY,EACzC,SAAS,OAAS,MAAQ,IAAM,OAAS,IAAM,QAAU,SAC3D,CACA,WAAW,MAAO,CAChB,IAAI,KAAO,MAAQ,IACf,GAAK,SAAS,OAAO,MAAM,GAAG,EAClC,QAAS,EAAI,EAAG,EAAI,GAAG,OAAQ,IAAK,CAClC,IAAI,EAAI,GAAG,CAAC,EACZ,KAAO,EAAE,OAAO,CAAC,GAAK,KACpB,EAAI,EAAE,UAAU,CAAC,EAEnB,GAAI,EAAE,QAAQ,IAAI,GAAK,EACrB,OAAO,EAAE,UAAU,KAAK,OAAQ,EAAE,MAAM,CAE5C,CACA,MAAO,EACT,CACF,EACA,OAAO,eAAe,OAAO,eAAgB,SAAS,EAEtD,yBAA2B,cAAc,WAAY,CACnD,MAAM,mBAAoB,CACxB,GAAI,CAAC,KAAK,aAAa,8BAA8B,EACnD,OAEF,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,yBAAyB,eAAe,KAAK,SAAS,UAAU,KAAK,oBAAoB,eAAe,KAAK,SAAS,EACxJ,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,2BAA2B,EAC/E,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,UAEnD,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACA,IAAI,sBAAuB,CACzB,OAAO,SAAS,KAAK,aAAa,uBAAuB,GAAK,CAAC,CACjE,CACF,EACA,OAAO,eAAe,OAAO,4BAA6B,wBAAwB,EAElF,IAAI,yBAA2B,cAAc,WAAY,CACvD,MAAM,mBAAoB,CACxB,GAAI,KAAK,oBAAsB,GAC7B,OAEF,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,KAAK,iBAAiB,2DAA2D,KAAK,SAAS,EACxJ,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,2BAA2B,EAC/E,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,UAEnD,CACA,IAAI,mBAAoB,CACtB,MAAM,MAAQ,KAAK,MAAM,aAAa,QAAQ,iCAAiC,GAAK,IAAI,EACxF,OACE,KAAK,aAAa,oBAAoB,GACtC,MAAM,SAAS,SAAS,KAAK,aAAa,oBAAoB,CAAC,CAAC,GAEhE,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,aAAa,oBAAoB,CAAC,CAAC,EAAG,CAAC,EAE3E,MACJ,IAAK,MAAS,MAAQ,IAAI,EAC1B,MAAM,EAAG,KAAK,aAAa,EAC3B,KAAK,MAAM,CAChB,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,aAAa,gBAAgB,GAAK,CAChD,CACF,EACA,OAAO,eAAe,OAAO,4BAA6B,wBAAwB,EAElF,IAAI,8BAAgC,cAAc,qBAAsB,CACtE,MAAM,mBAAoB,CAExB,GADA,MAAM,kBAAkB,EACpB,KAAK,oBAAsB,GAC7B,OAEF,SACG,eAAe,gDAAgD,EAC/D,UAAU,IAAI,QAAQ,EACzB,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,KAAK,iBAAiB,2DAA2D,KAAK,SAAS,EACxJ,EAEM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,iCAAiC,EACrF,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,WAEjD,MAAM,qBAAuB,IAAI,cAAc,0BAA0B,EAMzE,GALI,qBAAqB,cAAc,IACrC,SAAS,cAAc,0BAA0B,EAAE,UACjD,qBAAqB,WAGrB,KAAK,aAAa,oBAAoB,EAAG,CAC3C,KAAK,kBAAoB,KAAK,UAAU,SAAS,mBAAmB,EAAI,OAAS,QACjF,MAAM,YAAc,OAAO,WAAW,KAAK,aAAa,oBAAoB,CAAC,EAC7E,YAAY,YAAY,KAAK,0BAA0B,KAAK,IAAI,CAAC,EACjE,KAAK,0BAA0B,WAAW,CAC5C,CACA,KAAK,OAAO,GAAG,QAAS,mBAAoB,IAAO,KAAK,KAAO,EAAM,CACvE,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,QACH,SAAS,gBAAgB,UAAU,OAAO,aAAc,KAAK,IAAI,CAEvE,CACA,0BAA0B,MAAO,CAC/B,KAAK,UAAU,OAAO,mBAAmB,GAEtC,KAAK,oBAAsB,QAAU,CAAC,MAAM,SAC5C,KAAK,oBAAsB,QAAU,MAAM,UAE5C,KAAK,UAAU,IAAI,mBAAmB,CAE1C,CACA,IAAI,mBAAoB,CACtB,MAAM,MAAQ,KAAK,MAAM,aAAa,QAAQ,iCAAiC,GAAK,IAAI,EACxF,OACE,KAAK,aAAa,oBAAoB,GACtC,MAAM,SAAS,SAAS,KAAK,aAAa,oBAAoB,CAAC,CAAC,GAEhE,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,aAAa,oBAAoB,CAAC,CAAC,EAAG,CAAC,EAE3E,MACJ,IAAK,MAAS,MAAQ,IAAI,EAC1B,MAAM,EAAG,KAAK,aAAa,EAC3B,KAAK,MAAM,CAChB,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,aAAa,gBAAgB,GAAK,CAChD,CACF,EACA,OAAO,eAAe,OAAO,kCAAmC,6BAA6B,EAE7F,IAAI,oCAAsC,cAAc,iBAAkB,CAAC,EAC3E,OAAO,eAAe,OAAO,2BAA4B,mCAAmC,EAE5F,IAAI,eAAiB,cAAc,WAAY,CAC7C,MAAM,mBAAoB,CACxB,GAAI,KAAK,oBAAsB,GAC7B,OAEF,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,KAAK,iBAAiB,2DAA2D,KAAK,SAAS,EACxJ,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,iBAAiB,EACrE,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,WAEjD,MAAM,WAAa,SAAS,eAAe,OAAO,EAClD,WAAW,QAAU,IAAM,CACzB,SAAS,eAAe,mBAAmB,EAAE,UAAU,OAAO,cAAc,CAC9E,CACF,CAEA,IAAI,mBAAoB,CACtB,IAAI,IAAM,KAAK,aAAa,SAAS,EACrC,OAAI,KAAO,IACT,IAAM,IAAI,MAAM,GAAG,EACZ,IAAI,IAAK,MAAS,MAAQ,IAAI,EAAE,KAAK,MAAM,GAE7C,EACT,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,SAAW,cAAc,WAAY,CACvC,MAAM,mBAAoB,CACxB,GAAI,KAAK,oBAAsB,GAC7B,OAEF,MAAM,SAAW,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,KAAK,iBAAiB,2DAA2D,KAAK,SAAS,EACxJ,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,MAAM,8BAAgC,IAAI,cAAc,WAAW,EAC/D,8BAA8B,cAAc,IAC9C,KAAK,UAAY,8BAA8B,WAGjD,MAAM,WAAa,SAAS,eAAe,OAAO,EAClD,WAAW,QAAU,IAAM,CACzB,SAAS,eAAe,mBAAmB,EAAE,UAAU,OAAO,cAAc,CAC9E,CACF,CAEA,IAAI,mBAAoB,CACtB,IAAI,IAAM,KAAK,aAAa,SAAS,EACrC,OAAI,KAAO,IACT,IAAM,IAAI,MAAM,GAAG,EACZ,IAAI,IAAK,MAAS,MAAQ,IAAI,EAAE,KAAK,MAAM,GAE7C,EACT,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACF,EACA,OAAO,eAAe,OAAO,YAAa,QAAQ,EAElD,IAAI,mBAAqB,cAAc,WAAY,CACjD,MAAM,mBAAoB,CACpB,KAAK,oBAAsB,IAAM,SAAS,eAAe,oBAAoB,GAAK,OAGtF,KAAK,wBAA0B,SAAS,KAAK,mBAAmB,KAAK,IAAI,EAAG,GAAG,EAC/E,OAAO,iBAAiB,SAAU,KAAK,uBAAuB,EAChE,CAEA,mBAAmB,MAAO,CACxB,IAAI,SAAW,SAAS,eAAe,oBAAoB,EACvD,OAAO,QAAU,SAAS,UAAY,GACpC,SAAS,eAAe,oBAAoB,EAAE,WAAa,KAC7D,SAAS,eAAe,oBAAoB,EAAE,UAAU,IAAI,SAAS,EACrE,KAAK,UAAU,EAGrB,CAEA,WAAY,CACV,IAAI,KAAO,SAAS,SAAS,eAAe,cAAc,EAAE,KAAK,EAC7D,SAAW,SAAS,SAAS,eAAe,aAAa,EAAE,KAAK,EAChE,SAAW,KAAO,EACtB,GAAI,UAAY,SAAU,CACxB,MAAM,SAAW,IAAI,SAAS,SAAS,eAAe,sBAAsB,CAAC,EAC7E,IAAI,qBAAuB,IAAI,gBAAgB,QAAQ,EAAE,SAAS,EAC9D,qBAAqB,QAAQ,QAAU,IAAI,GAAK,GAClD,qBAAuB,qBAAuB,SAAW,SAEzD,qBAAuB,qBAAqB,QAAQ,QAAU,KAAM,QAAU,QAAQ,EAExF,SAAS,eAAe,2BAA2B,EAAE,MAAM,QAAU,QACrE,IAAIC,KAAM,GACR,OAAO,SAAS,QAClB,IAAI,oBAAoB,eAAe,KAAK,aAAa,YAAY,CAAC,GACtE,MAAMA,IAAG,EACN,KAAM,GAAM,EAAE,KAAK,CAAC,EACpB,KAAM,GAAM,KAAK,mBAAmB,CAAC,CAAC,CAC3C,CACF,CAEA,mBAAmB,QAAS,CAG1B,MAAM,gBAFS,IAAI,UAAU,EACT,gBAAgB,QAAS,WAAW,EAC3B,eAAe,gBAAgB,EAC5D,GAAI,gBAAgB,SAAS,OAAQ,CACnC,IAAI,IAAM,GACV,QAAS,EAAI,EAAG,EAAI,gBAAgB,SAAS,OAAQ,IACnD,SAAS,eAAe,gBAAgB,EAAE,OAAO,gBAAgB,SAAS,CAAC,CAAC,EAC5E,IAEF,IAAI,KAAO,SAAS,SAAS,eAAe,cAAc,EAAE,KAAK,EAAI,EACrE,SAAS,eAAe,cAAc,EAAE,MAAQ,KAC5C,OAAO,QAAU,SAAS,eAAe,oBAAoB,EAAE,UAAY,IAC7E,SAAS,eAAe,oBAAoB,EAAE,UAAY,GAC1D,KAAK,wBAA0B,SAAS,KAAK,mBAAmB,KAAK,IAAI,EAAG,GAAG,EAC/E,OAAO,iBAAiB,SAAU,KAAK,uBAAuB,EAElE,CACA,SAAS,eAAe,2BAA2B,EAAE,MAAM,QAAU,MACvE,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,kBAAkB,EAErE,SAAS,qBAAqB,MAAO,KAAM,CACzC,IAAI,IAAM,GAUV,GATI,OAAO,OAAU,SACnB,IAAM,MAEF,MAAM,cACR,IAAM,MAAM,cAAiB,IAE7B,IAAM,MAAM,IAGZ,OAAS,KACX,OAAO,IAET,GAAI,OAAS,SACX,OAAO,IAAI,QAAQ,YAAa,EAAE,EAEpC,MAAM,MAAQ,IAAI,MAAM,gEAAgE,EACxF,GAAI,MAAO,CACT,MAAM,OAAS,IAAI,MAAM,MAAM,CAAC,CAAC,EAC3B,OAAS,MAAM,CAAC,EACtB,OAAQ,OAAO,CAAC,EAAI,IAAM,KAAO,QAAQ,QAAQ,YAAa,EAAE,CAClE,KACE,QAAO,IAEX,CAEA,SAAS,iBAAiB,MAAO,SAAU,CACzC,IAAI,OAAS,CAAC,EACV,eAAiB,oBAAoB,MAAO,QAAQ,EACxD,OAAI,OAAO,OAAU,WACnB,eAAiB,UAEnB,eAAe,QAAS,eAAkB,CACxC,OAAO,KAAK,GAAG,qBAAqB,MAAO,cAAgB,GAAG,CAAC,IAAI,aAAa,GAAG,CACrF,CAAC,EACM,OAAO,KAAK,GAAG,CACxB,CAEA,SAAS,oBAAoB,MAAO,aAAc,CAChD,IAAI,eAAiB,CAAC,EAClB,WAAa,MAAM,cAAiB,MACxC,oBAAa,QAAS,OAAU,CAC1B,YAAc,OAChB,eAAe,KAAK,KAAK,CAE7B,CAAC,EACM,cACT,CAEA,SAAS,YAAY,MAAO,CAC1B,OAAO,IAAI,QAAS,SAAY,CAC1B,CAAC,OAAS,MAAM,UAAY,OAAS,MAAM,SAC7C,QAAQ,EAER,MAAM,OAAS,IAAM,QAAQ,CAEjC,CAAC,CACH,CAEA,IAAI,kBAAoB,KAAM,CAC5B,YAAY,OAAQ,CAClB,KAAK,QAAU,OACf,KAAK,WAAa,OAClB,KAAK,UAAY,QAAQ,QAAQ,CACnC,CACA,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CACA,IAAI,kBAAmB,CACrB,OAAI,KAAK,mBAAmB,yBACnB,CAAC,KAAK,OAAO,EAEb,KAAK,QAAQ,gBAExB,CACA,QAAS,CACP,KAAK,iBAAiB,QAAS,iBAAoB,gBAAgB,OAAO,CAAC,CAC7E,CACA,QAAS,CACP,KAAK,iBAAiB,QAAS,iBAAoB,gBAAgB,OAAO,CAAC,CAC7E,CACA,MAAO,CACL,KAAK,WAAa,UAClB,KAAK,QAAQ,KAAK,EAClB,KAAK,UAAY,KAAK,QAAQ,SAC9B,KAAK,UAAU,KACb,IAAM,CACJ,KAAK,WAAa,UACpB,EACC,WAAc,CACb,KAAK,WAAa,MACpB,CACF,CACF,CACF,EACI,yBAA2B,KAAM,CACnC,YAAY,OAAQ,UAAW,QAAU,CAAC,EAAG,CACtC,SAGD,cAAe,OACjB,KAAK,iBAAmB,IAAI,UAAU,IAAI,eAAe,OAAQ,UAAW,OAAO,CAAC,GAEpF,QAAQ,KAAU,WAClB,KAAK,iBAAmB,OAAO,QAAQ,UAAW,OAAO,EACzD,KAAK,iBAAiB,MAAM,GAE9B,KAAK,iBAAiB,iBAAiB,SAAU,IAAM,CACrD,OAAO,MAAM,QAAU,UAAU,eAAe,SAAS,EACrD,UAAU,QAAW,UAAU,QAAW,OAAS,CAAC,EACpD,KACJ,OAAO,MAAM,WAAa,UAAU,eAAe,YAAY,EAC3D,UAAU,WAAc,UAAU,WAAc,OAAS,CAAC,EAC1D,IACN,CAAC,EACH,CACA,IAAI,UAAW,CACb,OAAK,KAAK,iBAGH,KAAK,iBAAiB,SACzB,KAAK,iBAAiB,SACtB,IAAI,QAAS,SAAa,KAAK,iBAAiB,SAAW,OAAQ,EAJ9D,QAAQ,QAAQ,CAK3B,CACA,MAAO,CACD,KAAK,mBACP,KAAK,iBAAiB,UAAY,KAClC,KAAK,iBAAiB,KAAK,EAE/B,CACA,QAAS,CACH,KAAK,kBACP,KAAK,iBAAiB,OAAO,CAEjC,CACA,QAAS,CACH,KAAK,kBACP,KAAK,iBAAiB,OAAO,CAEjC,CACF,EACI,cAAgB,KAAM,CACxB,YAAY,gBAAiB,CAC3B,KAAK,iBAAmB,gBACxB,KAAK,UAAY,QAAQ,QAAQ,CACnC,CACA,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,iBAAiB,QAAS,QAC7B,kBAAkB,yBAA2B,OAAS,OAAO,gBACrE,CACH,CACF,EACI,iBAAmB,cAAc,aAAc,CACjD,MAAO,CACL,MAAM,SAAW,CAAC,EAClB,UAAW,UAAU,KAAK,iBACxB,OAAO,KAAK,EACZ,SAAS,KAAK,OAAO,QAAQ,EAE/B,KAAK,UAAY,QAAQ,IAAI,QAAQ,CACvC,CACF,EACI,iBAAmB,cAAc,aAAc,CACjD,MAAO,CACL,KAAK,UAAY,IAAI,QAAQ,MAAO,QAAS,SAAW,CACtD,GAAI,CACF,UAAW,UAAU,KAAK,iBACxB,OAAO,KAAK,EACZ,MAAM,OAAO,SAEf,QAAQ,CACV,MAAoB,CAClB,OAAO,CACT,CACF,CAAC,CACH,CACF,EAEI,gBAAkB,cAAc,WAAY,CAC9C,MAAM,mBAAoB,CACxB,KAAK,mBAAqB,CAAC,EAC3B,KAAK,iBAAiB,yBAA2B,OAAU,CACzD,MAAM,KAAK,MAAM,OAAO,QAAQ,EAAE,QAC/B,MAAU,KAAK,MAAM,WAAa,KAAK,SAAW,UAAY,QACjE,CACF,CAAC,EACG,cAAc,qBAAqB,IACrC,KAAK,aAAa,sBAAuB,EAAE,EAC3C,MAAM,KAAK,KAAK,iBAAiB,iCAAiC,CAAC,EAAE,QAAS,MAAS,CACrF,KAAK,gBAAgB,QAAQ,EAC7B,KAAK,gBAAgB,qBAAqB,CAC5C,CAAC,EAEL,CACA,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,MAAM,kBAAkB,eAAgB,UAAY,GAAM,CACpD,iBAAmB,UACrB,KAAK,aAAa,SAAU,EAAE,EAEhC,KAAK,mBAAmB,QAAS,YAAe,WAAW,OAAO,CAAC,EACnE,KAAK,mBAAqB,CAAC,EAC3B,IAAI,UAAY,KACd,aAAe,MAAM,qBACnB,KAAK,iBACH,+CACF,CACF,EACE,cAAgB,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,EACjF,OAAQ,eAAgB,CACtB,IAAK,QACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,yBACF,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,GACZ,CACF,EACA,IAAI,iBACF,aAAa,IAAK,MACT,IAAI,yBAAyB,KAAM,CACxC,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,UAAW,QAAQ,CAClC,CAAC,CACF,CACH,CACF,CAAC,CACH,EACA,MACF,IAAK,OACH,UAAY,IAAI,kBACd,IAAI,yBACF,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,CACF,EACA,MACF,IAAK,SACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,iBACF,aAAa,QAAQ,EAAE,IAAK,MACnB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,CACD,CACH,EACA,IAAI,iBACF,cAAc,IAAK,MACZ,KAAK,UAAU,SAAS,qCAAqC,EAazD,IAAI,yBACT,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,EAChC,SAAU,CAAC,iBAAkB,mBAAmB,CAClD,EACA,CACE,SAAU,IACV,OAAQ,sCACV,CACF,EAtBO,IAAI,yBACT,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,EAChC,SAAU,CAAC,iBAAkB,mBAAmB,CAClD,EACA,CACE,SAAU,IACV,OAAQ,sCACV,CACF,CAcH,CACH,CACF,CAAC,CACH,EACA,KACJ,CACA,MAAM,KAAK,kBAAkB,UAAW,SAAS,EAC7C,iBAAmB,UACrB,KAAK,aAAa,SAAU,EAAE,CAElC,CACA,MAAM,kBAAkB,eAAgB,UAAY,GAAM,iBAAmB,GAAO,CAClF,KAAK,gBAAgB,QAAQ,EAC7B,MAAM,KAAK,YAAY,EACvB,IAAI,UAAY,KACd,aAAe,MAAM,qBACnB,KAAK,iBACH,+CACF,CACF,EACA,cAAgB,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,EAC/E,OAAQ,eAAgB,CACtB,IAAK,QACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,yBACF,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,iBACN,CAAC,oBAAqB,gBAAgB,EACtC,CAAC,oBAAqB,gBAAgB,CAC5C,EACA,CACE,SAAU,IACV,OAAQ,0BACV,CACF,EACA,IAAI,iBACF,aAAa,IAAI,CAAC,KAAM,QACf,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,EAChD,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,qCACV,CACF,CACD,CACH,CACF,CAAC,CACH,EACA,MACF,IAAK,OACH,UAAY,IAAI,kBACd,IAAI,yBACF,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,SAAU,SAAS,CAClC,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,CACF,EACA,MACF,IAAK,SACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,iBACF,cAAc,IAAK,MACZ,KAAK,UAAU,SAAS,qCAAqC,EAczD,IAAI,yBACT,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,qCACV,CACF,EAxBO,IAAI,yBACT,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,qCACV,CACF,CAeH,CACH,EACA,IAAI,iBACF,aAAa,IAAI,CAAC,KAAM,QACf,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,EAChD,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,qCACV,CACF,CACD,CACH,CACF,CAAC,CACH,EACA,KACJ,CACA,OAAO,KAAK,kBAAkB,UAAW,SAAS,CACpD,CACA,MAAM,kBAAkB,UAAW,UAAW,CAC5C,YAAK,mBAAmB,KAAK,SAAS,EACtC,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EACzC,UAAU,QACnB,CACA,MAAM,aAAc,CAClB,OAAO,QAAQ,IAAI,KAAK,kBAAkB,EAAE,IAAK,OAAU,YAAY,KAAK,CAAC,CAAC,CAChF,CACA,gBAAiB,CACf,KAAK,kBAAkB,EAAE,QAAS,OAAU,CAC1C,MAAM,aAAa,UAAW,OAAO,CACvC,CAAC,CACH,CACA,mBAAoB,CAClB,OAAO,MAAM,KAAK,KAAK,iBAAiB,KAAK,CAAC,EAAE,OAAQ,OAC/C,iBAAiB,MAAM,aAAa,EAAE,UAAY,MAC1D,CACH,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,eAAe,EAEhE,IAAI,6BAA+B,CACjC,qBAAqB,UAAY,GAAI,CACnC,KAAK,iBAAiB,aAAe,OAAU,CAC7C,KAAK,kBAAoB,MAAM,QAAQ,CAAC,EAAE,OAC5C,CAAC,EACD,KAAK,iBACH,YACC,OAAU,CACT,MAAM,aAAe,MAAM,QAAQ,CAAC,EAAE,QAAU,KAAK,kBACjD,KAAK,IAAI,YAAY,EAAI,WAC3B,MAAM,eAAe,CAEzB,EACA,CACE,QAAS,EACX,CACF,CACF,CACF,EAEI,YAAc,cAAc,iBAAkB,CAChD,mBAAoB,CAClB,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,kBAAkB,CAAC,EACrE,KAAK,SAAW,KAAK,cAAc,aAAa,EAChD,KAAK,oBAAsB,GACvB,KAAK,UAAU,OAAS,IACtB,QAAQ,aACV,KAAK,iBAAiB,yBAA0B,KAAK,YAAY,KAAK,IAAI,CAAC,EAC3E,KAAK,iBAAiB,uBAAyB,OAAU,CACvD,KAAK,YAAY,EACjB,KAAK,qBAAqB,WAAW,EAC/B,CAAC,MAAM,OAAO,MAAQ,MAAM,OAAO,UACvC,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,CAEtD,CAAC,GAEH,KAAK,iBAAiB,aAAc,KAAK,SAAS,KAAK,IAAI,CAAC,EAC5D,KAAK,iBAAiB,YAAa,KAAK,KAAK,KAAK,IAAI,CAAC,EACvD,KAAK,iBAAiB,sBAAwB,OAAU,KAAK,OAAO,MAAM,OAAO,KAAK,CAAC,EACvF,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,qBAAqB,GAE5B,KAAK,iCAAiC,CACxC,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,UAAU,UAAW,MAAS,KAAK,QAAQ,CACzD,CACA,IAAI,gBAAiB,CACnB,OAAI,cAAc,qBAAqB,EAC9B,OAEA,KAAK,aAAa,iBAAiB,CAE9C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,KAAK,UAAU,KAAK,aAAa,EACpC,kBAAkB,KAAK,cAAc,EACrC,MAAO,OAAU,CAAC,CAAC,EACtB,KAAK,YAAY,CACnB,CACA,UAAW,CACT,KAAK,QACF,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,OAClE,GACA,EACF,CACF,CACA,MAAO,CACL,KAAK,QACF,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,OAClE,GACA,EACF,CACF,CACA,MAAM,OAAO,MAAO,iBAAmB,GAAM,iBAAmB,GAAO,CACrE,GAAI,KAAK,iBAAmB,UAAY,KAAK,oBAC3C,OAEF,KAAK,oBAAsB,GAC3B,MAAM,aAAe,KAAK,UAAU,KAAK,aAAa,EACpD,QAAU,KAAK,UAAU,KAAK,EAChC,KAAK,WAAW,QAAQ,MAAQ,GAAK,KAAK,UAAU,MAAM,EAAE,eAAe,EACvE,cAAgB,eAAiB,UAC/B,KAAK,iBAAmB,SAC1B,aAAa,kBAAkB,KAAK,eAAgB,gBAAgB,EAEpE,MAAM,aAAa,kBAAkB,KAAK,eAAgB,gBAAgB,GAG1E,KAAK,WACP,KAAK,SAAS,cAAgB,QAAQ,OAExC,MAAM,QACH,kBAAkB,KAAK,eAAgB,iBAAkB,gBAAgB,EACzE,MAAO,OAAU,CAAC,CAAC,EACtB,KAAK,oBAAsB,EAC7B,CACA,aAAc,CACZ,KAAK,MAAM,YAAY,iCAAkC,QAAQ,CACnE,CACA,aAAc,CACR,KAAK,aAAa,WAAW,GAC/B,KAAK,MAAM,YAAY,iCAAkC,SAAS,CAEtE,CACF,EACA,OAAO,OAAO,YAAY,UAAW,4BAA4B,EACjE,OAAO,eAAe,OAAO,eAAgB,WAAW,EAExD,IAAI,wBAA0B,cAAc,WAAY,CACtD,MAAM,mBAAoB,CACxB,KAAK,mBAAqB,CAAC,EAC3B,KAAK,iBAAiB,yBAA2B,OAAU,CACzD,MAAM,KAAK,MAAM,OAAO,QAAQ,EAAE,QAC/B,MAAU,KAAK,MAAM,WAAa,KAAK,SAAW,UAAY,QACjE,CACF,CAAC,EACG,cAAc,qBAAqB,IACrC,KAAK,aAAa,sBAAuB,EAAE,EAC3C,MAAM,KAAK,KAAK,iBAAiB,iCAAiC,CAAC,EAAE,QAAS,MAAS,CACrF,KAAK,gBAAgB,QAAQ,EAC7B,KAAK,gBAAgB,qBAAqB,CAC5C,CAAC,EAEL,CACA,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,MAAM,kBAAkB,eAAgB,UAAY,GAAM,CACpD,iBAAmB,UACrB,KAAK,aAAa,SAAU,EAAE,EAEhC,KAAK,mBAAmB,QAAS,YAAe,WAAW,OAAO,CAAC,EACnE,KAAK,mBAAqB,CAAC,EAC3B,IAAI,UAAY,KACd,aAAe,MAAM,qBACnB,KAAK,iBACH,+CACF,CACF,EACE,cAAgB,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,EACjF,OAAQ,eAAgB,CACtB,IAAK,QACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,yBACF,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,GACZ,CACF,EACA,IAAI,iBACF,aAAa,IAAK,MACT,IAAI,yBAAyB,KAAM,CACxC,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,UAAW,QAAQ,CAClC,CAAC,CACF,CACH,CACF,CAAC,CACH,EACA,MACF,IAAK,OACH,UAAY,IAAI,kBACd,IAAI,yBACF,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,CACF,EACA,MACF,IAAK,SACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,iBACF,aAAa,QAAQ,EAAE,IAAK,MACnB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,CACD,CACH,EACA,IAAI,iBACF,cAAc,IAAK,MACZ,KAAK,UAAU,SAAS,qCAAqC,EAazD,IAAI,yBACT,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,EAChC,SAAU,CAAC,iBAAkB,mBAAmB,CAClD,EACA,CACE,SAAU,IACV,OAAQ,sCACV,CACF,EAtBO,IAAI,yBACT,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,EAChC,SAAU,CAAC,iBAAkB,mBAAmB,CAClD,EACA,CACE,SAAU,IACV,OAAQ,sCACV,CACF,CAcH,CACH,CACF,CAAC,CACH,EACA,KACJ,CACA,MAAM,KAAK,kBAAkB,UAAW,SAAS,EAC7C,iBAAmB,UACrB,KAAK,aAAa,SAAU,EAAE,CAElC,CACA,MAAM,kBAAkB,eAAgB,UAAY,GAAM,iBAAmB,GAAO,CAClF,KAAK,gBAAgB,QAAQ,EAC7B,MAAM,KAAK,YAAY,EACvB,IAAI,UAAY,KACd,aAAe,MAAM,qBACnB,KAAK,iBACH,+CACF,CACF,EACA,cAAgB,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,EAC/E,OAAQ,eAAgB,CACtB,IAAK,QACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,yBACF,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,iBACN,CAAC,oBAAqB,gBAAgB,EACtC,CAAC,oBAAqB,gBAAgB,CAC5C,EACA,CACE,SAAU,IACV,OAAQ,0BACV,CACF,EACA,IAAI,iBACF,aAAa,IAAI,CAAC,KAAM,QACf,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,EAChD,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,qCACV,CACF,CACD,CACH,CACF,CAAC,CACH,EACA,MACF,IAAK,OACH,UAAY,IAAI,kBACd,IAAI,yBACF,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,SAAU,SAAS,CAClC,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,CACF,EACA,MACF,IAAK,SACH,UAAY,IAAI,kBACd,IAAI,iBAAiB,CACnB,IAAI,iBACF,cAAc,IAAK,MACZ,KAAK,UAAU,SAAS,qCAAqC,EAczD,IAAI,yBACT,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,qCACV,CACF,EAxBO,IAAI,yBACT,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,qCACV,CACF,CAeH,CACH,EACA,IAAI,iBACF,aAAa,IAAI,CAAC,KAAM,QACf,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,EAChD,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,qCACV,CACF,CACD,CACH,CACF,CAAC,CACH,EACA,KACJ,CACA,OAAO,KAAK,kBAAkB,UAAW,SAAS,CACpD,CACA,MAAM,kBAAkB,UAAW,UAAW,CAC5C,YAAK,mBAAmB,KAAK,SAAS,EACtC,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EACzC,UAAU,QACnB,CACA,MAAM,aAAc,CAClB,OAAO,QAAQ,IAAI,KAAK,kBAAkB,EAAE,IAAK,OAAU,YAAY,KAAK,CAAC,CAAC,CAChF,CACA,gBAAiB,CACf,KAAK,kBAAkB,EAAE,QAAS,OAAU,CAC1C,MAAM,aAAa,UAAW,OAAO,CACvC,CAAC,CACH,CACA,mBAAoB,CAClB,OAAO,MAAM,KAAK,KAAK,iBAAiB,KAAK,CAAC,EAAE,OAAQ,OAC/C,iBAAiB,MAAM,aAAa,EAAE,UAAY,MAC1D,CACH,CACF,EACA,OAAO,eAAe,OAAO,2BAA4B,uBAAuB,EAEhF,IAAI,oBAAsB,cAAc,iBAAkB,CACxD,mBAAoB,CAClB,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,0BAA0B,CAAC,EAC7E,KAAK,SAAW,KAAK,cAAc,aAAa,EAChD,KAAK,oBAAsB,GACvB,KAAK,UAAU,OAAS,IAC1B,KAAK,iBAAiB,aAAc,KAAK,SAAS,KAAK,IAAI,CAAC,EAC5D,KAAK,iBAAiB,YAAa,KAAK,KAAK,KAAK,IAAI,CAAC,EACvD,KAAK,iBAAiB,sBAAwB,OAAU,KAAK,OAAO,MAAM,OAAO,KAAK,CAAC,EACvF,KAAK,qBAAqB,GAE5B,KAAK,iCAAiC,CACxC,CACA,IAAI,eAAgB,CAClB,OAAI,KAAK,UAAU,UAAW,MAAS,KAAK,QAAQ,EAAI,EAC/C,EAEF,KAAK,UAAU,UAAW,MAAS,KAAK,QAAQ,CACzD,CACA,IAAI,gBAAiB,CACnB,OAAI,cAAc,qBAAqB,EAC9B,OAEA,KAAK,aAAa,iBAAiB,CAE9C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC1B,KAAK,UAAU,SACjB,MAAM,KAAK,UAAU,KAAK,aAAa,EACpC,kBAAkB,KAAK,cAAc,EACrC,MAAO,OAAU,CAAC,CAAC,EACtB,KAAK,YAAY,EAErB,CACA,UAAW,CACT,KAAK,QACF,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,OAClE,GACA,EACF,CACF,CACA,MAAO,CACL,KAAK,QACF,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,OAClE,GACA,EACF,CACF,CACA,MAAM,OAAO,MAAO,iBAAmB,GAAM,iBAAmB,GAAO,CACrE,GAAI,KAAK,iBAAmB,UAAY,KAAK,oBAC3C,OAEF,KAAK,oBAAsB,GAC3B,MAAM,aAAe,KAAK,UAAU,KAAK,aAAa,EAChD,QAAU,KAAK,UAAU,KAAK,EACpC,KAAK,WAAW,QAAQ,MAAQ,GAAK,KAAK,UAAU,MAAM,EAAE,eAAe,EACvE,cAAgB,eAAiB,UAC/B,KAAK,iBAAmB,SAC1B,aAAa,kBAAkB,KAAK,eAAgB,gBAAgB,EAEpE,MAAM,aAAa,kBAAkB,KAAK,eAAgB,gBAAgB,GAG1E,KAAK,WACP,KAAK,SAAS,cAAgB,QAAQ,OAExC,MAAM,QACH,kBAAkB,KAAK,eAAgB,iBAAkB,gBAAgB,EACzE,MAAO,OAAU,CAAC,CAAC,EACtB,KAAK,oBAAsB,EAC7B,CACA,aAAc,CACZ,KAAK,MAAM,YAAY,iCAAkC,QAAQ,CACnE,CACA,aAAc,CACR,KAAK,aAAa,WAAW,GAC/B,KAAK,MAAM,YAAY,iCAAkC,SAAS,CAEtE,CACF,EACA,OAAO,OAAO,oBAAoB,UAAW,4BAA4B,EACzE,OAAO,eAAe,OAAO,uBAAwB,mBAAmB,EAExE,IAAI,sBAAwB,cAAc,WAAY,CACpD,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,aAAa,gBAAgB,CAC3C,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,KAAK,gBAAgB,QAAQ,EAC7B,MAAM,YAAc,KAAK,cAAc,iCAAiC,EACtE,SAAW,MAAM,qBACf,KAAK,iBAAiB,0CAA0C,CAClE,EACI,UAAY,IAAI,kBACpB,IAAI,iBAAiB,CACnB,IAAI,iBACF,SAAS,IAAI,CAAC,KAAM,QACX,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,GAAK,CAAC,EACnB,UAAW,CAAC,mBAAoB,eAAe,EAC/C,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,qCACV,CACF,CACD,CACH,EACA,IAAI,yBACF,YACA,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,GACZ,CACF,CACF,CAAC,CACH,EACA,iBAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EACzC,UAAU,QACnB,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,MAAM,SAAW,MAAM,qBACrB,KAAK,iBACH,2EACF,CACF,EACM,UAAY,IAAI,kBACpB,IAAI,iBACF,SAAS,IAAK,MACL,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,GACZ,CACF,CACD,CACH,CACF,EACA,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EAChD,MAAM,UAAU,SAChB,KAAK,aAAa,SAAU,EAAE,CAChC,CACF,EACA,OAAO,eAAe,OAAO,wBAAyB,qBAAqB,EAE3E,IAAI,gBAAkB,cAAc,iBAAkB,CACpD,mBAAoB,CAClB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,uBAAuB,CAAC,EACtE,KAAK,WAAa,MAAM,KAAK,KAAK,iBAAiB,0BAA0B,CAAC,EAC9E,KAAK,SAAW,KAAK,cAAc,aAAa,EAChD,KAAK,wBAA0B,GAC3B,KAAK,MAAM,OAAS,IACtB,KAAK,iBAAiB,sBAAwB,OAAU,KAAK,OAAO,MAAM,OAAO,KAAK,CAAC,EACnF,QAAQ,aACV,KAAK,iBAAiB,yBAA0B,KAAK,YAAY,KAAK,IAAI,CAAC,EAC3E,KAAK,iBAAiB,uBAAyB,OAAU,CACvD,KAAK,qBAAqB,WAAW,EACrC,KAAK,YAAY,EACjB,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,CACpD,CAAC,IAGL,KAAK,iCAAiC,CACxC,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC1B,KAAK,aAAa,kBAAkB,IACtC,MAAM,KAAK,gBAAgB,KAAK,aAAa,EAC7C,KAAK,OAAO,KAAK,aAAa,GAEhC,KAAK,YAAY,CACnB,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,MAAM,UAAW,MAAS,KAAK,QAAQ,CACrD,CACA,MAAM,OAAO,MAAO,UAAY,GAAM,CAChC,KAAK,0BAGT,KAAK,wBAA0B,IAC3B,KAAK,MAAM,KAAK,EAAE,kBAAoB,CAAC,YACzC,MAAM,KAAK,gBAAgB,MAAO,SAAS,EAEzC,KAAK,gBAAkB,OACzB,MAAM,KAAK,MAAM,KAAK,aAAa,EAAE,kBAAkB,SAAS,EAE9D,KAAK,WACP,KAAK,SAAS,cAAgB,OAEhC,MAAM,KAAK,MAAM,KAAK,EAAE,kBAAkB,SAAS,EACnD,KAAK,wBAA0B,GACjC,CACA,MAAM,gBAAgB,MAAO,UAAY,GAAM,CAC7C,MAAM,YAAc,KAAK,WAAW,KAAM,MAAS,CAAC,KAAK,aAAa,QAAQ,CAAC,EAC7E,UACE,KAAK,WAAW,KACb,MAAS,KAAK,KAAO,KAAK,MAAM,KAAK,EAAE,aAAa,gBAAgB,CACvE,GAAK,YACT,GAAI,CAAC,aAAe,CAAC,UACnB,OAEF,YAAY,aAAa,SAAU,EAAE,EACrC,UAAU,gBAAgB,QAAQ,EAClC,MAAM,YAAY,SAAS,EAC3B,MAAM,UAAY,IAAI,kBACpB,IAAI,yBACF,UACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,OAAQ,0BACV,CACF,CACF,EACA,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,CAClD,CACA,aAAc,CACZ,KAAK,MAAM,YAAY,iCAAkC,QAAQ,CACnE,CACA,aAAc,CACZ,KAAK,MAAM,YAAY,iCAAkC,SAAS,CACpE,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,eAAe,EAEhE,IAAI,kBAAoB,cAAc,iBAAkB,CACtD,mBAAoB,CAClB,KAAK,iBAAiB,yBAA2B,OAAU,CACzD,MAAM,KAAK,MAAM,OAAO,QAAQ,EAAE,QAC/B,MAAU,KAAK,MAAM,WAAa,KAAK,SAAW,UAAY,QACjE,CACF,CAAC,CACH,CACA,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,MAAM,UAAY,MAAM,qBACpB,KAAK,iBACH,8EACF,CACF,EACA,UAAY,IAAI,kBACd,IAAI,iBACF,UAAU,QAAQ,EAAE,IAAI,CAAC,KAAM,QACtB,IAAI,yBACT,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,EAChC,SAAU,CAAC,iBAAkB,mBAAmB,EAChD,UAAW,CAAC,gBAAiB,kBAAkB,CACjD,EACA,CACE,SAAU,IACV,MAAO,GAAK,MACZ,OAAQ,sCACV,CACF,CACD,CACH,CACF,EACF,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EAChD,MAAM,UAAU,SAChB,KAAK,aAAa,SAAU,EAAE,CAChC,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,MAAM,UAAY,MAAM,qBACpB,KAAK,iBACH,+EACF,CACF,EACA,UAAY,IAAI,kBACd,IAAI,iBACF,UAAU,IAAI,CAAC,KAAM,QACZ,IAAI,yBACT,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,kBAAkB,EAClD,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,gCACV,CACF,CACD,CACH,CACF,EACF,YAAK,gBAAgB,QAAQ,EAC7B,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EACzC,UAAU,QACnB,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,iBAAiB,EAEpE,IAAI,kBAAoB,cAAc,iBAAkB,CACtD,mBAAoB,CAClB,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,oBAAoB,CAAC,EACvE,KAAK,SAAW,KAAK,cAAc,aAAa,EAChD,KAAK,wBAA0B,GAC3B,KAAK,UAAU,OAAS,IAC1B,KAAK,iBAAiB,aAAc,KAAK,SAAS,KAAK,IAAI,CAAC,EAC5D,KAAK,iBAAiB,YAAa,KAAK,KAAK,KAAK,IAAI,CAAC,EACvD,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,iBAAiB,sBAAwB,OAAU,KAAK,OAAO,MAAM,OAAO,KAAK,CAAC,EACnF,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,OAAU,CACvD,IAAI,IACH,GAAK,KAAK,uBAAyB,MAAgB,GAAG,WAAW,GAC9D,MAAM,OAAO,MAAQ,CAAC,MAAM,OAAO,WACrC,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,CAEtD,CAAC,EAEH,KAAK,qBAAqB,GAExB,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,UAAU,UAAW,MAAS,KAAK,QAAQ,CACzD,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,KAAK,UAAU,KAAK,aAAa,EAAE,kBAAkB,CACvD,CACA,UAAW,CACT,KAAK,QAAQ,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,MAAM,CACtF,CACA,MAAO,CACL,KAAK,QAAQ,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,MAAM,CACtF,CACA,MAAM,OAAO,MAAO,UAAY,GAAM,CAChC,KAAK,0BAGT,KAAK,wBAA0B,GAC/B,MAAM,KAAK,UAAU,KAAK,aAAa,EAAE,kBAAkB,SAAS,EAChE,KAAK,WACP,KAAK,SAAS,cAAgB,OAEhC,MAAM,KAAK,UAAU,KAAK,EAAE,kBAAkB,SAAS,EACvD,KAAK,wBAA0B,GACjC,CACF,EACA,OAAO,OAAO,kBAAkB,UAAW,4BAA4B,EACvE,OAAO,eAAe,OAAO,qBAAsB,iBAAiB,EAEpE,IAAI,oBAAsB,cAAc,iBAAkB,CACxD,aAAc,CACZ,MAAM,EACN,KAAK,qBAAuB,KAAK,cAAc,wBAAwB,EACvE,KAAK,iBAAmB,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,CACvF,CACA,mBAAoB,CAClB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,CAAC,KAAK,QAAU,KAAK,mBACvB,KAAK,2BAA2B,CAEpC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,qBAAsB,CACxB,OAAQ,KAAK,iBACX,KAAK,kBACL,IAAI,kBACF,IAAI,iBACF,KAAK,iBAAiB,IAAI,CAAC,KAAM,QACxB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EACtC,EACA,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EACzD,OAAQ,MACV,CACF,CACD,CACH,CACF,CACJ,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,qBAAqB,WAAa,eACpC,KAAK,qBAAqB,YAAc,YACzC,CACJ,EACA,KAAK,qBAAqB,SAAS,CACjC,KAAM,EAAE,KAAK,qBAAqB,YAAc,WAAa,cAC7D,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,qBAAqB,WAAa,eACpC,KAAK,qBAAqB,YAAc,WAAa,GACtD,KAAK,qBAAqB,WAC9B,EACA,KAAK,qBAAqB,SAAS,CACjC,MAAO,KAAK,qBAAqB,YAAc,WAAa,cAC5D,SAAU,QACZ,CAAC,CACH,CACA,yBAAyB,KAAM,CAC7B,IAAI,GAAI,GACH,KAAK,mBAGF,OACD,WACE,KAAK,OAWR,KAAK,oBAAoB,OAAO,GAVhC,KAAK,qBAAqB,WAAa,EACvC,KAAK,qBAAqB,cAAc,WAAa,GACpD,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,aAAa,WAAY,EAAE,GACjC,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,gBAAgB,UAAU,EACjC,KAAK,2BAA2B,GAKxC,CACA,MAAM,4BAA6B,CACjC,KAAK,iBAAiB,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAChE,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,KAAK,oBAAoB,KAAK,CAChC,CACF,EACA,cAAc,oBAAqB,qBAAsB,CAAC,QAAQ,CAAC,EACnE,OAAO,eAAe,OAAO,uBAAwB,mBAAmB,EAExE,IAAI,eAAiB,cAAc,iBAAkB,CACnD,aAAc,CACZ,MAAM,EACN,KAAK,gBAAkB,KAAK,cAAc,wBAAwB,EAClE,KAAK,YAAc,MAAM,KAAK,KAAK,iBAAiB,sBAAsB,CAAC,CAC7E,CACA,mBAAoB,CAClB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,CAAC,KAAK,QAAU,KAAK,mBACvB,KAAK,2BAA2B,CAEpC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,qBAAsB,CACxB,OAAQ,KAAK,iBACX,KAAK,kBACL,IAAI,kBACF,IAAI,iBACF,KAAK,YAAY,IAAI,CAAC,KAAM,QACnB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EACtC,EACA,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EACzD,OAAQ,MACV,CACF,CACD,CACH,CACF,CACJ,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,gBAAgB,WAAa,eAC/B,KAAK,gBAAgB,YAAc,YACpC,CACJ,EACA,KAAK,gBAAgB,SAAS,CAC5B,KAAM,EAAE,KAAK,gBAAgB,YAAc,WAAa,cACxD,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,gBAAgB,WAAa,eAC/B,KAAK,gBAAgB,YAAc,WAAa,GACjD,KAAK,gBAAgB,WACzB,EACA,KAAK,gBAAgB,SAAS,CAC5B,MAAO,KAAK,gBAAgB,YAAc,WAAa,cACvD,SAAU,QACZ,CAAC,CACH,CACA,yBAAyB,KAAM,CAC7B,IAAI,GAAI,GACH,KAAK,mBAGF,OACD,WACE,KAAK,OAWR,KAAK,oBAAoB,OAAO,GAVhC,KAAK,gBAAgB,WAAa,EAClC,KAAK,gBAAgB,cAAc,WAAa,GAC/C,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,aAAa,WAAY,EAAE,GACjC,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,gBAAgB,UAAU,EACjC,KAAK,2BAA2B,GAKxC,CACA,MAAM,4BAA6B,CACjC,KAAK,YAAY,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAC3D,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,KAAK,oBAAoB,KAAK,CAChC,CACF,EACA,cAAc,eAAgB,qBAAsB,CAAC,QAAQ,CAAC,EAC9D,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,sBAAwB,cAAc,WAAY,CACpD,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,KAAK,aAAa,SAAU,EAAE,EAC9B,MAAM,UAAY,IAAI,kBACpB,IAAI,yBACF,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,CAClC,EACA,CACE,SAAU,GACZ,CACF,CACF,EACA,iBAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EACzC,UAAU,QACnB,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,KAAK,gBAAgB,QAAQ,EAC7B,MAAM,KAAO,MAAM,KAAK,KAAK,iBAAiB,uBAAuB,CAAC,EACtE,KAAK,QAAS,KAAS,IAAI,MAAM,QAAU,CAAE,EAC7C,MAAM,UAAY,IAAI,kBACpB,IAAI,iBAAiB,CACnB,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,yBAAyB,CAAC,EAAE,IAAK,MACzD,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,CACZ,CACF,CACD,CACH,EACA,IAAI,yBACF,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,OAAQ,CAAC,EAAG,CAAC,EACb,SAAU,CAAC,oBAAqB,gBAAgB,CAClD,EACA,CACE,SAAU,IACV,OAAQ,0BACV,CACF,EACA,IAAI,iBACF,KAAK,IAAI,CAAC,KAAM,QACP,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,WAAY,UAAU,CACpC,EACA,CACE,SAAU,IACV,MAAO,GAAK,MACZ,OAAQ,aACV,CACF,CACD,CACH,CACF,CAAC,CACH,EAGA,GAFA,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EAChD,MAAM,UAAU,SACZ,OAAO,WAAW,OAAO,eAAe,YAAY,WAAW,EAAE,QAAS,CAC5E,MAAM,aAAe,KAAK,cACxB,yDACF,EACgC,cAAa,aAAa,mBAAoB,MAAM,CACtF,CACF,CACF,EACA,OAAO,eAAe,OAAO,uBAAwB,qBAAqB,EAE1E,IAAI,qBAAuB,cAAc,iBAAkB,CACzD,mBAAoB,CAClB,KAAK,YAAc,KAAK,QAAQ,iBAAiB,EACjD,KAAK,OAAO,GAAG,QAAS,uBAAwB,IAAM,KAAK,YAAY,SAAS,CAAC,EACjF,KAAK,OAAO,GAAG,QAAS,uBAAwB,IAAM,KAAK,YAAY,KAAK,CAAC,CAC/E,CACA,kBAAkB,MAAO,UAAY,GAAM,CACzC,MAAM,cAAgB,MAAM,KACxB,KAAK,iBAAiB,2CAA2C,CACnE,EACA,qBAAuB,cAAc,KAAM,MAAS,CAAC,KAAK,aAAa,QAAQ,CAAC,EAChF,YAAc,cAAc,KAAK,EACnC,qBAAqB,QACnB,CACE,UAAW,CAAC,gBAAiB,mBAAmB,CAClD,EACA,CACE,SAAU,UAAY,IAAM,EAC5B,OAAQ,0BACV,CACF,EAAE,SAAW,IAAM,qBAAqB,aAAa,SAAU,EAAE,EACjE,YAAY,gBAAgB,QAAQ,EACpC,YAAY,QACV,CACE,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,UAAY,IAAM,EAC5B,OAAQ,0BACV,CACF,CACF,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,oBAAoB,EAEvE,IAAI,gBAAkB,cAAc,iBAAkB,CACpD,mBAAoB,CAClB,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,sBAAsB,CAAC,EACzE,KAAK,IAAM,KAAK,cAAc,oBAAoB,EAClD,KAAK,wBAA0B,GAC3B,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,EAEpC,KAAK,UAAU,OAAS,GAAK,QAAQ,YACvC,KAAK,iBAAiB,uBAAwB,MAAO,OAAU,CAC7D,KAAK,qBAAqB,WAAW,EACrC,MAAM,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,EACxD,KAAK,IAAI,QACP,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,EACV,KAAM,WACN,OAAQ,aACV,CACF,CACF,CAAC,CAEL,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,UAAU,UAAW,MAAS,KAAK,QAAQ,CACzD,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,OAAS,MAAM,KACnB,KAAK,UAAU,KAAK,aAAa,EAAE,iBAAiB,yBAAyB,CAC/E,EACA,QAAS,SAAS,OACZ,MAAM,eAAiB,MACzB,MAAM,YAAY,KAAK,EAG3B,MAAM,KAAK,UAAU,KAAK,aAAa,EAAE,kBAAkB,EACvD,KAAK,KACP,KAAK,IAAI,QACP,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,KAAM,WACN,OAAQ,aACV,CACF,CAEJ,CACA,UAAW,CACT,KAAK,QAAQ,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,MAAM,CACtF,CACA,MAAO,CACL,KAAK,QAAQ,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,MAAM,CACtF,CACA,MAAM,OAAO,MAAO,QAAU,GAAM,CAClC,MAAM,YAAc,KAAK,UAAU,KAAK,aAAa,EACnD,SAAW,KAAK,UAAU,KAAK,EAC7B,KAAK,0BAGT,KAAK,wBAA0B,GAC3B,cAAgB,WAClB,KAAK,IAAI,kBAAkB,MAAO,OAAO,EACzC,YAAY,kBAAkB,GAEhC,SAAS,kBAAkB,OAAO,EAClC,KAAK,wBAA0B,GACjC,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,eAAe,EAE/D,IAAI,iBAAmB,cAAc,iBAAkB,CACrD,MAAM,mBAAoB,CACxB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,yBAAyB,CAAC,EACpE,KAAK,aAAa,YAAY,IAChC,KAAK,SAAW,KAAK,cAAc,6BAA6B,EAChE,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,iBAAiB,uBAAyB,OAC7C,MAAM,OAAO,eAAe,CAC1B,MAAO,UACP,OAAQ,SACR,SAAU,MAAM,OAAO,KAAO,OAAS,QACzC,CAAC,CACH,GAEE,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,qBAAuB,cAAc,qBAAqB,EAC1D,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,MAAM,IAAI,CAAC,KAAM,QACb,IAAI,iBAAiB,CAC1B,IAAI,yBACF,KAAK,cAAc,+BAA+B,EAClD,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,uCAAuC,CAAC,EAAE,IACzE,CAAC,SAAU,WACF,IAAI,yBACT,SACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,EACA,UAAW,CACT,cAAc,qBAAuB,EAAI,MAAM,IAC/C,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MAAQ,IAAM,SACtD,OAAQ,qCACV,CACF,CAEJ,CACF,CACF,CAAC,CACF,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACA,UAAW,CACT,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC/E,KAAK,SAAS,SAAS,CACrB,KAAM,CAAC,KAAK,MAAM,CAAC,EAAE,YAAc,cACnC,SAAU,QACZ,CAAC,CACH,CACA,MAAO,CACL,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC/E,KAAK,SAAS,SAAS,CACrB,KAAM,KAAK,MAAM,CAAC,EAAE,YAAc,cAClC,SAAU,QACZ,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,gBAAgB,EAElE,IAAI,aAAe,cAAc,iBAAkB,CACjD,MAAM,mBAAoB,CACxB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,iBAAiB,CAAC,EAC5D,KAAK,aAAa,YAAY,IAChC,KAAK,SAAW,KAAK,cAAc,6BAA6B,EAChE,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,iBAAiB,uBAAyB,OAC7C,MAAM,OAAO,eAAe,CAC1B,MAAO,UACP,OAAQ,SACR,SAAU,MAAM,OAAO,KAAO,OAAS,QACzC,CAAC,CACH,GAEE,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,qBAAuB,cAAc,qBAAqB,EAC1D,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,MAAM,IAAI,CAAC,KAAM,QACb,IAAI,iBAAiB,CAC1B,IAAI,yBACF,KAAK,cAAc,oBAAoB,EACvC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,yBACF,KAAK,cAAc,cAAc,EACjC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,yBACF,KAAK,cAAc,qBAAqB,EACxC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,yBACF,KAAK,cAAc,gBAAgB,EACnC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,uBAAuB,CAAC,EAAE,IACzD,CAAC,SAAU,WACF,IAAI,yBACT,SACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,EACA,UAAW,CACT,cAAc,qBAAuB,EAAI,MAAM,IAC/C,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MAAQ,IAAM,SACtD,OAAQ,qCACV,CACF,CAEJ,CACF,CACF,CAAC,CACF,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACA,UAAW,CACT,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC/E,KAAK,SAAS,SAAS,CACrB,KAAM,CAAC,KAAK,MAAM,CAAC,EAAE,YAAc,cACnC,SAAU,QACZ,CAAC,CACH,CACA,MAAO,CACL,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC/E,KAAK,SAAS,SAAS,CACrB,KAAM,KAAK,MAAM,CAAC,EAAE,YAAc,cAClC,SAAU,QACZ,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,YAAY,EAE3D,IAAI,UAAY,cAAc,iBAAkB,CAC9C,MAAM,mBAAoB,CACxB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,eAAe,CAAC,EAC1D,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,qBAAuB,cAAc,qBAAqB,EAC1D,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,MAAM,IAAI,CAAC,KAAM,QACb,IAAI,iBAAiB,CAC1B,IAAI,yBACF,KAAK,cAAc,qBAAqB,EACxC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,gCAAgC,CAAC,EAAE,IAClE,CAAC,SAAU,WACF,IAAI,yBACT,SACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,EACA,UAAW,CACT,cAAc,qBAAuB,EAAI,MAAM,IAC/C,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MAAQ,IAAM,SACtD,OAAQ,qCACV,CACF,CAEJ,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,qBAAqB,CAAC,EAAE,IACvD,CAAC,SAAU,WACF,IAAI,yBACT,SACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,EACA,UAAW,CACT,cAAc,qBAAuB,EAAI,MAAM,IAC/C,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MAAQ,IAAM,SACtD,OAAQ,qCACV,CACF,CAEJ,CACF,CACF,CAAC,CACF,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACF,EACA,OAAO,eAAe,OAAO,eAAgB,SAAS,EAEtD,IAAI,aAAe,cAAc,iBAAkB,CACjD,MAAM,mBAAoB,CACxB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,gBAAgB,CAAC,EAC3D,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,qBAAuB,cAAc,qBAAqB,EAC1D,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,MAAM,IAAI,CAAC,KAAM,QACb,IAAI,iBAAiB,CAC1B,IAAI,yBACF,KAAK,cAAc,wBAAwB,EAC3C,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,8BAA8B,CAAC,EAAE,IAChE,CAAC,SAAU,WACF,IAAI,yBACT,SACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,EACA,UAAW,CACT,cAAc,qBAAuB,EAAI,MAAM,IAC/C,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MAAQ,IAAM,SACtD,OAAQ,qCACV,CACF,CAEJ,CACF,CACF,CAAC,CACF,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,YAAY,EAE1D,IAAI,gBAAkB,cAAc,iBAAkB,CACpD,MAAM,mBAAoB,CACxB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,YAAY,CAAC,EACvD,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,qBAAuB,cAAc,qBAAqB,EAC1D,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,MAAM,IAAI,CAAC,KAAM,QACb,IAAI,iBAAiB,CAC1B,IAAI,yBACF,KAAK,cAAc,iBAAiB,EACpC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,2BAA2B,CAAC,EAAE,IAC7D,CAAC,SAAU,WACF,IAAI,yBACT,SACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,EACA,UAAW,CACT,cAAc,qBAAuB,EAAI,MAAM,IAC/C,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MAAQ,IAAM,SACtD,OAAQ,qCACV,CACF,CAEJ,CACF,CACF,CAAC,CACF,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACF,EACA,OAAO,eAAe,OAAO,YAAa,eAAe,EAEzD,IAAI,cAAgB,cAAc,iBAAkB,CAClD,aAAc,CACZ,MAAM,EACN,KAAK,iBAAmB,KAAK,cAAc,wBAAwB,EACnE,KAAK,aAAe,MAAM,KAAK,KAAK,iBAAiB,cAAc,CAAC,CACtE,CACA,mBAAoB,CAClB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,CAAC,KAAK,QAAU,KAAK,mBACvB,KAAK,2BAA2B,CAEpC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,qBAAsB,CACxB,OAAQ,KAAK,iBACX,KAAK,kBACL,IAAI,kBACF,IAAI,iBACF,KAAK,aAAa,IAAI,CAAC,KAAM,QACpB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EACtC,EACA,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EACzD,OAAQ,MACV,CACF,CACD,CACH,CACF,CACJ,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,iBAAiB,WAAa,eAChC,KAAK,iBAAiB,YAAc,YACrC,CACJ,EACA,KAAK,iBAAiB,SAAS,CAC7B,KAAM,EAAE,KAAK,iBAAiB,YAAc,WAAa,cACzD,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,iBAAiB,WAAa,eAChC,KAAK,iBAAiB,YAAc,WAAa,GAClD,KAAK,iBAAiB,WAC1B,EACA,KAAK,iBAAiB,SAAS,CAC7B,MAAO,KAAK,iBAAiB,YAAc,WAAa,cACxD,SAAU,QACZ,CAAC,CACH,CACA,yBAAyB,KAAM,CAC7B,IAAI,GAAI,GACH,KAAK,mBAGF,OACD,WACE,KAAK,OAWR,KAAK,oBAAoB,OAAO,GAVhC,KAAK,iBAAiB,WAAa,EACnC,KAAK,iBAAiB,cAAc,WAAa,GAChD,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,aAAa,WAAY,EAAE,GACjC,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,gBAAgB,UAAU,EACjC,KAAK,2BAA2B,GAKxC,CACA,MAAM,4BAA6B,CACjC,KAAK,aAAa,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAC5D,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,KAAK,oBAAoB,KAAK,CAChC,CACF,EACA,cAAc,cAAe,qBAAsB,CAAC,QAAQ,CAAC,EAC7D,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAG5D,IAAI,sBAAwB,cAAc,iBAAkB,CAC1D,mBAAoB,CAClB,KAAK,iBAAiB,yBAA2B,OAAU,CACzD,MAAM,KAAK,MAAM,OAAO,QAAQ,EAAE,QAC/B,MAAU,KAAK,MAAM,WAAa,KAAK,SAAW,UAAY,QACjE,CACF,CAAC,CACH,CACA,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,aAAa,QAAQ,CACpC,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,MAAM,UAAY,MAAM,qBAAqB,KAAK,iBAAiB,uBAAuB,CAAC,EACzF,UAAY,IAAI,kBACd,IAAI,iBACF,UAAU,QAAQ,EAAE,IAAI,CAAC,KAAM,QACtB,IAAI,yBACT,KACA,CACE,WAAY,CAAC,UAAW,QAAQ,EAChC,SAAU,CAAC,iBAAkB,mBAAmB,EAChD,UAAW,CAAC,gBAAiB,mBAAmB,CAClD,EACA,CACE,SAAU,IACV,MAAO,GAAK,MACZ,OAAQ,sCACV,CACF,CACD,CACH,CACF,EACF,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EAChD,MAAM,UAAU,SAChB,KAAK,aAAa,SAAU,EAAE,CAChC,CACA,MAAM,kBAAkB,UAAY,GAAM,CACxC,MAAM,UAAY,MAAM,qBAAqB,KAAK,iBAAiB,uBAAuB,CAAC,EACzF,UAAY,IAAI,kBACd,IAAI,iBACF,UAAU,IAAI,CAAC,KAAM,QACZ,IAAI,yBACT,KACA,CACE,WAAY,CAAC,SAAU,SAAS,EAChC,SAAU,CAAC,oBAAqB,kBAAkB,EAClD,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,MACb,OAAQ,gCACV,CACF,CACD,CACH,CACF,EACF,YAAK,gBAAgB,QAAQ,EAC7B,UAAY,UAAU,KAAK,EAAI,UAAU,OAAO,EACzC,UAAU,QACnB,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,qBAAqB,EAEtE,IAAI,kBAAoB,cAAc,iBAAkB,CACtD,mBAAoB,CAClB,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,kBAAkB,CAAC,EACrE,KAAK,SAAW,KAAK,cAAc,aAAa,EAChD,KAAK,wBAA0B,GAC3B,KAAK,UAAU,OAAS,IAC1B,KAAK,iBAAiB,aAAc,KAAK,SAAS,KAAK,IAAI,CAAC,EAC5D,KAAK,iBAAiB,YAAa,KAAK,KAAK,KAAK,IAAI,CAAC,EACvD,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,iBAAiB,sBAAwB,OAAU,KAAK,OAAO,MAAM,OAAO,KAAK,CAAC,EACnF,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,OAAU,CACvD,IAAI,IACH,EAAI,KAAK,uBAAyB,MAAgB,EAAE,WAAW,GAC5D,MAAM,OAAO,MAAQ,CAAC,MAAM,OAAO,WACrC,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,CAEtD,CAAC,EAEH,KAAK,qBAAqB,GAExB,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,UAAU,UAAW,MAAS,KAAK,QAAQ,CACzD,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,KAAK,UAAU,KAAK,aAAa,EAAE,kBAAkB,CACvD,CACA,UAAW,CACT,KAAK,QAAQ,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,MAAM,CACtF,CACA,MAAO,CACL,KAAK,QAAQ,KAAK,cAAgB,EAAI,KAAK,UAAU,QAAU,KAAK,UAAU,MAAM,CACtF,CACA,MAAM,OAAO,MAAO,UAAY,GAAM,CAChC,KAAK,0BAGT,KAAK,wBAA0B,GAC/B,MAAM,KAAK,UAAU,KAAK,aAAa,EAAE,kBAAkB,SAAS,EAChE,KAAK,WACP,KAAK,SAAS,cAAgB,OAEhC,MAAM,KAAK,UAAU,KAAK,EAAE,kBAAkB,SAAS,EACvD,KAAK,wBAA0B,GACjC,CACF,EACA,OAAO,OAAO,kBAAkB,UAAW,4BAA4B,EACvE,OAAO,eAAe,OAAO,sBAAuB,iBAAiB,EAGrE,IAAI,WAAa,cAAc,iBAAkB,CAC/C,MAAM,mBAAoB,CACxB,KAAK,MAAQ,MAAM,KAAK,KAAK,iBAAiB,oBAAoB,CAAC,EACnE,KAAK,mBAAqB,KAAK,cAAc,oBAAoB,EAC7D,KAAK,MAAM,OAAS,IACtB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,GAE5D,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,MAAM,IAAI,CAAC,KAAM,QACb,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cAAc,cAAc,qBAAqB,EAAI,EAAI,MAAM,IAC/D,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EAAI,EAAI,IAAM,MACxD,OAAQ,MACV,CACF,CACD,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC/E,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,mBAAmB,WAAa,eAClC,KAAK,mBAAmB,YAAc,KACvC,CACJ,EACA,KAAK,mBAAmB,SAAS,CAC/B,KAAM,EAAE,KAAK,mBAAmB,YAAc,IAAM,cACpD,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC/E,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,mBAAmB,WAAa,eAClC,KAAK,mBAAmB,YAAc,IAAM,GAC7C,KAAK,mBAAmB,WAC5B,EACA,KAAK,mBAAmB,SAAS,CAC/B,MAAO,KAAK,mBAAmB,YAAc,IAAM,cACnD,SAAU,QACZ,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,cAAe,UAAU,EAEtD,IAAI,qBAAuB,cAAc,WAAY,CACnD,mBAAoB,CAClB,OAAO,iBAAiB,SAAU,SAAS,KAAK,yBAAyB,KAAK,IAAI,EAAG,EAAE,CAAC,CAC1F,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,aAAa,kBAAkB,CAC7C,CACA,0BAA2B,CACzB,MAAM,qBAAuB,4BAA4B,EACvD,mBAAqB,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,QAC7E,GACA,GACJ,sBAAwB,KAAK,sBAAsB,EACnD,2BAA6B,KAAK,cAAc,sBAAsB,EACtE,WACE,2BAA2B,QAAU,sBAAsB,OAAS,oBACtE,SAAW,KAAK,IACd,IAAM,YAAc,2BAA2B,OAAS,oBAAsB,GAC9E,CACF,EACF,KAAK,UAAU,OACb,aACA,2BAA2B,IAAM,sBAC/B,2BAA2B,OACzB,qBAAuB,KAAK,aAAe,kBACjD,EACI,KAAK,iBACH,SAAW,GACb,KAAK,UAAU,IAAI,yBAAyB,EAE5C,KAAK,UAAU,OAAO,yBAAyB,GAGnD,KAAK,MAAM,YAAY,cAAe,GAAG,QAAQ,EAAE,CACrD,CACF,EACA,OAAO,eAAe,OAAO,wBAAyB,oBAAoB,EAE1E,IAAI,eAAiB,cAAc,iBAAkB,CACnD,aAAc,CACZ,MAAM,EACN,KAAK,cAAgB,KAAK,cAAc,wBAAwB,EAChE,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,WAAW,CAAC,CAChE,CACA,mBAAoB,CAClB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,CAAC,KAAK,QAAU,KAAK,mBACvB,KAAK,2BAA2B,CAEpC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,qBAAsB,CACxB,OAAQ,KAAK,iBACX,KAAK,kBACL,IAAI,kBACF,IAAI,iBACF,KAAK,UAAU,IAAI,CAAC,KAAM,QACjB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EACtC,EACA,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EACzD,OAAQ,MACV,CACF,CACD,CACH,CACF,CACJ,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,cAAc,WAAa,eAC7B,KAAK,cAAc,YAAc,YAClC,CACJ,EACA,KAAK,cAAc,SAAS,CAC1B,KAAM,EAAE,KAAK,cAAc,YAAc,WAAa,cACtD,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,cAAc,WAAa,eAC7B,KAAK,cAAc,YAAc,WAAa,GAC/C,KAAK,cAAc,WACvB,EACA,KAAK,cAAc,SAAS,CAC1B,MAAO,KAAK,cAAc,YAAc,WAAa,cACrD,SAAU,QACZ,CAAC,CACH,CACA,yBAAyB,KAAM,CAC7B,IAAI,GAAI,GACH,KAAK,mBAGF,OACD,WACE,KAAK,OAWR,KAAK,oBAAoB,OAAO,GAVhC,KAAK,cAAc,WAAa,EAChC,KAAK,cAAc,cAAc,WAAa,GAC7C,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,aAAa,WAAY,EAAE,GACjC,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,gBAAgB,UAAU,EACjC,KAAK,2BAA2B,GAKxC,CACA,MAAM,4BAA6B,CACjC,KAAK,UAAU,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EACzD,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,KAAK,oBAAoB,KAAK,CAChC,CACF,EACA,cAAc,eAAgB,qBAAsB,CAAC,QAAQ,CAAC,EAC9D,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,aAAc,CACZ,MAAM,EACN,KAAK,oBAAsB,KAAK,cAAc,wBAAwB,EACtE,KAAK,gBAAkB,MAAM,KAAK,KAAK,iBAAiB,0BAA0B,CAAC,CACrF,CACA,mBAAoB,CAClB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,CAAC,KAAK,QAAU,KAAK,mBACvB,KAAK,2BAA2B,CAEpC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,qBAAsB,CACxB,OAAQ,KAAK,iBACX,KAAK,kBACL,IAAI,kBACF,IAAI,iBACF,KAAK,gBAAgB,IAAI,CAAC,KAAM,QACvB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EACtC,EACA,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EACzD,OAAQ,MACV,CACF,CACD,CACH,CACF,CACJ,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,oBAAoB,WAAa,eACnC,KAAK,oBAAoB,YAAc,YACxC,CACJ,EACA,KAAK,oBAAoB,SAAS,CAChC,KAAM,EAAE,KAAK,oBAAoB,YAAc,WAAa,cAC5D,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,oBAAoB,WAAa,eACnC,KAAK,oBAAoB,YAAc,WAAa,GACrD,KAAK,oBAAoB,WAC7B,EACA,KAAK,oBAAoB,SAAS,CAChC,MAAO,KAAK,oBAAoB,YAAc,WAAa,cAC3D,SAAU,QACZ,CAAC,CACH,CACA,yBAAyB,KAAM,CAC7B,IAAI,GAAI,GACH,KAAK,mBAGF,OACD,WACE,KAAK,OAWR,KAAK,oBAAoB,OAAO,GAVhC,KAAK,oBAAoB,WAAa,EACtC,KAAK,oBAAoB,cAAc,WAAa,GACnD,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,aAAa,WAAY,EAAE,GACjC,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,gBAAgB,UAAU,EACjC,KAAK,2BAA2B,GAKxC,CACA,MAAM,4BAA6B,CACjC,KAAK,gBAAgB,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAC/D,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,KAAK,oBAAoB,KAAK,CAChC,CACF,EACA,cAAc,mBAAoB,qBAAsB,CAAC,QAAQ,CAAC,EAClE,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,aAAc,CACZ,MAAM,EACN,KAAK,oBAAsB,KAAK,cAAc,wBAAwB,EACtE,KAAK,gBAAkB,MAAM,KAAK,KAAK,iBAAiB,yBAAyB,CAAC,CACpF,CACA,mBAAoB,CAClB,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,CAAC,KAAK,QAAU,KAAK,mBACvB,KAAK,2BAA2B,CAEpC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACA,IAAI,qBAAsB,CACxB,OAAQ,KAAK,iBACX,KAAK,kBACL,IAAI,kBACF,IAAI,iBACF,KAAK,gBAAgB,IAAI,CAAC,KAAM,QACvB,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,cAAc,qBAAqB,EACtC,EACA,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EACzD,OAAQ,MACV,CACF,CACD,CACH,CACF,CACJ,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,oBAAoB,WAAa,eACnC,KAAK,oBAAoB,YAAc,YACxC,CACJ,EACA,KAAK,oBAAoB,SAAS,CAChC,KAAM,EAAE,KAAK,oBAAoB,YAAc,WAAa,cAC5D,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,oBAAoB,WAAa,eACnC,KAAK,oBAAoB,YAAc,WAAa,GACrD,KAAK,oBAAoB,WAC7B,EACA,KAAK,oBAAoB,SAAS,CAChC,MAAO,KAAK,oBAAoB,YAAc,WAAa,cAC3D,SAAU,QACZ,CAAC,CACH,CACA,yBAAyB,KAAM,CAC7B,IAAI,GAAI,GACH,KAAK,mBAGF,OACD,WACE,KAAK,OAWR,KAAK,oBAAoB,OAAO,GAVhC,KAAK,oBAAoB,WAAa,EACtC,KAAK,oBAAoB,cAAc,WAAa,GACnD,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,aAAa,WAAY,EAAE,GACjC,GAAK,KAAK,cAAc,6BAA6B,IAAM,MAExD,GAAG,gBAAgB,UAAU,EACjC,KAAK,2BAA2B,GAKxC,CACA,MAAM,4BAA6B,CACjC,KAAK,gBAAgB,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAC/D,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,KAAK,oBAAoB,KAAK,CAChC,CACF,EACA,cAAc,mBAAoB,qBAAsB,CAAC,QAAQ,CAAC,EAClE,OAAO,eAAe,OAAO,qBAAsB,kBAAkB,EAErE,IAAI,cAAgB,cAAc,iBAAkB,CAClD,mBAAoB,CACb,KAAK,aAAa,OAAO,IAC5B,KAAK,iBAAmB,KAAK,cAAc,wBAAwB,EACnE,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,OAAU,CACvD,MAAM,OAAO,eAAe,CAC1B,OAAQ,SACR,MAAO,UACP,SAAU,MAAM,OAAO,KAAO,OAAS,QACzC,CAAC,CACH,CAAC,GAGD,KAAK,aAAa,oBAAoB,GACxC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,CAC5B,UAAW,KAAK,aAAe,EAAI,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,EAAI,CAC3E,CAAC,EACD,MAAM,qBAAuB,cAAc,qBAAqB,EAC1D,UAAY,IAAI,kBACpB,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,uBAAuB,CAAC,EAAE,IAAI,CAAC,KAAM,QAC7D,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CACT,cACE,cAAc,qBAAqB,EAAI,EAAI,OAAO,WAAa,IAAM,GAAK,EAC5E,MACA,eACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,MACV,CACF,CACD,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACA,SAAS,MAAO,CACd,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,mBAAmB,gBAAgB,UAAU,EAC1D,MAAM,OAAO,gBACX,WACA,KAAK,iBAAiB,WAAa,eAChC,KAAK,iBAAiB,YAAc,YACrC,CACJ,EACA,KAAK,iBAAiB,SAAS,CAC7B,KAAM,EAAE,KAAK,iBAAiB,YAAc,WAAa,cACzD,SAAU,QACZ,CAAC,CACH,CACA,KAAK,MAAO,CACV,MAAM,cAAgB,OAAO,eAAe,SAAS,YAAc,MAAQ,EAAI,GAC7E,UAAY,SACV,iBAAiB,IAAI,EAAE,iBAAiB,6BAA6B,CACvE,EACF,MAAM,OAAO,uBAAuB,gBAAgB,UAAU,EAC9D,MAAM,OAAO,gBACX,WACA,KAAK,iBAAiB,WAAa,eAChC,KAAK,iBAAiB,YAAc,WAAa,GAClD,KAAK,iBAAiB,WAC1B,EACA,KAAK,iBAAiB,SAAS,CAC7B,MAAO,KAAK,iBAAiB,YAAc,WAAa,cACxD,SAAU,QACZ,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAE5D,IAAI,cAAgB,cAAc,WAAY,CAC5C,mBAAoB,CAClB,KAAK,UAAY,MAAM,KAAK,KAAK,iBAAiB,gBAAgB,CAAC,EACnE,KAAK,iBAAmB,KAAK,cAAc,2BAA2B,EACtE,KAAK,mBAAqB,KAAK,cAAc,2BAA2B,EACpE,KAAK,UAAU,OAAS,IAC1B,KAAK,iBACH,gCACA,KAAK,yBAAyB,KAAK,IAAI,CACzC,EACA,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC1D,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,OAC7C,KAAK,OAAO,MAAM,OAAO,MAAO,CAAC,MAAM,OAAO,IAAI,CACpD,EAGN,CACA,UAAW,CACT,KAAK,OACH,CAAC,GAAG,KAAK,SAAS,EAAE,QAAQ,EAAE,KAAM,MAAS,KAAK,wBAAwB,EAAE,KAC9E,CACF,CACA,MAAO,CACL,KAAK,OAAO,KAAK,UAAU,UAAW,MAAS,KAAK,yBAAyB,CAAC,CAChF,CACA,OAAO,MAAO,QAAU,GAAM,CAC5B,MAAM,eAAiB,KAAK,UAAU,KAAK,EAAE,sBAAsB,EACnE,KAAK,mBAAmB,SAAS,CAC/B,SAAU,QAAU,SAAW,OAC/B,KAAM,KAAK,MAAM,eAAe,KAAO,OAAO,WAAa,EAAI,eAAe,MAAQ,CAAC,CACzF,CAAC,CACH,CACA,yBAAyB,MAAO,CAC9B,IAAI,IACH,GAAK,KAAK,mBAAqB,MAE5B,GAAG,MAAM,YAAY,cAAe,GAAG,MAAM,OAAO,QAAQ,GAAG,CACrE,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAE5D,IAAI,cAAgB,cAAc,WAAY,CAC5C,IAAI,OAAQ,CACV,MAAO,CAAC,GAAG,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CACnD,CACA,IAAI,2BAA4B,CAC9B,IAAI,KAAO,KAAK,sBAAsB,EAAE,KACpC,MAAQ,KAAK,sBAAsB,EAAE,MACzC,OAAI,OAAO,eAAe,SAAS,YAAc,MACxC,KAAO,OAAO,WAAa,EAE3B,MAAQ,OAAO,WAAa,CAEvC,CACA,IAAI,0BAA2B,CAC7B,IAAI,MAAQ,KAAK,sBAAsB,EAAE,MACrC,KAAO,KAAK,sBAAsB,EAAE,KACxC,OAAI,OAAO,eAAe,SAAS,YAAc,MACxC,MAAQ,OAAO,WAAa,EAE5B,KAAO,OAAO,WAAa,CAEtC,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAE5D,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,mBAAoB,CACd,KAAK,aAAa,UAAU,GAAK,CAAC,cAAc,qBAAqB,IACvE,KAAK,eAAiB,GACtB,KAAK,kCAAoC,KAAK,0BAA0B,KAAK,IAAI,EACjF,OAAO,iBAAiB,SAAU,KAAK,iCAAiC,GAEtE,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,sBAAuB,CACrB,MAAM,qBAAqB,EACvB,KAAK,mCACP,OAAO,oBAAoB,SAAU,KAAK,iCAAiC,CAE/E,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,MAAQ,KAAK,cAAc,uBAAuB,EACtD,SAAW,MAAM,qBAAqB,KAAK,iBAAiB,eAAe,CAAC,EAC5E,qBAAuB,cAAc,qBAAqB,EAC5D,MAAM,YAAY,KAAK,EACvB,MAAM,YAAc,CAClB,IAAI,yBACF,MACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,SAAS,IAAI,CAAC,KAAM,QACX,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,GAAK,CAAC,EACnB,UAAW,CAAC,cAAc,qBAAuB,EAAI,MAAM,IAAK,eAAe,EAC/E,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,qCACV,CACF,CACD,CACH,EACA,IAAI,yBACF,KAAK,cAAc,gCAAgC,EACnD,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,GACZ,CACF,CACF,EACM,UAAY,qBACd,IAAI,kBAAkB,IAAI,iBAAiB,WAAW,CAAC,EACvD,IAAI,kBAAkB,IAAI,iBAAiB,WAAW,CAAC,EAC3D,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACA,2BAA4B,CACtB,KAAK,iBAGT,KAAK,eAAiB,GACtB,sBAAsB,IAAM,CAC1B,MAAM,eAAiB,KAAK,sBAAsB,EAChD,YAAc,EACd,eAAiB,KAAK,cAAc,iCAAiC,EACrE,aAAe,KAAK,cAAc,uBAAuB,EACzD,qBAAuB,eAAe,OACtC,qBAAuB,eAAe,OACtC,qBAAuB,4BAA4B,EACjD,iBACF,eAAe,MAAM,QAAU,KAAK,IAClC,EAAI,aAAe,EAAI,KAAK,IAAI,qBAAuB,qBAAsB,CAAC,GAC9E,CACF,EAAE,SAAS,GAET,eACF,aAAa,MAAM,UAAY,cAC7B,IACA,KAAK,IACH,GACG,EACC,KAAK,IACH,sBAAwB,qBAAuB,sBAC/C,CACF,GACJ,CACF,EACE,GACJ,OAEF,KAAK,eAAiB,EACxB,CAAC,EACH,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,iBAAmB,cAAc,iBAAkB,CACrD,MAAM,mBAAoB,CACpB,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,CAE1C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,OAAS,MAAM,KAAK,KAAK,iBAAiB,mCAAmC,CAAC,EAClF,SAAW,MAAM,qBAAqB,KAAK,iBAAiB,eAAe,CAAC,EAC5E,qBAAuB,cAAc,qBAAqB,EAC5D,UAAW,SAAS,OACd,MAAM,eAAiB,MACzB,MAAM,YAAY,KAAK,EAG3B,MAAM,YAAc,CAClB,IAAI,iBACF,OAAO,IAAK,MACH,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,OAAQ,gCACV,CACF,CACD,CACH,EACA,IAAI,yBACF,KAAK,cAAc,6BAA6B,EAChD,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,cAAc,qBAAuB,EAAI,MAAM,IAAK,eAAe,CACjF,EACA,CACE,SAAU,IACV,OAAQ,aACV,CACF,EACA,IAAI,iBACF,SAAS,IAAI,CAAC,KAAM,QACX,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,GAAK,CAAC,EACnB,UAAW,CAAC,cAAc,qBAAuB,EAAI,MAAM,IAAK,eAAe,EAC/E,SAAU,CACR,SAAS,qBAAuB,UAAY,YAAY,IACxD,gBACF,CACF,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,qCACV,CACF,CACD,CACH,EACA,IAAI,yBACF,KAAK,cAAc,oCAAoC,EACvD,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,GACZ,CACF,CACF,EACM,UAAY,qBACd,IAAI,kBAAkB,IAAI,iBAAiB,WAAW,CAAC,EACvD,IAAI,kBAAkB,IAAI,iBAAiB,WAAW,CAAC,EAC3D,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,gBAAgB,EAElE,IAAI,cAAgB,cAAc,iBAAkB,CAClD,MAAM,mBAAoB,CAExB,GADA,KAAK,aAAe,MAAM,KAAK,KAAK,iBAAiB,eAAe,CAAC,EACjE,KAAK,kBAAmB,CAC1B,IAAI,IAAM,EACN,KAAK,aAAe,IACtB,IAAM,KAAK,IAAI,GAAK,KAAK,aAAc,CAAC,GAE1C,MAAM,KAAK,mBAAmB,CAC5B,UAAW,GACb,CAAC,EACD,MAAM,UAAY,IAAI,kBACpB,IAAI,iBACF,KAAK,aAAa,IAAI,CAAC,KAAM,QAAU,CACrC,IAAI,UAAY,EACZ,cAAc,qBAAqB,EACrC,UAAY,EAER,OAAO,WAAa,IACtB,UAAY,GAEZ,UAAY,GAGhB,IAAIG,OAAQ,EACZ,OAAI,cAAc,qBAAqB,EACrCA,OAAQ,EAERA,OAAQ,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EAExD,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,cAAc,SAAS,MAAO,eAAe,CAC3D,EACA,CACE,SAAU,IACV,MAAOA,OACP,OAAQ,MACV,CACF,CACF,CAAC,CACH,CACF,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACF,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,oBAAoB,CAC/C,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAe5D,IAAI,wBAA0B,cAAc,gBAAiB,CAC3D,mBAAoB,CAClB,KAAK,iBACH,QACA,IAAO,SAAS,eAAe,KAAK,aAAa,iBAAiB,CAAC,EAAE,KAAO,EAC9E,CACF,CACF,EACA,OAAO,eAAe,OAAO,2BAA4B,wBAAyB,CAChF,QAAS,OACX,CAAC,EAED,IAAI,gBAAkB,cAAc,qBAAsB,CACxD,mBAAoB,CAElB,GADA,MAAM,kBAAkB,EACpB,KAAK,aAAa,oBAAoB,EAAG,CAC3C,KAAK,kBAAoB,KAAK,UAAU,SAAS,mBAAmB,EAAI,OAAS,QACjF,MAAM,YAAc,OAAO,WAAW,KAAK,aAAa,oBAAoB,CAAC,EAC7E,YAAY,YAAY,KAAK,0BAA0B,KAAK,IAAI,CAAC,EACjE,KAAK,0BAA0B,WAAW,CAC5C,CACA,KAAK,OAAO,GAAG,QAAS,mBAAoB,IAAO,KAAK,KAAO,EAAM,CACvE,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,QACH,SAAS,gBAAgB,UAAU,OAAO,aAAc,KAAK,IAAI,CAEvE,CACA,0BAA0B,MAAO,CAC/B,KAAK,UAAU,OAAO,mBAAmB,GAEtC,KAAK,oBAAsB,QAAU,CAAC,MAAM,SAC5C,KAAK,oBAAsB,QAAU,MAAM,UAE5C,KAAK,UAAU,IAAI,mBAAmB,CAE1C,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,eAAe,EAEhE,IAAI,eAAiB,cAAc,eAAgB,CACjD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,aAAe,KAAK,cAAc,YAAY,EACnD,KAAK,wBAA0B,KAAK,cAAc,kBAAkB,EACpE,KAAK,uBAAyB,KAAK,cAAc,iBAAiB,EAClE,KAAK,uBAAyB,KAAK,cAAc,mCAAmC,EACpF,KAAK,kBAAoB,KAAK,cAAc,6BAA6B,EACzE,KAAK,mBAAqB,KAAK,cAAc,+BAA+B,EAC5E,KAAK,OAAO,GAAG,QAAS,aAAc,KAAK,UAAU,KAAK,YAAY,KAAK,IAAI,EAAG,GAAG,CAAC,EACtF,KAAK,OAAO,GACV,QACA,+BACA,KAAK,sBAAsB,KAAK,IAAI,CACtC,CACF,CACA,MAAM,YAAY,MAAO,OAAQ,CAC/B,GAAI,MAAM,MAAQ,QAQlB,GALI,KAAK,iBACP,KAAK,gBAAgB,MAAM,EAE7B,KAAK,wBAAwB,UAAU,OAAO,yBAAyB,EACvE,KAAK,uBAAuB,OAAS,GACjC,OAAO,QAAU,GACnB,KAAK,uBAAuB,OAAS,GACrC,KAAK,kBAAkB,OAAS,GAChC,KAAK,qBAAsB,KAAK,mBAAmB,OAAS,QACvD,CACL,KAAK,wBAAwB,UAAU,IAAI,yBAAyB,EACpE,KAAK,uBAAuB,OAAS,GACrC,KAAK,kBAAkB,OAAS,GAChC,KAAK,qBAAsB,KAAK,mBAAmB,OAAS,IAC5D,IAAI,gBAAkB,CAAC,EACvB,GAAI,CACF,KAAK,gBAAkB,IAAI,gBACvB,KAAK,oBAAoB,EAC3B,gBAAkB,MAAM,KAAK,sBAAsB,OAAO,KAAK,EAE/D,gBAAkB,MAAM,KAAK,oBAAoB,OAAO,KAAK,CAEjE,OAAS,EAAG,CACV,GAAI,EAAE,OAAS,aACb,MAEJ,CACA,KAAK,uBAAuB,OAAS,GACrC,KAAK,kBAAkB,OAAS,GAChC,KAAK,qBAAsB,KAAK,mBAAmB,OAAS,IACxD,gBAAgB,aAClB,KAAK,uBAAuB,OAAS,GACrC,KAAK,wBAAwB,UAAU,OAAO,yBAAyB,GAEzE,KAAK,kBAAkB,UAAY,gBAAgB,IACrD,CACF,CACA,MAAM,sBAAsB,KAAM,CAChC,MAAM,WAAa,MAAM,MACvB,GAAG,OAAO,eAAe,OAAO,iBAAiB,MAAM,IAAI,wCAAwC,OAAO,eAAe,SAAS,UAAU,6CAA6C,OAAO,eAAe,SAAS,yBAAyB,yGACjP,CACE,OAAQ,KAAK,gBAAgB,MAC/B,CACF,EACM,IAAM,SAAS,cAAc,KAAK,EACxC,WAAI,UAAY,MAAM,WAAW,KAAK,EAC/B,CACL,WAAY,IAAI,cAAc,wCAAwC,IAAM,KAC5E,KAAM,IAAI,kBAAkB,SAC9B,CACF,CACA,MAAM,oBAAoB,KAAM,CAC9B,IAAI,SAAW,CAAC,EACd,eAAiB,OAAO,eAAe,SAAS,WAC7C,MAAM,GAAG,EACT,OAAQ,MAAS,OAAS,YAAY,EAC3C,eAAe,QAAS,YAAe,CACrC,SAAS,KACP,MACE,GAAG,OAAO,eAAe,OAAO,SAAS,iDAAiD,IAAI,SAAS,UAAU,kCAAkC,OAAO,eAAe,SAAS,yBAAyB,wBAC3M,CACE,OAAQ,KAAK,gBAAgB,MAC/B,CACF,CACF,CACF,CAAC,EACD,IAAI,QAAU,MAAM,QAAQ,IAAI,QAAQ,EACtC,oBAAsB,CAAC,EACzB,SAAW,CAAC,MAAO,KAAK,IAAK,QAAQ,QAAQ,EAAG,CAC9C,MAAM,aAAe,MAAM,MAAM,KAAK,EAChC,QAAU,SAAS,cAAc,KAAK,EAC5C,QAAQ,UAAY,aACpB,QAAQ,UAAY,QAAQ,kBAAkB,UAC1C,QAAQ,kBAAoB,IAC9B,oBAAoB,eAAe,KAAK,CAAC,EAAI,QAAQ,UAEzD,CACA,GAAI,OAAO,KAAK,mBAAmB,EAAE,OAAS,EAAG,CAC/C,MAAM,QAAU,OAAO,QAAQ,mBAAmB,EAChD,KAAO,OAAO,KAAK,mBAAmB,EACxC,IAAI,KAAO;AAAA;AAAA;AAAA;AAAA;AAAA,QAMX,OAAS,CAAC,KAAM,KAAK,IAAK,QACxB,MAAQ;AAAA,oGAEN,OAAS,KAAK,CAAC,EAAI,OAAS,OAC9B,wCAAwC,IAAI;AAAA,cAExC,OAAO,eAAe,QACpB,SAAW,KAAK,OAAO,CAAC,EAAE,YAAY,EAAI,KAAK,MAAM,CAAC,EAAI,GAC5D,CACF;AAAA;AAAA,UAIJ,MAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,QAMR,MAAQ,sDACR,OAAS,CAAC,KAAM,KAAK,IAAK,QACxB,MAAQ;AAAA,oEAEN,OAAS,KAAK,CAAC,EAAI,SAAW,EAChC,0BAA0B,IAAI;AAAA,cAC1B,KAAK;AAAA;AAAA,UAIX,aAAQ,SACD,CACL,WAAY,GACZ,IACF,CACF,KACE,OAAO,CACL,WAAY,GACZ,KAAM;AAAA,iCACiB,OAAO,eAAe,QAAQ,eAAe;AAAA;AAAA,8FAEgB,OAAO,eAAe,QAAQ,eAAe;AAAA;AAAA,SAGnI,CAEJ,CACA,uBAAwB,CACtB,KAAK,aAAa,MAAQ,GAC1B,KAAK,aAAa,MAAM,EACxB,MAAM,MAAQ,IAAI,MAAM,QAAS,CAC/B,QAAS,GACT,WAAY,EACd,CAAC,EACD,KAAK,aAAa,cAAc,KAAK,CACvC,CACA,qBAAsB,CAIpB,OAH+B,KAAK,MAClC,SAAS,eAAe,kBAAkB,EAAE,SAC9C,EAC8B,gBAChC,CACA,UAAU,GAAI,OAAQ,CACpB,IAAI,MAAQ,KACZ,MAAO,IAAI,OAAS,CAClB,aAAa,KAAK,EAClB,MAAQ,WAAW,IAAM,CACvB,GAAG,MAAM,KAAM,IAAI,CACrB,EAAG,MAAM,CACX,CACF,CACF,EACA,OAAO,eAAe,OAAO,4BAA6B,cAAc,EAExE,IAAI,WAAa,cAAc,WAAY,CACzC,mBAAoB,CAOlB,GANA,KAAK,gBAAkB,KAAK,cAAc,oBAAoB,EAC9D,KAAK,SAAW,KAAK,cAAc,aAAa,EAChD,KAAK,iBAAmB,KAAK,cAAc,yBAAyB,EACpE,KAAK,mBAAqB,KAAK,cAAc,yBAAyB,EACtE,KAAK,iBAAmB,MAAM,KAAK,KAAK,iBAAiB,iBAAiB,CAAC,EAC3E,KAAK,YAAc,GACf,KAAK,iBAAiB,OAAS,EAAG,CACpC,KAAK,iBAAiB,mBAAoB,KAAK,SAAS,KAAK,IAAI,CAAC,EAClE,KAAK,iBAAiB,mBAAoB,KAAK,KAAK,KAAK,IAAI,CAAC,EAC9D,KAAK,iBAAiB,sBAAwB,OAAU,KAAK,OAAO,MAAM,OAAO,KAAK,CAAC,EACnF,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,OAAU,CACvD,KAAK,OACH,CAAC,GAAG,MAAM,OAAO,WAAW,QAAQ,EAAE,QAAQ,MAAM,MAAM,EAC1D,CAAC,MAAM,OAAO,IAChB,CACF,CAAC,EAEH,KAAK,yBAA2B,IAAI,qBAClC,KAAK,mBAAmB,KAAK,IAAI,EACjC,CACE,UAAW,EACb,CACF,EACA,MAAM,WAAa,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAC7E,WAAW,YAAY,KAAK,mBAAmB,KAAK,IAAI,CAAC,EACzD,KAAK,mBAAmB,UAAU,CACpC,CACF,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,iBAAiB,UAAW,MAAS,CAAC,KAAK,aAAa,QAAQ,CAAC,CAC/E,CACA,UAAW,CACT,KAAK,OAAO,KAAK,IAAI,EAAG,KAAK,cAAgB,CAAC,CAAC,CACjD,CACA,MAAO,CACL,KAAK,OAAO,KAAK,IAAI,KAAK,cAAgB,EAAG,KAAK,iBAAiB,OAAS,CAAC,CAAC,CAChF,CACA,OAAO,MAAO,QAAU,GAAM,CAC5B,MAAM,gBAAkB,KAAK,iBAAiB,KAAK,EACjD,eAAiB,gBAAgB,sBAAsB,EACrD,UACF,KAAK,YAAc,GACnB,WAAW,IAAO,KAAK,YAAc,GAAQ,GAAG,GAE9C,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,QAC9D,KAAK,mBAAmB,SAAS,CAC/B,SAAU,QAAU,SAAW,OAC/B,KAAM,KAAK,iBAAiB,CAAC,EAAE,YAAc,KAC/C,CAAC,EAED,KAAK,mBAAmB,SAAS,CAC/B,SAAU,QAAU,SAAW,OAC/B,KAAM,KAAK,MAAM,eAAe,KAAO,OAAO,WAAa,EAAI,eAAe,MAAQ,CAAC,CACzF,CAAC,EAEH,KAAK,mBAAmB,KAAK,CAC/B,CACA,mBAAmB,MAAO,CACxB,IAAI,GACJ,MAAM,gBAAkB,KAAK,iBAAiB,KAAK,EACnD,gBAAgB,gBAAgB,SAAU,OAAO,EACjD,WAAW,eAAe,EAAE,QAAS,MAAS,KAAK,aAAa,SAAU,EAAE,CAAC,EAC7E,KAAK,gBAAgB,eAAiB,QAAU,EAChD,KAAK,gBAAgB,eAAiB,QAAU,KAAK,iBAAiB,OAAS,EAC/E,KAAK,SAAS,cAAgB,OAC7B,GAAK,KAAK,mBAAqB,MAE5B,GAAG,MAAM,YACP,cACA,GAAI,KAAO,KAAK,iBAAiB,OAAS,GAAM,KAAK,GACvD,CACN,CACA,mBAAmB,QAAS,CACtB,KAAK,aAGT,QAAQ,QAAS,OAAU,CACrB,MAAM,gBACR,KAAK,mBAAmB,CAAC,GAAG,MAAM,OAAO,WAAW,QAAQ,EAAE,QAAQ,MAAM,MAAM,CAAC,CAEvF,CAAC,CACH,CACA,mBAAmB,MAAO,CACpB,MAAM,QACR,KAAK,iBAAiB,QAAS,MAAS,KAAK,yBAAyB,QAAQ,IAAI,CAAC,EAEnF,KAAK,iBAAiB,QAAS,MAAS,KAAK,yBAAyB,UAAU,IAAI,CAAC,CAEzF,CACF,EACA,OAAO,eAAe,OAAO,cAAe,UAAU,EAmGtD,IAAI,oBAAsB,cAAc,iBAAkB,CACxD,mBAAoB,CAClB,KAAK,YAAc,KACnB,KAAK,gBAAkB,KACvB,KAAK,OAAO,GACV,aACA,gBACA,CAAC,MAAO,SAAW,CACb,MAAM,SAAW,QAAU,MAAM,gBAAkB,MACrD,KAAK,aAAa,MAAM,CAE5B,EACA,EACF,EACA,KAAK,OAAO,GAAG,uBAAyB,OACtC,KAAK,aAAa,MAAM,OAAO,aAAa,CAC9C,EACA,KAAK,OAAO,GAAG,yBAA2B,OACxC,KAAK,cAAc,MAAM,OAAO,aAAa,CAC/C,CACF,CACA,aAAa,cAAe,CAC1B,MAAM,SAAW,cAAc,cAAc,mBAAmB,EAC1D,aAAe,cAAc,cACjC,IAAI,SAAS,aAAa,iBAAiB,CAAC,EAC9C,EACI,aAAa,UAAU,SAAS,WAAW,EAC7C,KAAK,gBAAkB,aAEvB,KAAK,gBAAkB,KAEzB,IAAI,YAAc,WAAW,IAAM,CACjC,GAAI,SAAS,aAAa,kBAAkB,IAAM,OAChD,OAIF,GAFA,SAAS,aAAa,mBAAoB,MAAM,EAChD,aAAa,gBAAgB,QAAQ,EACjC,aAAa,UAAU,SAAS,WAAW,GAAK,CAAC,cAAc,qBAAqB,EAAG,CACzF,MAAM,MAAQ,MAAM,KAClB,aAAa,iBAAiB,4CAA4C,CAC5E,EACA,MAAM,QAAS,MAAS,CACtB,KAAK,cAAc,EAAE,QAAS,YAAe,WAAW,OAAO,CAAC,EAChE,KAAK,MAAM,QAAU,CACvB,CAAC,EACiB,IAAI,kBACpB,IAAI,iBACF,MAAM,IAAI,CAAC,KAAM,QACR,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,oBAAqB,eAAe,CAClD,EACA,CACE,SAAU,IACV,MAAO,IAAM,GAAK,MAClB,OAAQ,gCACV,CACF,CACD,CACH,CACF,EACU,KAAK,CACjB,CACA,MAAM,cAAiB,OAAU,CAC3B,MAAM,gBAAkB,OAC1B,KAAK,cAAc,aAAa,EAChC,cAAc,oBAAoB,aAAc,aAAa,EAEjE,EACM,sBAAwB,IAAM,CAClC,KAAK,cAAc,aAAa,EAChC,SAAS,gBAAgB,oBAAoB,aAAc,qBAAqB,CAClF,EACA,cAAc,iBAAiB,aAAc,aAAa,EAC1D,SAAS,gBAAgB,iBAAiB,aAAc,qBAAqB,EAC7E,YAAc,KACd,KAAK,cACH,IAAI,YAAY,4BAA6B,CAC3C,QAAS,EACX,CAAC,CACH,CACF,EAAG,GAAG,EACN,cAAc,iBACZ,aACA,IAAM,CACA,aACF,aAAa,WAAW,CAE5B,EACA,CACE,KAAM,EACR,CACF,CACF,CACA,cAAc,cAAe,CAC3B,MAAM,SAAW,cAAc,cAAc,mBAAmB,EAC1D,aAAe,cAAc,cACjC,IAAI,SAAS,aAAa,iBAAiB,CAAC,EAC9C,EACA,sBAAsB,IAAM,CAC1B,aAAa,UAAU,IAAI,YAAY,EACvC,SAAS,aAAa,mBAAoB,OAAO,EACjD,WACE,IAAM,CACJ,aAAa,aAAa,SAAU,EAAE,EACtC,aAAa,KAAK,WAAW,EAC7B,aAAa,UAAU,OAAO,YAAY,CAC5C,EACA,aAAa,UAAU,SAAS,WAAW,GAAK,KAAK,kBAAoB,aACrE,IACA,CACN,EACA,KAAK,cACH,IAAI,YAAY,6BAA8B,CAC5C,QAAS,EACX,CAAC,CACH,CACF,CAAC,CACH,CACF,EACA,OAAO,eAAe,OAAO,yBAA0B,mBAAmB,EAE1E,IAAI,iBAAmB,cAAc,eAAgB,CACnD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,QAAS,UAAW,IAAM,CACvC,KAAK,KAAO,EACd,CAAC,CACH,CACA,IAAI,qBAAsB,CACxB,GAAI,KAAK,qBACP,OAAO,KAAK,qBAEd,GAAI,CAAC,cAAc,qBAAqB,EAAG,CACzC,MAAM,SAAW,MAAM,KAAK,KAAK,iBAAiB,mCAAmC,CAAC,EACpF,QAAU,CAAC,EACb,QAAQ,KACN,IAAI,iBACF,SAAS,IAAI,CAAC,KAAM,QACX,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,oBAAqB,eAAe,CAClD,EACA,CACE,SAAU,IACV,MAAO,IAAM,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EAClE,OAAQ,+BACV,CACF,CACD,CACH,CACF,EACA,MAAM,UAAY,KAAK,cAAc,iBAAiB,EACtD,OAAI,WACF,QAAQ,KACN,IAAI,yBACF,UACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,KAAK,IAAI,IAAM,SAAS,OAAS,GAAK,SAAS,OAAQ,EAAE,EACtE,OAAQ,+BACV,CACF,CACF,EAEM,KAAK,qBAAuB,IAAI,kBAAkB,IAAI,iBAAiB,OAAO,CAAC,CACzF,CACF,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,SACC,KAAK,MAAQ,KAAK,sBACpB,MAAM,KACJ,KAAK,iBAAiB,oDAAoD,CAC5E,EAAE,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAC5C,KAAK,oBAAoB,KAAK,GAEhC,aAAa,KAAM,KAAK,KAAO,kBAAoB,kBAAkB,EAE3E,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,gBAAgB,EAEnE,IAAI,mBAAqB,cAAc,eAAgB,CACrD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,QAAS,UAAW,IAAM,CACvC,KAAK,KAAO,EACd,CAAC,CACH,CACA,IAAI,qBAAsB,CACxB,GAAI,KAAK,qBACP,OAAO,KAAK,qBAEd,GAAI,CAAC,cAAc,qBAAqB,EAAG,CACzC,MAAM,SAAW,MAAM,KAAK,KAAK,iBAAiB,qCAAqC,CAAC,EACtF,QAAU,CAAC,EACb,QAAQ,KACN,IAAI,iBACF,SAAS,IAAI,CAAC,KAAM,QACX,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,oBAAqB,eAAe,CAClD,EACA,CACE,SAAU,IACV,MAAO,IAAM,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EAClE,OAAQ,+BACV,CACF,CACD,CACH,CACF,EACA,MAAM,UAAY,KAAK,cAAc,iBAAiB,EACtD,OAAI,WACF,QAAQ,KACN,IAAI,yBACF,UACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,KAAK,IAAI,IAAM,SAAS,OAAS,GAAK,SAAS,OAAQ,EAAE,EACtE,OAAQ,+BACV,CACF,CACF,EAEM,KAAK,qBAAuB,IAAI,kBAAkB,IAAI,iBAAiB,OAAO,CAAC,CACzF,CACF,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,SACC,KAAK,MAAQ,KAAK,sBACpB,MAAM,KACJ,KAAK,iBAAiB,sDAAsD,CAC9E,EAAE,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EAC5C,KAAK,oBAAoB,KAAK,GAEhC,aAAa,KAAM,KAAK,KAAO,oBAAsB,oBAAoB,EAE/E,CACF,EAEA,OAAO,eAAe,OAAO,gBAAiB,kBAAkB,EAEhE,IAAI,mBAAqB,cAAc,eAAgB,CACrD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,QAAS,UAAW,IAAM,CACvC,KAAK,KAAO,EACd,CAAC,CACH,CACA,IAAI,qBAAsB,CACxB,GAAI,KAAK,qBACP,OAAO,KAAK,oBAEhB,CACA,yBAAyB,KAAM,OAAQ,OAAQ,CAC7C,MAAM,yBAAyB,KAAM,OAAQ,MAAM,CACrD,CACF,EACA,OAAO,eAAe,OAAO,WAAY,kBAAkB,EAE3D,IAAI,cAAgB,cAAc,iBAAkB,CAClD,mBAAoB,CACd,OAAO,iBACT,KAAK,eAAiB,IAAI,eAAe,KAAK,0BAA0B,KAAK,IAAI,CAAC,EAClF,KAAK,eAAe,QAAQ,IAAI,EAChC,KAAK,eAAe,QAAQ,KAAK,cAAc,iBAAiB,CAAC,GAE/D,KAAK,oBACP,KAAK,8BAAgC,GACrC,KAAK,OAAO,GAAG,4BAA6B,IAAO,KAAK,iBAAmB,EAAK,EAChF,KAAK,OAAO,GAAG,6BAA8B,IAAO,KAAK,iBAAmB,EAAM,EAClF,KAAK,WAAW,GAAG,kBAAmB,IAAO,KAAK,iBAAmB,EAAK,EAC1E,KAAK,WAAW,GAAG,mBAAoB,IAAO,KAAK,iBAAmB,EAAM,EAC5E,KAAK,OAAO,GAAG,aAAc,KAAK,wBAAwB,KAAK,IAAI,EAAG,EAAI,EAC1E,KAAK,OAAO,GAAG,aAAc,KAAK,wBAAwB,KAAK,IAAI,CAAC,EAChE,KAAK,eACP,KAAK,wBAAwB,EAC7B,KAAK,wBAA0B,SAAS,KAAK,wBAAwB,KAAK,IAAI,EAAG,GAAG,EACpF,OAAO,iBAAiB,SAAU,KAAK,uBAAuB,GAGpE,CACA,sBAAuB,CACrB,MAAM,qBAAqB,EACvB,OAAO,gBACT,KAAK,eAAe,WAAW,EAE7B,KAAK,mBAAqB,KAAK,cACjC,OAAO,oBAAoB,SAAU,KAAK,uBAAuB,CAErE,CACA,IAAI,cAAe,CACjB,OAAO,KAAK,aAAa,QAAQ,CACnC,CACA,IAAI,mBAAoB,CACtB,OAAO,KAAK,aAAa,aAAa,CACxC,CACA,IAAI,4BAA6B,CAC/B,MAAO,GACT,CACA,IAAI,iBAAiB,MAAO,CAC1B,KAAK,8BAAgC,MACrC,KAAK,wBAAwB,CAC/B,CACA,0BAA0B,QAAS,CACjC,QAAQ,QAAS,OAAU,CACzB,GAAI,MAAM,SAAW,KAAM,CACzB,IAAI,EAAI,EACJ,MAAM,cACJ,MAAM,cAAc,OAAS,EAC/B,EAAI,MAAM,cAAc,CAAC,EAAE,UAE3B,EAAI,MAAM,cAAc,UAG1B,EAAI,MAAM,OAAO,aAEnB,MAAM,OAAS,EACf,SAAS,gBAAgB,MAAM,YAAY,kBAAmB,GAAG,MAAM,IAAI,CAC7E,CACA,GAAI,MAAM,OAAO,UAAU,SAAS,gBAAgB,EAAG,CACrD,IAAI,EAAI,EACJ,MAAM,cACJ,MAAM,cAAc,OAAS,EAC/B,EAAI,MAAM,cAAc,CAAC,EAAE,UAE3B,EAAI,MAAM,cAAc,UAG1B,EAAI,MAAM,OAAO,aAEnB,MAAM,iBAAmB,EACzB,SAAS,gBAAgB,MAAM,YAC7B,qCACA,GAAG,gBAAgB,IACrB,CACF,CACF,CAAC,CACH,CACA,wBAAwB,MAAO,CAE3B,KAAK,+BACL,OAAO,QAAU,KAAK,4BACrB,OAAS,MAAM,OAAS,aAEzB,KAAK,UAAU,OAAO,oBAAoB,EAE1C,KAAK,UAAU,IAAI,oBAAoB,CAE3C,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAE5D,IAAI,eAAiB,KAAM,CACzB,YAAY,KAAM,CAChB,KAAK,mBAAqB,KAC1B,KAAK,OAAS,IAAI,aAAa,KAAK,mBAAmB,UAAU,EACjE,KAAK,cAAgB,OAAO,eAAe,SAAS,kBAAoB,EACxE,KAAK,OAAS,KAAK,mBAAmB,WAAW,cAAc,WAAW,EAC1E,KAAK,OAAO,GAAG,QAAS,6BAA8B,KAAK,OAAO,KAAK,IAAI,CAAC,EAC5E,KAAK,OAAO,GAAG,QAAS,4BAA6B,KAAK,aAAa,KAAK,IAAI,CAAC,EACjF,KAAK,OAAO,GAAG,QAAS,4BAA6B,KAAK,aAAa,KAAK,IAAI,CAAC,EACjF,KAAK,OAAO,GAAG,QAAS,gCAAiC,KAAK,WAAW,KAAK,IAAI,CAAC,EACnF,KAAK,mBAAmB,OAAO,QAAS,KAAK,kBAAkB,KAAK,IAAI,CAAC,EACzE,KAAK,mBAAmB,OAAO,YAAa,KAAK,qBAAqB,KAAK,IAAI,CAAC,EAChF,KAAK,mBAAmB,OAAO,eAAgB,KAAK,wBAAwB,KAAK,IAAI,CAAC,EACtF,KAAK,mBAAmB,OACtB,mBACA,KAAK,4BAA4B,KAAK,IAAI,CAC5C,EACA,KAAK,mBAAmB,OAAO,iBAAkB,KAAK,0BAA0B,KAAK,IAAI,CAAC,EAC1F,KAAK,mBAAmB,OACtB,sBACA,KAAK,+BAA+B,KAAK,IAAI,CAC/C,EACA,KAAK,OAAO,GAAG,UAAW,aAAc,KAAK,eAAe,KAAK,IAAI,CAAC,CACxE,CACA,MAAO,CACL,MAAM,gBAAkB,KAAK,OAAO,cAAc,0BAA0B,EACtE,eAAiB,KAAK,OAAO,cAAc,yBAAyB,EAC1E,GAAI,KAAK,mBAAmB,MAAM,QAAU,EAAG,CAC7C,gBAAgB,MAAM,QAAU,OAChC,eAAe,MAAM,QAAU,OAC/B,MACF,CACA,gBAAgB,MAAM,QAAU,GAChC,eAAe,MAAM,QAAU,GAC/B,IAAI,YAAc,GAClB,KAAK,mBAAmB,MAAM,QAAQ,CAAC,KAAM,QAAU,CACrD,aAAe;AAAA,kDAEb,QAAU,EAAI,wBAA0B,EAC1C;AAAA,sDAC8C,KAAK;AAAA;AAAA,OAGrD,CAAC,EACD,eAAe,cAAc,mCAAmC,EAAE,UAAY,WAChF,CACA,QAAS,CACP,KAAK,mBAAmB,MAAM,CAChC,CACA,cAAe,CACb,KAAK,mBAAmB,KAAK,CAC/B,CACA,cAAe,CACb,KAAK,mBAAmB,KAAK,CAC/B,CACA,WAAW,MAAO,OAAQ,CACxB,KAAK,mBAAmB,KAAK,CAAC,GAAG,OAAO,WAAW,QAAQ,EAAE,QAAQ,MAAM,CAAC,CAC9E,CACA,mBAAoB,CAClB,KAAK,OAAO,IAAI,SAAS,CAC3B,CACA,qBAAqB,MAAO,CAC1B,MAAM,iBAAmB,KAAK,mBAAmB,SAAS,iBAC1D,GAAI,KAAK,mBAAmB,aAAa,IAAM,iBAC7C,KAAK,mBAAmB,OAAO,iBAAkB,MAAO,GAAG,MACtD,CACL,IAAI,IAAM,KAAK,cACX,iBAAmB,KACrB,IAAM,GAER,KAAK,mBAAmB,OAAO,IAAK,MAAO,GAAG,CAChD,CACF,CACA,eAAe,MAAO,CAChB,MAAM,OAAO,cAAgB,SAC/B,KAAK,mBAAmB,kBAAkB,MAAM,OAAO,YAAY,CAEvE,CACA,yBAA0B,CACxB,GAAI,KAAK,mBAAmB,MAAM,QAAU,EAC1C,OAEF,MAAM,UAAY,KAAK,mBAAmB,WAAW,cACnD,6BAA6B,KAAK,mBAAmB,gBAAgB,EAAI,CAAC,GAC5E,EACA,UAAU,aAAa,iBAAkB,MAAM,EAC/C,WAAW,SAAS,EAAE,QAAS,MAAS,KAAK,gBAAgB,gBAAgB,CAAC,CAChF,CACA,6BAA8B,CAC5B,IAAI,IACH,GAAK,KAAK,SAAW,MAAgB,GAAG,UAAU,OAAO,kBAAkB,CAC9E,CACA,2BAA4B,CAC1B,IAAI,IACH,GAAK,KAAK,SAAW,MAAgB,GAAG,UAAU,IAAI,kBAAkB,CAC3E,CACA,+BAA+B,KAAM,CACnC,KAAK,KAAK,OACR,KAAK,mBAAmB,MAAM,QAAU,GACxC,OAAO,WAAW,OAAO,eAAe,YAAY,QAAQ,EAAE,QAC1D,EACA,EACR,CACF,EACI,mBAAqB,cAAc,qBAAsB,CAC3D,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,aAAe,SAAS,eAAe,yBAAyB,EACrE,KAAK,cAAgB,OAAO,eAAe,SAAS,kBAAoB,EACxE,gBAAgB,KAAK,YAAY,CACnC,CACA,sBAAuB,CACrB,IAAI,GACJ,MAAM,qBAAqB,GAC1B,GAAK,KAAK,qBAAuB,MAAgB,GAAG,QAAQ,CAC/D,CACA,MAAM,yBAAyB,KAAM,OAAQ,OAAQ,CACnD,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,OACD,QACC,KAAK,OACP,MAAM,gBAAgB,KAAK,YAAY,EACvC,KAAK,gBAAgB,EAG7B,CACA,MAAM,iBAAkB,CACtB,MAAM,MAAQ,MAAM,KAAK,iBAAiB,EAC1C,KAAK,mBAAqB,IAAI,OAAO,gBAAgB,KAAM,eAAgB,MAAO,CAChF,MAAO,MAAM,UAAW,MAAS,KAAK,QAAQ,EAC9C,cAAe,KAAK,cACpB,KAAM,GACN,eAAgB,GAChB,cAAe,GACf,oBAAqB,cAAc,cAAc,EACjD,gBAAiB,GACjB,UAAW,GACX,QAAS,GACT,iBAAkB,IAAM,CACtB,MAAM,UAAY,KAAK,aAAa,cAAc,kCAAkC,EAC9E,YAAc,OAAO,aAAe,SAAS,gBAAgB,UAC7D,KAAO,UAAU,sBAAsB,EAC7C,MAAO,CACL,EAAG,KAAK,KACR,EAAG,KAAK,IAAM,YACd,EAAG,KAAK,KACV,CACF,EACA,iBAAkB,CAAC,aAAc,OAC3B,aACE,KAAK,EAAI,KAAK,EACT,IAEA,EAGL,KAAK,iBAAmB,GACnB,EAEA,IAIf,CAAC,EACD,IAAI,WAAa,KACjB,KAAK,mBAAmB,WAAa,IAAI,MAAM,KAAK,mBAAmB,WAAY,CACjF,MAAO,CAAC,OAAQ,QAAS,WAAa,CAChC,aAAe,OAAO,aACxB,QAAQ,MAAM,OAAQ,QAAS,QAAQ,EACvC,WAAa,OAAO,WAExB,CACF,CAAC,EACD,KAAK,mBAAmB,OAAO,QAAS,IAAM,CAC5C,KAAK,KAAO,EACd,CAAC,EACD,KAAK,mBAAmB,KAAK,CAC/B,CACA,MAAM,kBAAmB,CACvB,MAAM,aAAe,MAAM,KACvB,KAAK,aAAa,iBAChB,iEACF,CACF,EACA,QAAU,MAAM,gBAAgB,KAAK,KAAK,aAAa,gBAAgB,CAAC,EAC1E,OAAO,QAAQ,QACb,aAAa,IAAK,MAAS,CACzB,MAAM,aAAe,QAAQ,MAAS,KACnC,OAAU,MAAM,KAAO,SAAS,KAAK,aAAa,eAAe,CAAC,CACrE,EACM,eAAiB,oBACrB,aACA,CACE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KACjF,KAAM,GACR,CACF,EACM,aAAe,KAAK,IACxB,eAAe,eAAe,OAAS,CAAC,EACxC,OAAO,UACT,EACA,MAAO,CACL,SAAU,KAAK,UAAU,SAAS,aAAa,EAC/C,IAAK,qBACH,aACA,GAAG,KAAK,KACN,KAAK,IAAI,aAAe,OAAO,iBAAmB,KAAK,cAAe,GAAG,CAC3E,CAAC,GACH,EACA,KAAM,KAAK,kBAAkB,WAC7B,cAAe,aACf,EAAG,aACH,EAAG,SAAS,aAAe,aAAa,YAAe,CACzD,CACF,CAAC,CACH,CACF,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,mBAAqB,cAAc,WAAY,CACjD,mBAAoB,CAClB,IAAI,GACJ,MAAM,UAAY,KAAK,cAAc,QAAQ,EACxC,YAGL,KAAK,YAAc,KAAK,MAAM,UAAU,SAAS,GAC5C,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAGlE,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,EAE/E,CACA,qBAAqB,MAAO,CAC1B,IAAI,IACH,GAAK,KAAK,cAAc,MAAM,IAAM,MAAgB,GAAG,OAAO,EAC3D,MAAM,OAAO,SAAW,KAAK,YAAY,MAAM,OAAO,QAAQ,EAAK,IAAM,IAC3E,KAAK,OAAS,GACd,KAAK,mBAAmB,aAAc,KAAK,YAAY,MAAM,OAAO,QAAQ,EAAK,CAAC,GAElF,KAAK,OAAS,EAElB,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,mBAAqB,cAAc,WAAY,CACjD,mBAAoB,CAClB,IAAI,IACC,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAGlE,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,EAEzE,QAAQ,YAAc,QAAQ,eAChC,QAAQ,cAAc,KAAK,CAE/B,CACA,qBAAqB,MAAO,CAC1B,KAAK,0BAA0B,MAAM,OAAO,OAAO,EACnD,KAAK,gCAAgC,MAAM,OAAO,OAAO,CAC3D,CACA,0BAA0B,QAAS,CACjC,IAAI,6BAA+B,KAAK,cAAc,mCAAmC,EACzF,GAAI,CAAC,6BACH,OAEF,IAAI,oBAAsB,GAC1B,6BAA6B,UAAU,OACrC,kBACA,oBACA,iBACF,EACK,QAKC,QAAQ,WACV,6BAA6B,gBAAgB,UAAU,EACvD,6BAA6B,UAAU,IACrC,6BAA6B,aAAa,kBAAkB,EACxD,kBACA,mBACN,EACA,oBAAsB,6BAA6B,aAAa,qBAAqB,IAErF,6BAA6B,aAAa,WAAY,UAAU,EAChE,6BAA6B,UAAU,IAAI,iBAAiB,EAC5D,oBAAsB,OAAO,eAAe,QAAQ,qBAftD,6BAA6B,aAAa,WAAY,UAAU,EAChE,6BAA6B,UAAU,IAAI,iBAAiB,EAC5D,oBAAsB,OAAO,eAAe,QAAQ,wBAgBlD,6BAA6B,aAAa,IAAI,IAAM,gBACtD,6BAA6B,kBAAkB,UAAY,oBAE3D,6BAA6B,UAAY,mBAE7C,CACA,gCAAgC,QAAS,CACvC,IAAI,2BAA6B,KAAK,cAAc,yBAAyB,EACxE,6BAGL,2BAA2B,MAAM,QAC/B,CAAC,SAAW,CAAC,QAAQ,UAAe,OAAS,QACjD,CACF,EACA,OAAO,eAAe,OAAO,6BAA8B,kBAAkB,EAE7E,IAAI,sBAAwB,cAAc,iBAAkB,CAC1D,mBAAoB,CAClB,IAAI,IACC,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAGlE,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,CAE/E,CACA,qBAAqB,MAAO,CAC1B,MAAM,QAAU,MAAM,OAAO,QAC7B,GAAI,QAAS,CACX,MAAM,UAAY,KAAK,cAAc,aAAa,EAClD,UAAU,MAAQ,QAAQ,GAC1B,UAAU,cACR,IAAI,MAAM,SAAU,CAClB,QAAS,EACX,CAAC,CACH,CACF,CACF,CACF,EACA,OAAO,eAAe,OAAO,yBAA0B,qBAAqB,EAE5E,IAAI,cAAgB,cAAc,eAAgB,CAChD,mBAAoB,CAClB,KAAK,GAAG,SAAW,GAEjB,SAAO,eAAe,SAAS,WAAa,QAC5C,OAAO,eAAe,SAAS,WAAa,SAI9C,KAAK,iBAAiB,SAAU,KAAK,uBAAuB,KAAK,IAAI,CAAC,CACxE,CACA,MAAM,uBAAuB,MAAO,CAElC,GADA,MAAM,eAAe,EACjB,CAAC,KAAK,cAAc,EAAG,CACzB,KAAK,eAAe,EACpB,MACF,CACA,MAAM,cAAgB,MAAM,KAAK,KAAK,QAAQ,EAAE,OAAQ,QAAW,OAAO,OAAS,QAAQ,EAC3F,cAAc,QAAS,cAAiB,CACtC,aAAa,aAAa,WAAY,UAAU,EAChD,aAAa,aAAa,cAAe,MAAM,CACjD,CAAC,EACD,MAAM,aAAe,IAAI,SAAS,IAAI,EACtC,aAAa,OAAO,WAAY,CAAC,WAAW,CAAC,EAC7C,aAAa,OAAO,SAAS,EAC7B,aAAa,OAAO,SAAS,EAC7B,aAAa,OAAO,SAAS,EAC7B,MAAM,SAAW,MAAM,MAAM,GAAG,OAAO,eAAe,OAAO,UAAU,MAAO,CAC5E,KAAM,aACN,OAAQ,OACR,QAAS,CACP,mBAAoB,gBACtB,CACF,CAAC,EACD,cAAc,QAAS,cAAiB,CACtC,aAAa,gBAAgB,UAAU,EACvC,aAAa,gBAAgB,aAAa,CAC5C,CAAC,EACD,MAAM,aAAe,MAAM,SAAS,KAAK,EACzC,GAAI,SAAS,GAAI,CACf,IAAI,IAAM,aACN,aAAa,eAAe,OAAO,IACrC,IAAM,aAAa,MAAS,CAAC,GAE/B,KAAK,cACH,IAAI,YAAY,gBAAiB,CAC/B,QAAS,GACT,OAAQ,CACN,QAAS,GACX,CACF,CAAC,CACH,EACA,MAAM,GAAG,OAAO,eAAe,OAAO,OAAO,KAAK,EAAE,KAAK,MAAO,WAAc,CAC5E,MAAM,YAAc,MAAM,UAAU,KAAK,EACzC,SAAS,gBAAgB,cACvB,IAAI,YAAY,eAAgB,CAC9B,QAAS,GACT,OAAQ,CACN,KAAM,WACR,CACF,CAAC,CACH,CACF,CAAC,EACD,SAAS,gBAAgB,cASvB,IAAI,YAAY,eAAgB,CAC9B,QAAS,GACT,OAAQ,CAKN,aAAc,EAChB,CACF,CAAC,CACH,CACF,CACA,KAAK,cACH,IAAI,YAAY,2BAA4B,CAC1C,QAAS,GACT,WAAY,GACZ,OAAQ,CACN,OAAQ,SAAS,GAAK,UAAY,QAClC,MAAO,aAAa,aAAkB,EACxC,CACF,CAAC,CACH,CACF,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,cAAe,CAC5D,QAAS,MACX,CAAC,EAED,IAAI,eAAiB,cAAc,iBAAkB,CACnD,MAAM,mBAAoB,CACxB,IAAI,GACJ,KAAK,iBAAmB,KAAK,cAAc,qBAAqB,EAC5D,KAAK,aAAa,kBAAkB,GACtC,KAAK,iCAAiC,EAGtC,OAAK,iBAAiB,oBAAsB,GAC5C,KAAK,cAAc,wBAAwB,EAAE,aAAa,WAAW,KAIvE,KAAK,uBAAyB,KAC9B,KAAK,mBAAqB,KAAK,cAAc,2BAA2B,EACxE,KAAK,WAAa,KAAK,cAAc,uBAAuB,EAC5D,KAAK,QAAU,MAAM,gBAAgB,KAAK,KAAK,aAAa,gBAAgB,CAAC,GAC5E,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAE5D,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,EAC/E,KAAK,iBAAiB,iBAAiB,eAAgB,IACrD,KAAK,iBAAiB,aAAa,EAAK,CAC1C,EACA,KAAK,iBAAiB,iBAAiB,eAAgB,IACrD,KAAK,iBAAiB,aAAa,EAAI,CACzC,EACA,KAAK,iBAAiB,iBAAiB,eAAgB,IACrD,KAAK,iBAAiB,aAAa,EAAK,CAC1C,EACA,KAAK,iBAAiB,iBAAiB,eAAgB,IACrD,KAAK,iBAAiB,aAAa,EAAI,CACzC,EAEA,KAAK,iBAAiB,iBACpB,yBACA,KAAK,sBAAsB,KAAK,IAAI,CACtC,EACA,KAAK,iBAAiB,iBACpB,yBACA,KAAK,sBAAsB,KAAK,IAAI,CACtC,EAEF,CACA,IAAI,oBAAqB,CACvB,OAAO,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,QAC/D,SACA,KAAK,aAAa,qBAAqB,CAC7C,CACA,MAAM,kCAAmC,CACvC,MAAM,KAAK,mBAAmB,EAC9B,MAAM,iBAAmB,MAAM,KAAK,iBAAiB,iBACrD,IAAI,SAAW,KAAK,cAAc,qCAAqC,EACnE,mBACF,SAAW,iBAAiB,gBAAgB,cAAc,KAAK,GAEjE,MAAM,MAAQ,SACR,qBAAuB,cAAc,qBAAqB,EAChE,MAAM,YAAY,KAAK,EACvB,MAAM,UAAY,IAAI,kBACpB,IAAI,iBAAiB,CACnB,IAAI,yBACF,MACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,SAAS,qBAAuB,EAAI,GAAG,IAAK,UAAU,CACpE,EACA,CACE,SAAU,IACV,OAAQ,gCACV,CACF,EACA,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,4CAA4C,CAAC,EAAE,IAC9E,CAAC,KAAM,QACE,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UACE,KAAK,qBAAuB,OACxB,CAAC,cAAc,qBAAuB,EAAI,MAAM,IAAK,eAAe,EACpE,CAAC,cAAc,qBAAuB,EAAI,MAAM,IAAK,eAAe,CAC5E,EACA,CACE,SAAU,IACV,MAAO,qBAAuB,EAAI,IAAM,MACxC,OAAQ,iCACV,CACF,CAEJ,CACF,CACF,CAAC,CACH,EACA,KAAK,uBAAyB,UAAU,OAAO,EAAI,UAAU,KAAK,CACpE,CACA,MAAM,qBAAqB,MAAO,CAChC,MAAM,eAAiB,MAAM,OAAO,QAC9B,iBAAmB,CAAC,EAC1B,IAAI,kBAAoB,GA+BxB,GA9BA,KAAK,QAAQ,MAAS,QAAS,OAAU,CACvC,IAAI,GACJ,IAAI,YACF,eAAe,gBACf,MAAM,KAAU,eAAe,eAAkB,GACnD,IAAK,GAAK,MAAM,MAAW,MAAgB,GAAG,SAAS,GAAG,IACxD,kBAAoB,GAChB,CAAC,aAAa,CAChB,MAAM,WAAa,MAAM,IAAO,MAAM,GAAG,EACvC,gBAAkB,WAAW,IAAI,EAAE,MAAM,GAAG,EAC9C,KAAK,QAAQ,QAAW,QAAS,QAAW,CACtC,OAAO,KAAQ,YAAY,IAAM,gBAAgB,CAAC,EAAE,YAAY,GAEhE,eAAe,QAAW,OAAO,SAAc,CAAC,EAAE,YAAY,IAC9D,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,GAEtC,iBAAiB,KAAK,MAAM,EAAK,CAGvC,CAAC,CACH,CAEJ,CAAC,EAC4B,CAC3B,GAAG,IAAI,IACL,MAAM,KAAK,KAAK,iBAAiB,6BAA6B,CAAC,EAAE,IAAK,MACpE,SAAS,KAAK,aAAa,eAAe,CAAC,CAC7C,CACF,CACF,EACyB,KAAM,OAAU,CAAC,iBAAiB,SAAS,KAAK,CAAC,EAAG,CAC3E,MAAM,gBAAkB,eAAe,eACnC,eAAe,eAAkB,GACjC,KAAK,QAAQ,MACV,IAAK,MAAS,KAAK,EAAE,EACrB,OAAQ,MAAS,CAAC,iBAAiB,SAAS,IAAI,CAAC,EAAE,CAAC,EAC3D,MAAM,KAAK,KAAK,iBAAiB,iBAAiB,CAAC,EAAE,QAAS,MAAS,CACrE,KAAK,UAAU,OACb,cACA,iBAAiB,SAAS,SAAS,KAAK,aAAa,eAAe,CAAC,CAAC,CACxE,EACA,KAAK,UAAU,OACb,cACA,kBAAoB,SAAS,KAAK,aAAa,eAAe,CAAC,CACjE,EACA,KAAK,UAAU,OACb,sBACA,kBAAoB,SAAS,KAAK,aAAa,eAAe,CAAC,CACjE,CACF,CAAC,EACD,KAAK,iBAAiB,OAAO,CAC/B,KAAO,CACL,GACE,CAAC,MAAM,OAAO,QAAQ,gBACtB,KAAK,yBAA2B,MAAM,OAAO,QAAQ,eAAkB,GAEvE,OAEF,KAAK,iBAAiB,OACpB,mBAAmB,MAAM,OAAO,QAAQ,eAAkB,EAAK,IACjE,CACF,CACA,KAAK,uBAAyB,MAAM,OAAO,QAAQ,eAC/C,MAAM,OAAO,QAAQ,eAAkB,GACvC,IACN,CAOA,MAAM,uBAAwB,EACH,MAAM,KAAK,iBAAiB,kBACpC,MAAM,QAAS,MAAS,CAErC,CAAC,iBAAkB,QAAS,OAAO,EAAE,SACnC,KAAK,QAAQ,aAAa,iBAAiB,CAC7C,GAEI,KAAK,QAAQ,mBACf,KAAK,QAAQ,kBAAkB,MAAM,CAG3C,CAAC,CACH,CACA,MAAM,uBAAwB,CAE5B,MAAM,eADmB,MAAM,KAAK,iBAAiB,kBACd,gBAUvC,OATI,KAAK,aACP,KAAK,WAAW,OAAS,cAAc,aAAa,iBAAiB,IAAM,SAEzE,KAAK,oBACP,KAAK,mBAAmB,aACtB,0BACA,KAAK,mBAAmB,aAAa,iCAAiC,CACxE,EAEM,cAAc,aAAa,iBAAiB,EAAG,CACrD,IAAK,QACH,KAAK,mBAAmB,aACtB,0BACA,cAAc,aAAa,eAAe,CAC5C,EACA,cAAc,kBAAkB,KAAK,EACrC,MACF,IAAK,iBACL,IAAK,QACC,KAAK,aAAa,gBAAgB,GACpC,cAAc,kBAAkB,KAAK,EAEvC,KACJ,CACF,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,SAAS,cAAc,MAAO,OAAS,GAAI,CACrC,OAAO,OAAU,WACnB,MAAQ,MAAM,QAAQ,IAAK,EAAE,GAE/B,MAAM,iBAAmB,sBACvB,aAAe,QAAU,OAAO,eAAe,SAAS,YAE1D,SAAS,UAAU,OAAQ,aAAc,CACvC,OAAO,QAAU,MAAQ,SAAW,OAAS,aAAe,MAC9D,CAEA,SAAS,qBAAqB,OAAQ,UAAW,UAAW,QAAS,CAInE,GAHA,UAAY,UAAU,UAAW,CAAC,EAClC,UAAY,UAAU,UAAW,GAAG,EACpC,QAAU,UAAU,QAAS,GAAG,EAC5B,MAAM,MAAM,GAAK,QAAU,KAC7B,MAAO,GAET,QAAU,OAAS,KAAK,QAAQ,SAAS,EACzC,IAAI,MAAQ,OAAO,MAAM,GAAG,EAC1B,cAAgB,MAAM,CAAC,EAAE,QAAQ,2BAA4B,KAAO,SAAS,EAC7E,YAAc,MAAM,CAAC,EAAI,QAAU,MAAM,CAAC,EAAI,GAChD,OAAO,cAAgB,WACzB,CACA,IAAI,MAAQ,GACZ,OAAQ,aAAa,MAAM,gBAAgB,EAAE,CAAC,EAAG,CAC/C,IAAK,SACH,MAAQ,qBAAqB,MAAO,CAAC,EACrC,MACF,IAAK,qBACH,MAAQ,qBAAqB,MAAO,CAAC,EACrC,MACF,IAAK,8BACH,MAAQ,qBAAqB,MAAO,EAAG,IAAK,GAAG,EAC/C,MACF,IAAK,8BACH,MAAQ,qBAAqB,MAAO,EAAG,IAAK,GAAG,EAC/C,MACF,IAAK,mCACH,MAAQ,qBAAqB,MAAO,EAAG,IAAK,GAAG,EAC/C,MACF,IAAK,0CACH,MAAQ,qBAAqB,MAAO,EAAG,IAAK,GAAG,EAC/C,MACF,IAAK,0CACH,MAAQ,qBAAqB,MAAO,EAAG,GAAG,EAC1C,MACF,IAAK,+CACH,MAAQ,qBAAqB,MAAO,EAAG,GAAG,EAC1C,KACJ,CACA,OAAI,aAAa,QAAQ,sBAAsB,IAAM,GAC5C,aAAa,QAAQ,iBAAkB,KAAK,CAIvD,CAEA,IAAI,cAAgB,cAAc,WAAY,CAC5C,mBAAoB,CAClB,IAAI,IACH,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAE5D,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,CACjF,CACA,IAAI,YAAa,CACf,OAAO,KAAK,aAAa,eAAe,GAAK,EAC/C,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,aAAa,mBAAmB,GAAK,EACnD,CACA,qBAAqB,MAAO,CAC1B,KAAK,iBAAiB,MAAM,OAAO,OAAO,EAC1C,KAAK,iBAAiB,MAAM,OAAO,OAAO,EAC1C,KAAK,cAAc,MAAM,OAAO,OAAO,CACzC,CACA,iBAAiB,QAAS,CACxB,IAAI,iBAAmB,KAAK,cAAc,2BAA2B,EACrE,GAAK,kBAGL,GAAI,CAAC,QACH,iBAAiB,UAAY,WAE7B,iBAAiB,UAAY,GACzB,CAAC,QAAQ,UACX,iBAAiB,UAAY,sCAAsC,OAAO,eAAe,QAAQ,iBAAiB,kBACzG,QAAQ,iBAAsB,QAAQ,MAAU,CACzD,IAAI,cAAgB,GAChB,OAAO,eAAe,SAAS,eAAiB,aAClD,cAAgB,GAAG,KAAK,OACpB,QAAQ,iBAAsB,QAAQ,OAAY,IAAO,QAAQ,gBACrE,CAAC,IAED,cAAgB,cAAc,QAAQ,iBAAsB,QAAQ,KAAQ,EAE9E,iBAAiB,UAAY,wCAAwC,OAAO,eAAe,QAAQ,mBAAmB,QACpH,YACA,aACF,CAAC,SACH,EAEJ,CACA,iBAAiB,QAAS,CACxB,IAAI,kBAAoB,KAAK,cAAc,2BAA2B,EAClE,eAAiB,OAAO,eAAe,SAAS,YAIpD,GAHI,OAAO,eAAe,SAAS,sBACjC,eAAiB,OAAO,eAAe,SAAS,yBAE9C,EAAC,kBAGL,GAAI,CAAC,QACH,kBAAkB,MAAM,QAAU,WAC7B,CAkBL,GAjBA,kBAAkB,UAAY,GAC1B,QAAQ,iBAAsB,QAAQ,OACxC,kBAAkB,WAAa,uCAC7B,KAAK,UACP,mCACE,OAAO,eAAe,QAAQ,gBAChC,UAAU,cAAc,QAAQ,MAAU,cAAc,CAAC,UACzD,kBAAkB,WAAa,oEAC7B,OAAO,eAAe,QAAQ,mBAChC,UAAU,cAAc,QAAQ,iBAAqB,cAAc,CAAC,WAEpE,kBAAkB,WAAa,sBAC7B,KAAK,UACP,mCACE,OAAO,eAAe,QAAQ,gBAChC,UAAU,cAAc,QAAQ,MAAU,cAAc,CAAC,UAEvD,QAAQ,uBAA2B,CACrC,IAAI,eAAiB,GACjB,QAAQ,uBAA0B,kBAAuB,IAC3D,eAAiB,yDAAyD,QAAQ,uBAA0B,eAAkB,WAEhI,kBAAkB,WAAa;AAAA,4CACG,KAAK,cAAc;AAAA;AAAA,4DAEH,cAC5C,QAAQ,UACV,CAAC;AAAA;AAAA,gBAEC,cAAc;AAAA,qEAEd,QAAQ,uBAA0B,cACpC;AAAA;AAAA;AAAA,SAIN,CACA,kBAAkB,MAAM,QAAU,EACpC,CACF,CACA,cAAc,QAAS,CACrB,IAAI,IAAM,KAAK,cAAc,8BAA8B,EAC3D,GAAI,CAAC,IACH,OAEF,IAAI,UAAY,IAAI,cAAc,2BAA2B,EACzD,CAAC,SAAW,CAAC,QAAQ,IACvB,IAAI,MAAM,QAAU,QAEpB,UAAU,UAAY,QAAQ,IAC9B,IAAI,MAAM,QAAU,GAExB,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAE5D,IAAI,WAAa,cAAc,eAAgB,CAC7C,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,CACxE,CACA,MAAM,OAAQ,CACZ,MAAM,MAAM,MAAM,EAClB,KAAK,aAAe,KAAK,cAAc,4BAA4B,EAC/D,OAAO,SAAW,OAAO,QAAQ,eACnC,OAAO,QAAQ,cAAc,KAAK,CAEtC,CACA,qBAAqB,MAAO,CAC1B,MAAM,QAAU,MAAM,OAAO,QAQ7B,GAPI,SACF,MAAM,KAAK,KAAK,iBAAiB,qBAAqB,CAAC,EAAE,QAAS,MAAS,CACzE,MAAMH,KAAM,IAAI,IAAI,KAAK,IAAI,EAC7BA,KAAI,aAAa,IAAI,UAAW,QAAQ,EAAK,EAC7C,KAAK,aAAa,OAAQA,KAAI,SAAS,CAAC,CAC1C,CAAC,EAEC,CAAC,KAAK,cAAgB,CAAC,SAAW,CAAC,QAAQ,eAC7C,OAEF,MAAM,cAAgB,QAAQ,eAC1B,cAAc,KAChB,KAAK,aAAa,aAAa,MAAO,cAAc,GAAM,EAE5D,KAAK,aAAa,aAAa,QAAS,cAAc,cAAiB,KAAQ,EAC/E,KAAK,aAAa,aAAa,SAAU,cAAc,cAAiB,MAAS,EACjF,KAAK,aAAa,aAAa,MAAO,qBAAqB,cAAe,MAAM,CAAC,EACjF,KAAK,aAAa,aAAa,SAAU,iBAAiB,cAAe,CAAC,IAAK,IAAK,GAAG,CAAC,CAAC,CAC3F,CACF,EACA,OAAO,eAAe,OAAO,cAAe,UAAU,EAEtD,IAAI,kBAAoB,cAAc,gBAAiB,CACrD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,EACtE,KAAK,OAAO,GAAG,gBAAiB,IAAO,KAAK,KAAO,EAAM,CAC3D,CACA,MAAM,OAAQ,CACZ,MAAM,MAAM,MAAM,EAClB,KAAK,aAAe,KAAK,cAAc,4BAA4B,CACrE,CACA,qBAAqB,MAAO,CAC1B,MAAM,QAAU,MAAM,OAAO,QAQ7B,GAPI,SACF,MAAM,KAAK,KAAK,iBAAiB,qBAAqB,CAAC,EAAE,QAAS,MAAS,CACzE,MAAMA,KAAM,IAAI,IAAI,KAAK,IAAI,EAC7BA,KAAI,aAAa,IAAI,UAAW,QAAQ,EAAK,EAC7C,KAAK,aAAa,OAAQA,KAAI,SAAS,CAAC,CAC1C,CAAC,EAEC,CAAC,KAAK,cAAgB,CAAC,SAAW,CAAC,QAAQ,eAC7C,OAEF,MAAM,cAAgB,QAAQ,eAC1B,cAAc,KAChB,KAAK,aAAa,aAAa,MAAO,cAAc,GAAM,EAE5D,IAAI,EAAI,cAAc,cAAiB,MACvC,KAAK,aAAa,aAAa,QAAS,CAAC,EACzC,IAAI,EAAI,cAAc,cAAiB,OACnC,IAAM,qBAAqB,cAAe,MAAM,EAChD,OAAS,iBAAiB,cAAe,CAAC,GAAI,IAAK,GAAG,CAAC,EAC3D,KAAK,aAAa,aAAa,SAAU,CAAC,EAC1C,KAAK,aAAa,aAAa,MAAO,GAAG,EACzC,KAAK,aAAa,aAAa,SAAU,MAAM,CACjD,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,iBAAiB,EAEpE,IAAI,cAAgB,cAAc,WAAY,CAC5C,mBAAoB,CAClB,IAAI,IACH,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAE5D,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,CACjF,CACA,qBAAqB,MAAO,CACrB,MAAM,OAAO,QAGhB,KAAK,qBAAqB,MAAM,OAAO,QAAQ,EAAK,EAFpD,KAAK,UAAY,EAIrB,CACA,MAAM,qBAAqB,GAAI,CAC7B,MAAM,SAAW,MAAM,MACnB,GAAG,OAAO,eAAe,OAAO,mBAAmB,aAAa,EAAE,gCACpE,EACA,IAAM,SAAS,cAAc,KAAK,EACpC,IAAI,UAAY,MAAM,SAAS,KAAK,EACpC,KAAK,UAAY,IAAI,kBAAkB,UAAU,KAAK,CACxD,CACF,EACA,OAAO,eAAe,OAAO,iBAAkB,aAAa,EAE5D,IAAI,kBAAoB,cAAc,iBAAkB,CACtD,MAAM,mBAAoB,CAGxB,GAFA,KAAK,eAAiB,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,EAAE,GAC5E,KAAK,gBAAkB,MAAM,KAAK,KAAK,iBAAiB,sBAAsB,CAAC,EAC3E,CAAC,KAAK,eAAgB,CACxB,QAAQ,KACN,gDAAgD,KAAK,aAAa,qCACpE,EACA,MACF,CACA,KAAK,QAAU,MAAM,gBAAgB,KAAK,KAAK,aAAa,EAC5D,KAAK,OAAO,GAAG,SAAU,mBAAoB,KAAK,oBAAoB,KAAK,IAAI,CAAC,EAChF,KAAK,eAAe,iBAAiB,SAAU,KAAK,4BAA4B,KAAK,IAAI,CAAC,EAC1F,KAAK,wBAAwB,EAC7B,KAAK,cAAc,KAAK,gBAAgB,EAAK,CAC/C,CACA,IAAI,iBAAkB,CACpB,OAAO,KAAK,gBAAgB,SAAS,KAAK,eAAe,KAAK,CAAC,CACjE,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,aAAa,QAAQ,CACnC,CACA,IAAI,qBAAsB,CACxB,OAAO,KAAK,aAAa,wBAAwB,CACnD,CACA,IAAI,WAAY,CACd,OAAO,KAAK,aAAa,YAAY,CACvC,CACA,cAAc,GAAI,CAChB,IAAI,GAIJ,GAHK,KAAK,qBAAqB,KAAK,gBAAgB,EAAE,CAAC,IACrD,GAAK,KAAK,kCAAkC,EAAE,MAE1C,GAAK,KAAK,kBAAoB,KAAO,OAAS,GAAG,MAAQ,GAS/D,IANA,KAAK,eAAe,MAAQ,GAC5B,KAAK,eAAe,cAClB,IAAI,MAAM,SAAU,CAClB,QAAS,EACX,CAAC,CACH,EACI,KAAK,WAAa,QAAQ,aAAc,CAC1C,MAAM,OAAS,IAAI,IAAI,OAAO,SAAS,IAAI,EACvC,GACF,OAAO,aAAa,IAAI,UAAW,EAAE,EAErC,OAAO,aAAa,OAAO,SAAS,EAEtC,OAAO,QAAQ,aACb,CACE,KAAM,OAAO,SAAS,CACxB,EACA,GACA,OAAO,SAAS,CAClB,CACF,CACA,KAAK,wBAAwB,EAC7B,aAAa,KAAK,eAAe,KAAM,kBAAmB,CACxD,QAAS,KAAK,eAChB,CAAC,EACH,CACA,qBAAsB,CACpB,IAAI,GACJ,KAAK,eAAe,GAAK,KAAK,uBAAuB,IAAM,KAAO,OAAS,GAAG,EAAE,CAClF,CACA,6BAA8B,CAC5B,IAAI,MACc,GAAK,KAAK,kBAAoB,KAAO,OAAS,GAAG,UAAY,CAAC,GACxE,QAAQ,CAAC,MAAO,QAAU,CAChC,IAAI,MAAQ,KAAK,cACb,qBAAqB,MAAQ,CAAC,aAAa,IAAI,OAAO,KAAK,CAAC,0BAC1D,MAAQ,CACV,IACF,EACA,mBAAqB,GACnB,MAAM,UAAY,UACpB,mBAAqB,MAAM,QAAU,MACrC,MAAM,MAAQ,OACL,MAAM,UAAY,UAC3B,mBAAqB,CAAC,MAAM,SAAW,MAAM,QAAU,MACvD,MAAM,QAAU,MAAM,QAAU,OAE9B,oBACF,MAAM,cACJ,IAAI,MAAM,SAAU,CAClB,QAAS,EACX,CAAC,CACH,CAEJ,CAAC,CACH,CACA,gBAAgB,GAAI,CAClB,OAAO,KAAK,QAAQ,SAAY,KAAM,SAAY,QAAQ,KAAU,EAAE,CACxE,CACA,wBAAyB,CACvB,MAAM,QAAU,KAAK,yBAAyB,EAC9C,OAAO,KAAK,QAAQ,SAAY,KAAM,SAC7B,QAAQ,QAAW,MAAM,CAAC,MAAO,QAAU,QAAU,QAAQ,KAAK,CAAC,CAC3E,CACH,CACA,qBAAqB,QAAS,CAC5B,OAAK,QAGI,QAAQ,WAAiB,CAAC,KAAK,qBAAuB,CAAC,QAAQ,UAF/D,EAIX,CACA,mCAAoC,CAClC,IAAI,QAAU,KAAK,yBAAyB,EAC1C,eAAiB,KACjB,YAAc,EAChB,GACE,QAAQ,IAAI,EACZ,aAAe,EACf,eAAiB,KAAK,QAAQ,SAAY,KAAM,SAE5C,QAAQ,WACR,QAAQ,QACL,MAAM,EAAG,QAAQ,QAAW,OAAS,WAAW,EAChD,MAAM,CAAC,MAAO,QAAU,QAAU,QAAQ,KAAK,CAAC,CAEtD,QACM,CAAC,gBAAkB,QAAQ,OAAS,GAC7C,OAAO,cACT,CACA,0BAA2B,CACzB,MAAM,QAAU,CAAC,EACjB,aAAM,KACJ,KAAK,iBAAiB,uDAAuD,CAC/E,EAAE,QAAS,QAAW,QAAQ,KAAK,OAAO,KAAK,CAAC,EACzC,OACT,CACA,yBAA0B,CACxB,MAAM,gBAAkB,KAAK,gBAC7B,GAAI,CAAC,gBACH,OAEF,MAAM,qBAAuB,CAAC,SAAU,WAAY,UAAW,2BAA6B,CAC1F,IAAI,aAAe,SAAS,aAAa,oBAAoB,EAC3D,YAAc,GAChB,OAAQ,aAAc,CACpB,IAAK,QACH,YAAc,2BAA2B,WAAa,CAAC,IACvD,MACF,IAAK,gBACH,YAAc,6BAA6B,WAAa,CAAC,IACzD,MACF,IAAK,QACH,YAAc,2BAA2B,WAAa,CAAC,IACvD,MACF,IAAK,WACH,YAAc,uCAAuC,WAAa,CAAC,IACnE,KACJ,CACA,SAAS,cAAc,WAAW,EAAE,gBAAgB,SAAU,CAAC,wBAAwB,EACnF,KAAK,oBACP,SAAS,cAAc,WAAW,EAAE,gBAAgB,SAAU,CAAC,SAAS,EAExE,SAAS,cAAc,WAAW,EAAE,UAAU,OAAO,cAAe,CAAC,SAAS,CAElF,EACI,KAAK,iBAAmB,KAAK,gBAAgB,CAAC,GAChD,KAAK,QAAQ,QAAW,CAAC,EAAE,OAAU,QAAQ,CAAC,MAAO,aAAe,CAClE,MAAM,yBAA2B,KAAK,QAAQ,SAAY,KACrD,SAAY,QAAQ,UAAe,OAAS,OAC/C,EACA,oBAAsB,KAAK,QAAQ,SAAY,KAC5C,SAAY,QAAQ,UAAe,OAAS,QAAQ,SACvD,EACF,qBACE,KAAK,gBAAgB,CAAC,EACtB,WACA,oBACA,wBACF,EACI,KAAK,gBAAgB,CAAC,GACxB,KAAK,QAAQ,QAAW,CAAC,EAAE,OAAU,QAAQ,CAAC,OAAQ,cAAgB,CACpE,MAAM,0BAA4B,KAAK,QAAQ,SAAY,KACtD,SACC,QAAQ,UAAe,QACvB,QAAQ,UAAe,gBAAgB,SACvC,OACJ,EACA,qBAAuB,KAAK,QAAQ,SAAY,KAC7C,SACC,QAAQ,UAAe,QACvB,QAAQ,UAAe,gBAAgB,SACvC,QAAQ,SACZ,EACF,qBACE,KAAK,gBAAgB,CAAC,EACtB,YACA,qBACA,yBACF,EACI,KAAK,gBAAgB,CAAC,GACxB,KAAK,QAAQ,QAAW,CAAC,EAAE,OAAU,QAAQ,CAAC,OAAQ,cAAgB,CACpE,MAAM,0BAA4B,KAAK,QAAQ,SAAY,KACtD,SACC,QAAQ,UAAe,QACvB,QAAQ,UAAe,gBAAgB,SACvC,QAAQ,UAAe,gBAAgB,SACvC,OACJ,EACA,qBAAuB,KAAK,QAAQ,SAAY,KAC7C,SACC,QAAQ,UAAe,QACvB,QAAQ,UAAe,gBAAgB,SACvC,QAAQ,UAAe,gBAAgB,SACvC,QAAQ,SACZ,EACF,qBACE,KAAK,gBAAgB,CAAC,EACtB,YACA,qBACA,yBACF,CACF,CAAC,CAEL,CAAC,CAEL,CAAC,CAEL,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,iBAAiB,EAEpE,IAAI,YAAc,cAAc,iBAAkB,CAChD,mBAAoB,CAalB,GAZA,KAAK,iBAAmB,MAAM,KAAK,KAAK,iBAAiB,8BAA8B,CAAC,EACxF,KAAK,OAAO,GACV,SACA,uDACA,KAAK,yBAAyB,KAAK,IAAI,CACzC,EACA,KAAK,OAAO,GACV,aACA,sDACA,KAAK,yBAAyB,KAAK,IAAI,EACvC,EACF,EACI,KAAK,cAAc,qBAAqB,EAE1C,QADI,SAAW,KAAK,uBAAuB,cAAc,EAChD,EAAI,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,CAAC,EAAE,iBAAiB,QAAS,SAAU,EAAG,CAEjD,QADI,QAAU,KACLI,GAAI,EAAGA,GAAI,SAAS,OAAQA,KAC/B,SAAW,SAASA,EAAC,EACvB,SAASA,EAAC,EAAE,UAAU,OAAO,QAAQ,EAC5B,QAAQ,UAAU,SAAS,QAAQ,IAAM,GAClD,QAAQ,UAAU,OAAO,QAAQ,EAEjC,QAAQ,UAAU,IAAI,QAAQ,EAGlC,EAAE,eAAe,CACnB,CAAC,EAGD,KAAK,cAAc,sBAAsB,GAClB,MAAM,KAAK,SAAS,uBAAuB,eAAe,CAAC,EACnE,QAAQ,SAAU,KAAM,IAAK,CAC5C,KAAK,QAAU,SAAU,EAAG,CACtB,SAAS,cAAc,uBAAuB,IAChD,QAAQ,IACN,SAAS,cAAc,uBAAuB,EAAE,UAAU,OAAO,QAAQ,CAC3E,EACA,SAAS,cAAc,uBAAuB,EAAE,UAAU,OAAO,QAAQ,GAE3E,KAAK,UAAU,IAAI,QAAQ,EAC3B,EAAE,eAAe,CACnB,CACF,CAAC,CAEL,CACA,MAAM,yBAAyB,MAAO,OAAQ,CAW5C,GAVA,MAAM,KAAK,KAAK,iBAAiB,qBAAqB,CAAC,EAAE,QAAS,MAAS,CACzE,IAAIJ,KACA,KAAK,UAAY,IACnBA,KAAM,IAAI,IAAI,KAAK,IAAI,EAEvBA,KAAM,IAAI,IAAI,KAAK,aAAa,MAAM,EAAG,WAAW,OAAO,eAAe,OAAO,IAAI,EAAE,EAEzFA,KAAI,aAAa,IAAI,UAAW,OAAO,aAAa,iBAAiB,CAAC,EACtE,KAAK,aAAa,OAAQA,KAAI,SAAS,CAAC,CAC1C,CAAC,EACG,OAAO,aAAa,6BAA6B,EAAG,CACtD,MAAM,SAAW,KAAK,iBAAiB,KACpC,OACC,MAAM,aAAa,eAAe,IAClC,OAAO,aAAa,6BAA6B,CACrD,EACA,SAAS,aAAa,UAAW,OAAO,EAIxC,MAHsB,SAAS,SAC3B,QAAQ,QAAQ,EAChB,IAAI,QAAS,SAAa,SAAS,OAAS,OAAQ,GAExD,SAAS,gBAAgB,QAAQ,EACjC,IAAI,WAAa,CAAC,EAEhB,MAAM,KAAK,SAAS,cAAc,SAAS,EAAE,KAAM,MACjD,CAAC,sBAAuB,qBAAsB,sBAAsB,EAAE,SAAS,IAAI,CACrF,EAEA,WAAa,CACX,CACE,SAAU,qCACV,UAAW,qCACX,OAAQ,EACR,OAAQ,CACV,EACA,CACE,SAAU,uCACV,UAAW,qCACX,OAAQ,EACR,OAAQ,EACV,EACA,CACE,SAAU,0CACV,UAAW,wBACX,OAAQ,EACR,OAAQ,CACV,CACF,EAEA,WAAa,CACX,CACE,SAAU,qCACV,UAAW,oBACX,OAAQ,EACR,OAAQ,CACV,EACA,CACE,SAAU,uCACV,UAAW,oBACX,OAAQ,EACR,OAAQ,EACV,EACA,CACE,SAAU,0CACV,UAAW,kBACX,OAAQ,EACR,OAAQ,CACV,CACF,EAEF,MAAM,SAAS,QAAQ,WAAY,CACjC,SAAU,IACV,OAAQ,aACV,CAAC,EAAE,SACH,KAAK,iBACF,OACE,OAAU,MAAM,UAAU,SAAS,6BAA6B,GAAK,QAAU,QAClF,EACC,QAAS,OAAU,MAAM,aAAa,SAAU,EAAE,CAAC,CACxD,CACF,CACA,yBAAyB,MAAO,OAAQ,CACtC,MAAM,MAAQ,OAAO,uBACjB,MAAM,aAAa,6BAA6B,GACjC,KAAK,iBAAiB,KACpC,OACC,MAAM,aAAa,eAAe,IAClC,MAAM,aAAa,6BAA6B,CACpD,EACS,aAAa,UAAW,OAAO,CAE5C,CACF,EACA,OAAO,eAAe,OAAO,eAAgB,WAAW,EAExD,IAAI,eAAiB,cAAc,iBAAkB,CACnD,mBAAoB,CAClB,KAAK,OAAO,GAAG,0BAA2B,KAAK,wBAAwB,KAAK,IAAI,CAAC,EACjF,KAAK,OAAO,GAAG,yBAA0B,KAAK,wBAAwB,KAAK,IAAI,CAAC,EAChF,KAAK,OAAO,GAAG,sBAAuB,KAAK,qBAAqB,KAAK,IAAI,CAAC,CAC5E,CACA,MAAM,wBAAwB,MAAO,CACnC,QAAQ,aAAa,CAAC,EAAG,GAAI,MAAM,OAAO,GAAG,EAC7C,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,MAAMA,KAAM,IAAI,IAAI,OAAO,QAAQ,EACnCA,KAAI,aAAa,IAAI,aAAc,KAAK,aAAa,YAAY,CAAC,EAClE,GAAI,CACF,KAAK,gBAAkB,IAAI,gBAI3B,MAAM,eAAiB,MAHN,MAAM,MAAMA,KAAI,SAAS,EAAG,CAC3C,OAAQ,KAAK,gBAAgB,MAC/B,CAAC,GACqC,KAAK,EACrC,QAAU,SAAS,cAAc,KAAK,EAC5C,QAAQ,UAAY,eACpB,KAAK,cAAc,aAAa,EAAE,UAChC,QAAQ,cAAc,aAAa,EAAE,UACvC,MAAM,iBAAmB,MAAM,KAC3B,QAAQ,iBAAiB,+BAA+B,CAC1D,EACA,YAAc,SAAS,cAAc,gCAAgC,EACnE,aACF,YAAY,UAAU,OAAO,cAAe,iBAAiB,OAAS,CAAC,EAEzE,MAAM,eAAiB,QAAQ,cAAc,kBAAkB,EAC/D,GAAI,eAAgB,CAClB,MAAM,kBAAoB,KAAK,cAC7B,mCACF,EAAE,UACF,MAAM,KAAK,KAAK,iBAAiB,2CAA2C,CAAC,EAAE,QAC5E,cAAiB,CAChB,MAAM,qBAAuB,eAAe,cACxC,qBAAqB,aAAa,aAAa,iBAAiB,CAAC,IACnE,EACA,eAAiB,aAAa,aAAa,kBAAkB,IAAM,OACrE,GAAI,eAAgB,CAClB,IAAIK,MAAO,MACb,KAAO,CACL,IAAIA,MAAO,OACb,CAGA,GAFA,qBAAqB,aAAa,mBAAoB,IAAI,EAC1D,qBAAqB,mBAAmB,gBAAgB,OAAQ,cAAc,EAC1E,eAAgB,CAClB,IAAIC,OAAQ,SACd,KAAO,CACL,IAAIA,OAAQ,EACd,CACA,qBAAqB,mBAAmB,MAAM,SAAW,KAC3D,CACF,EACA,KAAK,cAAc,kBAAkB,EAAE,UAAY,eAAe,UAClE,KAAK,cAAc,mCAAmC,EAAE,UAAY,iBACtE,CACA,MAAM,SACJ,KAAK,cAAc,4BAA4B,GAC/C,KAAK,cAAc,kCAAkC,GACrD,KAAK,cAAc,wBAAwB,EAC7C,sBAAsB,IAAM,CAC1B,SAAS,eAAe,CACtB,MAAO,QACP,SAAU,QACZ,CAAC,CACH,CAAC,EACD,KAAK,kBAAkB,CACzB,OAAS,EAAG,CACV,GAAI,EAAE,OAAS,aACb,MAEJ,CACF,CACA,sBAAuB,CACjB,KAAK,iBACP,KAAK,gBAAgB,MAAM,CAE/B,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,eAAiB,cAAc,eAAgB,CACjD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,SAAU,oBAAqB,KAAK,oBAAoB,KAAK,IAAI,CAAC,EACjF,KAAK,WAAW,GACd,QACA,gCACA,KAAK,qBAAqB,KAAK,IAAI,CACrC,EACI,KAAK,gBACP,KAAK,WAAa,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAC5E,KAAK,WAAW,YAAY,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAC5D,KAAK,iBAAiB,KAAK,UAAU,EAEzC,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,aAAa,gBAAgB,CAC3C,CACA,qBAAqB,MAAO,OAAQ,CAClC,MAAM,eAAe,EACrB,aAAa,KAAM,yBAA0B,CAC3C,IAAK,OAAO,IACd,CAAC,EACD,KAAK,QAAU,GACf,OAAO,SAAS,OAAO,CACzB,CACA,qBAAsB,CACpB,MAAM,SAAW,IAAI,SAAS,KAAK,cAAc,uBAAuB,CAAC,EACnE,qBAAuB,IAAI,gBAAgB,QAAQ,EAAE,SAAS,EAGpE,aAAa,KAAM,yBAA0B,CAC3C,IAAK,GAAG,OAAO,SAAS,QAAQ,IAAI,oBAAoB,EAC1D,CAAC,EACD,OAAO,SAAS,OAAO,CACzB,CACA,iBAAiB,MAAO,CACtB,KAAK,UAAU,OAAO,SAAU,MAAM,OAAO,EAC7C,KAAK,UAAU,OAAO,oBAAqB,MAAM,OAAO,CAC1D,CACF,EACA,OAAO,eAAe,OAAO,kBAAmB,cAAc,EAE9D,IAAI,gBAAkB,cAAc,gBAAiB,CACnD,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,OAAO,GAAG,SAAU,mBAAoB,KAAK,kBAAkB,KAAK,IAAI,CAAC,CAChF,CACA,kBAAkB,MAAO,OAAQ,CAC/B,MAAMN,KAAM,IAAI,IAAI,SAAS,IAAI,EACjCA,KAAI,aAAa,IAAI,UAAW,OAAO,KAAK,EAC5CA,KAAI,aAAa,OAAO,MAAM,EAC9B,KAAK,KAAO,GACZ,KAAK,cACH,IAAI,YAAY,yBAA0B,CACxC,QAAS,GACT,OAAQ,CACN,IAAKA,KAAI,SAAS,CACpB,CACF,CAAC,CACH,CACF,CACF,EACA,OAAO,eAAe,OAAO,mBAAoB,eAAe,EAEhE,IAAI,YAAc,cAAc,iBAAkB,CAChD,mBAAoB,CAClB,KAAK,WAAW,GACd,eACC,OAAW,KAAK,UAAY,MAAM,OAAO,KAAK,UACjD,CACF,CAEA,MAAM,YAAY,MAAO,CACvB,IAAI,eAAiB,OAAO,eAAe,SAAS,YAChD,OAAO,eAAe,SAAS,sBACjC,eAAiB,OAAO,eAAe,SAAS,yBAElD,IAAI,MAAQ,cAAc,MAAM,OAAO,KAAK,YAAgB,cAAc,CAC5E,CACF,EACA,OAAO,eAAe,OAAO,eAAgB,WAAW,EAExD,IAAI,iBAAmB,cAAc,iBAAkB,CACrD,mBAAoB,CAClB,KAAK,WAAW,GAAG,eAAgB,KAAK,YAAY,KAAK,IAAI,CAAC,CAChE,CACA,MAAM,YAAY,MAAO,CACvB,IAAI,eAAiB,OAAO,eAAe,SAAS,YAChD,OAAO,eAAe,SAAS,sBACjC,eAAiB,OAAO,eAAe,SAAS,yBAElD,IAAI,MAAQ,cAAc,MAAM,OAAO,KAAK,YAAgB,cAAc,EAC1E,KAAK,UAAY,KACnB,CACF,EACA,OAAO,eAAe,OAAO,oBAAqB,gBAAgB,EAElE,IAAI,aAAe,cAAc,eAAgB,CAC/C,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,KAAK,qBAAuB,EAC5B,KAAK,WAAW,GAAG,eAAgB,KAAK,cAAc,KAAK,IAAI,CAAC,EAChE,KAAK,iBAAiB,gBAAiB,IAAO,KAAK,qBAAuB,GAAI,CAChF,CACA,MAAM,cAAc,MAAO,CACzB,IAAI,GACJ,IAAI,YAAc,KAChB,KAAO,GACL,MAAM,QAAU,MAAM,OAAO,MAC/B,YAAc,MAAM,OAAO,KAC3B,KAAO,MAAM,OAAO,KAAQ,SAAY,WAAW,GAKnD,KAAO,MAHU,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,OAAO,eAAe,KAAK,aAAa,SAAS,CAAC,EACpF,GACsB,KAAK,EAE7B,MAAM,QAAU,SAAS,cAAc,KAAK,EAC5C,QAAQ,UAAY,KACpB,WAAW,SAAY,CACrB,IAAI,IACJ,MAAM,iBAAmB,KAAK,cAAc,kBAAkB,EAAE,UAChE,GAAI,aAAe,YAAY,aAAkB,EAAG,CAClD,MAAM,UAAY,IAAI,kBACpB,IAAI,iBACF,MAAM,KAAK,KAAK,iBAAiB,mCAAmC,CAAC,EAAE,IAAK,MACnE,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,CAChB,EACA,CACE,SAAU,IACV,OAAQ,SACV,CACF,CACD,CACH,CACF,EACA,UAAU,KAAK,EACf,MAAM,UAAU,QAClB,CACA,MAAM,WAAa,KAAK,iBAAiB,YAAY,EAAE,OAAS,EAEhE,GADA,KAAK,UAAY,QAAQ,cAAc,eAAe,EAAE,UACpD,YAAc,CAAC,KAAK,cAAc,YAAY,EAAG,CAEnD,KAAK,KAAO,GACZ,MACF,CACI,aAAe,YAAY,aAAkB,EAC/C,KAAK,cAAc,kBAAkB,EAAE,QACrC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,OAAQ,gCACV,CACF,EAEA,KAAK,cAAc,kBAAkB,EAAE,UAAY,kBAEhD,IAA+B,OAAM,SAAW,MAAgB,IAAI,eACvE,KAAK,YACL,KAAK,KAAO,GAEhB,IAAK,GAA8B,OAAM,SAAW,KAAO,OAAS,GAAG,mBAAqB,KAAK,oBAAoB,EACrH,KAAK,qBAAuB,CAC9B,CACA,MAAM,yBAAyB,KAAM,OAAQ,OAAQ,CAEnD,OADA,MAAM,yBAAyB,KAAM,OAAQ,MAAM,EAC3C,KAAM,CACZ,IAAK,OACH,GAAI,KAAK,OACP,KAAK,cAAc,kBAAkB,EAAE,UAAY,EAC/C,CAAC,cAAc,qBAAqB,GAAG,CACzC,MAAM,UAAY,MAAM,KAAK,KAAK,iBAAiB,YAAY,CAAC,EAC9D,qBAAuB,KAAK,cAAc,mCAAmC,EAC7E,UAAY,KAAK,cAAc,iBAAiB,EAChD,QAAU,CAAC,EAEX,sBACA,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,SAE5D,UAAU,KAAK,oBAAoB,EAErC,UAAU,QAAS,MAAU,KAAK,MAAM,QAAU,CAAE,EACpD,uBAAwB,qBAAqB,MAAM,QAAU,GAC7D,YAAa,UAAU,MAAM,QAAU,GACvC,QAAQ,KACN,IAAI,iBACF,UAAU,IAAI,CAAC,KAAM,QACZ,IAAI,yBACT,KACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,IAAM,MAAQ,KAAK,IAAI,EAAI,MAAQ,MAAO,IAAM,KAAK,EAClE,OAAQ,+BACV,CACF,CACD,CACH,CACF,EACI,WACF,QAAQ,KACN,IAAI,yBACF,UACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IACP,OAAQ,+BACV,CACF,CACF,EAGA,sBACA,CAAC,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,SAE7D,QAAQ,KACN,IAAI,yBACF,qBACA,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,IACV,MAAO,IAAM,KAAK,IAAI,IAAM,UAAU,OAAS,GAAK,UAAU,OAAQ,EAAE,EACxE,OAAQ,+BACV,CACF,CACF,EAEc,IAAI,kBAAkB,IAAI,iBAAiB,OAAO,CAAC,EACzD,KAAK,CACjB,CAEN,CACF,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,YAAY,EA6B1D,IAAI,WAAa,cAAc,mBAAoB,CACjD,mBAAoB,CAClB,KAAK,iBAAiB,SAAU,KAAK,kBAAkB,KAAK,IAAI,CAAC,CACnE,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,aAAa,aAAa,EAClC,SAAS,eAAe,KAAK,aAAa,aAAa,CAAC,EACxD,IACN,CACA,MAAM,mBAAoB,CACpB,KAAK,cACP,KAAK,YAAY,UACf,KAAK,QAAU,GACX,OAAO,eAAe,QAAQ,iBAC9B,OAAO,eAAe,QAAQ,mBAEtC,MAAM,SAAW,MAAM,MAAM,GAAG,OAAO,eAAe,OAAO,OAAO,aAAc,CAChF,KAAM,KAAK,UAAU,CACnB,KAAM,KAAK,KACb,CAAC,EACD,YAAa,cACb,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,CACF,CAAC,CAUH,CACF,EACA,OAAO,eAAe,OAAO,cAAe,WAAY,CACtD,QAAS,UACX,CAAC,EAkBD,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,mBAAoB,CAClB,KAAK,OAAO,GAAG,QAAS,IAAK,KAAK,uBAAuB,KAAK,IAAI,CAAC,EACnE,KAAK,OAAO,GAAG,SAAU,QAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC,CACtE,CACA,uBAAuB,MAAO,OAAQ,CACpC,MAAM,eAAe,EACrB,KAAK,gBAAgB,OAAO,IAAI,CAClC,CACA,mBAAmB,MAAO,OAAQ,CAChC,KAAK,gBACH,GAAG,OAAO,eAAe,OAAO,aAAa,aAC3C,OAAO,KACT,SAAS,OAAO,aAAa,WAAW,CAAC,EAC3C,CACF,CACA,MAAM,gBAAgB,KAAM,CAC1B,GAAI,OAAO,eAAe,SAAS,WAAa,OAAQ,CACtD,OAAO,SAAS,KAAO,KACvB,MACF,CACA,MAAM,UAAY,IAAI,IAAI,KAAM,WAAW,OAAO,eAAe,OAAO,IAAI,EAAE,EAC5E,aAAe,UAAU,aACzB,KAAO,aAAa,IAAI,MAAM,EAC9B,GAAK,aAAa,IAAI,IAAI,EAC1B,SAAW,SAAS,aAAa,IAAI,UAAU,CAAC,EAClD,KAAK,cACH,IAAI,YAAY,kCAAmC,CACjD,QAAS,GACT,OAAQ,CACN,gBAAiB,QACnB,CACF,CAAC,CACH,EAcA,MAAM,YAAc,MAbH,MAAM,MAAM,GAAG,OAAO,eAAe,OAAO,aAAa,MAAO,CAC/E,KAAM,KAAK,UAAU,CACnB,KACA,GACA,SACA,SAAU,CAAC,WAAW,CACxB,CAAC,EACD,YAAa,cACb,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,CACF,CAAC,GACkC,KAAK,EACxC,KAAK,cACH,IAAI,YAAY,gCAAiC,CAC/C,QAAS,GACT,OAAQ,CACN,KAAM,YACN,gBAAiB,QACnB,CACF,CAAC,CACH,EACA,SAAS,gBAAgB,cACvB,IAAI,YAAY,eAAgB,CAC9B,QAAS,GACT,OAAQ,CACN,KAAM,WACR,CACF,CAAC,CACH,EACA,SAAS,gBAAgB,cACvB,IAAI,YAAY,eAAgB,CAC9B,QAAS,GACT,OAAQ,CACN,KAAM,YACN,iBAAkB,WAAa,EAAI,IAAM,GAC3C,CACF,CAAC,CACH,CACF,CACF,EACA,OAAO,eAAe,OAAO,qBAAsB,kBAAkB,EAErE,IAAI,SAAW,cAAc,WAAY,CACvC,mBAAoB,CAClB,KAAK,eAAiB,KAAK,cAAc,oBAAoB,EAC7D,KAAK,iBAAiB,kCAAmC,KAAK,iBAAiB,KAAK,IAAI,CAAC,EACzF,KAAK,iBAAiB,gCAAiC,KAAK,eAAe,KAAK,IAAI,CAAC,CACvF,CACA,kBAAmB,CACZ,KAAK,iBAGV,KAAK,eAAe,OAAS,GAC7B,KAAK,eAAe,kBAAkB,OAAS,GAC/C,KAAK,eAAe,iBAAiB,OAAS,GAChD,CACA,MAAM,eAAe,MAAO,CACtB,MAAM,OAAO,KAAK,aAAkB,GAGpC,KAAK,iBACP,MAAM,KAAK,eAAe,kBAAkB,QAC1C,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,gBAAiB,mBAAmB,CAClD,EACA,EACF,EAAE,SACF,KAAK,eAAe,kBAAkB,OAAS,GAC3C,MAAM,OAAO,kBAAoB,GACnC,MAAM,KAAK,QACT,CACE,QAAS,CAAC,EAAG,CAAC,EACd,OAAQ,CAAC,GAAG,KAAK,YAAY,KAAM,CAAC,CACtC,EACA,CACE,SAAU,IACV,OAAQ,MACV,CACF,EAAE,SACF,KAAK,OAAO,IAEZ,KAAK,eAAe,iBAAiB,OAAS,GAC9C,MAAM,KAAK,eAAe,iBAAiB,QACzC,CACE,QAAS,CAAC,EAAG,CAAC,EACd,UAAW,CAAC,mBAAoB,eAAe,CACjD,EACA,CACE,SAAU,GACV,SAAU,GACZ,CACF,EAAE,SACF,KAAK,eAAe,OAAS,IAGnC,CACF,EACA,OAAO,eAAe,OAAO,YAAa,QAAQ,EAElD,IAAI,mBAAqB,cAAc,iBAAkB,CACvD,mBAAoB,CAClB,KAAK,WAAW,GACd,2BACA,KAAK,WAAW,KAAK,IAAI,EACzB,CAAC,KAAK,aAAa,QAAQ,CAC7B,EACA,KAAK,OAAO,GAAG,QAAS,wBAA0B,OAAU,CAC1D,MAAM,gBAAgB,EACtB,KAAK,OAAS,EAChB,CAAC,EACD,KAAK,iBAAiB,aAAc,KAAK,UAAU,KAAK,IAAI,CAAC,EAC7D,KAAK,iBAAiB,aAAc,KAAK,WAAW,KAAK,IAAI,CAAC,EAC9D,OAAO,iBAAiB,WAAY,IAAO,KAAK,OAAS,EAAK,CAChE,CACA,IAAI,OAAO,MAAO,CACX,MAGH,KAAK,UAAU,EAFf,KAAK,WAAW,EAIlB,KAAK,gBAAgB,SAAU,KAAK,CACtC,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,UAAU,SAAS,6BAA6B,CAC9D,CACA,WAAY,CACV,aAAa,KAAK,QAAQ,CAC5B,CACA,YAAa,CACX,KAAK,SAAW,WAAW,IAAO,KAAK,OAAS,GAAO,GAAG,CAC5D,CACA,WAAW,MAAO,CAIhB,GAHI,KAAK,gBAAkB,CAAC,KAAK,QAAQ,SAAS,EAAE,MAIlD,KAAK,aAAa,QAAQ,GAC1B,MAAM,OAAO,SAAW,WACxB,OAAO,eAAe,SAAS,WAAa,SAE5C,OAEF,MAAM,gBAAgB,EACtB,IAAI,gBAAkB,GACjB,KAAK,iBACR,gBAAkB;AAAA;AAAA,0CAEgB,OAAO,eAAe,QAAQ,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,SAOhF,MAAM,OAAO,SAAW,WAC1B,KAAK,UAAU,OAAO,4BAA4B,EAClD,KAAK,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8EAUqD,OAAO,eAAe,QAAQ,aAAa;AAAA,sFACnC,OAAO,eAAe,QAAQ,kBAAkB;AAAA,2BAC3G,OAAO,eAAe,OAAO,OAAO,iDAAiD,OAAO,eAAe,QAAQ,YAAY;AAAA;AAAA;AAAA,gBAG1I,eAAe;AAAA;AAAA;AAAA;AAAA,UAMvB,KAAK,UAAU,IAAI,4BAA4B,EAC/C,KAAK,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qEAU4C,MAAM,OAAO,KAAK;AAAA;AAAA;AAAA,gBAGvE,eAAe;AAAA;AAAA;AAAA;AAAA,SAMzB,KAAK,aACL,KAAK,OAAS,EAChB,CACF,EACA,OAAO,eAAe,OAAO,sBAAuB,kBAAkB,EAEtE,IAAI,oBAAsB,cAAc,WAAY,CAClD,mBAAoB,CAClB,KAAK,aAAe,KAAK,cAAc,iBAAiB,EACxD,KAAK,aAAa,iBAAiB,QAAS,KAAK,qBAAqB,KAAK,IAAI,CAAC,CAClF,CACA,MAAM,sBAAuB,CAC3B,MAAM,IAAM,KAAK,cAAc,oCAAoC,EAAE,MAC/D,QAAU,KAAK,cAAc,wCAAwC,EAAE,MACvE,SAAW,KAAK,cAAc,yCAAyC,EAAE,MAC/E,KAAK,aAAa,aAAa,cAAe,MAAM,EACpD,MAAM,gBAAkB,MAAM,MAC5B,GAAG,OAAO,eAAe,OAAO,OAAO,sDAAsD,GAAG,8BAA8B,OAAO,+BAA+B,QAAQ,GAC5K,CACE,OAAQ,MACV,CACF,EACA,GAAI,gBAAgB,GAAI,CACtB,MAAM,cAAgB,MAAM,KAAK,uBAAuB,IAAK,QAAS,QAAQ,EAC9E,KAAK,qBAAqB,aAAa,CACzC,KAAO,CACL,MAAM,UAAY,MAAM,gBAAgB,KAAK,EAC7C,KAAK,aAAa,SAAS,CAC7B,CACA,KAAK,aAAa,gBAAgB,aAAa,CACjD,CACA,MAAM,uBAAuB,IAAK,QAAS,SAAU,CAInD,MAAM,eAAiB,MAHN,MAAM,MACrB,GAAG,OAAO,eAAe,OAAO,OAAO,oDAAoD,GAAG,8BAA8B,OAAO,+BAA+B,QAAQ,EAC5K,GACsC,KAAK,EAC3C,OAAI,iBAAmB,KACd,KAAK,uBAAuB,IAAK,QAAS,QAAQ,EAElD,KAAK,MAAM,cAAc,EAAE,cAEtC,CACA,qBAAqB,cAAe,CAClC,IAAI,IACH,GAAK,KAAK,cAAc,gCAAgC,IAAM,MAAgB,GAAG,OAAO,EACzF,IAAI,uBAAyB,GAC7B,cAAc,QAAS,cAAiB,CACtC,wBAA0B,OAAO,aAAa,gBAAmB,KAAK,cACpE,WAAW,aAAa,KAAQ,EAAI,GACtC,CAAC,OACH,CAAC,EACD,MAAM,KAAO;AAAA;AAAA,aAGT,cAAc,SAAW,EACrB,OAAO,eAAe,QAAQ,2BAC9B,cAAc,SAAW,EACzB,OAAO,eAAe,QAAQ,2BAC9B,OAAO,eAAe,QAAQ,gCACpC;AAAA,UAEE,yBAA2B,GACvB,GACA,8BAA8B,sBAAsB,OAC1D;AAAA;AAAA,MAGF,KAAK,mBAAmB,YAAa,IAAI,CAC3C,CACA,aAAa,OAAQ,CACnB,IAAI,IACH,GAAK,KAAK,cAAc,gCAAgC,IAAM,MAAgB,GAAG,OAAO,EACzF,IAAI,uBAAyB,GAC7B,OAAO,KAAK,MAAM,EAAE,QAAS,UAAa,CACxC,wBAA0B,OAAO,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAC/D,CAAC,EACD,MAAM,KAAO;AAAA;AAAA,aAEN,OAAO,eAAe,QAAQ,sBAAsB;AAAA,qCAC5B,sBAAsB;AAAA;AAAA,MAGrD,KAAK,mBAAmB,YAAa,IAAI,CAC3C,CACF,EACA,OAAO,eAAe,OAAO,uBAAwB,mBAAmB,EAExE,IAAI,aAAe,cAAc,iBAAkB,CACjD,aAAc,CACZ,MAAM,EACN,KAAK,iBAAiB,QAAS,KAAK,SAAS,KAAK,IAAI,CAAC,CACzD,CACA,UAAW,CACT,MAAM,sBAAwB,SAAS,eAAe,yBAAyB,EAC1E,wBAGD,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,QAC9D,sBAAsB,QAAQ,uBAAuB,EAAE,KAAO,GAE9D,SACG,cACC,qBACE,sBAAsB,QAAQ,iCAAiC,EAAE,EACnE,IACF,EACC,MAAM,EAEb,CACF,EACA,OAAO,eAAe,OAAO,gBAAiB,aAAc,CAAE,QAAS,GAAI,CAAC,EAE5E,IAAI,oBAAsB,cAAc,WAAY,CAClD,mBAAoB,CAClB,IAAI,IACC,GAAK,SAAS,eAAe,KAAK,aAAa,SAAS,CAAC,IAAM,MAGlE,GAAG,iBAAiB,kBAAmB,KAAK,qBAAqB,KAAK,IAAI,CAAC,EAE7E,KAAK,aAAe,KAAK,cAAc,8BAA8B,EACrE,KAAK,aAAe,KAAK,cAAc,8BAA8B,EACrE,KAAK,iBAAmB,KAAK,cAAc,mCAAmC,EAC9E,KAAK,0CAA0C,CACjD,CACA,sBAAuB,CACrB,KAAK,qBAAqB,WAAW,CACvC,CACA,IAAI,OAAO,MAAO,CAChB,KAAK,gBAAgB,SAAU,KAAK,EAChC,MACF,SAAS,gBAAgB,MAAM,eAAe,8BAA8B,EAE5E,SAAS,gBAAgB,MAAM,YAC7B,+BACA,GAAG,KAAK,YAAY,IACtB,CAEJ,CACA,qBAAqB,MAAO,CAC1B,MAAM,QAAU,MAAM,OAAO,QAC7B,IAAI,eAAiB,OAAO,eAAe,SAAS,YAIpD,GAHI,OAAO,eAAe,SAAS,sBACjC,eAAiB,OAAO,eAAe,SAAS,yBAE9C,CAAC,QACH,OAKF,GAHI,KAAK,eACP,KAAK,aAAa,UAAY,cAAc,QAAQ,MAAU,cAAc,GAE1E,KAAK,mBACH,QAAQ,uBACV,KAAK,iBAAiB,MAAM,QAAU,QAEtC,KAAK,iBAAiB,MAAM,QAAU,OAEpC,QAAQ,wBAA2B,CACrC,IAAI,eAAiB,GACjB,QAAQ,uBAA0B,kBAAuB,IAC3D,eAAiB,yDAAyD,QAAQ,uBAA0B,eAAkB,WAEhI,KAAK,iBAAiB,UAAY;AAAA;AAAA,0DAEc,cAC5C,QAAQ,UACV,CAAC;AAAA;AAAA,cAEC,cAAc;AAAA,mEAEd,QAAQ,uBAA0B,cACpC;AAAA;AAAA,SAGJ,CAEF,GAAI,CAAC,KAAK,cAAgB,CAAC,SAAW,CAAC,QAAQ,eAC7C,OAEF,MAAM,cAAgB,QAAQ,eAC1B,cAAc,KAChB,KAAK,aAAa,aAAa,MAAO,cAAc,GAAM,EAE5D,KAAK,aAAa,aAAa,QAAS,cAAc,cAAiB,KAAQ,EAC/E,KAAK,aAAa,aAAa,SAAU,cAAc,cAAiB,MAAS,EACjF,KAAK,aAAa,aAAa,MAAO,qBAAqB,cAAe,MAAM,CAAC,EACjF,KAAK,aAAa,aAAa,SAAU,iBAAiB,cAAe,CAAC,GAAI,IAAK,GAAG,CAAC,CAAC,CAC1F,CACA,2CAA4C,CAC1C,MAAM,wBAA0B,SAAS,eAAe,qBAAqB,EAC3E,cAAgB,SAAS,cAAc,0BAA0B,EACjE,qBAAuB,4BAA4B,EACrD,KAAK,iBAAmB,KAAK,4BAA8B,GAC3D,KAAK,qBAAuB,IAAI,qBAC7B,SAAY,CACX,QAAQ,QAAS,OAAU,CAIzB,GAHI,MAAM,SAAW,gBACnB,KAAK,iBAAmB,MAAM,kBAAoB,GAEhD,MAAM,SAAW,wBAAyB,CAC5C,MAAM,eAAiB,wBAAwB,sBAAsB,EACrE,KAAK,4BACH,MAAM,oBAAsB,GAC5B,eAAe,IAAM,eAAe,QAAU,oBAClD,CACF,CAAC,EACG,OAAO,WAAW,OAAO,eAAe,YAAY,MAAM,EAAE,QAC9D,KAAK,OAAS,CAAC,KAAK,6BAA+B,KAAK,iBAExD,KAAK,OAAS,CAAC,KAAK,2BAExB,EACA,CAAE,WAAY,IAAI,oBAAoB,gBAAiB,CACzD,EACA,KAAK,qBAAqB,QAAQ,uBAAuB,EACzD,KAAK,qBAAqB,QAAQ,aAAa,CACjD,CACF,EACA,OAAO,eAAe,OAAO,uBAAwB,mBAAmB,EAGtE,IAAI,0BAGA,QAAQ,YACV,SAAS,iBAAiB,uBAAwB,IAAM,CAClD,OAAO,MACT,OAAO,IAAI,WAAW,EACtB,OAAO,IAAI,aAAa,EAE5B,CAAC,EAEH,OAAO,aAAe,CACpB,cAAe,CAAC,MAAO,OAAS,CAC9B,SAAS,eAAe,QAAQ,KAAK,EAAE,EAAE,EAAE,UAAU,IAAI,mBAAmB,CAC9E,CACF,GAED,IAAM,CACL,IAAI,oBAAsB,SAAS,gBAAgB,YAC/C,OAAO,iBACT,oBAAsB,OAAO,eAAe,OAE9C,IAAI,oBAAsB,IAAM,CAC9B,MAAM,YAAc,OAAO,eACvB,OAAO,eAAe,MACtB,SAAS,gBAAgB,YACvB,aAAe,OAAO,eACxB,OAAO,eAAe,OACtB,SAAS,gBAAgB,aACzB,cAAgB,qBAGpB,sBAAsB,IAAM,CAC1B,SAAS,gBAAgB,MAAM,YAAY,kBAAmB,aAAe,IAAI,EACjF,oBAAsB,WACxB,CAAC,CACH,EACA,oBAAoB,EAChB,OAAO,eACT,OAAO,eAAe,iBAAiB,SAAU,mBAAmB,EAEpE,OAAO,iBAAiB,SAAU,mBAAmB,CAEzD,GAAG,GACF,IAAM,CACL,IAAI,eAAiB,IAAI,aAAa,SAAS,IAAI,EACnD,eAAe,GACb,QACA,6DACA,CAAC,MAAO,SAAW,CACjB,OAAO,UAAU,OAAO,YAAa,OAAO,QAAU,EAAE,CAC1D,CACF,EACA,eAAe,GAAG,SAAU,SAAU,CAAC,MAAO,SAAW,CACvD,OAAO,WAAW,UAAU,OAAO,YAAa,OAAO,QAAU,EAAE,CACrE,CAAC,CACH,GAAG,EAED,SAAS,iBAAiB,YAAY,EAAE,QAAS,OAAU,CACzD,MAAM,UAAY,8BAAgC,MAAM,UAAY,QACtE,CAAC,EAGoB,IAAI,aAAa,SAAS,eAAe,EAC/C,GAAG,QAAS,uBAAwB,CAAC,MAAO,SAAW,CACpE,MAAM,gBAAkB,SAAS,cAAc,OAAO,aAAa,MAAM,CAAC,EACtE,kBACF,MAAM,eAAe,EACrB,gBAAgB,eAAe,CAAE,SAAU,SAAU,MAAO,OAAQ,CAAC,EAEzE,CAAC,EAGD,SAAS,iBAAiB,QAAS,SAAU,MAAO,CAC9C,MAAM,MAAQ,QAChB,SAAS,KAAK,UAAU,OAAO,kBAAkB,EACjD,SAAS,KAAK,UAAU,IAAI,eAAe,EAE/C,CAAC,CAEL,GAAG,EACH;AAAA;AAAA;AAAA,GAIA;AAAA;AAAA;AAAA,GAgBA,MAAM,0BAA0B,WAAY,CAC1C,aAAc,CACZ,MAAM,EACN,KAAK,iBAAiB,QAAU,OAAU,CACxC,SAAS,eAAe,KAAK,aAAa,eAAe,CAAC,EAAE,aAAa,OAAQ,EAAE,CACrF,CAAC,CACH,CACF,CACA,eAAe,OAAO,sBAAuB,iBAAiB,EAE9D,MAAM,yBAAyB,WAAY,CACzC,aAAc,CACZ,MAAM,EACN,KAAK,iBAAiB,QAAU,OAAU,CAAC,CAAC,CAC9C,CACF,CACA,eAAe,OAAO,uBAAwB,gBAAgB,EAE9D,IAAI,IAAM,SAAS,uBAAuB,sBAAsB,EAChE,GAAI,IAAI,OAAQ,CACd,IAAI,mBAAqB,IAAI,CAAC,EAAE,YAC5B,kBAAoB,IAAI,CAAC,EAAE,WAC/B,OAAO,iBAAiB,SAAU,UAAY,CAC5C,GAAI,KACE,KAAK,YAAc,IAAI,CAAC,EAAE,UAAW,CACvC,IAAI,OAAS,SAAS,cAAc,0BAA0B,EAC9D,IAAI,CAAC,EAAE,MAAM,MAAQ,mBACrB,IAAI,CAAC,EAAE,MAAM,SAAW,SACxB,IAAI,CAAC,EAAE,MAAM,IAAM,OAAO,aAAe,KACzC,IAAI,CAAC,EAAE,MAAM,KAAO,kBAAoB,IAC1C,CAEJ,CAAC,CACH,CAEA,qBAAqB,EACrB,SAAS,sBAAuB,CAC9B,GAAI,SAAS,eAAe,WAAW,GACzB,SAAS,eAAe,WAAW,EAAE,QAAQ,MAC9C,CACT,IAAI,MAAQ,SAAS,SAAS,eAAe,WAAW,EAAE,QAAQ,KAAK,EAC5D,IAAI,UAAU,CACvB,YAAa,SAAS,eAAe,WAAW,EAAE,QAAQ,MAC1D,MACA,SACE,4MACF,UAAW,SAAU,KAAM,CACzB,IAAI,EAAI,IAAI,KAAK,KAAK,SAAS,EAC/B,YAAK,KAAO,CAAC,EAAE,QAAQ,EAAG,EAAE,SAAS,EAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,EACtD,IACT,EAEA,MAAO,UAAY,CACjB,SAAS,eAAe,mBAAmB,EAAE,MAAM,QAAU,MAC/D,CACF,CAAC,EACI,IAAI,CACX,CAEJ,CAGA,OAAO,SAAW,IAAM,CACtB,gBAAgB,CAClB,EACA,SAAS,aAAc,CACrB,OAAO,SAAS,CAAE,IAAK,EAAG,SAAU,QAAS,CAAC,CAChD,CAEA,SAAS,iBAAkB,CACrB,SAAS,eAAe,YAAY,IAClC,SAAS,KAAK,UAAY,KAAO,SAAS,gBAAgB,UAAY,IACxE,SAAS,eAAe,YAAY,EAAE,UAAU,OAAO,IAAI,EAE3D,SAAS,eAAe,YAAY,EAAE,UAAU,IAAI,IAAI,EAG9D,EAEC,IAAM,CAEL,SAAS,cAAe,CACtB,OAAO,iBAAiB,OAAQ,SAAU,OAAQ,CAChD,KAAK,WAAW,IAAM,CACpB,IAAI,OAAS,SAAS,cAAc,oBAAoB,EACpD,QACF,OAAO,UAAU,IAAI,cAAc,CAEvC,EAAG,GAAI,CACT,CAAC,CACH,CACA,aAAa,EAEb,SAAS,iBAAkB,CACzB,OAAO,iBAAiB,OAAQ,SAAU,OAAQ,CAChD,MAAM,OAAS,SAAS,iBAAiB,SAAS,EAC5C,MAAQ,SAAS,cAAc,UAAU,EACzC,SAAW,SAAS,cAAc,WAAW,EAC7C,SAAW,SAAS,cAAc,WAAW,EAC7C,MAAQ,SAAS,cAAc,QAAQ,EAC7C,IAAI,QAAU,SAAS,cAAc,mBAAmB,EACpD,QAAU,SAAS,cAAc,mBAAmB,EAExD,OAAO,QAAS,OAAU,CACxB,MAAM,iBAAiB,QAAS,IAAM,CACpC,MAAM,UAAY,MAAM,cAAc,KAAK,EAC3C,SAAS,IAAM,UAAU,IACzB,SAAS,OAAS,UAAU,OAC5B,SAAS,UAAY,UAAU,IAC/B,MAAM,UAAU,IAAI,QAAQ,EAE5B,MAAM,iBAAiB,QAAS,IAAM,CACpC,MAAM,UAAU,OAAO,QAAQ,CACjC,CAAC,EAED,IAAI,YAAc,MAClB,QAAQ,iBAAiB,QAAS,IAAM,CACtC,IAAI,YAAc,OAAO,OAEzB,YAAc,YAAc,YAAc,EAAI,YAAc,EAAI,EAChE,IAAI,aAAe,OAAO,WAAW,EAEjC,QAAU,aAAa,cAAc,KAAK,EAE9C,SAAS,IAAM,QAAQ,IACvB,SAAS,OAAS,QAAQ,MAC5B,CAAC,EAED,QAAQ,iBAAiB,QAAS,IAAM,CACtC,IAAI,YAAc,OAAO,OAEzB,YAAc,YAAc,EAAI,YAAc,EAAI,YAAc,EAChE,IAAI,aAAe,OAAO,WAAW,EAEjC,QAAU,aAAa,cAAc,KAAK,EAE9C,SAAS,IAAM,QAAQ,IACvB,SAAS,OAAS,QAAQ,MAC5B,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC,CACH,CACA,gBAAgB,EAEhB,SAAS,cAAe,CAClB,SAAS,cAAc,oCAAoC,GAC7D,SAAS,cAAc,oCAAoC,EAAE,UAAU,IAAI,QAAQ,EAErF,MAAM,KAAK,SAAS,iBAAiB,wBAAwB,CAAC,EAAE,QAAQ,SAAU,EAAG,CACnF,IAAI,MAAQ,EAAE,aAAa,YAAY,EAEvC,EAAE,iBAAiB,YAAa,IAAM,CACpC,IAAI,KAAO,SAAS,iBAAiB,kCAAoC,MAAQ,IAAI,EACrF,MAAM,OAAS,SAAS,cAAc,2BAA2B,EAC/C,OAAO,UAAU,SAAS,QAAQ,GAElD,OAAO,UAAU,OAAO,QAAQ,EAElC,KAAK,QAAQ,IAAM,CACjB,GAAG,UAAU,IAAI,QAAQ,CAC3B,CAAC,CACH,CAAC,CACH,CAAC,CACH,CACA,aAAa,EAEb,SAAS,qBAAsB,CAC7B,MAAM,UAAY,SAAS,cAAc,gBAAgB,EACrD,YACF,UAAU,QAAU,IAAM,CACxB,MAAM,YAAc,UAAU,cAAc,QAAQ,kBAAkB,EACtE,YAAY,cAAc,yBAAyB,EAAE,UAAU,IAAI,MAAM,EACzE,YAAY,cAAc,yBAAyB,EAAE,UAAU,IAAI,MAAM,CAC3E,GAGF,MAAM,SAAW,SAAS,cAAc,eAAe,EACnD,WACF,SAAS,QAAU,IAAM,CACvB,MAAM,WAAa,SAAS,QAAQ,kBAAkB,EACtD,WAAW,cAAc,yBAAyB,EAAE,UAAU,OAAO,MAAM,EAC3E,WAAW,cAAc,yBAAyB,EAAE,UAAU,OAAO,MAAM,CAC7E,GAGF,MAAM,QAAU,SAAS,cAAc,yBAAyB,EAC5D,UACF,QAAQ,QAAU,IAAM,CACJ,QAAQ,QAAQ,kBAAkB,EAC1C,cAAc,yBAAyB,EAAE,UAAU,OAAO,MAAM,EAC1E,QAAQ,UAAU,OAAO,MAAM,CACjC,EAEJ,CACA,oBAAoB,EAEpB,SAAS,eAAgB,CAMvB,MAAM,QAAU,SAAS,iBAAiB,QAAQ,EAElD,QAAS,EAAI,EAAG,EAAI,QAAQ,OAAQ,IAAK,CACvC,MAAM,SAAW,QAAQ,CAAC,EAAE,aAAa,WAAW,EAE9C,UAAY,IAAI,KAAK,QAAQ,EAAE,QAAQ,EAC3C,EAAI,YAAY,UAAY,CAC1B,MAAM,IAAM,IAAI,KAAK,EAAE,QAAQ,EAC7B,SAAW,UAAY,IAEnB,QAAU,QAAQ,CAAC,EAAE,cAAc,gBAAgB,EACnD,SAAW,QAAQ,CAAC,EAAE,cAAc,iBAAiB,EACrD,QAAU,QAAQ,CAAC,EAAE,cAAc,mBAAmB,EACtD,QAAU,QAAQ,CAAC,EAAE,cAAc,mBAAmB,EAE3D,QAAQ,UAAY,KAAK,MAAM,SAAW,KAAG,EAC3C,SAAS,UAAY,KAAK,MAAO,SAAW,MAAO,IAAI,EACvD,QAAQ,UAAY,KAAK,MAAO,SAAW,KAAQ,GAAM,EACzD,QAAQ,UAAY,KAAK,MAAO,SAAW,IAAU,GAAM,CAChE,EAAG,GAAM,CACb,CACF,CACA,cAAc,EAEd,SAAS,kBAAmB,CAC1B,MAAM,WAAa,SAAS,eAAe,UAAU,EAC/C,UAAY,SAAS,cAAc,gBAAgB,EACzD,GAAI,WAAY,CACd,MAAM,IAAM,YAAY,UAAY,CAClC,WAAW,UAAU,IAAI,MAAM,CACjC,EAAG,WAAW,aAAa,YAAY,CAAC,EAExC,UAAU,iBAAiB,QAAU,OAAU,CAC7C,MAAM,SAAW,SAAS,eAAe,aAAa,EAChD,OAAS,SAAS,cAAc,gBAAgB,EACtD,SAAS,OAAO,EAChB,SAAS,kBAAkB,EAAG,KAAK,EACnC,UAAU,UAAU,UAAU,SAAS,KAAK,EAC5C,OAAO,UAAU,IAAI,MAAM,CAC7B,CAAC,EACa,SAAS,cAAc,eAAe,EAC9C,iBAAiB,QAAU,OAAU,CACzC,WAAW,UAAU,OAAO,MAAM,EAClC,cAAc,GAAG,CACnB,CAAC,CACH,CACF,CACA,iBAAiB,EAEjB,SAAS,WAAY,CACnB,IAAI,YAAc,SAAS,iBAAiB,YAAY,EAExD,QAAS,EAAI,EAAG,EAAI,YAAY,OAAQ,IAAK,CAC3C,MAAM,QAAU,YAAY,CAAC,EAC7B,QAAQ,iBAAiB,YAAa,SAAS,MAAO,CACpD,MAAM,eAAe,EAErB,IAAI,OAAS,MAAM,MAAQ,QAAQ,WAC/B,WAAa,QAAQ,WAEzB,SAAS,iBAAiB,YAAa,QAAQ,EAC/C,SAAS,iBAAiB,UAAW,eAAe,EAEpD,SAAS,SAASO,OAAO,CACvB,IAAI,EAAIA,OAAM,MAAQ,QAAQ,WAC1B,MAAQ,EAAI,QAAU,EAC1B,QAAQ,WAAa,WAAa,IACpC,CAEA,SAAS,iBAAkB,CACzB,SAAS,oBAAoB,YAAa,QAAQ,EAClD,SAAS,oBAAoB,UAAW,eAAe,CACzD,CACF,CAAC,CACH,CACF,CACA,UAAU,EAMV,SAAS,sBAAsB,eAAgB,CAC7C,GAAI,CAAC,gBAAkB,CAAC,eAAe,GAAI,OAC3C,MAAM,cAAgB,eAAe,GAAG,sBAAsB,GAC/C,eAAe,QAAU,eAAe,GAAG,iBAAiB,eAAe,GACnF,QAAS,OAAU,CACxB,MAAM,EAAI,MAAM,sBAAsB,EAChC,QAAU,EAAE,MAAQ,cAAc,KAAO,GAAK,EAAE,KAAO,cAAc,MAAQ,EAC7E,WAAa,MAAM,iBAAiB,gDAAgD,EACtF,SACF,MAAM,gBAAgB,aAAa,EACnC,MAAM,gBAAgB,OAAO,EAC7B,WAAW,QAAS,IAAO,CAErB,GAAG,aAAa,aAAa,IAAM,QACvC,GAAG,gBAAgB,UAAU,CAC/B,CAAC,IAED,MAAM,aAAa,cAAe,MAAM,EACxC,MAAM,aAAa,QAAS,EAAE,EAC9B,WAAW,QAAS,IAAO,GAAG,aAAa,WAAY,IAAI,CAAC,EAEhE,CAAC,CACH,CAKA,SAAS,sBAAsB,eAAgB,CAC7C,aAAa,eAAe,UAAU,EACtC,eAAe,WAAa,WAAW,UAAY,CACjD,sBAAsB,cAAc,CACtC,GAAI,eAAe,OAAO,OAAS,KAAO,EAAE,CAC9C,CAEA,SAAS,UAAW,CAIlB,YAAY,EAEZ,SAAS,aAAc,CACL,SAAS,iBACvB,oCACF,EAEQ,QAAS,aAAgB,CAC/B,MAAM,SAAW,YAAY,aAAa,iBAAiB,EAErD,WAAa,SAAS,cAC1B,wCAAwC,QAAQ,SAClD,EACM,WAAa,SAAS,cAC1B,wCAAwC,QAAQ,SAClD,EAGM,WAAa,YAAY,QAAQ,OAGvC,IAAI,cAAgB,KAAK,MAAM,YAAc,IAAI,EAGjD,cAAgB,OAAO,OAAO,cAAe,CAC3C,KAAM,cAAc,MAAQ,GAC5B,SAAU,cAAc,UAAY,GACpC,UAAW,CACT,GAAI,YAAY,cAAc,mBAAmB,CACnD,EACA,WAAY,CACV,GAAI,YAAY,cAAc,oBAAoB,EAClD,UAAW,EACb,EACA,WAAY,CACV,OAAQ,WACR,OAAQ,UACV,EACA,GAAI,CACF,KAAM,UAAY,CAAE,sBAAsB,IAAI,CAAG,EACjD,YAAa,UAAY,CAAE,sBAAsB,IAAI,EAAG,sBAAsB,IAAI,CAAG,EACrF,OAAQ,UAAY,CAAE,sBAAsB,IAAI,EAAG,sBAAsB,IAAI,CAAG,EAChF,aAAc,UAAY,CAAE,sBAAsB,IAAI,EAAG,sBAAsB,IAAI,CAAG,CACxF,CACF,CAAC,EAGD,IAAI,OAAO,YAAa,aAAa,CACvC,CAAC,CACH,CACF,CACA,SAAS,EACL,QAAQ,YACV,SAAS,iBAAiB,uBAAwB,IAAM,CACtD,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,oBAAoB,CACtB,CAAC,CAEL,GAAG",
  "names": ["a", "url", "title", "tag", "delay", "i", "ex_s", "ex_vi", "event"]
}
