403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/framework7/node_modules/.vite/deps/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/framework7/node_modules/.vite/deps/framework7_lite-bundle.js.map
{
  "version": 3,
  "sources": ["../../framework7/components/dialog/dialog-class.js", "../../framework7/components/dialog/dialog.js", "../../framework7/components/popup/popup-class.js", "../../framework7/components/popup/popup.js", "../../framework7/components/login-screen/login-screen-class.js", "../../framework7/components/login-screen/login-screen.js", "../../framework7/components/popover/popover-class.js", "../../framework7/components/popover/popover.js", "../../framework7/components/actions/actions-class.js", "../../framework7/components/actions/actions.js", "../../framework7/components/sheet/sheet-class.js", "../../framework7/components/sheet/sheet.js", "../../framework7/components/toast/toast-class.js", "../../framework7/components/toast/toast.js", "../../framework7/components/preloader/preloader.js", "../../framework7/components/progressbar/progressbar.js", "../../framework7/components/sortable/sortable.js", "../../framework7/components/swipeout/swipeout.js", "../../framework7/components/accordion/accordion.js", "../../framework7/components/contacts-list/contacts-list.js", "../../framework7/components/virtual-list/virtual-list-class.js", "../../framework7/components/virtual-list/virtual-list.js", "../../framework7/components/list-index/list-index-class.js", "../../framework7/components/list-index/list-index.js", "../../framework7/components/timeline/timeline.js", "../../framework7/components/tabs/tabs.js", "../../framework7/components/panel/swipe-panel.js", "../../framework7/components/panel/resizable-panel.js", "../../framework7/components/panel/panel-class.js", "../../framework7/components/panel/panel.js", "../../framework7/components/card/card.js", "../../framework7/components/chip/chip.js", "../../framework7/components/form/form.js", "../../framework7/components/input/input.js", "../../framework7/components/checkbox/checkbox.js", "../../framework7/components/radio/radio.js", "../../framework7/components/toggle/toggle-class.js", "../../framework7/components/toggle/toggle.js", "../../framework7/components/range/range-class.js", "../../framework7/components/range/range.js", "../../framework7/components/stepper/stepper-class.js", "../../framework7/components/stepper/stepper.js", "../../framework7/components/searchbar/remove-diacritics.js", "../../framework7/components/smart-select/smart-select-class.js", "../../framework7/components/smart-select/smart-select.js", "../../framework7/components/grid/grid.js", "../../framework7/components/calendar/calendar-class.js", "../../framework7/components/calendar/calendar.js", "../../framework7/components/picker/picker-column.js", "../../framework7/components/picker/picker-class.js", "../../framework7/components/picker/picker.js", "../../framework7/components/infinite-scroll/infinite-scroll.js", "../../framework7/components/pull-to-refresh/pull-to-refresh-class.js", "../../framework7/components/pull-to-refresh/pull-to-refresh.js", "../../framework7/components/data-table/data-table-class.js", "../../framework7/components/data-table/data-table.js", "../../framework7/components/fab/fab.js", "../../framework7/components/searchbar/searchbar-class.js", "../../framework7/components/searchbar/searchbar.js", "../../framework7/components/messages/messages-class.js", "../../framework7/components/messages/messages.js", "../../framework7/components/messagebar/messagebar-class.js", "../../framework7/components/messagebar/messagebar.js", "../../framework7/node_modules/swiper/shared/ssr-window.esm.mjs", "../../framework7/node_modules/swiper/shared/utils.mjs", "../../framework7/node_modules/swiper/shared/swiper-core.mjs", "../../framework7/node_modules/swiper/modules/virtual.mjs", "../../framework7/node_modules/swiper/modules/keyboard.mjs", "../../framework7/node_modules/swiper/modules/mousewheel.mjs", "../../framework7/node_modules/swiper/shared/create-element-if-not-defined.mjs", "../../framework7/node_modules/swiper/modules/navigation.mjs", "../../framework7/node_modules/swiper/shared/classes-to-selector.mjs", "../../framework7/node_modules/swiper/modules/pagination.mjs", "../../framework7/node_modules/swiper/modules/scrollbar.mjs", "../../framework7/node_modules/swiper/modules/parallax.mjs", "../../framework7/node_modules/swiper/modules/zoom.mjs", "../../framework7/node_modules/swiper/modules/controller.mjs", "../../framework7/node_modules/swiper/modules/a11y.mjs", "../../framework7/node_modules/swiper/modules/history.mjs", "../../framework7/node_modules/swiper/modules/hash-navigation.mjs", "../../framework7/node_modules/swiper/modules/autoplay.mjs", "../../framework7/node_modules/swiper/modules/thumbs.mjs", "../../framework7/node_modules/swiper/modules/free-mode.mjs", "../../framework7/node_modules/swiper/modules/grid.mjs", "../../framework7/node_modules/swiper/modules/manipulation.mjs", "../../framework7/node_modules/swiper/shared/effect-init.mjs", "../../framework7/node_modules/swiper/shared/effect-target.mjs", "../../framework7/node_modules/swiper/shared/effect-virtual-transition-end.mjs", "../../framework7/node_modules/swiper/modules/effect-fade.mjs", "../../framework7/node_modules/swiper/modules/effect-cube.mjs", "../../framework7/node_modules/swiper/shared/create-shadow.mjs", "../../framework7/node_modules/swiper/modules/effect-flip.mjs", "../../framework7/node_modules/swiper/modules/effect-coverflow.mjs", "../../framework7/node_modules/swiper/modules/effect-creative.mjs", "../../framework7/node_modules/swiper/modules/effect-cards.mjs", "../../framework7/node_modules/swiper/swiper-bundle.mjs", "../../framework7/node_modules/swiper/shared/update-swiper.mjs", "../../framework7/node_modules/swiper/shared/get-element-params.mjs", "../../framework7/node_modules/swiper/swiper-element-bundle.mjs", "../../framework7/components/swiper/swiper.js", "../../framework7/components/photo-browser/photo-browser-class.js", "../../framework7/components/photo-browser/photo-browser.js", "../../framework7/components/notification/notification-class.js", "../../framework7/components/notification/notification.js", "../../framework7/components/autocomplete/autocomplete-class.js", "../../framework7/components/autocomplete/autocomplete.js", "../../framework7/components/tooltip/tooltip-class.js", "../../framework7/components/tooltip/tooltip.js", "../../framework7/components/skeleton/skeleton.js", "../../framework7/components/color-picker/modules/alpha-slider.js", "../../framework7/components/color-picker/modules/current-color.js", "../../framework7/components/color-picker/modules/hex.js", "../../framework7/components/color-picker/modules/hsb-sliders.js", "../../framework7/components/color-picker/modules/hue-slider.js", "../../framework7/components/color-picker/modules/brightness-slider.js", "../../framework7/components/color-picker/modules/palette.js", "../../framework7/components/color-picker/modules/initial-current-colors.js", "../../framework7/components/color-picker/modules/rgb-bars.js", "../../framework7/components/color-picker/modules/rgb-sliders.js", "../../framework7/components/color-picker/modules/sb-spectrum.js", "../../framework7/components/color-picker/modules/hs-spectrum.js", "../../framework7/components/color-picker/modules/wheel.js", "../../framework7/components/color-picker/color-picker-class.js", "../../framework7/components/color-picker/color-picker.js", "../../framework7/components/treeview/treeview.js", "../../framework7/components/text-editor/text-editor-class.js", "../../framework7/components/text-editor/text-editor.js", "../../framework7/components/breadcrumbs/breadcrumbs.js", "../../framework7/components/typography/typography.js", "../../framework7/framework7-lite-bundle.esm.js"],
  "sourcesContent": ["import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Dialog extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      title: app.params.dialog.title,\n      text: undefined,\n      content: '',\n      buttons: [],\n      verticalButtons: false,\n      onClick: undefined,\n      cssClass: undefined,\n      destroyOnClose: false,\n      on: {}\n    }, params);\n    if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n      extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n    }\n    if (typeof extendedParams.backdrop === 'undefined') {\n      extendedParams.backdrop = app.params.dialog.backdrop;\n    }\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const dialog = this;\n    const device = getDevice();\n    const document = getDocument();\n    const {\n      title,\n      text,\n      content,\n      buttons,\n      verticalButtons,\n      cssClass,\n      backdrop\n    } = extendedParams;\n    dialog.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!dialog.params.el) {\n      const dialogClasses = ['dialog'];\n      if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n      if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n      if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n      if (cssClass) dialogClasses.push(cssClass);\n      let buttonsHTML = '';\n      if (buttons.length > 0) {\n        buttonsHTML = $jsx(\"div\", {\n          class: \"dialog-buttons\"\n        }, buttons.map(button => $jsx(\"span\", {\n          class: `dialog-button${button.strong ? ' dialog-button-strong' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}`\n        }, button.text)));\n      }\n      const dialogHtml = $jsx(\"div\", {\n        class: dialogClasses.join(' ')\n      }, $jsx(\"div\", {\n        class: \"dialog-inner\"\n      }, title && $jsx(\"div\", {\n        class: \"dialog-title\"\n      }, title), text && $jsx(\"div\", {\n        class: \"dialog-text\"\n      }, text), content), buttonsHTML);\n      $el = $(dialogHtml);\n    } else {\n      $el = $(dialog.params.el);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return dialog.destroy();\n    }\n    let $backdropEl;\n    if (backdrop) {\n      $backdropEl = app.$el.children('.dialog-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"dialog-backdrop\"></div>');\n        app.$el.append($backdropEl);\n      }\n    }\n\n    // Assign events\n    function buttonOnClick(e) {\n      const buttonEl = this;\n      const index = $(buttonEl).index();\n      const button = buttons[index];\n      if (button.onClick) button.onClick(dialog, e);\n      if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n      if (button.close !== false) dialog.close();\n    }\n    let addKeyboardHander;\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      buttons.forEach((button, index) => {\n        if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n          if (document.activeElement) document.activeElement.blur();\n          if (button.onClick) button.onClick(dialog, e);\n          if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n          if (button.close !== false) dialog.close();\n        }\n      });\n    }\n    if (buttons && buttons.length > 0) {\n      dialog.on('open', () => {\n        $el.find('.dialog-button').each((buttonEl, index) => {\n          const button = buttons[index];\n          if (button.keyCodes) addKeyboardHander = true;\n          $(buttonEl).on('click', buttonOnClick);\n        });\n        if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n          $(document).on('keydown', onKeyDown);\n        }\n      });\n      dialog.on('close', () => {\n        $el.find('.dialog-button').each(buttonEl => {\n          $(buttonEl).off('click', buttonOnClick);\n        });\n        if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n          $(document).off('keydown', onKeyDown);\n        }\n        addKeyboardHander = false;\n      });\n    }\n    extend(dialog, {\n      app,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'dialog',\n      setProgress(progress, duration) {\n        app.progressbar.set($el.find('.progressbar'), progress, duration);\n        return dialog;\n      },\n      setText(newText) {\n        let $textEl = $el.find('.dialog-text');\n        if ($textEl.length === 0) {\n          $textEl = $('<div class=\"dialog-text\"></div>');\n          if (typeof title !== 'undefined') {\n            $textEl.insertAfter($el.find('.dialog-title'));\n          } else {\n            $el.find('.dialog-inner').prepend($textEl);\n          }\n        }\n        $textEl.html(newText);\n        dialog.params.text = newText;\n        return dialog;\n      },\n      setTitle(newTitle) {\n        let $titleEl = $el.find('.dialog-title');\n        if ($titleEl.length === 0) {\n          $titleEl = $('<div class=\"dialog-title\"></div>');\n          $el.find('.dialog-inner').prepend($titleEl);\n        }\n        $titleEl.html(newTitle);\n        dialog.params.title = newTitle;\n        return dialog;\n      }\n    });\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      if ($target.closest(dialog.el).length === 0) {\n        if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {\n          dialog.close();\n        }\n      }\n    }\n    dialog.on('opened', () => {\n      if (dialog.params.closeByBackdropClick) {\n        app.on('click', handleClick);\n      }\n    });\n    dialog.on('close', () => {\n      if (dialog.params.closeByBackdropClick) {\n        app.off('click', handleClick);\n      }\n    });\n    $el[0].f7Modal = dialog;\n    if (dialog.params.destroyOnClose) {\n      dialog.once('closed', () => {\n        setTimeout(() => {\n          dialog.destroy();\n        }, 0);\n      });\n    }\n    return dialog;\n  }\n}\nexport default Dialog;", "import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'dialog',\n  params: {\n    dialog: {\n      title: undefined,\n      buttonOk: 'OK',\n      buttonCancel: 'Cancel',\n      usernamePlaceholder: 'Username',\n      passwordPlaceholder: 'Password',\n      preloaderTitle: 'Loading... ',\n      progressTitle: 'Loading... ',\n      backdrop: true,\n      closeByBackdropClick: false,\n      destroyPredefinedDialogs: true,\n      keyboardActions: true,\n      autoFocus: true\n    }\n  },\n  static: {\n    Dialog\n  },\n  create() {\n    const app = this;\n    function defaultDialogTitle() {\n      return app.params.dialog.title || app.name;\n    }\n    const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n    const keyboardActions = app.params.dialog.keyboardActions;\n    const autoFocus = app.params.dialog.autoFocus;\n    const autoFocusHandler = autoFocus ? {\n      on: {\n        opened(dialog) {\n          dialog.$el.find('input').eq(0).focus();\n        }\n      }\n    } : {};\n    const isIosTheme = app.theme === 'ios';\n    app.dialog = extend(ModalMethods({\n      app,\n      constructor: Dialog,\n      defaultSelector: '.dialog.modal-in'\n    }), {\n      // Shortcuts\n      alert() {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        let [text, title, callbackOk] = args;\n        if (args.length === 2 && typeof args[1] === 'function') {\n          [text, callbackOk, title] = args;\n        }\n        return new Dialog(app, {\n          title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n          text,\n          buttons: [{\n            text: app.params.dialog.buttonOk,\n            strong: isIosTheme,\n            onClick: callbackOk,\n            keyCodes: keyboardActions ? [13, 27] : null\n          }],\n          destroyOnClose\n        }).open();\n      },\n      prompt() {\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n        let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n        if (typeof args[1] === 'function') {\n          [text, callbackOk, callbackCancel, defaultValue, title] = args;\n        }\n        defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n        return new Dialog(app, {\n          title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n          text,\n          content: `<div class=\"dialog-input-field input\"><input type=\"text\" class=\"dialog-input\" value=\"${defaultValue}\"></div>`,\n          buttons: [{\n            text: app.params.dialog.buttonCancel,\n            keyCodes: keyboardActions ? [27] : null,\n            color: null\n          }, {\n            text: app.params.dialog.buttonOk,\n            strong: isIosTheme,\n            keyCodes: keyboardActions ? [13] : null\n          }],\n          onClick(dialog, index) {\n            const inputValue = dialog.$el.find('.dialog-input').val();\n            if (index === 0 && callbackCancel) callbackCancel(inputValue);\n            if (index === 1 && callbackOk) callbackOk(inputValue);\n          },\n          destroyOnClose,\n          ...autoFocusHandler\n        }).open();\n      },\n      confirm() {\n        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n          args[_key3] = arguments[_key3];\n        }\n        let [text, title, callbackOk, callbackCancel] = args;\n        if (typeof args[1] === 'function') {\n          [text, callbackOk, callbackCancel, title] = args;\n        }\n        return new Dialog(app, {\n          title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n          text,\n          buttons: [{\n            text: app.params.dialog.buttonCancel,\n            onClick: callbackCancel,\n            keyCodes: keyboardActions ? [27] : null,\n            color: null\n          }, {\n            text: app.params.dialog.buttonOk,\n            strong: isIosTheme,\n            onClick: callbackOk,\n            keyCodes: keyboardActions ? [13] : null\n          }],\n          destroyOnClose\n        }).open();\n      },\n      login() {\n        for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n          args[_key4] = arguments[_key4];\n        }\n        let [text, title, callbackOk, callbackCancel] = args;\n        if (typeof args[1] === 'function') {\n          [text, callbackOk, callbackCancel, title] = args;\n        }\n        return new Dialog(app, {\n          title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n          text,\n          // prettier-ignore\n          content: `\n              <div class=\"dialog-input-field dialog-input-double input\">\n                <input type=\"text\" name=\"dialog-username\" placeholder=\"${app.params.dialog.usernamePlaceholder}\" class=\"dialog-input\">\n              </div>\n              <div class=\"dialog-input-field dialog-input-double input\">\n                <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n              </div>`,\n          buttons: [{\n            text: app.params.dialog.buttonCancel,\n            keyCodes: keyboardActions ? [27] : null,\n            color: null\n          }, {\n            text: app.params.dialog.buttonOk,\n            strong: isIosTheme,\n            keyCodes: keyboardActions ? [13] : null\n          }],\n          onClick(dialog, index) {\n            const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n            const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n            if (index === 0 && callbackCancel) callbackCancel(username, password);\n            if (index === 1 && callbackOk) callbackOk(username, password);\n          },\n          destroyOnClose,\n          ...autoFocusHandler\n        }).open();\n      },\n      password() {\n        for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n          args[_key5] = arguments[_key5];\n        }\n        let [text, title, callbackOk, callbackCancel] = args;\n        if (typeof args[1] === 'function') {\n          [text, callbackOk, callbackCancel, title] = args;\n        }\n        return new Dialog(app, {\n          title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n          text,\n          // prettier-ignore\n          content: `\n              <div class=\"dialog-input-field input\">\n                <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n              </div>`,\n          buttons: [{\n            text: app.params.dialog.buttonCancel,\n            keyCodes: keyboardActions ? [27] : null,\n            color: null\n          }, {\n            text: app.params.dialog.buttonOk,\n            strong: isIosTheme,\n            keyCodes: keyboardActions ? [13] : null\n          }],\n          onClick(dialog, index) {\n            const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n            if (index === 0 && callbackCancel) callbackCancel(password);\n            if (index === 1 && callbackOk) callbackOk(password);\n          },\n          destroyOnClose,\n          ...autoFocusHandler\n        }).open();\n      },\n      preloader(title, color) {\n        const preloaders = {\n          iosPreloaderContent,\n          mdPreloaderContent\n        };\n        const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n        return new Dialog(app, {\n          title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n          // prettier-ignore\n          content: `<div class=\"preloader${color ? ` color-${color}` : ''}\">${preloaderInner}</div>`,\n          cssClass: 'dialog-preloader',\n          destroyOnClose\n        }).open();\n      },\n      progress() {\n        for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n          args[_key6] = arguments[_key6];\n        }\n        let [title, progress, color] = args;\n        if (args.length === 2) {\n          if (typeof args[0] === 'number') {\n            [progress, color, title] = args;\n          } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n            [title, color, progress] = args;\n          }\n        } else if (args.length === 1) {\n          if (typeof args[0] === 'number') {\n            [progress, title, color] = args;\n          }\n        }\n        const infinite = typeof progress === 'undefined';\n        const dialog = new Dialog(app, {\n          title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n          cssClass: 'dialog-progress',\n          // prettier-ignore\n          content: `\n              <div class=\"progressbar${infinite ? '-infinite' : ''}${color ? ` color-${color}` : ''}\">\n                ${!infinite ? '<span></span>' : ''}\n              </div>\n            `,\n          destroyOnClose\n        });\n        if (!infinite) dialog.setProgress(progress);\n        return dialog.open();\n      }\n    });\n  }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popup extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, app.params.popup, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const popup = this;\n    const window = getWindow();\n    const document = getDocument();\n    const support = getSupport();\n    const device = getDevice();\n    popup.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!popup.params.el) {\n      $el = $(popup.params.content).filter(node => node.nodeType === 1).eq(0);\n    } else {\n      $el = $(popup.params.el).eq(0);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return popup.destroy();\n    }\n    let $backdropEl;\n    if (popup.params.backdrop && popup.params.backdropEl) {\n      $backdropEl = $(popup.params.backdropEl);\n    } else if (popup.params.backdrop) {\n      if (popup.params.backdropUnique) {\n        $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n        popup.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = popup.$containerEl.children('.popup-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"popup-backdrop\"></div>');\n        popup.$containerEl.append($backdropEl);\n      }\n    }\n    extend(popup, {\n      app,\n      push: $el.hasClass('popup-push') || popup.params.push,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'popup',\n      $htmlEl: $('html')\n    });\n    if (popup.params.push) {\n      $el.addClass('popup-push');\n    }\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n      if (keyboardOpened) return;\n      if ($target.closest(popup.el).length === 0) {\n        if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {\n          let needToClose = true;\n          popup.$el.nextAll('.popup.modal-in').each(popupEl => {\n            const popupInstance = popupEl.f7Modal;\n            if (!popupInstance) return;\n            if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {\n              needToClose = false;\n            }\n          });\n          if (needToClose) {\n            popup.close();\n          }\n        }\n      }\n    }\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && popup.params.closeOnEscape) {\n        popup.close();\n      }\n    }\n    let pushOffset;\n    let isPush;\n    function pushViewScale(offset) {\n      return (app.height - offset * 2) / app.height;\n    }\n    let allowSwipeToClose = true;\n    let isTouched = false;\n    let startTouch;\n    let currentTouch;\n    let isScrolling;\n    let touchStartTime;\n    let touchesDiff;\n    let isMoved = false;\n    let pageContentEl;\n    let pageContentScrollTop;\n    let pageContentOffsetHeight;\n    let pageContentScrollHeight;\n    let popupHeight;\n    let $pushEl;\n    function handleTouchStart(e) {\n      if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n      if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n        return;\n      }\n      if ($(e.target).closest('.sortable-handler').length > 0) return;\n      isTouched = true;\n      isMoved = false;\n      startTouch = {\n        x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n      };\n      touchStartTime = now();\n      isScrolling = undefined;\n      if (!popup.params.swipeHandler && e.type === 'touchstart') {\n        pageContentEl = $(e.target).closest('.page-content')[0];\n      }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      currentTouch = {\n        x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n      };\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      touchesDiff = startTouch.y - currentTouch.y;\n      if (isPush && pushOffset && touchesDiff > 0) {\n        touchesDiff = 0;\n      }\n      const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n      $el.transition(0);\n      if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n        $el.transform('');\n        $el.transition('');\n        return;\n      }\n      if (!isMoved) {\n        if (isPush && pushOffset) {\n          popupHeight = $el[0].offsetHeight;\n          $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n          if ($pushEl.length === 0) {\n            $pushEl = app.$el.children('.view, .views');\n          }\n        }\n        if (pageContentEl) {\n          pageContentScrollTop = pageContentEl.scrollTop;\n          pageContentScrollHeight = pageContentEl.scrollHeight;\n          pageContentOffsetHeight = pageContentEl.offsetHeight;\n          if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {\n            $el.transform('');\n            $el.transition('');\n            isTouched = false;\n            isMoved = false;\n            return;\n          }\n        }\n        isMoved = true;\n        popup.emit('local::swipeStart popupSwipeStart', popup);\n        popup.$el.trigger('popup:swipestart');\n      } else {\n        popup.emit('local::swipeMove popupSwipeMove', popup);\n        popup.$el.trigger('popup:swipemove');\n      }\n      e.preventDefault();\n      if (isPush && pushOffset) {\n        const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n        const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n        if ($pushEl.hasClass('popup')) {\n          if ($pushEl.hasClass('popup-push')) {\n            $pushEl.transition(0).forEach(el => {\n              el.style.setProperty('transform', `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`, 'important');\n            });\n          } else {\n            $pushEl.transition(0).forEach(el => {\n              el.style.setProperty('transform', `translate3d(0, 0px , 0px) scale(${scale})`, 'important');\n            });\n          }\n        } else {\n          $pushEl.transition(0).forEach(el => {\n            el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n          });\n        }\n      }\n      $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n    }\n    function handleTouchEnd(e) {\n      if (!e.isTrusted) return;\n      isTouched = false;\n      if (!isMoved) {\n        return;\n      }\n      popup.emit('local::swipeEnd popupSwipeEnd', popup);\n      popup.$el.trigger('popup:swipeend');\n      isMoved = false;\n      allowSwipeToClose = false;\n      $el.transition('');\n      if (isPush && pushOffset) {\n        $pushEl.transition('').transform('');\n      }\n      const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n      if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n        $el.transform('');\n        allowSwipeToClose = true;\n        return;\n      }\n      const diff = Math.abs(touchesDiff);\n      const timeDiff = new Date().getTime() - touchStartTime;\n      if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n        nextTick(() => {\n          if (direction === 'to-bottom') {\n            $el.addClass('swipe-close-to-bottom');\n          } else {\n            $el.addClass('swipe-close-to-top');\n          }\n          $el.transform('');\n          popup.emit('local::swipeclose popupSwipeClose', popup);\n          popup.$el.trigger('popup:swipeclose');\n          popup.close();\n          allowSwipeToClose = true;\n        });\n        return;\n      }\n      allowSwipeToClose = true;\n      $el.transform('');\n    }\n    const passive = support.passiveListener ? {\n      passive: true\n    } : false;\n    if (popup.params.swipeToClose) {\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      popup.once('popupDestroy', () => {\n        $el.off(app.touchEvents.start, handleTouchStart, passive);\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      });\n    }\n    let hasPreviousPushPopup;\n    const updatePushOffset = () => {\n      const wasPush = isPush;\n      if (popup.push) {\n        isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n      }\n      if (isPush && !wasPush) {\n        // eslint-disable-next-line\n        setPushOffset();\n      } else if (isPush && wasPush) {\n        popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n      } else if (!isPush && wasPush) {\n        popup.$htmlEl.removeClass('with-modal-popup-push');\n        popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n      }\n    };\n    const setPushOffset = () => {\n      app.off('resize', updatePushOffset);\n      if (popup.push) {\n        isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n      }\n      if (isPush) {\n        pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n        if (Number.isNaN(pushOffset)) {\n          pushOffset = 0;\n        }\n        if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n        popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n        $el.addClass('popup-push');\n        popup.$htmlEl.addClass('with-modal-popup-push');\n        popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n      }\n      app.on('resize', updatePushOffset);\n    };\n    popup.on('open', () => {\n      hasPreviousPushPopup = false;\n      if (popup.params.closeOnEscape) {\n        $(document).on('keydown', onKeyDown);\n      }\n      $el.prevAll('.popup.modal-in').addClass('popup-behind');\n      setPushOffset();\n    });\n    popup.on('opened', () => {\n      $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n      if (popup.params.closeByBackdropClick) {\n        app.on('click', handleClick);\n      }\n    });\n    popup.on('close', () => {\n      hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n      if (popup.params.closeOnEscape) {\n        $(document).off('keydown', onKeyDown);\n      }\n      if (popup.params.closeByBackdropClick) {\n        app.off('click', handleClick);\n      }\n      $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n      if (isPush && pushOffset && !hasPreviousPushPopup) {\n        popup.$htmlEl.removeClass('with-modal-popup-push');\n        popup.$htmlEl.addClass('with-modal-popup-push-closing');\n      }\n      app.off('resize', updatePushOffset);\n    });\n    popup.on('closed', () => {\n      $el.removeClass('popup-behind');\n      if (isPush && pushOffset && !hasPreviousPushPopup) {\n        popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n        popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n        popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n      }\n    });\n    $el[0].f7Modal = popup;\n    return popup;\n  }\n}\nexport default Popup;", "import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'popup',\n  params: {\n    popup: {\n      backdrop: true,\n      backdropEl: undefined,\n      backdropUnique: false,\n      closeByBackdropClick: true,\n      closeOnEscape: false,\n      swipeToClose: false,\n      swipeHandler: null,\n      push: false,\n      containerEl: null\n    }\n  },\n  static: {\n    Popup\n  },\n  create() {\n    const app = this;\n    app.popup = ModalMethods({\n      app,\n      constructor: Popup,\n      defaultSelector: '.popup.modal-in',\n      parentSelector: '.popup'\n    });\n  },\n  clicks: {\n    '.popup-open': function openPopup($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.popup.open(data.popup, data.animate, $clickedEl);\n    },\n    '.popup-close': function closePopup($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.popup.close(data.popup, data.animate, $clickedEl);\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nclass LoginScreen extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const loginScreen = this;\n    loginScreen.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!loginScreen.params.el) {\n      $el = $(loginScreen.params.content).filter(node => node.nodeType === 1).eq(0);\n    } else {\n      $el = $(loginScreen.params.el).eq(0);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return loginScreen.destroy();\n    }\n    extend(loginScreen, {\n      app,\n      $el,\n      el: $el[0],\n      type: 'loginScreen'\n    });\n    $el[0].f7Modal = loginScreen;\n    return loginScreen;\n  }\n}\nexport default LoginScreen;", "import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'loginScreen',\n  static: {\n    LoginScreen\n  },\n  create() {\n    const app = this;\n    app.loginScreen = ModalMethods({\n      app,\n      constructor: LoginScreen,\n      defaultSelector: '.login-screen.modal-in'\n    });\n  },\n  clicks: {\n    '.login-screen-open': function openLoginScreen($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n    },\n    '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n    }\n  }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popover extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, app.params.popover, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const popover = this;\n    const device = getDevice();\n    const window = getWindow();\n    const document = getDocument();\n    popover.params = extendedParams;\n\n    // Find Element\n    let $el;\n    if (!popover.params.el) {\n      $el = $(popover.params.content).filter(node => node.nodeType === 1).eq(0);\n    } else {\n      $el = $(popover.params.el).eq(0);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n\n    // Find Target\n    const $targetEl = $(popover.params.targetEl).eq(0);\n    if ($el.length === 0) {\n      return popover.destroy();\n    }\n\n    // Backdrop\n    let $backdropEl;\n    const forceBackdropUnique = popover.params.backdrop && app.$el.find('.popover.modal-in').filter(anotherPopoverEl => anotherPopoverEl !== $el[0]).length > 0;\n    if (popover.params.backdrop && popover.params.backdropEl) {\n      $backdropEl = $(popover.params.backdropEl);\n    } else if (popover.params.backdrop) {\n      if (popover.params.backdropUnique || forceBackdropUnique) {\n        $backdropEl = $('<div class=\"popover-backdrop popover-backdrop-unique\"></div>');\n        $backdropEl[0].f7PopoverRef = popover;\n        popover.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = popover.$containerEl.children('.popover-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"popover-backdrop\"></div>');\n        popover.$containerEl.append($backdropEl);\n      }\n    }\n\n    // Find Arrow\n    let $arrowEl;\n    if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n      $arrowEl = $('<div class=\"popover-arrow\"></div>');\n      $el.prepend($arrowEl);\n    } else {\n      $arrowEl = $el.find('.popover-arrow');\n    }\n\n    // Open\n    const originalOpen = popover.open;\n    extend(popover, {\n      app,\n      $el,\n      el: $el[0],\n      $targetEl,\n      targetEl: $targetEl[0],\n      $arrowEl,\n      arrowEl: $arrowEl[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'popover',\n      forceBackdropUnique,\n      open() {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        let [targetEl, animate] = args;\n        if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n        if (targetEl) {\n          popover.$targetEl = $(targetEl);\n          popover.targetEl = popover.$targetEl[0];\n        }\n        return originalOpen.call(popover, animate);\n      }\n    });\n    function handleResize() {\n      popover.resize();\n    }\n    popover.on('popoverOpen', () => {\n      popover.resize();\n      app.on('resize', handleResize);\n      $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n      popover.on('popoverClose popoverBeforeDestroy', () => {\n        app.off('resize', handleResize);\n        $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n      });\n    });\n    let touchStartTarget = null;\n    function handleTouchStart(e) {\n      touchStartTarget = e.target;\n    }\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n      if (keyboardOpened) return;\n      if ($target.closest(popover.el).length === 0) {\n        if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target && touchStartTarget === target) {\n          popover.close();\n        } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n          const isAnotherPopoverBackdrop = $target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover || $target.hasClass('popover-backdrop') && target !== popover.backdropEl;\n          const isAnotherPopoverTarget = target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n          if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n            popover.close();\n          }\n        }\n      }\n    }\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && popover.params.closeOnEscape) {\n        popover.close();\n      }\n    }\n    if (popover.params.closeOnEscape) {\n      popover.on('popoverOpen', () => {\n        $(document).on('keydown', onKeyDown);\n      });\n      popover.on('popoverClose', () => {\n        $(document).off('keydown', onKeyDown);\n      });\n    }\n    popover.on('popoverOpened', () => {\n      if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n        app.on('touchstart', handleTouchStart);\n        app.on('click', handleClick);\n      }\n    });\n    popover.on('popoverClose', () => {\n      if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n        app.off('touchstart', handleTouchStart);\n        app.off('click', handleClick);\n      }\n    });\n    $el[0].f7Modal = popover;\n    return popover;\n  }\n  resize() {\n    const popover = this;\n    const {\n      app,\n      $el,\n      $targetEl,\n      $arrowEl\n    } = popover;\n    const {\n      targetX,\n      targetY,\n      verticalPosition\n    } = popover.params;\n    $el.css({\n      left: '',\n      top: ''\n    });\n    const [width, height] = [$el.width(), $el.height()];\n    let arrowSize = 0;\n    let arrowLeft;\n    let arrowTop;\n    const hasArrow = $arrowEl.length > 0;\n    const arrowMin = app.theme === 'ios' ? 13 : 24;\n    if (hasArrow) {\n      $arrowEl.removeClass('on-left on-right on-top on-bottom').css({\n        left: '',\n        top: ''\n      });\n      arrowSize = $arrowEl.width() / 2;\n    }\n    $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n      left: '',\n      top: ''\n    });\n    let targetWidth;\n    let targetHeight;\n    let targetOffsetLeft;\n    let targetOffsetTop;\n    let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n    let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n    let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n    if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n    if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n    if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n    if ($targetEl && $targetEl.length > 0) {\n      targetWidth = $targetEl.outerWidth();\n      targetHeight = $targetEl.outerHeight();\n      const targetOffset = $targetEl.offset();\n      targetOffsetLeft = targetOffset.left - app.left;\n      targetOffsetTop = targetOffset.top - app.top;\n      const targetParentPage = $targetEl.parents('.page');\n      if (targetParentPage.length > 0) {\n        targetOffsetTop -= targetParentPage[0].scrollTop;\n      }\n    } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n      targetOffsetLeft = targetX;\n      targetOffsetTop = targetY;\n      targetWidth = popover.params.targetWidth || 0;\n      targetHeight = popover.params.targetHeight || 0;\n    }\n    let [left, top, diff] = [0, 0, 0];\n    // Top Position\n    const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n    let position = forcedPosition || 'top';\n    if (forcedPosition === 'top' || !forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop) {\n      // On top\n      top = targetOffsetTop - height - arrowSize;\n    } else if (forcedPosition === 'bottom' || !forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight) {\n      // On bottom\n      position = 'bottom';\n      top = targetOffsetTop + targetHeight + arrowSize;\n    } else {\n      // On middle\n      position = 'middle';\n      top = targetHeight / 2 + targetOffsetTop - height / 2;\n      diff = top;\n      top = Math.max(5, Math.min(top, app.height - height - 5));\n      diff -= top;\n    }\n\n    // Horizontal Position\n    if (position === 'top' || position === 'bottom') {\n      left = targetWidth / 2 + targetOffsetLeft - width / 2;\n      diff = left;\n      left = Math.max(5, Math.min(left, app.width - width - 5));\n      if (safeAreaLeft) {\n        left = Math.max(left, safeAreaLeft);\n      }\n      if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n        left = app.width - 5 - safeAreaRight - width;\n      }\n      diff -= left;\n      if (hasArrow) {\n        if (position === 'top') {\n          $arrowEl.addClass('on-bottom');\n        }\n        if (position === 'bottom') {\n          $arrowEl.addClass('on-top');\n        }\n        arrowLeft = width / 2 - arrowSize + diff;\n        arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n        $arrowEl.css({\n          left: `${arrowLeft}px`\n        });\n      }\n    } else if (position === 'middle') {\n      left = targetOffsetLeft - width - arrowSize;\n      if (hasArrow) $arrowEl.addClass('on-right');\n      if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n        if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n        if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n        if (left < safeAreaLeft) left = safeAreaLeft;\n        if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n      }\n      if (hasArrow) {\n        arrowTop = height / 2 - arrowSize + diff;\n        arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n        $arrowEl.css({\n          top: `${arrowTop}px`\n        });\n      }\n    }\n\n    // Horizontal Position\n    let hPosition;\n    if (targetOffsetLeft < app.width / 2) {\n      hPosition = 'right';\n    } else {\n      hPosition = 'left';\n    }\n    $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n    // Apply Styles\n    $el.css({\n      top: `${top}px`,\n      left: `${left}px`\n    });\n  }\n}\nexport default Popover;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'popover',\n  params: {\n    popover: {\n      verticalPosition: 'auto',\n      arrow: true,\n      backdrop: true,\n      backdropEl: undefined,\n      backdropUnique: false,\n      closeByBackdropClick: true,\n      closeByOutsideClick: true,\n      closeOnEscape: false,\n      containerEl: null\n    }\n  },\n  static: {\n    Popover\n  },\n  create() {\n    const app = this;\n    app.popover = extend(ModalMethods({\n      app,\n      constructor: Popover,\n      defaultSelector: '.popover.modal-in'\n    }), {\n      open(popoverEl, targetEl, animate) {\n        let $popoverEl = $(popoverEl);\n        if ($popoverEl.length > 1) {\n          // check if same popover in other page\n          const $targetPage = $(targetEl).parents('.page');\n          if ($targetPage.length) {\n            $popoverEl.each(el => {\n              const $el = $(el);\n              if ($el.parents($targetPage)[0] === $targetPage[0]) {\n                $popoverEl = $el;\n              }\n            });\n          }\n        }\n        if ($popoverEl.length > 1) {\n          $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n        }\n        let popover = $popoverEl[0].f7Modal;\n        const data = $popoverEl.dataset();\n        if (!popover) {\n          popover = new Popover(app, Object.assign({\n            el: $popoverEl,\n            targetEl\n          }, data));\n        }\n        return popover.open(targetEl, animate);\n      }\n    });\n  },\n  clicks: {\n    '.popover-open': function openPopover($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.popover.open(data.popover, $clickedEl, data.animate);\n    },\n    '.popover-close': function closePopover($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.popover.close(data.popover, data.animate, $clickedEl);\n    }\n  }\n};", "/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Actions extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, app.params.actions, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const actions = this;\n    const device = getDevice();\n    const window = getWindow();\n    const document = getDocument();\n    actions.params = extendedParams;\n\n    // Buttons\n    let groups;\n    if (actions.params.buttons) {\n      groups = actions.params.buttons;\n      if (!Array.isArray(groups[0])) groups = [groups];\n    }\n    actions.groups = groups;\n\n    // Find Element\n    let $el;\n    if (actions.params.el) {\n      $el = $(actions.params.el).eq(0);\n    } else if (actions.params.content) {\n      $el = $(actions.params.content).filter(node => node.nodeType === 1).eq(0);\n    } else if (actions.params.buttons) {\n      if (actions.params.convertToPopover) {\n        actions.popoverHtml = actions.renderPopover();\n      }\n      actions.actionsHtml = actions.render();\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n      return actions.destroy();\n    }\n\n    // Backdrop\n    let $backdropEl;\n    if (actions.params.backdrop && actions.params.backdropEl) {\n      $backdropEl = $(actions.params.backdropEl);\n    } else if (actions.params.backdrop) {\n      if (actions.params.backdropUnique) {\n        $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n        actions.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = actions.$containerEl.children('.actions-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"actions-backdrop\"></div>');\n        actions.$containerEl.append($backdropEl);\n      }\n    }\n    const originalOpen = actions.open;\n    const originalClose = actions.close;\n    let popover;\n    function buttonOnClick(e) {\n      const $buttonEl = $(this);\n      let buttonIndex;\n      let groupIndex;\n      if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n        buttonIndex = $buttonEl.parents('li').index();\n        groupIndex = $buttonEl.parents('.list').index();\n      } else {\n        buttonIndex = $buttonEl.index();\n        groupIndex = $buttonEl.parents('.actions-group').index();\n      }\n      if (typeof groups !== 'undefined') {\n        const button = groups[groupIndex][buttonIndex];\n        if (button.onClick) button.onClick(actions, e);\n        if (actions.params.onClick) actions.params.onClick(actions, e);\n        if (button.close !== false) actions.close();\n      }\n    }\n    actions.open = function open(animate) {\n      let convertToPopover = false;\n      const {\n        targetEl,\n        targetX,\n        targetY,\n        targetWidth,\n        targetHeight\n      } = actions.params;\n      if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {\n        // Popover\n        if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop) {\n          convertToPopover = true;\n        }\n      }\n      if (convertToPopover && actions.popoverHtml) {\n        popover = app.popover.create({\n          containerEl: actions.params.containerEl,\n          content: actions.popoverHtml,\n          backdrop: actions.params.backdrop,\n          targetEl,\n          targetX,\n          targetY,\n          targetWidth,\n          targetHeight,\n          on: {\n            open() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n              actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n            },\n            opened() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n              actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n            },\n            close() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n              actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n            },\n            closed() {\n              if (!actions.$el) {\n                actions.$el = popover.$el;\n              }\n              actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n              actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n            }\n          }\n        });\n        popover.open(animate);\n        popover.once('popoverOpened', () => {\n          popover.$el.find('.list-button, .item-link').each(buttonEl => {\n            $(buttonEl).on('click', buttonOnClick);\n          });\n        });\n        popover.once('popoverClosed', () => {\n          popover.$el.find('.list-button, .item-link').each(buttonEl => {\n            $(buttonEl).off('click', buttonOnClick);\n          });\n          nextTick(() => {\n            popover.destroy();\n            popover = undefined;\n          });\n        });\n      } else {\n        actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n        actions.$el[0].f7Modal = actions;\n        if (actions.groups) {\n          actions.$el.find('.actions-button').each(buttonEl => {\n            $(buttonEl).on('click', buttonOnClick);\n          });\n          actions.once('actionsClosed', () => {\n            actions.$el.find('.actions-button').each(buttonEl => {\n              $(buttonEl).off('click', buttonOnClick);\n            });\n          });\n        }\n        actions.el = actions.$el[0];\n        originalOpen.call(actions, animate);\n      }\n      return actions;\n    };\n    actions.close = function close(animate) {\n      if (popover) {\n        popover.close(animate);\n      } else {\n        originalClose.call(actions, animate);\n      }\n      return actions;\n    };\n    extend(actions, {\n      app,\n      $el,\n      el: $el ? $el[0] : undefined,\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'actions'\n    });\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n      if (keyboardOpened) return;\n      if ($target.closest(actions.el).length === 0) {\n        if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {\n          actions.close();\n        } else if (actions.params.closeByOutsideClick) {\n          actions.close();\n        }\n      }\n    }\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && actions.params.closeOnEscape) {\n        actions.close();\n      }\n    }\n    if (actions.params.closeOnEscape) {\n      actions.on('open', () => {\n        $(document).on('keydown', onKeyDown);\n      });\n      actions.on('close', () => {\n        $(document).off('keydown', onKeyDown);\n      });\n    }\n    actions.on('opened', () => {\n      if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n        app.on('click', handleClick);\n      }\n    });\n    actions.on('close', () => {\n      if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n        app.off('click', handleClick);\n      }\n    });\n    if ($el) {\n      $el[0].f7Modal = actions;\n    }\n    return actions;\n  }\n  render() {\n    const actions = this;\n    if (actions.params.render) return actions.params.render.call(actions, actions);\n    const {\n      groups\n    } = actions;\n    const cssClass = actions.params.cssClass;\n    return $jsx(\"div\", {\n      class: `actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`\n    }, groups.map(group => $jsx(\"div\", {\n      class: \"actions-group\"\n    }, group.map(button => {\n      const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n      const {\n        color,\n        bg,\n        strong,\n        disabled,\n        label,\n        text,\n        icon\n      } = button;\n      if (color) buttonClasses.push(`color-${color}`);\n      if (bg) buttonClasses.push(`bg-color-${bg}`);\n      if (strong) buttonClasses.push('actions-button-strong');\n      if (disabled) buttonClasses.push('disabled');\n      if (label) {\n        return $jsx(\"div\", {\n          class: buttonClasses.join(' ')\n        }, text);\n      }\n      return $jsx(\"div\", {\n        class: buttonClasses.join(' ')\n      }, icon && $jsx(\"div\", {\n        class: \"actions-button-media\"\n      }, icon), $jsx(\"div\", {\n        class: \"actions-button-text\"\n      }, text));\n    }))));\n  }\n  renderPopover() {\n    const actions = this;\n    if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n    const {\n      groups\n    } = actions;\n    const cssClass = actions.params.cssClass;\n    return $jsx(\"div\", {\n      class: `popover popover-from-actions ${cssClass || ''}`\n    }, $jsx(\"div\", {\n      class: \"popover-inner\"\n    }, groups.map(group => $jsx(\"div\", {\n      class: \"list\"\n    }, $jsx(\"ul\", null, group.map(button => {\n      const itemClasses = [];\n      const {\n        color,\n        bg,\n        strong,\n        disabled,\n        label,\n        text,\n        icon\n      } = button;\n      if (color) itemClasses.push(`color-${color}`);\n      if (bg) itemClasses.push(`bg-color-${bg}`);\n      if (strong) itemClasses.push('popover-from-actions-strong');\n      if (disabled) itemClasses.push('disabled');\n      if (label) {\n        itemClasses.push('popover-from-actions-label');\n        return `<li class=\"${itemClasses.join(' ')}\">${text}</li>`;\n      }\n      if (icon) {\n        itemClasses.push('item-link item-content');\n        return $jsx(\"li\", null, $jsx(\"a\", {\n          class: itemClasses.join(' ')\n        }, $jsx(\"div\", {\n          class: \"item-media\"\n        }, icon), $jsx(\"div\", {\n          class: \"item-inner\"\n        }, $jsx(\"div\", {\n          class: \"item-title\"\n        }, text))));\n      }\n      itemClasses.push('list-button');\n      return $jsx(\"li\", null, $jsx(\"a\", {\n        class: itemClasses.join(' ')\n      }, text));\n    }))))));\n  }\n}\nexport default Actions;", "import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'actions',\n  params: {\n    actions: {\n      convertToPopover: true,\n      forceToPopover: false,\n      backdrop: true,\n      backdropEl: undefined,\n      backdropUnique: false,\n      cssClass: null,\n      closeByBackdropClick: true,\n      closeOnEscape: false,\n      render: null,\n      renderPopover: null,\n      containerEl: null\n    }\n  },\n  static: {\n    Actions\n  },\n  create() {\n    const app = this;\n    app.actions = ModalMethods({\n      app,\n      constructor: Actions,\n      defaultSelector: '.actions-modal.modal-in'\n    });\n  },\n  clicks: {\n    '.actions-open': function openActions($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.actions.open(data.actions, data.animate, $clickedEl);\n    },\n    '.actions-close': function closeActions($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.actions.close(data.actions, data.animate, $clickedEl);\n    }\n  }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Sheet extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, app.params.sheet, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const sheet = this;\n    const window = getWindow();\n    const document = getDocument();\n    const support = getSupport();\n    const device = getDevice();\n    sheet.params = extendedParams;\n    if (typeof sheet.params.backdrop === 'undefined') {\n      sheet.params.backdrop = app.theme !== 'ios';\n    }\n\n    // Find Element\n    let $el;\n    if (!sheet.params.el) {\n      $el = $(sheet.params.content).filter(node => node.nodeType === 1).eq(0);\n    } else {\n      $el = $(sheet.params.el).eq(0);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return sheet.destroy();\n    }\n    let $backdropEl;\n    if (sheet.params.backdrop && sheet.params.backdropEl) {\n      $backdropEl = $(sheet.params.backdropEl);\n    } else if (sheet.params.backdrop) {\n      if (sheet.params.backdropUnique) {\n        $backdropEl = $('<div class=\"sheet-backdrop sheet-backdrop-unique\"></div>');\n        sheet.$containerEl.append($backdropEl);\n      } else {\n        $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"sheet-backdrop\"></div>');\n        sheet.$containerEl.append($backdropEl);\n      }\n    }\n    extend(sheet, {\n      app,\n      push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      type: 'sheet',\n      $htmlEl: $('html')\n    });\n    if (sheet.params.push) {\n      $el.addClass('sheet-modal-push');\n    }\n    let $pageContentEl;\n    function scrollToElementOnOpen() {\n      const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n      if ($scrollEl.length === 0) return;\n      $pageContentEl = $scrollEl.parents('.page-content');\n      if ($pageContentEl.length === 0) return;\n      const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n      const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n      const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n      const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n      const pageScroll = $pageContentEl.scrollTop();\n      let newPaddingBottom;\n      const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n      if (scrollElTop > pageHeight) {\n        const scrollTop = pageScroll + scrollElTop - pageHeight;\n        if (scrollTop + pageHeight > pageScrollHeight) {\n          newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n          if (pageHeight === pageScrollHeight) {\n            newPaddingBottom = $el.height();\n          }\n          $pageContentEl.css({\n            'padding-bottom': `${newPaddingBottom}px`\n          });\n        }\n        $pageContentEl.scrollTop(scrollTop, 300);\n      }\n    }\n    function scrollToElementOnClose() {\n      if ($pageContentEl && $pageContentEl.length > 0) {\n        $pageContentEl.css({\n          'padding-bottom': ''\n        });\n      }\n    }\n    function handleClick(e) {\n      const target = e.target;\n      const $target = $(target);\n      const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n      if (keyboardOpened) return;\n      if ($target.closest(sheet.el).length === 0) {\n        if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {\n          sheet.close();\n        } else if (sheet.params.closeByOutsideClick) {\n          sheet.close();\n        }\n      }\n    }\n    function onKeyDown(e) {\n      const keyCode = e.keyCode;\n      if (keyCode === 27 && sheet.params.closeOnEscape) {\n        sheet.close();\n      }\n    }\n    let pushOffset;\n    function pushViewScale(offset) {\n      return (app.height - offset * 2) / app.height;\n    }\n    const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n    let isTouched = false;\n    let startTouch;\n    let currentTouch;\n    let isScrolling;\n    let touchStartTime;\n    let touchesDiff;\n    let isMoved = false;\n    let isTopSheetModal;\n    let swipeStepTranslate;\n    let startTranslate;\n    let currentTranslate;\n    let sheetElOffsetHeight;\n    let minTranslate;\n    let maxTranslate;\n    let $pushViewEl;\n    let pushBorderRadius;\n    let sheetPageContentEl;\n    let sheetPageContentScrollTop;\n    let sheetPageContentScrollHeight;\n    let sheetPageContentOffsetHeight;\n    let breakpointsTranslate = [];\n    let currentBreakpointIndex;\n    let backdropBreakpointSet = true;\n    function handleTouchStart(e) {\n      if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted) return;\n      if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n        return;\n      }\n      if ($(e.target).closest('.sortable-handler').length > 0) return;\n      isTouched = true;\n      isMoved = false;\n      startTouch = {\n        x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n      };\n      touchStartTime = now();\n      isScrolling = undefined;\n      isTopSheetModal = $el.hasClass('sheet-modal-top');\n      if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n        sheetPageContentEl = $(e.target).closest('.page-content')[0];\n      }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      currentTouch = {\n        x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n        y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n      };\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      touchesDiff = startTouch.y - currentTouch.y;\n      const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n      if (!isMoved) {\n        if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n          sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n          sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n          sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n          if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {\n            $el.transform('');\n            isTouched = false;\n            isMoved = false;\n            return;\n          }\n        }\n        if (sheet.push && pushOffset) {\n          $pushViewEl = app.$el.children('.view, .views');\n        }\n        sheetElOffsetHeight = $el[0].offsetHeight;\n        startTranslate = getTranslate($el[0], 'y');\n        if (isTopSheetModal) {\n          minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n          maxTranslate = 0;\n        } else {\n          minTranslate = 0;\n          maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : useBreakpoints ? breakpointsTranslate[0] : swipeStepTranslate;\n        }\n        isMoved = true;\n      }\n      currentTranslate = startTranslate - touchesDiff;\n      currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n      e.preventDefault();\n      if (useBreakpoints) {\n        let progress = isTopSheetModal ? 1 + currentTranslate / sheetElOffsetHeight : 1 - currentTranslate / sheetElOffsetHeight;\n        progress = Math.abs(progress);\n        progress = Math.min(Math.max(progress, 0), 1);\n        // eslint-disable-next-line\n        setBackdropBreakpoint(progress);\n        // eslint-disable-next-line\n        setPushBreakpoint(progress);\n      }\n      if (sheet.push && pushOffset && !useBreakpoints) {\n        let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n        if (sheet.params.swipeToStep) {\n          if (isTopSheetModal) {\n            progress = currentTranslate / swipeStepTranslate;\n          } else {\n            progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n          }\n        }\n        progress = Math.abs(progress);\n        progress = Math.min(Math.max(progress, 0), 1);\n        const pushProgress = 1 - progress;\n        const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n        $pushViewEl.transition(0).forEach(el => {\n          el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n        });\n        if (sheet.params.swipeToStep) {\n          $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n        }\n      }\n      $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n      if (sheet.params.swipeToStep) {\n        let progress;\n        if (isTopSheetModal) {\n          progress = 1 - currentTranslate / swipeStepTranslate;\n        } else {\n          progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n        }\n        progress = Math.min(Math.max(progress, 0), 1);\n        $el.trigger('sheet:stepprogress', progress);\n        sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n      }\n    }\n    function handleTouchEnd() {\n      isTouched = false;\n      if (!isMoved) {\n        return;\n      }\n      isMoved = false;\n      $el.transform('').transition('');\n      if (sheet.push && pushOffset) {\n        $pushViewEl.transition('');\n        if (!useBreakpoints) {\n          $pushViewEl.transform('');\n          $pushViewEl.css('border-radius', '');\n        }\n      }\n      const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n      const diff = Math.abs(touchesDiff);\n      if (diff === 0 || currentTranslate === startTranslate) return;\n      const timeDiff = new Date().getTime() - touchStartTime;\n      if (!sheet.params.swipeToStep && !useBreakpoints) {\n        if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n          return;\n        }\n        if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {\n          sheet.close();\n        }\n        return;\n      }\n      const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n      const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n      const absCurrentTranslate = Math.abs(currentTranslate);\n      const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n      if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n        // SHORT SWIPES BREAKPOINTS\n        if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n          if (currentBreakpointIndex === params.breakpoints.length - 1) {\n            // open\n            sheet.setBreakpoint(1);\n          } else {\n            // move to next breakpoint\n            currentBreakpointIndex = Math.min(breakpointsTranslate.length - 1, currentBreakpointIndex + 1);\n            sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n          }\n        }\n        if (direction === closeDirection) {\n          if (currentBreakpointIndex === 0) {\n            // close\n            sheet.close();\n          } else {\n            // move to prev breakpoint\n            if (typeof currentBreakpointIndex === 'undefined') {\n              currentBreakpointIndex = params.breakpoints.length - 1;\n            } else {\n              currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n            }\n            sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n          }\n        }\n      } else if (timeDiff < 300 && diff > 10) {\n        // SHORT SWIPES SWIPE STEP\n        if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n          // open step\n          $el.removeClass('modal-in-swipe-step');\n          $el.trigger('sheet:stepprogress', 1);\n          sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n          sheet.emit('local::_swipeStep', false);\n          $el.trigger('sheet:stepopen');\n          sheet.emit('local::stepOpen sheetStepOpen', sheet);\n          if (sheet.push && pushOffset) {\n            sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n            $pushViewEl.css('border-radius', '');\n          }\n        }\n        if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n          // close sheet\n          if (sheet.params.swipeToClose) {\n            sheet.close();\n          } else {\n            // close step\n            $el.addClass('modal-in-swipe-step');\n            $el.trigger('sheet:stepprogress', 0);\n            sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n            sheet.emit('local::_swipeStep', true);\n            $el.trigger('sheet:stepclose');\n            sheet.emit('local::stepClose sheetStepClose', sheet);\n            if (sheet.push && pushOffset) {\n              sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n              $pushViewEl.css('border-radius', '0px');\n            }\n          }\n        }\n        if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n          // close step\n          $el.addClass('modal-in-swipe-step');\n          $el.trigger('sheet:stepprogress', 0);\n          sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n          sheet.emit('local::_swipeStep', true);\n          $el.trigger('sheet:stepclose');\n          sheet.emit('local::stepClose sheetStepClose', sheet);\n          if (sheet.push && pushOffset) {\n            sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n            $pushViewEl.css('border-radius', '0px');\n          }\n        }\n        return;\n      }\n      if (timeDiff >= 300 && useBreakpoints) {\n        // LONG SWIPES BREAKPOINTS\n        const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n        const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n          return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate) ? curr : prev;\n        });\n        const closestIndex = allBreakpoints.indexOf(closestTranslate);\n        if (closestTranslate === 0) {\n          // open\n          sheet.setBreakpoint(1);\n        } else if (closestIndex === 0) {\n          // close\n          sheet.close();\n        } else {\n          // set bp\n          currentBreakpointIndex = closestIndex - 1;\n          sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n        }\n      } else if (timeDiff >= 300) {\n        // LONG SWIPES SWIPE STEP\n        const stepOpened = !$el.hasClass('modal-in-swipe-step');\n        if (!stepOpened) {\n          if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n            // open step\n            $el.removeClass('modal-in-swipe-step');\n            $el.trigger('sheet:stepprogress', 1);\n            sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n            sheet.emit('local::_swipeStep', false);\n            $el.trigger('sheet:stepopen');\n            sheet.emit('local::stepOpen sheetStepOpen', sheet);\n            if (sheet.push && pushOffset) {\n              sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n              $pushViewEl.css('border-radius', '');\n            }\n          } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n            // close sheet\n            if (sheet.params.swipeToClose) sheet.close();\n          }\n        } else if (stepOpened) {\n          if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n            // close sheet\n            if (sheet.params.swipeToClose) sheet.close();\n          } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n            // close step\n            $el.addClass('modal-in-swipe-step');\n            $el.trigger('sheet:stepprogress', 0);\n            sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n            sheet.emit('local::_swipeStep', true);\n            $el.trigger('sheet:stepclose');\n            sheet.emit('local::stepClose sheetStepClose', sheet);\n            if (sheet.push && pushOffset) {\n              sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n              $pushViewEl.css('border-radius', '0px');\n            }\n          }\n        }\n      }\n    }\n    const setPushBreakpoint = breakpoint => {\n      const {\n        pushBreakpoint\n      } = params;\n      if (pushBreakpoint === null || typeof pushBreakpoint === 'undefined' || !sheet.push || !pushOffset) return;\n      if (breakpoint >= pushBreakpoint) {\n        sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n        $pushViewEl.transition('').forEach(el => {\n          el.style.setProperty('transform', `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`, 'important');\n        });\n        $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n      } else {\n        const pushBreakpoints = [0, ...params.breakpoints, 1];\n        const pushTransparentBreakpoint = pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n        if (breakpoint <= pushTransparentBreakpoint) {\n          $pushViewEl.transition('').css('transform', '');\n          $pushViewEl.css('border-radius', '');\n          sheet.$htmlEl.removeClass('with-modal-sheet-push');\n          if (breakpoint === pushTransparentBreakpoint) {\n            sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n          }\n        } else {\n          const progress = (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n          sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n          $pushViewEl.transition(0).forEach(el => {\n            el.style.setProperty('transform', `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`, 'important');\n          });\n          $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n        }\n      }\n    };\n    const setBackdropBreakpoint = breakpoint => {\n      const {\n        backdrop,\n        backdropBreakpoint\n      } = params;\n      if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n      if (breakpoint >= backdropBreakpoint) {\n        if (!backdropBreakpointSet) {\n          $backdropEl.transition('').css({\n            opacity: '',\n            pointerEvents: ''\n          });\n        }\n        backdropBreakpointSet = true;\n      } else {\n        const backdropBreakpoints = [0, ...params.breakpoints, 1];\n        const backdropTransparentBreakpoint = backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n        if (breakpoint <= backdropTransparentBreakpoint) {\n          if (backdropBreakpointSet) {\n            $backdropEl.transition('').css({\n              opacity: 0,\n              pointerEvents: 'none'\n            });\n          }\n          backdropBreakpointSet = false;\n        } else {\n          const progress = (breakpoint - backdropTransparentBreakpoint) / (backdropBreakpoint - backdropTransparentBreakpoint);\n          $backdropEl.transition(0).css({\n            opacity: progress,\n            pointerEvents: 'auto'\n          });\n        }\n      }\n    };\n    sheet.calcBreakpoints = () => {\n      if (!useBreakpoints) {\n        return;\n      }\n      const fullSize = $el[0].offsetHeight;\n      // eslint-disable-next-line\n      const isTopSheetModal = $el.hasClass('sheet-modal-top');\n      breakpointsTranslate = [];\n      sheet.params.breakpoints.forEach(ratio => {\n        breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n      });\n    };\n    sheet.setBreakpoint = value => {\n      if (!useBreakpoints) {\n        return sheet;\n      }\n      if (value === 1) {\n        // open\n        if (!sheet.opened) {\n          sheet.open();\n        }\n        $el.removeClass('modal-in-breakpoint');\n        currentBreakpointIndex = undefined;\n        setBackdropBreakpoint(value);\n        setPushBreakpoint(value);\n        $el.trigger('sheet:breakpoint', value);\n        sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n      } else if (value === 0) {\n        // close\n        $el.trigger('sheet:breakpoint', value);\n        sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n        sheet.close();\n      } else {\n        const index = params.breakpoints.indexOf(value);\n        if (index < 0) return sheet;\n        if (!sheet.opened) {\n          sheet.open();\n        }\n        setBackdropBreakpoint(value);\n        setPushBreakpoint(value);\n        $el.trigger('sheet:breakpoint', value);\n        sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n        currentBreakpointIndex = index;\n        $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n        $el.addClass('modal-in-breakpoint');\n      }\n      return sheet;\n    };\n    const setBreakpointsOnResize = () => {\n      sheet.calcBreakpoints();\n      if (typeof currentBreakpointIndex !== 'undefined') {\n        sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n      }\n    };\n    sheet.setSwipeStep = function setSwipeStep(byResize) {\n      if (byResize === void 0) {\n        byResize = true;\n      }\n      const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n      if (!$swipeStepEl.length) return;\n\n      // eslint-disable-next-line\n      if ($el.hasClass('sheet-modal-top')) {\n        swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n      } else {\n        swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n      }\n      $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n      if (!byResize) {\n        $el.addClass('modal-in-swipe-step');\n        sheet.emit('local::_swipeStep', true);\n      }\n    };\n    function onResize() {\n      if (useBreakpoints) {\n        setBreakpointsOnResize();\n      } else {\n        sheet.setSwipeStep(true);\n      }\n    }\n    const passive = support.passiveListener ? {\n      passive: true\n    } : false;\n    if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      sheet.once('sheetDestroy', () => {\n        $el.off(app.touchEvents.start, handleTouchStart, passive);\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      });\n    }\n    sheet.on('open', () => {\n      if (sheet.params.closeOnEscape) {\n        $(document).on('keydown', onKeyDown);\n      }\n      $el.prevAll('.popup.modal-in').addClass('popup-behind');\n      app.on('resize', onResize);\n      if (sheet.params.scrollToEl) {\n        scrollToElementOnOpen();\n      }\n      if (sheet.push) {\n        pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n        if (Number.isNaN(pushOffset)) pushOffset = 0;\n        if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n        sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n        $el.addClass('sheet-modal-push');\n        if (!useBreakpoints) {\n          sheet.$htmlEl.addClass('with-modal-sheet-push');\n        }\n        if (!sheet.params.swipeToStep && !useBreakpoints) {\n          sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n        } else {\n          $pushViewEl = app.$el.children('.view, .views');\n          pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n          $pushViewEl.css('border-radius', '0px');\n        }\n      }\n      if (useBreakpoints) {\n        sheet.calcBreakpoints();\n        sheet.setBreakpoint(params.breakpoints[0]);\n      } else if (sheet.params.swipeToStep) {\n        sheet.setSwipeStep(false);\n      }\n    });\n    sheet.on('opened', () => {\n      if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n        app.on('click', handleClick);\n      }\n    });\n    sheet.on('close', () => {\n      currentBreakpointIndex = undefined;\n      if (sheet.params.swipeToStep || useBreakpoints) {\n        $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n        sheet.emit('local::_swipeStep', false);\n      }\n      app.off('resize', onResize);\n      if (sheet.params.closeOnEscape) {\n        $(document).off('keydown', onKeyDown);\n      }\n      if (sheet.params.scrollToEl) {\n        scrollToElementOnClose();\n      }\n      if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n        app.off('click', handleClick);\n      }\n      $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n      if (sheet.push && pushOffset) {\n        sheet.$htmlEl.removeClass('with-modal-sheet-push');\n        sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n        if ($pushViewEl) {\n          $pushViewEl.transform('');\n          $pushViewEl.css('border-radius', '');\n        }\n      }\n    });\n    sheet.on('closed', () => {\n      if (sheet.push && pushOffset) {\n        sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n        sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n        sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n      }\n    });\n    sheet.stepOpen = function stepOpen() {\n      $el.removeClass('modal-in-swipe-step');\n      sheet.emit('local::_swipeStep', false);\n      if (sheet.push) {\n        if (!pushOffset) {\n          pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n          if (Number.isNaN(pushOffset)) pushOffset = 0;\n        }\n        if (pushOffset) {\n          sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n        }\n      }\n    };\n    sheet.stepClose = function stepClose() {\n      $el.addClass('modal-in-swipe-step');\n      sheet.emit('local::_swipeStep', true);\n      if (sheet.push) {\n        sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n      }\n    };\n    sheet.stepToggle = function stepToggle() {\n      $el.toggleClass('modal-in-swipe-step');\n      sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n    };\n    $el[0].f7Modal = sheet;\n    return sheet;\n  }\n}\nexport default Sheet;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'sheet',\n  params: {\n    sheet: {\n      push: false,\n      backdrop: undefined,\n      backdropEl: undefined,\n      backdropUnique: false,\n      closeByBackdropClick: true,\n      closeByOutsideClick: false,\n      closeOnEscape: false,\n      swipeToClose: false,\n      swipeToStep: false,\n      breakpoints: [],\n      backdropBreakpoint: 0,\n      pushBreakpoint: 0,\n      swipeHandler: null,\n      containerEl: null\n    }\n  },\n  static: {\n    Sheet\n  },\n  create() {\n    const app = this;\n    app.sheet = extend({}, ModalMethods({\n      app,\n      constructor: Sheet,\n      defaultSelector: '.sheet-modal.modal-in'\n    }), {\n      stepOpen(sheet) {\n        const sheetInstance = app.sheet.get(sheet);\n        if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n        return undefined;\n      },\n      stepClose(sheet) {\n        const sheetInstance = app.sheet.get(sheet);\n        if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n        return undefined;\n      },\n      stepToggle(sheet) {\n        const sheetInstance = app.sheet.get(sheet);\n        if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n        return undefined;\n      },\n      setBreakpoint(sheet, breakpoint) {\n        const sheetInstance = app.sheet.get(sheet);\n        if (sheetInstance && sheetInstance.setBreakpoint) return sheetInstance.setBreakpoint(breakpoint);\n        return undefined;\n      }\n    });\n  },\n  clicks: {\n    '.sheet-open': function openSheet($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n        app.sheet.close('.sheet-modal.modal-in');\n      }\n      app.sheet.open(data.sheet, data.animate, $clickedEl);\n    },\n    '.sheet-close': function closeSheet($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.sheet.close(data.sheet, data.animate, $clickedEl);\n    }\n  }\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Toast extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, app.params.toast, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const toast = this;\n    const window = getWindow();\n    toast.app = app;\n    toast.params = extendedParams;\n    const {\n      closeButton,\n      closeTimeout\n    } = toast.params;\n    let $el;\n    if (!toast.params.el) {\n      // Find Element\n      const toastHtml = toast.render();\n      $el = $(toastHtml);\n    } else {\n      $el = $(toast.params.el);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return toast.destroy();\n    }\n    extend(toast, {\n      $el,\n      el: $el[0],\n      type: 'toast'\n    });\n    $el[0].f7Modal = toast;\n    if (closeButton) {\n      $el.find('.toast-button').on('click', () => {\n        toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n        toast.close();\n      });\n      toast.on('beforeDestroy', () => {\n        $el.find('.toast-button').off('click');\n      });\n    }\n    let timeoutId;\n    toast.on('open', () => {\n      $('.toast.modal-in').each(openedEl => {\n        const toastInstance = app.toast.get(openedEl);\n        if (openedEl !== toast.el && toastInstance) {\n          toastInstance.close();\n        }\n      });\n      if (closeTimeout) {\n        timeoutId = nextTick(() => {\n          toast.close();\n        }, closeTimeout);\n      }\n    });\n    toast.on('close', () => {\n      window.clearTimeout(timeoutId);\n    });\n    if (toast.params.destroyOnClose) {\n      toast.once('closed', () => {\n        setTimeout(() => {\n          toast.destroy();\n        }, 0);\n      });\n    }\n    return toast;\n  }\n  render() {\n    const toast = this;\n    if (toast.params.render) return toast.params.render.call(toast, toast);\n    const {\n      position,\n      horizontalPosition,\n      cssClass,\n      icon,\n      text,\n      closeButton,\n      closeButtonColor,\n      closeButtonText\n    } = toast.params;\n    const horizontalClass = position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n    return $jsx(\"div\", {\n      class: `toast toast-${position} ${horizontalClass} ${cssClass || ''} ${icon ? 'toast-with-icon' : ''}`\n    }, $jsx(\"div\", {\n      class: \"toast-content\"\n    }, icon && $jsx(\"div\", {\n      class: \"toast-icon\"\n    }, icon), $jsx(\"div\", {\n      class: \"toast-text\"\n    }, text), closeButton && !icon && $jsx(\"a\", {\n      class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`\n    }, closeButtonText)));\n  }\n}\nexport default Toast;", "import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'toast',\n  static: {\n    Toast\n  },\n  create() {\n    const app = this;\n    app.toast = extend({}, ModalMethods({\n      app,\n      constructor: Toast,\n      defaultSelector: '.toast.modal-in'\n    }), {\n      // Shortcuts\n      show(params) {\n        extend(params, {\n          destroyOnClose: true\n        });\n        return new Toast(app, params).open();\n      }\n    });\n  },\n  params: {\n    toast: {\n      icon: null,\n      text: null,\n      position: 'bottom',\n      horizontalPosition: 'left',\n      closeButton: false,\n      closeButtonColor: null,\n      closeButtonText: 'Ok',\n      closeTimeout: null,\n      cssClass: null,\n      render: null,\n      containerEl: null\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Preloader = {\n  init(el) {\n    const app = this;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent\n    };\n    const $el = $(el);\n    if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n    $el.append(preloaders[`${app.theme}PreloaderContent`]);\n  },\n  // Modal\n  visible: false,\n  show(color) {\n    if (color === void 0) {\n      color = 'white';\n    }\n    const app = this;\n    if (Preloader.visible) return;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent\n    };\n    const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n    $('html').addClass('with-modal-preloader');\n    // prettier-ignore\n    app.$el.append(`\n      <div class=\"preloader-backdrop\"></div>\n      <div class=\"preloader-modal\">\n        <div class=\"preloader color-${color}\">${preloaderInner}</div>\n      </div>\n    `);\n    Preloader.visible = true;\n  },\n  showIn(el, color) {\n    if (color === void 0) {\n      color = 'white';\n    }\n    const app = this;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent\n    };\n    const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n    $(el || 'html').addClass('with-modal-preloader');\n    // prettier-ignore\n    $(el || app.$el).append(`\n      <div class=\"preloader-backdrop\"></div>\n      <div class=\"preloader-modal\">\n        <div class=\"preloader color-${color}\">${preloaderInner}</div>\n      </div>\n    `);\n  },\n  hide() {\n    const app = this;\n    if (!Preloader.visible) return;\n    $('html').removeClass('with-modal-preloader');\n    app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n    Preloader.visible = false;\n  },\n  hideIn(el) {\n    const app = this;\n    $(el || 'html').removeClass('with-modal-preloader');\n    $(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();\n  }\n};\nexport default {\n  name: 'preloader',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      preloader: Preloader\n    });\n  },\n  on: {\n    photoBrowserOpen(pb) {\n      const app = this;\n      pb.$el.find('.preloader').each(preloaderEl => {\n        app.preloader.init(preloaderEl);\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.preloader').each(preloaderEl => {\n        app.preloader.init(preloaderEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.preloader').each(preloaderEl => {\n        app.preloader.init(preloaderEl);\n      });\n    }\n  },\n  vnode: {\n    preloader: {\n      insert(vnode) {\n        const app = this;\n        const preloaderEl = vnode.elm;\n        app.preloader.init(preloaderEl);\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst Progressbar = {\n  set() {\n    const app = this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    let [el, progress, duration] = args;\n    if (typeof args[0] === 'number') {\n      [progress, duration] = args;\n      el = app.$el;\n    }\n    if (typeof progress === 'undefined' || progress === null) return el;\n    if (!progress) progress = 0;\n    const $el = $(el || app.$el);\n    if ($el.length === 0) {\n      return el;\n    }\n    const progressNormalized = Math.min(Math.max(progress, 0), 100);\n    let $progressbarEl;\n    if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {\n      $progressbarEl = $el.children('.progressbar');\n    }\n    if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n      return $progressbarEl;\n    }\n    let $progressbarLine = $progressbarEl.children('span');\n    if ($progressbarLine.length === 0) {\n      $progressbarLine = $('<span></span>');\n      $progressbarEl.append($progressbarLine);\n    }\n    $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n    return $progressbarEl[0];\n  },\n  show() {\n    const app = this;\n\n    // '.page', 50, 'multi'\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    let [el, progress, color] = args;\n    let type = 'determined';\n    if (args.length === 2) {\n      if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n        // '.page', 'multi'\n        [el, color, progress] = args;\n        type = 'infinite';\n      } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n        // 50, 'multi'\n        [progress, color] = args;\n        el = app.$el;\n      }\n    } else if (args.length === 1) {\n      if (typeof args[0] === 'number') {\n        el = app.$el;\n        progress = args[0];\n      } else if (typeof args[0] === 'string') {\n        type = 'infinite';\n        el = app.$el;\n        color = args[0];\n      }\n    } else if (args.length === 0) {\n      type = 'infinite';\n      el = app.$el;\n    }\n    const $el = $(el);\n    if ($el.length === 0) return undefined;\n    let $progressbarEl;\n    if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n      $progressbarEl = $el;\n    } else {\n      $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n      if ($progressbarEl.length === 0) {\n        $progressbarEl = $(`\n          <span class=\"progressbar${type === 'infinite' ? '-infinite' : ''}${color ? ` color-${color}` : ''} progressbar-in\">\n            ${type === 'infinite' ? '' : '<span></span>'}\n          </span>`);\n        $el.append($progressbarEl);\n      }\n    }\n    if (typeof progress !== 'undefined') {\n      app.progressbar.set($progressbarEl, progress);\n    }\n    return $progressbarEl[0];\n  },\n  hide(el, removeAfterHide) {\n    if (removeAfterHide === void 0) {\n      removeAfterHide = true;\n    }\n    const app = this;\n    const $el = $(el || app.$el);\n    if ($el.length === 0) return undefined;\n    let $progressbarEl;\n    if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n      $progressbarEl = $el;\n    } else {\n      $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n    }\n    if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n      return $progressbarEl;\n    }\n    $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(() => {\n      if (removeAfterHide) {\n        $progressbarEl.remove();\n      }\n    });\n    return $progressbarEl;\n  }\n};\nexport default {\n  name: 'progressbar',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      progressbar: Progressbar\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.progressbar').each(progressbarEl => {\n        const $progressbarEl = $(progressbarEl);\n        app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.progressbar').each(progressbarEl => {\n        const $progressbarEl = $(progressbarEl);\n        app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n      });\n    }\n  },\n  vnode: {\n    progressbar: {\n      insert(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        app.progressbar.set(el, el.getAttribute('data-progress'));\n      },\n      update(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        app.progressbar.set(el, el.getAttribute('data-progress'));\n      }\n    }\n  }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Sortable = {\n  init() {\n    const app = this;\n    const document = getDocument();\n    let isTouched;\n    let isMoved;\n    let touchStartY;\n    let touchesDiff;\n    let $sortingEl;\n    let $sortingItems;\n    let $sortableContainer;\n    let sortingElHeight;\n    let minTop;\n    let maxTop;\n    let $insertAfterEl;\n    let $insertBeforeEl;\n    let indexFrom;\n    let $pageEl;\n    let $pageContentEl;\n    let pageHeight;\n    let pageOffset;\n    let sortingElOffsetLocal;\n    let sortingElOffsetTop;\n    let initialScrollTop;\n    let wasTapHold;\n    function handleTouchStart(e, isTapHold) {\n      isMoved = false;\n      isTouched = true;\n      wasTapHold = false;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      $sortingEl = $(e.target).closest('li').eq(0);\n      indexFrom = $sortingEl.index();\n      $sortableContainer = $sortingEl.parents('.sortable');\n      const $listGroup = $sortingEl.parents('.list-group');\n      if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n        $sortableContainer = $listGroup;\n      }\n      $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n      if (app.panel) app.panel.allowOpen = false;\n      if (app.swipeout) app.swipeout.allow = false;\n      if (isTapHold) {\n        $sortingEl.addClass('sorting');\n        $sortableContainer.addClass('sortable-sorting');\n        wasTapHold = true;\n      }\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !$sortingEl) return;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (!isMoved) {\n        $pageEl = $sortingEl.parents('.page');\n        $pageContentEl = $sortingEl.parents('.page-content');\n        const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n        const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n        initialScrollTop = $pageContentEl[0].scrollTop;\n        pageOffset = $pageEl.offset().top + paddingTop;\n        pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n        $sortingEl.addClass('sorting');\n        $sortableContainer.addClass('sortable-sorting');\n        sortingElOffsetLocal = $sortingEl[0].offsetTop;\n        minTop = $sortingEl[0].offsetTop;\n        maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n        sortingElHeight = $sortingEl[0].offsetHeight;\n        sortingElOffsetTop = $sortingEl.offset().top;\n      }\n      isMoved = true;\n      e.preventDefault();\n      e.f7PreventSwipePanel = true;\n      touchesDiff = pageY - touchStartY;\n      const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n      const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n      $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n      const scrollAddition = 44;\n      let allowScroll = true;\n      if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n        allowScroll = false;\n      }\n      if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n        allowScroll = false;\n      }\n      $insertBeforeEl = undefined;\n      $insertAfterEl = undefined;\n      let scrollDiff;\n      if (allowScroll) {\n        if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n          // To Bottom\n          scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);\n        }\n        if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n          // To Top\n          scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n        }\n        if (scrollDiff) {\n          $pageContentEl[0].scrollTop += scrollDiff;\n        }\n      }\n      $sortingItems.each(el => {\n        const $currentEl = $(el);\n        if ($currentEl[0] === $sortingEl[0]) return;\n        const currentElOffset = $currentEl[0].offsetTop;\n        const currentElHeight = $currentEl.height();\n        const sortingElOffset = sortingElOffsetLocal + translate;\n        let currentTranslate;\n        const prevTranslate = $currentEl[0].f7Translate;\n        if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {\n          currentTranslate = -sortingElHeight;\n          $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n          $insertAfterEl = $currentEl;\n          $insertBeforeEl = undefined;\n        } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {\n          currentTranslate = sortingElHeight;\n          $currentEl[0].f7Translate = currentTranslate;\n          $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n          $insertAfterEl = undefined;\n          if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n        } else {\n          currentTranslate = undefined;\n          $currentEl.transform('translate3d(0, 0%,0)');\n        }\n        if (prevTranslate !== currentTranslate) {\n          $currentEl.trigger('sortable:move');\n          app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n        }\n        $currentEl[0].f7Translate = currentTranslate;\n      });\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        if (isTouched && !isMoved) {\n          if (app.panel) app.panel.allowOpen = true;\n          if (app.swipeout) app.swipeout.allow = true;\n          if (wasTapHold) {\n            $sortingEl.removeClass('sorting');\n            $sortableContainer.removeClass('sortable-sorting');\n          }\n        }\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      if (app.panel) app.panel.allowOpen = true;\n      if (app.swipeout) app.swipeout.allow = true;\n      $sortingItems.transform('');\n      $sortingEl.removeClass('sorting');\n      $sortableContainer.removeClass('sortable-sorting');\n      let indexTo;\n      if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n      let moveElements = $sortableContainer.dataset().sortableMoveElements;\n      if (typeof moveElements === 'undefined') {\n        moveElements = app.params.sortable.moveElements;\n      }\n      if (moveElements) {\n        if ($insertAfterEl) {\n          $sortingEl.insertAfter($insertAfterEl);\n        }\n        if ($insertBeforeEl) {\n          $sortingEl.insertBefore($insertBeforeEl);\n        }\n      }\n      if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n        indexFrom = $sortingEl[0].f7VirtualListIndex;\n        if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n        if ($insertBeforeEl) {\n          indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n          if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n        } else {\n          indexTo = $insertAfterEl[0].f7VirtualListIndex;\n          if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n        }\n        if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;\n        const virtualList = $sortableContainer[0].f7VirtualList;\n        if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n        if (indexTo) indexTo = parseInt(indexTo, 10);\n        if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n      }\n      if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n        $sortingEl.trigger('sortable:sort', {\n          from: indexFrom,\n          to: indexTo\n        });\n        app.emit('sortableSort', $sortingEl[0], {\n          from: indexFrom,\n          to: indexTo,\n          el: $sortingEl[0]\n        }, $sortableContainer[0]);\n      }\n      $insertBeforeEl = undefined;\n      $insertAfterEl = undefined;\n      isTouched = false;\n      isMoved = false;\n    }\n    const activeListener = getSupport().passiveListener ? {\n      passive: false,\n      capture: false\n    } : false;\n    $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n      handleTouchStart(pointerEvent, true);\n    });\n  },\n  enable(el) {\n    if (el === void 0) {\n      el = '.list.sortable';\n    }\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    $el.addClass('sortable-enabled');\n    $el.trigger('sortable:enable');\n    app.emit('sortableEnable', $el[0]);\n  },\n  disable(el) {\n    if (el === void 0) {\n      el = '.list.sortable';\n    }\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    $el.removeClass('sortable-enabled');\n    $el.trigger('sortable:disable');\n    app.emit('sortableDisable', $el[0]);\n  },\n  toggle(el) {\n    if (el === void 0) {\n      el = '.list.sortable';\n    }\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    if ($el.hasClass('sortable-enabled')) {\n      app.sortable.disable($el);\n    } else {\n      app.sortable.enable($el);\n    }\n  }\n};\nexport default {\n  name: 'sortable',\n  params: {\n    sortable: {\n      moveElements: true\n    }\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      sortable: Sortable\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      if (!app.params.sortable) return;\n      app.sortable.init();\n    }\n  },\n  clicks: {\n    '.sortable-enable': function enable($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.sortable.enable(data.sortable);\n    },\n    '.sortable-disable': function disable($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.sortable.disable(data.sortable);\n    },\n    '.sortable-toggle': function toggle($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.sortable.toggle(data.sortable);\n    }\n  }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Swipeout = {\n  init() {\n    const app = this;\n    const document = getDocument();\n    const touchesStart = {};\n    let isTouched;\n    let isMoved;\n    let isScrolling;\n    let touchStartTime;\n    let touchesDiff;\n    let $swipeoutEl;\n    let $swipeoutContent;\n    let $actionsRight;\n    let $actionsLeft;\n    let actionsLeftWidth;\n    let actionsRightWidth;\n    let translate;\n    let opened;\n    let openedActionsSide;\n    let $leftButtons;\n    let $rightButtons;\n    let direction;\n    let $overswipeLeftButton;\n    let $overswipeRightButton;\n    let overswipeLeft;\n    let overswipeRight;\n    function handleTouchStart(e) {\n      if (!app.swipeout.allow) return;\n      isMoved = false;\n      isTouched = true;\n      isScrolling = undefined;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchStartTime = new Date().getTime();\n      $swipeoutEl = $(this);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      if (!isMoved) {\n        if ($('.list.sortable-opened').length > 0) return;\n        $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n        $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n        $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n        actionsLeftWidth = null;\n        actionsRightWidth = null;\n        $leftButtons = null;\n        $rightButtons = null;\n        $overswipeRightButton = null;\n        $overswipeLeftButton = null;\n        if ($actionsLeft.length > 0) {\n          actionsLeftWidth = $actionsLeft.outerWidth();\n          $leftButtons = $actionsLeft.children('a');\n          $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n        }\n        if ($actionsRight.length > 0) {\n          actionsRightWidth = $actionsRight.outerWidth();\n          $rightButtons = $actionsRight.children('a');\n          $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n        }\n        opened = $swipeoutEl.hasClass('swipeout-opened');\n        if (opened) {\n          openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n        }\n        $swipeoutEl.removeClass('swipeout-transitioning');\n        if (!app.params.swipeout.noFollow) {\n          $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n          $swipeoutEl.removeClass('swipeout-opened');\n        }\n      }\n      isMoved = true;\n      if (e.cancelable) {\n        e.preventDefault();\n      }\n      touchesDiff = pageX - touchesStart.x;\n      translate = touchesDiff;\n      if (opened) {\n        if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;\n      }\n      if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {\n        if (!opened) {\n          isTouched = false;\n          isMoved = false;\n          $swipeoutContent.transform('');\n          if ($rightButtons && $rightButtons.length > 0) {\n            $rightButtons.transform('');\n          }\n          if ($leftButtons && $leftButtons.length > 0) {\n            $leftButtons.transform('');\n          }\n          return;\n        }\n        translate = 0;\n      }\n      if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';\n      let buttonOffset;\n      let progress;\n      e.f7PreventSwipePanel = true;\n      if (app.params.swipeout.noFollow) {\n        if (opened) {\n          if (openedActionsSide === 'right' && touchesDiff > 0) {\n            app.swipeout.close($swipeoutEl);\n          }\n          if (openedActionsSide === 'left' && touchesDiff < 0) {\n            app.swipeout.close($swipeoutEl);\n          }\n        } else {\n          if (touchesDiff < 0 && $actionsRight.length > 0) {\n            app.swipeout.open($swipeoutEl, 'right');\n          }\n          if (touchesDiff > 0 && $actionsLeft.length > 0) {\n            app.swipeout.open($swipeoutEl, 'left');\n          }\n        }\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      overswipeLeft = false;\n      overswipeRight = false;\n      if ($actionsRight.length > 0) {\n        // Show right actions\n        let buttonTranslate = translate;\n        progress = buttonTranslate / actionsRightWidth;\n        if (buttonTranslate < -actionsRightWidth) {\n          const ratio = buttonTranslate / -actionsRightWidth;\n          buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n          translate = buttonTranslate;\n          if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n            overswipeRight = true;\n          }\n        }\n        if (direction !== 'to-left') {\n          progress = 0;\n          buttonTranslate = 0;\n        }\n        $rightButtons.each(buttonEl => {\n          const $buttonEl = $(buttonEl);\n          if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n          }\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n            $buttonEl.css({\n              left: `${overswipeRight ? -buttonOffset : 0}px`\n            });\n            if (overswipeRight) {\n              if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeenter');\n                app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n              }\n              $buttonEl.addClass('swipeout-overswipe-active');\n            } else {\n              if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeexit');\n                app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n              }\n              $buttonEl.removeClass('swipeout-overswipe-active');\n            }\n          }\n          $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);\n        });\n      }\n      if ($actionsLeft.length > 0) {\n        // Show left actions\n        let buttonTranslate = translate;\n        progress = buttonTranslate / actionsLeftWidth;\n        if (buttonTranslate > actionsLeftWidth) {\n          const ratio = buttonTranslate / actionsRightWidth;\n          buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n          translate = buttonTranslate;\n          if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n            overswipeLeft = true;\n          }\n        }\n        if (direction !== 'to-right') {\n          buttonTranslate = 0;\n          progress = 0;\n        }\n        $leftButtons.each((buttonEl, index) => {\n          const $buttonEl = $(buttonEl);\n          if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n          }\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n            $buttonEl.css({\n              left: `${overswipeLeft ? buttonOffset : 0}px`\n            });\n            if (overswipeLeft) {\n              if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeenter');\n                app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n              }\n              $buttonEl.addClass('swipeout-overswipe-active');\n            } else {\n              if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n                $swipeoutEl.trigger('swipeout:overswipeexit');\n                app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n              }\n              $buttonEl.removeClass('swipeout-overswipe-active');\n            }\n          }\n          if ($leftButtons.length > 1) {\n            $buttonEl.css('z-index', $leftButtons.length - index);\n          }\n          $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);\n        });\n      }\n      $swipeoutEl.trigger('swipeout', progress);\n      app.emit('swipeout', $swipeoutEl[0], progress);\n      $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      isTouched = false;\n      isMoved = false;\n      const timeDiff = new Date().getTime() - touchStartTime;\n      const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n      const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n      let action;\n      let $buttons;\n      let i;\n      if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {\n        action = 'open';\n      } else {\n        action = 'close';\n      }\n      if (timeDiff < 300) {\n        if (Math.abs(translate) === 0) action = 'close';\n        if (Math.abs(translate) === actionsWidth) action = 'open';\n      }\n      if (action === 'open') {\n        Swipeout.el = $swipeoutEl[0];\n        $swipeoutEl.trigger('swipeout:open');\n        app.emit('swipeoutOpen', $swipeoutEl[0]);\n        $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n        const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n        $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n        $actions.addClass('swipeout-actions-opened');\n        $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n        if ($buttons) {\n          for (i = 0; i < $buttons.length; i += 1) {\n            $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n          }\n        }\n        if (overswipeRight) {\n          $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n        }\n        if (overswipeLeft) {\n          $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n        }\n      } else {\n        $swipeoutEl.trigger('swipeout:close');\n        app.emit('swipeoutClose', $swipeoutEl[0]);\n        Swipeout.el = undefined;\n        $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n        $swipeoutContent.transform('');\n        $actions.removeClass('swipeout-actions-opened');\n      }\n      let buttonOffset;\n      if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n        $leftButtons.each(buttonEl => {\n          const $buttonEl = $(buttonEl);\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (typeof buttonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n          }\n          $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n        });\n      }\n      if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n        $rightButtons.each(buttonEl => {\n          const $buttonEl = $(buttonEl);\n          buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n          if (typeof buttonOffset === 'undefined') {\n            $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n          }\n          $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n        });\n      }\n      $swipeoutContent.transitionEnd(() => {\n        if (opened && action === 'open' || !opened && action === 'close') return;\n        $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n        app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n        $swipeoutEl.removeClass('swipeout-transitioning');\n        if (opened && action === 'close') {\n          if ($actionsRight.length > 0) {\n            $rightButtons.transform('');\n          }\n          if ($actionsLeft.length > 0) {\n            $leftButtons.transform('');\n          }\n        }\n      });\n    }\n    const passiveListener = getSupport().passiveListener ? {\n      passive: true\n    } : false;\n    app.on('touchstart', e => {\n      if (Swipeout.el) {\n        const $targetEl = $(e.target);\n        if (!($(Swipeout.el).is($targetEl[0]) || $targetEl.parents('.swipeout').is(Swipeout.el) || $targetEl.hasClass('modal-in') || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 || $targetEl.hasClass('actions-modal') || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0)) {\n          app.swipeout.close(Swipeout.el);\n        }\n      }\n    });\n    $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n  },\n  allow: true,\n  el: undefined,\n  open() {\n    const app = this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    let [el, side, callback] = args;\n    if (typeof args[1] === 'function') {\n      [el, callback, side] = args;\n    }\n    const $el = $(el).eq(0);\n    if ($el.length === 0) return;\n    if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n    if (!side) {\n      if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';\n    }\n    const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n    const $swipeoutContent = $el.find('.swipeout-content');\n    if ($swipeoutActions.length === 0) return;\n    $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n    app.emit('swipeoutOpen', $el[0]);\n    $swipeoutActions.addClass('swipeout-actions-opened');\n    const $buttons = $swipeoutActions.children('a');\n    const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n    const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n    if ($buttons.length > 1) {\n      $buttons.each((buttonEl, buttonIndex) => {\n        const $buttonEl = $(buttonEl);\n        if (side === 'right') {\n          $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n        } else {\n          $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n        }\n      });\n    }\n    $el.addClass('swipeout-transitioning');\n    $swipeoutContent.transitionEnd(() => {\n      $el.trigger('swipeout:opened');\n      app.emit('swipeoutOpened', $el[0]);\n      if (callback) callback.call($el[0]);\n    });\n    nextFrame(() => {\n      $buttons.transform(`translate3d(${translate}px,0,0)`);\n      $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n    });\n    Swipeout.el = $el[0];\n  },\n  close(el, callback) {\n    const app = this;\n    const $el = $(el).eq(0);\n    if ($el.length === 0) return;\n    if (!$el.hasClass('swipeout-opened')) return;\n    const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n    const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n    const $buttons = $swipeoutActions.children('a');\n    const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n    app.swipeout.allow = false;\n    $el.trigger('swipeout:close');\n    app.emit('swipeoutClose', $el[0]);\n    $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n    let closeTimeout;\n    function onSwipeoutClose() {\n      app.swipeout.allow = true;\n      if ($el.hasClass('swipeout-opened')) return;\n      $el.removeClass('swipeout-transitioning');\n      $buttons.transform('');\n      $el.trigger('swipeout:closed');\n      app.emit('swipeoutClosed', $el[0]);\n      if (callback) callback.call($el[0]);\n      if (closeTimeout) clearTimeout(closeTimeout);\n    }\n    $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n    closeTimeout = setTimeout(onSwipeoutClose, 500);\n    $buttons.each(buttonEl => {\n      const $buttonEl = $(buttonEl);\n      if (side === 'right') {\n        $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n      } else {\n        $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n      }\n      $buttonEl.css({\n        left: '0px'\n      }).removeClass('swipeout-overswipe-active');\n    });\n    if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n  },\n  delete(el, callback) {\n    const app = this;\n    const $el = $(el).eq(0);\n    if ($el.length === 0) return;\n    Swipeout.el = undefined;\n    $el.trigger('swipeout:delete');\n    app.emit('swipeoutDelete', $el[0]);\n    $el.css({\n      height: `${$el.outerHeight()}px`\n    });\n    $el.transitionEnd(() => {\n      $el.trigger('swipeout:deleted');\n      app.emit('swipeoutDeleted', $el[0]);\n      if (callback) callback.call($el[0]);\n      if ($el.parents('.virtual-list').length > 0) {\n        const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n        const virtualIndex = $el[0].f7VirtualListIndex;\n        if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n      } else if (app.params.swipeout.removeElements) {\n        if (app.params.swipeout.removeElementsWithTimeout) {\n          setTimeout(() => {\n            $el.remove();\n          }, app.params.swipeout.removeElementsTimeout);\n        } else {\n          $el.remove();\n        }\n      } else {\n        $el.removeClass('swipeout-deleting swipeout-transitioning');\n      }\n    });\n    // eslint-disable-next-line\n    // $el[0]._clientLeft = $el[0].clientLeft;\n    nextFrame(() => {\n      $el.addClass('swipeout-deleting swipeout-transitioning').css({\n        height: '0px'\n      }).find('.swipeout-content').transform('translate3d(-100%,0,0)');\n    });\n  }\n};\nexport default {\n  name: 'swipeout',\n  params: {\n    swipeout: {\n      actionsNoFold: false,\n      noFollow: false,\n      removeElements: true,\n      removeElementsWithTimeout: false,\n      removeElementsTimeout: 0,\n      overswipeRatio: 1.2\n    }\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      swipeout: Swipeout\n    });\n  },\n  clicks: {\n    '.swipeout-open': function openSwipeout($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.swipeout.open(data.swipeout, data.side);\n    },\n    '.swipeout-close': function closeSwipeout($clickedEl) {\n      const app = this;\n      const $swipeoutEl = $clickedEl.closest('.swipeout');\n      if ($swipeoutEl.length === 0) return;\n      app.swipeout.close($swipeoutEl);\n    },\n    '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      const $swipeoutEl = $clickedEl.closest('.swipeout');\n      if ($swipeoutEl.length === 0) return;\n      const {\n        confirm,\n        confirmTitle\n      } = data;\n      if (data.confirm) {\n        app.dialog.confirm(confirm, confirmTitle, () => {\n          app.swipeout.delete($swipeoutEl);\n        });\n      } else {\n        app.swipeout.delete($swipeoutEl);\n      }\n    }\n  },\n  on: {\n    init() {\n      const app = this;\n      if (!app.params.swipeout) return;\n      app.swipeout.init();\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Accordion = {\n  toggleClicked($clickedEl) {\n    const app = this;\n    let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n    if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n    const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n    if ($accordionContent.length) {\n      if ($accordionContent.parents($accordionItemEl).length) return;\n    }\n    if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n    app.accordion.toggle($accordionItemEl);\n  },\n  open(el) {\n    const app = this;\n    const $el = $(el);\n    let prevented = false;\n    function prevent() {\n      prevented = true;\n    }\n    $el.trigger('accordion:beforeopen', {\n      prevent\n    }, prevent);\n    app.emit('accordionBeforeOpen', $el[0], prevent);\n    if (prevented) return;\n    const $list = $el.parents('.accordion-list').eq(0);\n    let $contentEl = $el.children('.accordion-item-content');\n    $contentEl.removeAttr('aria-hidden');\n    if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n    if ($contentEl.length === 0) return;\n    const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n    if ($openedItem.length > 0) {\n      app.accordion.close($openedItem);\n    }\n    $contentEl.transitionEnd(() => {\n      if ($el.hasClass('accordion-item-opened')) {\n        $contentEl.transition(0);\n        $contentEl.css('height', 'auto');\n        nextFrame(() => {\n          $contentEl.transition('');\n          $el.trigger('accordion:opened');\n          app.emit('accordionOpened', $el[0]);\n        });\n      } else {\n        $contentEl.css('height', '');\n        $el.trigger('accordion:closed');\n        app.emit('accordionClosed', $el[0]);\n      }\n    });\n    $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n    $el.trigger('accordion:open');\n    $el.addClass('accordion-item-opened');\n    app.emit('accordionOpen', $el[0]);\n  },\n  close(el) {\n    const app = this;\n    const $el = $(el);\n    let prevented = false;\n    function prevent() {\n      prevented = true;\n    }\n    $el.trigger('accordion:beforeclose', {\n      prevent\n    }, prevent);\n    app.emit('accordionBeforeClose', $el[0], prevent);\n    if (prevented) return;\n    let $contentEl = $el.children('.accordion-item-content');\n    if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n    $el.removeClass('accordion-item-opened');\n    $contentEl.attr('aria-hidden', true);\n    $contentEl.transition(0);\n    $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n    // Close\n    $contentEl.transitionEnd(() => {\n      if ($el.hasClass('accordion-item-opened')) {\n        $contentEl.transition(0);\n        $contentEl.css('height', 'auto');\n        nextFrame(() => {\n          $contentEl.transition('');\n          $el.trigger('accordion:opened');\n          app.emit('accordionOpened', $el[0]);\n        });\n      } else {\n        $contentEl.css('height', '');\n        $el.trigger('accordion:closed');\n        app.emit('accordionClosed', $el[0]);\n      }\n    });\n    nextFrame(() => {\n      $contentEl.transition('');\n      $contentEl.css('height', '');\n      $el.trigger('accordion:close');\n      app.emit('accordionClose', $el[0]);\n    });\n  },\n  toggle(el) {\n    const app = this;\n    const $el = $(el);\n    if ($el.length === 0) return;\n    if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);\n  }\n};\nexport default {\n  name: 'accordion',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      accordion: Accordion\n    });\n  },\n  clicks: {\n    '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n      const app = this;\n      Accordion.toggleClicked.call(app, $clickedEl);\n    }\n  }\n};", "export default {\n  name: 'contactsList'\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass VirtualList extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const vl = this;\n    const device = getDevice();\n    const document = getDocument();\n    let defaultHeight;\n    if (app.theme === 'md') {\n      defaultHeight = 48;\n    } else if (app.theme === 'ios') {\n      defaultHeight = 44;\n    }\n    const defaults = {\n      cols: 1,\n      height: defaultHeight,\n      cache: true,\n      dynamicHeightBufferSize: 1,\n      showFilteredItemsOnly: false,\n      renderExternal: undefined,\n      setListHeight: true,\n      searchByItem: undefined,\n      searchAll: undefined,\n      ul: null,\n      createUl: true,\n      scrollableParentEl: undefined,\n      renderItem(item) {\n        return `\n          <li>\n            <div class=\"item-content\">\n              <div class=\"item-inner\">\n                <div class=\"item-title\">${item}</div>\n              </div>\n            </div>\n          </li>\n        `.trim();\n      },\n      on: {}\n    };\n\n    // Extend defaults with modules params\n    vl.useModulesParams(defaults);\n    vl.params = extend(defaults, params);\n    if (vl.params.height === undefined || !vl.params.height) {\n      vl.params.height = defaultHeight;\n    }\n    vl.$el = $(params.el);\n    vl.el = vl.$el[0];\n    if (vl.$el.length === 0) return undefined;\n    vl.$el[0].f7VirtualList = vl;\n    vl.items = vl.params.items;\n    if (vl.params.showFilteredItemsOnly) {\n      vl.filteredItems = [];\n    }\n    if (vl.params.renderItem) {\n      vl.renderItem = vl.params.renderItem;\n    }\n    vl.$pageContentEl = vl.$el.parents('.page-content');\n    vl.pageContentEl = vl.$pageContentEl[0];\n    vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n    if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n      vl.$scrollableParentEl = vl.$pageContentEl;\n    }\n    vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n    // Bad scroll\n    if (typeof vl.params.updatableScroll !== 'undefined') {\n      vl.updatableScroll = vl.params.updatableScroll;\n    } else {\n      vl.updatableScroll = true;\n      if (device.ios && device.osVersion.split('.')[0] < 8) {\n        vl.updatableScroll = false;\n      }\n    }\n\n    // Append <ul>\n    const ul = vl.params.ul;\n    vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n    if (vl.$ul.length === 0 && vl.params.createUl) {\n      vl.$el.append('<ul></ul>');\n      vl.$ul = vl.$el.children('ul');\n    }\n    vl.ul = vl.$ul[0];\n    let $itemsWrapEl;\n    if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;\n    extend(vl, {\n      $itemsWrapEl,\n      itemsWrapEl: $itemsWrapEl[0],\n      // DOM cached items\n      domCache: {},\n      // Temporary DOM Element\n      tempDomElement: document.createElement('ul'),\n      // Last repain position\n      lastRepaintY: null,\n      // Fragment\n      fragment: document.createDocumentFragment(),\n      // Props\n      pageHeight: undefined,\n      rowsPerScreen: undefined,\n      rowsBefore: undefined,\n      rowsAfter: undefined,\n      rowsToRender: undefined,\n      maxBufferHeight: 0,\n      listHeight: undefined,\n      dynamicHeight: typeof vl.params.height === 'function',\n      autoHeight: vl.params.height === 'auto'\n    });\n\n    // Install Modules\n    vl.useModules();\n\n    // Attach events\n    const handleScrollBound = vl.handleScroll.bind(vl);\n    const handleResizeBound = vl.handleResize.bind(vl);\n    let $pageEl;\n    let $tabEl;\n    let $panelEl;\n    let $popupEl;\n    vl.attachEvents = function attachEvents() {\n      $pageEl = vl.$el.parents('.page').eq(0);\n      $tabEl = vl.$el.parents('.tab').filter(tabEl => {\n        return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n      }).eq(0);\n      $panelEl = vl.$el.parents('.panel').eq(0);\n      $popupEl = vl.$el.parents('.popup').eq(0);\n      vl.$scrollableParentEl.on('scroll', handleScrollBound);\n      if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n      if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n      if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n      if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n      app.on('resize', handleResizeBound);\n    };\n    vl.detachEvents = function attachEvents() {\n      vl.$scrollableParentEl.off('scroll', handleScrollBound);\n      if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n      if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n      if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n      if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n      app.off('resize', handleResizeBound);\n    };\n    // Init\n    vl.init();\n    return vl;\n  }\n  setListSize(autoHeightRerender) {\n    const vl = this;\n    const items = vl.filteredItems || vl.items;\n    if (!autoHeightRerender) {\n      vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n    }\n    if (vl.dynamicHeight) {\n      vl.listHeight = 0;\n      vl.heights = [];\n      for (let i = 0; i < items.length; i += 1) {\n        const itemHeight = vl.params.height(items[i]);\n        vl.listHeight += itemHeight;\n        vl.heights.push(itemHeight);\n      }\n    } else if (vl.autoHeight) {\n      vl.listHeight = 0;\n      if (!vl.heights) vl.heights = [];\n      if (!vl.heightsCalculated) vl.heightsCalculated = [];\n      const renderedItems = {};\n      vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach(el => {\n        renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n      });\n      for (let i = 0; i < items.length; i += 1) {\n        const itemIndex = vl.items.indexOf(items[i]);\n        const renderedItem = renderedItems[itemIndex];\n        if (renderedItem) {\n          if (!vl.heightsCalculated.includes(itemIndex)) {\n            vl.heights[itemIndex] = renderedItem.offsetHeight;\n            vl.heightsCalculated.push(itemIndex);\n          }\n        }\n        if (typeof vl.heights[i] === 'undefined') {\n          vl.heights[itemIndex] = 40;\n        }\n        vl.listHeight += vl.heights[itemIndex];\n      }\n    } else {\n      vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n      vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n      vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n      vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n      vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n      vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;\n    }\n    if (vl.updatableScroll || vl.params.setListHeight) {\n      vl.$itemsWrapEl.css({\n        height: `${vl.listHeight}px`\n      });\n    }\n  }\n  render(force, forceScrollTop) {\n    const vl = this;\n    if (force) vl.lastRepaintY = null;\n    let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n    if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n    if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {\n      vl.lastRepaintY = scrollTop;\n    } else {\n      return;\n    }\n    const items = vl.filteredItems || vl.items;\n    let fromIndex;\n    let toIndex;\n    let heightBeforeFirstItem = 0;\n    let heightBeforeLastItem = 0;\n    if (vl.dynamicHeight || vl.autoHeight) {\n      let itemTop = 0;\n      let itemHeight;\n      vl.maxBufferHeight = vl.pageHeight;\n      for (let j = 0; j < vl.heights.length; j += 1) {\n        itemHeight = vl.heights[j];\n        if (typeof fromIndex === 'undefined') {\n          if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;\n        }\n        if (typeof toIndex === 'undefined') {\n          if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;\n          heightBeforeLastItem += itemHeight;\n        }\n        itemTop += itemHeight;\n      }\n      toIndex = Math.min(toIndex, items.length);\n    } else {\n      fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n      if (fromIndex < 0) {\n        fromIndex = 0;\n      }\n      toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n    }\n    let topPosition;\n    const renderExternalItems = [];\n    vl.reachEnd = false;\n    let i;\n    for (i = fromIndex; i < toIndex; i += 1) {\n      let itemEl;\n      // Define real item index\n      const index = vl.items.indexOf(items[i]);\n      if (i === fromIndex) vl.currentFromIndex = index;\n      if (i === toIndex - 1) vl.currentToIndex = index;\n      if (vl.filteredItems) {\n        if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n      } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n      // Find items\n      if (vl.params.renderExternal) {\n        renderExternalItems.push(items[i]);\n      } else if (vl.domCache[index]) {\n        itemEl = vl.domCache[index];\n        itemEl.f7VirtualListIndex = index;\n      } else {\n        if (vl.renderItem) {\n          vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n        } else {\n          vl.tempDomElement.innerHTML = items[i].toString().trim();\n        }\n        itemEl = vl.tempDomElement.childNodes[0];\n        if (vl.params.cache) vl.domCache[index] = itemEl;\n        itemEl.f7VirtualListIndex = index;\n      }\n\n      // Set item top position\n      if (i === fromIndex) {\n        if (vl.dynamicHeight || vl.autoHeight) {\n          topPosition = heightBeforeFirstItem;\n        } else {\n          topPosition = i * vl.params.height / vl.params.cols;\n        }\n      }\n      if (!vl.params.renderExternal) {\n        itemEl.style.top = `${topPosition}px`;\n\n        // Before item insert\n        vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n        // Append item to fragment\n        vl.fragment.appendChild(itemEl);\n      }\n    }\n\n    // Update list height with not updatable scroll\n    if (!vl.updatableScroll) {\n      if (vl.dynamicHeight || vl.autoHeight) {\n        vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n      } else {\n        vl.itemsWrapEl.style.height = `${i * vl.params.height / vl.params.cols}px`;\n      }\n    }\n\n    // Update list html\n    if (vl.params.renderExternal) {\n      if (items && items.length === 0) {\n        vl.reachEnd = true;\n      }\n    } else {\n      vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n      vl.itemsWrapEl.innerHTML = '';\n      vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n      if (items && items.length === 0) {\n        vl.reachEnd = true;\n        if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n      } else {\n        vl.itemsWrapEl.appendChild(vl.fragment);\n      }\n      vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n    }\n    if (typeof forceScrollTop !== 'undefined' && force) {\n      vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n    }\n    if (vl.params.renderExternal) {\n      vl.params.renderExternal(vl, {\n        fromIndex,\n        toIndex,\n        listHeight: vl.listHeight,\n        topPosition,\n        items: renderExternalItems\n      });\n    }\n    if (vl.autoHeight) {\n      requestAnimationFrame(() => {\n        vl.setListSize(true);\n      });\n    }\n  }\n\n  // Filter\n  filterItems(indexes, resetScrollTop) {\n    if (resetScrollTop === void 0) {\n      resetScrollTop = true;\n    }\n    const vl = this;\n    vl.filteredItems = [];\n    for (let i = 0; i < indexes.length; i += 1) {\n      vl.filteredItems.push(vl.items[indexes[i]]);\n    }\n    if (resetScrollTop) {\n      vl.$scrollableParentEl[0].scrollTop = 0;\n    }\n    vl.update();\n  }\n  resetFilter() {\n    const vl = this;\n    if (vl.params.showFilteredItemsOnly) {\n      vl.filteredItems = [];\n    } else {\n      vl.filteredItems = null;\n      delete vl.filteredItems;\n    }\n    vl.update();\n  }\n  scrollToItem(index) {\n    const vl = this;\n    if (index > vl.items.length) return false;\n    let itemTop = 0;\n    if (vl.dynamicHeight || vl.autoHeight) {\n      for (let i = 0; i < index; i += 1) {\n        itemTop += vl.heights[i];\n      }\n    } else {\n      itemTop = index * vl.params.height;\n    }\n    const listTop = vl.$el[0].offsetTop;\n    vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n    return true;\n  }\n  handleScroll() {\n    const vl = this;\n    vl.render();\n  }\n\n  // Handle resize event\n  isVisible() {\n    const vl = this;\n    return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n  }\n  handleResize() {\n    const vl = this;\n    if (vl.isVisible()) {\n      vl.heightsCalculated = [];\n      vl.setListSize();\n      vl.render(true);\n    }\n  }\n\n  // Append\n  appendItems(items) {\n    const vl = this;\n    for (let i = 0; i < items.length; i += 1) {\n      vl.items.push(items[i]);\n    }\n    vl.update();\n  }\n  appendItem(item) {\n    const vl = this;\n    vl.appendItems([item]);\n  }\n\n  // Replace\n  replaceAllItems(items) {\n    const vl = this;\n    vl.items = items;\n    delete vl.filteredItems;\n    vl.domCache = {};\n    vl.update();\n  }\n  replaceItem(index, item) {\n    const vl = this;\n    vl.items[index] = item;\n    if (vl.params.cache) delete vl.domCache[index];\n    vl.update();\n  }\n\n  // Prepend\n  prependItems(items) {\n    const vl = this;\n    for (let i = items.length - 1; i >= 0; i -= 1) {\n      vl.items.unshift(items[i]);\n    }\n    if (vl.params.cache) {\n      const newCache = {};\n      Object.keys(vl.domCache).forEach(cached => {\n        newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  }\n  prependItem(item) {\n    const vl = this;\n    vl.prependItems([item]);\n  }\n\n  // Move\n  moveItem(from, to) {\n    const vl = this;\n    const fromIndex = from;\n    let toIndex = to;\n    if (fromIndex === toIndex) return;\n    // remove item from array\n    const item = vl.items.splice(fromIndex, 1)[0];\n    if (toIndex >= vl.items.length) {\n      // Add item to the end\n      vl.items.push(item);\n      toIndex = vl.items.length - 1;\n    } else {\n      // Add item to new index\n      vl.items.splice(toIndex, 0, item);\n    }\n    // Update cache\n    if (vl.params.cache) {\n      const newCache = {};\n      Object.keys(vl.domCache).forEach(cached => {\n        const cachedIndex = parseInt(cached, 10);\n        const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n        const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n        const indexShift = fromIndex < toIndex ? -1 : 1;\n        if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n        if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n        if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  }\n\n  // Insert before\n  insertItemBefore(index, item) {\n    const vl = this;\n    if (index === 0) {\n      vl.prependItem(item);\n      return;\n    }\n    if (index >= vl.items.length) {\n      vl.appendItem(item);\n      return;\n    }\n    vl.items.splice(index, 0, item);\n    // Update cache\n    if (vl.params.cache) {\n      const newCache = {};\n      Object.keys(vl.domCache).forEach(cached => {\n        const cachedIndex = parseInt(cached, 10);\n        if (cachedIndex >= index) {\n          newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n        }\n      });\n      vl.domCache = newCache;\n    }\n    vl.update();\n  }\n\n  // Delete\n  deleteItems(indexes) {\n    const vl = this;\n    let prevIndex;\n    let indexShift = 0;\n    for (let i = 0; i < indexes.length; i += 1) {\n      let index = indexes[i];\n      if (typeof prevIndex !== 'undefined') {\n        if (index > prevIndex) {\n          indexShift = -i;\n        }\n      }\n      index += indexShift;\n      prevIndex = indexes[i];\n      // Delete item\n      const deletedItem = vl.items.splice(index, 1)[0];\n\n      // Delete from filtered\n      if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n        vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n      }\n      // Update cache\n      if (vl.params.cache) {\n        const newCache = {};\n        Object.keys(vl.domCache).forEach(cached => {\n          const cachedIndex = parseInt(cached, 10);\n          if (cachedIndex === index) {\n            delete vl.domCache[index];\n          } else if (parseInt(cached, 10) > index) {\n            newCache[cachedIndex - 1] = vl.domCache[cached];\n          } else {\n            newCache[cachedIndex] = vl.domCache[cached];\n          }\n        });\n        vl.domCache = newCache;\n      }\n    }\n    vl.update();\n  }\n  deleteAllItems() {\n    const vl = this;\n    vl.items = [];\n    delete vl.filteredItems;\n    if (vl.params.cache) vl.domCache = {};\n    vl.update();\n  }\n  deleteItem(index) {\n    const vl = this;\n    vl.deleteItems([index]);\n  }\n\n  // Clear cache\n  clearCache() {\n    const vl = this;\n    vl.domCache = {};\n  }\n\n  // Update Virtual List\n  update(deleteCache) {\n    const vl = this;\n    if (deleteCache && vl.params.cache) {\n      vl.domCache = {};\n    }\n    vl.heightsCalculated = [];\n    vl.setListSize();\n    vl.render(true);\n  }\n  init() {\n    const vl = this;\n    vl.attachEvents();\n    vl.setListSize();\n    vl.render();\n  }\n  destroy() {\n    let vl = this;\n    vl.detachEvents();\n    vl.$el[0].f7VirtualList = null;\n    delete vl.$el[0].f7VirtualList;\n    deleteProps(vl);\n    vl = null;\n  }\n}\nexport default VirtualList;", "import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'virtualList',\n  static: {\n    VirtualList\n  },\n  create() {\n    const app = this;\n    app.virtualList = ConstructorMethods({\n      defaultSelector: '.virtual-list',\n      constructor: VirtualList,\n      app,\n      domProp: 'f7VirtualList'\n    });\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass ListIndex extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const index = this;\n    const defaults = {\n      el: null,\n      // where to render indexes\n      listEl: null,\n      // list el to generate indexes\n      indexes: 'auto',\n      // or array of indexes\n      iosItemHeight: 14,\n      mdItemHeight: 14,\n      scrollList: true,\n      label: false,\n      // eslint-disable-next-line\n      renderItem(itemContent, itemIndex) {\n        return `\n          <li>${itemContent}</li>\n        `.trim();\n      },\n      renderSkipPlaceholder() {\n        return '<li class=\"list-index-skip-placeholder\"></li>';\n      },\n      on: {}\n    };\n\n    // Extend defaults with modules params\n    index.useModulesParams(defaults);\n    index.params = extend(defaults, params);\n    let $el;\n    let $listEl;\n    let $pageContentEl;\n    let $ul;\n    if (index.params.el) {\n      $el = $(index.params.el);\n    } else {\n      return index;\n    }\n    if ($el[0].f7ListIndex) {\n      return $el[0].f7ListIndex;\n    }\n    $ul = $el.find('ul');\n    if ($ul.length === 0) {\n      $ul = $('<ul></ul>');\n      $el.append($ul);\n    }\n    if (index.params.listEl) {\n      $listEl = $(index.params.listEl);\n    }\n    if (index.params.indexes === 'auto' && !$listEl) {\n      return index;\n    }\n    if ($listEl) {\n      $pageContentEl = $listEl.parents('.page-content').eq(0);\n    } else {\n      $pageContentEl = $el.siblings('.page-content').eq(0);\n      if ($pageContentEl.length === 0) {\n        $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n      }\n    }\n    $el[0].f7ListIndex = index;\n    extend(index, {\n      app,\n      $el,\n      el: $el && $el[0],\n      $ul,\n      ul: $ul && $ul[0],\n      $listEl,\n      listEl: $listEl && $listEl[0],\n      $pageContentEl,\n      pageContentEl: $pageContentEl && $pageContentEl[0],\n      indexes: params.indexes,\n      height: 0,\n      skipRate: 0\n    });\n\n    // Install Modules\n    index.useModules();\n\n    // Attach events\n    function handleResize() {\n      const height = {\n        index\n      };\n      index.calcSize();\n      if (height !== index.height) {\n        index.render();\n      }\n    }\n    function handleClick(e) {\n      const $clickedLi = $(e.target).closest('li');\n      if (!$clickedLi.length) return;\n      let itemIndex = $clickedLi.index();\n      if (index.skipRate > 0) {\n        const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n        itemIndex = Math.round((index.indexes.length - 1) * percentage);\n      }\n      const itemContent = index.indexes[itemIndex];\n      index.$el.trigger('listindex:click', {\n        content: itemContent,\n        index: itemIndex\n      });\n      index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n      index.$el.trigger('listindex:select', {\n        content: itemContent,\n        index: itemIndex\n      });\n      index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n      if (index.$listEl && index.params.scrollList) {\n        index.scrollListToIndex(itemContent, itemIndex);\n      }\n    }\n    const touchesStart = {};\n    let isTouched;\n    let isMoved;\n    let topPoint;\n    let bottomPoint;\n    let $labelEl;\n    let previousIndex = null;\n    function handleTouchStart(e) {\n      const $children = $ul.children();\n      if (!$children.length) return;\n      topPoint = $children[0].getBoundingClientRect().top;\n      bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      isTouched = true;\n      isMoved = false;\n      previousIndex = null;\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      if (!isMoved && index.params.label) {\n        $labelEl = $('<span class=\"list-index-label\"></span>');\n        $el.append($labelEl);\n      }\n      isMoved = true;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n      percentage = Math.min(Math.max(percentage, 0), 1);\n      const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n      const itemContent = index.indexes[itemIndex];\n      const ulHeight = bottomPoint - topPoint;\n      const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n      if (itemIndex !== previousIndex) {\n        if (index.params.label) {\n          $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n        }\n        if (index.$listEl && index.params.scrollList) {\n          index.scrollListToIndex(itemContent, itemIndex);\n        }\n      }\n      previousIndex = itemIndex;\n      index.$el.trigger('listindex:select');\n      index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n    }\n    function handleTouchEnd() {\n      if (!isTouched) return;\n      isTouched = false;\n      isMoved = false;\n      if (index.params.label) {\n        if ($labelEl) $labelEl.remove();\n        $labelEl = undefined;\n      }\n    }\n    const passiveListener = getSupport().passiveListener ? {\n      passive: true\n    } : false;\n    index.attachEvents = function attachEvents() {\n      $el.parents('.tab').on('tab:show', handleResize);\n      $el.parents('.page').on('page:reinit', handleResize);\n      $el.parents('.panel').on('panel:open', handleResize);\n      $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);\n      app.on('resize', handleResize);\n      $el.on('click', handleClick);\n      $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.on('touchmove:active', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n    };\n    index.detachEvents = function attachEvents() {\n      $el.parents('.tab').off('tab:show', handleResize);\n      $el.parents('.page').off('page:reinit', handleResize);\n      $el.parents('.panel').off('panel:open', handleResize);\n      $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);\n      app.off('resize', handleResize);\n      $el.off('click', handleClick);\n      $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n    };\n    // Init\n    index.init();\n    return index;\n  }\n  // eslint-disable-next-line\n  scrollListToIndex(itemContent, itemIndex) {\n    const index = this;\n    const {\n      $listEl,\n      $pageContentEl,\n      app\n    } = index;\n    if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n    let $scrollToEl;\n    $listEl.find('.list-group-title').each(el => {\n      if ($scrollToEl) return;\n      const $el = $(el);\n      if ($el.text() === itemContent) {\n        $scrollToEl = $el;\n      }\n    });\n    if (!$scrollToEl || $scrollToEl.length === 0) return index;\n    const parentTop = $scrollToEl.parent().offset().top;\n    let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n    const scrollTop = $pageContentEl[0].scrollTop;\n    const scrollToElTop = $scrollToEl.offset().top;\n    if ($pageContentEl.parents('.page-with-navbar-large').length) {\n      const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n      const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n      if ($titleLargeEl.length) {\n        paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n      }\n    }\n    if (parentTop <= paddingTop) {\n      $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n    } else {\n      $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n    }\n    return index;\n  }\n  renderSkipPlaceholder() {\n    const index = this;\n    return index.params.renderSkipPlaceholder.call(index);\n  }\n  renderItem(itemContent, itemIndex) {\n    const index = this;\n    return index.params.renderItem.call(index, itemContent, itemIndex);\n  }\n  render() {\n    const index = this;\n    const {\n      $ul,\n      indexes,\n      skipRate\n    } = index;\n    let wasSkipped;\n    const html = indexes.map((itemContent, itemIndex) => {\n      if (itemIndex % skipRate !== 0 && skipRate > 0) {\n        wasSkipped = true;\n        return '';\n      }\n      let itemHtml = index.renderItem(itemContent, itemIndex);\n      if (wasSkipped) {\n        itemHtml = index.renderSkipPlaceholder() + itemHtml;\n      }\n      wasSkipped = false;\n      return itemHtml;\n    }).join('');\n    $ul.html(html);\n    return index;\n  }\n  calcSize() {\n    const index = this;\n    const {\n      app,\n      params,\n      el,\n      indexes\n    } = index;\n    const height = el.offsetHeight;\n    const itemHeight = params[`${app.theme}ItemHeight`];\n    const maxItems = Math.floor(height / itemHeight);\n    const items = indexes.length;\n    let skipRate = 0;\n    if (items > maxItems) {\n      skipRate = Math.ceil((items * 2 - 1) / maxItems);\n    }\n    index.height = height;\n    index.skipRate = skipRate;\n    return index;\n  }\n  calcIndexes() {\n    const index = this;\n    if (index.params.indexes === 'auto') {\n      index.indexes = [];\n      index.$listEl.find('.list-group-title').each(el => {\n        const elContent = $(el).text();\n        if (index.indexes.indexOf(elContent) < 0) {\n          index.indexes.push(elContent);\n        }\n      });\n    } else {\n      index.indexes = index.params.indexes;\n    }\n    return index;\n  }\n  update() {\n    const index = this;\n    index.calcIndexes();\n    index.calcSize();\n    index.render();\n    return index;\n  }\n  init() {\n    const index = this;\n    index.calcIndexes();\n    index.calcSize();\n    index.render();\n    index.attachEvents();\n  }\n  destroy() {\n    let index = this;\n    index.$el.trigger('listindex:beforedestroy', index);\n    index.emit('local::beforeDestroy listIndexBeforeDestroy');\n    index.detachEvents();\n    if (index.$el[0]) {\n      index.$el[0].f7ListIndex = null;\n      delete index.$el[0].f7ListIndex;\n    }\n    deleteProps(index);\n    index = null;\n  }\n}\nexport default ListIndex;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'listIndex',\n  static: {\n    ListIndex\n  },\n  create() {\n    const app = this;\n    app.listIndex = ConstructorMethods({\n      defaultSelector: '.list-index',\n      constructor: ListIndex,\n      app,\n      domProp: 'f7ListIndex'\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.list-index-init').each(listIndexEl => {\n        const params = extend($(listIndexEl).dataset(), {\n          el: listIndexEl\n        });\n        app.listIndex.create(params);\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.list-index-init').each(listIndexEl => {\n        if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.list-index-init').each(listIndexEl => {\n        const params = extend($(listIndexEl).dataset(), {\n          el: listIndexEl\n        });\n        app.listIndex.create(params);\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.list-index-init').each(listIndexEl => {\n        if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n      });\n    }\n  },\n  vnode: {\n    'list-index-init': {\n      insert(vnode) {\n        const app = this;\n        const listIndexEl = vnode.elm;\n        const params = extend($(listIndexEl).dataset(), {\n          el: listIndexEl\n        });\n        app.listIndex.create(params);\n      },\n      destroy(vnode) {\n        const listIndexEl = vnode.elm;\n        if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n      }\n    }\n  }\n};", "export default {\n  name: 'timeline'\n};", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nconst Tab = {\n  show() {\n    const app = this;\n    let tabEl;\n    let tabLinkEl;\n    let animate;\n    let tabRoute;\n    let animatedInit;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0] && args[0].constructor === Object) {\n      tabEl = args[0].tabEl;\n      tabLinkEl = args[0].tabLinkEl;\n      animate = args[0].animate;\n      tabRoute = args[0].tabRoute;\n      animatedInit = args[0].animatedInit;\n    } else {\n      [tabEl, tabLinkEl, animate, tabRoute] = args;\n      if (typeof args[1] === 'boolean') {\n        [tabEl, animate, tabLinkEl, tabRoute] = args;\n        if (args.length > 2 && tabLinkEl.constructor === Object) {\n          [tabEl, animate, tabRoute, tabLinkEl] = args;\n        }\n      }\n    }\n    if (typeof animate === 'undefined') animate = true;\n    const $newTabEl = $(tabEl);\n    if (tabRoute && $newTabEl[0]) {\n      $newTabEl[0].f7TabRoute = tabRoute;\n    }\n    if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n      return {\n        $newTabEl,\n        newTabEl: $newTabEl[0]\n      };\n    }\n    let $tabLinkEl;\n    if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n    const $tabsEl = $newTabEl.parent('.tabs');\n    if ($tabsEl.length === 0) {\n      return {\n        $newTabEl,\n        newTabEl: $newTabEl[0]\n      };\n    }\n\n    // Release swipeouts in hidden tabs\n    if (app.swipeout) app.swipeout.allowOpen = true;\n\n    // Animated tabs\n    const tabsChangedCallbacks = [];\n    function onTabsChanged(callback) {\n      tabsChangedCallbacks.push(callback);\n    }\n    function tabsChanged() {\n      tabsChangedCallbacks.forEach(callback => {\n        callback();\n      });\n    }\n    let animated = false;\n    if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n      $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n      const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n      if (animate && transitionDuration) {\n        $tabsEl.transitionEnd(tabsChanged);\n        animated = true;\n      }\n      const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n      $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n    }\n\n    // Swipeable tabs\n    let swiper;\n    if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n      swiper = $tabsEl[0].swiper;\n      const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n      if (swiper && swiper.activeIndex !== newTabIndex) {\n        animated = true;\n        swiper.once('slideChangeTransitionEnd', () => {\n          tabsChanged();\n        }).slideTo(newTabIndex, animate ? undefined : 0);\n      } else if (swiper && swiper.animating) {\n        animated = true;\n        swiper.once('slideChangeTransitionEnd', () => {\n          tabsChanged();\n        });\n      }\n    }\n\n    // Remove active class from old tabs\n    const $oldTabEl = $tabsEl.children('.tab-active');\n    $oldTabEl.removeClass('tab-active');\n    if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n      if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n        $oldTabEl.children('.page').each(pageEl => {\n          $(pageEl).trigger('page:tabhide');\n          app.emit('pageTabHide', pageEl);\n        });\n      }\n      $oldTabEl.trigger('tab:hide');\n      app.emit('tabHide', $oldTabEl[0]);\n    }\n\n    // Trigger 'show' event on new tab\n    $newTabEl.addClass('tab-active');\n    if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n      if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n        $newTabEl.children('.page').each(pageEl => {\n          $(pageEl).trigger('page:tabshow');\n          app.emit('pageTabShow', pageEl);\n        });\n      }\n      $newTabEl.trigger('tab:show');\n      app.emit('tabShow', $newTabEl[0]);\n    }\n\n    // Find related link for new tab\n    if (!$tabLinkEl) {\n      // Search by id\n      if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n      // Search by data-tab\n      if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {\n        $('[data-tab]').each(el => {\n          if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n        });\n      }\n      if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {\n        $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n        if ($tabLinkEl.length === 0) {\n          $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n        }\n      }\n      if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n        // eslint-disable-next-line\n        $tabLinkEl = $tabLinkEl.filter(tabLinkElement => {\n          return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n        });\n        if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n          const $pageEl = $newTabEl.parents('.page');\n          const $navbarEl = $(app.navbar.getElByPage($pageEl));\n          $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n          if ($tabLinkEl.length === 0) {\n            $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n          }\n        }\n      }\n    }\n    if ($tabLinkEl.length > 0) {\n      // Find related link for old tab\n      let $oldTabLinkEl;\n      if ($oldTabEl && $oldTabEl.length > 0) {\n        // Search by id\n        const oldTabId = $oldTabEl.attr('id');\n        if (oldTabId) {\n          $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n          // Search by data-route-tab-id\n          if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n            $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n          }\n        }\n        // Search by data-tab\n        if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n          $('[data-tab]').each(tabLinkElement => {\n            if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n          });\n        }\n        if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n          $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n        }\n      } else if (tabRoute) {\n        $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n      }\n      if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n        // eslint-disable-next-line\n        $oldTabLinkEl = $oldTabLinkEl.filter(tabLinkElement => {\n          return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n        });\n      }\n      if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n      // Update links' classes\n      if ($tabLinkEl && $tabLinkEl.length > 0) {\n        $tabLinkEl.addClass('tab-link-active');\n        // Material Highlight\n        const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n        const hasHighlight = app.toolbar && $tabbarEl.length > 0 && ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n        if (hasHighlight) {\n          app.toolbar.setHighlight($tabbarEl);\n        }\n      }\n    }\n    return {\n      $newTabEl,\n      newTabEl: $newTabEl[0],\n      $oldTabEl,\n      oldTabEl: $oldTabEl[0],\n      onTabsChanged,\n      animated\n    };\n  }\n};\nexport default {\n  name: 'tabs',\n  create() {\n    const app = this;\n    extend(app, {\n      tab: {\n        show: Tab.show.bind(app)\n      }\n    });\n  },\n  on: {\n    'pageInit tabMounted': function onInit(pageOrTabEl) {\n      const $el = $(pageOrTabEl.el || pageOrTabEl);\n      const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n      if (!animatedTabEl) return;\n      const app = this;\n      app.tab.show({\n        tabEl: animatedTabEl,\n        animatedInit: true,\n        animate: false\n      });\n    }\n  },\n  clicks: {\n    '.tab-link': function tabLinkClick($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {\n        const app = this;\n        app.tab.show({\n          tabEl: data.tab || $clickedEl.attr('href'),\n          tabLinkEl: $clickedEl,\n          animate: data.animate\n        });\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\nfunction swipePanel(panel) {\n  const app = panel.app;\n  if (panel.swipeInitialized) {\n    return;\n  }\n  extend(panel, {\n    swipeable: true,\n    swipeInitialized: true\n  });\n  const params = panel.params;\n  const {\n    $el,\n    $backdropEl,\n    side,\n    effect\n  } = panel;\n  let otherPanel;\n  let isTouched;\n  let isGestureStarted;\n  let isMoved;\n  let isScrolling;\n  let isInterrupted;\n  const touchesStart = {};\n  let touchStartTime;\n  let touchesDiff;\n  let translate;\n  let backdropOpacity;\n  let panelWidth;\n  let direction;\n  let $viewEl;\n  let touchMoves = 0;\n  function handleTouchStart(e) {\n    if (!panel.swipeable || isGestureStarted) return;\n    if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;\n    if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n    otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n    const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n    if (!panel.opened && otherPanelOpened) {\n      return;\n    }\n    if (!params.swipeOnlyClose) {\n      if (otherPanelOpened) return;\n    }\n    if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n    if ($(e.target).closest('.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    if (params.swipeOnlyClose && !panel.opened) {\n      return;\n    }\n    if (params.swipeActiveArea && !panel.opened) {\n      if (side === 'left') {\n        if (touchesStart.x > params.swipeActiveArea) return;\n      }\n      if (side === 'right') {\n        if (touchesStart.x < app.width - params.swipeActiveArea) return;\n      }\n    }\n    touchMoves = 0;\n    $viewEl = $(panel.getViewEl());\n    isMoved = false;\n    isTouched = true;\n    isScrolling = undefined;\n    isInterrupted = false;\n    touchStartTime = now();\n    direction = undefined;\n  }\n  function handleTouchMove(e) {\n    if (!isTouched || isGestureStarted || isInterrupted) return;\n    touchMoves += 1;\n    if (touchMoves < 2) return;\n    if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n      isTouched = false;\n      return;\n    }\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    if (typeof isScrolling === 'undefined') {\n      isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n    }\n    if (isScrolling) {\n      isTouched = false;\n      return;\n    }\n    if (!direction) {\n      if (pageX > touchesStart.x) {\n        direction = 'to-right';\n      } else {\n        direction = 'to-left';\n      }\n      if (params.swipeActiveArea > 0 && !panel.opened) {\n        if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n          isTouched = false;\n          return;\n        }\n        if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n          isTouched = false;\n          return;\n        }\n      }\n      if ($el.hasClass('panel-in-breakpoint')) {\n        isTouched = false;\n        return;\n      }\n      if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {\n        isTouched = false;\n        return;\n      }\n    }\n    let threshold = panel.opened ? 0 : -params.swipeThreshold;\n    if (side === 'right') threshold = -threshold;\n    if (!isMoved) {\n      if (!panel.opened) {\n        panel.insertToRoot();\n        $el.addClass('panel-in-swipe');\n        if ($backdropEl) $backdropEl.css('visibility', 'visible');\n        $el.trigger('panel:swipeopen');\n        panel.emit('local::swipeOpen panelSwipeOpen', panel);\n      }\n      panelWidth = $el[0].offsetWidth;\n      if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n        panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n      }\n      $el.transition(0);\n    }\n    isMoved = true;\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    touchesDiff = pageX - touchesStart.x + threshold;\n    const startTranslate = effect === 'floating' ? 8 : 0;\n    if (side === 'right') {\n      if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n        translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n        if (translate < 0 - startTranslate) translate = -startTranslate;\n        if (translate > panelWidth) {\n          translate = panelWidth;\n        }\n      } else {\n        translate = touchesDiff - (panel.opened ? panelWidth : 0);\n        if (translate > 0) translate = 0;\n        if (translate < -panelWidth) {\n          translate = -panelWidth;\n        }\n      }\n    } else {\n      translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n      if (translate < 0) translate = 0;\n      if (translate > panelWidth + startTranslate) {\n        translate = panelWidth + startTranslate;\n      }\n    }\n    const noFollowProgress = Math.abs(translate / panelWidth);\n    if (effect === 'reveal') {\n      if (!params.swipeNoFollow) {\n        $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n        if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n      }\n      $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n      panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n    } else {\n      if (side === 'left') translate -= panelWidth;\n      if (!params.swipeNoFollow) {\n        backdropOpacity = 1 - Math.abs(translate / panelWidth);\n        if ($backdropEl) {\n          $backdropEl.transition(0);\n          $backdropEl.css({\n            opacity: backdropOpacity\n          });\n        }\n        $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n        if (effect === 'push') {\n          const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n          $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n          if ($backdropEl) {\n            $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n          }\n        }\n      }\n      $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n      panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n    }\n    if (params.swipeNoFollow) {\n      const stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;\n      if (stateChanged) {\n        isInterrupted = true;\n        // eslint-disable-next-line\n        handleTouchEnd(e);\n      }\n    }\n  }\n  function handleTouchEnd(e) {\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    const isGesture = e.type === 'gesturestart' || isGestureStarted;\n    isTouched = false;\n    isMoved = false;\n    const timeDiff = new Date().getTime() - touchStartTime;\n    let action;\n    const startTranslate = effect === 'floating' ? side === 'left' ? 8 : -8 : 0;\n    const edge = (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n    const threshold = params.swipeThreshold || 0;\n    if (isGesture) {\n      action = 'reset';\n    } else if (!panel.opened) {\n      if (Math.abs(touchesDiff) < threshold) {\n        action = 'reset';\n      } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n        if (translate === 0 + startTranslate) {\n          action = 'swap'; // open\n        } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n          action = 'swap'; // open\n        } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n          action = 'swap'; // open\n        } else {\n          action = 'reset'; // close\n        }\n      } else if (translate === 0) {\n        action = 'reset';\n      } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {\n        action = 'swap';\n      } else {\n        action = 'reset';\n      }\n    } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n      if (translate === 0) {\n        action = 'reset'; // open\n      } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n        action = 'swap'; // open\n      } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n        action = 'reset'; // open\n      } else {\n        action = 'swap'; // close\n      }\n    } else if (translate === -panelWidth) {\n      action = 'reset';\n    } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {\n      if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';\n    } else {\n      action = 'reset';\n    }\n    if (action === 'swap') {\n      if (panel.opened) {\n        panel.close(!edge);\n      } else {\n        panel.open(!edge);\n      }\n    }\n    let removePanelInClass = true;\n    if (action === 'reset') {\n      if (!panel.opened) {\n        if (edge) {\n          // edge position\n          $el.removeClass('panel-in-swipe');\n        } else {\n          removePanelInClass = false;\n          const target = effect === 'reveal' ? $viewEl : $el;\n          panel.setStateClasses('before-closing');\n          target.transitionEnd(() => {\n            if ($el.hasClass('panel-in')) return;\n            $el.removeClass('panel-in-swipe');\n            panel.setStateClasses('after-closing');\n          });\n        }\n      }\n    }\n    if (effect === 'reveal' || effect === 'push') {\n      nextFrame(() => {\n        $viewEl.transition('');\n        $viewEl.transform('');\n      });\n    }\n    if (removePanelInClass) {\n      $el.removeClass('panel-in-swipe');\n    }\n    $el.transition('').transform('');\n    if ($backdropEl) {\n      $backdropEl.transform('').transition('').css({\n        opacity: '',\n        visibility: ''\n      });\n    }\n  }\n  function handleGestureStart(e) {\n    isGestureStarted = true;\n    handleTouchEnd(e);\n  }\n  function handleGestureEnd() {\n    isGestureStarted = false;\n  }\n\n  // Add Events\n  app.on('touchstart:passive', handleTouchStart);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  app.on('gesturestart', handleGestureStart);\n  app.on('gestureend', handleGestureEnd);\n  panel.on('panelDestroy', () => {\n    app.off('touchstart:passive', handleTouchStart);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    app.off('gesturestart', handleGestureStart);\n    app.off('gestureend', handleGestureEnd);\n  });\n}\nexport default swipePanel;", "import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizablePanel(panel) {\n  const app = panel.app;\n  const support = getSupport();\n  if (panel.resizableInitialized) return;\n  extend(panel, {\n    resizable: true,\n    resizableWidth: null,\n    resizableInitialized: true\n  });\n  const $htmlEl = $('html');\n  const {\n    $el,\n    $backdropEl,\n    side,\n    effect\n  } = panel;\n  if (!$el) return;\n  let isTouched;\n  let isMoved;\n  const touchesStart = {};\n  let touchesDiff;\n  let panelWidth;\n  let $viewEl;\n  let panelMinWidth;\n  let panelMaxWidth;\n  let visibleByBreakpoint;\n  const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n  function transformCSSWidth(v) {\n    if (!v) return null;\n    if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n      return parseInt(v, 10) / 100 * app.width;\n    }\n    const newV = parseInt(v, 10);\n    if (Number.isNaN(newV)) return null;\n    return newV;\n  }\n  function isResizable() {\n    return panel.resizable && $el.hasClass('panel-resizable');\n  }\n  function handleTouchStart(e) {\n    if (!isResizable()) return;\n    touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    isMoved = false;\n    isTouched = true;\n    panelMinWidth = transformCSSWidth($el.css('min-width'));\n    panelMaxWidth = transformCSSWidth($el.css('max-width'));\n    visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n  }\n  function handleTouchMove(e) {\n    if (!isTouched) return;\n    const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    if (!isMoved) {\n      panelWidth = $el[0].offsetWidth;\n      $el.transition(0);\n      $el.addClass('panel-resizing');\n      $htmlEl.css('cursor', 'col-resize');\n      if (isPushingPanel || visibleByBreakpoint) {\n        $viewEl = $(panel.getViewEl());\n        if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n          $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n        }\n      }\n      if (isPushingPanel && !visibleByBreakpoint) {\n        $backdropEl.transition(0);\n        $viewEl.transition(0);\n      }\n    }\n    isMoved = true;\n    e.preventDefault();\n    touchesDiff = pageX - touchesStart.x;\n    let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n    if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n      newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n    }\n    if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n      newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n    }\n    newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n    panel.resizableWidth = newPanelWidth;\n    $el[0].style.width = `${newPanelWidth}px`;\n    if (isPushingPanel && !visibleByBreakpoint) {\n      if ($viewEl) {\n        $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n      }\n      if ($backdropEl) {\n        $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n      }\n    } else if (visibleByBreakpoint && $viewEl) {\n      $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n    }\n    $el.trigger('panel:resize', newPanelWidth);\n    panel.emit('local::resize panelResize', panel, newPanelWidth);\n  }\n  function handleTouchEnd() {\n    $('html').css('cursor', '');\n    if (!isTouched || !isMoved) {\n      isTouched = false;\n      isMoved = false;\n      return;\n    }\n    isTouched = false;\n    isMoved = false;\n    $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n    $el[0].style.width = '';\n    if (isPushingPanel && !visibleByBreakpoint) {\n      $viewEl.transform('');\n      $backdropEl.transform('');\n    }\n    $el.removeClass('panel-resizing');\n    nextFrame(() => {\n      $el.transition('');\n      if (isPushingPanel) {\n        $backdropEl.transition('');\n        if ($viewEl) $viewEl.transition('');\n      }\n    });\n  }\n  function handleResize() {\n    if (!panel.opened || !panel.resizableWidth) return;\n    panelMinWidth = transformCSSWidth($el.css('min-width'));\n    panelMaxWidth = transformCSSWidth($el.css('max-width'));\n    if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n      panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n    }\n    if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n      panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n    }\n    panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n    $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n  }\n  if (panel.$el.find('.panel-resize-handler').length === 0) {\n    panel.$el.append('<div class=\"panel-resize-handler\"></div>');\n  }\n  panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n  $el.addClass('panel-resizable');\n\n  // Add Events\n  const passive = support.passiveListener ? {\n    passive: true\n  } : false;\n  panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n  app.on('touchmove:active', handleTouchMove);\n  app.on('touchend:passive', handleTouchEnd);\n  app.on('resize', handleResize);\n  panel.on('beforeOpen', handleResize);\n  panel.once('panelDestroy', () => {\n    $el.removeClass('panel-resizable');\n    panel.$resizeHandlerEl.remove();\n    panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n    app.off('touchmove:active', handleTouchMove);\n    app.off('touchend:passive', handleTouchEnd);\n    app.off('resize', handleResize);\n    panel.off('beforeOpen', handleResize);\n  });\n}\nexport default resizablePanel;", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\nclass Panel extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    const extendedParams = extend({\n      on: {}\n    }, app.params.panel, params);\n    super(extendedParams, [app]);\n    const panel = this;\n    panel.params = extendedParams;\n    panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n    panel.containerEl = panel.$containerEl[0];\n    if (!panel.containerEl) {\n      panel.$containerEl = app.$el;\n      panel.containerEl = app.$el[0];\n    }\n    let $el;\n    if (panel.params.el) {\n      $el = $(panel.params.el).eq(0);\n    } else if (panel.params.content) {\n      $el = $(panel.params.content).filter(node => node.nodeType === 1).eq(0);\n    }\n    if ($el.length === 0) return panel;\n    if ($el[0].f7Panel) return $el[0].f7Panel;\n    $el[0].f7Panel = panel;\n    let {\n      side,\n      effect,\n      resizable\n    } = panel.params;\n    if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n    if (typeof effect === 'undefined')\n      // eslint-disable-next-line\n      effect = $el.hasClass('panel-cover') ? 'cover' : $el.hasClass('panel-push') ? 'push' : $el.hasClass('panel-floating') ? 'floating' : 'reveal';\n    if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n    let $backdropEl;\n    if (panel.params.backdrop && panel.params.backdropEl) {\n      $backdropEl = $(panel.params.backdropEl);\n    } else if (panel.params.backdrop) {\n      $backdropEl = panel.$containerEl.children('.panel-backdrop');\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"panel-backdrop\"></div>');\n        panel.$containerEl.prepend($backdropEl);\n      }\n    }\n    extend(panel, {\n      app,\n      side,\n      effect,\n      resizable,\n      $el,\n      el: $el[0],\n      opened: false,\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0]\n    });\n\n    // Install Modules\n    panel.useModules();\n\n    // Init\n    panel.init();\n    return panel;\n  }\n  getViewEl() {\n    const panel = this;\n    let viewEl;\n    if (panel.$containerEl.children('.views').length > 0) {\n      viewEl = panel.$containerEl.children('.views')[0];\n    } else {\n      viewEl = panel.$containerEl.children('.view')[0];\n    }\n    return viewEl;\n  }\n  setStateClasses(state) {\n    const panel = this;\n    const {\n      side,\n      el,\n      effect\n    } = panel;\n    const viewEl = panel.getViewEl();\n    const panelInView = viewEl && viewEl.contains(el);\n    const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n    if (state === 'open') {\n      $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n    }\n    if (state === 'before-closing') {\n      $targetEl.addClass('with-panel-closing');\n    }\n    if (state === 'closing') {\n      $targetEl.addClass('with-panel-closing');\n      $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n    }\n    if (state === 'after-closing') {\n      $targetEl.removeClass('with-panel-closing');\n    }\n    if (state === 'closed') {\n      $targetEl.removeClass(`with-panel-${side}-${effect}`);\n    }\n  }\n  enableVisibleBreakpoint() {\n    const panel = this;\n    panel.visibleBreakpointDisabled = false;\n    panel.setVisibleBreakpoint();\n    return panel;\n  }\n  disableVisibleBreakpoint() {\n    const panel = this;\n    panel.visibleBreakpointDisabled = true;\n    panel.setVisibleBreakpoint();\n    return panel;\n  }\n  toggleVisibleBreakpoint() {\n    const panel = this;\n    panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n    panel.setVisibleBreakpoint();\n    return panel;\n  }\n  setVisibleBreakpoint(emitEvents) {\n    if (emitEvents === void 0) {\n      emitEvents = true;\n    }\n    const panel = this;\n    const app = panel.app;\n    if (!panel.visibleBreakpointResizeHandler) {\n      panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n        panel.setVisibleBreakpoint();\n      };\n      app.on('resize', panel.visibleBreakpointResizeHandler);\n    }\n    const {\n      side,\n      $el,\n      $containerEl,\n      params,\n      visibleBreakpointDisabled\n    } = panel;\n    const breakpoint = params.visibleBreakpoint;\n    const $viewEl = $(panel.getViewEl());\n    const wasVisible = $el.hasClass('panel-in-breakpoint');\n    if ($containerEl && $containerEl.hasClass('page')) {\n      $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n    }\n    if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n      if (!wasVisible) {\n        panel.setStateClasses('closed');\n        $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n        panel.onOpen(false);\n        panel.onOpened();\n        $viewEl.css({\n          [`margin-${side}`]: `${$el.width()}px`\n        });\n        app.allowPanelOpen = true;\n        if (emitEvents) {\n          panel.emit('local::breakpoint panelBreakpoint', panel);\n          panel.$el.trigger('panel:breakpoint');\n        }\n      } else {\n        $viewEl.css({\n          [`margin-${side}`]: `${$el.width()}px`\n        });\n      }\n    } else if (wasVisible) {\n      $el.removeClass('panel-in-breakpoint panel-in');\n      panel.onClose();\n      panel.onClosed();\n      $viewEl.css({\n        [`margin-${side}`]: ''\n      });\n      if (emitEvents) {\n        panel.emit('local::breakpoint panelBreakpoint', panel);\n        panel.$el.trigger('panel:breakpoint');\n      }\n    }\n  }\n  enableCollapsedBreakpoint() {\n    const panel = this;\n    panel.collapsedBreakpointDisabled = false;\n    panel.setCollapsedBreakpoint();\n    return panel;\n  }\n  disableCollapsedBreakpoint() {\n    const panel = this;\n    panel.collapsedBreakpointDisabled = true;\n    panel.setCollapsedBreakpoint();\n    return panel;\n  }\n  toggleCollapsedBreakpoint() {\n    const panel = this;\n    panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n    panel.setCollapsedBreakpoint();\n    return panel;\n  }\n  setCollapsedBreakpoint(emitEvents) {\n    if (emitEvents === void 0) {\n      emitEvents = true;\n    }\n    const panel = this;\n    const app = panel.app;\n    if (!panel.collapsedBreakpointResizeHandler) {\n      panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n        panel.setCollapsedBreakpoint();\n      };\n      app.on('resize', panel.collapsedBreakpointResizeHandler);\n    }\n    const {\n      $el,\n      params,\n      collapsedBreakpointDisabled\n    } = panel;\n    if ($el.hasClass('panel-in-breakpoint')) return;\n    const breakpoint = params.collapsedBreakpoint;\n    const wasVisible = $el.hasClass('panel-in-collapsed');\n    if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n      if (!wasVisible) {\n        panel.setStateClasses('closed');\n        $el.addClass('panel-in-collapsed').removeClass('panel-in');\n        panel.collapsed = true;\n        app.allowPanelOpen = true;\n        if (emitEvents) {\n          panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n          panel.$el.trigger('panel:collapsedbreakpoint');\n        }\n      }\n    } else if (wasVisible) {\n      $el.removeClass('panel-in-collapsed panel-in');\n      panel.collapsed = false;\n      if (emitEvents) {\n        panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n        panel.$el.trigger('panel:collapsedbreakpoint');\n      }\n    }\n  }\n  enableResizable() {\n    const panel = this;\n    if (panel.resizableInitialized) {\n      panel.resizable = true;\n      panel.$el.addClass('panel-resizable');\n    } else {\n      resizablePanel(panel);\n    }\n    return panel;\n  }\n  disableResizable() {\n    const panel = this;\n    panel.resizable = false;\n    panel.$el.removeClass('panel-resizable');\n    return panel;\n  }\n  enableSwipe() {\n    const panel = this;\n    if (panel.swipeInitialized) {\n      panel.swipeable = true;\n    } else {\n      swipePanel(panel);\n    }\n    return panel;\n  }\n  disableSwipe() {\n    const panel = this;\n    panel.swipeable = false;\n    return panel;\n  }\n  onOpen(modifyHtmlClasses) {\n    if (modifyHtmlClasses === void 0) {\n      modifyHtmlClasses = true;\n    }\n    const panel = this;\n    // eslint-disable-next-line\n    panel._openTransitionStarted = false;\n    const app = panel.app;\n    panel.opened = true;\n    app.panel.allowOpen = false;\n    panel.$el.trigger('panel:beforeopen');\n    panel.emit('local::beforeOpen panelBeforeOpen', panel);\n    if (modifyHtmlClasses) {\n      panel.setStateClasses('open');\n    }\n    panel.$el.trigger('panel:open');\n    panel.emit('local::open panelOpen', panel);\n  }\n  onOpened() {\n    const panel = this;\n    const app = panel.app;\n    app.panel.allowOpen = true;\n    panel.$el.trigger('panel:opened');\n    panel.emit('local::opened panelOpened', panel);\n  }\n  onClose() {\n    const panel = this;\n    const app = panel.app;\n    panel.opened = false;\n    app.panel.allowOpen = false;\n    panel.$el.trigger('panel:beforeclose');\n    panel.emit('local::beforeClose panelBeforeClose', panel);\n    panel.setStateClasses('closing');\n    panel.$el.trigger('panel:close');\n    panel.emit('local::close panelClose', panel);\n  }\n  onClosed() {\n    const panel = this;\n    const app = panel.app;\n    app.panel.allowOpen = true;\n    panel.setStateClasses('after-closing');\n    panel.$el.removeClass('panel-out');\n    if (panel.$backdropEl) {\n      const otherPanel = app.panel.get('.panel-in');\n      const shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;\n      if (shouldHideBackdrop) {\n        panel.$backdropEl.removeClass('panel-backdrop-in');\n      }\n    }\n    panel.$el.trigger('panel:closed');\n    panel.emit('local::closed panelClosed', panel);\n  }\n  toggle(animate) {\n    if (animate === void 0) {\n      animate = true;\n    }\n    const panel = this;\n    const breakpoint = panel.params.visibleBreakpoint;\n    const app = panel.app;\n    if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n      return panel.toggleVisibleBreakpoint();\n    }\n    if (panel.opened) panel.close(animate);else panel.open(animate);\n    return panel;\n  }\n  insertToRoot() {\n    const panel = this;\n    const document = getDocument();\n    const {\n      $el,\n      $backdropEl,\n      $containerEl\n    } = panel;\n    const $panelParentEl = $el.parent();\n    const wasInDom = $el.parents(document).length > 0;\n    if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n      const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n      const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n      if ($insertBeforeEl.length) {\n        $el.insertBefore($insertBeforeEl);\n      } else if ($insertAfterEl) {\n        $el.insertBefore($insertAfterEl);\n      } else {\n        $containerEl.prepend($el);\n      }\n      if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {\n        $backdropEl.insertBefore($el);\n      }\n      panel.once('panelClosed', () => {\n        if (wasInDom) {\n          $panelParentEl.append($el);\n        } else {\n          $el.remove();\n        }\n      });\n    }\n  }\n  open(animate) {\n    if (animate === void 0) {\n      animate = true;\n    }\n    const panel = this;\n    const app = panel.app;\n    if (!app.panel.allowOpen) return false;\n    const {\n      effect,\n      $el,\n      $backdropEl,\n      opened,\n      $containerEl\n    } = panel;\n    if (!$el || $el.hasClass('panel-in')) {\n      return panel;\n    }\n    panel.insertToRoot();\n\n    // Ignore if opened\n    if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n    // Close if some panel is opened\n    const otherOpenedPanel = app.panel.get('.panel-in');\n    if (otherOpenedPanel && otherOpenedPanel !== panel) {\n      otherOpenedPanel.close(animate);\n    }\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    $el.addClass('panel-in');\n    if ($backdropEl) {\n      $backdropEl.addClass('panel-backdrop-in');\n      $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n    }\n    if (['cover', 'push', 'floating'].includes(panel.effect)) {\n      /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n      panel._clientLeft = $el[0].clientLeft;\n    }\n\n    // Transitionend\n    const $viewEl = $(panel.getViewEl());\n    if ($containerEl && $containerEl.hasClass('page')) {\n      $viewEl.add($containerEl.children('.page-content, .tabs'));\n    }\n    const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n    function panelTransitionStart() {\n      transitionEndTarget.transitionStart(() => {\n        // eslint-disable-next-line\n        panel._openTransitionStarted = true;\n      });\n    }\n    function panelTransitionEnd() {\n      transitionEndTarget.transitionEnd(e => {\n        if ($(e.target).is(transitionEndTarget)) {\n          if ($el.hasClass('panel-out')) {\n            panel.onClosed();\n          } else {\n            panel.onOpened();\n          }\n        } else panelTransitionEnd();\n      });\n    }\n    if (animate) {\n      if ($backdropEl) {\n        $backdropEl.removeClass('not-animated');\n      }\n      panelTransitionStart();\n      panelTransitionEnd();\n      $el.removeClass('panel-out not-animated').addClass('panel-in');\n      panel.onOpen();\n    } else {\n      if ($backdropEl) {\n        $backdropEl.addClass('not-animated');\n      }\n      $el.removeClass('panel-out').addClass('panel-in not-animated');\n      panel.onOpen();\n      panel.onOpened();\n      // eslint-disable-next-line\n      panel._openTransitionStarted = true;\n    }\n    return true;\n  }\n  close(animate) {\n    if (animate === void 0) {\n      animate = true;\n    }\n    const panel = this;\n    const {\n      effect,\n      $el,\n      $backdropEl,\n      opened,\n      $containerEl\n    } = panel;\n    if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n    $el[animate ? 'removeClass' : 'addClass']('not-animated');\n    if ($backdropEl) {\n      $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n    }\n    const $viewEl = $(panel.getViewEl());\n    if ($containerEl && $containerEl.hasClass('page')) {\n      $viewEl.add($containerEl.children('.page-content, .tabs'));\n    }\n    const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n    // eslint-disable-next-line\n    if (!panel._openTransitionStarted) {\n      // eslint-disable-next-line\n      animate = false;\n    }\n    function transitionEnd() {\n      if ($el.hasClass('panel-out')) {\n        panel.onClosed();\n      } else if ($el.hasClass('panel-in')) {\n        panel.onOpened();\n      }\n      panel.setStateClasses('after-closing');\n    }\n    if (animate) {\n      transitionEndTarget.transitionEnd(() => {\n        transitionEnd();\n      });\n      $el.removeClass('panel-in').addClass('panel-out');\n      // Emit close\n      panel.onClose();\n    } else {\n      $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n      // Emit close\n      panel.onClose();\n      panel.onClosed();\n    }\n    return panel;\n  }\n  init() {\n    const panel = this;\n    // const app = panel.app;\n    if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n      panel.setVisibleBreakpoint();\n    }\n    if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n      panel.setCollapsedBreakpoint();\n    }\n    if (panel.params.swipe) {\n      panel.enableSwipe();\n    }\n    if (panel.resizable) {\n      panel.enableResizable();\n    }\n  }\n  destroy() {\n    let panel = this;\n    const app = panel.app;\n    const {\n      $containerEl\n    } = panel;\n    if (!panel.$el) {\n      // Panel already destroyed\n      return;\n    }\n    panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n    panel.$el.trigger('panel:beforedestroy');\n    if (panel.visibleBreakpointResizeHandler) {\n      app.off('resize', panel.visibleBreakpointResizeHandler);\n    }\n    if (panel.collapsedBreakpointResizeHandler) {\n      app.off('resize', panel.collapsedBreakpointResizeHandler);\n    }\n    if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n      const $viewEl = $(panel.getViewEl());\n      if ($containerEl && $containerEl.hasClass('page')) {\n        $viewEl.add($containerEl.children('.page-content, .tabs'));\n      }\n      panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n      $viewEl.css({\n        [`margin-${panel.side}`]: ''\n      });\n      panel.emit('local::breakpoint panelBreakpoint', panel);\n      panel.$el.trigger('panel:breakpoint');\n    }\n    panel.$el.trigger('panel:destroy');\n    panel.emit('local::destroy panelDestroy', panel);\n    if (panel.el) {\n      panel.el.f7Panel = null;\n      delete panel.el.f7Panel;\n    }\n    deleteProps(panel);\n    panel = null;\n  }\n}\nexport default Panel;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\nexport default {\n  name: 'panel',\n  params: {\n    panel: {\n      opened: undefined,\n      // default based on panel-in class\n      side: undefined,\n      // default based on panel class\n      effect: undefined,\n      // default based on panel class\n      resizable: undefined,\n      // default based on panel-resizable class\n      backdrop: true,\n      backdropEl: undefined,\n      visibleBreakpoint: undefined,\n      collapsedBreakpoint: undefined,\n      swipe: false,\n      // or true\n      swipeNoFollow: false,\n      // or true\n      swipeOnlyClose: false,\n      swipeActiveArea: 0,\n      swipeThreshold: 0,\n      closeByBackdropClick: true,\n      containerEl: undefined\n    }\n  },\n  static: {\n    Panel\n  },\n  create() {\n    const app = this;\n    extend(app, {\n      panel: {\n        allowOpen: true,\n        create(params) {\n          return new Panel(app, params);\n        },\n        get(el) {\n          if (el === void 0) {\n            el = '.panel';\n          }\n          if (el instanceof Panel) return el;\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          const $el = $(el);\n          if ($el.length === 0 || $el.length > 1) return undefined;\n          return $el[0].f7Panel;\n        },\n        destroy(el) {\n          if (el === void 0) {\n            el = '.panel';\n          }\n          const panel = app.panel.get(el);\n          if (panel && panel.destroy) return panel.destroy();\n          return undefined;\n        },\n        open(el, animate) {\n          if (el === void 0) {\n            el = '.panel';\n          }\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          let panel = app.panel.get(el);\n          if (panel && panel.open) return panel.open(animate);\n          if (!panel) {\n            panel = app.panel.create({\n              el\n            });\n            return panel.open(animate);\n          }\n          return undefined;\n        },\n        close(el, animate) {\n          if (el === void 0) {\n            el = '.panel-in';\n          }\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          let panel = app.panel.get(el);\n          if (panel && panel.open) return panel.close(animate);\n          if (!panel) {\n            panel = app.panel.create({\n              el\n            });\n            return panel.close(animate);\n          }\n          return undefined;\n        },\n        toggle(el, animate) {\n          if (el === void 0) {\n            el = '.panel';\n          }\n          if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n          let panel = app.panel.get(el);\n          if (panel && panel.toggle) return panel.toggle(animate);\n          if (!panel) {\n            panel = app.panel.create({\n              el\n            });\n            return panel.toggle(animate);\n          }\n          return undefined;\n        }\n      }\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      $('.panel-init').each(panelEl => {\n        const params = Object.assign({\n          el: panelEl\n        }, $(panelEl).dataset() || {});\n        app.panel.create(params);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.panel-init').each(panelEl => {\n        const params = Object.assign({\n          el: panelEl\n        }, $(panelEl).dataset() || {});\n        app.panel.create(params);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.panel-init').each(panelEl => {\n        const panel = app.panel.get(panelEl);\n        if (panel && panel.destroy) panel.destroy();\n      });\n    }\n  },\n  vnode: {\n    'panel-init': {\n      insert(vnode) {\n        const app = this;\n        const panelEl = vnode.elm;\n        const params = Object.assign({\n          el: panelEl\n        }, $(panelEl).dataset() || {});\n        app.panel.create(params);\n      },\n      destroy(vnode) {\n        const app = this;\n        const panelEl = vnode.elm;\n        const panel = app.panel.get(panelEl);\n        if (panel && panel.destroy) panel.destroy();\n      }\n    }\n  },\n  clicks: {\n    '.panel-open': function open(clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.panel.open(data.panel, data.animate);\n    },\n    '.panel-close': function close(clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.panel.close(data.panel, data.animate);\n    },\n    '.panel-toggle': function close(clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.panel.toggle(data.panel, data.animate);\n    },\n    '.panel-backdrop': function close() {\n      const app = this;\n      const $panelEl = $('.panel-in:not(.panel-out)');\n      if (!$panelEl.length) return;\n      const instance = $panelEl[0] && $panelEl[0].f7Panel;\n      $panelEl.trigger('panel:backdrop-click');\n      if (instance) {\n        instance.emit('backdropClick', instance);\n      }\n      app.emit('panelBackdropClick', instance || $panelEl[0]);\n      if (instance && instance.params.closeByBackdropClick === false) return;\n      if (app.params.panel.closeByBackdropClick) app.panel.close();\n    }\n  }\n};", "/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\nconst CardExpandable = {\n  open(cardEl, animate) {\n    if (cardEl === void 0) {\n      cardEl = '.card-expandable';\n    }\n    if (animate === void 0) {\n      animate = true;\n    }\n    const app = this;\n    const device = getDevice();\n    const document = getDocument();\n    const support = getSupport();\n    const $cardEl = $(cardEl).eq(0);\n    if (!$cardEl || !$cardEl.length) return;\n    if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n    const $pageEl = $cardEl.parents('.page').eq(0);\n    if (!$pageEl.length) return;\n    if ($pageEl.find('.card-opened').length) {\n      return;\n    }\n    let prevented;\n    function prevent() {\n      prevented = true;\n    }\n    $cardEl.trigger('card:beforeopen', {\n      prevent\n    });\n    app.emit('cardBeforeOpen', $cardEl[0], prevent);\n    if (prevented) return;\n    const cardParams = Object.assign({\n      animate\n    }, app.params.card, $cardEl.dataset());\n    const $pageContentEl = $cardEl.parents('.page-content');\n    let $backdropEl;\n    if ($cardEl.attr('data-backdrop-el')) {\n      $backdropEl = $($cardEl.attr('data-backdrop-el'));\n    }\n    if (!$backdropEl && cardParams.backdrop) {\n      $backdropEl = $pageContentEl.find('.card-backdrop');\n      if (!$backdropEl.length) {\n        $backdropEl = $('<div class=\"card-backdrop\"></div>');\n        $pageContentEl.append($backdropEl);\n      }\n    }\n    let $navbarEl;\n    let $toolbarEl;\n    if (cardParams.hideNavbarOnOpen) {\n      $navbarEl = $pageEl.children('.navbar');\n      if (!$navbarEl.length) {\n        if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n      }\n    }\n    if (cardParams.hideToolbarOnOpen) {\n      $toolbarEl = $pageEl.children('.toolbar');\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n      }\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n      }\n    }\n    const currTransform = $cardEl.css('transform');\n    let hasTransform;\n    if (currTransform && currTransform.match(/[2-9]/)) {\n      hasTransform = true;\n    }\n    const $cardContentEl = $cardEl.children('.card-content');\n    const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n    $cardEl.append($cardSizeEl);\n    let cardWidth = $cardEl[0].offsetWidth;\n    let cardHeight = $cardEl[0].offsetHeight;\n    let pageWidth = $pageEl[0].offsetWidth;\n    let pageHeight = $pageEl[0].offsetHeight;\n    let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n    let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n    let statusbarHeight;\n    if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n      statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n      if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n    }\n    if (statusbarHeight) {\n      maxHeight -= statusbarHeight;\n    }\n    let scaleX = maxWidth / cardWidth;\n    let scaleY = maxHeight / cardHeight;\n    let offset = $cardEl.offset();\n    let pageOffset = $pageEl.offset();\n    if (statusbarHeight) {\n      pageOffset.top += statusbarHeight / 2;\n    }\n    offset.left -= pageOffset.left;\n    let cardLeftOffset;\n    let cardTopOffset;\n    if (hasTransform) {\n      const transformValues = currTransform.replace(/matrix\\(|\\)/g, '').split(',').map(el => el.trim());\n      if (transformValues && transformValues.length > 1) {\n        const scale = parseFloat(transformValues[0]);\n        cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n        cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n        if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n      } else {\n        cardLeftOffset = $cardEl[0].offsetLeft;\n        cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n      }\n    } else {\n      cardLeftOffset = offset.left;\n      cardTopOffset = offset.top - pageOffset.top;\n      if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n    }\n    cardLeftOffset -= (pageWidth - maxWidth) / 2;\n    cardTopOffset -= (pageHeight - maxHeight) / 2;\n    let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n    if (app.rtl) {\n      [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n    }\n    let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n    let translateX = (cardRightOffset - cardLeftOffset) / 2;\n    let translateY = (cardBottomOffset - cardTopOffset) / 2;\n    if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n      if ($navbarEl.closest('.navbar-hidden').length) {\n        // Was hidden\n        $cardEl[0].f7KeepNavbarOnClose = true;\n      } else {\n        delete $cardEl[0].f7KeepNavbarOnClose;\n        app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n      }\n    }\n    if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n      if ($toolbarEl.closest('.toolbar-hidden').length) {\n        // Was hidden\n        $cardEl[0].f7KeepToolbarOnClose = true;\n      } else {\n        delete $cardEl[0].f7KeepToolbarOnClose;\n        app.toolbar.hide($toolbarEl, cardParams.animate);\n      }\n    }\n    if ($backdropEl) {\n      $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n    }\n    $cardEl.removeClass('card-transitioning');\n    if (cardParams.animate) {\n      $cardEl.addClass('card-opening');\n    }\n    $cardEl.trigger('card:open');\n    app.emit('cardOpen', $cardEl[0]);\n    function transitionEnd() {\n      $pageEl.addClass('page-with-card-opened');\n      if (device.ios && $pageContentEl.length) {\n        $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n        setTimeout(() => {\n          $pageContentEl.css('height', '');\n        });\n      }\n      $cardEl.addClass('card-opened');\n      $cardEl.removeClass('card-opening');\n      $cardEl.trigger('card:opened');\n      app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n    }\n    $cardContentEl.css({\n      width: `${maxWidth}px`,\n      height: `${maxHeight}px`\n    }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n    $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n    if (cardParams.animate) {\n      $cardEl.transitionEnd(() => {\n        transitionEnd();\n      });\n    } else {\n      transitionEnd();\n    }\n    function onResize() {\n      $cardEl.removeClass('card-transitioning');\n      cardWidth = $cardEl[0].offsetWidth;\n      cardHeight = $cardEl[0].offsetHeight;\n      pageWidth = $pageEl[0].offsetWidth;\n      pageHeight = $pageEl[0].offsetHeight;\n      maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n      maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n      statusbarHeight = 0;\n      if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n        statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n        if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n      }\n      if (statusbarHeight) {\n        maxHeight -= statusbarHeight;\n      }\n      scaleX = maxWidth / cardWidth;\n      scaleY = maxHeight / cardHeight;\n      $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n      offset = $cardEl.offset();\n      pageOffset = $pageEl.offset();\n      if (statusbarHeight) {\n        pageOffset.top += statusbarHeight / 2;\n      }\n      offset.left -= pageOffset.left;\n      offset.top -= pageOffset.top;\n      cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n      if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n      cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n      cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n      cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n      if (app.rtl) {\n        [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n      }\n      translateX = (cardRightOffset - cardLeftOffset) / 2;\n      translateY = (cardBottomOffset - cardTopOffset) / 2;\n      $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n      $cardContentEl.css({\n        width: `${maxWidth}px`,\n        height: `${maxHeight}px`\n      }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n    }\n    let cardScrollTop;\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchEndX;\n    let touchEndY;\n    let isScrolling;\n    let progress;\n    let isV;\n    let isH;\n    let $cardScrollableEl;\n    function onTouchStart(e) {\n      if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n      if (!$cardEl.hasClass('card-opened')) return;\n      $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n      if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {\n        cardScrollTop = 0;\n      } else {\n        cardScrollTop = $cardScrollableEl.scrollTop();\n      }\n      isTouched = true;\n      touchStartX = e.targetTouches[0].pageX;\n      touchStartY = e.targetTouches[0].pageY;\n      isScrolling = undefined;\n      isV = false;\n      isH = false;\n    }\n    function onTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      touchEndX = e.targetTouches[0].pageX;\n      touchEndY = e.targetTouches[0].pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n      }\n      if (!isH && !isV) {\n        if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n          isH = true;\n        } else {\n          isV = true;\n        }\n      }\n      if (!(isH || isV) || isV && cardScrollTop !== 0) {\n        isTouched = true;\n        isMoved = true;\n        return;\n      }\n      if (!isMoved) {\n        $cardEl.removeClass('card-transitioning');\n      }\n      isMoved = true;\n      progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n      if (progress > 0 && isV || isH) {\n        if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n          $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n          $cardScrollableEl.scrollTop(0);\n        }\n        e.preventDefault();\n      }\n      if (progress > 1) progress **= 0.3;\n      if (progress > (isV ? 1.3 : 1.1)) {\n        isTouched = false;\n        isMoved = false;\n        app.card.close($cardEl);\n      } else {\n        $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n      }\n    }\n    function onTouchEnd(e) {\n      if (!isTouched || !isMoved || !e.isTrusted) return;\n      isTouched = false;\n      isMoved = false;\n      if (device.ios) {\n        $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n      }\n      if (progress >= 0.8) {\n        app.card.close($cardEl);\n      } else {\n        $cardEl.addClass('card-transitioning').transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n      }\n    }\n    $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n      app.off('resize', onResize);\n      if (support.touch && cardParams.swipeToClose) {\n        app.off('touchstart:passive', onTouchStart);\n        app.off('touchmove:active', onTouchMove);\n        app.off('touchend:passive', onTouchEnd);\n      }\n    };\n    app.on('resize', onResize);\n    if (support.touch && cardParams.swipeToClose) {\n      app.on('touchstart:passive', onTouchStart);\n      app.on('touchmove:active', onTouchMove);\n      app.on('touchend:passive', onTouchEnd);\n    }\n  },\n  close(cardEl, animate) {\n    if (cardEl === void 0) {\n      cardEl = '.card-expandable.card-opened';\n    }\n    if (animate === void 0) {\n      animate = true;\n    }\n    const app = this;\n    const device = getDevice();\n    const $cardEl = $(cardEl).eq(0);\n    if (!$cardEl || !$cardEl.length) return;\n    if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n    const $cardContentEl = $cardEl.children('.card-content');\n    const $pageContentEl = $cardEl.parents('.page-content');\n    const $pageEl = $cardEl.parents('.page').eq(0);\n    if (!$pageEl.length) return;\n    const cardParams = Object.assign({\n      animate\n    }, app.params.card, $cardEl.dataset());\n    const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n    let $navbarEl;\n    let $toolbarEl;\n    let $backdropEl;\n    if ($cardEl.attr('data-backdrop-el')) {\n      $backdropEl = $($cardEl.attr('data-backdrop-el'));\n    }\n    if (cardParams.backdrop) {\n      $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n    }\n    if (cardParams.hideNavbarOnOpen) {\n      $navbarEl = $pageEl.children('.navbar');\n      if (!$navbarEl.length) {\n        if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n      }\n      if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n        app.navbar.show($navbarEl, cardParams.animate, true);\n      }\n    }\n    if (cardParams.hideToolbarOnOpen) {\n      $toolbarEl = $pageEl.children('.toolbar');\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n      }\n      if (!$toolbarEl.length) {\n        $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n      }\n      if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n        app.toolbar.show($toolbarEl, cardParams.animate);\n      }\n    }\n    $pageEl.removeClass('page-with-card-opened');\n    if (device.ios && $pageContentEl.length) {\n      $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n      setTimeout(() => {\n        $pageContentEl.css('height', '');\n      });\n    }\n    if ($backdropEl && $backdropEl.length) {\n      $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n    }\n    $cardEl.removeClass('card-opened card-transitioning');\n    if (cardParams.animate) {\n      $cardEl.addClass('card-closing');\n    } else {\n      $cardEl.addClass('card-no-transition');\n    }\n    $cardEl.transform('');\n    $cardEl.trigger('card:close');\n    app.emit('cardClose', $cardEl[0], $pageEl[0]);\n    const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n    function transitionEnd() {\n      if (!animateWidth) {\n        $cardContentEl.css({\n          width: '',\n          height: ''\n        });\n      }\n      if ($backdropEl && $backdropEl.length) {\n        $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n      }\n      $cardEl.removeClass('card-closing card-no-transition');\n      $cardEl.trigger('card:closed');\n      $cardEl.find('.card-expandable-size').remove();\n      app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n    }\n    if (animateWidth) {\n      $cardContentEl.css({\n        width: '',\n        height: ''\n      });\n    }\n    $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n    if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n      $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n    }\n    if (animate) {\n      $cardContentEl.transitionEnd(() => {\n        transitionEnd();\n      });\n    } else {\n      transitionEnd();\n    }\n    if ($cardEl[0].detachEventHandlers) {\n      $cardEl[0].detachEventHandlers();\n      delete $cardEl[0].detachEventHandlers;\n    }\n  },\n  toggle(cardEl, animate) {\n    if (cardEl === void 0) {\n      cardEl = '.card-expandable';\n    }\n    const app = this;\n    const $cardEl = $(cardEl).eq(0);\n    if (!$cardEl.length) return;\n    if ($cardEl.hasClass('card-opened')) {\n      app.card.close($cardEl, animate);\n    } else {\n      app.card.open($cardEl, animate);\n    }\n  }\n};\nexport default {\n  name: 'card',\n  params: {\n    card: {\n      hideNavbarOnOpen: true,\n      hideStatusbarOnOpen: true,\n      hideToolbarOnOpen: true,\n      scrollableEl: '.card-content',\n      swipeToClose: true,\n      closeByBackdropClick: true,\n      backdrop: true\n    }\n  },\n  create() {\n    const app = this;\n    bindMethods(app, {\n      card: CardExpandable\n    });\n  },\n  on: {\n    pageBeforeIn(page) {\n      const app = this;\n      if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n        app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n      }\n      if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n        let $toolbarEl = page.$el.children('.toolbar');\n        if (!$toolbarEl.length) {\n          $toolbarEl = page.$el.parents('.view').children('.toolbar');\n        }\n        if (!$toolbarEl.length) {\n          $toolbarEl = page.$el.parents('.views').children('.toolbar');\n        }\n        if ($toolbarEl && $toolbarEl.length) {\n          app.toolbar.hide($toolbarEl);\n        }\n      }\n    }\n  },\n  clicks: {\n    '.card-close': function closeCard($clickedEl, data) {\n      const app = this;\n      app.card.close(data.card, data.animate);\n    },\n    '.card-open': function closeCard($clickedEl, data) {\n      const app = this;\n      app.card.open(data.card, data.animate);\n    },\n    '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n      const app = this;\n      if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n      if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n      app.card.open($clickedEl);\n    },\n    '.card-backdrop-in': function onBackdropClick() {\n      const app = this;\n      let needToClose = false;\n      if (app.params.card.closeByBackdropClick) needToClose = true;\n      const $openedCardEl = $('.card-opened');\n      if (!$openedCardEl.length) return;\n      if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n        needToClose = true;\n      } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n        needToClose = false;\n      }\n      if (needToClose) app.card.close($openedCardEl);\n    }\n  }\n};", "export default {\n  name: 'chip'\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n  store(form, data) {\n    const app = this;\n    const window = getWindow();\n    let formId = form;\n    const $formEl = $(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n    // Store form data in app.formsData\n    app.form.data[`form-${formId}`] = data;\n\n    // Store form data in local storage also\n    window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n  },\n  get(form) {\n    const app = this;\n    const window = getWindow();\n    let formId = form;\n    const $formEl = $(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n    if (window.localStorage[`f7form-${formId}`]) {\n      return JSON.parse(window.localStorage[`f7form-${formId}`]);\n    }\n    if (app.form.data[`form-${formId}`]) {\n      return app.form.data[`form-${formId}`];\n    }\n    return undefined;\n  },\n  remove(form) {\n    const app = this;\n    const window = getWindow();\n    let formId = form;\n    const $formEl = $(form);\n    if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n      formId = $formEl.attr('id');\n    }\n\n    // Delete form data from app.formsData\n    if (app.form.data[`form-${formId}`]) {\n      app.form.data[`form-${formId}`] = '';\n      delete app.form.data[`form-${formId}`];\n    }\n\n    // Delete form data from local storage also\n    if (window.localStorage[`f7form-${formId}`]) {\n      window.localStorage[`f7form-${formId}`] = '';\n      window.localStorage.removeItem(`f7form-${formId}`);\n    }\n  }\n};\n\n// Form Storage\nconst FormStorage = {\n  init(formEl) {\n    const app = this;\n    const $formEl = $(formEl);\n    const formId = $formEl.attr('id');\n    if (!formId) return;\n    const initialData = app.form.getFormData(formId);\n    if (initialData) {\n      app.form.fillFromData($formEl, initialData);\n    }\n    function store() {\n      const data = app.form.convertToData($formEl);\n      if (!data) return;\n      app.form.storeFormData(formId, data);\n      $formEl.trigger('form:storedata', data);\n      app.emit('formStoreData', $formEl[0], data);\n    }\n    $formEl.on('change submit', store);\n  },\n  destroy(formEl) {\n    const $formEl = $(formEl);\n    $formEl.off('change submit');\n  }\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n  const app = this;\n  const $formEl = $(formEl).eq(0);\n  if ($formEl.length === 0) return undefined;\n\n  // Form data\n  const data = {};\n\n  // Skip input types\n  const skipTypes = ['submit', 'image', 'button', 'file'];\n  const skipNames = [];\n  $formEl.find('input, select, textarea').each(inputEl => {\n    const $inputEl = $(inputEl);\n    if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n      return;\n    }\n    const name = $inputEl.attr('name');\n    const type = $inputEl.attr('type');\n    const tag = inputEl.nodeName.toLowerCase();\n    if (skipTypes.indexOf(type) >= 0) return;\n    if (skipNames.indexOf(name) >= 0 || !name) return;\n    if (tag === 'select' && $inputEl.prop('multiple')) {\n      skipNames.push(name);\n      data[name] = [];\n      $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n        if (el.selected) data[name].push(el.value);\n      });\n    } else {\n      switch (type) {\n        case 'checkbox':\n          skipNames.push(name);\n          data[name] = [];\n          $formEl.find(`input[name=\"${name}\"]`).each(el => {\n            if (el.checked) data[name].push(el.value);\n          });\n          break;\n        case 'radio':\n          skipNames.push(name);\n          $formEl.find(`input[name=\"${name}\"]`).each(el => {\n            if (el.checked) data[name] = el.value;\n          });\n          break;\n        default:\n          data[name] = $inputEl.val();\n          break;\n      }\n    }\n  });\n  $formEl.trigger('form:todata', data);\n  app.emit('formToData', $formEl[0], data);\n  return data;\n}\nfunction formFromData(formEl, formData) {\n  const app = this;\n  const $formEl = $(formEl).eq(0);\n  if (!$formEl.length) return;\n  let data = formData;\n  const formId = $formEl.attr('id');\n  if (!data && formId) {\n    data = app.form.getFormData(formId);\n  }\n  if (!data) return;\n\n  // Skip input types\n  const skipTypes = ['submit', 'image', 'button', 'file'];\n  const skipNames = [];\n  $formEl.find('input, select, textarea').each(inputEl => {\n    const $inputEl = $(inputEl);\n    if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n      return;\n    }\n    const name = $inputEl.attr('name');\n    const type = $inputEl.attr('type');\n    const tag = inputEl.nodeName.toLowerCase();\n    if (typeof data[name] === 'undefined' || data[name] === null) return;\n    if (skipTypes.indexOf(type) >= 0) return;\n    if (skipNames.indexOf(name) >= 0 || !name) return;\n    if (tag === 'select' && $inputEl.prop('multiple')) {\n      skipNames.push(name);\n      $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n        const selectEl = el;\n        if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;\n      });\n    } else {\n      switch (type) {\n        case 'checkbox':\n          skipNames.push(name);\n          $formEl.find(`input[name=\"${name}\"]`).each(el => {\n            const checkboxEl = el;\n            if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;\n          });\n          break;\n        case 'radio':\n          skipNames.push(name);\n          $formEl.find(`input[name=\"${name}\"]`).each(el => {\n            const radioEl = el;\n            if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;\n          });\n          break;\n        default:\n          $inputEl.val(data[name]);\n          break;\n      }\n    }\n    if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n      $inputEl.trigger('change', 'fromdata');\n    }\n  });\n  $formEl.trigger('form:fromdata', data);\n  app.emit('formFromData', $formEl[0], data);\n}\nfunction initAjaxForm() {\n  const app = this;\n  const window = getWindow();\n  const document = getDocument();\n  function onSubmitChange(e, fromData) {\n    const $formEl = $(this);\n    if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n    if (e.type === 'submit') e.preventDefault();\n    if (e.type === 'change' && fromData === 'fromdata') return;\n    const method = ($formEl.attr('method') || 'GET').toUpperCase();\n    const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n    let url = $formEl.attr('action');\n    if (!url) return;\n    let data;\n    if (method === 'POST') {\n      if (contentType === 'application/x-www-form-urlencoded' || contentType === 'application/json') {\n        data = app.form.convertToData($formEl[0]);\n        if (contentType === 'application/json') {\n          data = JSON.stringify(data);\n        }\n      } else {\n        data = new window.FormData($formEl[0]);\n      }\n    } else {\n      data = serializeObject(app.form.convertToData($formEl[0]));\n      if (url.includes('?')) {\n        url += `&${data}`;\n      } else {\n        url += `?${data}`;\n      }\n    }\n    $formEl.trigger('formajax:beforesend', {\n      data\n    });\n    app.emit('formAjaxBeforeSend', $formEl[0], data);\n    fetch(url, {\n      method,\n      headers: {\n        'Content-Type': contentType || 'application/x-www-form-urlencoded'\n      },\n      ...(method === 'POST' || method === 'PUT' ? {\n        body: data\n      } : {})\n    }).then(response => {\n      $formEl.trigger('formajax:complete', {\n        data,\n        response\n      });\n      app.emit('formAjaxComplete', $formEl[0], data, response);\n      $formEl.trigger('formajax:success', {\n        data,\n        response\n      });\n      app.emit('formAjaxSuccess', $formEl[0], data, response);\n    }).catch(error => {\n      $formEl.trigger('formajax:error', {\n        data,\n        error\n      });\n      app.emit('formAjaxError', $formEl[0], data, error);\n    });\n  }\n  $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\nexport default {\n  name: 'form',\n  create() {\n    const app = this;\n    extend(app, {\n      form: {\n        data: {},\n        storeFormData: FormData.store.bind(app),\n        getFormData: FormData.get.bind(app),\n        removeFormData: FormData.remove.bind(app),\n        convertToData: formToData.bind(app),\n        fillFromData: formFromData.bind(app),\n        storage: {\n          init: FormStorage.init.bind(app),\n          destroy: FormStorage.destroy.bind(app)\n        }\n      }\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      initAjaxForm.call(app);\n    },\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl).find('.form-store-data').each(formEl => {\n        app.form.storage.destroy(formEl);\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.form-store-data').each(formEl => {\n        app.form.storage.init(formEl);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.form-store-data').each(formEl => {\n        app.form.storage.destroy(formEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.form-store-data').each(formEl => {\n        app.form.storage.init(formEl);\n      });\n    }\n  }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst Input = {\n  ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n  createTextareaResizableShadow() {\n    const document = getDocument();\n    const $shadowEl = $(document.createElement('textarea'));\n    $shadowEl.addClass('textarea-resizable-shadow');\n    $shadowEl.prop({\n      disabled: true,\n      readonly: true\n    });\n    Input.textareaResizableShadow = $shadowEl;\n  },\n  textareaResizableShadow: undefined,\n  resizeTextarea(textareaEl) {\n    const app = this;\n    const window = getWindow();\n    const $textareaEl = $(textareaEl);\n    if (!Input.textareaResizableShadow) {\n      Input.createTextareaResizableShadow();\n    }\n    const $shadowEl = Input.textareaResizableShadow;\n    if (!$textareaEl.length) return;\n    if (!$textareaEl.hasClass('resizable')) return;\n    if (Input.textareaResizableShadow.parents().length === 0) {\n      app.$el.append($shadowEl);\n    }\n    const styles = window.getComputedStyle($textareaEl[0]);\n    'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(style => {\n      let styleValue = styles[style];\n      if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n        styleValue = styleValue.replace(',', '.');\n      }\n      $shadowEl.css(style, styleValue);\n    });\n    const currentHeight = $textareaEl[0].clientHeight;\n    $shadowEl.val('');\n    const initialHeight = $shadowEl[0].scrollHeight;\n    $shadowEl.val($textareaEl.val());\n    $shadowEl.css('height', 0);\n    const scrollHeight = $shadowEl[0].scrollHeight;\n    if (currentHeight !== scrollHeight) {\n      if (scrollHeight > initialHeight) {\n        $textareaEl.css('height', `${scrollHeight}px`);\n      } else if (scrollHeight < currentHeight) {\n        $textareaEl.css('height', '');\n      }\n      if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n        $textareaEl.trigger('textarea:resize', {\n          initialHeight,\n          currentHeight,\n          scrollHeight\n        });\n        app.emit('textareaResize', {\n          initialHeight,\n          currentHeight,\n          scrollHeight\n        });\n      }\n    }\n  },\n  validate(inputEl) {\n    const $inputEl = $(inputEl);\n    if (!$inputEl.length) return true;\n    const $itemInputEl = $inputEl.parents('.item-input');\n    const $inputWrapEl = $inputEl.parents('.input');\n    function unsetReadonly() {\n      if ($inputEl[0].f7ValidateReadonly) {\n        $inputEl[0].readOnly = false;\n      }\n    }\n    function setReadonly() {\n      if ($inputEl[0].f7ValidateReadonly) {\n        $inputEl[0].readOnly = true;\n      }\n    }\n    unsetReadonly();\n    const validity = $inputEl[0].validity;\n    const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n    if (!validity) {\n      setReadonly();\n      return true;\n    }\n    if (!validity.valid) {\n      let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n      if (validationMessage) {\n        if ($errorEl.length === 0) {\n          $errorEl = $(`<div class=\"${$inputWrapEl.length ? 'input-error-message' : 'item-input-error-message'}\"></div>`);\n          $errorEl.insertAfter($inputEl);\n        }\n        $errorEl.text(validationMessage);\n      }\n      if ($errorEl.length > 0) {\n        $itemInputEl.addClass('item-input-with-error-message');\n        $inputWrapEl.addClass('input-with-error-message');\n      }\n      $itemInputEl.addClass('item-input-invalid');\n      $inputWrapEl.addClass('input-invalid');\n      $inputEl.addClass('input-invalid');\n      setReadonly();\n      return false;\n    }\n    $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n    $inputWrapEl.removeClass('input-invalid input-with-error-message');\n    $inputEl.removeClass('input-invalid');\n    setReadonly();\n    return true;\n  },\n  validateInputs(el) {\n    const app = this;\n    const validates = $(el).find('input, textarea, select').map(inputEl => app.input.validate(inputEl));\n    return validates.indexOf(false) < 0;\n  },\n  focus(inputEl) {\n    const $inputEl = $(inputEl);\n    const type = $inputEl.attr('type');\n    if (Input.ignoreTypes.indexOf(type) >= 0) return;\n    $inputEl.parents('.item-input').addClass('item-input-focused');\n    $inputEl.parents('.input').addClass('input-focused');\n    $inputEl.addClass('input-focused');\n  },\n  blur(inputEl) {\n    const $inputEl = $(inputEl);\n    $inputEl.parents('.item-input').removeClass('item-input-focused');\n    $inputEl.parents('.input').removeClass('input-focused');\n    $inputEl.removeClass('input-focused');\n  },\n  checkEmptyState(inputEl) {\n    const app = this;\n    let $inputEl = $(inputEl);\n    if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n      $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n    }\n    if (!$inputEl.length) return;\n    const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n    let value;\n    if (isContentEditable) {\n      if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();\n    } else {\n      value = $inputEl.val();\n    }\n    const $itemInputEl = $inputEl.parents('.item-input');\n    const $inputWrapEl = $inputEl.parents('.input');\n    if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {\n      $itemInputEl.addClass('item-input-with-value');\n      $inputWrapEl.addClass('input-with-value');\n      $inputEl.addClass('input-with-value');\n      $inputEl.trigger('input:notempty');\n      app.emit('inputNotEmpty', $inputEl[0]);\n    } else {\n      $itemInputEl.removeClass('item-input-with-value');\n      $inputWrapEl.removeClass('input-with-value');\n      $inputEl.removeClass('input-with-value');\n      $inputEl.trigger('input:empty');\n      app.emit('inputEmpty', $inputEl[0]);\n    }\n  },\n  scrollIntoView(inputEl, duration, centered, force) {\n    if (duration === void 0) {\n      duration = 0;\n    }\n    const $inputEl = $(inputEl);\n    const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n    if (!$scrollableEl.length) {\n      return false;\n    }\n    const contentHeight = $scrollableEl[0].offsetHeight;\n    const contentScrollTop = $scrollableEl[0].scrollTop;\n    const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n    const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n    const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n    const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n    const inputHeight = $inputEl[0].offsetHeight;\n    const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n    const max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n    const centeredPosition = min + (max - min) / 2;\n    if (contentScrollTop > min) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n      return true;\n    }\n    if (contentScrollTop < max) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n      return true;\n    }\n    if (force) {\n      $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n    }\n    return false;\n  },\n  init() {\n    const app = this;\n    const device = getDevice();\n    const window = getWindow();\n    const document = getDocument();\n    Input.createTextareaResizableShadow();\n    function onFocus() {\n      const inputEl = this;\n      if (app.params.input.scrollIntoViewOnFocus) {\n        if (device.android) {\n          $(window).once('resize', () => {\n            if (document && document.activeElement === inputEl) {\n              app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n            }\n          });\n        } else {\n          app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n        }\n      }\n      app.input.focus(inputEl);\n    }\n    function onBlur() {\n      const $inputEl = $(this);\n      const tag = $inputEl[0].nodeName.toLowerCase();\n      app.input.blur($inputEl);\n      if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n        app.input.validate($inputEl);\n      }\n      // Resize textarea\n      if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n        if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n      }\n    }\n    function onChange() {\n      const $inputEl = $(this);\n      const type = $inputEl.attr('type');\n      const tag = $inputEl[0].nodeName.toLowerCase();\n      const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n      if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n      // Check Empty State\n      app.input.checkEmptyState($inputEl);\n      if (isContentEditable) return;\n\n      // Check validation\n      if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n        app.input.validate($inputEl);\n      }\n\n      // Resize textarea\n      if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n        app.input.resizeTextarea($inputEl);\n      }\n    }\n    function onInvalid(e) {\n      const $inputEl = $(this);\n      if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n        e.preventDefault();\n        app.input.validate($inputEl);\n      }\n    }\n    function clearInput() {\n      const $clicked = $(this);\n      const $inputEl = $clicked.siblings('input, textarea').eq(0);\n      const previousValue = $inputEl.val();\n      $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n      app.emit('inputClear', previousValue);\n    }\n    function preventDefault(e) {\n      e.preventDefault();\n    }\n    $(document).on('click', '.input-clear-button', clearInput);\n    $(document).on('mousedown', '.input-clear-button', preventDefault);\n    $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n    $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n    $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n    $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n  }\n};\nexport default {\n  name: 'input',\n  params: {\n    input: {\n      scrollIntoViewOnFocus: undefined,\n      scrollIntoViewCentered: false,\n      scrollIntoViewDuration: 0,\n      scrollIntoViewAlways: false\n    }\n  },\n  create() {\n    const app = this;\n    if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n      app.params.input.scrollIntoViewOnFocus = getDevice().android;\n    }\n    bindMethods(app, {\n      input: Input\n    });\n  },\n  on: {\n    init() {\n      const app = this;\n      app.input.init();\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      const $tabEl = $(tabEl);\n      $tabEl.find('.item-input, .input').each(itemInputEl => {\n        const $itemInputEl = $(itemInputEl);\n        $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n          const $inputEl = $(inputEl);\n          if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n          app.input.checkEmptyState($inputEl);\n        });\n      });\n      $tabEl.find('textarea.resizable').each(textareaEl => {\n        app.input.resizeTextarea(textareaEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      const $pageEl = page.$el;\n      $pageEl.find('.item-input, .input').each(itemInputEl => {\n        const $itemInputEl = $(itemInputEl);\n        $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n          const $inputEl = $(inputEl);\n          if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n          app.input.checkEmptyState($inputEl);\n        });\n      });\n      $pageEl.find('textarea.resizable').each(textareaEl => {\n        app.input.resizeTextarea(textareaEl);\n      });\n    },\n    'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n      const app = this;\n      if (instance && instance.$el) {\n        instance.$el.find('textarea.resizable').each(textareaEl => {\n          app.input.resizeTextarea(textareaEl);\n        });\n      } else {\n        $('textarea.resizable').each(textareaEl => {\n          app.input.resizeTextarea(textareaEl);\n        });\n      }\n    }\n  }\n};", "export default {\n  name: 'checkbox'\n};", "export default {\n  name: 'radio'\n};", "import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Toggle extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const toggle = this;\n    const support = getSupport();\n    const defaults = {};\n\n    // Extend defaults with modules params\n    toggle.useModulesParams(defaults);\n    toggle.params = extend(defaults, params);\n    const el = toggle.params.el;\n    if (!el) return toggle;\n    const $el = $(el);\n    if ($el.length === 0) return toggle;\n    if ($el[0].f7Toggle) return $el[0].f7Toggle;\n    const $inputEl = $el.children('input[type=\"checkbox\"]');\n    extend(toggle, {\n      app,\n      $el,\n      el: $el[0],\n      $inputEl,\n      inputEl: $inputEl[0],\n      disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled\n    });\n    Object.defineProperty(toggle, 'checked', {\n      enumerable: true,\n      configurable: true,\n      set(checked) {\n        if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n        if (toggle.checked === checked) return;\n        $inputEl[0].checked = checked;\n        toggle.$inputEl.trigger('change');\n      },\n      get() {\n        return $inputEl[0].checked;\n      }\n    });\n    $el[0].f7Toggle = toggle;\n    let isTouched;\n    const touchesStart = {};\n    let isScrolling;\n    let touchesDiff;\n    let toggleWidth;\n    let touchStartTime;\n    let touchStartChecked;\n    function handleTouchStart(e) {\n      if (isTouched || toggle.disabled) return;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchesDiff = 0;\n      isTouched = true;\n      isScrolling = undefined;\n      touchStartTime = now();\n      touchStartChecked = toggle.checked;\n      toggleWidth = $el[0].offsetWidth;\n      nextTick(() => {\n        if (isTouched) {\n          $el.addClass('toggle-active-state');\n        }\n      });\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || toggle.disabled) return;\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      const inverter = app.rtl ? -1 : 1;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n      touchesDiff = pageX - touchesStart.x;\n      let changed;\n      if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n        changed = true;\n      }\n      if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n        changed = true;\n      }\n      if (changed) {\n        touchesStart.x = pageX;\n        toggle.checked = !touchStartChecked;\n        touchStartChecked = !touchStartChecked;\n      }\n    }\n    function handleTouchEnd() {\n      if (!isTouched || toggle.disabled) {\n        if (isScrolling) $el.removeClass('toggle-active-state');\n        isTouched = false;\n        return;\n      }\n      const inverter = app.rtl ? -1 : 1;\n      isTouched = false;\n      $el.removeClass('toggle-active-state');\n      let changed;\n      if (now() - touchStartTime < 300) {\n        if (touchesDiff * inverter < 0 && touchStartChecked) {\n          changed = true;\n        }\n        if (touchesDiff * inverter > 0 && !touchStartChecked) {\n          changed = true;\n        }\n        if (changed) {\n          toggle.checked = !touchStartChecked;\n        }\n      }\n    }\n    function handleInputChange() {\n      toggle.$el.trigger('toggle:change');\n      toggle.emit('local::change toggleChange', toggle);\n    }\n    toggle.attachEvents = function attachEvents() {\n      const passive = support.passiveListener ? {\n        passive: true\n      } : false;\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      toggle.$inputEl.on('change', handleInputChange);\n    };\n    toggle.detachEvents = function detachEvents() {\n      const passive = support.passiveListener ? {\n        passive: true\n      } : false;\n      $el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      toggle.$inputEl.off('change', handleInputChange);\n    };\n\n    // Install Modules\n    toggle.useModules();\n\n    // Init\n    toggle.init();\n  }\n  toggle() {\n    const toggle = this;\n    toggle.checked = !toggle.checked;\n  }\n  init() {\n    const toggle = this;\n    toggle.attachEvents();\n  }\n  destroy() {\n    let toggle = this;\n    toggle.$el.trigger('toggle:beforedestroy');\n    toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n    delete toggle.$el[0].f7Toggle;\n    toggle.detachEvents();\n    deleteProps(toggle);\n    toggle = null;\n  }\n}\nexport default Toggle;", "import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\nexport default {\n  name: 'toggle',\n  create() {\n    const app = this;\n    app.toggle = ConstructorMethods({\n      defaultSelector: '.toggle',\n      constructor: Toggle,\n      app,\n      domProp: 'f7Toggle'\n    });\n  },\n  static: {\n    Toggle\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.toggle-init').each(toggleEl => app.toggle.create({\n        el: toggleEl\n      }));\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.toggle-init').each(toggleEl => {\n        if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.toggle-init').each(toggleEl => app.toggle.create({\n        el: toggleEl\n      }));\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.toggle-init').each(toggleEl => {\n        if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n      });\n    }\n  },\n  vnode: {\n    'toggle-init': {\n      insert(vnode) {\n        const app = this;\n        const toggleEl = vnode.elm;\n        app.toggle.create({\n          el: toggleEl\n        });\n      },\n      destroy(vnode) {\n        const toggleEl = vnode.elm;\n        if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Range extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n    const range = this;\n    const support = getSupport();\n    const defaults = {\n      el: null,\n      inputEl: null,\n      dual: false,\n      step: 1,\n      label: false,\n      min: 0,\n      max: 100,\n      value: 0,\n      draggableBar: true,\n      vertical: false,\n      verticalReversed: false,\n      formatLabel: null,\n      scale: false,\n      scaleSteps: 5,\n      scaleSubSteps: 0,\n      formatScaleLabel: null,\n      limitKnobPosition: app.theme === 'ios'\n    };\n\n    // Extend defaults with modules params\n    range.useModulesParams(defaults);\n    range.params = extend(defaults, params);\n    const el = range.params.el;\n    if (!el) return range;\n    const $el = $(el);\n    if ($el.length === 0) return range;\n    if ($el[0].f7Range) return $el[0].f7Range;\n    const dataset = $el.dataset();\n    'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(paramName => {\n      if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n        range.params[paramName] = parseFloat(dataset[paramName]);\n      }\n    });\n    'dual label vertical verticalReversed scale'.split(' ').forEach(paramName => {\n      if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n        range.params[paramName] = dataset[paramName];\n      }\n    });\n    if (!range.params.value) {\n      if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n      if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n        range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n      }\n    }\n    let $inputEl;\n    if (!range.params.dual) {\n      if (range.params.inputEl) {\n        $inputEl = $(range.params.inputEl);\n      } else if ($el.find('input[type=\"range\"]').length) {\n        $inputEl = $el.find('input[type=\"range\"]').eq(0);\n      }\n    }\n    const {\n      dual,\n      step,\n      label,\n      min,\n      max,\n      value,\n      vertical,\n      verticalReversed,\n      scale,\n      scaleSteps,\n      scaleSubSteps,\n      limitKnobPosition\n    } = range.params;\n    extend(range, {\n      app,\n      $el,\n      el: $el[0],\n      $inputEl,\n      inputEl: $inputEl ? $inputEl[0] : undefined,\n      dual,\n      step,\n      label,\n      min,\n      max,\n      value,\n      previousValue: value,\n      vertical,\n      verticalReversed,\n      scale,\n      scaleSteps,\n      scaleSubSteps,\n      limitKnobPosition\n    });\n    if ($inputEl) {\n      'step min max'.split(' ').forEach(paramName => {\n        if (!params[paramName] && $inputEl.attr(paramName)) {\n          range.params[paramName] = parseFloat($inputEl.attr(paramName));\n          range[paramName] = parseFloat($inputEl.attr(paramName));\n        }\n      });\n      if (typeof $inputEl.val() !== 'undefined') {\n        range.params.value = parseFloat($inputEl.val());\n        range.value = parseFloat($inputEl.val());\n      }\n    }\n\n    // Dual\n    if (range.dual) {\n      $el.addClass('range-slider-dual');\n    }\n    if (range.label) {\n      $el.addClass('range-slider-label');\n    }\n\n    // Vertical\n    if (range.vertical) {\n      $el.addClass('range-slider-vertical');\n      if (range.verticalReversed) {\n        $el.addClass('range-slider-vertical-reversed');\n      }\n    } else {\n      $el.addClass('range-slider-horizontal');\n    }\n\n    // Check for layout\n    const $barEl = $('<div class=\"range-bar\"></div>');\n    const $barActiveEl = $('<div class=\"range-bar-active\"></div>');\n    $barEl.append($barActiveEl);\n\n    // Create Knobs\n    // prettier-ignore\n    const knobHTML = `\n      <div class=\"range-knob-wrap\">\n        <div class=\"range-knob\"></div>\n        ${range.label ? '<div class=\"range-knob-label\"></div>' : ''}\n      </div>\n    `;\n    const knobs = [$(knobHTML)];\n    if (range.dual) {\n      knobs.push($(knobHTML));\n    }\n    $el.append($barEl);\n    knobs.forEach($knobEl => {\n      $el.append($knobEl);\n    });\n\n    // Labels\n    const labels = [];\n    if (range.label) {\n      labels.push(knobs[0].find('.range-knob-label'));\n      if (range.dual) {\n        labels.push(knobs[1].find('.range-knob-label'));\n      }\n    }\n\n    // Scale\n    let $scaleEl;\n    if (range.scale && range.scaleSteps >= 1) {\n      $scaleEl = $(`\n        <div class=\"range-scale\">\n          ${range.renderScale()}\n        </div>\n      `);\n      $el.append($scaleEl);\n    }\n    extend(range, {\n      knobs,\n      labels,\n      $barEl,\n      $barActiveEl,\n      $scaleEl\n    });\n    $el[0].f7Range = range;\n\n    // Touch Events\n    let isTouched;\n    const touchesStart = {};\n    let isScrolling;\n    let rangeOffset;\n    let rangeOffsetLeft;\n    let rangeOffsetTop;\n    let $touchedKnobEl;\n    let dualValueIndex;\n    let valueChangedByTouch;\n    let targetTouchIdentifier;\n    function onTouchChange() {\n      valueChangedByTouch = true;\n    }\n    function handleTouchStart(e) {\n      if (isTouched) return;\n      if (!range.params.draggableBar) {\n        if ($(e.target).closest('.range-knob').length === 0) {\n          return;\n        }\n      }\n      valueChangedByTouch = false;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      if (e.type === 'touchstart') {\n        targetTouchIdentifier = e.targetTouches[0].identifier;\n      }\n      isTouched = true;\n      isScrolling = undefined;\n      rangeOffset = $el.offset();\n      rangeOffsetLeft = rangeOffset.left;\n      rangeOffsetTop = rangeOffset.top;\n      let progress;\n      if (range.vertical) {\n        progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n        if (!range.verticalReversed) progress = 1 - progress;\n      } else if (range.app.rtl) {\n        progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n      } else {\n        progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n      }\n      let newValue = progress * (range.max - range.min) + range.min;\n      if (range.dual) {\n        if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n          dualValueIndex = 0;\n          $touchedKnobEl = range.knobs[0];\n          newValue = [newValue, range.value[1]];\n        } else {\n          dualValueIndex = 1;\n          $touchedKnobEl = range.knobs[1];\n          newValue = [range.value[0], newValue];\n        }\n      } else {\n        $touchedKnobEl = range.knobs[0];\n        newValue = progress * (range.max - range.min) + range.min;\n      }\n      nextTick(() => {\n        if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n      }, 70);\n      range.on('change', onTouchChange);\n      range.setValue(newValue, true);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      let pageX;\n      let pageY;\n      if (e.type === 'touchmove') {\n        for (let i = 0; i < e.targetTouches.length; i += 1) {\n          if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n            pageX = e.targetTouches[i].pageX;\n            pageY = e.targetTouches[i].pageY;\n          }\n        }\n      } else {\n        pageX = e.pageX;\n        pageY = e.pageY;\n      }\n      if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n      if (typeof isScrolling === 'undefined' && !range.vertical) {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n      let progress;\n      if (range.vertical) {\n        progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n        if (!range.verticalReversed) progress = 1 - progress;\n      } else if (range.app.rtl) {\n        progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n      } else {\n        progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n      }\n      let newValue = progress * (range.max - range.min) + range.min;\n      if (range.dual) {\n        let leftValue;\n        let rightValue;\n        if (dualValueIndex === 0) {\n          leftValue = newValue;\n          rightValue = range.value[1];\n          if (leftValue > rightValue) {\n            rightValue = leftValue;\n          }\n        } else {\n          leftValue = range.value[0];\n          rightValue = newValue;\n          if (rightValue < leftValue) {\n            leftValue = rightValue;\n          }\n        }\n        newValue = [leftValue, rightValue];\n      }\n      range.setValue(newValue, true);\n    }\n    function handleTouchEnd(e) {\n      if (e.type === 'touchend') {\n        let touchEnded;\n        for (let i = 0; i < e.changedTouches.length; i += 1) {\n          if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n        }\n        if (!touchEnded) return;\n      }\n      if (!isTouched) {\n        if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n        isTouched = false;\n        return;\n      }\n      range.off('change', onTouchChange);\n      isTouched = false;\n      $touchedKnobEl.removeClass('range-knob-active-state');\n      if (valueChangedByTouch && range.$inputEl && !range.dual) {\n        range.$inputEl.trigger('change');\n      }\n      valueChangedByTouch = false;\n      if (typeof range.previousValue !== 'undefined') {\n        if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {\n          range.$el.trigger('range:changed', range.value);\n          range.emit('local::changed rangeChanged', range, range.value);\n        }\n      }\n    }\n    function handleResize() {\n      range.calcSize();\n      range.layout();\n    }\n    let parentModals;\n    let parentPanel;\n    let parentPage;\n    range.attachEvents = function attachEvents() {\n      const passive = support.passiveListener ? {\n        passive: true\n      } : false;\n      range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      app.on('tabShow', handleResize);\n      app.on('resize', handleResize);\n      parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n      parentModals.on('modal:open', handleResize);\n      parentPanel = range.$el.parents('.panel');\n      parentPanel.on('panel:open panel:resize', handleResize);\n      parentPage = range.$el.parents('.page').eq(0);\n      parentPage.on('page:reinit', handleResize);\n    };\n    range.detachEvents = function detachEvents() {\n      const passive = support.passiveListener ? {\n        passive: true\n      } : false;\n      range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('tabShow', handleResize);\n      app.off('resize', handleResize);\n      if (parentModals) {\n        parentModals.off('modal:open', handleResize);\n      }\n      if (parentPanel) {\n        parentPanel.off('panel:open panel:resize', handleResize);\n      }\n      if (parentPage) {\n        parentPage.off('page:reinit', handleResize);\n      }\n      parentModals = null;\n      parentPanel = null;\n      parentPage = null;\n    };\n\n    // Install Modules\n    range.useModules();\n\n    // Init\n    range.init();\n    return range;\n  }\n  calcSize() {\n    const range = this;\n    if (range.vertical) {\n      const height = range.$el.outerHeight();\n      if (height === 0) return;\n      range.rangeHeight = height;\n      range.knobHeight = range.knobs[0].outerHeight();\n    } else {\n      const width = range.$el.outerWidth();\n      if (width === 0) return;\n      range.rangeWidth = width;\n      range.knobWidth = range.knobs[0].outerWidth();\n    }\n  }\n  layout() {\n    const range = this;\n    const {\n      app,\n      knobWidth,\n      knobHeight,\n      rangeWidth,\n      rangeHeight,\n      min,\n      max,\n      knobs,\n      $barActiveEl,\n      value,\n      label,\n      labels,\n      vertical,\n      verticalReversed,\n      limitKnobPosition\n    } = range;\n    const knobSize = vertical ? knobHeight : knobWidth;\n    const rangeSize = vertical ? rangeHeight : rangeWidth;\n    // eslint-disable-next-line\n    const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n    if (range.dual) {\n      const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n      $barActiveEl.css({\n        [positionProperty]: `${progress[0] * 100}%`,\n        [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`\n      });\n      knobs.forEach(($knobEl, knobIndex) => {\n        let startPos = rangeSize * progress[knobIndex];\n        if (limitKnobPosition) {\n          const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n          if (realStartPos < 0) startPos = knobSize / 2;\n          if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n        }\n        $knobEl.css(positionProperty, `${startPos}px`);\n        if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n      });\n    } else {\n      const progress = (value - min) / (max - min);\n      $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n      let startPos = rangeSize * progress;\n      if (limitKnobPosition) {\n        const realStartPos = rangeSize * progress - knobSize / 2;\n        if (realStartPos < 0) startPos = knobSize / 2;\n        if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n      }\n      knobs[0].css(positionProperty, `${startPos}px`);\n      if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n    }\n    if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {\n      range.$el.addClass('range-slider-min');\n    } else {\n      range.$el.removeClass('range-slider-min');\n    }\n    if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {\n      range.$el.addClass('range-slider-max');\n    } else {\n      range.$el.removeClass('range-slider-max');\n    }\n  }\n  setValue(newValue, byTouchMove) {\n    const range = this;\n    const {\n      step,\n      min,\n      max\n    } = range;\n    let valueChanged;\n    let oldValue;\n    if (range.dual) {\n      oldValue = [range.value[0], range.value[1]];\n      let newValues = newValue;\n      if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n      if (newValue[0] > newValue[1]) {\n        newValues = [newValues[0], newValues[0]];\n      }\n      newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n      if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n        return range;\n      }\n      newValues.forEach((value, valueIndex) => {\n        range.value[valueIndex] = value;\n      });\n      valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n      range.layout();\n    } else {\n      oldValue = range.value;\n      const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n      range.value = value;\n      range.layout();\n      valueChanged = oldValue !== value;\n    }\n    if (valueChanged) {\n      range.previousValue = oldValue;\n    }\n    // Events\n    if (!valueChanged) return range;\n    range.$el.trigger('range:change', range.value);\n    if (range.$inputEl && !range.dual) {\n      range.$inputEl.val(range.value);\n      if (!byTouchMove) {\n        range.$inputEl.trigger('input change');\n      } else {\n        range.$inputEl.trigger('input');\n      }\n    }\n    if (!byTouchMove) {\n      range.$el.trigger('range:changed', range.value);\n      range.emit('local::changed rangeChanged', range, range.value);\n    }\n    range.emit('local::change rangeChange', range, range.value);\n    return range;\n  }\n  getValue() {\n    return this.value;\n  }\n  formatLabel(value, labelEl) {\n    const range = this;\n    if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n    return value;\n  }\n  formatScaleLabel(value) {\n    const range = this;\n    if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n    return value;\n  }\n  renderScale() {\n    const range = this;\n    const {\n      app,\n      verticalReversed,\n      vertical\n    } = range;\n\n    // eslint-disable-next-line\n    const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n    let html = '';\n    Array.from({\n      length: range.scaleSteps + 1\n    }).forEach((scaleEl, index) => {\n      const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n      const scaleValue = range.min + scaleStepValue * index;\n      const progress = (scaleValue - range.min) / (range.max - range.min);\n      html += `<div class=\"range-scale-step\" style=\"${positionProperty}: ${progress * 100}%\">${range.formatScaleLabel(scaleValue)}</div>`;\n      if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n        Array.from({\n          length: range.scaleSubSteps - 1\n        }).forEach((subStepEl, subIndex) => {\n          const subStep = scaleStepValue / range.scaleSubSteps;\n          const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n          const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n          html += `<div class=\"range-scale-step range-scale-substep\" style=\"${positionProperty}: ${subProgress * 100}%\"></div>`;\n        });\n      }\n    });\n    return html;\n  }\n  updateScale() {\n    const range = this;\n    if (!range.scale || range.scaleSteps < 1) {\n      if (range.$scaleEl) range.$scaleEl.remove();\n      delete range.$scaleEl;\n      return;\n    }\n    if (!range.$scaleEl) {\n      range.$scaleEl = $('<div class=\"range-scale\"></div>');\n      range.$el.append(range.$scaleEl);\n    }\n    range.$scaleEl.html(range.renderScale());\n  }\n  init() {\n    const range = this;\n    range.calcSize();\n    range.layout();\n    range.attachEvents();\n    return range;\n  }\n  destroy() {\n    let range = this;\n    range.$el.trigger('range:beforedestroy');\n    range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n    delete range.$el[0].f7Range;\n    range.detachEvents();\n    deleteProps(range);\n    range = null;\n  }\n}\nexport default Range;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'range',\n  create() {\n    const app = this;\n    app.range = extend(ConstructorMethods({\n      defaultSelector: '.range-slider',\n      constructor: Range,\n      app,\n      domProp: 'f7Range'\n    }), {\n      getValue(el) {\n        if (el === void 0) {\n          el = '.range-slider';\n        }\n        const range = app.range.get(el);\n        if (range) return range.getValue();\n        return undefined;\n      },\n      setValue(el, value) {\n        if (el === void 0) {\n          el = '.range-slider';\n        }\n        const range = app.range.get(el);\n        if (range) return range.setValue(value);\n        return undefined;\n      }\n    });\n  },\n  static: {\n    Range\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.range-slider-init').each(rangeEl => new Range(app, {\n        el: rangeEl\n      }));\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.range-slider-init').each(rangeEl => {\n        if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.range-slider-init').each(rangeEl => new Range(app, {\n        el: rangeEl\n      }));\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.range-slider-init').each(rangeEl => {\n        if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n      });\n    }\n  },\n  vnode: {\n    'range-slider-init': {\n      insert(vnode) {\n        const rangeEl = vnode.elm;\n        const app = this;\n        app.range.create({\n          el: rangeEl\n        });\n      },\n      destroy(vnode) {\n        const rangeEl = vnode.elm;\n        if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Stepper extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n    const stepper = this;\n    const defaults = {\n      el: null,\n      inputEl: null,\n      valueEl: null,\n      value: 0,\n      formatValue: null,\n      step: 1,\n      min: 0,\n      max: 100,\n      watchInput: true,\n      autorepeat: false,\n      autorepeatDynamic: false,\n      wraps: false,\n      manualInputMode: false,\n      decimalPoint: 4,\n      buttonsEndInputMode: true\n    };\n\n    // Extend defaults with modules params\n    stepper.useModulesParams(defaults);\n    stepper.params = extend(defaults, params);\n    if (stepper.params.value < stepper.params.min) {\n      stepper.params.value = stepper.params.min;\n    }\n    if (stepper.params.value > stepper.params.max) {\n      stepper.params.value = stepper.params.max;\n    }\n    const el = stepper.params.el;\n    if (!el) return stepper;\n    const $el = $(el);\n    if ($el.length === 0) return stepper;\n    if ($el[0].f7Stepper) return $el[0].f7Stepper;\n    let $inputEl;\n    if (stepper.params.inputEl) {\n      $inputEl = $(stepper.params.inputEl);\n    } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n      $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n    }\n    if ($inputEl && $inputEl.length) {\n      'step min max'.split(' ').forEach(paramName => {\n        if (!params[paramName] && $inputEl.attr(paramName)) {\n          stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n        }\n      });\n      const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n      if (Number.isNaN(decimalPoint)) {\n        stepper.params.decimalPoint = 0;\n      } else {\n        stepper.params.decimalPoint = decimalPoint;\n      }\n      const inputValue = parseFloat($inputEl.val());\n      if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n        stepper.params.value = inputValue;\n      }\n    }\n    let $valueEl;\n    if (stepper.params.valueEl) {\n      $valueEl = $(stepper.params.valueEl);\n    } else if ($el.find('.stepper-value').length) {\n      $valueEl = $el.find('.stepper-value').eq(0);\n    }\n    const $buttonPlusEl = $el.find('.stepper-button-plus');\n    const $buttonMinusEl = $el.find('.stepper-button-minus');\n    const {\n      step,\n      min,\n      max,\n      value,\n      decimalPoint\n    } = stepper.params;\n    extend(stepper, {\n      app,\n      $el,\n      el: $el[0],\n      $buttonPlusEl,\n      buttonPlusEl: $buttonPlusEl[0],\n      $buttonMinusEl,\n      buttonMinusEl: $buttonMinusEl[0],\n      $inputEl,\n      inputEl: $inputEl ? $inputEl[0] : undefined,\n      $valueEl,\n      valueEl: $valueEl ? $valueEl[0] : undefined,\n      step,\n      min,\n      max,\n      value,\n      decimalPoint,\n      typeModeChanged: false\n    });\n    $el[0].f7Stepper = stepper;\n\n    // Handle Events\n    const touchesStart = {};\n    let isTouched;\n    let isScrolling;\n    let preventButtonClick;\n    let intervalId;\n    let timeoutId;\n    let autorepeatAction = null;\n    let autorepeatInAction = false;\n    let manualInput = false;\n    function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n      clearTimeout(timeoutId);\n      timeoutId = setTimeout(() => {\n        if (current === 1) {\n          preventButtonClick = true;\n          autorepeatInAction = true;\n        }\n        clearInterval(intervalId);\n        action();\n        intervalId = setInterval(() => {\n          action();\n        }, repeatEvery);\n        if (current < progressions) {\n          dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n        }\n      }, current === 1 ? startsIn : progressionStep);\n    }\n    function onTouchStart(e) {\n      if (isTouched) return;\n      if (manualInput) {\n        return;\n      }\n      if ($(e.target).closest($buttonPlusEl).length) {\n        autorepeatAction = 'increment';\n      } else if ($(e.target).closest($buttonMinusEl).length) {\n        autorepeatAction = 'decrement';\n      }\n      if (!autorepeatAction) return;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      isTouched = true;\n      isScrolling = undefined;\n      const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n      dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n        stepper[autorepeatAction]();\n      });\n    }\n    function onTouchMove(e) {\n      if (!isTouched) return;\n      if (manualInput) {\n        return;\n      }\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n      if (isScrolling || distance > 20) {\n        isTouched = false;\n        clearTimeout(timeoutId);\n        clearInterval(intervalId);\n      }\n    }\n    function onTouchEnd() {\n      clearTimeout(timeoutId);\n      clearInterval(intervalId);\n      autorepeatAction = null;\n      autorepeatInAction = false;\n      isTouched = false;\n    }\n    function onMinusClick() {\n      if (manualInput) {\n        if (stepper.params.buttonsEndInputMode) {\n          manualInput = false;\n          stepper.endTypeMode(true);\n        }\n        return;\n      }\n      if (preventButtonClick) {\n        preventButtonClick = false;\n        return;\n      }\n      stepper.decrement(true);\n    }\n    function onPlusClick() {\n      if (manualInput) {\n        if (stepper.params.buttonsEndInputMode) {\n          manualInput = false;\n          stepper.endTypeMode(true);\n        }\n        return;\n      }\n      if (preventButtonClick) {\n        preventButtonClick = false;\n        return;\n      }\n      stepper.increment(true);\n    }\n    function onInputClick(e) {\n      if (!e.target.readOnly && stepper.params.manualInputMode) {\n        manualInput = true;\n        if (typeof e.target.selectionStart === 'number') {\n          e.target.selectionStart = e.target.value.length;\n          e.target.selectionEnd = e.target.value.length;\n        }\n      }\n    }\n    function onInputKey(e) {\n      if (e.keyCode === 13 || e.which === 13) {\n        e.preventDefault();\n        manualInput = false;\n        stepper.endTypeMode();\n      }\n    }\n    function onInputBlur() {\n      manualInput = false;\n      stepper.endTypeMode(true);\n    }\n    function onInput(e) {\n      if (manualInput) {\n        stepper.typeValue(e.target.value);\n        return;\n      }\n      if (e.detail && e.detail.sentByF7Stepper) return;\n      stepper.setValue(e.target.value, true);\n    }\n    stepper.attachEvents = function attachEvents() {\n      $buttonMinusEl.on('click', onMinusClick);\n      $buttonPlusEl.on('click', onPlusClick);\n      if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n        $inputEl.on('input', onInput);\n        $inputEl.on('click', onInputClick);\n        $inputEl.on('blur', onInputBlur);\n        $inputEl.on('keyup', onInputKey);\n      }\n      if (stepper.params.autorepeat) {\n        app.on('touchstart:passive', onTouchStart);\n        app.on('touchmove:active', onTouchMove);\n        app.on('touchend:passive', onTouchEnd);\n      }\n    };\n    stepper.detachEvents = function detachEvents() {\n      $buttonMinusEl.off('click', onMinusClick);\n      $buttonPlusEl.off('click', onPlusClick);\n      if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n        $inputEl.off('input', onInput);\n        $inputEl.off('click', onInputClick);\n        $inputEl.off('blur', onInputBlur);\n        $inputEl.off('keyup', onInputKey);\n      }\n    };\n\n    // Install Modules\n    stepper.useModules();\n\n    // Init\n    stepper.init();\n    return stepper;\n  }\n  minus() {\n    return this.decrement();\n  }\n  plus() {\n    return this.increment();\n  }\n  decrement() {\n    const stepper = this;\n    return stepper.setValue(stepper.value - stepper.step, false, true);\n  }\n  increment() {\n    const stepper = this;\n    return stepper.setValue(stepper.value + stepper.step, false, true);\n  }\n  setValue(newValue, forceUpdate, withWraps) {\n    const stepper = this;\n    const {\n      step,\n      min,\n      max\n    } = stepper;\n    const oldValue = stepper.value;\n    let value = Math.round(newValue / step) * step;\n    if (stepper.params.wraps && withWraps) {\n      if (value > max) value = min;\n      if (value < min) value = max;\n    } else {\n      value = Math.max(Math.min(value, max), min);\n    }\n    if (Number.isNaN(value)) {\n      value = oldValue;\n    }\n    stepper.value = value;\n    const valueChanged = oldValue !== value;\n\n    // Events\n    if (!valueChanged && !forceUpdate) return stepper;\n    stepper.$el.trigger('stepper:change', stepper.value);\n    const formattedValue = stepper.formatValue(stepper.value);\n    if (stepper.$inputEl && stepper.$inputEl.length) {\n      stepper.$inputEl.val(formattedValue);\n      stepper.$inputEl.trigger('input change', {\n        sentByF7Stepper: true\n      });\n    }\n    if (stepper.$valueEl && stepper.$valueEl.length) {\n      stepper.$valueEl.html(formattedValue);\n    }\n    stepper.emit('local::change stepperChange', stepper, stepper.value);\n    return stepper;\n  }\n  endTypeMode(noBlur) {\n    const stepper = this;\n    const {\n      min,\n      max\n    } = stepper;\n    let value = parseFloat(stepper.value);\n    if (Number.isNaN(value)) value = 0;\n    value = Math.max(Math.min(value, max), min);\n    stepper.value = value;\n    if (!stepper.typeModeChanged) {\n      if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n        stepper.$inputEl.blur();\n      }\n      return stepper;\n    }\n    stepper.typeModeChanged = false;\n    stepper.$el.trigger('stepper:change', stepper.value);\n    const formattedValue = stepper.formatValue(stepper.value);\n    if (stepper.$inputEl && stepper.$inputEl.length) {\n      stepper.$inputEl.val(formattedValue);\n      stepper.$inputEl.trigger('input change', {\n        sentByF7Stepper: true\n      });\n      if (!noBlur) stepper.$inputEl.blur();\n    }\n    if (stepper.$valueEl && stepper.$valueEl.length) {\n      stepper.$valueEl.html(formattedValue);\n    }\n    stepper.emit('local::change stepperChange', stepper, stepper.value);\n    return stepper;\n  }\n  typeValue(value) {\n    const stepper = this;\n    stepper.typeModeChanged = true;\n    let inputTxt = String(value);\n    if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n    if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n      if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n        inputTxt = inputTxt.slice(0, -1);\n        stepper.value = inputTxt;\n        stepper.$inputEl.val(stepper.value);\n        return stepper;\n      }\n    } else {\n      let newValue = parseFloat(inputTxt.replace(',', '.'));\n      if (newValue === 0) {\n        stepper.value = inputTxt.replace(',', '.');\n        stepper.$inputEl.val(stepper.value);\n        return stepper;\n      }\n      if (Number.isNaN(newValue)) {\n        stepper.value = 0;\n        stepper.$inputEl.val(stepper.value);\n        return stepper;\n      }\n      const powVal = 10 ** stepper.params.decimalPoint;\n      newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n      stepper.value = parseFloat(String(newValue).replace(',', '.'));\n      stepper.$inputEl.val(stepper.value);\n      return stepper;\n    }\n    stepper.value = inputTxt;\n    stepper.$inputEl.val(inputTxt);\n    return stepper;\n  }\n  getValue() {\n    return this.value;\n  }\n  formatValue(value) {\n    const stepper = this;\n    if (!stepper.params.formatValue) return value;\n    return stepper.params.formatValue.call(stepper, value);\n  }\n  init() {\n    const stepper = this;\n    stepper.attachEvents();\n    if (stepper.$valueEl && stepper.$valueEl.length) {\n      const formattedValue = stepper.formatValue(stepper.value);\n      stepper.$valueEl.html(formattedValue);\n    }\n    return stepper;\n  }\n  destroy() {\n    let stepper = this;\n    stepper.$el.trigger('stepper:beforedestroy');\n    stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n    delete stepper.$el[0].f7Stepper;\n    stepper.detachEvents();\n    deleteProps(stepper);\n    stepper = null;\n  }\n}\nexport default Stepper;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'stepper',\n  create() {\n    const app = this;\n    app.stepper = extend(ConstructorMethods({\n      defaultSelector: '.stepper',\n      constructor: Stepper,\n      app,\n      domProp: 'f7Stepper'\n    }), {\n      getValue(el) {\n        if (el === void 0) {\n          el = '.stepper';\n        }\n        const stepper = app.stepper.get(el);\n        if (stepper) return stepper.getValue();\n        return undefined;\n      },\n      setValue(el, value) {\n        if (el === void 0) {\n          el = '.stepper';\n        }\n        const stepper = app.stepper.get(el);\n        if (stepper) return stepper.setValue(value);\n        return undefined;\n      }\n    });\n  },\n  static: {\n    Stepper\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.stepper-init').each(stepperEl => {\n        const dataset = $(stepperEl).dataset();\n        app.stepper.create(extend({\n          el: stepperEl\n        }, dataset || {}));\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.stepper-init').each(stepperEl => {\n        if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.stepper-init').each(stepperEl => {\n        const dataset = $(stepperEl).dataset();\n        app.stepper.create(extend({\n          el: stepperEl\n        }, dataset || {}));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.stepper-init').each(stepperEl => {\n        if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n      });\n    }\n  },\n  vnode: {\n    'stepper-init': {\n      insert(vnode) {\n        const app = this;\n        const stepperEl = vnode.elm;\n        const dataset = $(stepperEl).dataset();\n        app.stepper.create(extend({\n          el: stepperEl\n        }, dataset || {}));\n      },\n      destroy(vnode) {\n        const stepperEl = vnode.elm;\n        if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n      }\n    }\n  }\n};", "/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [{\n  base: 'A',\n  letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n}, {\n  base: 'AA',\n  letters: '\\uA732'\n}, {\n  base: 'AE',\n  letters: '\\u00C6\\u01FC\\u01E2'\n}, {\n  base: 'AO',\n  letters: '\\uA734'\n}, {\n  base: 'AU',\n  letters: '\\uA736'\n}, {\n  base: 'AV',\n  letters: '\\uA738\\uA73A'\n}, {\n  base: 'AY',\n  letters: '\\uA73C'\n}, {\n  base: 'B',\n  letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n}, {\n  base: 'C',\n  letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n}, {\n  base: 'D',\n  letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n}, {\n  base: 'DZ',\n  letters: '\\u01F1\\u01C4'\n}, {\n  base: 'Dz',\n  letters: '\\u01F2\\u01C5'\n}, {\n  base: 'E',\n  letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n}, {\n  base: 'F',\n  letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n}, {\n  base: 'G',\n  letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n}, {\n  base: 'H',\n  letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n}, {\n  base: 'I',\n  letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n}, {\n  base: 'J',\n  letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n}, {\n  base: 'K',\n  letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n}, {\n  base: 'L',\n  letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n}, {\n  base: 'LJ',\n  letters: '\\u01C7'\n}, {\n  base: 'Lj',\n  letters: '\\u01C8'\n}, {\n  base: 'M',\n  letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n}, {\n  base: 'N',\n  letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n}, {\n  base: 'NJ',\n  letters: '\\u01CA'\n}, {\n  base: 'Nj',\n  letters: '\\u01CB'\n}, {\n  base: 'O',\n  letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n}, {\n  base: 'OI',\n  letters: '\\u01A2'\n}, {\n  base: 'OO',\n  letters: '\\uA74E'\n}, {\n  base: 'OU',\n  letters: '\\u0222'\n}, {\n  base: 'OE',\n  letters: '\\u008C\\u0152'\n}, {\n  base: 'oe',\n  letters: '\\u009C\\u0153'\n}, {\n  base: 'P',\n  letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n}, {\n  base: 'Q',\n  letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n}, {\n  base: 'R',\n  letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n}, {\n  base: 'S',\n  letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n}, {\n  base: 'T',\n  letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n}, {\n  base: 'TZ',\n  letters: '\\uA728'\n}, {\n  base: 'U',\n  letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n}, {\n  base: 'V',\n  letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n}, {\n  base: 'VY',\n  letters: '\\uA760'\n}, {\n  base: 'W',\n  letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n}, {\n  base: 'X',\n  letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n}, {\n  base: 'Y',\n  letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n}, {\n  base: 'Z',\n  letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n}, {\n  base: 'a',\n  letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n}, {\n  base: 'aa',\n  letters: '\\uA733'\n}, {\n  base: 'ae',\n  letters: '\\u00E6\\u01FD\\u01E3'\n}, {\n  base: 'ao',\n  letters: '\\uA735'\n}, {\n  base: 'au',\n  letters: '\\uA737'\n}, {\n  base: 'av',\n  letters: '\\uA739\\uA73B'\n}, {\n  base: 'ay',\n  letters: '\\uA73D'\n}, {\n  base: 'b',\n  letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n}, {\n  base: 'c',\n  letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n}, {\n  base: 'd',\n  letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n}, {\n  base: 'dz',\n  letters: '\\u01F3\\u01C6'\n}, {\n  base: 'e',\n  letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n}, {\n  base: 'f',\n  letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n}, {\n  base: 'g',\n  letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n}, {\n  base: 'h',\n  letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n}, {\n  base: 'hv',\n  letters: '\\u0195'\n}, {\n  base: 'i',\n  letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n}, {\n  base: 'j',\n  letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n}, {\n  base: 'k',\n  letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n}, {\n  base: 'l',\n  letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n}, {\n  base: 'lj',\n  letters: '\\u01C9'\n}, {\n  base: 'm',\n  letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n}, {\n  base: 'n',\n  letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n}, {\n  base: 'nj',\n  letters: '\\u01CC'\n}, {\n  base: 'o',\n  letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n}, {\n  base: 'oi',\n  letters: '\\u01A3'\n}, {\n  base: 'ou',\n  letters: '\\u0223'\n}, {\n  base: 'oo',\n  letters: '\\uA74F'\n}, {\n  base: 'p',\n  letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n}, {\n  base: 'q',\n  letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n}, {\n  base: 'r',\n  letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n}, {\n  base: 's',\n  letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n}, {\n  base: 't',\n  letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n}, {\n  base: 'tz',\n  letters: '\\uA729'\n}, {\n  base: 'u',\n  letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n}, {\n  base: 'v',\n  letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n}, {\n  base: 'vy',\n  letters: '\\uA761'\n}, {\n  base: 'w',\n  letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n}, {\n  base: 'x',\n  letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n}, {\n  base: 'y',\n  letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n}, {\n  base: 'z',\n  letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n}];\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n  const letters = defaultDiacriticsRemovalap[i].letters;\n  for (let j = 0; j < letters.length; j += 1) {\n    diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n  }\n}\nfunction removeDiacritics(str) {\n  return str.replace(/[^\\u0000-\\u007E]/g, a => diacriticsMap[a] || a);\n}\nexport default removeDiacritics;", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass SmartSelect extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const ss = this;\n    const defaults = extend({\n      on: {}\n    }, app.params.smartSelect);\n\n    // Extend defaults with modules params\n    ss.useModulesParams(defaults);\n    ss.params = extend({}, defaults, params);\n    ss.app = app;\n    const $el = $(ss.params.el).eq(0);\n    if ($el.length === 0) return ss;\n    if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n    const $selectEl = $el.find('select').eq(0);\n    if ($selectEl.length === 0) return ss;\n    let $valueEl;\n    if (ss.params.setValueText) {\n      $valueEl = $(ss.params.valueEl);\n      if ($valueEl.length === 0) {\n        $valueEl = $el.find('.item-after');\n      }\n      if ($valueEl.length === 0) {\n        $valueEl = $('<div class=\"item-after\"></div>');\n        $valueEl.insertAfter($el.find('.item-title'));\n      }\n    }\n\n    // Url\n    let url = params.url;\n    if (!url) {\n      if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n    }\n    if (!url) url = ss.params.url;\n    const multiple = $selectEl[0].multiple;\n    const inputType = multiple ? 'checkbox' : 'radio';\n    const selectId = id();\n    extend(ss, {\n      $el,\n      el: $el[0],\n      $selectEl,\n      selectEl: $selectEl[0],\n      $valueEl,\n      valueEl: $valueEl && $valueEl[0],\n      url,\n      multiple,\n      inputType,\n      id: selectId,\n      inputName: `${inputType}-${selectId}`,\n      selectName: $selectEl.attr('name'),\n      maxLength: $selectEl.attr('maxlength') || params.maxLength\n    });\n    $el[0].f7SmartSelect = ss;\n\n    // Events\n    function onClick() {\n      ss.open();\n    }\n    function onChange() {\n      const value = ss.$selectEl.val();\n      ss.$el.trigger('smartselect:change', value);\n      ss.emit('local::change smartSelectChange', ss, value);\n      if (ss.vl) {\n        ss.vl.clearCache();\n      }\n      ss.setValueText();\n    }\n    ss.attachEvents = function attachEvents() {\n      $el.on('click', onClick);\n      $el.on('change', 'select', onChange);\n    };\n    ss.detachEvents = function detachEvents() {\n      $el.off('click', onClick);\n      $el.off('change', 'select', onChange);\n    };\n    function handleInputChange() {\n      let optionEl;\n      let text;\n      const inputEl = this;\n      const value = inputEl.value;\n      let optionText = [];\n      let displayAs;\n      if (inputEl.type === 'checkbox') {\n        for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n          optionEl = ss.selectEl.options[i];\n          if (optionEl.value === value) {\n            optionEl.selected = inputEl.checked;\n          }\n          if (optionEl.selected) {\n            displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n            text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n            optionText.push(text.trim());\n          }\n        }\n        if (ss.maxLength) {\n          ss.checkMaxLength();\n        }\n      } else {\n        optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n        if (!optionEl) {\n          optionEl = ss.$selectEl.find('option').filter(optEl => optEl.value === value)[0];\n        }\n        displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n        text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n        optionText = [text];\n        ss.selectEl.value = value;\n      }\n      ss.$selectEl.trigger('change');\n      if (ss.params.setValueText) {\n        ss.formatValueTextContent(optionText);\n      }\n      if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n        ss.close();\n      }\n    }\n    ss.attachInputsEvents = function attachInputsEvents() {\n      ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n    };\n    ss.detachInputsEvents = function detachInputsEvents() {\n      ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n    };\n\n    // Install Modules\n    ss.useModules();\n\n    // Init\n    ss.init();\n    return ss;\n  }\n  setValue(value) {\n    const ss = this;\n    let newValue = value;\n    let optionText = [];\n    let optionEl;\n    let displayAs;\n    let text;\n    if (ss.multiple) {\n      if (!Array.isArray(newValue)) newValue = [newValue];\n      for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n        optionEl = ss.selectEl.options[i];\n        if (newValue.indexOf(optionEl.value) >= 0) {\n          optionEl.selected = true;\n        } else {\n          optionEl.selected = false;\n        }\n        if (optionEl.selected) {\n          displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n          text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n          optionText.push(text.trim());\n        }\n      }\n    } else {\n      optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n      if (optionEl) {\n        displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n        text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n        optionText = [text];\n      }\n      ss.selectEl.value = newValue;\n    }\n    if (ss.params.setValueText) {\n      ss.formatValueTextContent(optionText);\n    }\n    ss.$selectEl.trigger('change');\n    return ss;\n  }\n  unsetValue() {\n    const ss = this;\n    if (ss.params.setValueText) {\n      ss.formatValueTextContent([]);\n    }\n    ss.$selectEl.find('option').each(optionEl => {\n      optionEl.selected = false;\n      optionEl.checked = false;\n    });\n    ss.$selectEl[0].value = null;\n    if (ss.$containerEl) {\n      ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n    }\n    ss.$selectEl.trigger('change');\n  }\n  getValue() {\n    const ss = this;\n    return ss.$selectEl.val();\n  }\n  get view() {\n    const {\n      params,\n      $el\n    } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    }\n    if (!view) {\n      view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n    }\n    if (!view && params.openIn === 'page') {\n      throw Error('Smart Select requires initialized View');\n    }\n    return view;\n  }\n  checkMaxLength() {\n    const ss = this;\n    const $containerEl = ss.$containerEl;\n    if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n      $containerEl.find('input[type=\"checkbox\"]').each(inputEl => {\n        if (!inputEl.checked) {\n          $(inputEl).parents('li').addClass('disabled');\n        } else {\n          $(inputEl).parents('li').removeClass('disabled');\n        }\n      });\n    } else {\n      $containerEl.find('.disabled').removeClass('disabled');\n    }\n  }\n  formatValueTextContent(values) {\n    const ss = this;\n    const valueFormatted = ss.formatValueText(values);\n    if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n      ss.$valueEl.html(valueFormatted);\n    } else {\n      ss.$valueEl.text(valueFormatted);\n    }\n  }\n  formatValueText(values) {\n    const ss = this;\n    let textValue;\n    if (ss.params.formatValueText) {\n      textValue = ss.params.formatValueText.call(ss, values, ss);\n    } else {\n      textValue = values.join(', ');\n    }\n    return textValue;\n  }\n  setValueText(value) {\n    const ss = this;\n    let valueArray = [];\n    if (typeof value !== 'undefined') {\n      if (Array.isArray(value)) {\n        valueArray = value;\n      } else {\n        valueArray = [value];\n      }\n    } else {\n      ss.$selectEl.find('option').each(optionEl => {\n        const $optionEl = $(optionEl);\n        if (optionEl.selected) {\n          const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n          if (displayAs && typeof displayAs !== 'undefined') {\n            valueArray.push(displayAs);\n          } else {\n            valueArray.push(optionEl.textContent.trim());\n          }\n        }\n      });\n    }\n    if (ss.params.setValueText) {\n      ss.formatValueTextContent(valueArray);\n    }\n  }\n  getItemsData() {\n    const ss = this;\n    const theme = ss.app.theme;\n    const items = [];\n    let previousGroupEl;\n    ss.$selectEl.find('option').each(optionEl => {\n      const $optionEl = $(optionEl);\n      const optionData = $optionEl.dataset();\n      const optionImage = optionData.optionImage || ss.params.optionImage;\n      const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n      const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n      const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n      const optionInputIconPosition = optionData.inputIconPosition || ss.params.inputIconPosition || '';\n      const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n      const optionColor = optionData.optionColor;\n      let optionClassName = optionData.optionClass || '';\n      if ($optionEl[0].disabled) optionClassName += ' disabled';\n      const optionGroupEl = $optionEl.parent('optgroup')[0];\n      const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n      let optionIsLabel = false;\n      if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n        optionIsLabel = true;\n        previousGroupEl = optionGroupEl;\n        items.push({\n          groupLabel: optionGroupLabel,\n          isLabel: optionIsLabel\n        });\n      }\n      items.push({\n        value: $optionEl[0].value,\n        text: $optionEl[0].textContent.trim(),\n        selected: $optionEl[0].selected,\n        groupEl: optionGroupEl,\n        groupLabel: optionGroupLabel,\n        image: optionImage,\n        icon: optionIcon,\n        iconIos: optionIconIos,\n        iconMd: optionIconMd,\n        inputIconPosition: optionInputIconPosition,\n        color: optionColor,\n        className: optionClassName,\n        disabled: $optionEl[0].disabled,\n        id: ss.id,\n        hasMedia: optionHasMedia,\n        checkbox: ss.inputType === 'checkbox',\n        radio: ss.inputType === 'radio',\n        inputName: ss.inputName,\n        inputType: ss.inputType\n      });\n    });\n    ss.items = items;\n    return items;\n  }\n  renderSearchbar() {\n    const ss = this;\n    if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n    return $jsx(\"form\", {\n      class: \"searchbar\"\n    }, $jsx(\"div\", {\n      class: \"searchbar-inner\"\n    }, $jsx(\"div\", {\n      class: \"searchbar-input-wrap\"\n    }, $jsx(\"input\", {\n      type: \"search\",\n      spellcheck: ss.params.searchbarSpellcheck || 'false',\n      placeholder: ss.params.searchbarPlaceholder\n    }), $jsx(\"i\", {\n      class: \"searchbar-icon\"\n    }), $jsx(\"span\", {\n      class: \"input-clear-button\"\n    })), ss.params.searchbarDisableButton && $jsx(\"span\", {\n      class: \"searchbar-disable-button\"\n    }, ss.params.searchbarDisableText)));\n  }\n  renderItem(item, index) {\n    const ss = this;\n    if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n    function getIconContent(iconValue) {\n      if (iconValue === void 0) {\n        iconValue = '';\n      }\n      if (iconValue.indexOf(':') >= 0) {\n        return iconValue.split(':')[1];\n      }\n      return '';\n    }\n    function getIconClass(iconValue) {\n      if (iconValue === void 0) {\n        iconValue = '';\n      }\n      if (iconValue.indexOf(':') >= 0) {\n        let className = iconValue.split(':')[0];\n        if (className === 'f7') className = 'f7-icons';\n        if (className === 'material') className = 'material-icons';\n        return className;\n      }\n      return iconValue;\n    }\n    let itemHtml;\n    if (item.isLabel) {\n      itemHtml = `<li class=\"list-group-title\">${item.groupLabel}</li>`;\n    } else {\n      let selected = item.selected;\n      let disabled;\n      if (ss.params.virtualList) {\n        const ssValue = ss.getValue();\n        selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n        if (ss.multiple) {\n          disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n        }\n      }\n      const {\n        icon,\n        iconIos,\n        iconMd\n      } = item;\n      const hasIcon = icon || iconIos || iconMd;\n      const iconContent = getIconContent(icon || iconIos || iconMd || '');\n      const iconClass = getIconClass(icon || iconIos || iconMd || '');\n      itemHtml = $jsx(\"li\", {\n        class: `${item.className || ''}${disabled ? ' disabled' : ''}`\n      }, $jsx(\"label\", {\n        class: `item-${item.inputType} ${item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''} item-content`\n      }, $jsx(\"input\", {\n        type: item.inputType,\n        name: item.inputName,\n        value: item.value,\n        _checked: selected\n      }), $jsx(\"i\", {\n        class: `icon icon-${item.inputType}`\n      }), item.hasMedia && $jsx(\"div\", {\n        class: \"item-media\"\n      }, hasIcon && $jsx(\"i\", {\n        class: `icon ${iconClass}`\n      }, iconContent), item.image && $jsx(\"img\", {\n        src: item.image\n      })), $jsx(\"div\", {\n        class: \"item-inner\"\n      }, $jsx(\"div\", {\n        class: `item-title${item.color ? ` text-color-${item.color}` : ''}`\n      }, item.text))));\n    }\n    return itemHtml;\n  }\n  renderItems() {\n    const ss = this;\n    if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n    const itemsHtml = `\n      ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n    `;\n    return itemsHtml;\n  }\n  renderPage() {\n    const ss = this;\n    if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n    let pageTitle = ss.params.pageTitle;\n    if (typeof pageTitle === 'undefined') {\n      const $itemTitleEl = ss.$el.find('.item-title');\n      pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n    }\n    const cssClass = ss.params.cssClass;\n    return $jsx(\"div\", {\n      class: `page smart-select-page ${cssClass}`,\n      \"data-name\": \"smart-select-page\",\n      \"data-select-name\": ss.selectName\n    }, $jsx(\"div\", {\n      class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n    }, $jsx(\"div\", {\n      class: \"navbar-bg\"\n    }), $jsx(\"div\", {\n      class: `navbar-inner sliding ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n    }, $jsx(\"div\", {\n      class: \"left\"\n    }, $jsx(\"a\", {\n      class: \"link back\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-back\"\n    }), $jsx(\"span\", {\n      class: \"if-not-md\"\n    }, ss.params.pageBackLinkText))), pageTitle && $jsx(\"div\", {\n      class: \"title\"\n    }, pageTitle), ss.params.searchbar && $jsx(\"div\", {\n      class: \"subnavbar\"\n    }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n      class: \"searchbar-backdrop\"\n    }), $jsx(\"div\", {\n      class: \"page-content\"\n    }, $jsx(\"div\", {\n      class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n    }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n  }\n  renderPopup() {\n    const ss = this;\n    if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n    let pageTitle = ss.params.pageTitle;\n    if (typeof pageTitle === 'undefined') {\n      const $itemTitleEl = ss.$el.find('.item-title');\n      pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n    }\n    const cssClass = ss.params.cssClass || '';\n    return $jsx(\"div\", {\n      class: `popup smart-select-popup ${cssClass} ${ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''}`,\n      \"data-select-name\": ss.selectName\n    }, $jsx(\"div\", {\n      class: \"view\"\n    }, $jsx(\"div\", {\n      class: `page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`,\n      \"data-name\": \"smart-select-page\"\n    }, $jsx(\"div\", {\n      class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n    }, $jsx(\"div\", {\n      class: \"navbar-bg\"\n    }), $jsx(\"div\", {\n      class: \"navbar-inner sliding\"\n    }, pageTitle && $jsx(\"div\", {\n      class: \"title\"\n    }, pageTitle), $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link popup-close\",\n      \"data-popup\": `.smart-select-popup[data-select-name='${ss.selectName}']`\n    }, ss.params.popupCloseLinkText)), ss.params.searchbar && $jsx(\"div\", {\n      class: \"subnavbar\"\n    }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n      class: \"searchbar-backdrop\"\n    }), $jsx(\"div\", {\n      class: \"page-content\"\n    }, $jsx(\"div\", {\n      class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n    }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));\n  }\n  renderSheet() {\n    const ss = this;\n    if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n    const cssClass = ss.params.cssClass;\n    // prettier-ignore\n    return $jsx(\"div\", {\n      class: `sheet-modal smart-select-sheet ${cssClass}`,\n      \"data-select-name\": ss.selectName\n    }, $jsx(\"div\", {\n      class: `toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`\n    }, $jsx(\"div\", {\n      class: \"toolbar-inner\"\n    }, $jsx(\"div\", {\n      class: \"left\"\n    }), $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link sheet-close\"\n    }, ss.params.sheetCloseLinkText)))), $jsx(\"div\", {\n      class: \"sheet-modal-inner\"\n    }, $jsx(\"div\", {\n      class: \"page-content\"\n    }, $jsx(\"div\", {\n      class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n    }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items))))));\n  }\n  renderPopover() {\n    const ss = this;\n    if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n    const cssClass = ss.params.cssClass;\n    // prettier-ignore\n    return $jsx(\"div\", {\n      class: `popover smart-select-popover ${cssClass}`,\n      \"data-select-name\": ss.selectName\n    }, $jsx(\"div\", {\n      class: \"popover-inner\"\n    }, $jsx(\"div\", {\n      class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n    }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n  }\n  scrollToSelectedItem() {\n    const ss = this;\n    const {\n      params,\n      $containerEl\n    } = ss;\n    if (!ss.opened) return ss;\n    if (params.virtualList) {\n      let selectedIndex;\n      ss.vl.items.forEach((item, index) => {\n        if (typeof selectedIndex === 'undefined' && item.selected) {\n          selectedIndex = index;\n        }\n      });\n      if (typeof selectedIndex !== 'undefined') {\n        ss.vl.scrollToItem(selectedIndex);\n      }\n    } else {\n      const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n      if (!$selectedItemEl.length) return ss;\n      const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n      if (!$scrollableEl.length) return ss;\n      $scrollableEl.scrollTop($selectedItemEl.offset().top - $scrollableEl.offset().top - parseInt($scrollableEl.css('padding-top'), 10));\n    }\n    return ss;\n  }\n  onOpen(type, containerEl) {\n    const ss = this;\n    const app = ss.app;\n    const $containerEl = $(containerEl);\n    ss.$containerEl = $containerEl;\n    ss.openedIn = type;\n    ss.opened = true;\n\n    // Init VL\n    if (ss.params.virtualList) {\n      ss.vl = app.virtualList.create({\n        el: $containerEl.find('.virtual-list'),\n        items: ss.items,\n        renderItem: ss.renderItem.bind(ss),\n        height: ss.params.virtualListHeight,\n        searchByItem(query, item) {\n          if (item.text && removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n          return false;\n        }\n      });\n    }\n    if (ss.params.scrollToSelectedItem) {\n      ss.scrollToSelectedItem();\n    }\n\n    // Init SB\n    if (ss.params.searchbar) {\n      let $searchbarEl = $containerEl.find('.searchbar');\n      if (type === 'page' && app.theme === 'ios') {\n        $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n      }\n      if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n        let $notFoundEl = null;\n        if (typeof ss.params.appendSearchbarNotFound === 'string') {\n          $notFoundEl = $(`<div class=\"block searchbar-not-found\">${ss.params.appendSearchbarNotFound}</div>`);\n        } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n          $notFoundEl = $('<div class=\"block searchbar-not-found\">Nothing found</div>');\n        } else {\n          $notFoundEl = ss.params.appendSearchbarNotFound;\n        }\n        if ($notFoundEl) {\n          $containerEl.find('.page-content').append($notFoundEl[0]);\n        }\n      }\n      const searchbarParams = extend({\n        el: $searchbarEl,\n        backdropEl: $containerEl.find('.searchbar-backdrop'),\n        searchContainer: `.smart-select-list-${ss.id}`,\n        searchIn: '.item-title'\n      }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n      ss.searchbar = app.searchbar.create(searchbarParams);\n    }\n\n    // Check for max length\n    if (ss.maxLength) {\n      ss.checkMaxLength();\n    }\n\n    // Close on select\n    if (ss.params.closeOnSelect) {\n      ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n        ss.close();\n      });\n    }\n\n    // Attach input events\n    ss.attachInputsEvents();\n    ss.$el.trigger('smartselect:open');\n    ss.emit('local::open smartSelectOpen', ss);\n  }\n  onOpened() {\n    const ss = this;\n    ss.$el.trigger('smartselect:opened');\n    ss.emit('local::opened smartSelectOpened', ss);\n  }\n  onClose() {\n    const ss = this;\n    if (ss.destroyed) return;\n\n    // Destroy VL\n    if (ss.vl && ss.vl.destroy) {\n      ss.vl.destroy();\n      ss.vl = null;\n      delete ss.vl;\n    }\n\n    // Destroy SB\n    if (ss.searchbar && ss.searchbar.destroy) {\n      ss.searchbar.destroy();\n      ss.searchbar = null;\n      delete ss.searchbar;\n    }\n    // Detach events\n    ss.detachInputsEvents();\n    ss.$el.trigger('smartselect:close');\n    ss.emit('local::close smartSelectClose', ss);\n  }\n  onClosed() {\n    const ss = this;\n    if (ss.destroyed) return;\n    ss.opened = false;\n    ss.$containerEl = null;\n    delete ss.$containerEl;\n    ss.$el.trigger('smartselect:closed');\n    ss.emit('local::closed smartSelectClosed', ss);\n  }\n  openPage() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const pageHtml = ss.renderPage(ss.items);\n    ss.view.router.navigate({\n      url: ss.url,\n      route: {\n        content: pageHtml,\n        path: ss.url,\n        on: {\n          pageBeforeIn(e, page) {\n            ss.onOpen('page', page.el);\n          },\n          pageAfterIn(e, page) {\n            ss.onOpened('page', page.el);\n          },\n          pageBeforeOut(e, page) {\n            ss.onClose('page', page.el);\n          },\n          pageAfterOut(e, page) {\n            ss.onClosed('page', page.el);\n          }\n        }\n      }\n    });\n    return ss;\n  }\n  openPopup() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const popupHtml = ss.renderPopup(ss.items);\n    const popupParams = {\n      content: popupHtml,\n      push: ss.params.popupPush,\n      swipeToClose: ss.params.popupSwipeToClose,\n      closeByBackdropClick: ss.params.closeByBackdropClick,\n      on: {\n        popupOpen(popup) {\n          ss.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          ss.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          ss.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          ss.onClosed('popup', popup.el);\n        }\n      }\n    };\n    if (ss.params.routableModals && ss.view) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          popup: popupParams\n        }\n      });\n    } else {\n      ss.modal = ss.app.popup.create(popupParams).open();\n    }\n    return ss;\n  }\n  openSheet() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const sheetHtml = ss.renderSheet(ss.items);\n    const sheetParams = {\n      content: sheetHtml,\n      backdrop: ss.params.sheetBackdrop,\n      scrollToEl: ss.$el,\n      closeByOutsideClick: true,\n      push: ss.params.sheetPush,\n      swipeToClose: ss.params.sheetSwipeToClose,\n      closeByBackdropClick: ss.params.closeByBackdropClick,\n      on: {\n        sheetOpen(sheet) {\n          ss.onOpen('sheet', sheet.el);\n        },\n        sheetOpened(sheet) {\n          ss.onOpened('sheet', sheet.el);\n        },\n        sheetClose(sheet) {\n          ss.onClose('sheet', sheet.el);\n        },\n        sheetClosed(sheet) {\n          ss.onClosed('sheet', sheet.el);\n        }\n      }\n    };\n    if (ss.params.routableModals && ss.view) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          sheet: sheetParams\n        }\n      });\n    } else {\n      ss.modal = ss.app.sheet.create(sheetParams).open();\n    }\n    return ss;\n  }\n  openPopover() {\n    const ss = this;\n    if (ss.opened) return ss;\n    ss.getItemsData();\n    const popoverHtml = ss.renderPopover(ss.items);\n    const popoverParams = {\n      content: popoverHtml,\n      targetEl: ss.$el,\n      closeByBackdropClick: ss.params.closeByBackdropClick,\n      on: {\n        popoverOpen(popover) {\n          ss.onOpen('popover', popover.el);\n        },\n        popoverOpened(popover) {\n          ss.onOpened('popover', popover.el);\n        },\n        popoverClose(popover) {\n          ss.onClose('popover', popover.el);\n        },\n        popoverClosed(popover) {\n          ss.onClosed('popover', popover.el);\n        }\n      }\n    };\n    if (ss.params.routableModals && ss.view) {\n      ss.view.router.navigate({\n        url: ss.url,\n        route: {\n          path: ss.url,\n          popover: popoverParams\n        }\n      });\n    } else {\n      ss.modal = ss.app.popover.create(popoverParams).open();\n    }\n    return ss;\n  }\n  open(type) {\n    const ss = this;\n    if (ss.opened) return ss;\n    let prevented = false;\n    function prevent() {\n      prevented = true;\n    }\n    if (ss.$el) {\n      ss.$el.trigger('smartselect:beforeopen', {\n        prevent\n      });\n    }\n    ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n    if (prevented) return ss;\n    const openIn = type || ss.params.openIn;\n    ss[`open${openIn.split('').map((el, index) => {\n      if (index === 0) return el.toUpperCase();\n      return el;\n    }).join('')}`]();\n    return ss;\n  }\n  close() {\n    const ss = this;\n    if (!ss.opened) return ss;\n    if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {\n      ss.view.router.back();\n    } else {\n      ss.modal.once('modalClosed', () => {\n        nextTick(() => {\n          if (ss.destroyed) return;\n          ss.modal.destroy();\n          delete ss.modal;\n        });\n      });\n      ss.modal.close();\n    }\n    return ss;\n  }\n  init() {\n    const ss = this;\n    ss.attachEvents();\n    ss.setValueText();\n  }\n  destroy() {\n    const ss = this;\n    ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n    ss.$el.trigger('smartselect:beforedestroy');\n    ss.detachEvents();\n    delete ss.$el[0].f7SmartSelect;\n    deleteProps(ss);\n    ss.destroyed = true;\n  }\n}\nexport default SmartSelect;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'smartSelect',\n  params: {\n    smartSelect: {\n      el: undefined,\n      valueEl: undefined,\n      setValueText: true,\n      formatValueText: null,\n      openIn: 'page',\n      // or 'popup' or 'sheet' or 'popover'\n      popupPush: false,\n      popupSwipeToClose: undefined,\n      // defaults to app\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      // defaults to app\n      sheetBackdrop: false,\n      pageTitle: undefined,\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: 'Close',\n      popupTabletFullscreen: false,\n      closeByBackdropClick: true,\n      sheetCloseLinkText: 'Done',\n      searchbar: false,\n      searchbarPlaceholder: 'Search',\n      searchbarDisableText: 'Cancel',\n      searchbarDisableButton: true,\n      searchbarSpellcheck: false,\n      closeOnSelect: false,\n      virtualList: false,\n      virtualListHeight: undefined,\n      scrollToSelectedItem: false,\n      formColorTheme: undefined,\n      navbarColorTheme: undefined,\n      routableModals: false,\n      url: 'select/',\n      inputIconPosition: 'start',\n      cssClass: '',\n      /*\n        Custom render functions\n      */\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderSheet: undefined,\n      renderPopover: undefined,\n      renderItems: undefined,\n      renderItem: undefined,\n      renderSearchbar: undefined\n    }\n  },\n  static: {\n    SmartSelect\n  },\n  create() {\n    const app = this;\n    app.smartSelect = extend(ConstructorMethods({\n      defaultSelector: '.smart-select',\n      constructor: SmartSelect,\n      app,\n      domProp: 'f7SmartSelect'\n    }), {\n      open(smartSelectEl) {\n        const ss = app.smartSelect.get(smartSelectEl);\n        if (ss && ss.open) return ss.open();\n        return undefined;\n      },\n      close(smartSelectEl) {\n        const ss = app.smartSelect.get(smartSelectEl);\n        if (ss && ss.close) return ss.close();\n        return undefined;\n      }\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n        app.smartSelect.create(extend({\n          el: smartSelectEl\n        }, $(smartSelectEl).dataset()));\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.smart-select-init').each(smartSelectEl => {\n        app.smartSelect.create(extend({\n          el: smartSelectEl\n        }, $(smartSelectEl).dataset()));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.smart-select-init').each(smartSelectEl => {\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      });\n    }\n  },\n  clicks: {\n    '.smart-select': function open($clickedEl, data) {\n      const app = this;\n      if (!$clickedEl[0].f7SmartSelect) {\n        const ss = app.smartSelect.create(extend({\n          el: $clickedEl\n        }, data));\n        ss.open();\n      }\n    }\n  },\n  vnode: {\n    'smart-select-init': {\n      insert(vnode) {\n        const app = this;\n        const smartSelectEl = vnode.elm;\n        app.smartSelect.create(extend({\n          el: smartSelectEl\n        }, $(smartSelectEl).dataset()));\n      },\n      destroy(vnode) {\n        const smartSelectEl = vnode.elm;\n        if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n          smartSelectEl.f7SmartSelect.destroy();\n        }\n      }\n    }\n  }\n};", "export default {\n  name: 'grid'\n};", "import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Calendar extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const calendar = this;\n    calendar.params = extend({}, app.params.calendar, params);\n    let $containerEl;\n    if (calendar.params.containerEl) {\n      $containerEl = $(calendar.params.containerEl);\n      if ($containerEl.length === 0) return calendar;\n    }\n    let $inputEl;\n    if (calendar.params.inputEl) {\n      $inputEl = $(calendar.params.inputEl);\n    }\n    const isHorizontal = calendar.params.direction === 'horizontal';\n    let inverter = 1;\n    if (isHorizontal) {\n      inverter = app.rtl ? -1 : 1;\n    }\n    extend(calendar, {\n      app,\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      initialized: false,\n      opened: false,\n      url: calendar.params.url,\n      isHorizontal,\n      inverter,\n      animating: false,\n      allowTouchMove: true,\n      hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple\n    });\n    calendar.dayFormatter = date => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n        day: 'numeric'\n      });\n      return formatter.format(date).replace(/日/, '');\n    };\n    calendar.monthFormatter = date => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n        month: 'long'\n      });\n      return formatter.format(date);\n    };\n    calendar.yearFormatter = date => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n        year: 'numeric'\n      });\n      return formatter.format(date);\n    };\n    calendar.timeSelectorFormatter = date => {\n      const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n      return formatter.format(date);\n    };\n    const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n    calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n    // Auto names\n    let {\n      monthNames,\n      monthNamesShort,\n      dayNames,\n      dayNamesShort\n    } = calendar.params;\n    const {\n      monthNamesIntl,\n      monthNamesShortIntl,\n      dayNamesIntl,\n      dayNamesShortIntl\n    } = calendar.getIntlNames();\n    if (monthNames === 'auto') monthNames = monthNamesIntl;\n    if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n    if (dayNames === 'auto') dayNames = dayNamesIntl;\n    if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n    extend(calendar, {\n      monthNames,\n      monthNamesShort,\n      dayNames,\n      dayNamesShort\n    });\n    function onInputClick() {\n      calendar.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    function onInputClear() {\n      calendar.setValue([]);\n      if (calendar.opened) {\n        calendar.update();\n      }\n    }\n    function onHtmlClick(e) {\n      const $targetEl = $(e.target);\n      if (calendar.destroyed || !calendar.params) return;\n      if (calendar.isPopover()) return;\n      if (!calendar.opened || calendar.closing) return;\n      if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n      if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;\n      if ($inputEl && $inputEl.length > 0) {\n        if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n          calendar.close();\n        }\n      } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n        calendar.close();\n      }\n    }\n\n    // Events\n    extend(calendar, {\n      attachInputEvents() {\n        calendar.$inputEl.on('click', onInputClick);\n        calendar.$inputEl.on('input:clear', onInputClear);\n        if (calendar.params.inputReadOnly) {\n          calendar.$inputEl.on('focus mousedown', onInputFocus);\n          if (calendar.$inputEl[0]) {\n            calendar.$inputEl[0].f7ValidateReadonly = true;\n          }\n        }\n      },\n      detachInputEvents() {\n        calendar.$inputEl.off('click', onInputClick);\n        calendar.$inputEl.off('input:clear', onInputClear);\n        if (calendar.params.inputReadOnly) {\n          calendar.$inputEl.off('focus mousedown', onInputFocus);\n          if (calendar.$inputEl[0]) {\n            delete calendar.$inputEl[0].f7ValidateReadonly;\n          }\n        }\n      },\n      attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n      },\n      detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n      }\n    });\n    calendar.attachCalendarEvents = function attachCalendarEvents() {\n      let allowItemClick = true;\n      let isTouched;\n      let isMoved;\n      let touchStartX;\n      let touchStartY;\n      let touchCurrentX;\n      let touchCurrentY;\n      let touchStartTime;\n      let touchEndTime;\n      let currentTranslate;\n      let wrapperWidth;\n      let wrapperHeight;\n      let percentage;\n      let touchesDiff;\n      let isScrolling;\n      const {\n        $el,\n        $wrapperEl\n      } = calendar;\n      function handleTouchStart(e) {\n        if (isMoved || isTouched || !e.isTrusted) return;\n        isTouched = true;\n        touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n        touchCurrentX = touchStartX;\n        touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n        touchCurrentY = touchStartY;\n        touchStartTime = new Date().getTime();\n        percentage = 0;\n        allowItemClick = true;\n        isScrolling = undefined;\n        currentTranslate = calendar.monthsTranslate;\n      }\n      function handleTouchMove(e) {\n        if (!isTouched || !e.isTrusted) return;\n        const {\n          isHorizontal: isH\n        } = calendar;\n        touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n        touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n        if (typeof isScrolling === 'undefined') {\n          isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n        }\n        if (isH && isScrolling || !calendar.allowTouchMove) {\n          isTouched = false;\n          return;\n        }\n        e.preventDefault();\n        if (calendar.animating) {\n          isTouched = false;\n          return;\n        }\n        allowItemClick = false;\n        if (!isMoved) {\n          // First move\n          isMoved = true;\n          wrapperWidth = $wrapperEl[0].offsetWidth;\n          wrapperHeight = $wrapperEl[0].offsetHeight;\n          $wrapperEl.transition(0);\n        }\n        touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n        percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n        currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n        // Transform wrapper\n        $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n      }\n      function handleTouchEnd(e) {\n        if (!isTouched || !isMoved || !e.isTrusted) {\n          isTouched = false;\n          isMoved = false;\n          return;\n        }\n        isTouched = false;\n        isMoved = false;\n        touchEndTime = new Date().getTime();\n        if (touchEndTime - touchStartTime < 300) {\n          if (Math.abs(touchesDiff) < 10) {\n            calendar.resetMonth();\n          } else if (touchesDiff >= 10) {\n            if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n          } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n        } else if (percentage <= -0.5) {\n          if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n        } else if (percentage >= 0.5) {\n          if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n        } else {\n          calendar.resetMonth();\n        }\n\n        // Allow click\n        setTimeout(() => {\n          allowItemClick = true;\n        }, 100);\n      }\n      function handleDayClick(e) {\n        if (!allowItemClick) return;\n        let $dayEl = $(e.target).parents('.calendar-day');\n        if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n          $dayEl = $(e.target);\n        }\n        if ($dayEl.length === 0) return;\n        if ($dayEl.hasClass('calendar-day-disabled')) return;\n        if (!calendar.params.rangePicker) {\n          if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n          if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n        }\n        const dateYear = parseInt($dayEl.attr('data-year'), 10);\n        const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n        const dateDay = parseInt($dayEl.attr('data-day'), 10);\n        calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);\n        if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n          const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n          if (calendar.hasTimePicker) {\n            if (calendar.value && calendar.value[0]) {\n              valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n            } else {\n              valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n            }\n          }\n          calendar.addValue(valueToAdd);\n        }\n        if (calendar.params.closeOnSelect) {\n          if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {\n            calendar.close();\n          }\n        }\n      }\n      function onNextMonthClick() {\n        calendar.nextMonth();\n      }\n      function onPrevMonthClick() {\n        calendar.prevMonth();\n      }\n      function onNextYearClick() {\n        calendar.nextYear();\n      }\n      function onPrevYearClick() {\n        calendar.prevYear();\n      }\n      function onMonthSelectorClick() {\n        calendar.openMonthPicker();\n      }\n      function onYearSelectorClick() {\n        calendar.openYearPicker();\n      }\n      function onTimeSelectorClick() {\n        calendar.openTimePicker();\n      }\n      const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n        passive: true,\n        capture: false\n      } : false;\n      // Selectors clicks\n      $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n      $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n      $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n      $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n      if (calendar.params.monthPicker) {\n        $el.find('.current-month-value').on('click', onMonthSelectorClick);\n      }\n      if (calendar.params.yearPicker) {\n        $el.find('.current-year-value').on('click', onYearSelectorClick);\n      }\n      if (calendar.hasTimePicker) {\n        $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n      }\n      // Day clicks\n      $wrapperEl.on('click', handleDayClick);\n      // Touch events\n      if (calendar.params.touchMove) {\n        $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n        app.on('touchmove:active', handleTouchMove);\n        app.on('touchend:passive', handleTouchEnd);\n      }\n      calendar.detachCalendarEvents = function detachCalendarEvents() {\n        $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n        $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n        $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n        $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n        if (calendar.params.monthPicker) {\n          $el.find('.current-month-value').off('click', onMonthSelectorClick);\n        }\n        if (calendar.params.yearPicker) {\n          $el.find('.current-year-value').off('click', onYearSelectorClick);\n        }\n        if (calendar.hasTimePicker) {\n          $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n        }\n        $wrapperEl.off('click', handleDayClick);\n        if (calendar.params.touchMove) {\n          $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n          app.off('touchmove:active', handleTouchMove);\n          app.off('touchend:passive', handleTouchEnd);\n        }\n      };\n    };\n    calendar.init();\n    return calendar;\n  }\n  get view() {\n    const {\n      $inputEl,\n      app,\n      params\n    } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    } else if ($inputEl) {\n      view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n  getIntlNames() {\n    const calendar = this;\n    const locale = calendar.params.locale;\n    const monthNamesIntl = [];\n    const monthNamesShortIntl = [];\n    const dayNamesIntl = [];\n    const dayNamesShortIntl = [];\n    const formatterMonthNames = new Intl.DateTimeFormat(locale, {\n      month: 'long'\n    });\n    const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {\n      month: 'short'\n    });\n    const formatterDayNames = new Intl.DateTimeFormat(locale, {\n      weekday: 'long'\n    });\n    const formatterDayNamesShort = new Intl.DateTimeFormat(locale, {\n      weekday: 'short'\n    });\n    let year;\n    let yearStarted;\n    let yearEnded;\n    for (let i = 0; i < 24; i += 1) {\n      const date = new Date().setMonth(i, 1);\n      const currentYear = calendar.yearFormatter(date);\n      if (year && currentYear !== year) {\n        if (yearStarted) yearEnded = true;\n        yearStarted = true;\n        year = currentYear;\n      }\n      if (!year) {\n        year = currentYear;\n      }\n      if (yearStarted && year === currentYear && !yearEnded) {\n        monthNamesIntl.push(formatterMonthNames.format(date));\n        monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n      }\n    }\n    const weekDay = new Date().getDay();\n    for (let i = 0; i < 7; i += 1) {\n      const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n      dayNamesIntl.push(formatterDayNames.format(date));\n      dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n    }\n    return {\n      monthNamesIntl,\n      monthNamesShortIntl,\n      dayNamesIntl,\n      dayNamesShortIntl\n    };\n  }\n  normalizeDate(date) {\n    const calendar = this;\n    const d = new Date(date);\n    if (calendar.hasTimePicker) {\n      return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n    }\n    return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n  }\n  normalizeValues(values) {\n    const calendar = this;\n    let newValues = [];\n    if (values && Array.isArray(values)) {\n      newValues = values.map(val => calendar.normalizeDate(val));\n    }\n    return newValues;\n  }\n  initInput() {\n    const calendar = this;\n    if (!calendar.$inputEl) return;\n    if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n  }\n  isPopover() {\n    const calendar = this;\n    const {\n      app,\n      modal,\n      params\n    } = calendar;\n    const device = getDevice();\n    if (params.openIn === 'sheet') return false;\n    if (modal && modal.type !== 'popover') return false;\n    if (!calendar.inline && calendar.inputEl) {\n      if (params.openIn === 'popover') return true;\n      if (device.ios) {\n        return !!device.ipad;\n      }\n      if (app.width >= 768) {\n        return true;\n      }\n    }\n    return false;\n  }\n  formatDate(d) {\n    const calendar = this;\n    const date = new Date(d);\n    const year = date.getFullYear();\n    const month = date.getMonth();\n    const month1 = month + 1;\n    const day = date.getDate();\n    const weekDay = date.getDay();\n    const {\n      monthNames,\n      monthNamesShort,\n      dayNames,\n      dayNamesShort\n    } = calendar;\n    const {\n      dateFormat,\n      locale\n    } = calendar.params;\n    function twoDigits(number) {\n      return number < 10 ? `0${number}` : number;\n    }\n    if (typeof dateFormat === 'string') {\n      const tokens = {\n        yyyy: year,\n        yy: String(year).substring(2),\n        mm: twoDigits(month1),\n        m: month1,\n        MM: monthNames[month],\n        M: monthNamesShort[month],\n        dd: twoDigits(day),\n        d: day,\n        DD: dayNames[weekDay],\n        D: dayNamesShort[weekDay]\n      };\n      if (calendar.params.timePicker) {\n        const hours = date.getHours();\n        const minutes = date.getMinutes();\n        const seconds = date.getSeconds();\n        let hours12 = hours;\n        if (hours > 12) hours12 = hours - 12;\n        if (hours === 0) hours12 = 12;\n        const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n        Object.assign(tokens, {\n          HH: twoDigits(hours),\n          H: hours,\n          hh: twoDigits(hours12),\n          h: hours12,\n          ss: twoDigits(seconds),\n          s: seconds,\n          ':mm': twoDigits(minutes),\n          ':m': minutes,\n          a,\n          A: a.toUpperCase()\n        });\n      }\n      const regexp = new RegExp(Object.keys(tokens).map(t => `(${t})`).join('|'), 'g');\n      return dateFormat.replace(regexp, token => {\n        if (token in tokens) return tokens[token];\n        return token;\n      });\n    }\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date);\n    }\n    // Intl Object\n    const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n    return formatter.format(date);\n  }\n  formatValue() {\n    const calendar = this;\n    const {\n      value\n    } = calendar;\n    if (calendar.params.formatValue) {\n      return calendar.params.formatValue.call(calendar, value);\n    }\n    return value.map(v => calendar.formatDate(v)).join(calendar.params.rangePicker ? ' - ' : ', ');\n  }\n  addValue(newValue) {\n    const calendar = this;\n    const {\n      multiple,\n      rangePicker,\n      rangePickerMinDays,\n      rangePickerMaxDays\n    } = calendar.params;\n    if (multiple) {\n      if (!calendar.value) calendar.value = [];\n      let inValuesIndex;\n      for (let i = 0; i < calendar.value.length; i += 1) {\n        if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n          inValuesIndex = i;\n        }\n      }\n      if (typeof inValuesIndex === 'undefined') {\n        calendar.value.push(newValue);\n      } else {\n        calendar.value.splice(inValuesIndex, 1);\n      }\n      calendar.updateValue();\n    } else if (rangePicker) {\n      if (!calendar.value) calendar.value = [];\n      if (calendar.value.length === 2 || calendar.value.length === 0) {\n        calendar.value = [];\n      }\n      if (calendar.value.length === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)) calendar.value.push(newValue);else calendar.value = [];\n      calendar.value.sort((a, b) => a - b);\n      calendar.updateValue();\n    } else {\n      calendar.value = [newValue];\n      calendar.updateValue();\n    }\n  }\n  setValue(values) {\n    const calendar = this;\n    const currentValue = calendar.value;\n    if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n      let equal = true;\n      currentValue.forEach((v, index) => {\n        if (v !== values[index]) equal = false;\n      });\n      if (equal) return;\n    }\n    calendar.value = values;\n    calendar.updateValue();\n  }\n  getValue() {\n    const calendar = this;\n    return calendar.value;\n  }\n  updateValue(onlyHeader) {\n    const calendar = this;\n    const {\n      $el,\n      $wrapperEl,\n      $inputEl,\n      value,\n      params\n    } = calendar;\n    let i;\n    if ($el && $el.length > 0) {\n      $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');\n      let valueDate;\n      if (params.rangePicker && value.length === 2) {\n        const leftDate = new Date(value[0]).getTime();\n        const rightDate = new Date(value[1]).getTime();\n        for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n          valueDate = new Date(i);\n          let addClass = 'calendar-day-selected';\n          if (leftDate !== rightDate) {\n            if (i !== leftDate && i !== rightDate) {\n              addClass += ' calendar-day-selected-range';\n            }\n            if (i === leftDate) {\n              addClass += ' calendar-day-selected-left';\n            }\n            if (i === rightDate) {\n              addClass += ' calendar-day-selected-right';\n            }\n          }\n          $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass(addClass);\n        }\n        valueDate = new Date(leftDate);\n        $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-left');\n        valueDate = new Date(rightDate);\n        $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-right');\n      } else {\n        for (i = 0; i < calendar.value.length; i += 1) {\n          valueDate = new Date(value[i]);\n          $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n        }\n      }\n    }\n    if (!onlyHeader) {\n      calendar.emit('local::change calendarChange', calendar, value);\n    }\n    if ($el && $el.length > 0 && calendar.hasTimePicker) {\n      $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);\n    }\n    if ($inputEl && $inputEl.length || params.header) {\n      const inputValue = calendar.formatValue(value);\n      if (params.header && $el && $el.length) {\n        $el.find('.calendar-selected-date').text(inputValue);\n      }\n      if ($inputEl && $inputEl.length && !onlyHeader) {\n        $inputEl.val(inputValue);\n        $inputEl.trigger('change');\n      }\n    }\n  }\n  updateCurrentMonthYear(dir) {\n    const calendar = this;\n    const {\n      $months,\n      $el,\n      monthNames\n    } = calendar;\n    let currentLocaleMonth;\n    let currentLocaleYear;\n    if (typeof dir === 'undefined') {\n      calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n      calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n      currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n      currentLocaleYear = $months.eq(1).attr('data-locale-year');\n    } else {\n      calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);\n      calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);\n      currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');\n      currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');\n    }\n    $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n    $el.find('.current-year-value').text(currentLocaleYear);\n  }\n  update() {\n    const calendar = this;\n    const {\n      currentYear,\n      currentMonth,\n      $wrapperEl\n    } = calendar;\n    const currentDate = new Date(currentYear, currentMonth);\n    const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n    const currentMonthHtml = calendar.renderMonth(currentDate);\n    const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n    $wrapperEl.transition(0).html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`).transform('translate3d(0,0,0)');\n    calendar.$months = $wrapperEl.find('.calendar-month');\n    calendar.monthsTranslate = 0;\n    calendar.setMonthsTranslate();\n    calendar.$months.each(monthEl => {\n      calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n    });\n  }\n  onMonthChangeStart(dir) {\n    const calendar = this;\n    const {\n      $months,\n      currentYear,\n      currentMonth\n    } = calendar;\n    calendar.updateCurrentMonthYear(dir);\n    $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n    const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n    $months.eq(currentIndex).addClass('calendar-month-current');\n    $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n    calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);\n  }\n  onMonthChangeEnd(dir, rebuildBoth) {\n    const calendar = this;\n    const {\n      currentYear,\n      currentMonth,\n      $wrapperEl,\n      monthsTranslate\n    } = calendar;\n    calendar.animating = false;\n    let nextMonthHtml;\n    let prevMonthHtml;\n    let currentMonthHtml;\n    $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();\n    if (typeof dir === 'undefined') {\n      dir = 'next'; // eslint-disable-line\n      rebuildBoth = true; // eslint-disable-line\n    }\n\n    if (!rebuildBoth) {\n      currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n    } else {\n      $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n      prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n      nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n    }\n    if (dir === 'next' || rebuildBoth) {\n      $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n    }\n    if (dir === 'prev' || rebuildBoth) {\n      $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n    }\n    const $months = $wrapperEl.find('.calendar-month');\n    calendar.$months = $months;\n    calendar.setMonthsTranslate(monthsTranslate);\n    calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);\n    calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);\n  }\n  setMonthsTranslate(translate) {\n    const calendar = this;\n    const {\n      $months,\n      isHorizontal: isH,\n      inverter\n    } = calendar;\n    // eslint-disable-next-line\n    translate = translate || calendar.monthsTranslate || 0;\n    if (typeof calendar.monthsTranslate === 'undefined') {\n      calendar.monthsTranslate = translate;\n    }\n    $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n    const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n    const currentMonthTranslate = -translate * 100 * inverter;\n    const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n    $months.eq(0).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n    $months.eq(1).transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`).addClass('calendar-month-current');\n    $months.eq(2).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n  }\n  nextMonth(transition) {\n    const calendar = this;\n    const {\n      params,\n      $wrapperEl,\n      inverter,\n      isHorizontal: isH\n    } = calendar;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      transition = ''; // eslint-disable-line\n      if (!params.animate) transition = 0; // eslint-disable-line\n    }\n\n    const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n    const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n    const nextDate = new Date(nextYear, nextMonth);\n    const nextDateTime = nextDate.getTime();\n    const transitionEndCallback = !calendar.animating;\n    if (params.maxDate) {\n      if (nextDateTime > new Date(params.maxDate).getTime()) {\n        calendar.resetMonth();\n        return;\n      }\n    }\n    calendar.monthsTranslate -= 1;\n    if (nextMonth === calendar.currentMonth) {\n      const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n      const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next')).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n      $wrapperEl.append(nextMonthHtml[0]);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);\n    }\n    calendar.animating = true;\n    calendar.onMonthChangeStart('next');\n    const translate = calendar.monthsTranslate * 100 * inverter;\n    $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(() => {\n        calendar.onMonthChangeEnd('next');\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd('next');\n    }\n  }\n  prevMonth(transition) {\n    const calendar = this;\n    const {\n      params,\n      $wrapperEl,\n      inverter,\n      isHorizontal: isH\n    } = calendar;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      transition = ''; // eslint-disable-line\n      if (!params.animate) transition = 0; // eslint-disable-line\n    }\n\n    const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n    const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n    const prevDate = new Date(prevYear, prevMonth + 1, -1);\n    const prevDateTime = prevDate.getTime();\n    const transitionEndCallback = !calendar.animating;\n    if (params.minDate) {\n      let minDate = new Date(params.minDate);\n      minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n      if (prevDateTime < minDate.getTime()) {\n        calendar.resetMonth();\n        return;\n      }\n    }\n    calendar.monthsTranslate += 1;\n    if (prevMonth === calendar.currentMonth) {\n      const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n      const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev')).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n      $wrapperEl.prepend(prevMonthHtml[0]);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n    }\n    calendar.animating = true;\n    calendar.onMonthChangeStart('prev');\n    const translate = calendar.monthsTranslate * 100 * inverter;\n    $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(() => {\n        calendar.onMonthChangeEnd('prev');\n      });\n    }\n    if (!params.animate) {\n      calendar.onMonthChangeEnd('prev');\n    }\n  }\n  resetMonth(transition) {\n    if (transition === void 0) {\n      transition = '';\n    }\n    const calendar = this;\n    const {\n      $wrapperEl,\n      inverter,\n      isHorizontal: isH,\n      monthsTranslate\n    } = calendar;\n    const translate = monthsTranslate * 100 * inverter;\n    $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n  }\n  // eslint-disable-next-line\n  setYearMonth(year, month, transition) {\n    const calendar = this;\n    const {\n      params,\n      isHorizontal: isH,\n      $wrapperEl,\n      inverter\n    } = calendar;\n    // eslint-disable-next-line\n    if (typeof year === 'undefined') year = calendar.currentYear;\n    // eslint-disable-next-line\n    if (typeof month === 'undefined') month = calendar.currentMonth;\n    if (typeof transition === 'undefined' || typeof transition === 'object') {\n      // eslint-disable-next-line\n      transition = '';\n      // eslint-disable-next-line\n      if (!params.animate) transition = 0;\n    }\n    let targetDate;\n    if (year < calendar.currentYear) {\n      targetDate = new Date(year, month + 1, -1).getTime();\n    } else {\n      targetDate = new Date(year, month).getTime();\n    }\n    if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n      return false;\n    }\n    if (params.minDate) {\n      let minDate = new Date(params.minDate);\n      minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n      if (targetDate < minDate.getTime()) {\n        return false;\n      }\n    }\n    const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n    const dir = targetDate > currentDate ? 'next' : 'prev';\n    const newMonthHTML = calendar.renderMonth(new Date(year, month));\n    calendar.monthsTranslate = calendar.monthsTranslate || 0;\n    const prevTranslate = calendar.monthsTranslate;\n    let monthTranslate;\n    const transitionEndCallback = !calendar.animating && transition !== 0;\n    if (targetDate > currentDate) {\n      // To next\n      calendar.monthsTranslate -= 1;\n      if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n      $wrapperEl.append(newMonthHTML);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n      calendar.$months.eq(calendar.$months.length - 1).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-next');\n    } else {\n      // To prev\n      calendar.monthsTranslate += 1;\n      if (!calendar.animating) calendar.$months.eq(0).remove();\n      $wrapperEl.prepend(newMonthHTML);\n      calendar.$months = $wrapperEl.find('.calendar-month');\n      monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n      calendar.$months.eq(0).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-prev');\n    }\n    calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);\n    calendar.animating = true;\n    calendar.onMonthChangeStart(dir);\n    const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n    $wrapperEl.transition(transition).transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n    if (transitionEndCallback) {\n      $wrapperEl.transitionEnd(() => {\n        calendar.onMonthChangeEnd(dir, true);\n      });\n    }\n    if (!params.animate || transition === 0) {\n      calendar.onMonthChangeEnd(dir, true);\n    }\n  }\n  nextYear() {\n    const calendar = this;\n    calendar.setYearMonth(calendar.currentYear + 1);\n  }\n  prevYear() {\n    const calendar = this;\n    calendar.setYearMonth(calendar.currentYear - 1);\n  }\n  // eslint-disable-next-line\n  dateInRange(dayDate, range) {\n    let match = false;\n    let i;\n    if (!range) return false;\n    if (Array.isArray(range)) {\n      for (i = 0; i < range.length; i += 1) {\n        if (range[i].from || range[i].to) {\n          if (range[i].from && range[i].to) {\n            if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {\n              match = true;\n            }\n          } else if (range[i].from) {\n            if (dayDate >= new Date(range[i].from).getTime()) {\n              match = true;\n            }\n          } else if (range[i].to) {\n            if (dayDate <= new Date(range[i].to).getTime()) {\n              match = true;\n            }\n          }\n        } else if (range[i].date) {\n          if (dayDate === new Date(range[i].date).getTime()) {\n            match = true;\n          }\n        } else if (dayDate === new Date(range[i]).getTime()) {\n          match = true;\n        }\n      }\n    } else if (range.from || range.to) {\n      if (range.from && range.to) {\n        if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n          match = true;\n        }\n      } else if (range.from) {\n        if (dayDate >= new Date(range.from).getTime()) {\n          match = true;\n        }\n      } else if (range.to) {\n        if (dayDate <= new Date(range.to).getTime()) {\n          match = true;\n        }\n      }\n    } else if (range.date) {\n      match = dayDate === new Date(range.date).getTime();\n    } else if (typeof range === 'function') {\n      match = range(new Date(dayDate));\n    }\n    return match;\n  }\n  // eslint-disable-next-line\n  daysInMonth(date) {\n    const d = new Date(date);\n    return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n  }\n  renderMonths(date) {\n    const calendar = this;\n    if (calendar.params.renderMonths) {\n      return calendar.params.renderMonths.call(calendar, date);\n    }\n    return $jsx(\"div\", {\n      class: \"calendar-months-wrapper\"\n    }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));\n  }\n  renderMonth(d, offset) {\n    const calendar = this;\n    const {\n      params,\n      value\n    } = calendar;\n    if (params.renderMonth) {\n      return params.renderMonth.call(calendar, d, offset);\n    }\n    let date = new Date(d);\n    let year = date.getFullYear();\n    let month = date.getMonth();\n    let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n    if (localeMonth < 0) localeMonth = month;\n    let localeYear = calendar.yearFormatter(date);\n    if (offset === 'next') {\n      if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);\n    }\n    if (offset === 'prev') {\n      if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);\n    }\n    if (offset === 'next' || offset === 'prev') {\n      month = date.getMonth();\n      year = date.getFullYear();\n      localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n      if (localeMonth < 0) localeMonth = month;\n      localeYear = calendar.yearFormatter(date);\n    }\n    const currentValues = [];\n    const today = new Date().setHours(0, 0, 0, 0);\n    const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n    const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n    const rows = 6;\n    const cols = 7;\n    const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);\n    const daysInMonth = calendar.daysInMonth(date);\n    const minDayNumber = params.firstDay === 6 ? 0 : 1;\n    let monthHtml = '';\n    let dayIndex = 0 + (params.firstDay - 1);\n    let disabled;\n    let hasEvents;\n    let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n    if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n    if (value && value.length) {\n      for (let i = 0; i < value.length; i += 1) {\n        currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n      }\n    }\n    for (let row = 1; row <= rows; row += 1) {\n      let rowHtml = '';\n      for (let col = 1; col <= cols; col += 1) {\n        dayIndex += 1;\n        let dayDate;\n        let dayNumber = dayIndex - firstDayOfMonthIndex;\n        let addClass = '';\n        if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n          dayIndex -= 7;\n          dayNumber = dayIndex - firstDayOfMonthIndex;\n        }\n        const weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n        if (dayNumber < 0) {\n          dayNumber = daysInPrevMonth + dayNumber + 1;\n          addClass += ' calendar-day-prev';\n          dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n        } else {\n          dayNumber += 1;\n          if (dayNumber > daysInMonth) {\n            dayNumber -= daysInMonth;\n            addClass += ' calendar-day-next';\n            dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n          } else {\n            dayDate = new Date(year, month, dayNumber).getTime();\n          }\n        }\n        // Today\n        if (dayDate === today) addClass += ' calendar-day-today';\n\n        // Selected\n        if (params.rangePicker && currentValues.length === 2) {\n          if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n            addClass += ' calendar-day-selected';\n          }\n          if (currentValues[0] !== currentValues[1]) {\n            if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n              addClass += ' calendar-day-selected-range';\n            }\n            if (dayDate === currentValues[0]) {\n              addClass += ' calendar-day-selected-left';\n            }\n            if (dayDate === currentValues[1]) {\n              addClass += ' calendar-day-selected-right';\n            }\n          }\n        } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n        // Weekend\n        if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n          addClass += ' calendar-day-weekend';\n        }\n        // Events\n        let eventsHtml = '';\n        hasEvents = false;\n        if (params.events) {\n          if (calendar.dateInRange(dayDate, params.events)) {\n            hasEvents = true;\n          }\n        }\n        if (hasEvents) {\n          addClass += ' calendar-day-has-events';\n          // prettier-ignore\n          eventsHtml = `\n            <span class=\"calendar-day-events\">\n              <span class=\"calendar-day-event\"></span>\n            </span>\n          `;\n          if (Array.isArray(params.events)) {\n            const eventDots = [];\n            params.events.forEach(ev => {\n              const color = ev.color || '';\n              if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n                eventDots.push(color);\n              }\n            });\n            // prettier-ignore\n            eventsHtml = `\n              <span class=\"calendar-day-events\">\n                ${eventDots.map(color => `\n                  <span class=\"calendar-day-event\" style=\"${color ? `background-color: ${color}` : ''}\"></span>\n                `.trim()).join('')}\n              </span>\n            `;\n          }\n        }\n        // Custom Ranges\n        if (params.rangesClasses) {\n          for (let k = 0; k < params.rangesClasses.length; k += 1) {\n            if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n              addClass += ` ${params.rangesClasses[k].cssClass}`;\n            }\n          }\n        }\n        // Disabled\n        disabled = false;\n        if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {\n          disabled = true;\n        }\n        if (params.disabled) {\n          if (calendar.dateInRange(dayDate, params.disabled)) {\n            disabled = true;\n          }\n        }\n        if (disabled) {\n          addClass += ' calendar-day-disabled';\n        }\n        dayDate = new Date(dayDate);\n        const dayYear = dayDate.getFullYear();\n        const dayMonth = dayDate.getMonth();\n        const dayNumberDisplay = calendar.dayFormatter(dayDate);\n        // prettier-ignore\n        rowHtml += `\n          <div data-year=\"${dayYear}\" data-month=\"${dayMonth}\" data-day=\"${dayNumber}\" class=\"calendar-day${addClass}\" data-date=\"${dayYear}-${dayMonth}-${dayNumber}\">\n            <span class=\"calendar-day-number\">${dayNumberDisplay}${eventsHtml}</span>\n          </div>`.trim();\n      }\n      monthHtml += `<div class=\"calendar-row\">${rowHtml}</div>`;\n    }\n    monthHtml = `<div class=\"calendar-month\" data-year=\"${year}\" data-month=\"${month}\" data-locale-year=\"${localeYear}\" data-locale-month=\"${localeMonth}\">${monthHtml}</div>`;\n    return monthHtml;\n  }\n  renderWeekHeader() {\n    const calendar = this;\n    if (calendar.params.renderWeekHeader) {\n      return calendar.params.renderWeekHeader.call(calendar);\n    }\n    const {\n      params\n    } = calendar;\n    let weekDaysHtml = '';\n    for (let i = 0; i < 7; i += 1) {\n      const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n      const dayName = calendar.dayNamesShort[dayIndex];\n      weekDaysHtml += `<div class=\"calendar-week-day\">${dayName}</div>`;\n    }\n    return $jsx(\"div\", {\n      class: \"calendar-week-header\"\n    }, weekDaysHtml);\n  }\n  renderMonthSelector() {\n    const calendar = this;\n    if (calendar.params.renderMonthSelector) {\n      return calendar.params.renderMonthSelector.call(calendar);\n    }\n    return $jsx(\"div\", {\n      class: \"calendar-month-selector\"\n    }, $jsx(\"a\", {\n      class: \"link icon-only calendar-prev-month-button\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-prev\"\n    })), calendar.params.monthPicker ? $jsx(\"a\", {\n      class: \"current-month-value link\"\n    }) : $jsx(\"span\", {\n      class: \"current-month-value\"\n    }), $jsx(\"a\", {\n      class: \"link icon-only calendar-next-month-button\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-next\"\n    })));\n  }\n  renderYearSelector() {\n    const calendar = this;\n    if (calendar.params.renderYearSelector) {\n      return calendar.params.renderYearSelector.call(calendar);\n    }\n    return $jsx(\"div\", {\n      class: \"calendar-year-selector\"\n    }, $jsx(\"a\", {\n      class: \"link icon-only calendar-prev-year-button\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-prev\"\n    })), calendar.params.yearPicker ? $jsx(\"a\", {\n      class: \"current-year-value link\"\n    }) : $jsx(\"span\", {\n      class: \"current-year-value\"\n    }), $jsx(\"a\", {\n      class: \"link icon-only calendar-next-year-button\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-next\"\n    })));\n  }\n\n  // eslint-disable-next-line\n  renderTimeSelector() {\n    const calendar = this;\n    const value = calendar.value && calendar.value[0];\n    let timeString;\n    if (value) timeString = calendar.timeSelectorFormatter(value);\n    return $jsx(\"div\", {\n      class: \"calendar-time-selector\"\n    }, $jsx(\"span\", null, calendar.params.timePickerLabel), $jsx(\"a\", {\n      class: \"link\"\n    }, timeString || calendar.params.timePickerPlaceholder));\n  }\n  renderHeader() {\n    const calendar = this;\n    if (calendar.params.renderHeader) {\n      return calendar.params.renderHeader.call(calendar);\n    }\n    return $jsx(\"div\", {\n      class: \"calendar-header\"\n    }, $jsx(\"div\", {\n      class: \"calendar-selected-date\"\n    }, calendar.params.headerPlaceholder));\n  }\n  renderFooter() {\n    const calendar = this;\n    const app = calendar.app;\n    if (calendar.params.renderFooter) {\n      return calendar.params.renderFooter.call(calendar);\n    }\n    return $jsx(\"div\", {\n      class: \"calendar-footer\"\n    }, $jsx(\"a\", {\n      class: `${app.theme === 'md' ? 'button button-round' : 'link'} calendar-close sheet-close popover-close`\n    }, calendar.params.toolbarCloseText));\n  }\n  renderToolbar() {\n    const calendar = this;\n    if (calendar.params.renderToolbar) {\n      return calendar.params.renderToolbar.call(calendar, calendar);\n    }\n    // prettier-ignore\n    return $jsx(\"div\", {\n      class: \"toolbar toolbar-top\"\n    }, $jsx(\"div\", {\n      class: \"toolbar-inner\"\n    }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));\n  }\n  // eslint-disable-next-line\n  renderInline() {\n    const calendar = this;\n    const {\n      cssClass,\n      toolbar,\n      header,\n      footer,\n      rangePicker,\n      weekHeader\n    } = calendar.params;\n    const {\n      value,\n      hasTimePicker\n    } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return $jsx(\"div\", {\n      class: `calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n    }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n      class: \"calendar-months\"\n    }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n  }\n  renderCustomModal() {\n    const calendar = this;\n    const {\n      cssClass,\n      toolbar,\n      header,\n      footer,\n      rangePicker,\n      weekHeader\n    } = calendar.params;\n    const {\n      value,\n      hasTimePicker\n    } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return $jsx(\"div\", {\n      class: `calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n    }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n      class: \"calendar-months\"\n    }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n  }\n  renderSheet() {\n    const calendar = this;\n    const {\n      cssClass,\n      toolbar,\n      header,\n      footer,\n      rangePicker,\n      weekHeader\n    } = calendar.params;\n    const {\n      value,\n      hasTimePicker\n    } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return $jsx(\"div\", {\n      class: `sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n    }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n      class: \"sheet-modal-inner calendar-months\"\n    }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n  }\n  renderPopover() {\n    const calendar = this;\n    const {\n      cssClass,\n      toolbar,\n      header,\n      footer,\n      rangePicker,\n      weekHeader\n    } = calendar.params;\n    const {\n      value,\n      hasTimePicker\n    } = calendar;\n    const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n    return $jsx(\"div\", {\n      class: \"popover calendar-popover\"\n    }, $jsx(\"div\", {\n      class: \"popover-inner\"\n    }, $jsx(\"div\", {\n      class: `calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n    }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n      class: \"calendar-months\"\n    }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));\n  }\n  render() {\n    const calendar = this;\n    const {\n      params\n    } = calendar;\n    if (params.render) return params.render.call(calendar);\n    if (!calendar.inline) {\n      let modalType = params.openIn;\n      if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n      if (modalType === 'popover') return calendar.renderPopover();\n      if (modalType === 'sheet') return calendar.renderSheet();\n      return calendar.renderCustomModal();\n    }\n    return calendar.renderInline();\n  }\n  openMonthPicker() {\n    const calendar = this;\n    const {\n      $el,\n      app\n    } = calendar;\n    if (!$el || !$el.length) return;\n    $el.append('<div class=\"popover calendar-popover calendar-month-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-month-picker\"></div></div></div>');\n    calendar.monthPickerPopover = app.popover.create({\n      el: $el.find('.calendar-month-picker-popover'),\n      targetEl: $el.find('.calendar-month-selector'),\n      backdrop: true,\n      backdropUnique: true,\n      on: {\n        close() {\n          calendar.closeMonthPicker();\n        },\n        closed() {\n          if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n          calendar.monthPickerPopover.destroy();\n          if (calendar.monthPickerInstance) {\n            calendar.monthPickerInstance.close();\n            calendar.monthPickerInstance.destroy();\n          }\n          delete calendar.monthPickerInstance;\n          delete calendar.monthPickerPopover;\n        }\n      }\n    });\n    calendar.monthPickerPopover.open();\n    const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n    const values = [];\n    const displayValues = [];\n    calendar.monthNames.forEach((m, index) => {\n      values.push(index);\n      displayValues.push(m);\n    });\n    calendar.monthPickerInstance = app.picker.create({\n      containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n      value: [localeMonth],\n      toolbar: calendar.params.monthPickerToolbar,\n      rotateEffect: false,\n      toolbarCloseText: calendar.params.monthPickerCloseText,\n      cols: [{\n        values,\n        displayValues\n      }]\n    });\n  }\n  closeMonthPicker() {\n    const calendar = this;\n    if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();\n    const index = calendar.monthPickerInstance.value[0];\n    const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n    const monthIndex = calendar.currentMonth;\n    const diff = localeMonthIndex - monthIndex;\n    const diffIndex = index - diff;\n    calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n  }\n  openYearPicker() {\n    const calendar = this;\n    const {\n      $el,\n      app\n    } = calendar;\n    if (!$el || !$el.length) return;\n    $el.append('<div class=\"popover calendar-popover calendar-year-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-year-picker\"></div></div></div>');\n    calendar.yearPickerPopover = app.popover.create({\n      el: $el.find('.calendar-year-picker-popover'),\n      targetEl: $el.find('.calendar-year-selector'),\n      backdrop: true,\n      backdropUnique: true,\n      on: {\n        close() {\n          calendar.closeYearPicker();\n        },\n        closed() {\n          if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n          calendar.yearPickerPopover.destroy();\n          if (calendar.yearPickerInstance) {\n            calendar.yearPickerInstance.close();\n            calendar.yearPickerInstance.destroy();\n          }\n          delete calendar.yearPickerInstance;\n          delete calendar.yearPickerPopover;\n        }\n      }\n    });\n    calendar.yearPickerPopover.open();\n    const currentYear = calendar.currentYear;\n    let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n    if (calendar.params.minDate) {\n      yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n    }\n    let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n    if (calendar.params.maxDate) {\n      yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n    }\n    const years = [];\n    for (let i = yearMin; i <= yearMax; i += 1) {\n      years.push(i);\n    }\n    calendar.yearPickerInstance = app.picker.create({\n      containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n      value: [currentYear],\n      toolbar: calendar.params.yearPickerToolbar,\n      rotateEffect: false,\n      toolbarCloseText: calendar.params.yearPickerCloseText,\n      cols: [{\n        values: years\n      }]\n    });\n  }\n  closeYearPicker() {\n    const calendar = this;\n    if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();\n    calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n  }\n  openTimePicker() {\n    const calendar = this;\n    const {\n      $el,\n      app,\n      is12HoursFormat\n    } = calendar;\n    if (!$el || !$el.length) return;\n    $el.append('<div class=\"popover calendar-popover calendar-time-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-time-picker\"></div></div></div>');\n    const hoursArr = [];\n    const minutesArr = [];\n    const hoursMin = is12HoursFormat ? 1 : 0;\n    const hoursMax = is12HoursFormat ? 12 : 23;\n    for (let i = hoursMin; i <= hoursMax; i += 1) {\n      hoursArr.push(i);\n    }\n    for (let i = 0; i <= 59; i += 1) {\n      minutesArr.push(i);\n    }\n    let value;\n    if (calendar.value && calendar.value.length) {\n      value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n    } else {\n      value = [new Date().getHours(), new Date().getMinutes()];\n    }\n    if (is12HoursFormat) {\n      value.push(value[0] < 12 ? 'AM' : 'PM');\n      if (value[0] > 12) value[0] -= 12;\n      if (value[0] === 0) value[0] = 12;\n    }\n    calendar.timePickerPopover = app.popover.create({\n      el: $el.find('.calendar-time-picker-popover'),\n      targetEl: $el.find('.calendar-time-selector .link'),\n      backdrop: true,\n      backdropUnique: true,\n      on: {\n        close() {\n          calendar.closeTimePicker();\n        },\n        closed() {\n          if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n          calendar.timePickerPopover.destroy();\n          if (calendar.timePickerInstance) {\n            calendar.timePickerInstance.close();\n            calendar.timePickerInstance.destroy();\n          }\n          delete calendar.timePickerInstance;\n          delete calendar.timePickerPopover;\n        }\n      }\n    });\n    calendar.timePickerPopover.open();\n    calendar.timePickerInstance = app.picker.create({\n      containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n      value,\n      toolbar: calendar.params.timePickerToolbar,\n      rotateEffect: false,\n      toolbarCloseText: calendar.params.timePickerCloseText,\n      cols: [{\n        values: hoursArr\n      }, {\n        divider: true,\n        content: ':'\n      }, {\n        values: minutesArr,\n        displayValues: minutesArr.map(m => m < 10 ? `0${m}` : m)\n      }, ...(is12HoursFormat ? [{\n        values: ['AM', 'PM']\n      }] : [])]\n    });\n  }\n  closeTimePicker() {\n    const calendar = this;\n    const {\n      is12HoursFormat\n    } = calendar;\n    if (calendar.timePickerInstance) {\n      const timePickerValue = calendar.timePickerInstance.value;\n      let hours = parseInt(timePickerValue[0], 10);\n      const minutes = parseInt(timePickerValue[1], 10);\n      const period = calendar.timePickerInstance.value[2];\n      if (is12HoursFormat) {\n        if (period === 'AM' && hours === 12) {\n          hours = 0;\n        } else if (period === 'PM' && hours !== 12) {\n          hours += 12;\n        }\n      }\n      let value = calendar.value && calendar.value.length && calendar.value[0];\n      if (!value) {\n        value = new Date();\n        value.setHours(hours, minutes, 0, 0);\n      } else {\n        value = new Date(value);\n        value.setHours(hours, minutes);\n      }\n      calendar.setValue([value]);\n      if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();\n    }\n  }\n  onOpen() {\n    const calendar = this;\n    const {\n      initialized,\n      $el,\n      app,\n      $inputEl,\n      inline,\n      value,\n      params\n    } = calendar;\n    calendar.closing = false;\n    calendar.opened = true;\n    calendar.opening = true;\n\n    // Init main events\n    calendar.attachCalendarEvents();\n    const updateValue = !value && params.value;\n\n    // Set value\n    if (!initialized) {\n      if (value) calendar.setValue(value, 0);else if (params.value) {\n        calendar.setValue(calendar.normalizeValues(params.value), 0);\n      }\n    } else if (value) {\n      calendar.setValue(value, 0);\n    }\n\n    // Update current month and year\n    calendar.updateCurrentMonthYear();\n\n    // Set initial translate\n    calendar.monthsTranslate = 0;\n    calendar.setMonthsTranslate();\n\n    // Update input value\n    if (updateValue) calendar.updateValue();else if (params.header && value) {\n      calendar.updateValue(true);\n    }\n\n    // Extra focus\n    if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n    calendar.initialized = true;\n    calendar.$months.each(monthEl => {\n      calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n    });\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('calendar:open');\n    }\n    if ($inputEl) {\n      $inputEl.trigger('calendar:open');\n    }\n    calendar.emit('local::open calendarOpen', calendar);\n  }\n  onOpened() {\n    const calendar = this;\n    calendar.opening = false;\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:opened');\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:opened');\n    }\n    calendar.emit('local::opened calendarOpened', calendar);\n  }\n  onClose() {\n    const calendar = this;\n    const app = calendar.app;\n    calendar.opening = false;\n    calendar.closing = true;\n    if (calendar.$inputEl) {\n      if (app.theme === 'md') {\n        calendar.$inputEl.trigger('blur');\n      } else {\n        const validate = calendar.$inputEl.attr('validate');\n        const required = calendar.$inputEl.attr('required');\n        if (validate && required) {\n          app.input.validate(calendar.$inputEl);\n        }\n      }\n    }\n    if (calendar.detachCalendarEvents) {\n      calendar.detachCalendarEvents();\n    }\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:close');\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:close');\n    }\n    calendar.emit('local::close calendarClose', calendar);\n  }\n  onClosed() {\n    const calendar = this;\n    calendar.opened = false;\n    calendar.closing = false;\n    if (!calendar.inline) {\n      nextTick(() => {\n        if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n          if (!calendar.params.routableModals) {\n            calendar.modal.destroy();\n          }\n        }\n        delete calendar.modal;\n      });\n    }\n    if (calendar.timePickerInstance) {\n      if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n      delete calendar.timePickerInstance;\n    }\n    if (calendar.$el) {\n      calendar.$el.trigger('calendar:closed');\n    }\n    if (calendar.$inputEl) {\n      calendar.$inputEl.trigger('calendar:closed');\n    }\n    calendar.emit('local::closed calendarClosed', calendar);\n  }\n  open() {\n    const calendar = this;\n    const {\n      app,\n      opened,\n      inline,\n      $inputEl,\n      params\n    } = calendar;\n    if (opened) return;\n    if (inline) {\n      calendar.$el = $(calendar.render());\n      calendar.$el[0].f7Calendar = calendar;\n      calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n      calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n      calendar.$containerEl.append(calendar.$el);\n      calendar.onOpen();\n      calendar.onOpened();\n      return;\n    }\n    let modalType = params.openIn;\n    if (modalType === 'auto') {\n      modalType = calendar.isPopover() ? 'popover' : 'sheet';\n    }\n    const modalContent = calendar.render();\n    const modalParams = {\n      targetEl: $inputEl,\n      scrollToEl: params.scrollToInput ? $inputEl : undefined,\n      content: modalContent,\n      backdrop: params.backdrop === true || (modalType === 'popover' || modalType === 'customModal') && app.params.popover.backdrop !== false && params.backdrop !== false,\n      closeByBackdropClick: params.closeByBackdropClick,\n      on: {\n        open() {\n          const modal = this;\n          calendar.modal = modal;\n          calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n          calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n          calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n          calendar.$el[0].f7Calendar = calendar;\n          if (modalType === 'customModal') {\n            $(calendar.$el).find('.calendar-close').once('click', () => {\n              calendar.close();\n            });\n          }\n          calendar.onOpen();\n        },\n        opened() {\n          calendar.onOpened();\n        },\n        close() {\n          calendar.onClose();\n        },\n        closed() {\n          calendar.onClosed();\n        }\n      }\n    };\n    if (modalType === 'sheet') {\n      modalParams.push = params.sheetPush;\n      modalParams.swipeToClose = params.sheetSwipeToClose;\n    }\n    if (params.routableModals && calendar.view) {\n      calendar.view.router.navigate({\n        url: calendar.url,\n        route: {\n          path: calendar.url,\n          [modalType]: modalParams\n        }\n      });\n    } else {\n      calendar.modal = app[modalType].create(modalParams);\n      calendar.modal.open();\n    }\n  }\n  close() {\n    const calendar = this;\n    const {\n      opened,\n      inline\n    } = calendar;\n    if (!opened) return;\n    if (inline) {\n      calendar.onClose();\n      calendar.onClosed();\n      return;\n    }\n    if (calendar.params.routableModals && calendar.view) {\n      calendar.view.router.back();\n    } else {\n      calendar.modal.close();\n    }\n  }\n  init() {\n    const calendar = this;\n    calendar.initInput();\n    if (calendar.inline) {\n      calendar.open();\n      calendar.emit('local::init calendarInit', calendar);\n      return;\n    }\n    if (!calendar.initialized && calendar.params.value) {\n      calendar.setValue(calendar.normalizeValues(calendar.params.value));\n    }\n\n    // Attach input Events\n    if (calendar.$inputEl) {\n      calendar.attachInputEvents();\n    }\n    if (calendar.params.closeByOutsideClick) {\n      calendar.attachHtmlEvents();\n    }\n    calendar.emit('local::init calendarInit', calendar);\n  }\n  destroy() {\n    const calendar = this;\n    if (calendar.destroyed) return;\n    const {\n      $el\n    } = calendar;\n    calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n    if ($el) $el.trigger('calendar:beforedestroy');\n    calendar.close();\n\n    // Detach Events\n    if (calendar.$inputEl) {\n      calendar.detachInputEvents();\n    }\n    if (calendar.params.closeByOutsideClick) {\n      calendar.detachHtmlEvents();\n    }\n    if (calendar.timePickerInstance) {\n      if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n      delete calendar.timePickerInstance;\n    }\n    if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n    deleteProps(calendar);\n    calendar.destroyed = true;\n  }\n}\nexport default Calendar;", "import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\nexport default {\n  name: 'calendar',\n  static: {\n    Calendar\n  },\n  create() {\n    const app = this;\n    app.calendar = ConstructorMethods({\n      defaultSelector: '.calendar',\n      constructor: Calendar,\n      app,\n      domProp: 'f7Calendar'\n    });\n    app.calendar.close = function close(el) {\n      if (el === void 0) {\n        el = '.calendar';\n      }\n      const $el = $(el);\n      if ($el.length === 0) return;\n      const calendar = $el[0].f7Calendar;\n      if (!calendar || calendar && !calendar.opened) return;\n      calendar.close();\n    };\n  },\n  params: {\n    calendar: {\n      // Calendar settings\n      dateFormat: undefined,\n      monthNames: 'auto',\n      monthNamesShort: 'auto',\n      dayNames: 'auto',\n      dayNamesShort: 'auto',\n      locale: undefined,\n      firstDay: 1,\n      // First day of the week, Monday\n      weekendDays: [0, 6],\n      // Sunday and Saturday\n      multiple: false,\n      rangePicker: false,\n      rangePickerMinDays: 1,\n      // when calendar is used as rangePicker\n      rangePickerMaxDays: 0,\n      // when calendar is used as rangePicker, 0 means unlimited\n      direction: 'horizontal',\n      // or 'vertical'\n      minDate: null,\n      maxDate: null,\n      disabled: null,\n      // dates range of disabled days\n      events: null,\n      // dates range of days with events\n      rangesClasses: null,\n      // array with custom classes date ranges\n      touchMove: true,\n      animate: true,\n      closeOnSelect: false,\n      monthSelector: true,\n      monthPicker: true,\n      monthPickerToolbar: true,\n      monthPickerCloseText: 'Done',\n      yearSelector: true,\n      yearPicker: true,\n      yearPickerToolbar: true,\n      yearPickerMin: undefined,\n      yearPickerMax: undefined,\n      yearPickerCloseText: 'Done',\n      timePicker: false,\n      timePickerToolbar: true,\n      timePickerLabel: 'Time',\n      timePickerFormat: {\n        hour: 'numeric',\n        minute: 'numeric'\n      },\n      timePickerPlaceholder: 'Select time',\n      timePickerCloseText: 'Done',\n      weekHeader: true,\n      value: null,\n      // Common opener settings\n      containerEl: null,\n      openIn: 'auto',\n      // or 'popover' or 'sheet' or 'customModal'\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      formatValue: null,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      header: false,\n      headerPlaceholder: 'Select date',\n      toolbar: true,\n      toolbarCloseText: 'Done',\n      footer: false,\n      cssClass: null,\n      routableModals: false,\n      view: null,\n      url: 'date/',\n      backdrop: null,\n      closeByBackdropClick: true,\n      // Render functions\n      renderWeekHeader: null,\n      renderMonths: null,\n      renderMonth: null,\n      renderMonthSelector: null,\n      renderYearSelector: null,\n      renderHeader: null,\n      renderFooter: null,\n      renderToolbar: null,\n      renderInline: null,\n      renderPopover: null,\n      renderSheet: null,\n      render: null\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nexport default function pickerColumn(colEl, updateItems) {\n  const picker = this;\n  // const app = picker.app;\n  const $colEl = $(colEl);\n  const colIndex = $colEl.index();\n  const col = picker.cols[colIndex];\n  if (col.divider) return;\n  col.$el = $colEl;\n  col.el = $colEl[0];\n  col.$itemsEl = col.$el.find('.picker-items');\n  col.items = col.$itemsEl.find('.picker-item');\n  let itemHeight;\n  let colHeight;\n  col.replaceValues = function replaceColValues(values, displayValues) {\n    col.detachEvents();\n    col.values = values;\n    col.displayValues = displayValues;\n    col.$itemsEl.html(picker.renderColumn(col, true));\n    col.items = col.$itemsEl.find('.picker-item');\n    col.calcSize();\n    col.setValue(col.values[0], true);\n    col.attachEvents();\n  };\n  col.calcSize = function calcColSize() {\n    colHeight = col.$el[0].offsetHeight;\n    itemHeight = col.items[0].offsetHeight;\n    const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n    col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n    if (!hadPadding) {\n      col.$itemsEl[0].scrollTop = 0;\n    }\n  };\n  col.setValue = function setColValue(newValue, valueCallbacks) {\n    const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n    if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n      return;\n    }\n    const newScrollTop = newActiveIndex * itemHeight;\n    col.$itemsEl[0].scrollTop = newScrollTop;\n\n    // Update items\n    col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n  };\n  col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n    if (typeof scrollTop === 'undefined') {\n      // eslint-disable-next-line\n      scrollTop = col.$itemsEl[0].scrollTop;\n    }\n\n    /* eslint-disable no-param-reassign */\n    if (typeof activeIndex === 'undefined') {\n      activeIndex = Math.round(scrollTop / itemHeight);\n    }\n    if (activeIndex < 0) activeIndex = 0;\n    if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n    /* eslint-enable no-param-reassign */\n    const previousActiveIndex = col.activeIndex;\n    col.activeIndex = activeIndex;\n    col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n    const selectedItem = col.items.eq(activeIndex);\n    selectedItem.addClass('picker-item-selected').children().transform('');\n    // Set 3D rotate effect\n    if (picker.params.rotateEffect) {\n      col.items.each(itemEl => {\n        const $itemEl = $(itemEl);\n        const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n        const percentage = itemOffset / itemHeight;\n        const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n        let angle = -24 * percentage;\n        if (angle > 180) angle = 180;\n        if (angle < -180) angle = -180;\n        if (Math.abs(percentage) > itemsFit) {\n          $itemEl.addClass('picker-item-far');\n        } else {\n          $itemEl.removeClass('picker-item-far');\n        }\n        $itemEl.children('span').transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n      });\n    }\n    if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n      // Update values\n      col.value = selectedItem.attr('data-picker-value');\n      col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n      // On change callback\n      if (previousActiveIndex !== activeIndex) {\n        if (col.onChange) {\n          col.onChange(picker, col.value, col.displayValue);\n        }\n        picker.updateValue();\n      }\n    }\n  };\n  function handleScroll() {\n    col.updateItems();\n  }\n  function handleClick() {\n    const value = $(this).attr('data-picker-value');\n    col.setValue(value);\n  }\n  col.attachEvents = function attachColEvents() {\n    col.$itemsEl.on('scroll', handleScroll);\n    col.items.on('click', handleClick);\n  };\n  col.detachEvents = function detachColEvents() {\n    col.items.off('click', handleClick);\n  };\n  col.init = function initCol() {\n    col.calcSize();\n    if (colIndex === 0) col.$el.addClass('picker-column-first');\n    if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n    if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n    // Update items on init\n    if (updateItems) col.updateItems(0);\n    col.attachEvents();\n  };\n  col.destroy = function destroyCol() {\n    col.detachEvents();\n  };\n  col.init();\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Picker extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const picker = this;\n    const device = getDevice();\n    const window = getWindow();\n    picker.params = extend({}, app.params.picker, params);\n    let $containerEl;\n    if (picker.params.containerEl) {\n      $containerEl = $(picker.params.containerEl);\n      if ($containerEl.length === 0) return picker;\n    }\n    let $inputEl;\n    if (picker.params.inputEl) {\n      $inputEl = $(picker.params.inputEl);\n    }\n    let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n    if (picker.params.scrollToEl) {\n      const scrollToEl = $(picker.params.scrollToEl);\n      if (scrollToEl.length > 0) {\n        $scrollToEl = scrollToEl;\n      }\n    }\n    extend(picker, {\n      app,\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,\n      cols: [],\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      $scrollToEl,\n      initialized: false,\n      opened: false,\n      url: picker.params.url\n    });\n    function onResize() {\n      picker.resizeCols();\n    }\n    function onInputClick() {\n      picker.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    let htmlTouchStartTarget = null;\n    function onHtmlTouchStart(e) {\n      htmlTouchStartTarget = e.target;\n    }\n    function onHtmlClick(e) {\n      if (picker.destroyed || !picker.params) return;\n      const $targetEl = $(e.target);\n      if (picker.isPopover()) return;\n      if (!picker.opened || picker.closing) return;\n      if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n      if ($inputEl && $inputEl.length > 0) {\n        if (htmlTouchStartTarget === e.target && $targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n          picker.close();\n        }\n      } else if ($(e.target).closest('.sheet-modal').length === 0) {\n        picker.close();\n      }\n    }\n\n    // Events\n    extend(picker, {\n      attachResizeEvent() {\n        app.on('resize', onResize);\n      },\n      detachResizeEvent() {\n        app.off('resize', onResize);\n      },\n      attachInputEvents() {\n        picker.$inputEl.on('click', onInputClick);\n        if (picker.params.inputReadOnly) {\n          picker.$inputEl.on('focus mousedown', onInputFocus);\n          if (picker.$inputEl[0]) {\n            picker.$inputEl[0].f7ValidateReadonly = true;\n          }\n        }\n      },\n      detachInputEvents() {\n        picker.$inputEl.off('click', onInputClick);\n        if (picker.params.inputReadOnly) {\n          picker.$inputEl.off('focus mousedown', onInputFocus);\n          if (picker.$inputEl[0]) {\n            delete picker.$inputEl[0].f7ValidateReadonly;\n          }\n        }\n      },\n      attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n        app.on('touchstart', onHtmlTouchStart);\n      },\n      detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n        app.off('touchstart', onHtmlTouchStart);\n      }\n    });\n    picker.init();\n    return picker;\n  }\n  get view() {\n    const {\n      app,\n      params,\n      $inputEl\n    } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    } else if ($inputEl) {\n      view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n  initInput() {\n    const picker = this;\n    if (!picker.$inputEl) return;\n    if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n  }\n  resizeCols() {\n    const picker = this;\n    if (!picker.opened) return;\n    for (let i = 0; i < picker.cols.length; i += 1) {\n      if (!picker.cols[i].divider) {\n        picker.cols[i].calcSize();\n        picker.cols[i].setValue(picker.cols[i].value, false);\n      }\n    }\n  }\n  isPopover() {\n    const picker = this;\n    const {\n      app,\n      modal,\n      params\n    } = picker;\n    const device = getDevice();\n    if (params.openIn === 'sheet') return false;\n    if (modal && modal.type !== 'popover') return false;\n    if (!picker.inline && picker.inputEl) {\n      if (params.openIn === 'popover') return true;\n      if (device.ios) {\n        return !!device.ipad;\n      }\n      if (app.width >= 768) {\n        return true;\n      }\n    }\n    return false;\n  }\n  formatValue() {\n    const picker = this;\n    const {\n      value,\n      displayValue\n    } = picker;\n    if (picker.params.formatValue) {\n      return picker.params.formatValue.call(picker, value, displayValue);\n    }\n    return value.join(' ');\n  }\n  setValue(values) {\n    const picker = this;\n    let valueIndex = 0;\n    if (picker.cols.length === 0) {\n      picker.value = values;\n      picker.updateValue(values);\n      return;\n    }\n    for (let i = 0; i < picker.cols.length; i += 1) {\n      if (picker.cols[i] && !picker.cols[i].divider) {\n        picker.cols[i].setValue(values[valueIndex]);\n        valueIndex += 1;\n      }\n    }\n  }\n  getValue() {\n    const picker = this;\n    return picker.value;\n  }\n  updateValue(forceValues) {\n    const picker = this;\n    const newValue = forceValues || [];\n    const newDisplayValue = [];\n    let column;\n    if (picker.cols.length === 0) {\n      const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n      for (let i = 0; i < noDividerColumns.length; i += 1) {\n        column = noDividerColumns[i];\n        if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n          newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n        } else {\n          newDisplayValue.push(newValue[i]);\n        }\n      }\n    } else {\n      for (let i = 0; i < picker.cols.length; i += 1) {\n        if (!picker.cols[i].divider) {\n          newValue.push(picker.cols[i].value);\n          newDisplayValue.push(picker.cols[i].displayValue);\n        }\n      }\n    }\n    if (newValue.indexOf(undefined) >= 0) {\n      return;\n    }\n    picker.value = newValue;\n    picker.displayValue = newDisplayValue;\n    picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n    if (picker.inputEl) {\n      picker.$inputEl.val(picker.formatValue());\n      picker.$inputEl.trigger('change');\n    }\n  }\n  initColumn(colEl, updateItems) {\n    const picker = this;\n    pickerColumn.call(picker, colEl, updateItems);\n  }\n  // eslint-disable-next-line\n  destroyColumn(colEl) {\n    const picker = this;\n    const $colEl = $(colEl);\n    const index = $colEl.index();\n    if (picker.cols[index] && picker.cols[index].destroy) {\n      picker.cols[index].destroy();\n    }\n  }\n  renderToolbar() {\n    const picker = this;\n    if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n    return $jsx(\"div\", {\n      class: \"toolbar toolbar-top\"\n    }, $jsx(\"div\", {\n      class: \"toolbar-inner\"\n    }, $jsx(\"div\", {\n      class: \"left\"\n    }), $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link sheet-close popover-close\"\n    }, picker.params.toolbarCloseText))));\n  }\n  // eslint-disable-next-line\n  renderColumn(col, onlyItems) {\n    const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n    let columnHtml;\n    let columnItemsHtml;\n    if (col.divider) {\n      // prettier-ignore\n      columnHtml = `\n        <div class=\"${colClasses} picker-column-divider\">${col.content}</div>\n      `;\n    } else {\n      // prettier-ignore\n      columnItemsHtml = col.values.map((value, index) => `\n        <div class=\"picker-item\" data-picker-value=\"${value}\">\n          <span>${col.displayValues ? col.displayValues[index] : value}</span>\n        </div>\n      `).join('');\n      // prettier-ignore\n      columnHtml = `\n        <div class=\"${colClasses}\">\n          <div class=\"picker-items\">${columnItemsHtml}</div>\n        </div>\n      `;\n    }\n    return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n  }\n  renderInline() {\n    const picker = this;\n    const {\n      rotateEffect,\n      cssClass,\n      toolbar\n    } = picker.params;\n    const inlineHtml = $jsx(\"div\", {\n      class: `picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n    }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n      class: \"picker-columns\"\n    }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n      class: \"picker-center-highlight\"\n    })));\n    return inlineHtml;\n  }\n  renderSheet() {\n    const picker = this;\n    const {\n      rotateEffect,\n      cssClass,\n      toolbar\n    } = picker.params;\n    const sheetHtml = $jsx(\"div\", {\n      class: `sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n    }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n      class: \"sheet-modal-inner picker-columns\"\n    }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n      class: \"picker-center-highlight\"\n    })));\n    return sheetHtml;\n  }\n  renderPopover() {\n    const picker = this;\n    const {\n      rotateEffect,\n      cssClass,\n      toolbar\n    } = picker.params;\n    const popoverHtml = $jsx(\"div\", {\n      class: \"popover picker-popover\"\n    }, $jsx(\"div\", {\n      class: \"popover-inner\"\n    }, $jsx(\"div\", {\n      class: `picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n    }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n      class: \"picker-columns\"\n    }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n      class: \"picker-center-highlight\"\n    })))));\n    return popoverHtml;\n  }\n  render() {\n    const picker = this;\n    if (picker.params.render) return picker.params.render.call(picker);\n    if (!picker.inline) {\n      if (picker.isPopover()) return picker.renderPopover();\n      return picker.renderSheet();\n    }\n    return picker.renderInline();\n  }\n  onOpen() {\n    const picker = this;\n    const {\n      initialized,\n      $el,\n      app,\n      $inputEl,\n      inline,\n      value,\n      params\n    } = picker;\n    picker.opened = true;\n    picker.closing = false;\n    picker.opening = true;\n\n    // Init main events\n    picker.attachResizeEvent();\n\n    // Init cols\n    $el.find('.picker-column').each(colEl => {\n      let updateItems = true;\n      if (!initialized && params.value || initialized && value) {\n        updateItems = false;\n      }\n      picker.initColumn(colEl, updateItems);\n    });\n\n    // Set value\n    if (!initialized) {\n      if (value) picker.setValue(value);else if (params.value) {\n        picker.setValue(params.value);\n      }\n    } else if (value) {\n      picker.setValue(value);\n    }\n\n    // Extra focus\n    if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n    picker.initialized = true;\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('picker:open');\n    }\n    if ($inputEl) {\n      $inputEl.trigger('picker:open');\n    }\n    picker.emit('local::open pickerOpen', picker);\n  }\n  onOpened() {\n    const picker = this;\n    picker.opening = false;\n    if (picker.$el) {\n      picker.$el.trigger('picker:opened');\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:opened');\n    }\n    picker.emit('local::opened pickerOpened', picker);\n  }\n  onClose() {\n    const picker = this;\n    const app = picker.app;\n    picker.opening = false;\n    picker.closing = true;\n\n    // Detach events\n    picker.detachResizeEvent();\n    picker.cols.forEach(col => {\n      if (col.destroy) col.destroy();\n    });\n    if (picker.$inputEl) {\n      if (app.theme === 'md') {\n        picker.$inputEl.trigger('blur');\n      } else {\n        const validate = picker.$inputEl.attr('validate');\n        const required = picker.$inputEl.attr('required');\n        if (validate && required) {\n          app.input.validate(picker.$inputEl);\n        }\n      }\n    }\n    if (picker.$el) {\n      picker.$el.trigger('picker:close');\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:close');\n    }\n    picker.emit('local::close pickerClose', picker);\n  }\n  onClosed() {\n    const picker = this;\n    picker.opened = false;\n    picker.closing = false;\n    if (!picker.inline) {\n      nextTick(() => {\n        if (picker.modal && picker.modal.el && picker.modal.destroy) {\n          if (!picker.params.routableModals) {\n            picker.modal.destroy();\n          }\n        }\n        delete picker.modal;\n      });\n    }\n    if (picker.$el) {\n      picker.$el.trigger('picker:closed');\n    }\n    if (picker.$inputEl) {\n      picker.$inputEl.trigger('picker:closed');\n    }\n    picker.emit('local::closed pickerClosed', picker);\n  }\n  open() {\n    const picker = this;\n    const {\n      app,\n      opened,\n      inline,\n      $inputEl,\n      $scrollToEl,\n      params\n    } = picker;\n    if (opened) return;\n    if (picker.cols.length === 0 && params.cols.length) {\n      params.cols.forEach(col => {\n        picker.cols.push(col);\n      });\n    }\n    if (inline) {\n      picker.$el = $(picker.render());\n      picker.$el[0].f7Picker = picker;\n      picker.$containerEl.append(picker.$el);\n      picker.onOpen();\n      picker.onOpened();\n      return;\n    }\n    const isPopover = picker.isPopover();\n    const modalType = isPopover ? 'popover' : 'sheet';\n    const modalParams = {\n      targetEl: $inputEl,\n      scrollToEl: $scrollToEl,\n      content: picker.render(),\n      backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n      on: {\n        open() {\n          const modal = this;\n          picker.modal = modal;\n          picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n          picker.$el[0].f7Picker = picker;\n          picker.onOpen();\n        },\n        opened() {\n          picker.onOpened();\n        },\n        close() {\n          picker.onClose();\n        },\n        closed() {\n          picker.onClosed();\n        }\n      }\n    };\n    if (modalType === 'sheet') {\n      modalParams.push = params.sheetPush;\n      modalParams.swipeToClose = params.sheetSwipeToClose;\n    }\n    if (params.routableModals && picker.view) {\n      picker.view.router.navigate({\n        url: picker.url,\n        route: {\n          path: picker.url,\n          [modalType]: modalParams\n        }\n      });\n    } else {\n      picker.modal = app[modalType].create(modalParams);\n      picker.modal.open();\n    }\n  }\n  close() {\n    const picker = this;\n    const {\n      opened,\n      inline\n    } = picker;\n    if (!opened) return;\n    if (inline) {\n      picker.onClose();\n      picker.onClosed();\n      return;\n    }\n    if (picker.params.routableModals && picker.view) {\n      picker.view.router.back();\n    } else {\n      picker.modal.close();\n    }\n  }\n  init() {\n    const picker = this;\n    picker.initInput();\n    if (picker.inline) {\n      picker.open();\n      picker.emit('local::init pickerInit', picker);\n      return;\n    }\n    if (!picker.initialized && picker.params.value) {\n      picker.setValue(picker.params.value);\n    }\n\n    // Attach input Events\n    if (picker.$inputEl) {\n      picker.attachInputEvents();\n    }\n    if (picker.params.closeByOutsideClick) {\n      picker.attachHtmlEvents();\n    }\n    picker.emit('local::init pickerInit', picker);\n  }\n  destroy() {\n    const picker = this;\n    if (picker.destroyed) return;\n    const {\n      $el\n    } = picker;\n    picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n    if ($el) $el.trigger('picker:beforedestroy');\n    picker.close();\n\n    // Detach Events\n    if (picker.$inputEl) {\n      picker.detachInputEvents();\n    }\n    if (picker.params.closeByOutsideClick) {\n      picker.detachHtmlEvents();\n    }\n    if ($el && $el.length) delete picker.$el[0].f7Picker;\n    deleteProps(picker);\n    picker.destroyed = true;\n  }\n}\nexport default Picker;", "import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\nexport default {\n  name: 'picker',\n  static: {\n    Picker\n  },\n  create() {\n    const app = this;\n    app.picker = ConstructorMethods({\n      defaultSelector: '.picker',\n      constructor: Picker,\n      app,\n      domProp: 'f7Picker'\n    });\n    app.picker.close = function close(el) {\n      if (el === void 0) {\n        el = '.picker';\n      }\n      const $el = $(el);\n      if ($el.length === 0) return;\n      const picker = $el[0].f7Picker;\n      if (!picker || picker && !picker.opened) return;\n      picker.close();\n    };\n  },\n  params: {\n    picker: {\n      // Picker settings\n      rotateEffect: false,\n      freeMode: false,\n      cols: [],\n      // Common opener settings\n      containerEl: null,\n      openIn: 'auto',\n      // or 'popover' or 'sheet'\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      backdrop: undefined,\n      // uses Popover or Sheet defaults\n      formatValue: null,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      scrollToEl: undefined,\n      toolbar: true,\n      toolbarCloseText: 'Done',\n      cssClass: null,\n      routableModals: false,\n      view: null,\n      url: 'select/',\n      // Render functions\n      renderToolbar: null,\n      render: null\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst InfiniteScroll = {\n  handle(el, e) {\n    const app = this;\n    const $el = $(el);\n    const scrollTop = $el[0].scrollTop;\n    const scrollHeight = $el[0].scrollHeight;\n    const height = $el[0].offsetHeight;\n    let distance = $el[0].getAttribute('data-infinite-distance');\n    const virtualListContainer = $el.find('.virtual-list');\n    let virtualList;\n    const onTop = $el.hasClass('infinite-scroll-top');\n    if (!distance) distance = 50;\n    if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n      distance = parseInt(distance, 10) / 100 * height;\n    }\n    if (distance > height) distance = height;\n    if (onTop) {\n      if (scrollTop < distance) {\n        $el.trigger('infinite', e);\n        app.emit('infinite', $el[0], e);\n      }\n    } else if (scrollTop + height >= scrollHeight - distance) {\n      if (virtualListContainer.length > 0) {\n        virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n        if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n          return;\n        }\n      }\n      $el.trigger('infinite', e);\n      app.emit('infinite', $el[0], e);\n    }\n  },\n  create(el) {\n    const $el = $(el);\n    const app = this;\n    function scrollHandler(e) {\n      app.infiniteScroll.handle(this, e);\n    }\n    $el.each(element => {\n      element.f7InfiniteScrollHandler = scrollHandler;\n      element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n    });\n  },\n  destroy(el) {\n    const $el = $(el);\n    $el.each(element => {\n      element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n      delete element.f7InfiniteScrollHandler;\n    });\n  }\n};\nexport default {\n  name: 'infiniteScroll',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      infiniteScroll: InfiniteScroll\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      const $tabEl = $(tabEl);\n      const $isEls = $tabEl.find('.infinite-scroll-content');\n      if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n      $isEls.each(el => {\n        app.infiniteScroll.create(el);\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      const $tabEl = $(tabEl);\n      const app = this;\n      const $isEls = $tabEl.find('.infinite-scroll-content');\n      if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n      $isEls.each(el => {\n        app.infiniteScroll.destroy(el);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.infinite-scroll-content').each(el => {\n        app.infiniteScroll.create(el);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.infinite-scroll-content').each(el => {\n        app.infiniteScroll.destroy(el);\n      });\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass PullToRefresh extends Framework7Class {\n  constructor(app, el) {\n    super({}, [app]);\n    const ptr = this;\n    const device = getDevice();\n    const support = getSupport();\n    const $el = $(el);\n    const $preloaderEl = $el.find('.ptr-preloader');\n    ptr.$el = $el;\n    ptr.el = $el[0];\n    ptr.app = app;\n    ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n    // Extend defaults with modules params\n    ptr.useModulesParams({});\n    const isMaterial = app.theme === 'md';\n    const isIos = app.theme === 'ios';\n\n    // Done\n    ptr.done = function done() {\n      const $transitionTarget = isMaterial ? $preloaderEl : $el;\n      const onTranstionEnd = e => {\n        if ($(e.target).closest($preloaderEl).length) return;\n        $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n        $el.trigger('ptr:done');\n        ptr.emit('local::done ptrDone', $el[0]);\n        $transitionTarget.off('transitionend', onTranstionEnd);\n      };\n      $transitionTarget.on('transitionend', onTranstionEnd);\n      $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n      return ptr;\n    };\n    ptr.refresh = function refresh() {\n      if ($el.hasClass('ptr-refreshing')) return ptr;\n      $el.addClass('ptr-transitioning ptr-refreshing');\n      $el.trigger('ptr:refresh', ptr.done);\n      ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      return ptr;\n    };\n\n    // Mousewheel\n    ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n    // Events handling\n    let touchId;\n    let isTouched;\n    let isMoved;\n    const touchesStart = {};\n    let isScrolling;\n    let touchesDiff;\n    let refresh = false;\n    let useTranslate = false;\n    let forceUseTranslate = false;\n    let startTranslate = 0;\n    let translate;\n    let scrollTop;\n    let wasScrolled;\n    let triggerDistance;\n    let dynamicTriggerDistance;\n    let pullStarted;\n    let hasNavbar = false;\n    let scrollHeight;\n    let offsetHeight;\n    let maxScrollTop;\n    const $pageEl = $el.parents('.page');\n    if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n    if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n    if (!ptr.bottom) {\n      const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n      if (pageNavbarEl) {\n        const $pageNavbarEl = $(pageNavbarEl);\n        const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');\n        const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n        if (isLargeTransparent) {\n          $el.addClass('ptr-with-navbar-large-transparent');\n        } else if (isTransparent) {\n          $el.addClass('ptr-with-navbar-transparent');\n        }\n      }\n    }\n    if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n    // Define trigger distance\n    if ($el.attr('data-ptr-distance')) {\n      dynamicTriggerDistance = true;\n    } else if (isMaterial) {\n      triggerDistance = 66;\n    } else if (isIos) {\n      triggerDistance = 44;\n    }\n    function setPreloaderProgress(progress) {\n      if (progress === void 0) {\n        progress = 0;\n      }\n      const $bars = $preloaderEl.find('.preloader-inner-line');\n      const perBarProgress = 1 / $bars.length;\n      $bars.forEach((barEl, barIndex) => {\n        const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n        barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n      });\n    }\n    function unsetPreloaderProgress() {\n      $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n    }\n    function handleTouchStart(e) {\n      if (!e.isTrusted) return;\n      if (isTouched) {\n        if (device.os === 'android') {\n          if ('targetTouches' in e && e.targetTouches.length > 1) return;\n        } else return;\n      }\n      if ($el.hasClass('ptr-refreshing')) {\n        return;\n      }\n      if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n      isMoved = false;\n      pullStarted = false;\n      isTouched = true;\n      isScrolling = undefined;\n      wasScrolled = undefined;\n      if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    }\n    function handleTouchMove(e) {\n      if (!isTouched || !e.isTrusted) return;\n      let pageX;\n      let pageY;\n      let touch;\n      if (e.type === 'touchmove') {\n        if (touchId && e.touches) {\n          for (let i = 0; i < e.touches.length; i += 1) {\n            if (e.touches[i].identifier === touchId) {\n              touch = e.touches[i];\n            }\n          }\n        }\n        if (!touch) touch = e.targetTouches[0];\n        pageX = touch.pageX;\n        pageY = touch.pageY;\n      } else {\n        pageX = e.pageX;\n        pageY = e.pageY;\n      }\n      if (!pageX || !pageY) return;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n      }\n      if (!isScrolling) {\n        isTouched = false;\n        return;\n      }\n      scrollTop = $el[0].scrollTop;\n      if (!isMoved) {\n        $el.removeClass('ptr-transitioning');\n        if (isIos) {\n          setPreloaderProgress(0);\n        }\n        let targetIsScrollable;\n        scrollHeight = $el[0].scrollHeight;\n        offsetHeight = $el[0].offsetHeight;\n        if (ptr.bottom) {\n          maxScrollTop = scrollHeight - offsetHeight;\n        }\n        if (scrollTop > scrollHeight) {\n          isTouched = false;\n          return;\n        }\n        const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n        if ($ptrWatchScrollable.length) {\n          $ptrWatchScrollable.each(ptrScrollableEl => {\n            if (ptrScrollableEl === el) return;\n            if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n              targetIsScrollable = true;\n            }\n          });\n        }\n        if (targetIsScrollable) {\n          isTouched = false;\n          return;\n        }\n        if (dynamicTriggerDistance) {\n          triggerDistance = $el.attr('data-ptr-distance');\n          if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n        }\n        startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n        if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n          useTranslate = true;\n        } else {\n          useTranslate = false;\n        }\n        forceUseTranslate = false;\n      }\n      isMoved = true;\n      touchesDiff = pageY - touchesStart.y;\n      if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n      const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n      if (ptrStarted) {\n        // iOS 8 fix\n        if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n          if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n          if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n        }\n        if (!useTranslate && ptr.bottom && !isMaterial) {\n          $el.css('-webkit-overflow-scrolling', 'auto');\n          $el.scrollTop(maxScrollTop);\n          forceUseTranslate = true;\n        }\n        if (useTranslate || forceUseTranslate) {\n          if (e.cancelable) {\n            e.preventDefault();\n          }\n          translate = (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) + startTranslate;\n          if (isMaterial) {\n            $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n          } else {\n            // eslint-disable-next-line\n            if (ptr.bottom || isIos) {\n              $el.children().transform(`translate3d(0,${translate}px,0)`);\n            } else {\n              // eslint-disable-next-line\n              $el.transform(`translate3d(0,${translate}px,0)`);\n            }\n            if (isIos) {\n              $preloaderEl.transform(`translate3d(0,0px,0)`);\n            }\n          }\n        } else if (isIos && !ptr.bottom) {\n          $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n        }\n        let progress;\n        if (isIos && !refresh) {\n          progress = useTranslate || forceUseTranslate ? Math.abs(touchesDiff) ** 0.85 / triggerDistance : Math.abs(touchesDiff) / (triggerDistance * 2);\n          setPreloaderProgress(progress);\n        }\n        if ((useTranslate || forceUseTranslate) && Math.abs(touchesDiff) ** 0.85 > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {\n          refresh = true;\n          $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n          unsetPreloaderProgress();\n        } else {\n          refresh = false;\n          $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n        }\n        if (!pullStarted) {\n          $el.trigger('ptr:pullstart');\n          ptr.emit('local::pullStart ptrPullStart', $el[0]);\n          pullStarted = true;\n        }\n        $el.trigger('ptr:pullmove', {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff\n        });\n        ptr.emit('local::pullMove ptrPullMove', $el[0], {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff\n        });\n      } else {\n        pullStarted = false;\n        $el.removeClass('ptr-pull-up ptr-pull-down');\n        refresh = false;\n      }\n    }\n    function handleTouchEnd(e) {\n      if (!e.isTrusted) return;\n      if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n        if (e.changedTouches[0].identifier !== touchId) {\n          isTouched = false;\n          isScrolling = false;\n          isMoved = false;\n          touchId = null;\n          return;\n        }\n      }\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      if (translate) {\n        $el.addClass('ptr-transitioning');\n        translate = 0;\n      }\n      if (isMaterial) {\n        $preloaderEl.transform('').find('.ptr-arrow').transform('');\n      } else {\n        $preloaderEl.transform('');\n        if (ptr.bottom || isIos) {\n          $el.children().transform('');\n        } else {\n          $el.transform('');\n        }\n      }\n      if (!useTranslate && ptr.bottom && !isMaterial) {\n        $el.css('-webkit-overflow-scrolling', '');\n      }\n      if (refresh) {\n        $el.addClass('ptr-refreshing');\n        $el.trigger('ptr:refresh', ptr.done);\n        ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      } else {\n        $el.removeClass('ptr-pull-down');\n      }\n      isTouched = false;\n      isMoved = false;\n      if (pullStarted) {\n        $el.trigger('ptr:pullend');\n        ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n      }\n    }\n    let mousewheelTimeout;\n    let mousewheelMoved;\n    let mousewheelAllow = true;\n    let mousewheelTranslate = 0;\n    function handleMouseWheelRelease() {\n      mousewheelAllow = true;\n      mousewheelMoved = false;\n      mousewheelTranslate = 0;\n      if (translate) {\n        $el.addClass('ptr-transitioning');\n        translate = 0;\n      }\n      if (isMaterial) {\n        $preloaderEl.transform('').find('.ptr-arrow').transform('');\n      } else {\n        $preloaderEl.transform('');\n        if (ptr.bottom) {\n          $el.children().transform('');\n        } else {\n          $el.transform('');\n        }\n      }\n      if (refresh) {\n        $el.addClass('ptr-refreshing');\n        $el.trigger('ptr:refresh', ptr.done);\n        ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n      } else {\n        $el.removeClass('ptr-pull-down');\n      }\n      if (pullStarted) {\n        $el.trigger('ptr:pullend');\n        ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n      }\n    }\n    function handleMouseWheel(e) {\n      if (!mousewheelAllow) return;\n      const {\n        deltaX,\n        deltaY\n      } = e;\n      if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n      if ($el.hasClass('ptr-refreshing')) {\n        return;\n      }\n      if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n      clearTimeout(mousewheelTimeout);\n      scrollTop = $el[0].scrollTop;\n      if (!mousewheelMoved) {\n        $el.removeClass('ptr-transitioning');\n        if (isIos) {\n          setPreloaderProgress(0);\n        }\n        let targetIsScrollable;\n        scrollHeight = $el[0].scrollHeight;\n        offsetHeight = $el[0].offsetHeight;\n        if (ptr.bottom) {\n          maxScrollTop = scrollHeight - offsetHeight;\n        }\n        if (scrollTop > scrollHeight) {\n          mousewheelAllow = false;\n          return;\n        }\n        const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n        if ($ptrWatchScrollable.length) {\n          $ptrWatchScrollable.each(ptrScrollableEl => {\n            if (ptrScrollableEl === el) return;\n            if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n              targetIsScrollable = true;\n            }\n          });\n        }\n        if (targetIsScrollable) {\n          mousewheelAllow = false;\n          return;\n        }\n        if (dynamicTriggerDistance) {\n          triggerDistance = $el.attr('data-ptr-distance');\n          if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n        }\n      }\n      isMoved = true;\n      mousewheelTranslate -= deltaY;\n      touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n      if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n      const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n      if (ptrStarted) {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n        translate = touchesDiff;\n        if (Math.abs(translate) > triggerDistance) {\n          translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n          if (ptr.bottom) translate = -translate;\n        }\n        if (isMaterial) {\n          $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n        } else {\n          // eslint-disable-next-line\n          if (ptr.bottom) {\n            $el.children().transform(`translate3d(0,${translate}px,0)`);\n          } else {\n            $el.transform(`translate3d(0,${translate}px,0)`);\n            if (isIos) {\n              $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n            }\n          }\n        }\n        let progress;\n        if (isIos && !refresh) {\n          progress = Math.abs(translate) / triggerDistance;\n          setPreloaderProgress(progress);\n        }\n        if (Math.abs(translate) > triggerDistance) {\n          refresh = true;\n          $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n          unsetPreloaderProgress();\n        } else {\n          refresh = false;\n          $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n        }\n        if (!pullStarted) {\n          $el.trigger('ptr:pullstart');\n          ptr.emit('local::pullStart ptrPullStart', $el[0]);\n          pullStarted = true;\n        }\n        $el.trigger('ptr:pullmove', {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff\n        });\n        ptr.emit('local::pullMove ptrPullMove', $el[0], {\n          event: e,\n          scrollTop,\n          translate,\n          touchesDiff\n        });\n      } else {\n        pullStarted = false;\n        $el.removeClass('ptr-pull-up ptr-pull-down');\n        refresh = false;\n      }\n      mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n    }\n    if (!$pageEl.length || !$el.length) return ptr;\n    $el[0].f7PullToRefresh = ptr;\n\n    // Events\n    ptr.attachEvents = function attachEvents() {\n      const passive = support.passiveListener ? {\n        passive: true\n      } : false;\n      $el.on(app.touchEvents.start, handleTouchStart, passive);\n      app.on('touchmove:active', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n      if (ptr.mousewheel && !ptr.bottom) {\n        $el.on('wheel', handleMouseWheel);\n      }\n    };\n    ptr.detachEvents = function detachEvents() {\n      const passive = support.passiveListener ? {\n        passive: true\n      } : false;\n      $el.off(app.touchEvents.start, handleTouchStart, passive);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      if (ptr.mousewheel && !ptr.bottom) {\n        $el.off('wheel', handleMouseWheel);\n      }\n    };\n\n    // Install Modules\n    ptr.useModules();\n\n    // Init\n    ptr.init();\n    return ptr;\n  }\n  init() {\n    const ptr = this;\n    ptr.attachEvents();\n  }\n  destroy() {\n    let ptr = this;\n    ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n    ptr.$el.trigger('ptr:beforedestroy');\n    delete ptr.el.f7PullToRefresh;\n    ptr.detachEvents();\n    deleteProps(ptr);\n    ptr = null;\n  }\n}\nexport default PullToRefresh;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'pullToRefresh',\n  create() {\n    const app = this;\n    app.ptr = extend(ConstructorMethods({\n      defaultSelector: '.ptr-content',\n      constructor: PullToRefresh,\n      app,\n      domProp: 'f7PullToRefresh'\n    }), {\n      done(el) {\n        const ptr = app.ptr.get(el);\n        if (ptr) return ptr.done();\n        return undefined;\n      },\n      refresh(el) {\n        const ptr = app.ptr.get(el);\n        if (ptr) return ptr.refresh();\n        return undefined;\n      }\n    });\n  },\n  static: {\n    PullToRefresh\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      const $tabEl = $(tabEl);\n      const $ptrEls = $tabEl.find('.ptr-content');\n      if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n      $ptrEls.each(el => {\n        app.ptr.create(el);\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      const $tabEl = $(tabEl);\n      const app = this;\n      const $ptrEls = $tabEl.find('.ptr-content');\n      if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n      $ptrEls.each(el => {\n        app.ptr.destroy(el);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.ptr-content').each(el => {\n        app.ptr.create(el);\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.ptr-content').each(el => {\n        app.ptr.destroy(el);\n      });\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass DataTable extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const table = this;\n    const defaults = {};\n\n    // Extend defaults with modules params\n    table.useModulesParams(defaults);\n    table.params = extend(defaults, params);\n\n    // El\n    const $el = $(table.params.el);\n    if ($el.length === 0) return undefined;\n    table.$el = $el;\n    table.el = $el[0];\n    if (table.$el[0].f7DataTable) {\n      const instance = table.$el[0].f7DataTable;\n      table.destroy();\n      return instance;\n    }\n    table.$el[0].f7DataTable = table;\n    extend(table, {\n      collapsible: $el.hasClass('data-table-collapsible'),\n      // Headers\n      $headerEl: $el.find('.data-table-header'),\n      $headerSelectedEl: $el.find('.data-table-header-selected')\n    });\n\n    // Events\n    function handleChange(e) {\n      if (e.detail && e.detail.sentByF7DataTable) {\n        // Scripted event, don't do anything\n        return;\n      }\n      const $inputEl = $(this);\n      const checked = $inputEl[0].checked;\n      const columnIndex = $inputEl.parents('td,th').index();\n      if ($inputEl.parents('thead').length > 0) {\n        if (columnIndex === 0) {\n          $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n        }\n        $el.find(`tbody tr td:nth-child(${columnIndex + 1}) input`).prop('checked', checked).trigger('change', {\n          sentByF7DataTable: true\n        });\n        $inputEl.prop('indeterminate', false);\n      } else {\n        if (columnIndex === 0) {\n          $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n        }\n        const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n        const totalRows = $el.find('tbody tr').length;\n        const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n        if (!checked) {\n          $headCheckboxEl.prop('checked', false);\n        } else if (checkedRows === totalRows) {\n          $headCheckboxEl.prop('checked', true).trigger('change', {\n            sentByF7DataTable: true\n          });\n        }\n        $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n      }\n      table.checkSelectedHeader();\n    }\n    function handleSortableClick() {\n      const $cellEl = $(this);\n      const isActive = $cellEl.hasClass('sortable-cell-active');\n      const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n      let newSort;\n      if (isActive) {\n        newSort = currentSort === 'desc' ? 'asc' : 'desc';\n        $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n      } else {\n        $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n        $cellEl.addClass('sortable-cell-active');\n        newSort = currentSort;\n      }\n      $cellEl.trigger('datatable:sort', newSort);\n      table.emit('local::sort dataTableSort', table, newSort);\n    }\n    table.attachEvents = function attachEvents() {\n      table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n      table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n    };\n    table.detachEvents = function detachEvents() {\n      table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n      table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n    };\n\n    // Install Modules\n    table.useModules();\n\n    // Init\n    table.init();\n    return table;\n  }\n  setCollapsibleLabels() {\n    const table = this;\n    if (!table.collapsible) return;\n    table.$el.find('tbody td:not(.checkbox-cell)').each(el => {\n      const $el = $(el);\n      const elIndex = $el.index();\n      const collapsibleTitle = $el.attr('data-collapsible-title');\n      if (!collapsibleTitle && collapsibleTitle !== '') {\n        $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n      }\n    });\n  }\n  checkSelectedHeader() {\n    const table = this;\n    if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n      const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n      table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n      table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n    }\n  }\n  init() {\n    const table = this;\n    table.attachEvents();\n    table.setCollapsibleLabels();\n    table.checkSelectedHeader();\n  }\n  destroy() {\n    let table = this;\n    table.$el.trigger('datatable:beforedestroy');\n    table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n    table.detachEvents();\n    if (table.$el[0]) {\n      table.$el[0].f7DataTable = null;\n      delete table.$el[0].f7DataTable;\n    }\n    deleteProps(table);\n    table = null;\n  }\n}\nexport default DataTable;", "import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'dataTable',\n  static: {\n    DataTable\n  },\n  create() {\n    const app = this;\n    app.dataTable = ConstructorMethods({\n      defaultSelector: '.data-table',\n      constructor: DataTable,\n      app,\n      domProp: 'f7DataTable'\n    });\n  },\n  on: {\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl).find('.data-table-init').each(tableEl => {\n        app.dataTable.destroy(tableEl);\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.data-table-init').each(tableEl => {\n        app.dataTable.create({\n          el: tableEl\n        });\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.data-table-init').each(tableEl => {\n        app.dataTable.destroy(tableEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.data-table-init').each(tableEl => {\n        app.dataTable.create({\n          el: tableEl\n        });\n      });\n    }\n  },\n  vnode: {\n    'data-table-init': {\n      insert(vnode) {\n        const app = this;\n        const tableEl = vnode.elm;\n        app.dataTable.create({\n          el: tableEl\n        });\n      },\n      destroy(vnode) {\n        const app = this;\n        const tableEl = vnode.elm;\n        app.dataTable.destroy(tableEl);\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\nconst Fab = {\n  morphOpen(fabEl, targetEl) {\n    const app = this;\n    const $fabEl = $(fabEl);\n    const $targetEl = $(targetEl);\n    if ($targetEl.length === 0) return;\n    $targetEl.transition(0).addClass('fab-morph-target-visible');\n    const target = {\n      width: $targetEl[0].offsetWidth,\n      height: $targetEl[0].offsetHeight,\n      offset: $targetEl.offset(),\n      borderRadius: $targetEl.css('border-radius'),\n      zIndex: $targetEl.css('z-index')\n    };\n    const fab = {\n      width: $fabEl[0].offsetWidth,\n      height: $fabEl[0].offsetHeight,\n      offset: $fabEl.offset(),\n      translateX: getTranslate($fabEl[0], 'x'),\n      translateY: getTranslate($fabEl[0], 'y')\n    };\n    $fabEl[0].f7FabMorphData = {\n      $targetEl,\n      target,\n      fab\n    };\n    const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n    const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n    const scaleX = target.width / fab.width;\n    const scaleY = target.height / fab.height;\n    let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n    if (borderRadius > 0) borderRadius += 2;\n    $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n      $fabEl.transition(0).transform('');\n      $targetEl.transition(0);\n      target.width = $targetEl[0].offsetWidth;\n      target.height = $targetEl[0].offsetHeight;\n      target.offset = $targetEl.offset();\n      fab.offset = $fabEl.offset();\n      const diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n      const diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n      const scaleXNew = target.width / fab.width;\n      const scaleYNew = target.height / fab.height;\n      $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n    };\n    $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n    $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n    $fabEl.transitionEnd(() => {\n      $targetEl.transition('');\n      nextFrame(() => {\n        $targetEl.css('opacity', 1).transform('scale(1,1)');\n        $fabEl.transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`).css('border-radius', `${borderRadius}px`).css('box-shadow', 'none').css('opacity', '0');\n      });\n      app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n      if ($targetEl.parents('.page-content').length > 0) {\n        $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n      }\n    });\n  },\n  morphClose(fabEl) {\n    const app = this;\n    const $fabEl = $(fabEl);\n    const morphData = $fabEl[0].f7FabMorphData;\n    if (!morphData) return;\n    const {\n      $targetEl,\n      target,\n      fab\n    } = morphData;\n    if ($targetEl.length === 0) return;\n    const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n    const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n    const scaleX = target.width / fab.width;\n    const scaleY = target.height / fab.height;\n    app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n    if ($targetEl.parents('.page-content').length > 0) {\n      $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n    }\n    $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n    $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n    $fabEl.transitionEnd(() => {\n      $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n      nextFrame(() => {\n        $fabEl.transitionEnd(() => {\n          $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');\n        });\n      });\n    });\n  },\n  open(fabEl, targetEl) {\n    const app = this;\n    const $fabEl = $(fabEl).eq(0);\n    const $buttonsEl = $fabEl.find('.fab-buttons');\n    if (!$fabEl.length) return;\n    if ($fabEl.hasClass('fab-opened')) return;\n    if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n    if (app.fab.openedEl) {\n      if (app.fab.openedEl === $fabEl[0]) return;\n      app.fab.close(app.fab.openedEl);\n    }\n    app.fab.openedEl = $fabEl[0];\n    if ($fabEl.hasClass('fab-morph')) {\n      app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n    } else {\n      $fabEl.addClass('fab-opened');\n    }\n    $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n    $fabEl.trigger('fab:open');\n  },\n  close(fabEl) {\n    if (fabEl === void 0) {\n      fabEl = '.fab-opened';\n    }\n    const app = this;\n    const $fabEl = $(fabEl).eq(0);\n    const $buttonsEl = $fabEl.find('.fab-buttons');\n    if (!$fabEl.length) return;\n    if (!$fabEl.hasClass('fab-opened')) return;\n    if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n    app.fab.openedEl = null;\n    if ($fabEl.hasClass('fab-morph')) {\n      app.fab.morphClose($fabEl);\n    } else {\n      $fabEl.removeClass('fab-opened');\n    }\n    $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n    $fabEl.trigger('fab:close');\n  },\n  toggle(fabEl) {\n    const app = this;\n    const $fabEl = $(fabEl);\n    if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);\n  }\n};\nexport default {\n  name: 'fab',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      fab: {\n        openedEl: null,\n        ...Fab\n      }\n    });\n  },\n  clicks: {\n    '.fab > a': function open($clickedEl) {\n      const app = this;\n      app.fab.toggle($clickedEl.parents('.fab'));\n    },\n    '.fab-open': function open($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.fab.open(data.fab);\n    },\n    '.fab-close': function close($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      app.fab.close(data.fab);\n    },\n    '.fab-backdrop': function close() {\n      const app = this;\n      app.fab.close();\n    }\n  }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\nclass Searchbar extends FrameworkClass {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const sb = this;\n    const defaults = {\n      el: undefined,\n      inputEl: undefined,\n      inputEvents: 'change input compositionend',\n      disableButton: true,\n      disableButtonEl: undefined,\n      backdropEl: undefined,\n      searchContainer: undefined,\n      // container to search, HTMLElement or CSS selector\n      searchItem: 'li',\n      // single item selector, CSS selector\n      searchIn: undefined,\n      // where to search in item, CSS selector\n      searchGroup: '.list-group',\n      searchGroupTitle: '.list-group-title',\n      ignore: '.searchbar-ignore',\n      foundEl: '.searchbar-found',\n      notFoundEl: '.searchbar-not-found',\n      hideOnEnableEl: '.searchbar-hide-on-enable',\n      hideOnSearchEl: '.searchbar-hide-on-search',\n      backdrop: true,\n      removeDiacritics: true,\n      customSearch: false,\n      hideGroupTitles: true,\n      hideGroups: true,\n      disableOnBackdropClick: true,\n      expandable: false,\n      inline: false\n    };\n\n    // Extend defaults with modules params\n    sb.useModulesParams(defaults);\n    sb.params = extend(defaults, params);\n    const $el = $(sb.params.el);\n    if ($el.length === 0) return sb;\n    if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n    $el[0].f7Searchbar = sb;\n    let $pageEl;\n    const $navbarEl = $el.parents('.navbar');\n    if ($el.parents('.page').length > 0) {\n      $pageEl = $el.parents('.page');\n    } else if ($navbarEl.length > 0) {\n      $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n      if (!$pageEl.length) {\n        const $currentPageEl = $el.parents('.view').find('.page-current');\n        if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n          $pageEl = $currentPageEl;\n        }\n      }\n    }\n    let $foundEl;\n    if (params.foundEl) {\n      $foundEl = $(params.foundEl);\n    } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n      $foundEl = $pageEl.find(sb.params.foundEl);\n    }\n    let $notFoundEl;\n    if (params.notFoundEl) {\n      $notFoundEl = $(params.notFoundEl);\n    } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n      $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n    }\n    let $hideOnEnableEl;\n    if (params.hideOnEnableEl) {\n      $hideOnEnableEl = $(params.hideOnEnableEl);\n    } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n      $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n    }\n    let $hideOnSearchEl;\n    if (params.hideOnSearchEl) {\n      $hideOnSearchEl = $(params.hideOnSearchEl);\n    } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n      $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n    }\n    const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n    const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n    if (typeof sb.params.backdrop === 'undefined') {\n      sb.params.backdrop = !inline;\n    }\n    let $backdropEl;\n    if (sb.params.backdrop) {\n      if (sb.params.backdropEl) {\n        $backdropEl = $(sb.params.backdropEl);\n      } else if ($pageEl && $pageEl.length > 0) {\n        $backdropEl = $pageEl.find('.searchbar-backdrop');\n      } else {\n        $backdropEl = $el.siblings('.searchbar-backdrop');\n      }\n      if ($backdropEl.length === 0) {\n        $backdropEl = $('<div class=\"searchbar-backdrop\"></div>');\n        if ($pageEl && $pageEl.length) {\n          if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n            $backdropEl.insertBefore($el);\n          } else {\n            $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n          }\n        } else {\n          $backdropEl.insertBefore($el);\n        }\n      }\n    }\n    let $searchContainer;\n    if (sb.params.searchContainer) {\n      $searchContainer = $(sb.params.searchContainer);\n    }\n    let $inputEl;\n    if (sb.params.inputEl) {\n      $inputEl = $(sb.params.inputEl);\n    } else {\n      $inputEl = $el.find('input[type=\"search\"]').eq(0);\n    }\n    let $disableButtonEl;\n    if (sb.params.disableButton) {\n      if (sb.params.disableButtonEl) {\n        $disableButtonEl = $(sb.params.disableButtonEl);\n      } else {\n        $disableButtonEl = $el.find('.searchbar-disable-button');\n      }\n    }\n    extend(sb, {\n      app,\n      view: app.views.get($el.parents('.view')),\n      $el,\n      el: $el[0],\n      $backdropEl,\n      backdropEl: $backdropEl && $backdropEl[0],\n      $searchContainer,\n      searchContainer: $searchContainer && $searchContainer[0],\n      $inputEl,\n      inputEl: $inputEl[0],\n      $disableButtonEl,\n      disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n      disableButtonHasMargin: false,\n      $pageEl,\n      pageEl: $pageEl && $pageEl[0],\n      $navbarEl,\n      navbarEl: $navbarEl && $navbarEl[0],\n      $foundEl,\n      foundEl: $foundEl && $foundEl[0],\n      $notFoundEl,\n      notFoundEl: $notFoundEl && $notFoundEl[0],\n      $hideOnEnableEl,\n      hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n      $hideOnSearchEl,\n      hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n      previousQuery: '',\n      query: '',\n      isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n      virtualList: undefined,\n      enabled: false,\n      expandable,\n      inline\n    });\n\n    // Events\n    function preventSubmit(e) {\n      e.preventDefault();\n    }\n    function onInputFocus(e) {\n      sb.enable(e);\n      sb.$el.addClass('searchbar-focused');\n    }\n    function onInputBlur() {\n      sb.$el.removeClass('searchbar-focused');\n    }\n    function onInputChange() {\n      const value = sb.$inputEl.val().trim();\n      if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {\n        sb.search(value, true);\n      }\n    }\n    function onInputClear(e, previousValue) {\n      sb.$el.trigger('searchbar:clear', previousValue);\n      sb.emit('local::clear searchbarClear', sb, previousValue);\n    }\n    function disableOnClick(e) {\n      sb.disable(e);\n    }\n    function onPageBeforeOut() {\n      if (!sb || sb && !sb.$el) return;\n      if (sb.enabled) {\n        sb.$el.removeClass('searchbar-enabled');\n        if (sb.expandable) {\n          sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n        }\n      }\n    }\n    function onPageBeforeIn() {\n      if (!sb || sb && !sb.$el) return;\n      if (sb.enabled) {\n        sb.$el.addClass('searchbar-enabled');\n        if (sb.expandable) {\n          sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n        }\n      }\n    }\n    sb.attachEvents = function attachEvents() {\n      $el.on('submit', preventSubmit);\n      if (sb.params.disableButton) {\n        sb.$disableButtonEl.on('click', disableOnClick);\n      }\n      if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n        sb.$backdropEl.on('click', disableOnClick);\n      }\n      if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n        sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n        sb.$pageEl.on('page:beforein', onPageBeforeIn);\n      }\n      sb.$inputEl.on('focus', onInputFocus);\n      sb.$inputEl.on('blur', onInputBlur);\n      sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n      sb.$inputEl.on('input:clear', onInputClear);\n    };\n    sb.detachEvents = function detachEvents() {\n      $el.off('submit', preventSubmit);\n      if (sb.params.disableButton) {\n        sb.$disableButtonEl.off('click', disableOnClick);\n      }\n      if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n        sb.$backdropEl.off('click', disableOnClick);\n      }\n      if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n        sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n        sb.$pageEl.off('page:beforein', onPageBeforeIn);\n      }\n      sb.$inputEl.off('focus', onInputFocus);\n      sb.$inputEl.off('blur', onInputBlur);\n      sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n      sb.$inputEl.off('input:clear', onInputClear);\n    };\n\n    // Install Modules\n    sb.useModules();\n\n    // Init\n    sb.init();\n    return sb;\n  }\n  clear(e) {\n    const sb = this;\n    if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n      sb.disable();\n      return sb;\n    }\n    const previousQuery = sb.value;\n    sb.$inputEl.val('').trigger('change').focus();\n    sb.$el.trigger('searchbar:clear', previousQuery);\n    sb.emit('local::clear searchbarClear', sb, previousQuery);\n    return sb;\n  }\n  setDisableButtonMargin() {\n    const sb = this;\n    if (sb.expandable) return;\n    const app = sb.app;\n    sb.$disableButtonEl.transition(0).show();\n    sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n    sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n    sb.$disableButtonEl.transition('');\n    sb.disableButtonHasMargin = true;\n  }\n  enable(setFocus) {\n    const sb = this;\n    if (sb.enabled) return sb;\n    const app = sb.app;\n    const document = getDocument();\n    const device = getDevice();\n    sb.enabled = true;\n    function enable() {\n      if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n        sb.backdropShow();\n      }\n      sb.$el.addClass('searchbar-enabled');\n      if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {\n        sb.$el.addClass('searchbar-enabled-no-disable-button');\n      }\n      if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n        if (!sb.disableButtonHasMargin) {\n          sb.setDisableButtonMargin();\n        }\n        sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n      }\n      if (sb.expandable) {\n        const $navbarEl = sb.$el.parents('.navbar');\n        if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n          const $pageContentEl = sb.$pageEl.find('.page-content');\n          const $titleLargeEl = $navbarEl.find('.title-large');\n          $pageContentEl.addClass('with-searchbar-expandable-enabled');\n          if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {\n            $pageContentEl.transition(0);\n            $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n            setTimeout(() => {\n              $pageContentEl.transition('');\n            }, 200);\n          }\n        }\n        if (app.theme === 'md' && $navbarEl.length) {\n          $navbarEl.addClass('with-searchbar-expandable-enabled');\n        } else {\n          $navbarEl.addClass('with-searchbar-expandable-enabled');\n          if ($navbarEl.hasClass('navbar-large')) {\n            $navbarEl.addClass('navbar-large-collapsed');\n          }\n        }\n      }\n      if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n      sb.$el.trigger('searchbar:enable');\n      sb.emit('local::enable searchbarEnable', sb);\n    }\n    let needsFocus = false;\n    if (setFocus === true) {\n      if (document.activeElement !== sb.inputEl) {\n        needsFocus = true;\n      }\n    }\n    const isIos = device.ios && app.theme === 'ios';\n    if (isIos) {\n      if (sb.expandable) {\n        if (needsFocus) sb.$inputEl.focus();\n        enable();\n      } else {\n        if (needsFocus) sb.$inputEl.focus();\n        if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n          nextTick(() => {\n            enable();\n          }, 400);\n        } else {\n          enable();\n        }\n      }\n    } else {\n      if (needsFocus) sb.$inputEl.focus();\n      if (app.theme === 'md' && sb.expandable) {\n        sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n      }\n      enable();\n    }\n    return sb;\n  }\n  disable() {\n    const sb = this;\n    if (!sb.enabled) return sb;\n    const app = sb.app;\n    sb.$inputEl.val('').trigger('change');\n    sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n    if (sb.expandable) {\n      const $navbarEl = sb.$el.parents('.navbar');\n      const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n      if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n        const $titleLargeEl = $navbarEl.find('.title-large');\n        sb.$el.transitionEnd(() => {\n          $pageContentEl.removeClass('with-searchbar-expandable-closing');\n        });\n        if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {\n          const scrollTop = $pageContentEl[0].scrollTop;\n          const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n          if (scrollTop > titleLargeHeight) {\n            $pageContentEl.transition(0);\n            $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n            setTimeout(() => {\n              $pageContentEl.transition('');\n            }, 200);\n          }\n        }\n        $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n      }\n      if (app.theme === 'md' && $navbarEl.length) {\n        $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n        sb.$el.transitionEnd(() => {\n          $navbarEl.removeClass('with-searchbar-expandable-closing');\n        });\n      } else {\n        $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n        sb.$el.transitionEnd(() => {\n          $navbarEl.removeClass('with-searchbar-expandable-closing');\n        });\n        if (sb.$pageEl) {\n          sb.$pageEl.find('.page-content').trigger('scroll');\n        }\n      }\n    }\n    if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n      sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n    }\n    if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {\n      sb.backdropHide();\n    }\n    sb.enabled = false;\n    sb.$inputEl.blur();\n    if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n    sb.$el.trigger('searchbar:disable');\n    sb.emit('local::disable searchbarDisable', sb);\n    return sb;\n  }\n  toggle() {\n    const sb = this;\n    if (sb.enabled) sb.disable();else sb.enable(true);\n    return sb;\n  }\n  backdropShow() {\n    const sb = this;\n    if (sb.$backdropEl) {\n      sb.$backdropEl.addClass('searchbar-backdrop-in');\n    }\n    return sb;\n  }\n  backdropHide() {\n    const sb = this;\n    if (sb.$backdropEl) {\n      sb.$backdropEl.removeClass('searchbar-backdrop-in');\n    }\n    return sb;\n  }\n  search(query, internal) {\n    const sb = this;\n    sb.previousQuery = sb.query || '';\n    if (query === sb.previousQuery) return sb;\n    if (!internal) {\n      if (!sb.enabled) {\n        sb.enable();\n      }\n      sb.$inputEl.val(query);\n      sb.$inputEl.trigger('input');\n    }\n    sb.query = query;\n    sb.value = query;\n    const {\n      $searchContainer,\n      $el,\n      $foundEl,\n      $notFoundEl,\n      $hideOnSearchEl,\n      isVirtualList\n    } = sb;\n\n    // Hide on search element\n    if (query.length > 0 && $hideOnSearchEl) {\n      $hideOnSearchEl.addClass('hidden-by-searchbar');\n    } else if ($hideOnSearchEl) {\n      $hideOnSearchEl.removeClass('hidden-by-searchbar');\n    }\n    // Add active/inactive classes on overlay\n    if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {\n      if (query.length === 0) {\n        sb.backdropShow();\n      } else {\n        sb.backdropHide();\n      }\n    }\n    if (sb.params.customSearch) {\n      $el.trigger('searchbar:search', {\n        query,\n        previousQuery: sb.previousQuery\n      });\n      sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n      return sb;\n    }\n    let foundItems = [];\n    let vlQuery;\n    if (isVirtualList) {\n      sb.virtualList = $searchContainer[0].f7VirtualList;\n      if (query.trim() === '') {\n        sb.virtualList.resetFilter();\n        if ($notFoundEl) $notFoundEl.hide();\n        if ($foundEl) $foundEl.show();\n        $el.trigger('searchbar:search', {\n          query,\n          previousQuery: sb.previousQuery\n        });\n        sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n        return sb;\n      }\n      vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n      if (sb.virtualList.params.searchAll) {\n        foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n      } else if (sb.virtualList.params.searchByItem) {\n        for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n          if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n            foundItems.push(i);\n          }\n        }\n      }\n    } else {\n      let values;\n      if (sb.params.removeDiacritics) values = removeDiacritics(query.trim().toLowerCase()).split(' ');else {\n        values = query.trim().toLowerCase().split(' ');\n      }\n      $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(itemEl => {\n        const $itemEl = $(itemEl);\n        let compareWithText = [];\n        let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n        if (sb.params.searchIn === sb.params.searchItem) {\n          $searchIn = $itemEl;\n        }\n        $searchIn.each(searchInEl => {\n          let itemText = $(searchInEl).text().trim().toLowerCase();\n          if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n          compareWithText.push(itemText);\n        });\n        compareWithText = compareWithText.join(' ');\n        let wordsMatch = 0;\n        for (let i = 0; i < values.length; i += 1) {\n          if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n        }\n        if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n          $itemEl.addClass('hidden-by-searchbar');\n        } else {\n          foundItems.push($itemEl[0]);\n        }\n      });\n      if (sb.params.hideGroupTitles) {\n        $searchContainer.find(sb.params.searchGroupTitle).each(titleEl => {\n          const $titleEl = $(titleEl);\n          const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n          let hide = true;\n          for (let i = 0; i < $nextElements.length; i += 1) {\n            const $nextEl = $nextElements.eq(i);\n            if ($nextEl.is(sb.params.searchGroupTitle)) break;\n            if (!$nextEl.hasClass('hidden-by-searchbar')) {\n              hide = false;\n            }\n          }\n          const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n          if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');\n        });\n      }\n      if (sb.params.hideGroups) {\n        $searchContainer.find(sb.params.searchGroup).each(groupEl => {\n          const $groupEl = $(groupEl);\n          const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n          // eslint-disable-next-line\n          const notHidden = $groupEl.find(sb.params.searchItem).filter(el => {\n            return !$(el).hasClass('hidden-by-searchbar');\n          });\n          if (notHidden.length === 0 && !ignore) {\n            $groupEl.addClass('hidden-by-searchbar');\n          } else {\n            $groupEl.removeClass('hidden-by-searchbar');\n          }\n        });\n      }\n    }\n    if (foundItems.length === 0) {\n      if ($notFoundEl) $notFoundEl.show();\n      if ($foundEl) $foundEl.hide();\n    } else {\n      if ($notFoundEl) $notFoundEl.hide();\n      if ($foundEl) $foundEl.show();\n    }\n    if (isVirtualList && sb.virtualList) {\n      sb.virtualList.filterItems(foundItems);\n    }\n    $el.trigger('searchbar:search', {\n      query,\n      previousQuery: sb.previousQuery,\n      foundItems\n    });\n    sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n    return sb;\n  }\n  init() {\n    const sb = this;\n    if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n    if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n    sb.attachEvents();\n  }\n  destroy() {\n    const sb = this;\n    sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n    sb.$el.trigger('searchbar:beforedestroy');\n    sb.detachEvents();\n    if (sb.$el[0]) {\n      sb.$el[0].f7Searchbar = null;\n      delete sb.$el[0].f7Searchbar;\n    }\n    deleteProps(sb);\n  }\n}\nexport default Searchbar;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'searchbar',\n  static: {\n    Searchbar\n  },\n  create() {\n    const app = this;\n    app.searchbar = ConstructorMethods({\n      defaultSelector: '.searchbar',\n      constructor: Searchbar,\n      app,\n      domProp: 'f7Searchbar',\n      addMethods: 'clear enable disable toggle search'.split(' ')\n    });\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.searchbar-init').each(searchbarEl => {\n        const $searchbarEl = $(searchbarEl);\n        app.searchbar.create(extend($searchbarEl.dataset(), {\n          el: searchbarEl\n        }));\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.searchbar-init').each(searchbarEl => {\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.searchbar-init').each(searchbarEl => {\n        const $searchbarEl = $(searchbarEl);\n        app.searchbar.create(extend($searchbarEl.dataset(), {\n          el: searchbarEl\n        }));\n      });\n      if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n        page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n          const $searchbarEl = $(searchbarEl);\n          app.searchbar.create(extend($searchbarEl.dataset(), {\n            el: searchbarEl\n          }));\n        });\n      }\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.searchbar-init').each(searchbarEl => {\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      });\n      if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n        page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n          if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n            searchbarEl.f7Searchbar.destroy();\n          }\n        });\n      }\n    }\n  },\n  clicks: {\n    '.searchbar-clear': function clear($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.clear();\n    },\n    '.searchbar-enable': function enable($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.enable(true);\n    },\n    '.searchbar-disable': function disable($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.disable();\n    },\n    '.searchbar-toggle': function toggle($clickedEl, data) {\n      if (data === void 0) {\n        data = {};\n      }\n      const app = this;\n      const sb = app.searchbar.get(data.searchbar);\n      if (sb) sb.toggle();\n    }\n  },\n  vnode: {\n    'searchbar-init': {\n      insert(vnode) {\n        const app = this;\n        const searchbarEl = vnode.elm;\n        const $searchbarEl = $(searchbarEl);\n        app.searchbar.create(extend($searchbarEl.dataset(), {\n          el: searchbarEl\n        }));\n      },\n      destroy(vnode) {\n        const searchbarEl = vnode.elm;\n        if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n          searchbarEl.f7Searchbar.destroy();\n        }\n      }\n    }\n  }\n};", "function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Messages extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const m = this;\n    const defaults = {\n      autoLayout: true,\n      messages: [],\n      newMessagesFirst: false,\n      scrollMessages: true,\n      scrollMessagesOnEdge: true,\n      firstMessageRule: undefined,\n      lastMessageRule: undefined,\n      tailMessageRule: undefined,\n      sameNameMessageRule: undefined,\n      sameHeaderMessageRule: undefined,\n      sameFooterMessageRule: undefined,\n      sameAvatarMessageRule: undefined,\n      customClassMessageRule: undefined,\n      renderMessage: undefined\n    };\n\n    // Extend defaults with modules params\n    m.useModulesParams(defaults);\n    m.params = extend(defaults, params);\n    const $el = $(params.el).eq(0);\n    if ($el.length === 0) return m;\n    if ($el[0].f7Messages) return $el[0].f7Messages;\n    $el[0].f7Messages = m;\n    const $pageContentEl = $el.closest('.page-content').eq(0);\n    extend(m, {\n      messages: m.params.messages,\n      $el,\n      el: $el[0],\n      $pageContentEl,\n      pageContentEl: $pageContentEl[0]\n    });\n    // Install Modules\n    m.useModules();\n\n    // Init\n    m.init();\n    return m;\n  }\n  // eslint-disable-next-line\n  getMessageData(messageEl) {\n    const $messageEl = $(messageEl);\n    const data = {\n      name: $messageEl.find('.message-name').html(),\n      header: $messageEl.find('.message-header').html(),\n      textHeader: $messageEl.find('.message-text-header').html(),\n      textFooter: $messageEl.find('.message-text-footer').html(),\n      footer: $messageEl.find('.message-footer').html(),\n      isTitle: $messageEl.hasClass('messages-title'),\n      type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n      text: $messageEl.find('.message-text').html(),\n      image: $messageEl.find('.message-image').html(),\n      imageSrc: $messageEl.find('.message-image img').attr('src'),\n      typing: $messageEl.hasClass('message-typing')\n    };\n    if (data.isTitle) {\n      data.text = $messageEl.html();\n    }\n    if (data.text && data.textHeader) {\n      data.text = data.text.replace(`<div class=\"message-text-header\">${data.textHeader}</div>`, '');\n    }\n    if (data.text && data.textFooter) {\n      data.text = data.text.replace(`<div class=\"message-text-footer\">${data.textFooter}</div>`, '');\n    }\n    let avatar = $messageEl.find('.message-avatar').css('background-image');\n    if (avatar === 'none' || avatar === '') avatar = undefined;\n    if (avatar && typeof avatar === 'string') {\n      avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n    } else {\n      avatar = undefined;\n    }\n    data.avatar = avatar;\n    return data;\n  }\n  getMessagesData() {\n    const m = this;\n    const data = [];\n    m.$el.find('.message, .messages-title').each(messageEl => {\n      data.push(m.getMessageData(messageEl));\n    });\n    return data;\n  }\n  renderMessage(messageToRender) {\n    const m = this;\n    const message = extend({\n      type: 'sent',\n      attrs: {}\n    }, messageToRender);\n    if (m.params.renderMessage) {\n      return m.params.renderMessage.call(m, message);\n    }\n    if (message.isTitle) {\n      return `<div class=\"messages-title\">${message.text}</div>`;\n    }\n    return $jsx(\"div\", _extends({\n      class: `message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${message.cssClass || ''}`\n    }, message.attrs), message.avatar && $jsx(\"div\", {\n      class: \"message-avatar\",\n      style: `background-image:url(${message.avatar})`\n    }), $jsx(\"div\", {\n      class: \"message-content\"\n    }, message.name && $jsx(\"div\", {\n      class: \"message-name\"\n    }, message.name), message.header && $jsx(\"div\", {\n      class: \"message-header\"\n    }, message.header), $jsx(\"div\", {\n      class: \"message-bubble\"\n    }, message.textHeader && $jsx(\"div\", {\n      class: \"message-text-header\"\n    }, message.textHeader), message.image && $jsx(\"div\", {\n      class: \"message-image\"\n    }, message.image), message.imageSrc && !message.image && $jsx(\"div\", {\n      class: \"message-image\"\n    }, $jsx(\"img\", {\n      src: message.imageSrc\n    })), (message.text || message.isTyping) && $jsx(\"div\", {\n      class: \"message-text\"\n    }, message.text || '', message.isTyping && $jsx(\"div\", {\n      class: \"message-typing-indicator\"\n    }, $jsx(\"div\", null), $jsx(\"div\", null), $jsx(\"div\", null))), message.textFooter && $jsx(\"div\", {\n      class: \"message-text-footer\"\n    }, message.textFooter)), message.footer && $jsx(\"div\", {\n      class: \"message-footer\"\n    }, message.footer)));\n  }\n  renderMessages(messagesToRender, method) {\n    if (messagesToRender === void 0) {\n      messagesToRender = this.messages;\n    }\n    if (method === void 0) {\n      method = this.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n    const m = this;\n    const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n    m.$el[method](html);\n  }\n  isFirstMessage() {\n    const m = this;\n    if (m.params.firstMessageRule) return m.params.firstMessageRule(...arguments);\n    return false;\n  }\n  isLastMessage() {\n    const m = this;\n    if (m.params.lastMessageRule) return m.params.lastMessageRule(...arguments);\n    return false;\n  }\n  isTailMessage() {\n    const m = this;\n    if (m.params.tailMessageRule) return m.params.tailMessageRule(...arguments);\n    return false;\n  }\n  isSameNameMessage() {\n    const m = this;\n    if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...arguments);\n    return false;\n  }\n  isSameHeaderMessage() {\n    const m = this;\n    if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...arguments);\n    return false;\n  }\n  isSameFooterMessage() {\n    const m = this;\n    if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...arguments);\n    return false;\n  }\n  isSameAvatarMessage() {\n    const m = this;\n    if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...arguments);\n    return false;\n  }\n  isCustomClassMessage() {\n    const m = this;\n    if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...arguments);\n    return undefined;\n  }\n  layout() {\n    const m = this;\n    m.$el.find('.message, .messages-title').each((messageEl, index) => {\n      const $messageEl = $(messageEl);\n      if (!m.messages) {\n        m.messages = m.getMessagesData();\n      }\n      const classes = [];\n      const message = m.messages[index];\n      const previousMessage = m.messages[index - 1];\n      const nextMessage = m.messages[index + 1];\n      if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-first');\n      }\n      if (m.isLastMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-last');\n      }\n      if (m.isTailMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-tail');\n      }\n      if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-name');\n      }\n      if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-header');\n      }\n      if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-footer');\n      }\n      if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n        classes.push('message-same-avatar');\n      }\n      let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n      if (customMessageClasses && customMessageClasses.length) {\n        if (typeof customMessageClasses === 'string') {\n          customMessageClasses = customMessageClasses.split(' ');\n        }\n        customMessageClasses.forEach(customClass => {\n          classes.push(customClass);\n        });\n      }\n      $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n      classes.forEach(className => {\n        $messageEl.addClass(className);\n      });\n    });\n  }\n  clear() {\n    const m = this;\n    m.messages = [];\n    m.$el.html('');\n  }\n  removeMessage(messageToRemove, layout) {\n    if (layout === void 0) {\n      layout = true;\n    }\n    const m = this;\n    // Index or El\n    let index;\n    let $el;\n    if (typeof messageToRemove === 'number') {\n      index = messageToRemove;\n      $el = m.$el.find('.message, .messages-title').eq(index);\n    } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n      index = m.messages.indexOf(messageToRemove);\n      $el = m.$el.children().eq(index);\n    } else {\n      $el = $(messageToRemove);\n      index = $el.index();\n    }\n    if ($el.length === 0) {\n      return m;\n    }\n    $el.remove();\n    m.messages.splice(index, 1);\n    if (m.params.autoLayout && layout) m.layout();\n    return m;\n  }\n  removeMessages(messagesToRemove, layout) {\n    if (layout === void 0) {\n      layout = true;\n    }\n    const m = this;\n    if (Array.isArray(messagesToRemove)) {\n      const messagesToRemoveEls = [];\n      messagesToRemove.forEach(messageToRemoveIndex => {\n        messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n      });\n      messagesToRemoveEls.forEach(messageToRemove => {\n        m.removeMessage(messageToRemove, false);\n      });\n    } else {\n      $(messagesToRemove).each(messageToRemove => {\n        m.removeMessage(messageToRemove, false);\n      });\n    }\n    if (m.params.autoLayout && layout) m.layout();\n    return m;\n  }\n  addMessage() {\n    const m = this;\n    let messageToAdd;\n    let animate;\n    let method;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (typeof args[1] === 'boolean') {\n      [messageToAdd, animate, method] = args;\n    } else {\n      [messageToAdd, method, animate] = args;\n    }\n    if (typeof animate === 'undefined') {\n      animate = true;\n    }\n    if (typeof method === 'undefined') {\n      method = m.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n    return m.addMessages([messageToAdd], animate, method);\n  }\n  setScrollData() {\n    const m = this;\n    // Define scroll positions before new messages added\n    const scrollHeightBefore = m.pageContentEl.scrollHeight;\n    const heightBefore = m.pageContentEl.offsetHeight;\n    const scrollBefore = m.pageContentEl.scrollTop;\n    m.scrollData = {\n      scrollHeightBefore,\n      heightBefore,\n      scrollBefore\n    };\n    return {\n      scrollHeightBefore,\n      heightBefore,\n      scrollBefore\n    };\n  }\n  addMessages() {\n    const m = this;\n    let messagesToAdd;\n    let animate;\n    let method;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[1] === 'boolean') {\n      [messagesToAdd, animate, method] = args;\n    } else {\n      [messagesToAdd, method, animate] = args;\n    }\n    if (typeof animate === 'undefined') {\n      animate = true;\n    }\n    if (typeof method === 'undefined') {\n      method = m.params.newMessagesFirst ? 'prepend' : 'append';\n    }\n    const {\n      scrollHeightBefore,\n      scrollBefore\n    } = m.setScrollData();\n\n    // Add message to DOM and data\n    let messagesHTML = '';\n    const typingMessage = m.messages.filter(el => el.isTyping)[0];\n    messagesToAdd.forEach(messageToAdd => {\n      if (typingMessage) {\n        if (method === 'append') {\n          m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n        } else {\n          m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n        }\n      } else {\n        m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n      }\n      messagesHTML += m.renderMessage(messageToAdd);\n    });\n    const $messagesEls = $(messagesHTML);\n    if (animate) {\n      if (method === 'append' && !m.params.newMessagesFirst) {\n        $messagesEls.addClass('message-appear-from-bottom');\n      }\n      if (method === 'prepend' && m.params.newMessagesFirst) {\n        $messagesEls.addClass('message-appear-from-top');\n      }\n    }\n    if (typingMessage) {\n      if (method === 'append') {\n        $messagesEls.insertBefore(m.$el.find('.message-typing'));\n      } else {\n        $messagesEls.insertAfter(m.$el.find('.message-typing'));\n      }\n    } else {\n      m.$el[method]($messagesEls);\n    }\n\n    // Layout\n    if (m.params.autoLayout) m.layout();\n    if (method === 'prepend' && !typingMessage) {\n      m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n    }\n    if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {\n      m.scrollWithEdgeCheck(animate);\n    }\n    return m;\n  }\n  showTyping(message) {\n    if (message === void 0) {\n      message = {};\n    }\n    const m = this;\n    const typingMessage = m.messages.filter(el => el.isTyping)[0];\n    if (typingMessage) {\n      m.removeMessage(m.messages.indexOf(typingMessage));\n    }\n    m.addMessage(extend({\n      type: 'received',\n      isTyping: true\n    }, message));\n    return m;\n  }\n  hideTyping() {\n    const m = this;\n    let typingMessageIndex;\n    let typingFound;\n    m.messages.forEach((message, index) => {\n      if (message.isTyping) typingMessageIndex = index;\n    });\n    if (typeof typingMessageIndex !== 'undefined') {\n      if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n        typingFound = true;\n        m.removeMessage(typingMessageIndex);\n      }\n    }\n    if (!typingFound) {\n      const $typingMessageEl = m.$el.find('.message-typing');\n      if ($typingMessageEl.length) {\n        m.removeMessage($typingMessageEl);\n      }\n    }\n    return m;\n  }\n  scrollWithEdgeCheck(animate) {\n    const m = this;\n    const {\n      scrollBefore,\n      scrollHeightBefore,\n      heightBefore\n    } = m.scrollData;\n    if (m.params.scrollMessagesOnEdge) {\n      let onEdge = false;\n      if (m.params.newMessagesFirst && scrollBefore === 0) {\n        onEdge = true;\n      }\n      if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n        onEdge = true;\n      }\n      if (onEdge) m.scroll(animate ? undefined : 0);\n    } else {\n      m.scroll(animate ? undefined : 0);\n    }\n  }\n  scroll(duration, scrollTop) {\n    if (duration === void 0) {\n      duration = 300;\n    }\n    const m = this;\n    const currentScroll = m.pageContentEl.scrollTop;\n    let newScrollTop;\n    if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {\n      newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n      if (newScrollTop === currentScroll) return m;\n    }\n    m.$pageContentEl.scrollTop(newScrollTop, duration);\n    return m;\n  }\n  init() {\n    const m = this;\n    if (!m.messages || m.messages.length === 0) {\n      m.messages = m.getMessagesData();\n    }\n    if (m.params.messages && m.params.messages.length) {\n      m.renderMessages();\n    }\n    if (m.params.autoLayout) m.layout();\n    if (m.params.scrollMessages) m.scroll(0);\n  }\n  destroy() {\n    const m = this;\n    m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n    m.$el.trigger('messages:beforedestroy');\n    if (m.$el[0]) {\n      m.$el[0].f7Messages = null;\n      delete m.$el[0].f7Messages;\n    }\n    deleteProps(m);\n  }\n}\nexport default Messages;", "import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'messages',\n  static: {\n    Messages\n  },\n  create() {\n    const app = this;\n    app.messages = ConstructorMethods({\n      defaultSelector: '.messages',\n      constructor: Messages,\n      app,\n      domProp: 'f7Messages',\n      addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')\n    });\n  },\n  on: {\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl).find('.messages-init').each(messagesEl => {\n        app.messages.destroy(messagesEl);\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.messages-init').each(messagesEl => {\n        app.messages.create({\n          el: messagesEl\n        });\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.messages-init').each(messagesEl => {\n        app.messages.destroy(messagesEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.messages-init').each(messagesEl => {\n        app.messages.create({\n          el: messagesEl\n        });\n      });\n    }\n  },\n  vnode: {\n    'messages-init': {\n      insert(vnode) {\n        const app = this;\n        const messagesEl = vnode.elm;\n        app.messages.create({\n          el: messagesEl\n        });\n      },\n      destroy(vnode) {\n        const app = this;\n        const messagesEl = vnode.elm;\n        app.messages.destroy(messagesEl);\n      }\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Messagebar extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const messagebar = this;\n    const defaults = {\n      top: false,\n      topOffset: 0,\n      bottomOffset: 0,\n      attachments: [],\n      renderAttachments: undefined,\n      renderAttachment: undefined,\n      maxHeight: null,\n      resizePage: true\n    };\n\n    // Extend defaults with modules params\n    messagebar.useModulesParams(defaults);\n    messagebar.params = extend(defaults, params);\n\n    // El\n    const $el = $(messagebar.params.el);\n    if ($el.length === 0) return messagebar;\n    if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n    $el[0].f7Messagebar = messagebar;\n\n    // Page and PageContent\n    const $pageEl = $el.parents('.page').eq(0);\n    const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n    // Area\n    const $areaEl = $el.find('.messagebar-area');\n\n    // Textarea\n    let $textareaEl;\n    if (messagebar.params.textareaEl) {\n      $textareaEl = $(messagebar.params.textareaEl);\n    } else {\n      $textareaEl = $el.find('textarea');\n    }\n\n    // Attachments & Library\n    const $attachmentsEl = $el.find('.messagebar-attachments');\n    const $sheetEl = $el.find('.messagebar-sheet');\n    if (messagebar.params.top) {\n      $el.addClass('messagebar-top');\n    }\n    extend(messagebar, {\n      $el,\n      el: $el[0],\n      $areaEl,\n      areaEl: $areaEl[0],\n      $textareaEl,\n      textareaEl: $textareaEl[0],\n      $attachmentsEl,\n      attachmentsEl: $attachmentsEl[0],\n      attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n      $sheetEl,\n      sheetEl: $sheetEl[0],\n      sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n      $pageEl,\n      pageEl: $pageEl[0],\n      $pageContentEl,\n      pageContentEl: $pageContentEl,\n      top: $el.hasClass('messagebar-top') || messagebar.params.top,\n      attachments: []\n    });\n\n    // Events\n    function onAppResize() {\n      if (messagebar.params.resizePage) {\n        messagebar.resizePage();\n      }\n    }\n    function onSubmit(e) {\n      e.preventDefault();\n    }\n    function onAttachmentClick(e) {\n      const index = $(this).index();\n      if ($(e.target).closest('.messagebar-attachment-delete').length) {\n        $(this).trigger('messagebar:attachmentdelete', index);\n        messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n      } else {\n        $(this).trigger('messagebar:attachmentclick', index);\n        messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n      }\n    }\n    function onTextareaChange() {\n      messagebar.checkEmptyState();\n      messagebar.$el.trigger('messagebar:change');\n      messagebar.emit('local::change messagebarChange', messagebar);\n    }\n    function onTextareaFocus() {\n      messagebar.sheetHide();\n      messagebar.$el.addClass('messagebar-focused');\n      messagebar.$el.trigger('messagebar:focus');\n      messagebar.emit('local::focus messagebarFocus', messagebar);\n    }\n    function onTextareaBlur() {\n      messagebar.$el.removeClass('messagebar-focused');\n      messagebar.$el.trigger('messagebar:blur');\n      messagebar.emit('local::blur messagebarBlur', messagebar);\n    }\n    messagebar.attachEvents = function attachEvents() {\n      $el.on('textarea:resize', onAppResize);\n      $el.on('submit', onSubmit);\n      $el.on('click', '.messagebar-attachment', onAttachmentClick);\n      $textareaEl.on('change input', onTextareaChange);\n      $textareaEl.on('focus', onTextareaFocus);\n      $textareaEl.on('blur', onTextareaBlur);\n      app.on('resize', onAppResize);\n    };\n    messagebar.detachEvents = function detachEvents() {\n      $el.off('textarea:resize', onAppResize);\n      $el.off('submit', onSubmit);\n      $el.off('click', '.messagebar-attachment', onAttachmentClick);\n      $textareaEl.off('change input', onTextareaChange);\n      $textareaEl.off('focus', onTextareaFocus);\n      $textareaEl.off('blur', onTextareaBlur);\n      app.off('resize', onAppResize);\n    };\n\n    // Install Modules\n    messagebar.useModules();\n\n    // Init\n    messagebar.init();\n    return messagebar;\n  }\n  focus() {\n    const messagebar = this;\n    messagebar.$textareaEl.focus();\n    return messagebar;\n  }\n  blur() {\n    const messagebar = this;\n    messagebar.$textareaEl.blur();\n    return messagebar;\n  }\n  clear() {\n    const messagebar = this;\n    messagebar.$textareaEl.val('').trigger('change');\n    return messagebar;\n  }\n  getValue() {\n    const messagebar = this;\n    return messagebar.$textareaEl.val().trim();\n  }\n  setValue(value) {\n    const messagebar = this;\n    messagebar.$textareaEl.val(value).trigger('change');\n    return messagebar;\n  }\n  setPlaceholder(placeholder) {\n    const messagebar = this;\n    messagebar.$textareaEl.attr('placeholder', placeholder);\n    return messagebar;\n  }\n  resizePage() {\n    const messagebar = this;\n    const {\n      params,\n      $el,\n      top,\n      $pageEl,\n      $pageContentEl,\n      $areaEl,\n      $textareaEl,\n      $sheetEl,\n      $attachmentsEl\n    } = messagebar;\n    const elHeight = $el[0].offsetHeight;\n    let maxHeight = params.maxHeight;\n    if (top) {\n      /*\n      Disable at the moment\n      const requiredPaddingTop = elHeight + params.topOffset;\n      const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n      if (requiredPaddingTop !== currentPaddingTop) {\n        if (!maxHeight) {\n          maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n        }\n        $textareaEl.css('max-height', `${maxHeight}px`);\n        $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n        $el.trigger('messagebar:resizePage');\n        messagebar.emit('local::resizepage messagebarResizePage');\n      }\n      */\n    } else {\n      const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n      const requiredPaddingBottom = elHeight + params.bottomOffset;\n      if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n        const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n        const pageScrollHeight = $pageContentEl[0].scrollHeight;\n        const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n        const pageScrollTop = $pageContentEl[0].scrollTop;\n        const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n        if (!maxHeight) {\n          maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n        }\n        $textareaEl.css('max-height', `${maxHeight}px`);\n        $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n        if (scrollOnBottom) {\n          $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n        }\n        $el.trigger('messagebar:resizepage');\n        messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n      }\n    }\n  }\n  checkEmptyState() {\n    const messagebar = this;\n    const {\n      $el,\n      $textareaEl\n    } = messagebar;\n    const value = $textareaEl.val().trim();\n    if (value && value.length) {\n      $el.addClass('messagebar-with-value');\n    } else {\n      $el.removeClass('messagebar-with-value');\n    }\n  }\n  attachmentsCreate(innerHTML) {\n    if (innerHTML === void 0) {\n      innerHTML = '';\n    }\n    const messagebar = this;\n    const $attachmentsEl = $(`<div class=\"messagebar-attachments\">${innerHTML}</div>`);\n    $attachmentsEl.insertBefore(messagebar.$textareaEl);\n    extend(messagebar, {\n      $attachmentsEl,\n      attachmentsEl: $attachmentsEl[0]\n    });\n    return messagebar;\n  }\n  attachmentsShow(innerHTML) {\n    if (innerHTML === void 0) {\n      innerHTML = '';\n    }\n    const messagebar = this;\n    messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n    if (messagebar.$attachmentsEl.length === 0) {\n      messagebar.attachmentsCreate(innerHTML);\n    }\n    messagebar.$el.addClass('messagebar-attachments-visible');\n    messagebar.attachmentsVisible = true;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n  attachmentsHide() {\n    const messagebar = this;\n    messagebar.$el.removeClass('messagebar-attachments-visible');\n    messagebar.attachmentsVisible = false;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n  attachmentsToggle() {\n    const messagebar = this;\n    if (messagebar.attachmentsVisible) {\n      messagebar.attachmentsHide();\n    } else {\n      messagebar.attachmentsShow();\n    }\n    return messagebar;\n  }\n  renderAttachment(attachment) {\n    const messagebar = this;\n    if (messagebar.params.renderAttachment) {\n      return messagebar.params.renderAttachment.call(messagebar, attachment);\n    }\n    return `\n      <div class=\"messagebar-attachment\">\n        <img src=\"${attachment}\">\n        <span class=\"messagebar-attachment-delete\"></span>\n      </div>\n    `;\n  }\n  renderAttachments() {\n    const messagebar = this;\n    let html;\n    if (messagebar.params.renderAttachments) {\n      html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n    } else {\n      html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n    }\n    if (messagebar.$attachmentsEl.length === 0) {\n      messagebar.attachmentsCreate(html);\n    } else {\n      messagebar.$attachmentsEl.html(html);\n    }\n  }\n  sheetCreate(innerHTML) {\n    if (innerHTML === void 0) {\n      innerHTML = '';\n    }\n    const messagebar = this;\n    const $sheetEl = $(`<div class=\"messagebar-sheet\">${innerHTML}</div>`);\n    messagebar.$el.append($sheetEl);\n    extend(messagebar, {\n      $sheetEl,\n      sheetEl: $sheetEl[0]\n    });\n    return messagebar;\n  }\n  sheetShow(innerHTML) {\n    if (innerHTML === void 0) {\n      innerHTML = '';\n    }\n    const messagebar = this;\n    messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n    if (messagebar.$sheetEl.length === 0) {\n      messagebar.sheetCreate(innerHTML);\n    }\n    messagebar.$el.addClass('messagebar-sheet-visible');\n    messagebar.sheetVisible = true;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n  sheetHide() {\n    const messagebar = this;\n    messagebar.$el.removeClass('messagebar-sheet-visible');\n    messagebar.sheetVisible = false;\n    if (messagebar.params.resizePage) {\n      messagebar.resizePage();\n    }\n    return messagebar;\n  }\n  sheetToggle() {\n    const messagebar = this;\n    if (messagebar.sheetVisible) {\n      messagebar.sheetHide();\n    } else {\n      messagebar.sheetShow();\n    }\n    return messagebar;\n  }\n  init() {\n    const messagebar = this;\n    messagebar.attachEvents();\n    messagebar.checkEmptyState();\n    return messagebar;\n  }\n  destroy() {\n    const messagebar = this;\n    messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n    messagebar.$el.trigger('messagebar:beforedestroy');\n    messagebar.detachEvents();\n    if (messagebar.$el[0]) {\n      messagebar.$el[0].f7Messagebar = null;\n      delete messagebar.$el[0].f7Messagebar;\n    }\n    deleteProps(messagebar);\n  }\n}\nexport default Messagebar;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'messagebar',\n  static: {\n    Messagebar\n  },\n  create() {\n    const app = this;\n    app.messagebar = ConstructorMethods({\n      defaultSelector: '.messagebar',\n      constructor: Messagebar,\n      app,\n      domProp: 'f7Messagebar',\n      addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')\n    });\n  },\n  on: {\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl).find('.messagebar-init').each(messagebarEl => {\n        app.messagebar.destroy(messagebarEl);\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.messagebar-init').each(messagebarEl => {\n        app.messagebar.create(extend({\n          el: messagebarEl\n        }, $(messagebarEl).dataset()));\n      });\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.messagebar-init').each(messagebarEl => {\n        app.messagebar.destroy(messagebarEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.messagebar-init').each(messagebarEl => {\n        app.messagebar.create(extend({\n          el: messagebarEl\n        }, $(messagebarEl).dataset()));\n      });\n    }\n  },\n  vnode: {\n    'messagebar-init': {\n      insert(vnode) {\n        const app = this;\n        const messagebarEl = vnode.elm;\n        app.messagebar.create(extend({\n          el: messagebarEl\n        }, $(messagebarEl).dataset()));\n      },\n      destroy(vnode) {\n        const app = this;\n        const messagebarEl = vnode.elm;\n        app.messagebar.destroy(messagebarEl);\n      }\n    }\n  }\n};", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  Object.keys(src).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  return {\n    isSafari: needPerspectiveFix || isSafari(),\n    needPerspectiveFix,\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.forEach(slideEl => {\n    slideEl.classList.remove(params.slideVisibleClass);\n  });\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides[i].classList.add(params.slideVisibleClass);\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  slides.forEach(slideEl => {\n    slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n  });\n  let activeSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    activeSlide = slides[activeIndex];\n  }\n  if (activeSlide) {\n    // Active classes\n    activeSlide.classList.add(params.slideActiveClass);\n\n    // Next Slide\n    let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n    if (params.loop && !nextSlide) {\n      nextSlide = slides[0];\n    }\n    if (nextSlide) {\n      nextSlide.classList.add(params.slideNextClass);\n    }\n    // Prev Slide\n    let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n    if (params.loop && !prevSlide === 0) {\n      prevSlide = slides[slides.length - 1];\n    }\n    if (prevSlide) {\n      prevSlide.classList.add(params.slidePrevClass);\n    }\n  }\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl) lazyEl.remove();\n          }\n        });\n      }\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.realIndex = getVirtualRealIndex(activeIndex);\n    }\n    return;\n  }\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (swiper.slides[activeIndex]) {\n    realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // Update Index\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      newIndex = swiper.getSlideIndexByData(newIndex);\n    }\n  }\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled) return swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  slides.forEach((el, index) => {\n    el.setAttribute('data-swiper-slide-index', index);\n  });\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next'\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n  let loopedSlides = params.loopedSlides || slidesPerView;\n  if (loopedSlides % params.slidesPerGroup !== 0) {\n    loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n  }\n  swiper.loopedSlides = loopedSlides;\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  let activeIndex = swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  // prepend last slides before start\n  if (activeSlideIndex < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n      const index = i - Math.floor(i / slides.length) * slides.length;\n      prependSlidesIndexes.push(slides.length - index - 1);\n    }\n  } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n    slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / slides.length) * slides.length;\n      appendSlidesIndexes.push(index);\n    }\n  }\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      swiper.slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(swiper.slides[index]);\n      swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      swiper.slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(swiper.slides[index]);\n      swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n          if (setTranslate) {\n            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n            swiper.touchEventsData.currentTranslate = swiper.translate;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          swiper.slideToLoop(slideRealIndex, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n            swiper.touchEventsData.currentTranslate = swiper.translate;\n          }\n        }\n      } else {\n        swiper.slideToLoop(slideRealIndex, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  data.evCache.push(event);\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!swiper.wrapperEl.contains(targetEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n  if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n  const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        prevX: swiper.touches.currentX,\n        prevY: swiper.touches.currentY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.swipeDirection === 'next' && swiper.allowSlideNext || swiper.swipeDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    // need another loop fix\n    swiper.loopFix({\n      direction: swiper.swipeDirection,\n      setTranslate: true\n    });\n    loopFixed = true;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n  if (pointerIndex >= 0) {\n    data.evCache.splice(pointerIndex, 1);\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n\n  // Touch Events\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  if (!dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopedSlides: null,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        evCache: []\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      el.removeAttribute('style');\n      wrapperEl.removeAttribute('style');\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      swiper.el.swiper = null;\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  const document = getDocument();\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n  const tempDOM = document.createElement('div');\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    // eslint-disable-next-line\n    let slideEl;\n    if (params.renderSlide) {\n      slideEl = params.renderSlide.call(swiper, slide, index);\n      if (typeof slideEl === 'string') {\n        tempDOM.innerHTML = slideEl;\n        slideEl = tempDOM.children[0];\n      }\n    } else if (swiper.isElement) {\n      slideEl = createElement('swiper-slide');\n    } else {\n      slideEl = createElement('div', swiper.params.slideClass);\n    }\n    slideEl.setAttribute('data-swiper-slide-index', index);\n    if (!params.renderSlide) {\n      slideEl.innerHTML = slide;\n    }\n    if (params.cache) {\n      swiper.virtual.cache[index] = slideEl;\n    }\n    return slideEl;\n  }\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides,\n      loop: isLoop\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n    }\n    let from = activeIndex - slidesBefore;\n    let to = activeIndex + slidesAfter;\n    if (!isLoop) {\n      from = Math.max(from, 0);\n      to = Math.min(to, slides.length - 1);\n    }\n    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    if (isLoop && activeIndex >= slidesBefore) {\n      from -= slidesBefore;\n      if (!centeredSlides) offset += swiper.slidesGrid[0];\n    } else if (isLoop && activeIndex < slidesBefore) {\n      from = -slidesBefore;\n      if (centeredSlides) offset += swiper.slidesGrid[0];\n    }\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n      slidesBefore,\n      slidesAfter\n    });\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      emit('virtualUpdate');\n    }\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.forEach(slideEl => {\n          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n      }\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    const getSlideIndex = index => {\n      let slideIndex = index;\n      if (index < 0) {\n        slideIndex = slides.length + index;\n      } else if (slideIndex >= slides.length) {\n        // eslint-disable-next-line\n        slideIndex = slideIndex - slides.length;\n      }\n      return slideIndex;\n    };\n    if (force) {\n      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n        slideEl.remove();\n      });\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          const slideIndex = getSlideIndex(i);\n          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n            slideEl.remove();\n          });\n        }\n      }\n    }\n    const loopFrom = isLoop ? -slides.length : 0;\n    const loopTo = isLoop ? slides.length * 2 : slides.length;\n    for (let i = loopFrom; i < loopTo; i += 1) {\n      if (i >= from && i <= to) {\n        const slideIndex = getSlideIndex(i);\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(slideIndex);\n        } else {\n          if (i > previousTo) appendIndexes.push(slideIndex);\n          if (i < previousFrom) prependIndexes.push(slideIndex);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      swiper.slidesEl.append(renderSlide(slides[index], index));\n    });\n    if (isLoop) {\n      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n        const index = prependIndexes[i];\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      }\n    } else {\n      prependIndexes.sort((a, b) => b - a);\n      prependIndexes.forEach(index => {\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      });\n    }\n    elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n    });\n    onRendered();\n  }\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const cachedEl = cache[cachedIndex];\n        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n        if (cachedElIndex) {\n          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n          // shift cache indexes\n          Object.keys(swiper.virtual.cache).forEach(key => {\n            if (key > slidesIndexes) {\n              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n              delete swiper.virtual.cache[key];\n            }\n          });\n        }\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n        // shift cache indexes\n        Object.keys(swiper.virtual.cache).forEach(key => {\n          if (key > slidesIndexes) {\n            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n            delete swiper.virtual.cache[key];\n          }\n        });\n      }\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    let domSlidesAssigned;\n    if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n      if (slides && slides.length) {\n        swiper.virtual.slides = [...slides];\n        domSlidesAssigned = true;\n        slides.forEach((slideEl, slideIndex) => {\n          slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n          swiper.virtual.cache[slideIndex] = slideEl;\n          slideEl.remove();\n        });\n      }\n    }\n    if (!domSlidesAssigned) {\n      swiper.virtual.slides = swiper.params.virtual.slides;\n    }\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n    update();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\nexport { Virtual as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const el = swiper.el;\n      const swiperWidth = el.clientWidth;\n      const swiperHeight = el.clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = elementOffset(el);\n      if (rtl) swiperOffset.left -= el.scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    document.addEventListener('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    document.removeEventListener('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\nexport { Keyboard as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n      noMousewheelClass: 'swiper-no-mousewheel'\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  }\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  }\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n\n    // Ignore event if the target or its parents have the swiper-no-mousewheel class\n    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n    const params = swiper.params.mousewheel;\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      };\n\n      // Keep the most recent events\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n        if (swiper.params.loop) {\n          swiper.loopFix({\n            direction: newEvent.direction < 0 ? 'next' : 'prev',\n            byMousewheel: true\n          });\n        }\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n", "import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n", "import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n", "function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n", "import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n  }\n  function setSideBullets(bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    if (!bulletEl) return;\n    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n    if (bulletEl) {\n      bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n      if (bulletEl) {\n        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n      }\n    }\n  }\n  function onBulletClick(e) {\n    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n    if (!bulletEl) {\n      return;\n    }\n    e.preventDefault();\n    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n    if (swiper.params.loop) {\n      if (swiper.realIndex === index) return;\n      const realIndex = swiper.realIndex;\n      const newSlideIndex = swiper.getSlideIndexByData(index);\n      const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n      const loopFix = dir => {\n        const indexBeforeLoopFix = swiper.activeIndex;\n        swiper.loopFix({\n          direction: dir,\n          activeSlideIndex: newSlideIndex,\n          slideTo: false\n        });\n        const indexAfterFix = swiper.activeIndex;\n        if (indexBeforeLoopFix === indexAfterFix) {\n          swiper.slideToLoop(realIndex, 0, false, true);\n        }\n      };\n      if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n        loopFix(newSlideIndex > currentSlideIndex ? 'next' : 'prev');\n      } else if (swiper.params.centeredSlides) {\n        const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (newSlideIndex < Math.floor(slidesPerView / 2)) {\n          loopFix('prev');\n        }\n      }\n      swiper.slideToLoop(index);\n    } else {\n      swiper.slideTo(index);\n    }\n  }\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    // Current/Total\n    let current;\n    let previousIndex;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      previousIndex = swiper.previousRealIndex || 0;\n      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n      previousIndex = swiper.previousSnapIndex;\n    } else {\n      previousIndex = swiper.previousIndex || 0;\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n        el.forEach(subEl => {\n          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n        });\n        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n          dynamicBulletIndex += current - (previousIndex || 0);\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.forEach(bulletEl => {\n        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n        bulletEl.classList.remove(...classesToRemove);\n      });\n      if (el.length > 1) {\n        bullets.forEach(bullet => {\n          const bulletIndex = elementIndex(bullet);\n          if (bulletIndex === current) {\n            bullet.classList.add(...params.bulletActiveClass.split(' '));\n          } else if (swiper.isElement) {\n            bullet.setAttribute('part', 'bullet');\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n            if (bulletIndex === firstIndex) {\n              setSideBullets(bullet, 'prev');\n            }\n            if (bulletIndex === lastIndex) {\n              setSideBullets(bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const bullet = bullets[current];\n        if (bullet) {\n          bullet.classList.add(...params.bulletActiveClass.split(' '));\n        }\n        if (swiper.isElement) {\n          bullets.forEach((bulletEl, bulletIndex) => {\n            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n          });\n        }\n        if (params.dynamicBullets) {\n          const firstDisplayedBullet = bullets[firstIndex];\n          const lastDisplayedBullet = bullets[lastIndex];\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            if (bullets[i]) {\n              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n          }\n          setSideBullets(firstDisplayedBullet, 'prev');\n          setSideBullets(lastDisplayedBullet, 'next');\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.forEach(bullet => {\n          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n        });\n      }\n    }\n    el.forEach((subEl, subElIndex) => {\n      if (params.type === 'fraction') {\n        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n          fractionEl.textContent = params.formatFractionCurrent(current + 1);\n        });\n        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n          totalEl.textContent = params.formatFractionTotal(total);\n        });\n      }\n      if (params.type === 'progressbar') {\n        let progressbarDirection;\n        if (params.progressbarOpposite) {\n          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n        } else {\n          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n        }\n        const scale = (current + 1) / total;\n        let scaleX = 1;\n        let scaleY = 1;\n        if (progressbarDirection === 'horizontal') {\n          scaleX = scale;\n        } else {\n          scaleY = scale;\n        }\n        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        });\n      }\n      if (params.type === 'custom' && params.renderCustom) {\n        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n        if (subElIndex === 0) emit('paginationRender', subEl);\n      } else {\n        if (subElIndex === 0) emit('paginationRender', subEl);\n        emit('paginationUpdate', subEl);\n      }\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n      }\n    });\n  }\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          // prettier-ignore\n          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n    }\n    swiper.pagination.bullets = [];\n    el.forEach(subEl => {\n      if (params.type !== 'custom') {\n        subEl.innerHTML = paginationHTML || '';\n      }\n      if (params.type === 'bullets') {\n        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n      }\n    });\n    if (params.type !== 'custom') {\n      emit('paginationRender', el[0]);\n    }\n  }\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = [...document.querySelectorAll(params.el)];\n    }\n    if (!el) {\n      el = params.el;\n    }\n    if (!el || el.length === 0) return;\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n      el = [...swiper.el.querySelectorAll(params.el)];\n      // check if it belongs to another nested Swiper\n      if (el.length > 1) {\n        el = el.filter(subEl => {\n          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n          return true;\n        })[0];\n      }\n    }\n    if (Array.isArray(el) && el.length === 1) el = el[0];\n    Object.assign(swiper.pagination, {\n      el\n    });\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (params.type === 'bullets' && params.clickable) {\n        subEl.classList.add(...(params.clickableClass || '').split(' '));\n      }\n      subEl.classList.add(params.modifierClass + params.type);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      if (params.type === 'bullets' && params.dynamicBullets) {\n        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n      if (params.type === 'progressbar' && params.progressbarOpposite) {\n        subEl.classList.add(params.progressbarOppositeClass);\n      }\n      if (params.clickable) {\n        subEl.addEventListener('click', onBulletClick);\n      }\n      if (!swiper.enabled) {\n        subEl.classList.add(params.lockClass);\n      }\n    });\n  }\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => {\n        subEl.classList.remove(params.hiddenClass);\n        subEl.classList.remove(params.modifierClass + params.type);\n        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        if (params.clickable) {\n          subEl.classList.remove(...(params.clickableClass || '').split(' '));\n          subEl.removeEventListener('click', onBulletClick);\n        }\n      });\n    }\n    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n  }\n  on('changeDirection', () => {\n    if (!swiper.pagination || !swiper.pagination.el) return;\n    const params = swiper.params.pagination;\n    let {\n      el\n    } = swiper.pagination;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    update();\n  });\n  on('snapGridLengthChange', () => {\n    render();\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const el = makeElementsArray(swiper.pagination.el);\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n    }\n    init();\n    render();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Pagination as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null\n  };\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n      dragEl.style.width = `${newSize}px`;\n    } else {\n      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n      dragEl.style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      el.style.opacity = 1;\n      timeout = setTimeout(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n  }\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    dragEl.style.width = '';\n    dragEl.style.height = '';\n    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.width = `${dragSize}px`;\n    } else {\n      dragEl.style.height = `${dragSize}px`;\n    }\n    if (divider >= 1) {\n      el.style.display = 'none';\n    } else {\n      el.style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      el.style.opacity = 0;\n    }\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function getPointerPosition(e) {\n    return swiper.isHorizontal() ? e.clientX : e.clientY;\n  }\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    wrapperEl.style.transitionDuration = '100ms';\n    dragEl.style.transitionDuration = '100ms';\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    el.style.transitionDuration = '0ms';\n    if (params.hide) {\n      el.style.opacity = 1;\n    }\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n    disableDraggable();\n  }\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n", "import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const rtlFactor = rtl ? -1 : 1;\n    const p = el.getAttribute('data-swiper-parallax') || '0';\n    let x = el.getAttribute('data-swiper-parallax-x');\n    let y = el.getAttribute('data-swiper-parallax-y');\n    const scale = el.getAttribute('data-swiper-parallax-scale');\n    const opacity = el.getAttribute('data-swiper-parallax-opacity');\n    const rotate = el.getAttribute('data-swiper-parallax-rotate');\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      el.style.opacity = currentOpacity;\n    }\n    let transform = `translate3d(${x}, ${y}, 0px)`;\n    if (typeof scale !== 'undefined' && scale !== null) {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      transform += ` scale(${currentScale})`;\n    }\n    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n      const currentRotate = rotate * progress * -1;\n      transform += ` rotate(${currentRotate}deg)`;\n    }\n    el.style.transform = transform;\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      slides,\n      progress,\n      snapGrid,\n      isElement\n    } = swiper;\n    const elements = elementChildren(el, elementsSelector);\n    if (swiper.isElement) {\n      elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n    }\n    elements.forEach(subEl => {\n      setTransform(subEl, progress);\n    });\n    slides.forEach((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n        setTransform(subEl, slideProgress);\n      });\n    });\n  };\n  const setTransition = function (duration) {\n    if (duration === void 0) {\n      duration = swiper.params.speed;\n    }\n    const {\n      el,\n      hostEl\n    } = swiper;\n    const elements = [...el.querySelectorAll(elementsSelector)];\n    if (swiper.isElement) {\n      elements.push(...hostEl.querySelectorAll(elementsSelector));\n    }\n    elements.forEach(parallaxEl => {\n      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n    });\n  };\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\nexport { Parallax as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const evCache = [];\n  const gesture = {\n    originX: 0,\n    originY: 0,\n    slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    imageEl: undefined,\n    imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.imageEl;\n        const slideEl = gesture.slideEl;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n  function getDistanceBetweenTouches() {\n    if (evCache.length < 2) return 1;\n    const x1 = evCache[0].pageX;\n    const y1 = evCache[0].pageY;\n    const x2 = evCache[1].pageX;\n    const y2 = evCache[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n  function getScaleOrigin() {\n    if (evCache.length < 2) return {\n      x: null,\n      y: null\n    };\n    const box = gesture.imageEl.getBoundingClientRect();\n    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n  }\n  function getSlideSelector() {\n    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  }\n  function eventWithinSlide(e) {\n    const slideSelector = getSlideSelector();\n    if (e.target.matches(slideSelector)) return true;\n    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n  function eventWithinZoomContainer(e) {\n    const selector = `.${swiper.params.zoom.containerClass}`;\n    if (e.target.matches(selector)) return true;\n    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    if (e.pointerType === 'mouse') {\n      evCache.splice(0, evCache.length);\n    }\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    evCache.push(e);\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureTouched = true;\n    gesture.scaleStart = getDistanceBetweenTouches();\n    if (!gesture.slideEl) {\n      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n      if (!gesture.imageWrapEl) {\n        gesture.imageEl = undefined;\n        return;\n      }\n      gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    }\n    if (gesture.imageEl) {\n      const [originX, originY] = getScaleOrigin();\n      gesture.originX = originX;\n      gesture.originY = originY;\n      gesture.imageEl.style.transitionDuration = '0ms';\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache[pointerIndex] = e;\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureMoved = true;\n    gesture.scaleMove = getDistanceBetweenTouches();\n    if (!gesture.imageEl) {\n      return;\n    }\n    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function onGestureEnd(e) {\n    if (!eventWithinSlide(e)) return;\n    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n    if (!fakeGestureTouched || !fakeGestureMoved) {\n      return;\n    }\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!gesture.imageEl) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale > 1 && gesture.slideEl) {\n      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    } else if (zoom.scale <= 1 && gesture.slideEl) {\n      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    }\n    if (zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n      gesture.slideEl = undefined;\n    }\n  }\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.imageEl) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    const event = evCache.length > 0 ? evCache[0] : e;\n    image.touchesStart.x = event.pageX;\n    image.touchesStart.y = event.pageY;\n  }\n  function onTouchMove(e) {\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !gesture.slideEl) return;\n    if (!image.isMoved) {\n      image.width = gesture.imageEl.offsetWidth;\n      image.height = gesture.imageEl.offsetHeight;\n      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      gesture.imageWrapEl.style.transitionDuration = '0ms';\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n    if (touchesDiff > 5) {\n      swiper.allowClick = false;\n    }\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n    image.isMoved = true;\n    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n    const {\n      originX,\n      originY\n    } = gesture;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n      if (gesture.imageEl) {\n        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n      }\n      if (gesture.imageWrapEl) {\n        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n      }\n      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.slideEl = undefined;\n      gesture.imageEl = undefined;\n      gesture.imageWrapEl = undefined;\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n  }\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (e && e.target) {\n        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      }\n      if (!gesture.slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n        } else {\n          gesture.slideEl = swiper.slides[swiper.activeIndex];\n        }\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.pageX;\n      touchY = e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n    const forceZoomRatio = typeof e === 'number' ? e : null;\n    if (currentScale === 1 && forceZoomRatio) {\n      touchX = undefined;\n      touchY = undefined;\n    }\n    zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    if (e && !(currentScale === 1 && forceZoomRatio)) {\n      slideWidth = gesture.slideEl.offsetWidth;\n      slideHeight = gesture.slideEl.offsetHeight;\n      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.imageEl.offsetWidth;\n      imageHeight = gesture.imageEl.offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    if (forceZoomRatio && zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n      } else {\n        gesture.slideEl = swiper.slides[swiper.activeIndex];\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    gesture.slideEl = undefined;\n    gesture.originX = 0;\n    gesture.originY = 0;\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n  function getListeners() {\n    const passiveListener = swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = swiper.params.passiveListeners ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd();\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\nexport { Zoom as default };\n", "import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n    }\n  });\n\n  swiper.controller = {\n    control: undefined\n  };\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }();\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n    return this;\n  }\n  function getInterpolateFunction(c) {\n    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n  }\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n    function setControlledTranslate(c) {\n      if (c.destroyed) return;\n\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n          multiplier = 1;\n        }\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      if (c.destroyed) return;\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        elementTransitionEnd(c.wrapperEl, () => {\n          if (!controlled) return;\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n  on('beforeInit', () => {\n    if (typeof window !== 'undefined' && (\n    // eslint-disable-line\n    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n      const controlElement = document.querySelector(swiper.params.controller.control);\n      if (controlElement && controlElement.swiper) {\n        swiper.controller.control = controlElement.swiper;\n      } else if (controlElement) {\n        const onControllerSwiper = e => {\n          swiper.controller.control = e.detail[0];\n          swiper.update();\n          controlElement.removeEventListener('init', onControllerSwiper);\n        };\n        controlElement.addEventListener('init', onControllerSwiper);\n      }\n      return;\n    }\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\nexport { Controller as default };\n", "import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.innerHTML = '';\n    notification.innerHTML = message;\n  }\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function getRandomNumber(size) {\n    if (size === void 0) {\n      size = 16;\n    }\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n  function makeElFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '0');\n    });\n  }\n  function makeElNotFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '-1');\n    });\n  }\n  function addElRole(el, role) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('role', role);\n    });\n  }\n  function addElRoleDescription(el, description) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-roledescription', description);\n    });\n  }\n  function addElControls(el, controls) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-controls', controls);\n    });\n  }\n  function addElLabel(el, label) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-label', label);\n    });\n  }\n  function addElId(el, id) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('id', id);\n    });\n  }\n  function addElLive(el, live) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-live', live);\n    });\n  }\n  function disableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', true);\n    });\n  }\n  function enableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', false);\n    });\n  }\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const targetEl = e.target;\n    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n    }\n    if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n      targetEl.click();\n    }\n  }\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (prevEl) {\n      if (swiper.isBeginning) {\n        disableEl(prevEl);\n        makeElNotFocusable(prevEl);\n      } else {\n        enableEl(prevEl);\n        makeElFocusable(prevEl);\n      }\n    }\n    if (nextEl) {\n      if (swiper.isEnd) {\n        disableEl(nextEl);\n        makeElNotFocusable(nextEl);\n      } else {\n        enableEl(nextEl);\n        makeElFocusable(nextEl);\n      }\n    }\n  }\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.forEach(bulletEl => {\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable(bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole(bulletEl, 'button');\n          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n        }\n      }\n      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n        bulletEl.setAttribute('aria-current', 'true');\n      } else {\n        bulletEl.removeAttribute('aria-current');\n      }\n    });\n  }\n  const initNavEl = (el, wrapperId, message) => {\n    makeElFocusable(el);\n    if (el.tagName !== 'BUTTON') {\n      addElRole(el, 'button');\n      el.addEventListener('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel(el, message);\n    addElControls(el, wrapperId);\n  };\n  const handlePointerDown = () => {\n    swiper.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n  const handleFocus = e => {\n    if (swiper.a11y.clicked) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n  };\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole(swiper.slides, params.slideRole);\n    }\n    const slidesLength = swiper.slides.length;\n    if (params.slideLabelMessage) {\n      swiper.slides.forEach((slideEl, index) => {\n        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel(slideEl, ariaLabelMessage);\n      });\n    }\n  };\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.el.append(liveRegion);\n\n    // Container\n    const containerEl = swiper.el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel(containerEl, params.containerMessage);\n    }\n\n    // Wrapper\n    const wrapperEl = swiper.wrapperEl;\n    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId(wrapperEl, wrapperId);\n    addElLive(wrapperEl, live);\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n      paginationEl.forEach(el => {\n        el.addEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.addEventListener('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion) liveRegion.remove();\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n      paginationEl.forEach(el => {\n        el.removeEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    swiper.el.removeEventListener('focus', handleFocus, true);\n    swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n  }\n  on('beforeInit', () => {\n    liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n    liveRegion.setAttribute('aria-live', 'assertive');\n    liveRegion.setAttribute('aria-atomic', 'true');\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\nexport { A11y as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = swiper.slides[index];\n    let value = slugify(slide.getAttribute('data-history'));\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key ? `${key}/` : ''}${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key ? `${key}/` : ''}${value}`;\n    }\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides[i];\n        const slideHistory = slugify(slide.getAttribute('data-history'));\n        if (slideHistory === value) {\n          const index = swiper.getSlideIndex(slide);\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) {\n      if (!swiper.params.history.replaceState) {\n        window.addEventListener('popstate', setHistoryPopState);\n      }\n      return;\n    }\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\nexport { History as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    on\n  } = _ref;\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n      getSlideIndex(_s, hash) {\n        if (swiper.virtual && swiper.params.virtual.enabled) {\n          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n          if (!slideWithHash) return 0;\n          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n          return index;\n        }\n        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n      }\n    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n      swiper.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n      emit('hashSet');\n    } else {\n      document.location.hash = activeSlideHash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      window.addEventListener('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      window.removeEventListener('hashchange', onHashChange);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\nexport { HashNavigation as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit,\n    params\n  } = _ref;\n  swiper.autoplay = {\n    running: false,\n    paused: false,\n    timeLeft: 0\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime;\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let slideChanged;\n  let pausedByInteraction;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n    autoplayDelayTotal = swiper.params.autoplay.delay;\n    autoplayDelayCurrent = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n      delay = currentSlideDelay;\n      autoplayDelayTotal = currentSlideDelay;\n      autoplayDelayCurrent = currentSlideDelay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      if (slideChanged) {\n        autoplayTimeLeft = swiper.params.autoplay.delay;\n      }\n      slideChanged = false;\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    if (swiper.animating || swiper.autoplay.paused) return;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    swiper.el.removeEventListener('pointerenter', onPointerEnter);\n    swiper.el.removeEventListener('pointerleave', onPointerLeave);\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      autoplayStartTime = new Date().getTime();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    slideChanged = true;\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      swiper.slideToLoop(slideToIndex);\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  }\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper.update();\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n          slideEl.classList.add(thumbActiveClass);\n        });\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        if (thumbsSwiper.slides[swiper.realIndex + i]) {\n          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n      }\n    }\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      const currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n      const document = getDocument();\n      const getThumbsElementAndInit = () => {\n        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n        if (thumbsElement && thumbsElement.swiper) {\n          thumbs.swiper = thumbsElement.swiper;\n          init();\n          update(true);\n        } else if (thumbsElement) {\n          const onThumbsSwiper = e => {\n            thumbs.swiper = e.detail[0];\n            thumbsElement.removeEventListener('init', onThumbsSwiper);\n            init();\n            update(true);\n            thumbs.swiper.update();\n            swiper.update();\n          };\n          thumbsElement.addEventListener('init', onThumbsSwiper);\n        }\n        return thumbsElement;\n      };\n      const watchForThumbsToAppear = () => {\n        if (swiper.destroyed) return;\n        const thumbsElement = getThumbsElementAndInit();\n        if (!thumbsElement) {\n          requestAnimationFrame(watchForThumbsToAppear);\n        }\n      };\n      requestAnimationFrame(watchForThumbsToAppear);\n    } else {\n      init();\n      update(true);\n    }\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\nexport { Thumb as default };\n", "import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    once\n  } = _ref;\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n  function onTouchStart() {\n    if (swiper.params.cssMode) return;\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n  function onTouchMove() {\n    if (swiper.params.cssMode) return;\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n  function onTouchEnd(_ref2) {\n    let {\n      currentPos\n    } = _ref2;\n    if (swiper.params.cssMode) return;\n    const {\n      params,\n      wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        elementTransitionEnd(wrapperEl, () => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            elementTransitionEnd(wrapperEl, () => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          elementTransitionEnd(wrapperEl, () => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\nexport { freeMode as default };\n", "function Grid(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n  let wasMultiRow;\n  const getSpaceBetween = () => {\n    let spaceBetween = swiper.params.spaceBetween;\n    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n    } else if (typeof spaceBetween === 'string') {\n      spaceBetween = parseFloat(spaceBetween);\n    }\n    return spaceBetween;\n  };\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n    slidesPerRow = slidesNumberEvenToRows / rows;\n  };\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.style.order = newSlideOrderIndex;\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n    slide.row = row;\n    slide.column = column;\n    slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n  };\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n    if (centeredSlides) {\n      const newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.splice(0, snapGrid.length);\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n  const onInit = () => {\n    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n  };\n  const onUpdate = () => {\n    const {\n      params,\n      el\n    } = swiper;\n    const isMultiRow = params.grid && params.grid.rows > 1;\n    if (wasMultiRow && !isMultiRow) {\n      el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n      numFullColumns = 1;\n      swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n      el.classList.add(`${params.containerModifierClass}grid`);\n      if (params.grid.fill === 'column') {\n        el.classList.add(`${params.containerModifierClass}grid-column`);\n      }\n      swiper.emitContainerClasses();\n    }\n    wasMultiRow = isMultiRow;\n  };\n  on('init', onInit);\n  on('update', onUpdate);\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\nexport { Grid as default };\n", "function appendSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  const appendElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.append(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.append(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) appendElement(slides[i]);\n    }\n  } else {\n    appendElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  const prependElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.prepend(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.prepend(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) prependElement(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    prependElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.recalcSlides();\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides[i];\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) slidesEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    slidesEl.append(slides);\n  }\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    slidesEl.append(slidesBuffer[i]);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n  let {\n    swiper\n  } = _ref;\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}\n\nexport { Manipulation as default };\n", "function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      swiper.slides.forEach(slideEl => {\n        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n\nexport { effectInit as e };\n", "import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n  const transformEl = getSlideTransformEl(slideEl);\n  if (transformEl !== slideEl) {\n    transformEl.style.backfaceVisibility = 'hidden';\n    transformEl.style['-webkit-backface-visibility'] = 'hidden';\n  }\n  return transformEl;\n}\n\nexport { effectTarget as e };\n", "import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n  let {\n    swiper,\n    duration,\n    transformElements,\n    allSlides\n  } = _ref;\n  const {\n    activeIndex\n  } = swiper;\n  const getSlide = el => {\n    if (!el.parentElement) {\n      // assume shadow root\n      const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n      return slide;\n    }\n    return el.parentElement;\n  };\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let transitionEndTarget;\n    if (allSlides) {\n      transitionEndTarget = transformElements;\n    } else {\n      transitionEndTarget = transformElements.filter(transformEl => {\n        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n        return swiper.getSlideIndex(el) === activeIndex;\n      });\n    }\n    transitionEndTarget.forEach(el => {\n      elementTransitionEnd(el, () => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const evt = new window.CustomEvent('transitionend', {\n          bubbles: true,\n          cancelable: true\n        });\n        swiper.wrapperEl.dispatchEvent(evt);\n      });\n    });\n  }\n}\n\nexport { effectVirtualTransitionEnd as e };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    fadeEffect: {\n      crossFade: false\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = swiper.slides[i];\n      const offset = slideEl.swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.opacity = slideOpacity;\n      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFade as default };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n  const createSlideShadows = (slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n      slideEl.append(shadowBefore);\n    }\n    if (!shadowAfter) {\n      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n      slideEl.append(shadowAfter);\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.forEach(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows(slideEl, progress, isHorizontal);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          swiper.wrapperEl.append(cubeShadowEl);\n        }\n        cubeShadowEl.style.height = `${swiperWidth}px`;\n      } else {\n        cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          el.append(cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      slideEl.style.transform = transform;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress, isHorizontal);\n      }\n    }\n    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n      }\n    }\n    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const {\n      el,\n      slides\n    } = swiper;\n    slides.forEach(slideEl => {\n      slideEl.style.transitionDuration = `${duration}ms`;\n      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n        subEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      const shadowEl = el.querySelector('.swiper-cube-shadow');\n      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n    }\n  };\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\nexport { EffectCube as default };\n", "import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n  const shadowContainer = getSlideTransformEl(slideEl);\n  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n  if (!shadowEl) {\n    shadowEl = createElement('div', shadowClass.split(' '));\n    shadowContainer.append(shadowEl);\n  }\n  return shadowEl;\n}\n\nexport { createShadow as c };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true\n    }\n  });\n  const createSlideShadows = (slideEl, progress) => {\n    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n    if (!shadowAfter) {\n      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // Set shadows\n    swiper.params.flipEffect;\n    swiper.slides.forEach(slideEl => {\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows(slideEl, progress);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFlip as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true\n    }\n  });\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const slideEl = slides[i];\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = slideEl.swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = slideTransform;\n      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n        if (!shadowBeforeEl) {\n          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n        }\n        if (!shadowAfterEl) {\n          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n  };\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\nexport { EffectCoverflow as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    creativeEffect: {\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      }\n      // set translate\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      });\n      // set rotates\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n      // Set shadows\n      if (custom && data.shadow || !custom) {\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl && data.shadow) {\n          shadowEl = createShadow('creative', slideEl);\n        }\n        if (shadowEl) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n      targetEl.style.opacity = opacityString;\n      if (data.origin) {\n        targetEl.style.transformOrigin = data.origin;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCreative as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = slideEl.swiperSlideOffset;\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n      }\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n      /* eslint-disable */\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n      /* eslint-enable */\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl) {\n          shadowEl = createShadow('cards', slideEl);\n        }\n        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCards as default };\n", "/**\n * Swiper 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n", "/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n    } else {\n      target[key] = src[key];\n    }\n  });\n}\nfunction needsNavigation(params) {\n  if (params === void 0) {\n    params = {};\n  }\n  return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n  if (params === void 0) {\n    params = {};\n  }\n  return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n  if (params === void 0) {\n    params = {};\n  }\n  return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n  if (classNames === void 0) {\n    classNames = '';\n  }\n  const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n  const unique = [];\n  classes.forEach(c => {\n    if (unique.indexOf(c) < 0) unique.push(c);\n  });\n  return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n  if (attrName === void 0) {\n    attrName = '';\n  }\n  return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n  if (className === void 0) {\n    className = '';\n  }\n  if (!className) return 'swiper-wrapper';\n  if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n  return className;\n}\n\nfunction updateSwiper(_ref) {\n  let {\n    swiper,\n    slides,\n    passedParams,\n    changedParams,\n    nextEl,\n    prevEl,\n    scrollbarEl,\n    paginationEl\n  } = _ref;\n  const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n  const {\n    params: currentParams,\n    pagination,\n    navigation,\n    scrollbar,\n    virtual,\n    thumbs\n  } = swiper;\n  let needThumbsInit;\n  let needControllerInit;\n  let needPaginationInit;\n  let needScrollbarInit;\n  let needNavigationInit;\n  let loopNeedDestroy;\n  let loopNeedEnable;\n  let loopNeedReloop;\n  if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n    needThumbsInit = true;\n  }\n  if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n    needControllerInit = true;\n  }\n  if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n    needPaginationInit = true;\n  }\n  if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n    needScrollbarInit = true;\n  }\n  if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n    needNavigationInit = true;\n  }\n  const destroyModule = mod => {\n    if (!swiper[mod]) return;\n    swiper[mod].destroy();\n    if (mod === 'navigation') {\n      if (swiper.isElement) {\n        swiper[mod].prevEl.remove();\n        swiper[mod].nextEl.remove();\n      }\n      currentParams[mod].prevEl = undefined;\n      currentParams[mod].nextEl = undefined;\n      swiper[mod].prevEl = undefined;\n      swiper[mod].nextEl = undefined;\n    } else {\n      if (swiper.isElement) {\n        swiper[mod].el.remove();\n      }\n      currentParams[mod].el = undefined;\n      swiper[mod].el = undefined;\n    }\n  };\n  if (changedParams.includes('loop') && swiper.isElement) {\n    if (currentParams.loop && !passedParams.loop) {\n      loopNeedDestroy = true;\n    } else if (!currentParams.loop && passedParams.loop) {\n      loopNeedEnable = true;\n    } else {\n      loopNeedReloop = true;\n    }\n  }\n  updateParams.forEach(key => {\n    if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n      extend(currentParams[key], passedParams[key]);\n      if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n        destroyModule(key);\n      }\n    } else {\n      const newValue = passedParams[key];\n      if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n        if (newValue === false) {\n          destroyModule(key);\n        }\n      } else {\n        currentParams[key] = passedParams[key];\n      }\n    }\n  });\n  if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n    swiper.controller.control = currentParams.controller.control;\n  }\n  if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n    virtual.slides = slides;\n    virtual.update(true);\n  }\n  if (changedParams.includes('children') && slides && currentParams.loop) {\n    loopNeedReloop = true;\n  }\n  if (needThumbsInit) {\n    const initialized = thumbs.init();\n    if (initialized) thumbs.update(true);\n  }\n  if (needControllerInit) {\n    swiper.controller.control = currentParams.controller.control;\n  }\n  if (needPaginationInit) {\n    if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n      paginationEl = document.createElement('div');\n      paginationEl.classList.add('swiper-pagination');\n      paginationEl.part.add('pagination');\n      swiper.el.appendChild(paginationEl);\n    }\n    if (paginationEl) currentParams.pagination.el = paginationEl;\n    pagination.init();\n    pagination.render();\n    pagination.update();\n  }\n  if (needScrollbarInit) {\n    if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n      scrollbarEl = document.createElement('div');\n      scrollbarEl.classList.add('swiper-scrollbar');\n      scrollbarEl.part.add('scrollbar');\n      swiper.el.appendChild(scrollbarEl);\n    }\n    if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n    scrollbar.init();\n    scrollbar.updateSize();\n    scrollbar.setTranslate();\n  }\n  if (needNavigationInit) {\n    if (swiper.isElement) {\n      if (!nextEl || typeof nextEl === 'string') {\n        nextEl = document.createElement('div');\n        nextEl.classList.add('swiper-button-next');\n        nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n        nextEl.part.add('button-next');\n        swiper.el.appendChild(nextEl);\n      }\n      if (!prevEl || typeof prevEl === 'string') {\n        prevEl = document.createElement('div');\n        prevEl.classList.add('swiper-button-prev');\n        prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n        prevEl.part.add('button-prev');\n        swiper.el.appendChild(prevEl);\n      }\n    }\n    if (nextEl) currentParams.navigation.nextEl = nextEl;\n    if (prevEl) currentParams.navigation.prevEl = prevEl;\n    navigation.init();\n    navigation.update();\n  }\n  if (changedParams.includes('allowSlideNext')) {\n    swiper.allowSlideNext = passedParams.allowSlideNext;\n  }\n  if (changedParams.includes('allowSlidePrev')) {\n    swiper.allowSlidePrev = passedParams.allowSlidePrev;\n  }\n  if (changedParams.includes('direction')) {\n    swiper.changeDirection(passedParams.direction, false);\n  }\n  if (loopNeedDestroy || loopNeedReloop) {\n    swiper.loopDestroy();\n  }\n  if (loopNeedEnable || loopNeedReloop) {\n    swiper.loopCreate();\n  }\n  swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n", "import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n  if (parseFloat(val) === Number(val)) return Number(val);\n  if (val === 'true') return true;\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'null') return null;\n  if (val === 'undefined') return undefined;\n  if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n    let v;\n    try {\n      v = JSON.parse(val);\n    } catch (err) {\n      v = val;\n    }\n    return v;\n  }\n  return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n  const params = {};\n  const passedParams = {};\n  extend(params, defaults);\n  const localParamsList = [...paramsList, 'on'];\n  const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n  // First check props\n  localParamsList.forEach(paramName => {\n    paramName = paramName.replace('_', '');\n    if (typeof element[paramName] !== 'undefined') {\n      passedParams[paramName] = element[paramName];\n    }\n  });\n\n  // Attributes\n  const attrsList = [...element.attributes];\n  if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n    attrsList.push({\n      name: propName,\n      value: isObject(propValue) ? {\n        ...propValue\n      } : propValue\n    });\n  }\n  attrsList.forEach(attr => {\n    const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n    if (moduleParam) {\n      const parentObjName = attrToProp(moduleParam);\n      const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n      if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n      if (passedParams[parentObjName] === true) {\n        passedParams[parentObjName] = {\n          enabled: true\n        };\n      }\n      passedParams[parentObjName][subObjName] = formatValue(attr.value);\n    } else {\n      const name = attrToProp(attr.name);\n      if (!allowedParams.includes(name)) return;\n      const value = formatValue(attr.value);\n      if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n        if (passedParams[name].constructor !== Object) {\n          passedParams[name] = {};\n        }\n        passedParams[name].enabled = !!value;\n      } else {\n        passedParams[name] = value;\n      }\n    }\n  });\n  extend(params, passedParams);\n  if (params.navigation) {\n    params.navigation = {\n      prevEl: '.swiper-button-prev',\n      nextEl: '.swiper-button-next',\n      ...(params.navigation !== true ? params.navigation : {})\n    };\n  } else if (params.navigation === false) {\n    delete params.navigation;\n  }\n  if (params.scrollbar) {\n    params.scrollbar = {\n      el: '.swiper-scrollbar',\n      ...(params.scrollbar !== true ? params.scrollbar : {})\n    };\n  } else if (params.scrollbar === false) {\n    delete params.scrollbar;\n  }\n  if (params.pagination) {\n    params.pagination = {\n      el: '.swiper-pagination',\n      ...(params.pagination !== true ? params.pagination : {})\n    };\n  } else if (params.pagination === false) {\n    delete params.pagination;\n  }\n  return {\n    params,\n    passedParams\n  };\n}\n\nexport { getParams as g };\n", "/**\n * Swiper Custom Element 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>\n    `;\nconst addStyle = (shadowRoot, styles) => {\n  if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n    const styleSheet = new CSSStyleSheet();\n    styleSheet.replaceSync(styles);\n    shadowRoot.adoptedStyleSheets = [styleSheet];\n  } else {\n    const style = document.createElement('style');\n    style.rel = 'stylesheet';\n    style.textContent = styles;\n    shadowRoot.appendChild(style);\n  }\n};\nclass SwiperContainer extends ClassToExtend {\n  constructor() {\n    super();\n    this.attachShadow({\n      mode: 'open'\n    });\n  }\n  static get nextButtonSvg() {\n    return arrowSvg;\n  }\n  static get prevButtonSvg() {\n    return arrowSvg.replace('/></svg>', ' transform-origin=\"center\" transform=\"rotate(180)\"/></svg>');\n  }\n  cssStyles() {\n    return [SwiperCSS,\n    // eslint-disable-line\n    ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n  }\n  cssLinks() {\n    return this.injectStylesUrls || [];\n  }\n  calcSlideSlots() {\n    const currentSideSlots = this.slideSlots || 0;\n    // slide slots\n    const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n      return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n    });\n    this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n    if (!this.rendered) return;\n    if (this.slideSlots > currentSideSlots) {\n      for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n        const slideEl = document.createElement('swiper-slide');\n        slideEl.setAttribute('part', `slide slide-${i + 1}`);\n        const slotEl = document.createElement('slot');\n        slotEl.setAttribute('name', `slide-${i + 1}`);\n        slideEl.appendChild(slotEl);\n        this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n      }\n    } else if (this.slideSlots < currentSideSlots) {\n      const slides = this.swiper.slides;\n      for (let i = slides.length - 1; i >= 0; i -= 1) {\n        if (i > this.slideSlots) {\n          slides[i].remove();\n        }\n      }\n    }\n  }\n  render() {\n    if (this.rendered) return;\n    this.calcSlideSlots();\n\n    // local styles\n    let localStyles = this.cssStyles();\n    if (this.slideSlots > 0) {\n      localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n    }\n    if (localStyles.length) {\n      addStyle(this.shadowRoot, localStyles);\n    }\n    this.cssLinks().forEach(url => {\n      const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n      if (linkExists) return;\n      const linkEl = document.createElement('link');\n      linkEl.rel = 'stylesheet';\n      linkEl.href = url;\n      this.shadowRoot.appendChild(linkEl);\n    });\n    // prettier-ignore\n    const el = document.createElement('div');\n    el.classList.add('swiper');\n    el.part = 'container';\n\n    // prettier-ignore\n    el.innerHTML = `\n      <slot name=\"container-start\"></slot>\n      <div class=\"swiper-wrapper\" part=\"wrapper\">\n        <slot></slot>\n        ${Array.from({\n      length: this.slideSlots\n    }).map((_, index) => `\n        <swiper-slide part=\"slide slide-${index}\">\n          <slot name=\"slide-${index}\"></slot>\n        </swiper-slide>\n        `).join('')}\n      </div>\n      <slot name=\"container-end\"></slot>\n      ${needsNavigation(this.passedParams) ? `\n        <div part=\"button-prev\" class=\"swiper-button-prev\">${this.constructor.prevButtonSvg}</div>\n        <div part=\"button-next\" class=\"swiper-button-next\">${this.constructor.nextButtonSvg}</div>\n      ` : ''}\n      ${needsPagination(this.passedParams) ? `\n        <div part=\"pagination\" class=\"swiper-pagination\"></div>\n      ` : ''}\n      ${needsScrollbar(this.passedParams) ? `\n        <div part=\"scrollbar\" class=\"swiper-scrollbar\"></div>\n      ` : ''}\n    `;\n    this.shadowRoot.appendChild(el);\n    this.rendered = true;\n  }\n  initialize() {\n    var _this = this;\n    if (this.initialized) return;\n    this.initialized = true;\n    const {\n      params: swiperParams,\n      passedParams\n    } = getParams(this);\n    this.swiperParams = swiperParams;\n    this.passedParams = passedParams;\n    delete this.swiperParams.init;\n    this.render();\n\n    // eslint-disable-next-line\n    this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n      ...(swiperParams.virtual ? {} : {\n        observer: true,\n        observeSlideChildren: this.slideSlots > 0\n      }),\n      ...swiperParams,\n      touchEventsTarget: 'container',\n      onAny: function (name) {\n        if (name === 'observerUpdate') {\n          _this.calcSlideSlots();\n        }\n        const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        const event = new CustomEvent(eventName, {\n          detail: args,\n          bubbles: name !== 'hashChange',\n          cancelable: true\n        });\n        _this.dispatchEvent(event);\n      }\n    });\n  }\n  connectedCallback() {\n    if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n      return;\n    }\n    if (this.init === false || this.getAttribute('init') === 'false') {\n      return;\n    }\n    this.initialize();\n  }\n  disconnectedCallback() {\n    if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n      return;\n    }\n    if (this.swiper && this.swiper.destroy) {\n      this.swiper.destroy();\n    }\n    this.initialized = false;\n  }\n  updateSwiperOnPropChange(propName, propValue) {\n    const {\n      params: swiperParams,\n      passedParams\n    } = getParams(this, propName, propValue);\n    this.passedParams = passedParams;\n    this.swiperParams = swiperParams;\n    updateSwiper({\n      swiper: this.swiper,\n      passedParams: this.passedParams,\n      changedParams: [attrToProp(propName)],\n      ...(propName === 'navigation' && passedParams[propName] ? {\n        prevEl: '.swiper-button-prev',\n        nextEl: '.swiper-button-next'\n      } : {}),\n      ...(propName === 'pagination' && passedParams[propName] ? {\n        paginationEl: '.swiper-pagination'\n      } : {}),\n      ...(propName === 'scrollbar' && passedParams[propName] ? {\n        scrollbarEl: '.swiper-scrollbar'\n      } : {})\n    });\n  }\n  attributeChangedCallback(attr, prevValue, newValue) {\n    if (!this.initialized) return;\n    if (prevValue === 'true' && newValue === null) {\n      newValue = false;\n    }\n    this.updateSwiperOnPropChange(attr, newValue);\n  }\n  static get observedAttributes() {\n    const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n    return attrs;\n  }\n}\nparamsList.forEach(paramName => {\n  if (paramName === 'init') return;\n  paramName = paramName.replace('_', '');\n  Object.defineProperty(SwiperContainer.prototype, paramName, {\n    configurable: true,\n    get() {\n      return (this.passedParams || {})[paramName];\n    },\n    set(value) {\n      if (!this.passedParams) this.passedParams = {};\n      this.passedParams[paramName] = value;\n      if (!this.initialized) return;\n      this.updateSwiperOnPropChange(paramName, value);\n    }\n  });\n});\nclass SwiperSlide extends ClassToExtend {\n  constructor() {\n    super();\n    this.attachShadow({\n      mode: 'open'\n    });\n  }\n  render() {\n    const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n    addStyle(this.shadowRoot, SwiperSlideCSS);\n    this.shadowRoot.appendChild(document.createElement('slot'));\n    if (lazy) {\n      const lazyDiv = document.createElement('div');\n      lazyDiv.classList.add('swiper-lazy-preloader');\n      lazyDiv.part.add('preloader');\n      this.shadowRoot.appendChild(lazyDiv);\n    }\n  }\n  initialize() {\n    this.render();\n  }\n  connectedCallback() {\n    this.initialize();\n  }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n  if (typeof window === 'undefined') return;\n  if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n  if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n  window.SwiperElementRegisterParams = params => {\n    paramsList.push(...params);\n  };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n", "// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nregister();\n\n\n\nfunction initSwiper(swiperEl) {\n  const app = this;\n  const $swiperEl = $(swiperEl);\n  if ($swiperEl.length === 0) return;\n  const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n  if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n  let initialSlide;\n  let params = {};\n  let isTabs;\n  let isRoutableTabs;\n  if ($swiperEl.hasClass('tabs')) {\n    initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n    isTabs = true;\n    isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n  }\n  if ($swiperEl.attr('data-swiper')) {\n    params = JSON.parse($swiperEl.attr('data-swiper'));\n  } else if ($swiperEl[0].f7SwiperParams) {\n    params = $swiperEl[0].f7SwiperParams;\n  } else {\n    params = $swiperEl.dataset();\n    Object.keys(params).forEach(key => {\n      const value = params[key];\n      if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n        try {\n          params[key] = JSON.parse(value);\n        } catch (e) {\n          // not JSON\n        }\n      }\n    });\n  }\n  if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n    params.initialSlide = initialSlide;\n  }\n  const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n  if (isElement) {\n    swiper.slideTo(initialSlide, 0);\n  }\n  function updateSwiper() {\n    swiper.update();\n  }\n  const $tabEl = $swiperEl.parents('.tab').filter(tabEl => {\n    return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n  }).eq(0);\n  $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n  $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n  if ($tabEl && $tabEl.length) {\n    $tabEl.on('tab:show', updateSwiper);\n  }\n  swiper.on('beforeDestroy', () => {\n    $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n    $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n    if ($tabEl && $tabEl.length) {\n      $tabEl.off('tab:show', updateSwiper);\n    }\n  });\n  if (isTabs) {\n    swiper.on('slideChange', () => {\n      if (isRoutableTabs) {\n        let view = app.views.get($swiperEl.parents('.view'));\n        if (!view) view = app.views.main;\n        const router = view.router;\n        const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n        if (tabRouteUrl) {\n          setTimeout(() => {\n            router.navigate(tabRouteUrl);\n          }, 0);\n        }\n      } else {\n        app.tab.show({\n          tabEl: $(swiper.slides).eq(swiper.activeIndex)\n        });\n      }\n    });\n  }\n}\nexport default {\n  name: 'swiper',\n  static: {\n    Swiper\n  },\n  create() {\n    const app = this;\n    app.swiper = ConstructorMethods({\n      defaultSelector: '.swiper',\n      constructor: Swiper,\n      domProp: 'swiper'\n    });\n  },\n  on: {\n    pageMounted(page) {\n      const app = this;\n      page.$el.find('swiper-container.tabs').each(swiperEl => {\n        initSwiper.call(app, swiperEl);\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('swiper-container.tabs').each(swiperEl => {\n        initSwiper.call(app, swiperEl);\n      });\n    },\n    pageReinit(page) {\n      const app = this;\n      page.$el.find('swiper-container.tabs').each(swiperEl => {\n        const swiper = app.swiper.get(swiperEl);\n        if (swiper && swiper.update) swiper.update();\n      });\n    },\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n        initSwiper.call(app, swiperEl);\n      });\n    },\n    tabShow(tabEl) {\n      const app = this;\n      $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n        const swiper = app.swiper.get(swiperEl);\n        if (swiper && swiper.update) swiper.update();\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      const app = this;\n      $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n        app.swiper.destroy(swiperEl);\n      });\n    }\n  }\n};", "/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass PhotoBrowser extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const pb = this;\n    pb.app = app;\n    const defaults = extend({\n      on: {}\n    }, app.params.photoBrowser);\n\n    // Extend defaults with modules params\n    pb.useModulesParams(defaults);\n    pb.params = extend(defaults, params);\n    extend(pb, {\n      exposed: false,\n      opened: false,\n      activeIndex: pb.params.swiper.initialSlide,\n      url: pb.params.url,\n      swipeToClose: {\n        allow: true,\n        isTouched: false,\n        diff: undefined,\n        start: undefined,\n        current: undefined,\n        started: false,\n        activeSlide: undefined,\n        timeStart: undefined\n      }\n    });\n\n    // Install Modules\n    pb.useModules();\n\n    // Init\n    pb.init();\n  }\n  get view() {\n    const {\n      params,\n      app\n    } = this;\n    return params.view || app.views.main;\n  }\n  onSlideChange(swiper) {\n    const pb = this;\n    pb.activeIndex = swiper.activeIndex;\n    let current = swiper.activeIndex + 1;\n    let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n    if (swiper.params.loop) {\n      total -= 2;\n      current -= swiper.loopedSlides;\n      if (current < 1) current = total + current;\n      if (current > total) current -= total;\n    }\n    const $activeSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : $(swiper.slides).eq(swiper.activeIndex);\n    const $previousSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`) : $(swiper.slides).eq(swiper.previousIndex);\n    let $currentEl = pb.$el.find('.photo-browser-current');\n    let $totalEl = pb.$el.find('.photo-browser-total');\n    let navbarEl;\n    if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n      navbarEl = pb.app.navbar.getElByPage(pb.$el);\n      if (navbarEl) {\n        $currentEl = $(navbarEl).find('.photo-browser-current');\n        $totalEl = $(navbarEl).find('.photo-browser-total');\n      }\n    }\n    if ($currentEl.length && $totalEl.length) {\n      $currentEl.text(current);\n      $totalEl.text(total);\n      if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n      if (navbarEl) {\n        pb.app.navbar.size(navbarEl);\n      }\n    }\n\n    // Update captions\n    if (pb.captions.length > 0) {\n      const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n      pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n      pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n    }\n\n    // Stop Video\n    const previousSlideVideo = $previousSlideEl.find('video');\n    if (previousSlideVideo.length > 0) {\n      if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n    }\n  }\n  onTouchStart() {\n    const pb = this;\n    const swipeToClose = pb.swipeToClose;\n    if (!swipeToClose.allow) return;\n    swipeToClose.isTouched = true;\n  }\n  onTouchMove(e) {\n    const pb = this;\n    const swipeToClose = pb.swipeToClose;\n    if (!swipeToClose.isTouched) return;\n    if (!swipeToClose.started) {\n      swipeToClose.started = true;\n      swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (pb.params.virtualSlides) {\n        swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n      } else {\n        swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n      }\n      swipeToClose.timeStart = now();\n    }\n    e.preventDefault();\n    swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n    swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n    pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n  }\n  onTouchEnd() {\n    const pb = this;\n    const swipeToClose = pb.swipeToClose;\n    swipeToClose.isTouched = false;\n    if (!swipeToClose.started) {\n      swipeToClose.started = false;\n      return;\n    }\n    swipeToClose.started = false;\n    swipeToClose.allow = false;\n    const diff = Math.abs(swipeToClose.diff);\n    const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n    if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n      nextTick(() => {\n        if (pb.$el) {\n          if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');\n        }\n        pb.emit('local::swipeToClose', pb);\n        pb.$el.transform('').transition('');\n        pb.close();\n        swipeToClose.allow = true;\n      });\n      return;\n    }\n    if (diff !== 0) {\n      pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n        swipeToClose.allow = true;\n        pb.$el.removeClass('photo-browser-transitioning');\n      });\n    } else {\n      swipeToClose.allow = true;\n    }\n    nextTick(() => {\n      pb.$el.transform('').transition('');\n    });\n  }\n\n  // Render Functions\n  renderNavbar() {\n    const pb = this;\n    if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n    const iconsColor = pb.params.iconsColor;\n    const pageBackLinkText = pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n    const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n    const isPopup = pb.params.type !== 'page';\n    return $jsx(\"div\", {\n      class: `navbar navbar-photo-browser ${pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''}`\n    }, $jsx(\"div\", {\n      class: \"navbar-bg\"\n    }), $jsx(\"div\", {\n      class: \"navbar-inner navbar-inner-centered-title sliding\"\n    }, !isPopup && $jsx(\"div\", {\n      class: \"left\"\n    }, $jsx(\"a\", {\n      class: `link ${!pageBackLinkText ? 'icon-only' : ''} back`\n    }, $jsx(\"i\", {\n      class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n    }), pageBackLinkText && $jsx(\"span\", null, pageBackLinkText))), renderNavbarCount && $jsx(\"div\", {\n      class: \"title\"\n    }, $jsx(\"span\", {\n      class: \"photo-browser-current\"\n    }), $jsx(\"span\", {\n      class: \"photo-browser-of\"\n    }, pb.params.navbarOfText), $jsx(\"span\", {\n      class: \"photo-browser-total\"\n    })), isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link popup-close\",\n      \"data-popup\": \".photo-browser-popup\"\n    }, pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && $jsx(\"i\", null, $jsx(\"svg\", {\n      xmlns: \"http://www.w3.org/2000/svg\",\n      width: \"56\",\n      height: \"56\",\n      viewBox: \"0 0 56 56\"\n    }, $jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n    }))), pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && $jsx(\"i\", null, $jsx(\"svg\", {\n      xmlns: \"http://www.w3.org/2000/svg\",\n      height: \"24px\",\n      viewBox: \"0 0 24 24\",\n      width: \"24px\",\n      fill: \"currentColor\"\n    }, $jsx(\"path\", {\n      d: \"M0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), $jsx(\"path\", {\n      d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"\n    }))), pb.params.popupCloseLinkText && $jsx(\"span\", null, pb.params.popupCloseLinkText)))));\n  }\n  renderToolbar() {\n    const pb = this;\n    if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n    const iconsColor = pb.params.iconsColor;\n    return $jsx(\"div\", {\n      class: \"toolbar toolbar-bottom tabbar\"\n    }, $jsx(\"div\", {\n      class: \"toolbar-inner\"\n    }, $jsx(\"a\", {\n      class: \"link photo-browser-prev\"\n    }, $jsx(\"i\", {\n      class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n    })), $jsx(\"a\", {\n      class: \"link photo-browser-next\"\n    }, $jsx(\"i\", {\n      class: `icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`\n    }))));\n  }\n  renderThumbs() {\n    const pb = this;\n    return $jsx(\"div\", {\n      class: \"toolbar toolbar-bottom photo-browser-thumbs\"\n    }, $jsx(\"div\", {\n      class: \"swiper\"\n    }, $jsx(\"div\", {\n      class: \"swiper-wrapper\"\n    }, pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index)))));\n  }\n  renderCaption(caption, index) {\n    const pb = this;\n    if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n    return $jsx(\"div\", {\n      class: \"photo-browser-caption\",\n      \"data-caption-index\": index\n    }, caption);\n  }\n  renderObject(photo, index) {\n    const pb = this;\n    if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n    return $jsx(\"div\", {\n      class: \"photo-browser-slide photo-browser-object-slide swiper-slide\",\n      \"data-swiper-slide-index\": index\n    }, photo.html ? photo.html : photo);\n  }\n  renderLazyPhoto(photo, index) {\n    const pb = this;\n    if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n    return $jsx(\"div\", {\n      class: \"photo-browser-slide photo-browser-slide-lazy swiper-slide\",\n      \"data-swiper-slide-index\": index\n    }, $jsx(\"div\", {\n      class: \"swiper-lazy-preloader\"\n    }), $jsx(\"span\", {\n      class: \"swiper-zoom-container\"\n    }, $jsx(\"img\", {\n      loading: \"lazy\",\n      src: photo.url ? photo.url : photo\n    })));\n  }\n  renderPhoto(photo, index) {\n    const pb = this;\n    if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n    return $jsx(\"div\", {\n      class: \"photo-browser-slide swiper-slide\",\n      \"data-swiper-slide-index\": index\n    }, $jsx(\"span\", {\n      class: \"swiper-zoom-container\"\n    }, $jsx(\"img\", {\n      src: photo.url ? photo.url : photo\n    })));\n  }\n  renderThumb(thumb, index) {\n    const pb = this;\n    const url = typeof thumb === 'string' ? thumb : thumb.url;\n    if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n    return $jsx(\"div\", {\n      class: \"photo-browser-thumbs-slide swiper-slide\",\n      \"data-swiper-slide-index\": index\n    }, url && $jsx(\"img\", {\n      src: url,\n      loading: \"lazy\"\n    }));\n  }\n  render() {\n    const pb = this;\n    if (pb.params.render) return pb.params.render.call(pb, pb.params);\n    return $jsx(\"div\", {\n      class: `photo-browser photo-browser-${pb.params.theme}`\n    }, $jsx(\"div\", {\n      class: \"view\"\n    }, $jsx(\"div\", {\n      class: `page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}`,\n      \"data-name\": \"photo-browser-page\"\n    }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs(), $jsx(\"div\", {\n      class: `photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}`\n    }, pb.params.photos.map((photo, index) => {\n      if (photo.caption) return pb.renderCaption(photo.caption, index);\n      return '';\n    })), $jsx(\"div\", {\n      class: \"photo-browser-swiper-container swiper\"\n    }, $jsx(\"div\", {\n      class: \"photo-browser-swiper-wrapper swiper-wrapper\"\n    }, !pb.params.virtualSlides && pb.params.photos.map((photo, index) => {\n      if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n        return pb.renderObject(photo, index);\n      }\n      if (pb.params.lazy === true) {\n        return pb.renderLazyPhoto(photo, index);\n      }\n      return pb.renderPhoto(photo, index);\n    }))))));\n  }\n  renderStandalone() {\n    const pb = this;\n    if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n    const standaloneHtml = `<div class=\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\">${pb.render()}</div>`;\n    return standaloneHtml;\n  }\n  renderPage() {\n    const pb = this;\n    if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n    const pageHtml = pb.render();\n    return pageHtml;\n  }\n  renderPopup() {\n    const pb = this;\n    if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n    const popupHtml = `<div class=\"popup photo-browser-popup\">${pb.render()}</div>`;\n    return popupHtml;\n  }\n\n  // Callbacks\n  onOpen(type, el) {\n    const pb = this;\n    const app = pb.app;\n    const $el = $(el);\n    $el[0].f7PhotoBrowser = pb;\n    pb.$el = $el;\n    pb.el = $el[0];\n    pb.openedIn = type;\n    pb.opened = true;\n    pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n    pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n    pb.slides = pb.$el.find('.photo-browser-slide');\n    pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n    pb.captions = pb.$el.find('.photo-browser-caption');\n    const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n    // Init Swiper\n    let clickTimeout;\n    let preventThumbsSlide;\n    let preventMainSlide;\n    const initialSlide = pb.activeIndex;\n    const swiperParams = extend({}, pb.params.swiper, {\n      initialSlide,\n      // cssMode:\n      //   typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n      //     ? true\n      //     : pb.params.swiper.cssMode,\n      on: {\n        click(e) {\n          clearTimeout(clickTimeout);\n          if (pb.params.exposition) {\n            clickTimeout = setTimeout(() => {\n              pb.expositionToggle();\n            }, 350);\n          }\n          pb.emit('local::tap', e);\n          pb.emit('local::click', e);\n        },\n        doubleClick(e) {\n          clearTimeout(clickTimeout);\n          pb.emit('local::doubleTap', e);\n          pb.emit('local::doubleClick', e);\n        },\n        slideChange() {\n          const swiper = this;\n          if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n            preventThumbsSlide = true;\n            pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n            setTimeout(() => {\n              preventThumbsSlide = false;\n            });\n          }\n          pb.onSlideChange(swiper);\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          pb.emit('local::slideChange', ...args);\n        },\n        transitionStart() {\n          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            args[_key2] = arguments[_key2];\n          }\n          pb.emit('local::transitionStart', ...args);\n        },\n        transitionEnd() {\n          for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n            args[_key3] = arguments[_key3];\n          }\n          pb.emit('local::transitionEnd', ...args);\n        },\n        slideChangeTransitionStart() {\n          const swiper = this;\n          pb.onSlideChange(swiper);\n          for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n            args[_key4] = arguments[_key4];\n          }\n          pb.emit('local::slideChangeTransitionStart', ...args);\n        },\n        slideChangeTransitionEnd() {\n          for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n            args[_key5] = arguments[_key5];\n          }\n          pb.emit('local::slideChangeTransitionEnd', ...args);\n        }\n      }\n    });\n    if (pb.params.swipeToClose && pb.params.type !== 'page') {\n      extend(swiperParams.on, {\n        touchStart(swiper, e) {\n          pb.onTouchStart(e);\n          pb.emit('local::touchStart', e);\n        },\n        touchMoveOpposite(swiper, e) {\n          pb.onTouchMove(e);\n          pb.emit('local::touchMoveOpposite', e);\n        },\n        touchEnd(swiper, e) {\n          pb.onTouchEnd(e);\n          pb.emit('local::touchEnd', e);\n        }\n      });\n    }\n    if (pb.params.virtualSlides) {\n      extend(swiperParams, {\n        virtual: {\n          slides: pb.params.photos,\n          renderSlide(photo, index) {\n            if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n              return pb.renderObject(photo, index);\n            }\n            if (pb.params.lazy === true) {\n              return pb.renderLazyPhoto(photo, index);\n            }\n            return pb.renderPhoto(photo, index);\n          }\n        }\n      });\n    }\n    const window = getWindow();\n    pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams) : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n    if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n      pb.onSlideChange(pb.swiper);\n    }\n    if (hasThumbs) {\n      const thumbsSwiperParams = {\n        el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n        slidesPerView: 'auto',\n        centeredSlides: true,\n        spaceBetween: 4,\n        watchSlidesProgress: true,\n        initialSlide,\n        on: {\n          touchMove() {\n            preventMainSlide = true;\n          },\n          touchEnd() {\n            preventMainSlide = false;\n          },\n          slideChange(s) {\n            if (preventThumbsSlide) return;\n            pb.swiper.slideTo(s.activeIndex, 0);\n          },\n          click(s) {\n            if (!s.clickedSlide) return;\n            const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n            s.slideTo(index, 0);\n          }\n        }\n      };\n      pb.thumbsSwiper = app.swiper ? app.swiper.create(thumbsSwiperParams) : new window.Swiper(thumbsSwiperParams);\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:open');\n    }\n    pb.emit('local::open photoBrowserOpen', pb);\n  }\n  onOpened() {\n    const pb = this;\n    if (pb.$el && pb.params.type === 'standalone') {\n      pb.$el.css('animation', 'none');\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:opened');\n    }\n    pb.emit('local::opened photoBrowserOpened', pb);\n  }\n  onClose() {\n    const pb = this;\n    if (pb.destroyed) return;\n\n    // Destroy Swiper\n    if (pb.swiper && pb.swiper.destroy) {\n      pb.swiper.destroy(true, false);\n      pb.swiper = null;\n      delete pb.swiper;\n    }\n    if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n      pb.thumbsSwiper.destroy(true, false);\n      pb.thumbsSwiper = null;\n      delete pb.thumbsSwiper;\n    }\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:close');\n    }\n    pb.emit('local::close photoBrowserClose', pb);\n  }\n  onClosed() {\n    const pb = this;\n    if (pb.destroyed) return;\n    pb.opened = false;\n    pb.$el = null;\n    pb.el = null;\n    delete pb.$el;\n    delete pb.el;\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:closed');\n    }\n    pb.emit('local::closed photoBrowserClosed', pb);\n  }\n\n  // Open\n  openPage() {\n    const pb = this;\n    if (pb.opened) return pb;\n    const pageHtml = pb.renderPage();\n    pb.view.router.navigate({\n      url: pb.url,\n      route: {\n        content: pageHtml,\n        path: pb.url,\n        on: {\n          pageBeforeIn(e, page) {\n            pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n            pb.onOpen('page', page.el);\n          },\n          pageAfterIn(e, page) {\n            pb.onOpened('page', page.el);\n          },\n          pageBeforeOut(e, page) {\n            pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n            pb.onClose('page', page.el);\n          },\n          pageAfterOut(e, page) {\n            pb.onClosed('page', page.el);\n          }\n        }\n      }\n    });\n    return pb;\n  }\n  openStandalone() {\n    const pb = this;\n    if (pb.opened) return pb;\n    const standaloneHtml = pb.renderStandalone();\n    const popupParams = {\n      backdrop: false,\n      content: standaloneHtml,\n      on: {\n        popupOpen(popup) {\n          pb.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          pb.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          pb.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          pb.onClosed('popup', popup.el);\n        }\n      }\n    };\n    if (pb.params.routableModals && pb.view) {\n      pb.view.router.navigate({\n        url: pb.url,\n        route: {\n          path: pb.url,\n          popup: popupParams\n        }\n      });\n    } else {\n      pb.modal = pb.app.popup.create(popupParams).open();\n    }\n    return pb;\n  }\n  openPopup() {\n    const pb = this;\n    if (pb.opened) return pb;\n    const popupHtml = pb.renderPopup();\n    const popupParams = {\n      content: popupHtml,\n      push: pb.params.popupPush,\n      closeByBackdropClick: pb.params.closeByBackdropClick,\n      on: {\n        popupOpen(popup) {\n          pb.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          pb.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          pb.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          pb.onClosed('popup', popup.el);\n        }\n      }\n    };\n    if (pb.params.routableModals && pb.view) {\n      pb.view.router.navigate({\n        url: pb.url,\n        route: {\n          path: pb.url,\n          popup: popupParams\n        }\n      });\n    } else {\n      pb.modal = pb.app.popup.create(popupParams).open();\n    }\n    return pb;\n  }\n\n  // Exposition\n  expositionEnable() {\n    const pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.addClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n    if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n    pb.exposed = true;\n    return pb;\n  }\n  expositionDisable() {\n    const pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.removeClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n    if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n    pb.exposed = false;\n    return pb;\n  }\n  expositionToggle() {\n    const pb = this;\n    if (pb.params.type === 'page') {\n      pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n    }\n    if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n    if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n    pb.exposed = !pb.exposed;\n    return pb;\n  }\n  open(index) {\n    const pb = this;\n    const type = pb.params.type;\n    if (pb.opened) {\n      if (pb.swiper && typeof index !== 'undefined') {\n        pb.swiper.slideTo(parseInt(index, 10));\n      }\n      return pb;\n    }\n    if (typeof index !== 'undefined') {\n      pb.activeIndex = index;\n    }\n    if (type === 'standalone') {\n      pb.openStandalone();\n    }\n    if (type === 'page') {\n      pb.openPage();\n    }\n    if (type === 'popup') {\n      pb.openPopup();\n    }\n    return pb;\n  }\n  close() {\n    const pb = this;\n    if (!pb.opened) return pb;\n    if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {\n      pb.view.router.back();\n    } else {\n      pb.modal.once('modalClosed', () => {\n        nextTick(() => {\n          if (pb.destroyed) return;\n          pb.modal.destroy();\n          delete pb.modal;\n        });\n      });\n      pb.modal.close();\n    }\n    return pb;\n  }\n  // eslint-disable-next-line\n  init() {}\n  destroy() {\n    let pb = this;\n    pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n    if (pb.$el) {\n      pb.$el.trigger('photobrowser:beforedestroy');\n      pb.$el[0].f7PhotoBrowser = null;\n      delete pb.$el[0].f7PhotoBrowser;\n    }\n    deleteProps(pb);\n    pb.destroyed = true;\n    pb = null;\n  }\n}\nexport default PhotoBrowser;", "import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'photoBrowser',\n  params: {\n    photoBrowser: {\n      photos: [],\n      thumbs: [],\n      exposition: true,\n      expositionHideCaptions: false,\n      type: 'standalone',\n      navbar: true,\n      toolbar: true,\n      theme: 'light',\n      captionsTheme: undefined,\n      iconsColor: undefined,\n      popupPush: false,\n      swipeToClose: true,\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: undefined,\n      popupCloseLinkIcon: true,\n      navbarOfText: 'of',\n      navbarShowCount: undefined,\n      view: undefined,\n      url: 'photos/',\n      routableModals: false,\n      virtualSlides: true,\n      lazy: true,\n      closeByBackdropClick: true,\n      renderNavbar: undefined,\n      renderToolbar: undefined,\n      renderCaption: undefined,\n      renderObject: undefined,\n      renderLazyPhoto: undefined,\n      renderPhoto: undefined,\n      renderThumb: undefined,\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderStandalone: undefined,\n      swiper: {\n        cssMode: false,\n        initialSlide: 0,\n        spaceBetween: 20,\n        speed: 300,\n        loop: false,\n        keyboard: {\n          enabled: true\n        },\n        navigation: {\n          nextEl: '.photo-browser-next',\n          prevEl: '.photo-browser-prev'\n        },\n        zoom: {\n          enabled: true,\n          maxRatio: 3,\n          minRatio: 1\n        }\n      }\n    }\n  },\n  create() {\n    const app = this;\n    app.photoBrowser = ConstructorMethods({\n      defaultSelector: '.photo-browser-popup, .photo-browser-page',\n      constructor: PhotoBrowser,\n      app,\n      domProp: 'f7PhotoBrowser'\n    });\n  },\n  static: {\n    PhotoBrowser\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Notification extends Modal {\n  constructor(app, params) {\n    const extendedParams = extend({\n      on: {}\n    }, app.params.notification, params);\n\n    // Extends with open/close Modal methods;\n    super(app, extendedParams);\n    const notification = this;\n    notification.app = app;\n    notification.params = extendedParams;\n    const {\n      icon,\n      title,\n      titleRightText,\n      subtitle,\n      text,\n      closeButton,\n      closeTimeout,\n      cssClass,\n      closeOnClick\n    } = notification.params;\n    let $el;\n    if (!notification.params.el) {\n      // Find Element\n      const notificationHtml = notification.render({\n        icon,\n        title,\n        titleRightText,\n        subtitle,\n        text,\n        closeButton,\n        cssClass\n      });\n      $el = $(notificationHtml);\n    } else {\n      $el = $(notification.params.el);\n    }\n    if ($el && $el.length > 0 && $el[0].f7Modal) {\n      return $el[0].f7Modal;\n    }\n    if ($el.length === 0) {\n      return notification.destroy();\n    }\n    extend(notification, {\n      $el,\n      el: $el[0],\n      type: 'notification'\n    });\n    $el[0].f7Modal = notification;\n    if (closeButton) {\n      $el.find('.notification-close-button').on('click', () => {\n        notification.close();\n      });\n    }\n    $el.on('click', e => {\n      if (closeButton && $(e.target).closest('.notification-close-button').length) {\n        return;\n      }\n      notification.emit('local::click notificationClick', notification);\n      if (closeOnClick) notification.close();\n    });\n    notification.on('beforeDestroy', () => {\n      $el.off('click');\n    });\n\n    /* Touch Events */\n    let isTouched;\n    let isMoved;\n    let isScrolling;\n    let touchesDiff;\n    let touchStartTime;\n    let notificationHeight;\n    const touchesStart = {};\n    function handleTouchStart(e) {\n      if (isTouched) return;\n      isTouched = true;\n      isMoved = false;\n      isScrolling = undefined;\n      touchStartTime = now();\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      if (typeof isScrolling === 'undefined') {\n        isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n      }\n      if (isScrolling) {\n        isTouched = false;\n        return;\n      }\n      e.preventDefault();\n      if (!isMoved) {\n        notification.$el.removeClass('notification-transitioning');\n        notification.$el.transition(0);\n        notificationHeight = notification.$el[0].offsetHeight / 2;\n      }\n      isMoved = true;\n      touchesDiff = pageY - touchesStart.y;\n      let newTranslate = touchesDiff;\n      if (touchesDiff > 0) {\n        newTranslate = touchesDiff ** 0.8;\n      }\n      notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n    }\n    function handleTouchEnd() {\n      if (!isTouched || !isMoved) {\n        isTouched = false;\n        isMoved = false;\n        return;\n      }\n      isTouched = false;\n      isMoved = false;\n      if (touchesDiff === 0) {\n        return;\n      }\n      const timeDiff = now() - touchStartTime;\n      notification.$el.transition('');\n      notification.$el.addClass('notification-transitioning');\n      notification.$el.transform('');\n      if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {\n        notification.close();\n      }\n    }\n    function attachTouchEvents() {\n      notification.$el.on(app.touchEvents.start, handleTouchStart, {\n        passive: true\n      });\n      app.on('touchmove:active', handleTouchMove);\n      app.on('touchend:passive', handleTouchEnd);\n    }\n    function detachTouchEvents() {\n      notification.$el.off(app.touchEvents.start, handleTouchStart, {\n        passive: true\n      });\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n    }\n    let timeoutId;\n    function closeOnTimeout() {\n      timeoutId = nextTick(() => {\n        if (isTouched && isMoved) {\n          closeOnTimeout();\n          return;\n        }\n        notification.close();\n      }, closeTimeout);\n    }\n    notification.on('open', () => {\n      if (notification.params.swipeToClose) {\n        attachTouchEvents();\n      }\n      $('.notification.modal-in').each(openedEl => {\n        const notificationInstance = app.notification.get(openedEl);\n        if (openedEl !== notification.el && notificationInstance) {\n          notificationInstance.close();\n        }\n      });\n      if (closeTimeout) {\n        closeOnTimeout();\n      }\n    });\n    notification.on('close beforeDestroy', () => {\n      if (notification.params.swipeToClose) {\n        detachTouchEvents();\n      }\n      clearTimeout(timeoutId);\n    });\n    return notification;\n  }\n  render() {\n    const notification = this;\n    if (notification.params.render) return notification.params.render.call(notification, notification);\n    const {\n      icon,\n      title,\n      titleRightText,\n      subtitle,\n      text,\n      closeButton,\n      cssClass\n    } = notification.params;\n    return $jsx(\"div\", {\n      class: `notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`\n    }, $jsx(\"div\", {\n      class: \"notification-header\"\n    }, icon && $jsx(\"div\", {\n      class: \"notification-icon\"\n    }, icon), title && $jsx(\"div\", {\n      class: \"notification-title\"\n    }, title), titleRightText && $jsx(\"div\", {\n      class: \"notification-title-right-text\"\n    }, titleRightText), closeButton && $jsx(\"span\", {\n      class: \"notification-close-button\"\n    })), $jsx(\"div\", {\n      class: \"notification-content\"\n    }, subtitle && $jsx(\"div\", {\n      class: \"notification-subtitle\"\n    }, subtitle), text && $jsx(\"div\", {\n      class: \"notification-text\"\n    }, text)));\n  }\n}\nexport default Notification;", "import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n  name: 'notification',\n  static: {\n    Notification\n  },\n  create() {\n    const app = this;\n    app.notification = extend({}, ModalMethods({\n      app,\n      constructor: Notification,\n      defaultSelector: '.notification.modal-in'\n    }));\n  },\n  params: {\n    notification: {\n      icon: null,\n      title: null,\n      titleRightText: null,\n      subtitle: null,\n      text: null,\n      closeButton: false,\n      closeTimeout: null,\n      closeOnClick: false,\n      swipeToClose: true,\n      cssClass: null,\n      render: null,\n      containerEl: null\n    }\n  }\n};", "/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport { extend, id, nextTick, deleteProps, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Autocomplete extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const ac = this;\n    ac.app = app;\n    const device = getDevice();\n    const defaults = extend({\n      on: {}\n    }, app.params.autocomplete);\n\n    // Extend defaults with modules params\n    ac.useModulesParams(defaults);\n    ac.params = extend(defaults, params);\n    let $openerEl;\n    if (ac.params.openerEl) {\n      $openerEl = $(ac.params.openerEl);\n      if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n    }\n    let $inputEl;\n    if (ac.params.inputEl) {\n      $inputEl = $(ac.params.inputEl);\n      if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n    }\n    const uniqueId = id();\n    let url = params.url;\n    if (!url && $openerEl && $openerEl.length) {\n      if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {\n        url = $openerEl.find('a').attr('href');\n      }\n    }\n    if (!url || url === '#' || url === '') url = ac.params.url;\n    const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n    extend(ac, {\n      $openerEl,\n      openerEl: $openerEl && $openerEl[0],\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      id: uniqueId,\n      url,\n      value: ac.params.value || [],\n      inputType,\n      inputName: `${inputType}-${uniqueId}`,\n      $modalEl: undefined,\n      $dropdownEl: undefined\n    });\n    let previousQuery = '';\n    function onInputChange() {\n      let query = ac.$inputEl.val().trim();\n      if (!ac.params.source) return;\n      ac.params.source.call(ac, query, items => {\n        let itemsHTML = '';\n        const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n        ac.items = items;\n        let regExp;\n        if (ac.params.highlightMatches) {\n          query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n          regExp = new RegExp(`(${query})`, 'i');\n        }\n        let firstValue;\n        let firstItem;\n        for (let i = 0; i < limit; i += 1) {\n          const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n          const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n          if (i === 0) {\n            firstValue = itemValue;\n            firstItem = ac.items[i];\n          }\n          itemsHTML += ac.renderItem({\n            value: itemValue,\n            text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText\n          }, i);\n        }\n        if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n          itemsHTML += ac.renderItem({\n            placeholder: true,\n            text: ac.params.dropdownPlaceholderText\n          });\n        }\n        ac.$dropdownEl.find('ul').html(itemsHTML);\n        if (ac.params.typeahead) {\n          if (!firstValue || !firstItem) {\n            return;\n          }\n          if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n            return;\n          }\n          if (previousQuery.toLowerCase() === query.toLowerCase()) {\n            ac.value = [];\n            return;\n          }\n          if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n            previousQuery = query;\n            ac.value = [];\n            return;\n          }\n          $inputEl.val(firstValue);\n          $inputEl[0].setSelectionRange(query.length, firstValue.length);\n          const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n          if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n            ac.value = [firstItem];\n            ac.emit('local::change autocompleteChange', [firstItem]);\n          }\n        }\n        previousQuery = query;\n      });\n    }\n    function onPageInputChange() {\n      const inputEl = this;\n      const value = inputEl.value;\n      const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n      let item;\n      let itemValue;\n      let aValue;\n      if (isValues) {\n        if (ac.inputType === 'checkbox' && !inputEl.checked) {\n          for (let i = 0; i < ac.value.length; i += 1) {\n            aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n            if (aValue === value || aValue * 1 === value * 1) {\n              ac.value.splice(i, 1);\n            }\n          }\n          ac.updateValues();\n          ac.emit('local::change autocompleteChange', ac.value);\n        }\n        return;\n      }\n\n      // Find Related Item\n      for (let i = 0; i < ac.items.length; i += 1) {\n        itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n        if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n      }\n      if (ac.inputType === 'radio') {\n        ac.value = [item];\n      } else if (inputEl.checked) {\n        ac.value.push(item);\n      } else {\n        for (let i = 0; i < ac.value.length; i += 1) {\n          aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n          if (aValue === value || aValue * 1 === value * 1) {\n            ac.value.splice(i, 1);\n          }\n        }\n      }\n\n      // Update Values Block\n      ac.updateValues();\n\n      // On Select Callback\n      if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {\n        ac.emit('local::change autocompleteChange', ac.value);\n      }\n    }\n    function onHtmlClick(e) {\n      const $targetEl = $(e.target);\n      if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;\n      ac.close();\n    }\n    function onOpenerClick() {\n      ac.open();\n    }\n    function onInputFocus() {\n      ac.open();\n    }\n    function onInputBlur() {\n      if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n      setTimeout(() => {\n        ac.close();\n      }, 0);\n    }\n    function onResize() {\n      ac.positionDropdown();\n    }\n    function onKeyDown(e) {\n      if (!ac.opened) return;\n      if (e.keyCode === 27) {\n        // ESC\n        e.preventDefault();\n        ac.$inputEl.blur();\n        return;\n      }\n      if (e.keyCode === 13) {\n        // Enter\n        const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n        if ($selectedItemLabel.length) {\n          e.preventDefault();\n          $selectedItemLabel.trigger('click');\n          ac.$inputEl.blur();\n          return;\n        }\n        if (ac.params.typeahead) {\n          e.preventDefault();\n          ac.$inputEl.blur();\n        }\n        return;\n      }\n      if (e.keyCode !== 40 && e.keyCode !== 38) return;\n      e.preventDefault();\n      const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n      let $newItem;\n      if ($selectedItem.length) {\n        $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n        if (!$newItem.length) {\n          $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n        }\n      } else {\n        $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n      }\n      if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n      $selectedItem.removeClass('autocomplete-dropdown-selected');\n      $newItem.addClass('autocomplete-dropdown-selected');\n    }\n    function onDropdownClick() {\n      const $clickedEl = $(this);\n      let clickedItem;\n      for (let i = 0; i < ac.items.length; i += 1) {\n        const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n        const value = $clickedEl.attr('data-value');\n        if (itemValue === value || itemValue * 1 === value * 1) {\n          clickedItem = ac.items[i];\n        }\n      }\n      if (ac.params.updateInputValueOnSelect) {\n        ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n        ac.$inputEl.trigger('input change');\n      }\n      ac.value = [clickedItem];\n      ac.emit('local::change autocompleteChange', [clickedItem]);\n      ac.close();\n    }\n    ac.attachEvents = function attachEvents() {\n      if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n        ac.$openerEl.on('click', onOpenerClick);\n      }\n      if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n        ac.$inputEl.on('focus', onInputFocus);\n        ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n        if (device.android) {\n          $('html').on('click', onHtmlClick);\n        } else {\n          ac.$inputEl.on('blur', onInputBlur);\n        }\n        ac.$inputEl.on('keydown', onKeyDown);\n      }\n    };\n    ac.detachEvents = function attachEvents() {\n      if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n        ac.$openerEl.off('click', onOpenerClick);\n      }\n      if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n        ac.$inputEl.off('focus', onInputFocus);\n        ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n        if (device.android) {\n          $('html').off('click', onHtmlClick);\n        } else {\n          ac.$inputEl.off('blur', onInputBlur);\n        }\n        ac.$inputEl.off('keydown', onKeyDown);\n      }\n    };\n    ac.attachDropdownEvents = function attachDropdownEvents() {\n      ac.$dropdownEl.on('click', 'label', onDropdownClick);\n      app.on('resize', onResize);\n    };\n    ac.detachDropdownEvents = function detachDropdownEvents() {\n      ac.$dropdownEl.off('click', 'label', onDropdownClick);\n      app.off('resize', onResize);\n    };\n    ac.attachPageEvents = function attachPageEvents() {\n      ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n      if (ac.params.closeOnSelect && !ac.params.multiple) {\n        ac.$el.once('click', '.list label', () => {\n          nextTick(() => {\n            ac.close();\n          });\n        });\n      }\n    };\n    ac.detachPageEvents = function detachPageEvents() {\n      ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n    };\n\n    // Install Modules\n    ac.useModules();\n\n    // Init\n    ac.init();\n    return ac;\n  }\n  get view() {\n    const ac = this;\n    const {\n      $openerEl,\n      $inputEl,\n      app\n    } = ac;\n    let view;\n    if (ac.params.view) {\n      view = ac.params.view;\n    } else if ($openerEl || $inputEl) {\n      const $el = $openerEl || $inputEl;\n      view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n  positionDropdown() {\n    const ac = this;\n    const {\n      $inputEl,\n      app,\n      $dropdownEl\n    } = ac;\n    const $pageContentEl = $inputEl.parents('.page-content');\n    if ($pageContentEl.length === 0) return;\n    const inputOffset = $inputEl.offset();\n    const inputOffsetWidth = $inputEl[0].offsetWidth;\n    const inputOffsetHeight = $inputEl[0].offsetHeight;\n    const $listEl = $inputEl.parents('.list');\n    let $listParent;\n    $listEl.parents().each(parentEl => {\n      if ($listParent) return;\n      const $parentEl = $(parentEl);\n      if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n    });\n    const listOffset = $listEl.offset();\n    const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n    const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n    const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n    const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n    const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n    const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n    let paddingValue;\n    if ($listEl.length) {\n      paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n    }\n    $dropdownEl.css({\n      left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n      top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n      width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`\n    });\n    $dropdownEl.children('.autocomplete-dropdown-inner').css({\n      maxHeight: `${maxHeight}px`,\n      [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : ''\n    });\n  }\n  focus() {\n    const ac = this;\n    ac.$el.find('input[type=search]').focus();\n  }\n  source(query) {\n    const ac = this;\n    if (!ac.params.source) return;\n    const {\n      $el\n    } = ac;\n    ac.params.source.call(ac, query, items => {\n      let itemsHTML = '';\n      const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n      ac.items = items;\n      for (let i = 0; i < limit; i += 1) {\n        let selected = false;\n        const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n        for (let j = 0; j < ac.value.length; j += 1) {\n          const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n          if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n        }\n        itemsHTML += ac.renderItem({\n          value: itemValue,\n          text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n          inputType: ac.inputType,\n          id: ac.id,\n          inputName: ac.inputName,\n          selected\n        }, i);\n      }\n      $el.find('.autocomplete-found ul').html(itemsHTML);\n      if (items.length === 0) {\n        if (query.length !== 0) {\n          $el.find('.autocomplete-not-found').show();\n          $el.find('.autocomplete-found, .autocomplete-values').hide();\n        } else {\n          $el.find('.autocomplete-values').show();\n          $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n        }\n      } else {\n        $el.find('.autocomplete-found').show();\n        $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n      }\n    });\n  }\n  updateValues() {\n    const ac = this;\n    let valuesHTML = '';\n    for (let i = 0; i < ac.value.length; i += 1) {\n      valuesHTML += ac.renderItem({\n        value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n        text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n        inputType: ac.inputType,\n        id: ac.id,\n        inputName: `${ac.inputName}-checked}`,\n        selected: true\n      }, i);\n    }\n    ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n  }\n  preloaderHide() {\n    const ac = this;\n    if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n      ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n    } else {\n      $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n    }\n  }\n  preloaderShow() {\n    const ac = this;\n    if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n      ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n    } else {\n      $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n    }\n  }\n  renderPreloader() {\n    const ac = this;\n    const preloaders = {\n      iosPreloaderContent,\n      mdPreloaderContent\n    };\n    return $jsx(\"div\", {\n      class: `autocomplete-preloader preloader ${ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''}`\n    }, preloaders[`${ac.app.theme}PreloaderContent`] || '');\n  }\n  renderSearchbar() {\n    const ac = this;\n    if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n    return $jsx(\"form\", {\n      class: \"searchbar\"\n    }, $jsx(\"div\", {\n      class: \"searchbar-inner\"\n    }, $jsx(\"div\", {\n      class: \"searchbar-input-wrap\"\n    }, $jsx(\"input\", {\n      type: \"search\",\n      spellcheck: ac.params.searchbarSpellcheck || 'false',\n      placeholder: ac.params.searchbarPlaceholder\n    }), $jsx(\"i\", {\n      class: \"searchbar-icon\"\n    }), $jsx(\"span\", {\n      class: \"input-clear-button\"\n    })), ac.params.searchbarDisableButton && $jsx(\"span\", {\n      class: \"searchbar-disable-button\"\n    }, ac.params.searchbarDisableText)));\n  }\n  renderItem(item, index) {\n    const ac = this;\n    if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n    const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '&quot;') : item.value;\n    if (ac.params.openIn !== 'dropdown') {\n      return $jsx(\"li\", null, $jsx(\"label\", {\n        class: `item-${item.inputType} item-content`\n      }, $jsx(\"input\", {\n        type: item.inputType,\n        name: item.inputName,\n        value: itemValue,\n        _checked: item.selected\n      }), $jsx(\"i\", {\n        class: `icon icon-${item.inputType}`\n      }), $jsx(\"div\", {\n        class: \"item-inner\"\n      }, $jsx(\"div\", {\n        class: \"item-title\"\n      }, item.text))));\n    }\n    // Dropdown\n    if (!item.placeholder) {\n      return $jsx(\"li\", null, $jsx(\"label\", {\n        class: \"item-radio item-content\",\n        \"data-value\": itemValue\n      }, $jsx(\"div\", {\n        class: \"item-inner\"\n      }, $jsx(\"div\", {\n        class: \"item-title\"\n      }, item.text))));\n    }\n\n    // Dropwdown placeholder\n    return $jsx(\"li\", {\n      class: \"autocomplete-dropdown-placeholder\"\n    }, $jsx(\"label\", {\n      class: \"item-content\"\n    }, $jsx(\"div\", {\n      class: \"item-inner\"\n    }, $jsx(\"div\", {\n      class: \"item-title\"\n    }, item.text))));\n  }\n  renderNavbar() {\n    const ac = this;\n    if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n    let pageTitle = ac.params.pageTitle;\n    if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n      pageTitle = ac.$openerEl.find('.item-title').text().trim();\n    }\n    const inPopup = ac.params.openIn === 'popup';\n\n    // eslint-disable-next-line\n    const navbarLeft = inPopup ? ac.params.preloader && $jsx(\"div\", {\n      class: \"left\"\n    }, ac.renderPreloader()) : $jsx(\"div\", {\n      class: \"left sliding\"\n    }, $jsx(\"a\", {\n      class: \"link back\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-back\"\n    }), $jsx(\"span\", {\n      class: \"if-not-md\"\n    }, ac.params.pageBackLinkText)));\n    const navbarRight = inPopup ? $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link popup-close\",\n      \"data-popup\": \".autocomplete-popup\"\n    }, ac.params.popupCloseLinkText)) : ac.params.preloader && $jsx(\"div\", {\n      class: \"right\"\n    }, ac.renderPreloader());\n    return $jsx(\"div\", {\n      class: `navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n    }, $jsx(\"div\", {\n      class: \"navbar-bg\"\n    }), $jsx(\"div\", {\n      class: `navbar-inner ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n    }, navbarLeft, pageTitle && $jsx(\"div\", {\n      class: \"title sliding\"\n    }, pageTitle), navbarRight, $jsx(\"div\", {\n      class: \"subnavbar sliding\"\n    }, ac.renderSearchbar())));\n  }\n  renderDropdown() {\n    const ac = this;\n    if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n    return $jsx(\"div\", {\n      class: \"autocomplete-dropdown\"\n    }, $jsx(\"div\", {\n      class: \"autocomplete-dropdown-inner\"\n    }, $jsx(\"div\", {\n      class: `list no-safe-areas`\n    }, $jsx(\"ul\", null))), ac.params.preloader && ac.renderPreloader());\n  }\n  renderPage(inPopup) {\n    const ac = this;\n    if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n    return $jsx(\"div\", {\n      class: \"page page-with-subnavbar autocomplete-page\",\n      \"data-name\": \"autocomplete-page\"\n    }, ac.renderNavbar(inPopup), $jsx(\"div\", {\n      class: \"searchbar-backdrop\"\n    }), $jsx(\"div\", {\n      class: \"page-content\"\n    }, $jsx(\"div\", {\n      class: `list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''}`\n    }, $jsx(\"ul\", null)), $jsx(\"div\", {\n      class: \"list autocomplete-not-found\"\n    }, $jsx(\"ul\", null, $jsx(\"li\", {\n      class: \"item-content\"\n    }, $jsx(\"div\", {\n      class: \"item-inner\"\n    }, $jsx(\"div\", {\n      class: \"item-title\"\n    }, ac.params.notFoundText))))), $jsx(\"div\", {\n      class: \"list autocomplete-values\"\n    }, $jsx(\"ul\", null))));\n  }\n  renderPopup() {\n    const ac = this;\n    if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n    return $jsx(\"div\", {\n      class: \"popup autocomplete-popup\"\n    }, $jsx(\"div\", {\n      class: \"view\"\n    }, ac.renderPage(true), \";\"));\n  }\n  onOpen(type, el) {\n    const ac = this;\n    const app = ac.app;\n    const $el = $(el);\n    ac.$el = $el;\n    ac.el = $el[0];\n    ac.openedIn = type;\n    ac.opened = true;\n    if (ac.params.openIn === 'dropdown') {\n      ac.attachDropdownEvents();\n      ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n      ac.$inputEl.trigger('input');\n    } else {\n      // Init SB\n      let $searchbarEl = $el.find('.searchbar');\n      if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n        $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n      }\n      ac.searchbar = app.searchbar.create({\n        el: $searchbarEl,\n        backdropEl: $el.find('.searchbar-backdrop'),\n        customSearch: true,\n        on: {\n          search(sb, query) {\n            if (query.length === 0 && ac.searchbar.enabled) {\n              ac.searchbar.backdropShow();\n            } else {\n              ac.searchbar.backdropHide();\n            }\n            ac.source(query);\n          }\n        }\n      });\n\n      // Attach page events\n      ac.attachPageEvents();\n\n      // Update Values On Page Init\n      ac.updateValues();\n\n      // Source on load\n      if (ac.params.requestSourceOnOpen) ac.source('');\n    }\n    ac.emit('local::open autocompleteOpen', ac);\n  }\n  autoFocus() {\n    const ac = this;\n    if (ac.searchbar && ac.searchbar.$inputEl) {\n      ac.searchbar.$inputEl.focus();\n    }\n    return ac;\n  }\n  onOpened() {\n    const ac = this;\n    if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n      ac.autoFocus();\n    }\n    ac.emit('local::opened autocompleteOpened', ac);\n  }\n  onClose() {\n    const ac = this;\n    if (ac.destroyed) return;\n\n    // Destroy SB\n    if (ac.searchbar && ac.searchbar.destroy) {\n      ac.searchbar.destroy();\n      ac.searchbar = null;\n      delete ac.searchbar;\n    }\n    if (ac.params.openIn === 'dropdown') {\n      ac.detachDropdownEvents();\n      ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n    } else {\n      ac.detachPageEvents();\n    }\n    ac.emit('local::close autocompleteClose', ac);\n  }\n  onClosed() {\n    const ac = this;\n    if (ac.destroyed) return;\n    ac.opened = false;\n    ac.$el = null;\n    ac.el = null;\n    delete ac.$el;\n    delete ac.el;\n    ac.emit('local::closed autocompleteClosed', ac);\n  }\n  openPage() {\n    const ac = this;\n    if (ac.opened) return ac;\n    const pageHtml = ac.renderPage();\n    ac.view.router.navigate({\n      url: ac.url,\n      route: {\n        content: pageHtml,\n        path: ac.url,\n        on: {\n          pageBeforeIn(e, page) {\n            ac.onOpen('page', page.el);\n          },\n          pageAfterIn(e, page) {\n            ac.onOpened('page', page.el);\n          },\n          pageBeforeOut(e, page) {\n            ac.onClose('page', page.el);\n          },\n          pageAfterOut(e, page) {\n            ac.onClosed('page', page.el);\n          }\n        },\n        options: {\n          animate: ac.params.animate\n        }\n      }\n    });\n    return ac;\n  }\n  openPopup() {\n    const ac = this;\n    if (ac.opened) return ac;\n    const popupHtml = ac.renderPopup();\n    const popupParams = {\n      content: popupHtml,\n      animate: ac.params.animate,\n      push: ac.params.popupPush,\n      swipeToClose: ac.params.popupSwipeToClose,\n      on: {\n        popupOpen(popup) {\n          ac.onOpen('popup', popup.el);\n        },\n        popupOpened(popup) {\n          ac.onOpened('popup', popup.el);\n        },\n        popupClose(popup) {\n          ac.onClose('popup', popup.el);\n        },\n        popupClosed(popup) {\n          ac.onClosed('popup', popup.el);\n        }\n      }\n    };\n    if (ac.params.routableModals && ac.view) {\n      ac.view.router.navigate({\n        url: ac.url,\n        route: {\n          path: ac.url,\n          popup: popupParams\n        }\n      });\n    } else {\n      ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n    }\n    return ac;\n  }\n  openDropdown() {\n    const ac = this;\n    if (!ac.$dropdownEl) {\n      ac.$dropdownEl = $(ac.renderDropdown());\n    }\n    const $pageContentEl = ac.$inputEl.parents('.page-content');\n    if (ac.params.dropdownContainerEl) {\n      $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n    } else if ($pageContentEl.length === 0) {\n      ac.$dropdownEl.insertAfter(ac.$inputEl);\n    } else {\n      ac.positionDropdown();\n      $pageContentEl.append(ac.$dropdownEl);\n    }\n    ac.onOpen('dropdown', ac.$dropdownEl);\n    ac.onOpened('dropdown', ac.$dropdownEl);\n  }\n  open() {\n    const ac = this;\n    if (ac.opened) return ac;\n    const openIn = ac.params.openIn;\n    ac[`open${openIn.split('').map((el, index) => {\n      if (index === 0) return el.toUpperCase();\n      return el;\n    }).join('')}`]();\n    return ac;\n  }\n  close() {\n    const ac = this;\n    if (!ac.opened) return ac;\n    if (ac.params.openIn === 'dropdown') {\n      ac.onClose();\n      ac.onClosed();\n    } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {\n      ac.view.router.back({\n        animate: ac.params.animate\n      });\n    } else {\n      ac.modal.once('modalClosed', () => {\n        nextTick(() => {\n          if (ac.destroyed) return;\n          ac.modal.destroy();\n          delete ac.modal;\n        });\n      });\n      ac.modal.close();\n    }\n    return ac;\n  }\n  init() {\n    const ac = this;\n    ac.attachEvents();\n  }\n  destroy() {\n    const ac = this;\n    ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n    ac.detachEvents();\n    if (ac.$inputEl && ac.$inputEl[0]) {\n      delete ac.$inputEl[0].f7Autocomplete;\n    }\n    if (ac.$openerEl && ac.$openerEl[0]) {\n      delete ac.$openerEl[0].f7Autocomplete;\n    }\n    deleteProps(ac);\n    ac.destroyed = true;\n  }\n}\nexport default Autocomplete;", "import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'autocomplete',\n  params: {\n    autocomplete: {\n      openerEl: undefined,\n      inputEl: undefined,\n      view: undefined,\n      // DropDown\n      dropdownContainerEl: undefined,\n      dropdownPlaceholderText: undefined,\n      typeahead: false,\n      highlightMatches: true,\n      updateInputValueOnSelect: true,\n      inputEvents: 'input',\n      value: undefined,\n      multiple: false,\n      source: undefined,\n      limit: undefined,\n      valueProperty: 'id',\n      textProperty: 'text',\n      openIn: 'page',\n      // or 'popup' or 'dropdown'\n      pageBackLinkText: 'Back',\n      popupCloseLinkText: 'Close',\n      pageTitle: undefined,\n      searchbarPlaceholder: 'Search...',\n      searchbarDisableText: 'Cancel',\n      searchbarDisableButton: true,\n      searchbarSpellcheck: false,\n      popupPush: false,\n      popupSwipeToClose: undefined,\n      animate: true,\n      autoFocus: false,\n      closeOnSelect: false,\n      notFoundText: 'Nothing found',\n      requestSourceOnOpen: false,\n      // Preloader\n      preloaderColor: undefined,\n      preloader: false,\n      // Colors\n      formColorTheme: undefined,\n      navbarColorTheme: undefined,\n      // Routing\n      routableModals: false,\n      url: 'select/',\n      // Custom render functions\n      renderDropdown: undefined,\n      renderPage: undefined,\n      renderPopup: undefined,\n      renderItem: undefined,\n      renderSearchbar: undefined,\n      renderNavbar: undefined\n    }\n  },\n  static: {\n    Autocomplete\n  },\n  create() {\n    const app = this;\n    app.autocomplete = extend(ConstructorMethods({\n      defaultSelector: undefined,\n      constructor: Autocomplete,\n      app,\n      domProp: 'f7Autocomplete'\n    }), {\n      open(autocompleteEl) {\n        const ac = app.autocomplete.get(autocompleteEl);\n        if (ac && ac.open) return ac.open();\n        return undefined;\n      },\n      close(autocompleteEl) {\n        const ac = app.autocomplete.get(autocompleteEl);\n        if (ac && ac.close) return ac.close();\n        return undefined;\n      }\n    });\n  }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nclass Tooltip extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const tooltip = this;\n    const support = getSupport();\n    const defaults = extend({}, app.params.tooltip);\n    const document = getDocument();\n\n    // Extend defaults with modules params\n    tooltip.useModulesParams(defaults);\n    tooltip.params = extend(defaults, params);\n    if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {\n      tooltip.params.offset = 10;\n    }\n    const {\n      targetEl,\n      containerEl\n    } = tooltip.params;\n    if (!targetEl && !tooltip.params.delegated) return tooltip;\n    const $targetEl = $(targetEl);\n    if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n    if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip;\n    let $containerEl = $(containerEl || app.$el).eq(0);\n    if ($containerEl.length === 0) {\n      $containerEl = app.$el;\n    }\n    const $el = $(tooltip.render()).eq(0);\n    extend(tooltip, {\n      app,\n      $targetEl,\n      targetEl: $targetEl && $targetEl[0],\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      $el,\n      el: $el && $el[0],\n      text: tooltip.params.text || '',\n      visible: false,\n      opened: false\n    });\n    if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n    const touchesStart = {};\n    let isTouched;\n    function handleClick() {\n      if (tooltip.opened) tooltip.hide();else tooltip.show(this);\n    }\n    function handleClickOut(e) {\n      if (tooltip.opened && ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)) return;\n      tooltip.hide();\n    }\n    function handleTouchStart(e) {\n      if (isTouched) return;\n      isTouched = true;\n      touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      tooltip.show(this);\n    }\n    function handleTouchMove(e) {\n      if (!isTouched) return;\n      const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n      if (distance > 50) {\n        isTouched = false;\n        tooltip.hide();\n      }\n    }\n    function handleTouchEnd() {\n      if (!isTouched) return;\n      isTouched = false;\n      tooltip.hide();\n    }\n    function handleMouseEnter() {\n      tooltip.show(this);\n    }\n    function handleMouseLeave() {\n      tooltip.hide();\n    }\n    function handleTransitionEnd() {\n      if (!$el.hasClass('tooltip-in')) {\n        $el.removeClass('tooltip-out').remove();\n      }\n    }\n    tooltip.attachEvents = function attachEvents() {\n      $el.on('transitionend', handleTransitionEnd);\n      if (tooltip.params.trigger === 'click') {\n        if (tooltip.params.delegated) {\n          $(document).on('click', tooltip.params.targetEl, handleClick);\n        } else {\n          tooltip.$targetEl.on('click', handleClick);\n        }\n        $('html').on('click', handleClickOut);\n        return;\n      }\n      if (tooltip.params.trigger === 'manual') return;\n      if (support.touch) {\n        const passive = support.passiveListener ? {\n          passive: true\n        } : false;\n        if (tooltip.params.delegated) {\n          $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n        } else {\n          tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n        }\n        app.on('touchmove', handleTouchMove);\n        app.on('touchend:passive', handleTouchEnd);\n      } else {\n        // eslint-disable-next-line\n        if (tooltip.params.delegated) {\n          $(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n          $(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n        } else {\n          tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n          tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n        }\n      }\n    };\n    tooltip.detachEvents = function detachEvents() {\n      $el.off('transitionend', handleTransitionEnd);\n      if (tooltip.params.trigger === 'click') {\n        if (tooltip.params.delegated) {\n          $(document).on('click', tooltip.params.targetEl, handleClick);\n        } else {\n          tooltip.$targetEl.off('click', handleClick);\n        }\n        $('html').off('click', handleClickOut);\n        return;\n      }\n      if (tooltip.params.trigger === 'manual') return;\n      if (support.touch) {\n        const passive = support.passiveListener ? {\n          passive: true\n        } : false;\n        if (tooltip.params.delegated) {\n          $(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n        } else {\n          tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n        }\n        app.off('touchmove', handleTouchMove);\n        app.off('touchend:passive', handleTouchEnd);\n      } else {\n        // eslint-disable-next-line\n        if (tooltip.params.delegated) {\n          $(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n          $(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n        } else {\n          tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n          tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n        }\n      }\n    };\n\n    // Install Modules\n    tooltip.useModules();\n    tooltip.init();\n    return tooltip;\n  }\n  setTargetEl(targetEl) {\n    const tooltip = this;\n    tooltip.detachEvents();\n    tooltip.$targetEl = $(targetEl);\n    tooltip.targetEl = tooltip.$targetEl[0];\n    tooltip.attachEvents();\n    return tooltip;\n  }\n  position(targetEl) {\n    const tooltip = this;\n    const {\n      $el,\n      app,\n      $containerEl\n    } = tooltip;\n    const hasContainerEl = !!tooltip.params.containerEl;\n    const tooltipOffset = tooltip.params.offset || 0;\n    $el.css({\n      left: '',\n      top: ''\n    });\n    const $targetEl = $(targetEl || tooltip.targetEl);\n    const [width, height] = [$el.width(), $el.height()];\n    $el.css({\n      left: '',\n      top: ''\n    });\n    let targetWidth;\n    let targetHeight;\n    let targetOffsetLeft;\n    let targetOffsetTop;\n    const boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n    if ($targetEl && $targetEl.length > 0) {\n      targetWidth = $targetEl.outerWidth();\n      targetHeight = $targetEl.outerHeight();\n      if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n        const clientRect = $targetEl[0].getBoundingClientRect();\n        targetWidth = clientRect.width;\n        targetHeight = clientRect.height;\n      }\n      const targetOffset = $targetEl.offset();\n      targetOffsetLeft = targetOffset.left - boundaries.left;\n      targetOffsetTop = targetOffset.top - boundaries.top;\n      const targetParentPage = $targetEl.parents('.page');\n      if (targetParentPage.length > 0) {\n        targetOffsetTop -= targetParentPage[0].scrollTop;\n      }\n    }\n    let [left, top] = [0, 0, 0];\n\n    // Top Position\n    let position = 'top';\n    if (height + tooltipOffset < targetOffsetTop) {\n      // On top\n      top = targetOffsetTop - height - tooltipOffset;\n    } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n      // On bottom\n      position = 'bottom';\n      top = targetOffsetTop + targetHeight + tooltipOffset;\n    } else {\n      // On middle\n      position = 'middle';\n      top = targetHeight / 2 + targetOffsetTop - height / 2;\n      if (top <= 0) {\n        top = 8;\n      } else if (top + height >= boundaries.height) {\n        top = boundaries.height - height - 8;\n      }\n    }\n\n    // Horizontal Position\n    if (position === 'top' || position === 'bottom') {\n      left = targetWidth / 2 + targetOffsetLeft - width / 2;\n      if (left < 8) left = 8;\n      if (left + width > boundaries.width) left = boundaries.width - width - 8;\n      if (left < 0) left = 0;\n    } else if (position === 'middle') {\n      left = targetOffsetLeft - width;\n      if (left < 8 || left + width > boundaries.width) {\n        if (left < 8) left = targetOffsetLeft + targetWidth;\n        if (left + width > boundaries.width) left = boundaries.width - width - 8;\n      }\n    }\n\n    // Apply Styles\n    $el.css({\n      top: `${top}px`,\n      left: `${left}px`\n    });\n  }\n  show(aroundEl) {\n    const tooltip = this;\n    const {\n      $el,\n      $targetEl,\n      $containerEl\n    } = tooltip;\n    if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n      $containerEl.append($el);\n    }\n    tooltip.position(aroundEl);\n    const $aroundEl = $(aroundEl);\n    tooltip.visible = true;\n    tooltip.opened = true;\n    $targetEl.trigger('tooltip:show');\n    $el.trigger('tooltip:show');\n    if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n      $aroundEl.trigger('tooltip:show');\n    }\n    tooltip.emit('local::show tooltipShow', tooltip);\n    $el.removeClass('tooltip-out').addClass('tooltip-in');\n    return tooltip;\n  }\n  hide() {\n    const tooltip = this;\n    const {\n      $el,\n      $targetEl\n    } = tooltip;\n    tooltip.visible = false;\n    tooltip.opened = false;\n    $targetEl.trigger('tooltip:hide');\n    $el.trigger('tooltip:hide');\n    tooltip.emit('local::hide tooltipHide', tooltip);\n    $el.addClass('tooltip-out').removeClass('tooltip-in');\n    return tooltip;\n  }\n  render() {\n    const tooltip = this;\n    if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n    const {\n      cssClass,\n      text\n    } = tooltip.params;\n    return `\n      <div class=\"tooltip ${cssClass || ''}\">\n        <div class=\"tooltip-content\">${text || ''}</div>\n      </div>\n    `.trim();\n  }\n  setText(newText) {\n    const tooltip = this;\n    if (typeof newText === 'undefined') {\n      return tooltip;\n    }\n    tooltip.params.text = newText;\n    tooltip.text = newText;\n    if (tooltip.$el) {\n      tooltip.$el.children('.tooltip-content').html(newText);\n    }\n    if (tooltip.opened) {\n      tooltip.position();\n    }\n    return tooltip;\n  }\n  init() {\n    const tooltip = this;\n    tooltip.attachEvents();\n  }\n  destroy() {\n    const tooltip = this;\n    if (!tooltip.$targetEl || tooltip.destroyed) return;\n    tooltip.$targetEl.trigger('tooltip:beforedestroy');\n    tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n    tooltip.$el.remove();\n    if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n    tooltip.detachEvents();\n    deleteProps(tooltip);\n    tooltip.destroyed = true;\n  }\n}\nexport default Tooltip;", "import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'tooltip',\n  static: {\n    Tooltip\n  },\n  create() {\n    const app = this;\n    app.tooltip = ConstructorMethods({\n      defaultSelector: '.tooltip',\n      constructor: Tooltip,\n      app,\n      domProp: 'f7Tooltip'\n    });\n    app.tooltip.show = function show(el) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const tooltip = $el[0].f7Tooltip;\n      if (!tooltip) return undefined;\n      tooltip.show($el[0]);\n      return tooltip;\n    };\n    app.tooltip.hide = function hide(el) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const tooltip = $el[0].f7Tooltip;\n      if (!tooltip) return undefined;\n      tooltip.hide();\n      return tooltip;\n    };\n    app.tooltip.setText = function text(el, newText) {\n      const $el = $(el);\n      if ($el.length === 0) return undefined;\n      const tooltip = $el[0].f7Tooltip;\n      if (!tooltip) return undefined;\n      tooltip.setText(newText);\n      return tooltip;\n    };\n  },\n  params: {\n    tooltip: {\n      targetEl: null,\n      delegated: false,\n      text: null,\n      cssClass: null,\n      render: null,\n      offset: 0,\n      trigger: 'hover',\n      containerEl: undefined\n    }\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.tooltip-init').each(el => {\n        const text = $(el).attr('data-tooltip');\n        if (!text) return;\n        app.tooltip.create({\n          targetEl: el,\n          text\n        });\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.tooltip-init').each(el => {\n        if (el.f7Tooltip) el.f7Tooltip.destroy();\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.tooltip-init').each(el => {\n        const text = $(el).attr('data-tooltip');\n        if (!text) return;\n        app.tooltip.create({\n          targetEl: el,\n          text\n        });\n      });\n      if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n        page.$navbarEl.find('.tooltip-init').each(el => {\n          const text = $(el).attr('data-tooltip');\n          if (!text) return;\n          app.tooltip.create({\n            targetEl: el,\n            text\n          });\n        });\n      }\n    },\n    pageBeforeRemove(page) {\n      const app = this;\n      page.$el.find('.tooltip-init').each(el => {\n        if (el.f7Tooltip) el.f7Tooltip.destroy();\n      });\n      if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n        page.$navbarEl.find('.tooltip-init').each(el => {\n          if (el.f7Tooltip) el.f7Tooltip.destroy();\n        });\n      }\n    }\n  },\n  vnode: {\n    'tooltip-init': {\n      insert(vnode) {\n        const app = this;\n        const el = vnode.elm;\n        const text = $(el).attr('data-tooltip');\n        if (!text) return;\n        app.tooltip.create({\n          targetEl: el,\n          text\n        });\n      },\n      update(vnode) {\n        const el = vnode.elm;\n        if (!el.f7Tooltip) return;\n        if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n          el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n        }\n      },\n      destroy(vnode) {\n        const el = vnode.elm;\n        if (el.f7Tooltip) el.f7Tooltip.destroy();\n      }\n    }\n  }\n};", "export default {\n  name: 'skeleton'\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      alphaLabelText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-alpha-slider\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, alphaLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-alpha\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"0.01\",\n      min: \"0\",\n      max: \"1\",\n      class: \"color-picker-value-alpha\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-alpha\"\n    }))));\n  },\n  init(self) {\n    self.alphaRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-alpha'),\n      min: 0,\n      max: 1,\n      step: 0.01,\n      value: 1,\n      on: {\n        change(range, value) {\n          const alpha = Math.floor(value * 100) / 100;\n          self.setValue({\n            alpha\n          });\n        }\n      }\n    });\n    function handleInputChange(e) {\n      const alpha = self.value.alpha;\n      let value = parseFloat(e.target.value);\n      if (Number.isNaN(value)) {\n        e.target.value = alpha;\n        return;\n      }\n      value = Math.max(0, Math.min(1, value));\n      self.setValue({\n        alpha: value\n      });\n    }\n    self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n    self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n      self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n    };\n  },\n  update(self) {\n    const {\n      value\n    } = self;\n    const {\n      sliderValue,\n      sliderValueEditable\n    } = self.params;\n    const {\n      alpha\n    } = value;\n    self.alphaRangeSlider.value = alpha;\n    self.alphaRangeSlider.layout();\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-alpha').val(alpha);\n    } else {\n      self.$el.find('span.color-picker-value-alpha').text(alpha);\n    }\n  },\n  destroy(self) {\n    if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n      self.alphaRangeSlider.destroy();\n    }\n    delete self.alphaRangeSlider;\n    if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n    delete self.destroyAlphaSliderEvents;\n  }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render() {\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-current-color\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-current-color\"\n    }));\n  },\n  update(self) {\n    self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);\n  }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      hexLabel,\n      hexLabelText,\n      hexValueEditable\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-hex\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-hex-wrap\"\n    }, hexLabel && $jsx(\"div\", {\n      class: \"color-picker-hex-label\"\n    }, hexLabelText), $jsx(\"div\", {\n      class: \"color-picker-hex-value\"\n    }, hexValueEditable ? $jsx(\"input\", {\n      type: \"text\",\n      class: \"color-picker-value-hex\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-hex\"\n    }))));\n  },\n  init(self) {\n    function handleInputChange(e) {\n      const hex = self.value.hex;\n      let value = e.target.value.replace(/#/g, '');\n      if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {\n        e.target.value = hex;\n        return;\n      }\n      const min = 0;\n      const current = parseInt(value, 16);\n      const max = parseInt('ffffff', 16); // eslint-disable-line\n      if (current > max) {\n        value = 'fff';\n      }\n      if (current < min) {\n        value = '000';\n      }\n      self.setValue({\n        hex: value\n      });\n    }\n    self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n    self.destroyHexEvents = function destroyHexEvents() {\n      self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n    };\n  },\n  update(self) {\n    const {\n      value\n    } = self;\n    const {\n      hexValueEditable\n    } = self.params;\n    const {\n      hex\n    } = value;\n    if (hexValueEditable) {\n      self.$el.find('input.color-picker-value-hex').val(hex);\n    } else {\n      self.$el.find('span.color-picker-value-hex').text(hex);\n    }\n  },\n  destroy(self) {\n    if (self.destroyHexEvents) self.destroyHexEvents();\n    delete self.destroyHexEvents;\n  }\n};", "import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      hueLabelText,\n      saturationLabelText,\n      brightnessLabelText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-hsb-sliders\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, hueLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-hue\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"0.1\",\n      min: \"0\",\n      max: \"360\",\n      class: \"color-picker-value-hue\",\n      \"data-color-index\": \"0\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-hue\"\n    }))), $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, saturationLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-saturation\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"0.1\",\n      min: \"0\",\n      max: \"100\",\n      class: \"color-picker-value-saturation\",\n      \"data-color-index\": \"1\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-saturation\"\n    }))), $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, brightnessLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"0.1\",\n      min: \"0\",\n      max: \"100\",\n      class: \"color-picker-value-brightness\",\n      \"data-color-index\": \"2\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-brightness\"\n    }))));\n  },\n  init(self) {\n    self.hueRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-hue'),\n      min: 0,\n      max: 360,\n      step: 0.1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({\n            hue: value\n          });\n        }\n      }\n    });\n    self.saturationRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-saturation'),\n      min: 0,\n      max: 1,\n      step: 0.001,\n      value: 0,\n      on: {\n        change(range, value) {\n          const s = Math.floor(value * 1000) / 1000;\n          self.setValue({\n            hsb: [self.value.hsb[0], s, self.value.hsb[2]]\n          });\n        }\n      }\n    });\n    self.brightnessRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-brightness'),\n      min: 0,\n      max: 1,\n      step: 0.001,\n      value: 0,\n      on: {\n        change(range, value) {\n          const b = Math.floor(value * 1000) / 1000;\n          self.setValue({\n            hsb: [self.value.hsb[0], self.value.hsb[1], b]\n          });\n        }\n      }\n    });\n    function handleInputChange(e) {\n      const hsb = [...self.value.hsb];\n      const index = parseInt($(e.target).attr('data-color-index'), 10);\n      let value = parseFloat(e.target.value);\n      if (Number.isNaN(value)) {\n        e.target.value = hsb[index];\n        return;\n      }\n      if (index === 0) {\n        value = Math.max(0, Math.min(360, value));\n      } else {\n        value = Math.max(0, Math.min(100, value)) / 100;\n      }\n      hsb[index] = value;\n      self.setValue({\n        hsb\n      });\n    }\n    self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n    self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n      self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n    };\n  },\n  update(self) {\n    const {\n      app,\n      value\n    } = self;\n    const {\n      sliderValue,\n      sliderValueEditable\n    } = self.params;\n    const {\n      hsb,\n      hue\n    } = value;\n    self.hueRangeSlider.value = hue;\n    self.saturationRangeSlider.value = hsb[1];\n    self.brightnessRangeSlider.value = hsb[2];\n    self.hueRangeSlider.layout();\n    self.saturationRangeSlider.layout();\n    self.brightnessRangeSlider.layout();\n    const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n    const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n    const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n    const brightness = hsb[2];\n    self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n    self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n    self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`);\n    self.saturationRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n      self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n      self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n      self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n      self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n    }\n  },\n  destroy(self) {\n    if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n      self.hueRangeSlider.destroy();\n    }\n    if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n      self.saturationRangeSlider.destroy();\n    }\n    if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n      self.brightnessRangeSlider.destroy();\n    }\n    delete self.hueRangeSlider;\n    delete self.saturationRangeSlider;\n    delete self.brightnessRangeSlider;\n    if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n    delete self.destroyHsbSlidersEvents;\n  }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      hueLabelText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-hue-slider\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, hueLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-hue\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"0.1\",\n      min: \"0\",\n      max: \"360\",\n      class: \"color-picker-value-hue\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-hue\"\n    }))));\n  },\n  init(self) {\n    self.hueRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-hue'),\n      min: 0,\n      max: 360,\n      step: 0.1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({\n            hue: value\n          });\n        }\n      }\n    });\n  },\n  update(self) {\n    const {\n      value\n    } = self;\n    const {\n      sliderValue,\n      sliderValueEditable\n    } = self.params;\n    const {\n      hue\n    } = value;\n    self.hueRangeSlider.value = hue;\n    self.hueRangeSlider.layout();\n    self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n    }\n  },\n  destroy(self) {\n    if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n      self.hueRangeSlider.destroy();\n    }\n    delete self.hueRangeSlider;\n  }\n};", "import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      brightnessLabelText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-brightness-slider\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, brightnessLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"0.1\",\n      min: \"0\",\n      max: \"100\",\n      class: \"color-picker-value-brightness\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-brightness\"\n    }))));\n  },\n  init(self) {\n    self.brightnessRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-brightness'),\n      min: 0,\n      max: 1,\n      step: 0.001,\n      value: 0,\n      on: {\n        change(range, value) {\n          const b = Math.floor(value * 1000) / 1000;\n          self.setValue({\n            hsb: [self.value.hsb[0], self.value.hsb[1], b]\n          });\n        }\n      }\n    });\n  },\n  update(self) {\n    const {\n      value,\n      app\n    } = self;\n    const {\n      sliderValue,\n      sliderValueEditable\n    } = self.params;\n    const {\n      hsb\n    } = value;\n    self.brightnessRangeSlider.value = hsb[2];\n    self.brightnessRangeSlider.layout();\n    const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n    const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n    const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n    self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n    self.brightnessRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n    }\n  },\n  destroy(self) {\n    if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n      self.brightnessRangeSlider.destroy();\n    }\n    delete self.brightnessRangeSlider;\n  }\n};", "/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-palette\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-palette\"\n    }, self.params.palette.map(p => {\n      if (Array.isArray(p)) {\n        let row = '<div class=\"color-picker-palette-row\">';\n        // prettier-ignore\n        row += p.map(c => `\n                <div class=\"color-picker-palette-value\" data-palette-color=\"${c}\" style=\"background-color: ${c}\"></div>\n              `).join('');\n        row += '</div>';\n        return row;\n      }\n      return $jsx(\"div\", {\n        class: \"color-picker-palette-value\",\n        \"data-palette-color\": p,\n        style: `background-color: ${p}`\n      });\n    })));\n  },\n  init(self) {\n    function handlePaletteClick(e) {\n      const hex = $(e.target).attr('data-palette-color');\n      self.setValue({\n        hex\n      });\n    }\n    self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n    self.destroyPaletteEvents = function destroyPaletteEvents() {\n      self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n    };\n  },\n  destroy(self) {\n    if (self.destroyPaletteEvents) {\n      self.destroyPaletteEvents();\n    }\n    delete self.destroyPaletteEvents;\n  }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render() {\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-initial-current-colors\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-initial-current-colors\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-initial-color\"\n    }), $jsx(\"div\", {\n      class: \"color-picker-current-color\"\n    })));\n  },\n  init(self) {\n    function handleInitialColorClick() {\n      if (self.initialValue) {\n        const {\n          hex,\n          alpha\n        } = self.initialValue;\n        self.setValue({\n          hex,\n          alpha\n        });\n      }\n    }\n    self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n    self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n      self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n    };\n  },\n  update(self) {\n    self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);\n    self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);\n  },\n  destroy(self) {\n    if (self.destroyInitialCurrentEvents) {\n      self.destroyInitialCurrentEvents();\n    }\n    delete self.destroyInitialCurrentEvents;\n  }\n};", "import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      barLabel,\n      barValue,\n      barValueEditable,\n      redLabelText,\n      greenLabelText,\n      blueLabelText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-rgb-bars\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-bar-wrap\"\n    }, barLabel && $jsx(\"div\", {\n      class: \"color-picker-bar-label\"\n    }, redLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-bar color-picker-bar-red\"\n    }), barValue && $jsx(\"div\", {\n      class: \"color-picker-bar-value\"\n    }, barValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"1\",\n      min: \"0\",\n      max: \"255\",\n      class: \"color-picker-value-bar-red\",\n      \"data-color-index\": \"0\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-bar-red\"\n    }))), $jsx(\"div\", {\n      class: \"color-picker-bar-wrap\"\n    }, barLabel && $jsx(\"div\", {\n      class: \"color-picker-bar-label\"\n    }, greenLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-bar color-picker-bar-green\"\n    }), barValue && $jsx(\"div\", {\n      class: \"color-picker-bar-value\"\n    }, barValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"1\",\n      min: \"0\",\n      max: \"255\",\n      class: \"color-picker-value-bar-green\",\n      \"data-color-index\": \"1\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-bar-green\"\n    }))), $jsx(\"div\", {\n      class: \"color-picker-bar-wrap\"\n    }, barLabel && $jsx(\"div\", {\n      class: \"color-picker-bar-label\"\n    }, blueLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-bar color-picker-bar-blue\"\n    }), barValue && $jsx(\"div\", {\n      class: \"color-picker-bar-value\"\n    }, barValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"1\",\n      min: \"0\",\n      max: \"255\",\n      class: \"color-picker-value-bar-blue\",\n      \"data-color-index\": \"2\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-bar-blue\"\n    }))));\n  },\n  init(self) {\n    self.redBar = self.app.range.create({\n      el: self.$el.find('.color-picker-bar-red'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      vertical: true,\n      on: {\n        change(range, value) {\n          self.setValue({\n            rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n          });\n        }\n      }\n    });\n    self.greenBar = self.app.range.create({\n      el: self.$el.find('.color-picker-bar-green'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      vertical: true,\n      on: {\n        change(range, value) {\n          self.setValue({\n            rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n          });\n        }\n      }\n    });\n    self.blueBar = self.app.range.create({\n      el: self.$el.find('.color-picker-bar-blue'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      vertical: true,\n      on: {\n        change(range, value) {\n          self.setValue({\n            rgb: [self.value.rgb[0], self.value.rgb[1], value]\n          });\n        }\n      }\n    });\n    function handleInputChange(e) {\n      const rgb = [...self.value.rgb];\n      const index = parseInt($(e.target).attr('data-color-index'), 10);\n      let value = parseInt(e.target.value, 10);\n      if (Number.isNaN(value)) {\n        e.target.value = rgb[index];\n        return;\n      }\n      value = Math.max(0, Math.min(255, value));\n      rgb[index] = value;\n      self.setValue({\n        rgb\n      });\n    }\n    self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n    self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n      self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n    };\n  },\n  update(self) {\n    const {\n      value,\n      redBar,\n      greenBar,\n      blueBar\n    } = self;\n    const {\n      barValue,\n      barValueEditable\n    } = self.params;\n    const {\n      rgb\n    } = value;\n    redBar.value = rgb[0];\n    greenBar.value = rgb[1];\n    blueBar.value = rgb[2];\n    redBar.layout();\n    greenBar.layout();\n    blueBar.layout();\n    redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n    greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n    blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n    if (barValue && barValueEditable) {\n      self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n      self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n      self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n    } else if (barValue) {\n      self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n      self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n      self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n    }\n  },\n  destroy(self) {\n    if (self.redBar && self.redBar.destroy) {\n      self.redBar.destroy();\n    }\n    if (self.greenBar && self.greenBar.destroy) {\n      self.greenBar.destroy();\n    }\n    if (self.blueBar && self.blueBar.destroy) {\n      self.blueBar.destroy();\n    }\n    delete self.redBar;\n    delete self.greenBar;\n    delete self.blueBar;\n    if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n    delete self.destroyRgbBarsEvents;\n  }\n};", "import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render(self) {\n    const {\n      sliderLabel,\n      sliderValue,\n      sliderValueEditable,\n      redLabelText,\n      greenLabelText,\n      blueLabelText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-rgb-sliders\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, redLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-red\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"1\",\n      min: \"0\",\n      max: \"255\",\n      class: \"color-picker-value-red\",\n      \"data-color-index\": \"0\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-red\"\n    }))), $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, greenLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-green\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"1\",\n      min: \"0\",\n      max: \"255\",\n      class: \"color-picker-value-green\",\n      \"data-color-index\": \"1\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-green\"\n    }))), $jsx(\"div\", {\n      class: \"color-picker-slider-wrap\"\n    }, sliderLabel && $jsx(\"div\", {\n      class: \"color-picker-slider-label\"\n    }, blueLabelText), $jsx(\"div\", {\n      class: \"range-slider color-picker-slider color-picker-slider-blue\"\n    }), sliderValue && $jsx(\"div\", {\n      class: \"color-picker-slider-value\"\n    }, sliderValueEditable ? $jsx(\"input\", {\n      type: \"number\",\n      step: \"1\",\n      min: \"0\",\n      max: \"255\",\n      class: \"color-picker-value-blue\",\n      \"data-color-index\": \"2\"\n    }) : $jsx(\"span\", {\n      class: \"color-picker-value-blue\"\n    }))));\n  },\n  init(self) {\n    self.redRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-red'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({\n            rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n          });\n        }\n      }\n    });\n    self.greenRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-green'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({\n            rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n          });\n        }\n      }\n    });\n    self.blueRangeSlider = self.app.range.create({\n      el: self.$el.find('.color-picker-slider-blue'),\n      min: 0,\n      max: 255,\n      step: 1,\n      value: 0,\n      on: {\n        change(range, value) {\n          self.setValue({\n            rgb: [self.value.rgb[0], self.value.rgb[1], value]\n          });\n        }\n      }\n    });\n    function handleInputChange(e) {\n      const rgb = [...self.value.rgb];\n      const index = parseInt($(e.target).attr('data-color-index'), 10);\n      let value = parseInt(e.target.value, 10);\n      if (Number.isNaN(value)) {\n        e.target.value = rgb[index];\n        return;\n      }\n      value = Math.max(0, Math.min(255, value));\n      rgb[index] = value;\n      self.setValue({\n        rgb\n      });\n    }\n    self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n    self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n      self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n    };\n  },\n  update(self) {\n    const {\n      app,\n      value,\n      redRangeSlider,\n      greenRangeSlider,\n      blueRangeSlider\n    } = self;\n    const {\n      sliderValue,\n      sliderValueEditable\n    } = self.params;\n    const {\n      rgb\n    } = value;\n    redRangeSlider.value = rgb[0];\n    greenRangeSlider.value = rgb[1];\n    blueRangeSlider.value = rgb[2];\n    redRangeSlider.layout();\n    greenRangeSlider.layout();\n    blueRangeSlider.layout();\n    redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n    greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n    blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n    const direction = app.rtl ? 'to left' : 'to right';\n    redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n    greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n    blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n    if (sliderValue && sliderValueEditable) {\n      self.$el.find('input.color-picker-value-red').val(rgb[0]);\n      self.$el.find('input.color-picker-value-green').val(rgb[1]);\n      self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n    } else if (sliderValue) {\n      self.$el.find('span.color-picker-value-red').text(rgb[0]);\n      self.$el.find('span.color-picker-value-green').text(rgb[1]);\n      self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n    }\n  },\n  destroy(self) {\n    if (self.redRangeSlider && self.redRangeSlider.destroy) {\n      self.redRangeSlider.destroy();\n    }\n    if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n      self.greenRangeSlider.destroy();\n    }\n    if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n      self.blueRangeSlider.destroy();\n    }\n    delete self.redRangeSlider;\n    delete self.greenRangeSlider;\n    delete self.blueRangeSlider;\n    if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n    delete self.destroyRgbSlidersEvents;\n  }\n};", "import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render() {\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-sb-spectrum\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-sb-spectrum\",\n      style: \"background-color: hsl(0, 100%, 50%)\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-sb-spectrum-handle\"\n    })));\n  },\n  init(self) {\n    const {\n      app\n    } = self;\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchCurrentX;\n    let touchCurrentY;\n    let specterRect;\n    let specterIsTouched;\n    let specterHandleIsTouched;\n    const {\n      $el\n    } = self;\n    function setSBFromSpecterCoords(x, y) {\n      let s = (x - specterRect.left) / specterRect.width;\n      let b = (y - specterRect.top) / specterRect.height;\n      s = Math.max(0, Math.min(1, s));\n      b = 1 - Math.max(0, Math.min(1, b));\n      self.setValue({\n        hsb: [self.value.hue, s, b]\n      });\n    }\n    function handleTouchStart(e) {\n      if (isMoved || isTouched) return;\n      touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentX = touchStartX;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchCurrentY = touchStartY;\n      const $targetEl = $(e.target);\n      specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n      if (!specterHandleIsTouched) {\n        specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n      }\n      if (specterIsTouched) {\n        specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        setSBFromSpecterCoords(touchStartX, touchStartY);\n      }\n      if (specterHandleIsTouched || specterIsTouched) {\n        $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n      }\n    }\n    function handleTouchMove(e) {\n      if (!(specterIsTouched || specterHandleIsTouched)) return;\n      touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      if (!isMoved) {\n        // First move\n        isMoved = true;\n        if (specterHandleIsTouched) {\n          specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        }\n      }\n      if (specterIsTouched || specterHandleIsTouched) {\n        setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n      }\n    }\n    function handleTouchEnd() {\n      isMoved = false;\n      if (specterIsTouched || specterHandleIsTouched) {\n        $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n      }\n      specterIsTouched = false;\n      specterHandleIsTouched = false;\n    }\n    function handleResize() {\n      self.modules['sb-spectrum'].update(self);\n    }\n    const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n      passive: true,\n      capture: false\n    } : false;\n    self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    app.on('resize', handleResize);\n    self.destroySpectrumEvents = function destroySpectrumEvents() {\n      self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('resize', handleResize);\n    };\n  },\n  update(self) {\n    const {\n      value\n    } = self;\n    const {\n      hsl,\n      hsb\n    } = value;\n    const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n    const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n    self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n    self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n  },\n  destroy(self) {\n    if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n    delete self.destroySpectrumEvents;\n  }\n};", "import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n  render() {\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-hs-spectrum\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-hs-spectrum\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-hs-spectrum-handle\"\n    })));\n  },\n  init(self) {\n    const {\n      app\n    } = self;\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchCurrentX;\n    let touchCurrentY;\n    let specterRect;\n    let specterIsTouched;\n    let specterHandleIsTouched;\n    const {\n      $el\n    } = self;\n    function setHSFromSpecterCoords(x, y) {\n      let h = (x - specterRect.left) / specterRect.width * 360;\n      let s = (y - specterRect.top) / specterRect.height;\n      h = Math.max(0, Math.min(360, h));\n      s = 1 - Math.max(0, Math.min(1, s));\n      self.setValue({\n        hsb: [h, s, self.value.hsb[2]]\n      });\n    }\n    function handleTouchStart(e) {\n      if (isMoved || isTouched) return;\n      touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentX = touchStartX;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchCurrentY = touchStartY;\n      const $targetEl = $(e.target);\n      specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n      if (!specterHandleIsTouched) {\n        specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n      }\n      if (specterIsTouched) {\n        specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n        setHSFromSpecterCoords(touchStartX, touchStartY);\n      }\n      if (specterHandleIsTouched || specterIsTouched) {\n        $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n      }\n    }\n    function handleTouchMove(e) {\n      if (!(specterIsTouched || specterHandleIsTouched)) return;\n      touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      if (!isMoved) {\n        // First move\n        isMoved = true;\n        if (specterHandleIsTouched) {\n          specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n        }\n      }\n      if (specterIsTouched || specterHandleIsTouched) {\n        setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n      }\n    }\n    function handleTouchEnd() {\n      isMoved = false;\n      if (specterIsTouched || specterHandleIsTouched) {\n        $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n      }\n      specterIsTouched = false;\n      specterHandleIsTouched = false;\n    }\n    function handleResize() {\n      self.modules['hs-spectrum'].update(self);\n    }\n    const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n      passive: true,\n      capture: false\n    } : false;\n    self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    app.on('resize', handleResize);\n    self.destroySpectrumEvents = function destroySpectrumEvents() {\n      self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('resize', handleResize);\n    };\n  },\n  update(self) {\n    const {\n      value\n    } = self;\n    const {\n      hsb\n    } = value;\n    const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n    const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n    const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n    self.$el.find('.color-picker-hs-spectrum-handle').css('background-color', `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`).transform(`translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`);\n  },\n  destroy(self) {\n    if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n    delete self.destroySpectrumEvents;\n  }\n};", "import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nfunction svgWheelCircles() {\n  const total = 256;\n  let circles = '';\n  for (let i = total; i > 0; i -= 1) {\n    const angle = i * Math.PI / (total / 2);\n    const hue = 360 / total * i;\n    circles += `<circle cx=\"${150 - Math.sin(angle) * 125}\" cy=\"${150 - Math.cos(angle) * 125}\" r=\"25\" fill=\"hsl(${hue}, 100%, 50%)\"></circle>`;\n  }\n  return circles;\n}\nexport default {\n  render() {\n    return $jsx(\"div\", {\n      class: \"color-picker-module color-picker-module-wheel\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-wheel\"\n    }, $jsx(\"svg\", {\n      viewBox: \"0 0 300 300\",\n      width: \"300\",\n      height: \"300\"\n    }, svgWheelCircles()), $jsx(\"div\", {\n      class: \"color-picker-wheel-handle\"\n    }), $jsx(\"div\", {\n      class: \"color-picker-sb-spectrum\",\n      style: \"background-color: hsl(0, 100%, 50%)\"\n    }, $jsx(\"div\", {\n      class: \"color-picker-sb-spectrum-handle\"\n    }))));\n  },\n  init(self) {\n    const {\n      app\n    } = self;\n    let isTouched;\n    let isMoved;\n    let touchStartX;\n    let touchStartY;\n    let touchCurrentX;\n    let touchCurrentY;\n    let wheelRect;\n    let wheelIsTouched;\n    let wheelHandleIsTouched;\n    let specterRect;\n    let specterIsTouched;\n    let specterHandleIsTouched;\n    const {\n      $el\n    } = self;\n    function setHueFromWheelCoords(x, y) {\n      const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n      const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n      const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n      let angleDeg = angleRad * 180 / Math.PI + 90;\n      if (angleDeg < 0) angleDeg += 360;\n      angleDeg = 360 - angleDeg;\n      self.setValue({\n        hue: angleDeg\n      });\n    }\n    function setSBFromSpecterCoords(x, y) {\n      let s = (x - specterRect.left) / specterRect.width;\n      let b = (y - specterRect.top) / specterRect.height;\n      s = Math.max(0, Math.min(1, s));\n      b = 1 - Math.max(0, Math.min(1, b));\n      self.setValue({\n        hsb: [self.value.hue, s, b]\n      });\n    }\n    function handleTouchStart(e) {\n      if (isMoved || isTouched) return;\n      touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentX = touchStartX;\n      touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n      touchCurrentY = touchStartY;\n      const $targetEl = $(e.target);\n      wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n      wheelIsTouched = $targetEl.closest('circle').length > 0;\n      specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n      if (!specterHandleIsTouched) {\n        specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n      }\n      if (wheelIsTouched) {\n        wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n        setHueFromWheelCoords(touchStartX, touchStartY);\n      }\n      if (specterIsTouched) {\n        specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        setSBFromSpecterCoords(touchStartX, touchStartY);\n      }\n      if (specterHandleIsTouched || specterIsTouched) {\n        $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n      }\n    }\n    function handleTouchMove(e) {\n      if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n      touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n      touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n      e.preventDefault();\n      if (!isMoved) {\n        // First move\n        isMoved = true;\n        if (wheelHandleIsTouched) {\n          wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n        }\n        if (specterHandleIsTouched) {\n          specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n        }\n      }\n      if (wheelIsTouched || wheelHandleIsTouched) {\n        setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n      }\n      if (specterIsTouched || specterHandleIsTouched) {\n        setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n      }\n    }\n    function handleTouchEnd() {\n      isMoved = false;\n      if (specterIsTouched || specterHandleIsTouched) {\n        $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n      }\n      wheelIsTouched = false;\n      wheelHandleIsTouched = false;\n      specterIsTouched = false;\n      specterHandleIsTouched = false;\n    }\n    function handleResize() {\n      self.modules.wheel.update(self);\n    }\n    const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n      passive: true,\n      capture: false\n    } : false;\n    self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n    app.on('touchmove:active', handleTouchMove);\n    app.on('touchend:passive', handleTouchEnd);\n    app.on('resize', handleResize);\n    self.destroyWheelEvents = function destroyWheelEvents() {\n      self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n      app.off('touchmove:active', handleTouchMove);\n      app.off('touchend:passive', handleTouchEnd);\n      app.off('resize', handleResize);\n    };\n  },\n  update(self) {\n    const {\n      value\n    } = self;\n    const {\n      hsl,\n      hsb\n    } = value;\n    const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n    const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n    const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n    const wheelHalfSize = wheelSize / 2;\n    const angleRad = value.hue * Math.PI / 180;\n    const handleSize = wheelSize / 6;\n    const handleHalfSize = handleSize / 2;\n    const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n    const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n    self.$el.find('.color-picker-wheel-handle').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`).transform(`translate(${tX}px, ${tY}px)`);\n    self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n    self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n  },\n  destroy(self) {\n    if (self.destroyWheelEvents) self.destroyWheelEvents();\n    delete self.destroyWheelEvents;\n  }\n};", "import { extend, colorRgbToHex, colorRgbToHsl, colorHslToHsb, colorHslToRgb, colorHsbToHsl, colorHexToRgb, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass ColorPicker extends Framework7Class {\n  constructor(app, params) {\n    if (params === void 0) {\n      params = {};\n    }\n    super(params, [app]);\n    const self = this;\n    self.params = extend({}, app.params.colorPicker, params);\n    let $containerEl;\n    if (self.params.containerEl) {\n      $containerEl = $(self.params.containerEl);\n      if ($containerEl.length === 0) return self;\n    }\n    let $inputEl;\n    if (self.params.inputEl) {\n      $inputEl = $(self.params.inputEl);\n    }\n    let $targetEl;\n    if (self.params.targetEl) {\n      $targetEl = $(self.params.targetEl);\n    }\n    extend(self, {\n      app,\n      $containerEl,\n      containerEl: $containerEl && $containerEl[0],\n      inline: $containerEl && $containerEl.length > 0,\n      $inputEl,\n      inputEl: $inputEl && $inputEl[0],\n      $targetEl,\n      targetEl: $targetEl && $targetEl[0],\n      initialized: false,\n      opened: false,\n      url: self.params.url,\n      modules: {\n        'alpha-slider': moduleAlphaSlider,\n        'current-color': moduleCurrentColor,\n        hex: moduleHex,\n        // eslint-disable-line\n        'hsb-sliders': moduleHsbSliders,\n        'hue-slider': moduleHueSlider,\n        'brightness-slider': moduleBrightnessSlider,\n        palette: modulePalette,\n        // eslint-disable-line\n        'initial-current-colors': moduleInitialCurrentColors,\n        'rgb-bars': moduleRgbBars,\n        'rgb-sliders': moduleRgbSliders,\n        'sb-spectrum': moduleSbSpectrum,\n        'hs-spectrum': moduleHsSpectrum,\n        wheel: moduleWheel // eslint-disable-line\n      }\n    });\n\n    function onInputClick() {\n      self.open();\n    }\n    function onInputFocus(e) {\n      e.preventDefault();\n    }\n    function onTargetClick() {\n      self.open();\n    }\n    function onHtmlClick(e) {\n      if (self.destroyed || !self.params) return;\n      if (self.params.openIn === 'page') return;\n      const $clickTargetEl = $(e.target);\n      if (!self.opened || self.closing) return;\n      if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n      if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n      if ($inputEl && $inputEl.length > 0) {\n        if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n          self.close();\n        }\n      } else if ($(e.target).closest('.sheet-modal').length === 0) {\n        self.close();\n      }\n    }\n\n    // Events\n    extend(self, {\n      attachInputEvents() {\n        self.$inputEl.on('click', onInputClick);\n        if (self.params.inputReadOnly) {\n          self.$inputEl.on('focus mousedown', onInputFocus);\n          if (self.$inputEl[0]) {\n            self.$inputEl[0].f7ValidateReadonly = true;\n          }\n        }\n      },\n      detachInputEvents() {\n        self.$inputEl.off('click', onInputClick);\n        if (self.params.inputReadOnly) {\n          self.$inputEl.off('focus mousedown', onInputFocus);\n          if (self.$inputEl[0]) {\n            delete self.$inputEl[0].f7ValidateReadonly;\n          }\n        }\n      },\n      attachTargetEvents() {\n        self.$targetEl.on('click', onTargetClick);\n      },\n      detachTargetEvents() {\n        self.$targetEl.off('click', onTargetClick);\n      },\n      attachHtmlEvents() {\n        app.on('click', onHtmlClick);\n      },\n      detachHtmlEvents() {\n        app.off('click', onHtmlClick);\n      }\n    });\n    self.init();\n    return self;\n  }\n  get view() {\n    const {\n      $inputEl,\n      $targetEl,\n      app,\n      params\n    } = this;\n    let view;\n    if (params.view) {\n      view = params.view;\n    } else {\n      if ($inputEl) {\n        view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n      }\n      if (!view && $targetEl) {\n        view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n      }\n    }\n    if (!view) view = app.views.main;\n    return view;\n  }\n  attachEvents() {\n    const self = this;\n    self.centerModules = self.centerModules.bind(self);\n    if (self.params.centerModules) {\n      self.app.on('resize', self.centerModules);\n    }\n  }\n  detachEvents() {\n    const self = this;\n    if (self.params.centerModules) {\n      self.app.off('resize', self.centerModules);\n    }\n  }\n  centerModules() {\n    const self = this;\n    if (!self.opened || !self.$el || self.inline) return;\n    const $pageContentEl = self.$el.find('.page-content');\n    if (!$pageContentEl.length) return;\n    const {\n      scrollHeight,\n      offsetHeight\n    } = $pageContentEl[0];\n    if (scrollHeight <= offsetHeight) {\n      $pageContentEl.addClass('justify-content-center');\n    } else {\n      $pageContentEl.removeClass('justify-content-center');\n    }\n  }\n  initInput() {\n    const self = this;\n    if (!self.$inputEl) return;\n    if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n  }\n  getModalType() {\n    const self = this;\n    const {\n      app,\n      modal,\n      params\n    } = self;\n    const {\n      openIn,\n      openInPhone\n    } = params;\n    const device = getDevice();\n    if (modal && modal.type) return modal.type;\n    if (openIn !== 'auto') return openIn;\n    if (self.inline) return null;\n    if (device.ios) {\n      return device.ipad ? 'popover' : openInPhone;\n    }\n    if (app.width >= 768) {\n      return 'popover';\n    }\n    return openInPhone;\n  }\n  formatValue() {\n    const self = this;\n    const {\n      value\n    } = self;\n    if (self.params.formatValue) {\n      return self.params.formatValue.call(self, value);\n    }\n    return value.hex;\n  }\n\n  // eslint-disable-next-line\n  normalizeHsValues(arr) {\n    return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];\n  }\n  setValue(value, updateModules) {\n    if (value === void 0) {\n      value = {};\n    }\n    if (updateModules === void 0) {\n      updateModules = true;\n    }\n    const self = this;\n    if (typeof value === 'undefined') return;\n    let {\n      hex,\n      rgb,\n      hsl,\n      hsb,\n      alpha = 1,\n      hue,\n      rgba,\n      hsla\n    } = self.value || {};\n    const needChangeEvent = self.value || !self.value && !self.params.value;\n    let valueChanged;\n    Object.keys(value).forEach(k => {\n      if (!self.value || typeof self.value[k] === 'undefined') {\n        valueChanged = true;\n        return;\n      }\n      const v = value[k];\n      if (Array.isArray(v)) {\n        v.forEach((subV, subIndex) => {\n          if (subV !== self.value[k][subIndex]) {\n            valueChanged = true;\n          }\n        });\n      } else if (v !== self.value[k]) {\n        valueChanged = true;\n      }\n    });\n    if (!valueChanged) return;\n    if (value.rgb || value.rgba) {\n      const [r, g, b, a = alpha] = value.rgb || value.rgba;\n      rgb = [r, g, b];\n      hex = colorRgbToHex(...rgb);\n      hsl = colorRgbToHsl(...rgb);\n      hsb = colorHslToHsb(...hsl);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      alpha = a;\n      rgba = [rgb[0], rgb[1], rgb[2], a];\n      hsla = [hsl[0], hsl[1], hsl[2], a];\n    }\n    if (value.hsl || value.hsla) {\n      const [h, s, l, a = alpha] = value.hsl || value.hsla;\n      hsl = [h, s, l];\n      rgb = colorHslToRgb(...hsl);\n      hex = colorRgbToHex(...rgb);\n      hsb = colorHslToHsb(...hsl);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      alpha = a;\n      rgba = [rgb[0], rgb[1], rgb[2], a];\n      hsla = [hsl[0], hsl[1], hsl[2], a];\n    }\n    if (value.hsb) {\n      const [h, s, b, a = alpha] = value.hsb;\n      hsb = [h, s, b];\n      hsl = colorHsbToHsl(...hsb);\n      rgb = colorHslToRgb(...hsl);\n      hex = colorRgbToHex(...rgb);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      alpha = a;\n      rgba = [rgb[0], rgb[1], rgb[2], a];\n      hsla = [hsl[0], hsl[1], hsl[2], a];\n    }\n    if (value.hex) {\n      rgb = colorHexToRgb(value.hex);\n      hex = colorRgbToHex(...rgb);\n      hsl = colorRgbToHsl(...rgb);\n      hsb = colorHslToHsb(...hsl);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      rgba = [rgb[0], rgb[1], rgb[2], alpha];\n      hsla = [hsl[0], hsl[1], hsl[2], alpha];\n    }\n    if (typeof value.alpha !== 'undefined') {\n      alpha = value.alpha;\n      if (typeof rgb !== 'undefined') {\n        rgba = [rgb[0], rgb[1], rgb[2], alpha];\n      }\n      if (typeof hsl !== 'undefined') {\n        hsla = [hsl[0], hsl[1], hsl[2], alpha];\n      }\n    }\n    if (typeof value.hue !== 'undefined') {\n      const [h, s, l] = hsl; // eslint-disable-line\n      hsl = [value.hue, s, l];\n      hsb = colorHslToHsb(...hsl);\n      rgb = colorHslToRgb(...hsl);\n      hex = colorRgbToHex(...rgb);\n      hsl = self.normalizeHsValues(hsl);\n      hsb = self.normalizeHsValues(hsb);\n      hue = hsb[0];\n      rgba = [rgb[0], rgb[1], rgb[2], alpha];\n      hsla = [hsl[0], hsl[1], hsl[2], alpha];\n    }\n    self.value = {\n      hex,\n      alpha,\n      hue,\n      rgb,\n      hsl,\n      hsb,\n      rgba,\n      hsla\n    };\n    if (!self.initialValue) self.initialValue = extend({}, self.value);\n    self.updateValue(needChangeEvent);\n    if (self.opened && updateModules) {\n      self.updateModules();\n    }\n  }\n  getValue() {\n    const self = this;\n    return self.value;\n  }\n  updateValue(fireEvents) {\n    if (fireEvents === void 0) {\n      fireEvents = true;\n    }\n    const self = this;\n    const {\n      $inputEl,\n      value,\n      $targetEl\n    } = self;\n    if ($targetEl && self.params.targetElSetBackgroundColor) {\n      const {\n        rgba\n      } = value;\n      $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n    }\n    if (fireEvents) {\n      self.emit('local::change colorPickerChange', self, value);\n    }\n    if ($inputEl && $inputEl.length) {\n      const inputValue = self.formatValue(value);\n      if ($inputEl && $inputEl.length) {\n        $inputEl.val(inputValue);\n        if (fireEvents) {\n          $inputEl.trigger('change');\n        }\n      }\n    }\n  }\n  updateModules() {\n    const self = this;\n    const {\n      modules\n    } = self;\n    self.params.modules.forEach(m => {\n      if (typeof m === 'string' && modules[m] && modules[m].update) {\n        modules[m].update(self);\n      } else if (m && m.update) {\n        m.update(self);\n      }\n    });\n  }\n  update() {\n    const self = this;\n    self.updateModules();\n  }\n  renderPicker() {\n    const self = this;\n    const {\n      params,\n      modules\n    } = self;\n    let html = '';\n    params.modules.forEach(m => {\n      if (typeof m === 'string' && modules[m] && modules[m].render) {\n        html += modules[m].render(self);\n      } else if (m && m.render) {\n        html += m.render(self);\n      }\n    });\n    return html;\n  }\n  renderNavbar() {\n    const self = this;\n    if (self.params.renderNavbar) {\n      return self.params.renderNavbar.call(self, self);\n    }\n    const {\n      openIn,\n      navbarTitleText,\n      navbarBackLinkText,\n      navbarCloseText\n    } = self.params;\n    return $jsx(\"div\", {\n      class: \"navbar\"\n    }, $jsx(\"div\", {\n      class: \"navbar-bg\"\n    }), $jsx(\"div\", {\n      class: \"navbar-inner sliding\"\n    }, openIn === 'page' && $jsx(\"div\", {\n      class: \"left\"\n    }, $jsx(\"a\", {\n      class: \"link back\"\n    }, $jsx(\"i\", {\n      class: \"icon icon-back\"\n    }), $jsx(\"span\", {\n      class: \"if-not-md\"\n    }, navbarBackLinkText))), $jsx(\"div\", {\n      class: \"title\"\n    }, navbarTitleText), openIn !== 'page' && $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link popup-close\",\n      \"data-popup\": \".color-picker-popup\"\n    }, navbarCloseText))));\n  }\n  renderToolbar() {\n    const self = this;\n    if (self.params.renderToolbar) {\n      return self.params.renderToolbar.call(self, self);\n    }\n    return $jsx(\"div\", {\n      class: \"toolbar toolbar-top\"\n    }, $jsx(\"div\", {\n      class: \"toolbar-inner\"\n    }, $jsx(\"div\", {\n      class: \"left\"\n    }), $jsx(\"div\", {\n      class: \"right\"\n    }, $jsx(\"a\", {\n      class: \"link sheet-close popover-close\",\n      \"data-sheet\": \".color-picker-sheet-modal\",\n      \"data-popover\": \".color-picker-popover\"\n    }, self.params.toolbarCloseText))));\n  }\n  renderInline() {\n    const self = this;\n    const {\n      cssClass,\n      groupedModules\n    } = self.params;\n    return $jsx(\"div\", {\n      class: `color-picker color-picker-inline ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n    }, self.renderPicker());\n  }\n  renderSheet() {\n    const self = this;\n    const {\n      cssClass,\n      toolbarSheet,\n      groupedModules\n    } = self.params;\n    return $jsx(\"div\", {\n      class: `sheet-modal color-picker color-picker-sheet-modal ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n    }, toolbarSheet && self.renderToolbar(), $jsx(\"div\", {\n      class: \"sheet-modal-inner\"\n    }, $jsx(\"div\", {\n      class: \"page-content\"\n    }, self.renderPicker())));\n  }\n  renderPopover() {\n    const self = this;\n    const {\n      cssClass,\n      toolbarPopover,\n      groupedModules\n    } = self.params;\n    return $jsx(\"div\", {\n      class: `popover color-picker-popover ${cssClass || ''}`\n    }, $jsx(\"div\", {\n      class: \"popover-inner\"\n    }, $jsx(\"div\", {\n      class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n    }, toolbarPopover && self.renderToolbar(), $jsx(\"div\", {\n      class: \"page-content\"\n    }, self.renderPicker()))));\n  }\n  renderPopup() {\n    const self = this;\n    const {\n      cssClass,\n      navbarPopup,\n      groupedModules\n    } = self.params;\n    return $jsx(\"div\", {\n      class: `popup color-picker-popup ${cssClass || ''}`\n    }, $jsx(\"div\", {\n      class: \"page\"\n    }, navbarPopup && self.renderNavbar(), $jsx(\"div\", {\n      class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n    }, $jsx(\"div\", {\n      class: \"page-content\"\n    }, self.renderPicker()))));\n  }\n  renderPage() {\n    const self = this;\n    const {\n      cssClass,\n      groupedModules\n    } = self.params;\n    return $jsx(\"div\", {\n      class: `page color-picker-page ${cssClass || ''}`,\n      \"data-name\": \"color-picker-page\"\n    }, self.renderNavbar(), $jsx(\"div\", {\n      class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n    }, $jsx(\"div\", {\n      class: \"page-content\"\n    }, self.renderPicker())));\n  }\n\n  // eslint-disable-next-line\n  render() {\n    const self = this;\n    const {\n      params\n    } = self;\n    if (params.render) return params.render.call(self);\n    if (self.inline) return self.renderInline();\n    if (params.openIn === 'page') {\n      return self.renderPage();\n    }\n    const modalType = self.getModalType();\n    if (modalType === 'popover') return self.renderPopover();\n    if (modalType === 'sheet') return self.renderSheet();\n    if (modalType === 'popup') return self.renderPopup();\n  }\n  onOpen() {\n    const self = this;\n    const {\n      initialized,\n      $el,\n      app,\n      $inputEl,\n      inline,\n      value,\n      params,\n      modules\n    } = self;\n    self.closing = false;\n    self.opened = true;\n    self.opening = true;\n\n    // Init main events\n    self.attachEvents();\n    params.modules.forEach(m => {\n      if (typeof m === 'string' && modules[m] && modules[m].init) {\n        modules[m].init(self);\n      } else if (m && m.init) {\n        m.init(self);\n      }\n    });\n    const updateValue = !value && params.value;\n\n    // Set value\n    if (!initialized) {\n      if (value) self.setValue(value);else if (params.value) {\n        self.setValue(params.value, false);\n      } else if (!params.value) {\n        self.setValue({\n          hex: '#ff0000'\n        }, false);\n      }\n    } else if (value) {\n      self.initialValue = extend({}, value);\n      self.setValue(value, false);\n    }\n\n    // Update input value\n    if (updateValue) self.updateValue();\n    self.updateModules();\n\n    // Center modules\n    if (params.centerModules) {\n      self.centerModules();\n    }\n\n    // Extra focus\n    if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n      $inputEl.trigger('focus');\n    }\n    self.initialized = true;\n\n    // Trigger events\n    if ($el) {\n      $el.trigger('colorpicker:open');\n    }\n    if ($inputEl) {\n      $inputEl.trigger('colorpicker:open');\n    }\n    self.emit('local::open colorPickerOpen', self);\n  }\n  onOpened() {\n    const self = this;\n    self.opening = false;\n    if (self.$el) {\n      self.$el.trigger('colorpicker:opened');\n    }\n    if (self.$inputEl) {\n      self.$inputEl.trigger('colorpicker:opened');\n    }\n    self.emit('local::opened colorPickerOpened', self);\n  }\n  onClose() {\n    const self = this;\n    const {\n      app,\n      params,\n      modules\n    } = self;\n    self.opening = false;\n    self.closing = true;\n\n    // Detach events\n    self.detachEvents();\n    if (self.$inputEl) {\n      if (app.theme === 'md') {\n        self.$inputEl.trigger('blur');\n      } else {\n        const validate = self.$inputEl.attr('validate');\n        const required = self.$inputEl.attr('required');\n        if (validate && required) {\n          app.input.validate(self.$inputEl);\n        }\n      }\n    }\n    params.modules.forEach(m => {\n      if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n        modules[m].destroy(self);\n      } else if (m && m.destroy) {\n        m.destroy(self);\n      }\n    });\n    if (self.$el) {\n      self.$el.trigger('colorpicker:close');\n    }\n    if (self.$inputEl) {\n      self.$inputEl.trigger('colorpicker:close');\n    }\n    self.emit('local::close colorPickerClose', self);\n  }\n  onClosed() {\n    const self = this;\n    self.opened = false;\n    self.closing = false;\n    if (!self.inline) {\n      nextTick(() => {\n        if (self.modal && self.modal.el && self.modal.destroy) {\n          if (!self.params.routableModals) {\n            self.modal.destroy();\n          }\n        }\n        delete self.modal;\n      });\n    }\n    if (self.$el) {\n      self.$el.trigger('colorpicker:closed');\n    }\n    if (self.$inputEl) {\n      self.$inputEl.trigger('colorpicker:closed');\n    }\n    self.emit('local::closed colorPickerClosed', self);\n  }\n  open() {\n    const self = this;\n    const {\n      app,\n      opened,\n      inline,\n      $inputEl,\n      $targetEl,\n      params\n    } = self;\n    if (opened) return;\n    if (inline) {\n      self.$el = $(self.render());\n      self.$el[0].f7ColorPicker = self;\n      self.$containerEl.append(self.$el);\n      self.onOpen();\n      self.onOpened();\n      return;\n    }\n    const colorPickerContent = self.render();\n    if (params.openIn === 'page') {\n      self.view.router.navigate({\n        url: self.url,\n        route: {\n          content: colorPickerContent,\n          path: self.url,\n          on: {\n            pageBeforeIn(e, page) {\n              self.$el = page.$el.find('.color-picker');\n              self.$el[0].f7ColorPicker = self;\n              self.onOpen();\n            },\n            pageAfterIn() {\n              self.onOpened();\n            },\n            pageBeforeOut() {\n              self.onClose();\n            },\n            pageAfterOut() {\n              self.onClosed();\n              if (self.$el && self.$el[0]) {\n                self.$el[0].f7ColorPicker = null;\n                delete self.$el[0].f7ColorPicker;\n              }\n            }\n          }\n        }\n      });\n    } else {\n      const modalType = self.getModalType();\n      let backdrop = params.backdrop;\n      if (backdrop === null || typeof backdrop === 'undefined') {\n        if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n        if (modalType === 'popup') backdrop = true;\n      }\n      const modalParams = {\n        targetEl: $targetEl || $inputEl,\n        scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n        content: colorPickerContent,\n        backdrop,\n        closeByBackdropClick: params.closeByBackdropClick,\n        on: {\n          open() {\n            const modal = this;\n            self.modal = modal;\n            self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n            self.$el[0].f7ColorPicker = self;\n            self.onOpen();\n          },\n          opened() {\n            self.onOpened();\n          },\n          close() {\n            self.onClose();\n          },\n          closed() {\n            self.onClosed();\n            if (self.$el && self.$el[0]) {\n              self.$el[0].f7ColorPicker = null;\n              delete self.$el[0].f7ColorPicker;\n            }\n          }\n        }\n      };\n      if (modalType === 'popup') {\n        modalParams.push = params.popupPush;\n        modalParams.swipeToClose = params.popupSwipeToClose;\n      }\n      if (modalType === 'sheet') {\n        modalParams.push = params.sheetPush;\n        modalParams.swipeToClose = params.sheetSwipeToClose;\n      }\n      if (params.routableModals && self.view) {\n        self.view.router.navigate({\n          url: self.url,\n          route: {\n            path: self.url,\n            [modalType]: modalParams\n          }\n        });\n      } else {\n        self.modal = app[modalType].create(modalParams);\n        self.modal.open();\n      }\n    }\n  }\n  close() {\n    const self = this;\n    const {\n      opened,\n      inline\n    } = self;\n    if (!opened) return;\n    if (inline) {\n      self.onClose();\n      self.onClosed();\n      return;\n    }\n    if (self.params.routableModals && self.view || self.params.openIn === 'page') {\n      self.view.router.back();\n    } else {\n      self.modal.close();\n    }\n  }\n  init() {\n    const self = this;\n    self.initInput();\n    if (self.inline) {\n      self.open();\n      self.emit('local::init colorPickerInit', self);\n      return;\n    }\n    if (!self.initialized && self.params.value) {\n      self.setValue(self.params.value);\n    }\n\n    // Attach input Events\n    if (self.$inputEl) {\n      self.attachInputEvents();\n    }\n    if (self.$targetEl) {\n      self.attachTargetEvents();\n    }\n    if (self.params.closeByOutsideClick) {\n      self.attachHtmlEvents();\n    }\n    self.emit('local::init colorPickerInit', self);\n  }\n  destroy() {\n    const self = this;\n    if (self.destroyed) return;\n    const {\n      $el\n    } = self;\n    self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n    if ($el) $el.trigger('colorpicker:beforedestroy');\n    self.close();\n\n    // Detach Events\n    self.detachEvents();\n    if (self.$inputEl) {\n      self.detachInputEvents();\n    }\n    if (self.$targetEl) {\n      self.detachTargetEvents();\n    }\n    if (self.params.closeByOutsideClick) {\n      self.detachHtmlEvents();\n    }\n    if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n    deleteProps(self);\n    self.destroyed = true;\n  }\n}\nexport default ColorPicker;", "import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\nexport default {\n  name: 'colorPicker',\n  static: {\n    ColorPicker\n  },\n  create() {\n    const app = this;\n    app.colorPicker = ConstructorMethods({\n      defaultSelector: '.color-picker',\n      constructor: ColorPicker,\n      app,\n      domProp: 'f7ColorPicker'\n    });\n    app.colorPicker.close = function close(el) {\n      if (el === void 0) {\n        el = '.color-picker';\n      }\n      const $el = $(el);\n      if ($el.length === 0) return;\n      const colorPicker = $el[0].f7ColorPicker;\n      if (!colorPicker || colorPicker && !colorPicker.opened) return;\n      colorPicker.close();\n    };\n  },\n  params: {\n    colorPicker: {\n      // Color picker settings\n      value: null,\n      modules: ['wheel'],\n      palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],\n      groupedModules: false,\n      centerModules: true,\n      sliderLabel: false,\n      sliderValue: false,\n      sliderValueEdiable: false,\n      barLabel: false,\n      barValue: false,\n      barValueEdiable: false,\n      hexLabel: false,\n      hexValueEditable: false,\n      redLabelText: 'R',\n      greenLabelText: 'G',\n      blueLabelText: 'B',\n      hueLabelText: 'H',\n      saturationLabelText: 'S',\n      brightnessLabelText: 'B',\n      hexLabelText: 'HEX',\n      alphaLabelText: 'A',\n      // Common opener settings\n      containerEl: null,\n      openIn: 'popover',\n      // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n      openInPhone: 'popup',\n      // or 'popover' or 'sheet' or 'popup' or 'page'\n      popupPush: false,\n      popupSwipeToClose: undefined,\n      sheetPush: false,\n      sheetSwipeToClose: undefined,\n      formatValue: null,\n      targetEl: null,\n      targetElSetBackgroundColor: false,\n      inputEl: null,\n      inputReadOnly: true,\n      closeByOutsideClick: true,\n      scrollToInput: true,\n      toolbarSheet: true,\n      toolbarPopover: false,\n      toolbarCloseText: 'Done',\n      navbarPopup: true,\n      navbarCloseText: 'Done',\n      navbarTitleText: 'Color',\n      navbarBackLinkText: 'Back',\n      cssClass: null,\n      routableModals: false,\n      view: null,\n      url: 'color/',\n      backdrop: null,\n      closeByBackdropClick: true,\n      // Render functions\n      renderToolbar: null,\n      renderNavbar: null,\n      renderInline: null,\n      renderPopover: null,\n      renderSheet: null,\n      renderPopup: null,\n      render: null\n    }\n  }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Treeview = {\n  open(itemEl) {\n    const app = this;\n    const $itemEl = $(itemEl).eq(0);\n    if (!$itemEl.length) return;\n    $itemEl.addClass('treeview-item-opened');\n    $itemEl.trigger('treeview:open');\n    app.emit('treeviewOpen', $itemEl[0]);\n    function done(cancel) {\n      if (cancel) {\n        $itemEl.removeClass('treeview-item-opened');\n        $itemEl.trigger('treeview:close');\n        app.emit('treeviewClose', $itemEl[0]);\n      } else {\n        $itemEl[0].f7TreeviewChildrenLoaded = true;\n      }\n      $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n      $itemEl.find('.treeview-preloader').remove();\n    }\n    if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n      const preloaders = {\n        iosPreloaderContent,\n        mdPreloaderContent\n      };\n      $itemEl.trigger('treeview:loadchildren', done);\n      app.emit('treeviewLoadChildren', $itemEl[0], done);\n      $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n      $itemEl.find('.treeview-item-root').prepend(`<div class=\"preloader treeview-preloader\">${preloaders[`${app.theme}PreloaderContent`]}</div>`);\n    }\n  },\n  close(itemEl) {\n    const app = this;\n    const $itemEl = $(itemEl).eq(0);\n    if (!$itemEl.length) return;\n    $itemEl.removeClass('treeview-item-opened');\n    $itemEl.trigger('treeview:close');\n    app.emit('treeviewClose', $itemEl[0]);\n  },\n  toggle(itemEl) {\n    const app = this;\n    const $itemEl = $(itemEl).eq(0);\n    if (!$itemEl.length) return;\n    const wasOpened = $itemEl.hasClass('treeview-item-opened');\n    app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n  }\n};\nexport default {\n  name: 'treeview',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      treeview: Treeview\n    });\n  },\n  clicks: {\n    '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n      const app = this;\n      if ($clickedEl.parents('.treeview-item-toggle').length) return;\n      const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n      if (!$treeviewItemEl.length) return;\n      e.preventF7Router = true;\n      app.treeview.toggle($treeviewItemEl[0]);\n    },\n    '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n      const app = this;\n      const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n      if (!$treeviewItemEl.length) return;\n      e.preventF7Router = true;\n      app.treeview.toggle($treeviewItemEl[0]);\n    }\n  }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst textEditorButtonsMap = {\n  // f7-icon, material-icon, command\n  bold: ['bold', 'format_bold', 'bold'],\n  italic: ['italic', 'format_italic', 'italic'],\n  underline: ['underline', 'format_underlined', 'underline'],\n  strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n  orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n  unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n  link: ['link', 'link', 'createLink'],\n  image: ['photo', 'image', 'insertImage'],\n  paragraph: ['paragraph', '<i class=\"icon\">¶</i>', 'formatBlock.P'],\n  h1: ['<i class=\"icon\">H<sub>1</sub></i>', '<i class=\"icon\">H<sub>1</sub></i>', 'formatBlock.H1'],\n  h2: ['<i class=\"icon\">H<sub>2</sub></i>', '<i class=\"icon\">H<sub>2</sub></i>', 'formatBlock.H2'],\n  h3: ['<i class=\"icon\">H<sub>3</sub></i>', '<i class=\"icon\">H<sub>3</sub></i>', 'formatBlock.H3'],\n  alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n  alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n  alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n  alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n  subscript: ['textformat_subscript', '<i class=\"icon\">A<sub>1</sub></i>', 'subscript'],\n  superscript: ['textformat_superscript', '<i class=\"icon\">A<sup>1</sup></i>', 'superscript'],\n  indent: ['increase_indent', 'format_indent_increase', 'indent'],\n  outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']\n};\nclass TextEditor extends Framework7Class {\n  constructor(app, params) {\n    super(params, [app]);\n    const self = this;\n    const document = getDocument();\n    const device = getDevice();\n    const defaults = extend({}, app.params.textEditor);\n\n    // Extend defaults with modules params\n    self.useModulesParams(defaults);\n    self.params = extend(defaults, params);\n    const el = self.params.el;\n    if (!el) return self;\n    const $el = $(el);\n    if ($el.length === 0) return self;\n    if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n    let $contentEl = $el.children('.text-editor-content');\n    if (!$contentEl.length) {\n      $el.append('<div class=\"text-editor-content\" contenteditable></div>');\n      $contentEl = $el.children('.text-editor-content');\n    }\n    extend(self, {\n      app,\n      $el,\n      el: $el[0],\n      $contentEl,\n      contentEl: $contentEl[0]\n    });\n    if ('value' in params) {\n      self.value = self.params.value;\n    }\n    if (self.params.mode === 'keyboard-toolbar') {\n      if (!(device.cordova || device.capacitor) && !device.android) {\n        self.params.mode = 'popover';\n      }\n    }\n    if (typeof self.params.buttons === 'string') {\n      try {\n        self.params.buttons = JSON.parse(self.params.buttons);\n      } catch (err) {\n        throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n      }\n    }\n    $el[0].f7TextEditor = self;\n\n    // Bind\n    self.onButtonClick = self.onButtonClick.bind(self);\n    self.onFocus = self.onFocus.bind(self);\n    self.onBlur = self.onBlur.bind(self);\n    self.onInput = self.onInput.bind(self);\n    self.onPaste = self.onPaste.bind(self);\n    self.onSelectionChange = self.onSelectionChange.bind(self);\n    self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n    // Handle Events\n    self.attachEvents = function attachEvents() {\n      if (self.params.mode === 'toolbar') {\n        self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n      }\n      if (self.params.mode === 'keyboard-toolbar') {\n        self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n        self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n      }\n      if (self.params.mode === 'popover' && self.popover) {\n        self.popover.$el.on('click', 'button', self.onButtonClick);\n      }\n      self.$contentEl.on('paste', self.onPaste);\n      self.$contentEl.on('focus', self.onFocus);\n      self.$contentEl.on('blur', self.onBlur);\n      self.$contentEl.on('input', self.onInput, true);\n      $(document).on('selectionchange', self.onSelectionChange);\n    };\n    self.detachEvents = function detachEvents() {\n      if (self.params.mode === 'toolbar') {\n        self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n      }\n      if (self.params.mode === 'keyboard-toolbar') {\n        self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n        self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n      }\n      if (self.params.mode === 'popover' && self.popover) {\n        self.popover.$el.off('click', 'button', self.onButtonClick);\n      }\n      self.$contentEl.off('paste', self.onPaste);\n      self.$contentEl.off('focus', self.onFocus);\n      self.$contentEl.off('blur', self.onBlur);\n      self.$contentEl.off('input', self.onInput, true);\n      $(document).off('selectionchange', self.onSelectionChange);\n    };\n\n    // Install Modules\n    self.useModules();\n\n    // Init\n    self.init();\n    return self;\n  }\n  setValue(newValue) {\n    const self = this;\n    const currentValue = self.value;\n    if (currentValue === newValue) return self;\n    self.value = newValue;\n    self.$contentEl.html(newValue);\n    self.$el.trigger('texteditor:change', self.value);\n    self.emit('local::change textEditorChange', self, self.value);\n    return self;\n  }\n  getValue() {\n    const self = this;\n    return self.value;\n  }\n  clearValue() {\n    const self = this;\n    self.setValue('');\n    if (self.params.placeholder && !self.$contentEl.html()) {\n      self.insertPlaceholder();\n    }\n    return self;\n  }\n  createLink() {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    const currentSelection = window.getSelection();\n    const selectedNodes = [];\n    let $selectedLinks;\n    if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n      let anchorNode = currentSelection.anchorNode;\n      while (anchorNode) {\n        selectedNodes.push(anchorNode);\n        if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n          anchorNode = null;\n        }\n        if (anchorNode) {\n          anchorNode = anchorNode.nextSibling;\n        }\n      }\n      const selectedNodesLinks = [];\n      const $selectedNodes = $(selectedNodes);\n      for (let i = 0; i < $selectedNodes.length; i += 1) {\n        const childNodes = $selectedNodes[i].children;\n        if (childNodes) {\n          for (let j = 0; j < childNodes.length; j += 1) {\n            if ($(childNodes[j]).is('a')) {\n              selectedNodesLinks.push(childNodes[j]);\n            }\n          }\n        }\n      }\n      $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n    }\n    if ($selectedLinks && $selectedLinks.length) {\n      $selectedLinks.each(linkNode => {\n        const selection = window.getSelection();\n        const range = document.createRange();\n        range.selectNodeContents(linkNode);\n        selection.removeAllRanges();\n        selection.addRange(range);\n        document.execCommand('unlink', false);\n        selection.removeAllRanges();\n      });\n      return self;\n    }\n    const currentRange = self.getSelectionRange();\n    if (!currentRange) return self;\n    const dialog = self.app.dialog.prompt('', self.params.linkUrlText, link => {\n      if (link && link.trim().length) {\n        self.setSelectionRange(currentRange);\n        document.execCommand('createLink', false, link.trim());\n        self.$el.trigger('texteditor:insertlink', {\n          url: link.trim()\n        });\n        self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n      }\n    });\n    dialog.$el.find('input').focus();\n    return self;\n  }\n  insertImage() {\n    const self = this;\n    const document = getDocument();\n    const currentRange = self.getSelectionRange();\n    if (!currentRange) return self;\n    const dialog = self.app.dialog.prompt('', self.params.imageUrlText, imageUrl => {\n      if (imageUrl && imageUrl.trim().length) {\n        self.setSelectionRange(currentRange);\n        document.execCommand('insertImage', false, imageUrl.trim());\n        self.$el.trigger('texteditor:insertimage', {\n          url: imageUrl.trim()\n        });\n        self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n      }\n    });\n    dialog.$el.find('input').focus();\n    return self;\n  }\n  removePlaceholder() {\n    const self = this;\n    self.$contentEl.find('.text-editor-placeholder').remove();\n  }\n  insertPlaceholder() {\n    const self = this;\n    self.$contentEl.append(`<div class=\"text-editor-placeholder\">${self.params.placeholder}</div>`);\n  }\n  onSelectionChange() {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    if (self.params.mode === 'toolbar') return;\n    const selection = window.getSelection();\n    const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n    if (self.params.mode === 'keyboard-toolbar') {\n      if (!selectionIsInContent) {\n        self.closeKeyboardToolbar();\n      } else {\n        self.openKeyboardToolbar();\n      }\n      return;\n    }\n    if (self.params.mode === 'popover') {\n      const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n      if (!selectionIsInContent && !selectionIsInPopover) {\n        self.closePopover();\n        return;\n      }\n      if (!selection.isCollapsed && selection.rangeCount) {\n        const range = selection.getRangeAt(0);\n        const rect = range.getBoundingClientRect();\n        const rootEl = self.app.$el[0] || document.body;\n        self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);\n      } else if (selection.isCollapsed) {\n        self.closePopover();\n      }\n    }\n  }\n  onPaste(e) {\n    const self = this;\n    const document = getDocument();\n    if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n      const text = e.clipboardData.getData('text/plain');\n      e.preventDefault();\n      document.execCommand('insertText', false, text);\n    }\n  }\n  onInput() {\n    const self = this;\n    const value = self.$contentEl.html();\n    self.value = value;\n    self.$el.trigger('texteditor:input');\n    self.emit('local:input textEditorInput', self, self.value);\n    self.$el.trigger('texteditor:change', self.value);\n    self.emit('local::change textEditorChange', self, self.value);\n  }\n  onFocus() {\n    const self = this;\n    self.removePlaceholder();\n    self.$contentEl.focus();\n    self.$el.trigger('texteditor:focus');\n    self.emit('local::focus textEditorFocus', self);\n  }\n  onBlur() {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    if (self.params.placeholder && self.$contentEl.html() === '') {\n      self.insertPlaceholder();\n    }\n    if (self.params.mode === 'popover') {\n      const selection = window.getSelection();\n      const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n      const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n      if (!inPopover && !selectionIsInContent) {\n        self.closePopover();\n      }\n    }\n    if (self.params.mode === 'keyboard-toolbar') {\n      const selection = window.getSelection();\n      const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n      if (!selectionIsInContent) {\n        self.closeKeyboardToolbar();\n      }\n    }\n    self.$el.trigger('texteditor:blur');\n    self.emit('local::blur textEditorBlur', self);\n  }\n  onButtonClick(e) {\n    const self = this;\n    const window = getWindow();\n    const document = getDocument();\n    const selection = window.getSelection();\n    const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n    if (!selectionIsInContent) return;\n    const $buttonEl = $(e.target).closest('button');\n    if ($buttonEl.parents('form').length) {\n      e.preventDefault();\n    }\n    const button = $buttonEl.attr('data-button');\n    const buttonData = self.params.customButtons && self.params.customButtons[button];\n    if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n    $buttonEl.trigger('texteditor:buttonclick', button);\n    self.emit('local::buttonClick textEditorButtonClick', self, button);\n    if (buttonData) {\n      if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n      return;\n    }\n    const command = textEditorButtonsMap[button][2];\n    if (command === 'createLink') {\n      self.createLink();\n      return;\n    }\n    if (command === 'insertImage') {\n      self.insertImage();\n      return;\n    }\n    if (command.indexOf('formatBlock') === 0) {\n      const tagName = command.split('.')[1];\n      const $anchorNode = $(selection.anchorNode);\n      if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n        document.execCommand('formatBlock', false, 'div');\n      } else {\n        document.execCommand('formatBlock', false, tagName);\n      }\n      return;\n    }\n    document.execCommand(command, false);\n  }\n\n  // eslint-disable-next-line\n  getSelectionRange() {\n    const window = getWindow();\n    const document = getDocument();\n    if (window.getSelection) {\n      const sel = window.getSelection();\n      if (sel.getRangeAt && sel.rangeCount) {\n        return sel.getRangeAt(0);\n      }\n    } else if (document.selection && document.selection.createRange) {\n      return document.selection.createRange();\n    }\n    return null;\n  }\n\n  // eslint-disable-next-line\n  setSelectionRange(range) {\n    const window = getWindow();\n    const document = getDocument();\n    if (range) {\n      if (window.getSelection) {\n        const sel = window.getSelection();\n        sel.removeAllRanges();\n        sel.addRange(range);\n      } else if (document.selection && range.select) {\n        range.select();\n      }\n    }\n  }\n  renderButtons() {\n    const self = this;\n    let html = '';\n    function renderButton(button) {\n      const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n      if (self.params.customButtons && self.params.customButtons[button]) {\n        const buttonData = self.params.customButtons[button];\n        return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${buttonData.content || ''}</button>`;\n      }\n      if (!textEditorButtonsMap[button]) return '';\n      const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n      return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${iconContent.indexOf('<') >= 0 ? iconContent : `<i class=\"${iconClass}\">${iconContent}</i>`}</button>`.trim();\n    }\n    self.params.buttons.forEach((button, buttonIndex) => {\n      if (Array.isArray(button)) {\n        button.forEach(b => {\n          html += renderButton(b);\n        });\n        if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n          html += '<div class=\"text-editor-button-divider\"></div>';\n        }\n      } else {\n        html += renderButton(button);\n      }\n    });\n    return html;\n  }\n  createToolbar() {\n    const self = this;\n    self.$el.prepend(`<div class=\"text-editor-toolbar\">${self.renderButtons()}</div>`);\n  }\n  createKeyboardToolbar() {\n    const self = this;\n    self.$keyboardToolbarEl = $(`<div class=\"toolbar toolbar-bottom text-editor-keyboard-toolbar\"><div class=\"toolbar-inner\">${self.renderButtons()}</div></div>`);\n  }\n  createPopover() {\n    const self = this;\n    self.popover = self.app.popover.create({\n      content: `\n        <div class=\"popover dark text-editor-popover\">\n          <div class=\"popover-inner\">${self.renderButtons()}</div>\n        </div>\n      `,\n      closeByOutsideClick: false,\n      backdrop: false\n    });\n  }\n  openKeyboardToolbar() {\n    const self = this;\n    if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n    self.$el.trigger('texteditor:keyboardopen');\n    self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n    self.app.$el.append(self.$keyboardToolbarEl);\n  }\n  closeKeyboardToolbar() {\n    const self = this;\n    self.$keyboardToolbarEl.remove();\n    self.$el.trigger('texteditor:keyboardclose');\n    self.emit('local::keyboardClose textEditorKeyboardClose', self);\n  }\n  openPopover(targetX, targetY, targetWidth, targetHeight) {\n    const self = this;\n    if (!self.popover) return;\n    Object.assign(self.popover.params, {\n      targetX,\n      targetY,\n      targetWidth,\n      targetHeight\n    });\n    clearTimeout(self.popoverTimeout);\n    self.popoverTimeout = setTimeout(() => {\n      if (!self.popover) return;\n      if (self.popover.opened) {\n        self.popover.resize();\n      } else {\n        self.$el.trigger('texteditor:popoveropen');\n        self.emit('local::popoverOpen textEditorPopoverOpen', self);\n        self.popover.open();\n      }\n    }, 400);\n  }\n  closePopover() {\n    const self = this;\n    clearTimeout(self.popoverTimeout);\n    if (!self.popover || !self.popover.opened) return;\n    self.popoverTimeout = setTimeout(() => {\n      if (!self.popover) return;\n      self.$el.trigger('texteditor:popoverclose');\n      self.emit('local::popoverClose textEditorPopoverClose', self);\n      self.popover.close();\n    }, 400);\n  }\n  init() {\n    const self = this;\n    if (self.value) {\n      self.$contentEl.html(self.value);\n    } else {\n      self.value = self.$contentEl.html();\n    }\n    if (self.params.placeholder && self.value === '') {\n      self.insertPlaceholder();\n    }\n    if (self.params.mode === 'toolbar') {\n      self.createToolbar();\n    } else if (self.params.mode === 'popover') {\n      self.createPopover();\n    } else if (self.params.mode === 'keyboard-toolbar') {\n      self.createKeyboardToolbar();\n    }\n    self.attachEvents();\n    self.$el.trigger('texteditor:init');\n    self.emit('local::init textEditorInit', self);\n    return self;\n  }\n  destroy() {\n    let self = this;\n    self.$el.trigger('texteditor:beforedestroy');\n    self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n    self.detachEvents();\n    if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n      self.$keyboardToolbarEl.remove();\n    }\n    if (self.popover) {\n      self.popover.close(false);\n      self.popover.destroy();\n    }\n    delete self.$el[0].f7TextEditor;\n    deleteProps(self);\n    self = null;\n  }\n}\nexport default TextEditor;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n  name: 'textEditor',\n  params: {\n    textEditor: {\n      el: null,\n      mode: 'toolbar',\n      // or 'popover'\n      value: undefined,\n      // will use html content\n      customButtons: null,\n      buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],\n      dividers: true,\n      imageUrlText: 'Insert image URL',\n      linkUrlText: 'Insert link URL',\n      placeholder: null,\n      clearFormattingOnPaste: true\n    }\n  },\n  create() {\n    const app = this;\n    app.textEditor = extend(ConstructorMethods({\n      defaultSelector: '.text-editor',\n      constructor: TextEditor,\n      app,\n      domProp: 'f7TextEditor'\n    }));\n  },\n  static: {\n    TextEditor\n  },\n  on: {\n    tabMounted(tabEl) {\n      const app = this;\n      $(tabEl).find('.text-editor-init').each(editorEl => {\n        const dataset = $(editorEl).dataset();\n        app.textEditor.create(extend({\n          el: editorEl\n        }, dataset || {}));\n      });\n    },\n    tabBeforeRemove(tabEl) {\n      $(tabEl).find('.text-editor-init').each(editorEl => {\n        if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n      });\n    },\n    pageInit(page) {\n      const app = this;\n      page.$el.find('.text-editor-init').each(editorEl => {\n        const dataset = $(editorEl).dataset();\n        app.textEditor.create(extend({\n          el: editorEl\n        }, dataset || {}));\n      });\n    },\n    pageBeforeRemove(page) {\n      page.$el.find('.text-editor-init').each(editorEl => {\n        if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n      });\n    }\n  },\n  vnode: {\n    'text-editor-init': {\n      insert(vnode) {\n        const app = this;\n        const editorEl = vnode.elm;\n        const dataset = $(editorEl).dataset();\n        app.textEditor.create(extend({\n          el: editorEl\n        }, dataset || {}));\n      },\n      destroy(vnode) {\n        const editorEl = vnode.elm;\n        if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n      }\n    }\n  }\n};", "import { bindMethods } from '../../shared/utils.js';\nconst Breadcrumbs = {};\nexport default {\n  name: 'breadrumbs',\n  create() {\n    const app = this;\n    bindMethods(app, {\n      breadrumbs: Breadcrumbs\n    });\n  }\n};", "export default {\n  name: 'typography'\n};", "/**\n * Framework7 8.3.3\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: March 25, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Dialog from './components/dialog/dialog.js';\nimport Popup from './components/popup/popup.js';\nimport LoginScreen from './components/login-screen/login-screen.js';\nimport Popover from './components/popover/popover.js';\nimport Actions from './components/actions/actions.js';\nimport Sheet from './components/sheet/sheet.js';\nimport Toast from './components/toast/toast.js';\nimport Preloader from './components/preloader/preloader.js';\nimport Progressbar from './components/progressbar/progressbar.js';\nimport Sortable from './components/sortable/sortable.js';\nimport Swipeout from './components/swipeout/swipeout.js';\nimport Accordion from './components/accordion/accordion.js';\nimport ContactsList from './components/contacts-list/contacts-list.js';\nimport VirtualList from './components/virtual-list/virtual-list.js';\nimport ListIndex from './components/list-index/list-index.js';\nimport Timeline from './components/timeline/timeline.js';\nimport Tabs from './components/tabs/tabs.js';\nimport Panel from './components/panel/panel.js';\nimport Card from './components/card/card.js';\nimport Chip from './components/chip/chip.js';\nimport Form from './components/form/form.js';\nimport Input from './components/input/input.js';\nimport Checkbox from './components/checkbox/checkbox.js';\nimport Radio from './components/radio/radio.js';\nimport Toggle from './components/toggle/toggle.js';\nimport Range from './components/range/range.js';\nimport Stepper from './components/stepper/stepper.js';\nimport SmartSelect from './components/smart-select/smart-select.js';\nimport Grid from './components/grid/grid.js';\nimport Calendar from './components/calendar/calendar.js';\nimport Picker from './components/picker/picker.js';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll.js';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh.js';\nimport DataTable from './components/data-table/data-table.js';\nimport Fab from './components/fab/fab.js';\nimport Searchbar from './components/searchbar/searchbar.js';\nimport Messages from './components/messages/messages.js';\nimport Messagebar from './components/messagebar/messagebar.js';\nimport Swiper from './components/swiper/swiper.js';\nimport PhotoBrowser from './components/photo-browser/photo-browser.js';\nimport Notification from './components/notification/notification.js';\nimport Autocomplete from './components/autocomplete/autocomplete.js';\nimport Tooltip from './components/tooltip/tooltip.js';\nimport Skeleton from './components/skeleton/skeleton.js';\nimport ColorPicker from './components/color-picker/color-picker.js';\nimport Treeview from './components/treeview/treeview.js';\nimport TextEditor from './components/text-editor/text-editor.js';\nimport Breadcrumbs from './components/breadcrumbs/breadcrumbs.js';\nimport Typography from './components/typography/typography.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader, Progressbar, Sortable, Swipeout, Accordion, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid, Calendar, Picker, InfiniteScroll, PullToRefresh, DataTable, Fab, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Skeleton, ColorPicker, Treeview, TextEditor, Breadcrumbs, Typography]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n"],
  "mappings": "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S;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AACD,IAAM,gBAAgB,CAAC;AACvB,SAAS,IAAI,GAAG,IAAI,2BAA2B,QAAQ,KAAK,GAAG;AAC7D,QAAM,UAAU,2BAA2B,CAAC,EAAE;AAC9C,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,kBAAc,QAAQ,CAAC,CAAC,IAAI,2BAA2B,CAAC,EAAE;AAAA,EAC5D;AACF;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,IAAI,QAAQ,qBAAqB,OAAK,cAAc,CAAC,KAAK,CAAC;AACpE;AACA,IAAO,4BAAQ;;;ACvQf,IAAM,cAAN,cAA0B,cAAgB;AAAA,EACxC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,KAAK;AACX,UAAMC,YAAW,OAAO;AAAA,MACtB,IAAI,CAAC;AAAA,IACP,GAAG,IAAI,OAAO,WAAW;AAGzB,OAAG,iBAAiBA,SAAQ;AAC5B,OAAG,SAAS,OAAO,CAAC,GAAGA,WAAU,MAAM;AACvC,OAAG,MAAM;AACT,UAAM,MAAM,aAAE,GAAG,OAAO,EAAE,EAAE,GAAG,CAAC;AAChC,QAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,QAAI,IAAI,CAAC,EAAE,cAAe,QAAO,IAAI,CAAC,EAAE;AACxC,UAAM,YAAY,IAAI,KAAK,QAAQ,EAAE,GAAG,CAAC;AACzC,QAAI,UAAU,WAAW,EAAG,QAAO;AACnC,QAAI;AACJ,QAAI,GAAG,OAAO,cAAc;AAC1B,iBAAW,aAAE,GAAG,OAAO,OAAO;AAC9B,UAAI,SAAS,WAAW,GAAG;AACzB,mBAAW,IAAI,KAAK,aAAa;AAAA,MACnC;AACA,UAAI,SAAS,WAAW,GAAG;AACzB,mBAAW,aAAE,gCAAgC;AAC7C,iBAAS,YAAY,IAAI,KAAK,aAAa,CAAC;AAAA,MAC9C;AAAA,IACF;AAGA,QAAI,MAAM,OAAO;AACjB,QAAI,CAAC,KAAK;AACR,UAAI,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,MAAM,MAAM,IAAK,OAAM,IAAI,KAAK,MAAM;AAAA,eAAW,UAAU,KAAK,MAAM,EAAG,OAAM,GAAG,UAAU,KAAK,MAAM,EAAE,YAAY,CAAC;AAAA,IACzJ;AACA,QAAI,CAAC,IAAK,OAAM,GAAG,OAAO;AAC1B,UAAM,WAAW,UAAU,CAAC,EAAE;AAC9B,UAAM,YAAY,WAAW,aAAa;AAC1C,UAAM,WAAW,GAAG;AACpB,WAAO,IAAI;AAAA,MACT;AAAA,MACA,IAAI,IAAI,CAAC;AAAA,MACT;AAAA,MACA,UAAU,UAAU,CAAC;AAAA,MACrB;AAAA,MACA,SAAS,YAAY,SAAS,CAAC;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ,WAAW,GAAG,SAAS,IAAI,QAAQ;AAAA,MACnC,YAAY,UAAU,KAAK,MAAM;AAAA,MACjC,WAAW,UAAU,KAAK,WAAW,KAAK,OAAO;AAAA,IACnD,CAAC;AACD,QAAI,CAAC,EAAE,gBAAgB;AAGvB,aAASC,WAAU;AACjB,SAAG,KAAK;AAAA,IACV;AACA,aAAS,WAAW;AAClB,YAAM,QAAQ,GAAG,UAAU,IAAI;AAC/B,SAAG,IAAI,QAAQ,sBAAsB,KAAK;AAC1C,SAAG,KAAK,mCAAmC,IAAI,KAAK;AACpD,UAAI,GAAG,IAAI;AACT,WAAG,GAAG,WAAW;AAAA,MACnB;AACA,SAAG,aAAa;AAAA,IAClB;AACA,OAAG,eAAe,SAASC,gBAAe;AACxC,UAAI,GAAG,SAASD,QAAO;AACvB,UAAI,GAAG,UAAU,UAAU,QAAQ;AAAA,IACrC;AACA,OAAG,eAAe,SAASE,gBAAe;AACxC,UAAI,IAAI,SAASF,QAAO;AACxB,UAAI,IAAI,UAAU,UAAU,QAAQ;AAAA,IACtC;AACA,aAAS,oBAAoB;AAC3B,UAAI;AACJ,UAAI;AACJ,YAAM,UAAU;AAChB,YAAM,QAAQ,QAAQ;AACtB,UAAI,aAAa,CAAC;AAClB,UAAI;AACJ,UAAI,QAAQ,SAAS,YAAY;AAC/B,iBAAS,IAAI,GAAG,IAAI,GAAG,SAAS,QAAQ,QAAQ,KAAK,GAAG;AACtD,qBAAW,GAAG,SAAS,QAAQ,CAAC;AAChC,cAAI,SAAS,UAAU,OAAO;AAC5B,qBAAS,WAAW,QAAQ;AAAA,UAC9B;AACA,cAAI,SAAS,UAAU;AACrB,wBAAY,SAAS,UAAU,SAAS,QAAQ,YAAY,aAAE,QAAQ,EAAE,KAAK,kBAAkB;AAC/F,mBAAO,aAAa,OAAO,cAAc,cAAc,YAAY,SAAS;AAC5E,uBAAW,KAAK,KAAK,KAAK,CAAC;AAAA,UAC7B;AAAA,QACF;AACA,YAAI,GAAG,WAAW;AAChB,aAAG,eAAe;AAAA,QACpB;AAAA,MACF,OAAO;AACL,mBAAW,GAAG,UAAU,KAAK,iBAAiB,KAAK,IAAI,EAAE,CAAC;AAC1D,YAAI,CAAC,UAAU;AACb,qBAAW,GAAG,UAAU,KAAK,QAAQ,EAAE,OAAO,WAAS,MAAM,UAAU,KAAK,EAAE,CAAC;AAAA,QACjF;AACA,oBAAY,SAAS,UAAU,SAAS,QAAQ,YAAY,aAAE,QAAQ,EAAE,KAAK,YAAY;AACzF,eAAO,aAAa,OAAO,cAAc,cAAc,YAAY,SAAS;AAC5E,qBAAa,CAAC,IAAI;AAClB,WAAG,SAAS,QAAQ;AAAA,MACtB;AACA,SAAG,UAAU,QAAQ,QAAQ;AAC7B,UAAI,GAAG,OAAO,cAAc;AAC1B,WAAG,uBAAuB,UAAU;AAAA,MACtC;AACA,UAAI,GAAG,OAAO,iBAAiB,GAAG,cAAc,SAAS;AACvD,WAAG,MAAM;AAAA,MACX;AAAA,IACF;AACA,OAAG,qBAAqB,SAAS,qBAAqB;AACpD,SAAG,aAAa,GAAG,UAAU,+CAA+C,iBAAiB;AAAA,IAC/F;AACA,OAAG,qBAAqB,SAAS,qBAAqB;AACpD,SAAG,aAAa,IAAI,UAAU,+CAA+C,iBAAiB;AAAA,IAChG;AAGA,OAAG,WAAW;AAGd,OAAG,KAAK;AACR,WAAO;AAAA,EACT;AAAA,EACA,SAAS,OAAO;AACd,UAAM,KAAK;AACX,QAAI,WAAW;AACf,QAAI,aAAa,CAAC;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,GAAG,UAAU;AACf,UAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG,YAAW,CAAC,QAAQ;AAClD,eAAS,IAAI,GAAG,IAAI,GAAG,SAAS,QAAQ,QAAQ,KAAK,GAAG;AACtD,mBAAW,GAAG,SAAS,QAAQ,CAAC;AAChC,YAAI,SAAS,QAAQ,SAAS,KAAK,KAAK,GAAG;AACzC,mBAAS,WAAW;AAAA,QACtB,OAAO;AACL,mBAAS,WAAW;AAAA,QACtB;AACA,YAAI,SAAS,UAAU;AACrB,sBAAY,SAAS,UAAU,SAAS,QAAQ,YAAY,aAAE,QAAQ,EAAE,KAAK,kBAAkB;AAC/F,iBAAO,aAAa,OAAO,cAAc,cAAc,YAAY,SAAS;AAC5E,qBAAW,KAAK,KAAK,KAAK,CAAC;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,OAAO;AACL,iBAAW,GAAG,UAAU,KAAK,iBAAiB,QAAQ,IAAI,EAAE,CAAC;AAC7D,UAAI,UAAU;AACZ,oBAAY,SAAS,UAAU,SAAS,QAAQ,YAAY,aAAE,QAAQ,EAAE,KAAK,YAAY;AACzF,eAAO,aAAa,OAAO,cAAc,cAAc,YAAY,SAAS;AAC5E,qBAAa,CAAC,IAAI;AAAA,MACpB;AACA,SAAG,SAAS,QAAQ;AAAA,IACtB;AACA,QAAI,GAAG,OAAO,cAAc;AAC1B,SAAG,uBAAuB,UAAU;AAAA,IACtC;AACA,OAAG,UAAU,QAAQ,QAAQ;AAC7B,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,cAAc;AAC1B,SAAG,uBAAuB,CAAC,CAAC;AAAA,IAC9B;AACA,OAAG,UAAU,KAAK,QAAQ,EAAE,KAAK,cAAY;AAC3C,eAAS,WAAW;AACpB,eAAS,UAAU;AAAA,IACrB,CAAC;AACD,OAAG,UAAU,CAAC,EAAE,QAAQ;AACxB,QAAI,GAAG,cAAc;AACnB,SAAG,aAAa,KAAK,eAAe,GAAG,SAAS,oCAAoC,GAAG,SAAS,kBAAkB,EAAE,KAAK,WAAW,KAAK;AAAA,IAC3I;AACA,OAAG,UAAU,QAAQ,QAAQ;AAAA,EAC/B;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,WAAO,GAAG,UAAU,IAAI;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI,OAAO,MAAM;AACf,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,QAAQ,OAAO,EAAE,UAAU,IAAI,QAAQ,OAAO,EAAE,CAAC,EAAE;AAAA,IAChE;AACA,QAAI,CAAC,QAAQ,OAAO,WAAW,QAAQ;AACrC,YAAM,MAAM,wCAAwC;AAAA,IACtD;AACA,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,UAAM,KAAK;AACX,UAAM,eAAe,GAAG;AACxB,QAAI,GAAG,SAAS,gBAAgB,UAAU,GAAG,WAAW;AACtD,mBAAa,KAAK,wBAAwB,EAAE,KAAK,aAAW;AAC1D,YAAI,CAAC,QAAQ,SAAS;AACpB,uBAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,SAAS,UAAU;AAAA,QAC9C,OAAO;AACL,uBAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,YAAY,UAAU;AAAA,QACjD;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,mBAAa,KAAK,WAAW,EAAE,YAAY,UAAU;AAAA,IACvD;AAAA,EACF;AAAA,EACA,uBAAuB,QAAQ;AAC7B,UAAM,KAAK;AACX,UAAM,iBAAiB,GAAG,gBAAgB,MAAM;AAChD,QAAI,eAAe,SAAS,GAAG,KAAK,eAAe,SAAS,GAAG,GAAG;AAChE,SAAG,SAAS,KAAK,cAAc;AAAA,IACjC,OAAO;AACL,SAAG,SAAS,KAAK,cAAc;AAAA,IACjC;AAAA,EACF;AAAA,EACA,gBAAgB,QAAQ;AACtB,UAAM,KAAK;AACX,QAAI;AACJ,QAAI,GAAG,OAAO,iBAAiB;AAC7B,kBAAY,GAAG,OAAO,gBAAgB,KAAK,IAAI,QAAQ,EAAE;AAAA,IAC3D,OAAO;AACL,kBAAY,OAAO,KAAK,IAAI;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa,OAAO;AAClB,UAAM,KAAK;AACX,QAAI,aAAa,CAAC;AAClB,QAAI,OAAO,UAAU,aAAa;AAChC,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,qBAAa;AAAA,MACf,OAAO;AACL,qBAAa,CAAC,KAAK;AAAA,MACrB;AAAA,IACF,OAAO;AACL,SAAG,UAAU,KAAK,QAAQ,EAAE,KAAK,cAAY;AAC3C,cAAM,YAAY,aAAE,QAAQ;AAC5B,YAAI,SAAS,UAAU;AACrB,gBAAM,YAAY,SAAS,UAAU,SAAS,QAAQ,YAAY,UAAU,KAAK,kBAAkB;AACnG,cAAI,aAAa,OAAO,cAAc,aAAa;AACjD,uBAAW,KAAK,SAAS;AAAA,UAC3B,OAAO;AACL,uBAAW,KAAK,SAAS,YAAY,KAAK,CAAC;AAAA,UAC7C;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,GAAG,OAAO,cAAc;AAC1B,SAAG,uBAAuB,UAAU;AAAA,IACtC;AAAA,EACF;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,UAAM,QAAQ,GAAG,IAAI;AACrB,UAAM,QAAQ,CAAC;AACf,QAAI;AACJ,OAAG,UAAU,KAAK,QAAQ,EAAE,KAAK,cAAY;AAC3C,YAAM,YAAY,aAAE,QAAQ;AAC5B,YAAM,aAAa,UAAU,QAAQ;AACrC,YAAM,cAAc,WAAW,eAAe,GAAG,OAAO;AACxD,YAAM,aAAa,WAAW,cAAc,GAAG,OAAO;AACtD,YAAM,gBAAgB,UAAU,UAAU,WAAW,iBAAiB,GAAG,OAAO;AAChF,YAAM,eAAe,UAAU,SAAS,WAAW,gBAAgB,GAAG,OAAO;AAC7E,YAAM,0BAA0B,WAAW,qBAAqB,GAAG,OAAO,qBAAqB;AAC/F,YAAM,iBAAiB,eAAe,cAAc,iBAAiB;AACrE,YAAM,cAAc,WAAW;AAC/B,UAAI,kBAAkB,WAAW,eAAe;AAChD,UAAI,UAAU,CAAC,EAAE,SAAU,oBAAmB;AAC9C,YAAM,gBAAgB,UAAU,OAAO,UAAU,EAAE,CAAC;AACpD,YAAM,mBAAmB,iBAAiB,cAAc;AACxD,UAAI,gBAAgB;AACpB,UAAI,iBAAiB,kBAAkB,iBAAiB;AACtD,wBAAgB;AAChB,0BAAkB;AAClB,cAAM,KAAK;AAAA,UACT,YAAY;AAAA,UACZ,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AACA,YAAM,KAAK;AAAA,QACT,OAAO,UAAU,CAAC,EAAE;AAAA,QACpB,MAAM,UAAU,CAAC,EAAE,YAAY,KAAK;AAAA,QACpC,UAAU,UAAU,CAAC,EAAE;AAAA,QACvB,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,mBAAmB;AAAA,QACnB,OAAO;AAAA,QACP,WAAW;AAAA,QACX,UAAU,UAAU,CAAC,EAAE;AAAA,QACvB,IAAI,GAAG;AAAA,QACP,UAAU;AAAA,QACV,UAAU,GAAG,cAAc;AAAA,QAC3B,OAAO,GAAG,cAAc;AAAA,QACxB,WAAW,GAAG;AAAA,QACd,WAAW,GAAG;AAAA,MAChB,CAAC;AAAA,IACH,CAAC;AACD,OAAG,QAAQ;AACX,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,gBAAiB,QAAO,GAAG,OAAO,gBAAgB,KAAK,EAAE;AACvE,WAAO,YAAK,QAAQ;AAAA,MAClB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,SAAS;AAAA,MACf,MAAM;AAAA,MACN,YAAY,GAAG,OAAO,uBAAuB;AAAA,MAC7C,aAAa,GAAG,OAAO;AAAA,IACzB,CAAC,GAAG,YAAK,KAAK;AAAA,MACZ,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,CAAC,CAAC,GAAG,GAAG,OAAO,0BAA0B,YAAK,QAAQ;AAAA,MACpD,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,oBAAoB,CAAC,CAAC;AAAA,EACrC;AAAA,EACA,WAAW,MAAM,OAAO;AACtB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAY,QAAO,GAAG,OAAO,WAAW,KAAK,IAAI,MAAM,KAAK;AAC1E,aAAS,eAAe,WAAW;AACjC,UAAI,cAAc,QAAQ;AACxB,oBAAY;AAAA,MACd;AACA,UAAI,UAAU,QAAQ,GAAG,KAAK,GAAG;AAC/B,eAAO,UAAU,MAAM,GAAG,EAAE,CAAC;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AACA,aAAS,aAAa,WAAW;AAC/B,UAAI,cAAc,QAAQ;AACxB,oBAAY;AAAA,MACd;AACA,UAAI,UAAU,QAAQ,GAAG,KAAK,GAAG;AAC/B,YAAI,YAAY,UAAU,MAAM,GAAG,EAAE,CAAC;AACtC,YAAI,cAAc,KAAM,aAAY;AACpC,YAAI,cAAc,WAAY,aAAY;AAC1C,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,QAAI;AACJ,QAAI,KAAK,SAAS;AAChB,iBAAW,gCAAgC,KAAK,UAAU;AAAA,IAC5D,OAAO;AACL,UAAI,WAAW,KAAK;AACpB,UAAI;AACJ,UAAI,GAAG,OAAO,aAAa;AACzB,cAAM,UAAU,GAAG,SAAS;AAC5B,mBAAW,GAAG,WAAW,QAAQ,QAAQ,KAAK,KAAK,KAAK,IAAI,YAAY,KAAK;AAC7E,YAAI,GAAG,UAAU;AACf,qBAAW,GAAG,YAAY,CAAC,YAAY,QAAQ,WAAW,SAAS,GAAG,WAAW,EAAE;AAAA,QACrF;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,UAAU,QAAQ,WAAW;AACnC,YAAM,cAAc,eAAe,QAAQ,WAAW,UAAU,EAAE;AAClE,YAAM,YAAY,aAAa,QAAQ,WAAW,UAAU,EAAE;AAC9D,iBAAW,YAAK,MAAM;AAAA,QACpB,OAAO,GAAG,KAAK,aAAa,EAAE,GAAG,WAAW,cAAc,EAAE;AAAA,MAC9D,GAAG,YAAK,SAAS;AAAA,QACf,OAAO,QAAQ,KAAK,SAAS,IAAI,KAAK,oBAAoB,QAAQ,KAAK,SAAS,SAAS,KAAK,iBAAiB,KAAK,EAAE;AAAA,MACxH,GAAG,YAAK,SAAS;AAAA,QACf,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,UAAU;AAAA,MACZ,CAAC,GAAG,YAAK,KAAK;AAAA,QACZ,OAAO,aAAa,KAAK,SAAS;AAAA,MACpC,CAAC,GAAG,KAAK,YAAY,YAAK,OAAO;AAAA,QAC/B,OAAO;AAAA,MACT,GAAG,WAAW,YAAK,KAAK;AAAA,QACtB,OAAO,QAAQ,SAAS;AAAA,MAC1B,GAAG,WAAW,GAAG,KAAK,SAAS,YAAK,OAAO;AAAA,QACzC,KAAK,KAAK;AAAA,MACZ,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,QACf,OAAO;AAAA,MACT,GAAG,YAAK,OAAO;AAAA,QACb,OAAO,aAAa,KAAK,QAAQ,eAAe,KAAK,KAAK,KAAK,EAAE;AAAA,MACnE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,IAAI,GAAG,KAAK;AACzE,UAAM,YAAY;AAAA,QACd,GAAG,MAAM,IAAI,CAAC,MAAM,UAAU,GAAG,GAAG,WAAW,MAAM,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AAAA;AAE3E,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAY,QAAO,GAAG,OAAO,WAAW,KAAK,IAAI,GAAG,KAAK;AACvE,QAAI,YAAY,GAAG,OAAO;AAC1B,QAAI,OAAO,cAAc,aAAa;AACpC,YAAM,eAAe,GAAG,IAAI,KAAK,aAAa;AAC9C,kBAAY,aAAa,SAAS,aAAa,KAAK,EAAE,KAAK,IAAI;AAAA,IACjE;AACA,UAAM,WAAW,GAAG,OAAO;AAC3B,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,0BAA0B,QAAQ;AAAA,MACzC,aAAa;AAAA,MACb,oBAAoB,GAAG;AAAA,IACzB,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,UAAU,GAAG,OAAO,mBAAmB,SAAS,GAAG,OAAO,gBAAgB,KAAK,EAAE;AAAA,IAC1F,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO,wBAAwB,GAAG,OAAO,mBAAmB,SAAS,GAAG,OAAO,gBAAgB,KAAK,EAAE;AAAA,IACxG,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,gBAAgB,CAAC,CAAC,GAAG,aAAa,YAAK,OAAO;AAAA,MACzD,OAAO;AAAA,IACT,GAAG,SAAS,GAAG,GAAG,OAAO,aAAa,YAAK,OAAO;AAAA,MAChD,OAAO;AAAA,IACT,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,aAAa,YAAK,OAAO;AAAA,MAC7D,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,6EAA6E,GAAG,EAAE,IAAI,GAAG,OAAO,cAAc,kBAAkB,EAAE,IAAI,GAAG,OAAO,iBAAiB,SAAS,GAAG,OAAO,cAAc,KAAK,EAAE;AAAA,IAClN,GAAG,YAAK,MAAM,MAAM,CAAC,GAAG,OAAO,eAAe,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3E;AAAA,EACA,cAAc;AACZ,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,IAAI,GAAG,KAAK;AACzE,QAAI,YAAY,GAAG,OAAO;AAC1B,QAAI,OAAO,cAAc,aAAa;AACpC,YAAM,eAAe,GAAG,IAAI,KAAK,aAAa;AAC9C,kBAAY,aAAa,SAAS,aAAa,KAAK,EAAE,KAAK,IAAI;AAAA,IACjE;AACA,UAAM,WAAW,GAAG,OAAO,YAAY;AACvC,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,4BAA4B,QAAQ,IAAI,GAAG,OAAO,wBAAwB,4BAA4B,EAAE;AAAA,MAC/G,oBAAoB,GAAG;AAAA,IACzB,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,0BAA0B,GAAG,OAAO,YAAY,wBAAwB,EAAE;AAAA,MACjF,aAAa;AAAA,IACf,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,UAAU,GAAG,OAAO,mBAAmB,SAAS,GAAG,OAAO,gBAAgB,KAAK,EAAE;AAAA,IAC1F,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,aAAa,YAAK,OAAO;AAAA,MAC1B,OAAO;AAAA,IACT,GAAG,SAAS,GAAG,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,MACP,cAAc,yCAAyC,GAAG,UAAU;AAAA,IACtE,GAAG,GAAG,OAAO,kBAAkB,CAAC,GAAG,GAAG,OAAO,aAAa,YAAK,OAAO;AAAA,MACpE,OAAO;AAAA,IACT,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,aAAa,YAAK,OAAO;AAAA,MAC7D,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,6EAA6E,GAAG,EAAE,IAAI,GAAG,OAAO,cAAc,kBAAkB,EAAE,IAAI,GAAG,OAAO,iBAAiB,SAAS,GAAG,OAAO,cAAc,KAAK,EAAE;AAAA,IAClN,GAAG,YAAK,MAAM,MAAM,CAAC,GAAG,OAAO,eAAe,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,EAC7E;AAAA,EACA,cAAc;AACZ,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,IAAI,GAAG,KAAK;AACzE,UAAM,WAAW,GAAG,OAAO;AAE3B,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,kCAAkC,QAAQ;AAAA,MACjD,oBAAoB,GAAG;AAAA,IACzB,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,uBAAuB,GAAG,OAAO,oBAAoB,SAAS,GAAG,OAAO,iBAAiB,KAAK,EAAE;AAAA,IACzG,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAC/C,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,4DAA4D,GAAG,EAAE,IAAI,GAAG,OAAO,cAAc,kBAAkB,EAAE,IAAI,GAAG,OAAO,iBAAiB,SAAS,GAAG,OAAO,cAAc,KAAK,EAAE;AAAA,IACjM,GAAG,YAAK,MAAM,MAAM,CAAC,GAAG,OAAO,eAAe,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,EAC5E;AAAA,EACA,gBAAgB;AACd,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,cAAe,QAAO,GAAG,OAAO,cAAc,KAAK,IAAI,GAAG,KAAK;AAC7E,UAAM,WAAW,GAAG,OAAO;AAE3B,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,gCAAgC,QAAQ;AAAA,MAC/C,oBAAoB,GAAG;AAAA,IACzB,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,4DAA4D,GAAG,EAAE,IAAI,GAAG,OAAO,cAAc,kBAAkB,EAAE,IAAI,GAAG,OAAO,iBAAiB,SAAS,GAAG,OAAO,cAAc,KAAK,EAAE;AAAA,IACjM,GAAG,YAAK,MAAM,MAAM,CAAC,GAAG,OAAO,eAAe,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3E;AAAA,EACA,uBAAuB;AACrB,UAAM,KAAK;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,GAAG,OAAQ,QAAO;AACvB,QAAI,OAAO,aAAa;AACtB,UAAI;AACJ,SAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,UAAU;AACnC,YAAI,OAAO,kBAAkB,eAAe,KAAK,UAAU;AACzD,0BAAgB;AAAA,QAClB;AAAA,MACF,CAAC;AACD,UAAI,OAAO,kBAAkB,aAAa;AACxC,WAAG,GAAG,aAAa,aAAa;AAAA,MAClC;AAAA,IACF,OAAO;AACL,YAAM,kBAAkB,aAAa,KAAK,eAAe,EAAE,QAAQ,IAAI;AACvE,UAAI,CAAC,gBAAgB,OAAQ,QAAO;AACpC,YAAM,gBAAgB,aAAa,KAAK,+BAA+B;AACvE,UAAI,CAAC,cAAc,OAAQ,QAAO;AAClC,oBAAc,UAAU,gBAAgB,OAAO,EAAE,MAAM,cAAc,OAAO,EAAE,MAAM,SAAS,cAAc,IAAI,aAAa,GAAG,EAAE,CAAC;AAAA,IACpI;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,MAAM,aAAa;AACxB,UAAM,KAAK;AACX,UAAM,MAAM,GAAG;AACf,UAAM,eAAe,aAAE,WAAW;AAClC,OAAG,eAAe;AAClB,OAAG,WAAW;AACd,OAAG,SAAS;AAGZ,QAAI,GAAG,OAAO,aAAa;AACzB,SAAG,KAAK,IAAI,YAAY,OAAO;AAAA,QAC7B,IAAI,aAAa,KAAK,eAAe;AAAA,QACrC,OAAO,GAAG;AAAA,QACV,YAAY,GAAG,WAAW,KAAK,EAAE;AAAA,QACjC,QAAQ,GAAG,OAAO;AAAA,QAClB,aAAa,OAAO,MAAM;AACxB,cAAI,KAAK,QAAQ,0BAAiB,KAAK,IAAI,EAAE,YAAY,EAAE,QAAQ,MAAM,KAAK,EAAE,YAAY,CAAC,KAAK,EAAG,QAAO;AAC5G,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,GAAG,OAAO,sBAAsB;AAClC,SAAG,qBAAqB;AAAA,IAC1B;AAGA,QAAI,GAAG,OAAO,WAAW;AACvB,UAAI,eAAe,aAAa,KAAK,YAAY;AACjD,UAAI,SAAS,UAAU,IAAI,UAAU,OAAO;AAC1C,uBAAe,aAAE,IAAI,OAAO,YAAY,YAAY,CAAC,EAAE,KAAK,YAAY;AAAA,MAC1E;AACA,UAAI,GAAG,OAAO,4BAA4B,SAAS,UAAU,SAAS,UAAU;AAC9E,YAAI,cAAc;AAClB,YAAI,OAAO,GAAG,OAAO,4BAA4B,UAAU;AACzD,wBAAc,aAAE,0CAA0C,GAAG,OAAO,uBAAuB,QAAQ;AAAA,QACrG,WAAW,OAAO,GAAG,OAAO,4BAA4B,WAAW;AACjE,wBAAc,aAAE,4DAA4D;AAAA,QAC9E,OAAO;AACL,wBAAc,GAAG,OAAO;AAAA,QAC1B;AACA,YAAI,aAAa;AACf,uBAAa,KAAK,eAAe,EAAE,OAAO,YAAY,CAAC,CAAC;AAAA,QAC1D;AAAA,MACF;AACA,YAAM,kBAAkB,OAAO;AAAA,QAC7B,IAAI;AAAA,QACJ,YAAY,aAAa,KAAK,qBAAqB;AAAA,QACnD,iBAAiB,sBAAsB,GAAG,EAAE;AAAA,QAC5C,UAAU;AAAA,MACZ,GAAG,OAAO,GAAG,OAAO,cAAc,WAAW,GAAG,OAAO,YAAY,CAAC,CAAC;AACrE,SAAG,YAAY,IAAI,UAAU,OAAO,eAAe;AAAA,IACrD;AAGA,QAAI,GAAG,WAAW;AAChB,SAAG,eAAe;AAAA,IACpB;AAGA,QAAI,GAAG,OAAO,eAAe;AAC3B,SAAG,aAAa,KAAK,6BAA6B,GAAG,SAAS,YAAY,EAAE,QAAQ,OAAO,EAAE,KAAK,SAAS,MAAM;AAC/G,WAAG,MAAM;AAAA,MACX,CAAC;AAAA,IACH;AAGA,OAAG,mBAAmB;AACtB,OAAG,IAAI,QAAQ,kBAAkB;AACjC,OAAG,KAAK,+BAA+B,EAAE;AAAA,EAC3C;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,OAAG,IAAI,QAAQ,oBAAoB;AACnC,OAAG,KAAK,mCAAmC,EAAE;AAAA,EAC/C;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,QAAI,GAAG,UAAW;AAGlB,QAAI,GAAG,MAAM,GAAG,GAAG,SAAS;AAC1B,SAAG,GAAG,QAAQ;AACd,SAAG,KAAK;AACR,aAAO,GAAG;AAAA,IACZ;AAGA,QAAI,GAAG,aAAa,GAAG,UAAU,SAAS;AACxC,SAAG,UAAU,QAAQ;AACrB,SAAG,YAAY;AACf,aAAO,GAAG;AAAA,IACZ;AAEA,OAAG,mBAAmB;AACtB,OAAG,IAAI,QAAQ,mBAAmB;AAClC,OAAG,KAAK,iCAAiC,EAAE;AAAA,EAC7C;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,UAAW;AAClB,OAAG,SAAS;AACZ,OAAG,eAAe;AAClB,WAAO,GAAG;AACV,OAAG,IAAI,QAAQ,oBAAoB;AACnC,OAAG,KAAK,mCAAmC,EAAE;AAAA,EAC/C;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,OAAG,aAAa;AAChB,UAAM,WAAW,GAAG,WAAW,GAAG,KAAK;AACvC,OAAG,KAAK,OAAO,SAAS;AAAA,MACtB,KAAK,GAAG;AAAA,MACR,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM,GAAG;AAAA,QACT,IAAI;AAAA,UACF,aAAa,GAAG,MAAM;AACpB,eAAG,OAAO,QAAQ,KAAK,EAAE;AAAA,UAC3B;AAAA,UACA,YAAY,GAAG,MAAM;AACnB,eAAG,SAAS,QAAQ,KAAK,EAAE;AAAA,UAC7B;AAAA,UACA,cAAc,GAAG,MAAM;AACrB,eAAG,QAAQ,QAAQ,KAAK,EAAE;AAAA,UAC5B;AAAA,UACA,aAAa,GAAG,MAAM;AACpB,eAAG,SAAS,QAAQ,KAAK,EAAE;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,OAAG,aAAa;AAChB,UAAM,YAAY,GAAG,YAAY,GAAG,KAAK;AACzC,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,MAAM,GAAG,OAAO;AAAA,MAChB,cAAc,GAAG,OAAO;AAAA,MACxB,sBAAsB,GAAG,OAAO;AAAA,MAChC,IAAI;AAAA,QACF,UAAU,OAAO;AACf,aAAG,OAAO,SAAS,MAAM,EAAE;AAAA,QAC7B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,QACA,WAAW,OAAO;AAChB,aAAG,QAAQ,SAAS,MAAM,EAAE;AAAA,QAC9B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,QAAI,GAAG,OAAO,kBAAkB,GAAG,MAAM;AACvC,SAAG,KAAK,OAAO,SAAS;AAAA,QACtB,KAAK,GAAG;AAAA,QACR,OAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,SAAG,QAAQ,GAAG,IAAI,MAAM,OAAO,WAAW,EAAE,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,OAAG,aAAa;AAChB,UAAM,YAAY,GAAG,YAAY,GAAG,KAAK;AACzC,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,UAAU,GAAG,OAAO;AAAA,MACpB,YAAY,GAAG;AAAA,MACf,qBAAqB;AAAA,MACrB,MAAM,GAAG,OAAO;AAAA,MAChB,cAAc,GAAG,OAAO;AAAA,MACxB,sBAAsB,GAAG,OAAO;AAAA,MAChC,IAAI;AAAA,QACF,UAAU,OAAO;AACf,aAAG,OAAO,SAAS,MAAM,EAAE;AAAA,QAC7B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,QACA,WAAW,OAAO;AAChB,aAAG,QAAQ,SAAS,MAAM,EAAE;AAAA,QAC9B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,QAAI,GAAG,OAAO,kBAAkB,GAAG,MAAM;AACvC,SAAG,KAAK,OAAO,SAAS;AAAA,QACtB,KAAK,GAAG;AAAA,QACR,OAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,SAAG,QAAQ,GAAG,IAAI,MAAM,OAAO,WAAW,EAAE,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,OAAG,aAAa;AAChB,UAAM,cAAc,GAAG,cAAc,GAAG,KAAK;AAC7C,UAAM,gBAAgB;AAAA,MACpB,SAAS;AAAA,MACT,UAAU,GAAG;AAAA,MACb,sBAAsB,GAAG,OAAO;AAAA,MAChC,IAAI;AAAA,QACF,YAAY,SAAS;AACnB,aAAG,OAAO,WAAW,QAAQ,EAAE;AAAA,QACjC;AAAA,QACA,cAAc,SAAS;AACrB,aAAG,SAAS,WAAW,QAAQ,EAAE;AAAA,QACnC;AAAA,QACA,aAAa,SAAS;AACpB,aAAG,QAAQ,WAAW,QAAQ,EAAE;AAAA,QAClC;AAAA,QACA,cAAc,SAAS;AACrB,aAAG,SAAS,WAAW,QAAQ,EAAE;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AACA,QAAI,GAAG,OAAO,kBAAkB,GAAG,MAAM;AACvC,SAAG,KAAK,OAAO,SAAS;AAAA,QACtB,KAAK,GAAG;AAAA,QACR,OAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,SAAS;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,SAAG,QAAQ,GAAG,IAAI,QAAQ,OAAO,aAAa,EAAE,KAAK;AAAA,IACvD;AACA,WAAO;AAAA,EACT;AAAA,EACA,KAAK,MAAM;AACT,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,QAAI,YAAY;AAChB,aAAS,UAAU;AACjB,kBAAY;AAAA,IACd;AACA,QAAI,GAAG,KAAK;AACV,SAAG,IAAI,QAAQ,0BAA0B;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,IACH;AACA,OAAG,KAAK,2CAA2C,IAAI,OAAO;AAC9D,QAAI,UAAW,QAAO;AACtB,UAAM,SAAS,QAAQ,GAAG,OAAO;AACjC,OAAG,OAAO,OAAO,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,UAAU;AAC5C,UAAI,UAAU,EAAG,QAAO,GAAG,YAAY;AACvC,aAAO;AAAA,IACT,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;AACf,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,OAAQ,QAAO;AACvB,QAAI,GAAG,OAAO,kBAAkB,GAAG,QAAQ,GAAG,aAAa,QAAQ;AACjE,SAAG,KAAK,OAAO,KAAK;AAAA,IACtB,OAAO;AACL,SAAG,MAAM,KAAK,eAAe,MAAM;AACjC,iBAAS,MAAM;AACb,cAAI,GAAG,UAAW;AAClB,aAAG,MAAM,QAAQ;AACjB,iBAAO,GAAG;AAAA,QACZ,CAAC;AAAA,MACH,CAAC;AACD,SAAG,MAAM,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,KAAK;AACX,OAAG,aAAa;AAChB,OAAG,aAAa;AAAA,EAClB;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,OAAG,KAAK,iDAAiD,EAAE;AAC3D,OAAG,IAAI,QAAQ,2BAA2B;AAC1C,OAAG,aAAa;AAChB,WAAO,GAAG,IAAI,CAAC,EAAE;AACjB,gBAAY,EAAE;AACd,OAAG,YAAY;AAAA,EACjB;AACF;AACA,IAAO,6BAAQ;;;ACr2Bf,IAAO,uBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,QAAQ;AAAA;AAAA,MAER,WAAW;AAAA,MACX,mBAAmB;AAAA;AAAA,MAEnB,WAAW;AAAA,MACX,mBAAmB;AAAA;AAAA,MAEnB,eAAe;AAAA,MACf,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,qBAAqB;AAAA,MACrB,eAAe;AAAA,MACf,aAAa;AAAA,MACb,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,mBAAmB;AAAA,MACnB,UAAU;AAAA;AAAA;AAAA;AAAA,MAIV,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,eAAe;AAAA,MACf,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,cAAc,OAAO,mBAAmB;AAAA,MAC1C,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC,GAAG;AAAA,MACF,KAAK,eAAe;AAClB,cAAM,KAAK,IAAI,YAAY,IAAI,aAAa;AAC5C,YAAI,MAAM,GAAG,KAAM,QAAO,GAAG,KAAK;AAClC,eAAO;AAAA,MACT;AAAA,MACA,MAAM,eAAe;AACnB,cAAM,KAAK,IAAI,YAAY,IAAI,aAAa;AAC5C,YAAI,MAAM,GAAG,MAAO,QAAO,GAAG,MAAM;AACpC,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAiB;AACxD,YAAI,YAAY,OAAO,OAAO;AAAA,UAC5B,IAAI;AAAA,QACN,GAAG,aAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,mBAAE,KAAK,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAiB;AACxD,YAAI,cAAc,iBAAiB,cAAc,cAAc,SAAS;AACtE,wBAAc,cAAc,QAAQ;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,oBAAoB,EAAE,KAAK,mBAAiB;AACxD,YAAI,YAAY,OAAO,OAAO;AAAA,UAC5B,IAAI;AAAA,QACN,GAAG,aAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,WAAK,IAAI,KAAK,oBAAoB,EAAE,KAAK,mBAAiB;AACxD,YAAI,cAAc,iBAAiB,cAAc,cAAc,SAAS;AACtE,wBAAc,cAAc,QAAQ;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB,SAASG,MAAK,YAAY,MAAM;AAC/C,YAAM,MAAM;AACZ,UAAI,CAAC,WAAW,CAAC,EAAE,eAAe;AAChC,cAAM,KAAK,IAAI,YAAY,OAAO,OAAO;AAAA,UACvC,IAAI;AAAA,QACN,GAAG,IAAI,CAAC;AACR,WAAG,KAAK;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,qBAAqB;AAAA,MACnB,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,gBAAgB,MAAM;AAC5B,YAAI,YAAY,OAAO,OAAO;AAAA,UAC5B,IAAI;AAAA,QACN,GAAG,aAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAAA,MAChC;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,gBAAgB,MAAM;AAC5B,YAAI,cAAc,iBAAiB,cAAc,cAAc,SAAS;AACtE,wBAAc,cAAc,QAAQ;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACzIA,IAAO,eAAQ;AAAA,EACb,MAAM;AACR;;;ACKA,IAAM,WAAN,cAAuB,cAAgB;AAAA,EACrC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,WAAW;AACjB,aAAS,SAAS,OAAO,CAAC,GAAG,IAAI,OAAO,UAAU,MAAM;AACxD,QAAI;AACJ,QAAI,SAAS,OAAO,aAAa;AAC/B,qBAAe,aAAE,SAAS,OAAO,WAAW;AAC5C,UAAI,aAAa,WAAW,EAAG,QAAO;AAAA,IACxC;AACA,QAAI;AACJ,QAAI,SAAS,OAAO,SAAS;AAC3B,iBAAW,aAAE,SAAS,OAAO,OAAO;AAAA,IACtC;AACA,UAAM,eAAe,SAAS,OAAO,cAAc;AACnD,QAAI,WAAW;AACf,QAAI,cAAc;AAChB,iBAAW,IAAI,MAAM,KAAK;AAAA,IAC5B;AACA,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA,aAAa,gBAAgB,aAAa,CAAC;AAAA,MAC3C,QAAQ,gBAAgB,aAAa,SAAS;AAAA,MAC9C;AAAA,MACA,SAAS,YAAY,SAAS,CAAC;AAAA,MAC/B,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,KAAK,SAAS,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,eAAe,SAAS,OAAO,cAAc,CAAC,SAAS,OAAO,eAAe,CAAC,SAAS,OAAO;AAAA,IAChG,CAAC;AACD,aAAS,eAAe,UAAQ;AAC9B,YAAM,YAAY,IAAI,KAAK,eAAe,SAAS,OAAO,QAAQ;AAAA,QAChE,KAAK;AAAA,MACP,CAAC;AACD,aAAO,UAAU,OAAO,IAAI,EAAE,QAAQ,KAAK,EAAE;AAAA,IAC/C;AACA,aAAS,iBAAiB,UAAQ;AAChC,YAAM,YAAY,IAAI,KAAK,eAAe,SAAS,OAAO,QAAQ;AAAA,QAChE,OAAO;AAAA,MACT,CAAC;AACD,aAAO,UAAU,OAAO,IAAI;AAAA,IAC9B;AACA,aAAS,gBAAgB,UAAQ;AAC/B,YAAM,YAAY,IAAI,KAAK,eAAe,SAAS,OAAO,QAAQ;AAAA,QAChE,MAAM;AAAA,MACR,CAAC;AACD,aAAO,UAAU,OAAO,IAAI;AAAA,IAC9B;AACA,aAAS,wBAAwB,UAAQ;AACvC,YAAM,YAAY,IAAI,KAAK,eAAe,SAAS,OAAO,QAAQ,SAAS,OAAO,gBAAgB;AAClG,aAAO,UAAU,OAAO,IAAI;AAAA,IAC9B;AACA,UAAM,sBAAsB,SAAS,sBAAsB,oBAAI,KAAK,CAAC,EAAE,YAAY;AACnF,aAAS,kBAAkB,oBAAoB,QAAQ,IAAI,KAAK,KAAK,oBAAoB,QAAQ,IAAI,KAAK;AAG1G,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS,aAAa;AAC1B,QAAI,eAAe,OAAQ,cAAa;AACxC,QAAI,oBAAoB,OAAQ,mBAAkB;AAClD,QAAI,aAAa,OAAQ,YAAW;AACpC,QAAI,kBAAkB,OAAQ,iBAAgB;AAC9C,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,aAAS,eAAe;AACtB,eAAS,KAAK;AAAA,IAChB;AACA,aAAS,aAAa,GAAG;AACvB,QAAE,eAAe;AAAA,IACnB;AACA,aAAS,eAAe;AACtB,eAAS,SAAS,CAAC,CAAC;AACpB,UAAI,SAAS,QAAQ;AACnB,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AACA,aAAS,YAAY,GAAG;AACtB,YAAM,YAAY,aAAE,EAAE,MAAM;AAC5B,UAAI,SAAS,aAAa,CAAC,SAAS,OAAQ;AAC5C,UAAI,SAAS,UAAU,EAAG;AAC1B,UAAI,CAAC,SAAS,UAAU,SAAS,QAAS;AAC1C,UAAI,UAAU,QAAQ,qBAAqB,EAAE,OAAQ;AACrD,UAAI,SAAS,sBAAsB,SAAS,qBAAqB,SAAS,kBAAmB;AAC7F,UAAI,YAAY,SAAS,SAAS,GAAG;AACnC,YAAI,UAAU,CAAC,MAAM,SAAS,CAAC,KAAK,UAAU,QAAQ,+BAA+B,EAAE,WAAW,GAAG;AACnG,mBAAS,MAAM;AAAA,QACjB;AAAA,MACF,WAAW,aAAE,EAAE,MAAM,EAAE,QAAQ,+BAA+B,EAAE,WAAW,GAAG;AAC5E,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF;AAGA,WAAO,UAAU;AAAA,MACf,oBAAoB;AAClB,iBAAS,SAAS,GAAG,SAAS,YAAY;AAC1C,iBAAS,SAAS,GAAG,eAAe,YAAY;AAChD,YAAI,SAAS,OAAO,eAAe;AACjC,mBAAS,SAAS,GAAG,mBAAmB,YAAY;AACpD,cAAI,SAAS,SAAS,CAAC,GAAG;AACxB,qBAAS,SAAS,CAAC,EAAE,qBAAqB;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,MACA,oBAAoB;AAClB,iBAAS,SAAS,IAAI,SAAS,YAAY;AAC3C,iBAAS,SAAS,IAAI,eAAe,YAAY;AACjD,YAAI,SAAS,OAAO,eAAe;AACjC,mBAAS,SAAS,IAAI,mBAAmB,YAAY;AACrD,cAAI,SAAS,SAAS,CAAC,GAAG;AACxB,mBAAO,SAAS,SAAS,CAAC,EAAE;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AAAA,MACA,mBAAmB;AACjB,YAAI,GAAG,SAAS,WAAW;AAAA,MAC7B;AAAA,MACA,mBAAmB;AACjB,YAAI,IAAI,SAAS,WAAW;AAAA,MAC9B;AAAA,IACF,CAAC;AACD,aAAS,uBAAuB,SAAS,uBAAuB;AAC9D,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,eAAS,iBAAiB,GAAG;AAC3B,YAAI,WAAW,aAAa,CAAC,EAAE,UAAW;AAC1C,oBAAY;AACZ,sBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,wBAAgB;AAChB,sBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,wBAAgB;AAChB,0BAAiB,oBAAI,KAAK,GAAE,QAAQ;AACpC,qBAAa;AACb,yBAAiB;AACjB,sBAAc;AACd,2BAAmB,SAAS;AAAA,MAC9B;AACA,eAAS,gBAAgB,GAAG;AAC1B,YAAI,CAAC,aAAa,CAAC,EAAE,UAAW;AAChC,cAAM;AAAA,UACJ,cAAc;AAAA,QAChB,IAAI;AACJ,wBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,wBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,YAAI,OAAO,gBAAgB,aAAa;AACtC,wBAAc,CAAC,EAAE,eAAe,KAAK,IAAI,gBAAgB,WAAW,IAAI,KAAK,IAAI,gBAAgB,WAAW;AAAA,QAC9G;AACA,YAAI,OAAO,eAAe,CAAC,SAAS,gBAAgB;AAClD,sBAAY;AACZ;AAAA,QACF;AACA,UAAE,eAAe;AACjB,YAAI,SAAS,WAAW;AACtB,sBAAY;AACZ;AAAA,QACF;AACA,yBAAiB;AACjB,YAAI,CAAC,SAAS;AAEZ,oBAAU;AACV,yBAAe,WAAW,CAAC,EAAE;AAC7B,0BAAgB,WAAW,CAAC,EAAE;AAC9B,qBAAW,WAAW,CAAC;AAAA,QACzB;AACA,sBAAc,MAAM,gBAAgB,cAAc,gBAAgB;AAClE,qBAAa,eAAe,MAAM,eAAe;AACjD,4BAAoB,SAAS,kBAAkB,SAAS,WAAW,cAAc;AAGjF,mBAAW,UAAU,eAAe,MAAM,mBAAmB,CAAC,MAAM,MAAM,IAAI,gBAAgB,OAAO;AAAA,MACvG;AACA,eAAS,eAAe,GAAG;AACzB,YAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW;AAC1C,sBAAY;AACZ,oBAAU;AACV;AAAA,QACF;AACA,oBAAY;AACZ,kBAAU;AACV,wBAAe,oBAAI,KAAK,GAAE,QAAQ;AAClC,YAAI,eAAe,iBAAiB,KAAK;AACvC,cAAI,KAAK,IAAI,WAAW,IAAI,IAAI;AAC9B,qBAAS,WAAW;AAAA,UACtB,WAAW,eAAe,IAAI;AAC5B,gBAAI,IAAI,IAAK,UAAS,UAAU;AAAA,gBAAO,UAAS,UAAU;AAAA,UAC5D,WAAW,IAAI,IAAK,UAAS,UAAU;AAAA,cAAO,UAAS,UAAU;AAAA,QACnE,WAAW,cAAc,MAAM;AAC7B,cAAI,IAAI,IAAK,UAAS,UAAU;AAAA,cAAO,UAAS,UAAU;AAAA,QAC5D,WAAW,cAAc,KAAK;AAC5B,cAAI,IAAI,IAAK,UAAS,UAAU;AAAA,cAAO,UAAS,UAAU;AAAA,QAC5D,OAAO;AACL,mBAAS,WAAW;AAAA,QACtB;AAGA,mBAAW,MAAM;AACf,2BAAiB;AAAA,QACnB,GAAG,GAAG;AAAA,MACR;AACA,eAAS,eAAe,GAAG;AACzB,YAAI,CAAC,eAAgB;AACrB,YAAI,SAAS,aAAE,EAAE,MAAM,EAAE,QAAQ,eAAe;AAChD,YAAI,OAAO,WAAW,KAAK,aAAE,EAAE,MAAM,EAAE,SAAS,cAAc,GAAG;AAC/D,mBAAS,aAAE,EAAE,MAAM;AAAA,QACrB;AACA,YAAI,OAAO,WAAW,EAAG;AACzB,YAAI,OAAO,SAAS,uBAAuB,EAAG;AAC9C,YAAI,CAAC,SAAS,OAAO,aAAa;AAChC,cAAI,OAAO,SAAS,mBAAmB,EAAG,UAAS,UAAU;AAC7D,cAAI,OAAO,SAAS,mBAAmB,EAAG,UAAS,UAAU;AAAA,QAC/D;AACA,cAAM,WAAW,SAAS,OAAO,KAAK,WAAW,GAAG,EAAE;AACtD,cAAM,YAAY,SAAS,OAAO,KAAK,YAAY,GAAG,EAAE;AACxD,cAAM,UAAU,SAAS,OAAO,KAAK,UAAU,GAAG,EAAE;AACpD,iBAAS,KAAK,oCAAoC,UAAU,OAAO,CAAC,GAAG,UAAU,WAAW,OAAO;AACnG,YAAI,CAAC,OAAO,SAAS,uBAAuB,KAAK,SAAS,OAAO,YAAY,SAAS,OAAO,aAAa;AACxG,gBAAM,aAAa,IAAI,KAAK,UAAU,WAAW,SAAS,GAAG,GAAG,CAAC;AACjE,cAAI,SAAS,eAAe;AAC1B,gBAAI,SAAS,SAAS,SAAS,MAAM,CAAC,GAAG;AACvC,yBAAW,SAAS,SAAS,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,MAAM,CAAC,EAAE,WAAW,CAAC;AAAA,YAClF,OAAO;AACL,yBAAW,UAAS,oBAAI,KAAK,GAAE,SAAS,IAAG,oBAAI,KAAK,GAAE,WAAW,CAAC;AAAA,YACpE;AAAA,UACF;AACA,mBAAS,SAAS,UAAU;AAAA,QAC9B;AACA,YAAI,SAAS,OAAO,eAAe;AACjC,cAAI,SAAS,OAAO,eAAe,SAAS,MAAM,WAAW,KAAK,CAAC,SAAS,OAAO,aAAa;AAC9F,qBAAS,MAAM;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA,eAAS,mBAAmB;AAC1B,iBAAS,UAAU;AAAA,MACrB;AACA,eAAS,mBAAmB;AAC1B,iBAAS,UAAU;AAAA,MACrB;AACA,eAAS,kBAAkB;AACzB,iBAAS,SAAS;AAAA,MACpB;AACA,eAAS,kBAAkB;AACzB,iBAAS,SAAS;AAAA,MACpB;AACA,eAAS,uBAAuB;AAC9B,iBAAS,gBAAgB;AAAA,MAC3B;AACA,eAAS,sBAAsB;AAC7B,iBAAS,eAAe;AAAA,MAC1B;AACA,eAAS,sBAAsB;AAC7B,iBAAS,eAAe;AAAA,MAC1B;AACA,YAAM,kBAAkB,IAAI,YAAY,UAAU,gBAAgB,WAAW,EAAE,kBAAkB;AAAA,QAC/F,SAAS;AAAA,QACT,SAAS;AAAA,MACX,IAAI;AAEJ,UAAI,KAAK,6BAA6B,EAAE,GAAG,SAAS,gBAAgB;AACpE,UAAI,KAAK,6BAA6B,EAAE,GAAG,SAAS,gBAAgB;AACpE,UAAI,KAAK,4BAA4B,EAAE,GAAG,SAAS,eAAe;AAClE,UAAI,KAAK,4BAA4B,EAAE,GAAG,SAAS,eAAe;AAClE,UAAI,SAAS,OAAO,aAAa;AAC/B,YAAI,KAAK,sBAAsB,EAAE,GAAG,SAAS,oBAAoB;AAAA,MACnE;AACA,UAAI,SAAS,OAAO,YAAY;AAC9B,YAAI,KAAK,qBAAqB,EAAE,GAAG,SAAS,mBAAmB;AAAA,MACjE;AACA,UAAI,SAAS,eAAe;AAC1B,YAAI,KAAK,2BAA2B,EAAE,GAAG,SAAS,mBAAmB;AAAA,MACvE;AAEA,iBAAW,GAAG,SAAS,cAAc;AAErC,UAAI,SAAS,OAAO,WAAW;AAC7B,mBAAW,GAAG,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACtE,YAAI,GAAG,oBAAoB,eAAe;AAC1C,YAAI,GAAG,oBAAoB,cAAc;AAAA,MAC3C;AACA,eAAS,uBAAuB,SAAS,uBAAuB;AAC9D,YAAI,KAAK,6BAA6B,EAAE,IAAI,SAAS,gBAAgB;AACrE,YAAI,KAAK,6BAA6B,EAAE,IAAI,SAAS,gBAAgB;AACrE,YAAI,KAAK,4BAA4B,EAAE,IAAI,SAAS,eAAe;AACnE,YAAI,KAAK,4BAA4B,EAAE,IAAI,SAAS,eAAe;AACnE,YAAI,SAAS,OAAO,aAAa;AAC/B,cAAI,KAAK,sBAAsB,EAAE,IAAI,SAAS,oBAAoB;AAAA,QACpE;AACA,YAAI,SAAS,OAAO,YAAY;AAC9B,cAAI,KAAK,qBAAqB,EAAE,IAAI,SAAS,mBAAmB;AAAA,QAClE;AACA,YAAI,SAAS,eAAe;AAC1B,cAAI,KAAK,2BAA2B,EAAE,IAAI,SAAS,mBAAmB;AAAA,QACxE;AACA,mBAAW,IAAI,SAAS,cAAc;AACtC,YAAI,SAAS,OAAO,WAAW;AAC7B,qBAAW,IAAI,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACvE,cAAI,IAAI,oBAAoB,eAAe;AAC3C,cAAI,IAAI,oBAAoB,cAAc;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AACA,aAAS,KAAK;AACd,WAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI,OAAO,MAAM;AACf,aAAO,OAAO;AAAA,IAChB,WAAW,UAAU;AACnB,aAAO,SAAS,QAAQ,OAAO,EAAE,UAAU,SAAS,QAAQ,OAAO,EAAE,CAAC,EAAE;AAAA,IAC1E;AACA,QAAI,CAAC,KAAM,QAAO,IAAI,MAAM;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,WAAW;AACjB,UAAM,SAAS,SAAS,OAAO;AAC/B,UAAM,iBAAiB,CAAC;AACxB,UAAM,sBAAsB,CAAC;AAC7B,UAAM,eAAe,CAAC;AACtB,UAAM,oBAAoB,CAAC;AAC3B,UAAM,sBAAsB,IAAI,KAAK,eAAe,QAAQ;AAAA,MAC1D,OAAO;AAAA,IACT,CAAC;AACD,UAAM,2BAA2B,IAAI,KAAK,eAAe,QAAQ;AAAA,MAC/D,OAAO;AAAA,IACT,CAAC;AACD,UAAM,oBAAoB,IAAI,KAAK,eAAe,QAAQ;AAAA,MACxD,SAAS;AAAA,IACX,CAAC;AACD,UAAM,yBAAyB,IAAI,KAAK,eAAe,QAAQ;AAAA,MAC7D,SAAS;AAAA,IACX,CAAC;AACD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC9B,YAAM,QAAO,oBAAI,KAAK,GAAE,SAAS,GAAG,CAAC;AACrC,YAAM,cAAc,SAAS,cAAc,IAAI;AAC/C,UAAI,QAAQ,gBAAgB,MAAM;AAChC,YAAI,YAAa,aAAY;AAC7B,sBAAc;AACd,eAAO;AAAA,MACT;AACA,UAAI,CAAC,MAAM;AACT,eAAO;AAAA,MACT;AACA,UAAI,eAAe,SAAS,eAAe,CAAC,WAAW;AACrD,uBAAe,KAAK,oBAAoB,OAAO,IAAI,CAAC;AACpD,4BAAoB,KAAK,yBAAyB,OAAO,IAAI,CAAC;AAAA,MAChE;AAAA,IACF;AACA,UAAM,WAAU,oBAAI,KAAK,GAAE,OAAO;AAClC,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC7B,YAAM,QAAO,oBAAI,KAAK,GAAE,QAAQ,KAAK,IAAI,WAAW,KAAK,KAAK,KAAK;AACnE,mBAAa,KAAK,kBAAkB,OAAO,IAAI,CAAC;AAChD,wBAAkB,KAAK,uBAAuB,OAAO,IAAI,CAAC;AAAA,IAC5D;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc,MAAM;AAClB,UAAM,WAAW;AACjB,UAAM,IAAI,IAAI,KAAK,IAAI;AACvB,QAAI,SAAS,eAAe;AAC1B,aAAO,IAAI,KAAK,EAAE,YAAY,GAAG,EAAE,SAAS,GAAG,EAAE,QAAQ,GAAG,EAAE,SAAS,GAAG,EAAE,WAAW,CAAC;AAAA,IAC1F;AACA,WAAO,IAAI,KAAK,EAAE,YAAY,GAAG,EAAE,SAAS,GAAG,EAAE,QAAQ,CAAC;AAAA,EAC5D;AAAA,EACA,gBAAgB,QAAQ;AACtB,UAAM,WAAW;AACjB,QAAI,YAAY,CAAC;AACjB,QAAI,UAAU,MAAM,QAAQ,MAAM,GAAG;AACnC,kBAAY,OAAO,IAAI,SAAO,SAAS,cAAc,GAAG,CAAC;AAAA,IAC3D;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,WAAW;AACjB,QAAI,CAAC,SAAS,SAAU;AACxB,QAAI,SAAS,OAAO,cAAe,UAAS,SAAS,KAAK,YAAY,IAAI;AAAA,EAC5E;AAAA,EACA,YAAY;AACV,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,UAAU;AACzB,QAAI,OAAO,WAAW,QAAS,QAAO;AACtC,QAAI,SAAS,MAAM,SAAS,UAAW,QAAO;AAC9C,QAAI,CAAC,SAAS,UAAU,SAAS,SAAS;AACxC,UAAI,OAAO,WAAW,UAAW,QAAO;AACxC,UAAI,OAAO,KAAK;AACd,eAAO,CAAC,CAAC,OAAO;AAAA,MAClB;AACA,UAAI,IAAI,SAAS,KAAK;AACpB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,WAAW,GAAG;AACZ,UAAM,WAAW;AACjB,UAAM,OAAO,IAAI,KAAK,CAAC;AACvB,UAAM,OAAO,KAAK,YAAY;AAC9B,UAAM,QAAQ,KAAK,SAAS;AAC5B,UAAM,SAAS,QAAQ;AACvB,UAAM,MAAM,KAAK,QAAQ;AACzB,UAAM,UAAU,KAAK,OAAO;AAC5B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,aAAS,UAAU,QAAQ;AACzB,aAAO,SAAS,KAAK,IAAI,MAAM,KAAK;AAAA,IACtC;AACA,QAAI,OAAO,eAAe,UAAU;AAClC,YAAM,SAAS;AAAA,QACb,MAAM;AAAA,QACN,IAAI,OAAO,IAAI,EAAE,UAAU,CAAC;AAAA,QAC5B,IAAI,UAAU,MAAM;AAAA,QACpB,GAAG;AAAA,QACH,IAAI,WAAW,KAAK;AAAA,QACpB,GAAG,gBAAgB,KAAK;AAAA,QACxB,IAAI,UAAU,GAAG;AAAA,QACjB,GAAG;AAAA,QACH,IAAI,SAAS,OAAO;AAAA,QACpB,GAAG,cAAc,OAAO;AAAA,MAC1B;AACA,UAAI,SAAS,OAAO,YAAY;AAC9B,cAAM,QAAQ,KAAK,SAAS;AAC5B,cAAM,UAAU,KAAK,WAAW;AAChC,cAAM,UAAU,KAAK,WAAW;AAChC,YAAI,UAAU;AACd,YAAI,QAAQ,GAAI,WAAU,QAAQ;AAClC,YAAI,UAAU,EAAG,WAAU;AAC3B,cAAM,IAAI,SAAS,MAAM,UAAU,IAAI,OAAO;AAC9C,eAAO,OAAO,QAAQ;AAAA,UACpB,IAAI,UAAU,KAAK;AAAA,UACnB,GAAG;AAAA,UACH,IAAI,UAAU,OAAO;AAAA,UACrB,GAAG;AAAA,UACH,IAAI,UAAU,OAAO;AAAA,UACrB,GAAG;AAAA,UACH,OAAO,UAAU,OAAO;AAAA,UACxB,MAAM;AAAA,UACN;AAAA,UACA,GAAG,EAAE,YAAY;AAAA,QACnB,CAAC;AAAA,MACH;AACA,YAAM,SAAS,IAAI,OAAO,OAAO,KAAK,MAAM,EAAE,IAAI,OAAK,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG;AAC/E,aAAO,WAAW,QAAQ,QAAQ,WAAS;AACzC,YAAI,SAAS,OAAQ,QAAO,OAAO,KAAK;AACxC,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,QAAI,OAAO,eAAe,YAAY;AACpC,aAAO,WAAW,IAAI;AAAA,IACxB;AAEA,UAAM,YAAY,IAAI,KAAK,eAAe,QAAQ,UAAU;AAC5D,WAAO,UAAU,OAAO,IAAI;AAAA,EAC9B;AAAA,EACA,cAAc;AACZ,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,SAAS,OAAO,aAAa;AAC/B,aAAO,SAAS,OAAO,YAAY,KAAK,UAAU,KAAK;AAAA,IACzD;AACA,WAAO,MAAM,IAAI,OAAK,SAAS,WAAW,CAAC,CAAC,EAAE,KAAK,SAAS,OAAO,cAAc,QAAQ,IAAI;AAAA,EAC/F;AAAA,EACA,SAAS,UAAU;AACjB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,QAAI,UAAU;AACZ,UAAI,CAAC,SAAS,MAAO,UAAS,QAAQ,CAAC;AACvC,UAAI;AACJ,eAAS,IAAI,GAAG,IAAI,SAAS,MAAM,QAAQ,KAAK,GAAG;AACjD,YAAI,IAAI,KAAK,QAAQ,EAAE,QAAQ,MAAM,IAAI,KAAK,SAAS,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG;AAC1E,0BAAgB;AAAA,QAClB;AAAA,MACF;AACA,UAAI,OAAO,kBAAkB,aAAa;AACxC,iBAAS,MAAM,KAAK,QAAQ;AAAA,MAC9B,OAAO;AACL,iBAAS,MAAM,OAAO,eAAe,CAAC;AAAA,MACxC;AACA,eAAS,YAAY;AAAA,IACvB,WAAW,aAAa;AACtB,UAAI,CAAC,SAAS,MAAO,UAAS,QAAQ,CAAC;AACvC,UAAI,SAAS,MAAM,WAAW,KAAK,SAAS,MAAM,WAAW,GAAG;AAC9D,iBAAS,QAAQ,CAAC;AAAA,MACpB;AACA,UAAI,SAAS,MAAM,WAAW,KAAK,KAAK,IAAI,SAAS,MAAM,CAAC,EAAE,QAAQ,IAAI,SAAS,QAAQ,CAAC,MAAM,qBAAqB,KAAK,KAAK,KAAK,KAAK,QAAS,uBAAuB,KAAK,KAAK,IAAI,SAAS,MAAM,CAAC,EAAE,QAAQ,IAAI,SAAS,QAAQ,CAAC,MAAM,qBAAqB,KAAK,KAAK,KAAK,KAAK,KAAO,UAAS,MAAM,KAAK,QAAQ;AAAA,UAAO,UAAS,QAAQ,CAAC;AACpV,eAAS,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACnC,eAAS,YAAY;AAAA,IACvB,OAAO;AACL,eAAS,QAAQ,CAAC,QAAQ;AAC1B,eAAS,YAAY;AAAA,IACvB;AAAA,EACF;AAAA,EACA,SAAS,QAAQ;AACf,UAAM,WAAW;AACjB,UAAM,eAAe,SAAS;AAC9B,QAAI,MAAM,QAAQ,YAAY,KAAK,MAAM,QAAQ,MAAM,KAAK,aAAa,WAAW,OAAO,QAAQ;AACjG,UAAI,QAAQ;AACZ,mBAAa,QAAQ,CAAC,GAAG,UAAU;AACjC,YAAI,MAAM,OAAO,KAAK,EAAG,SAAQ;AAAA,MACnC,CAAC;AACD,UAAI,MAAO;AAAA,IACb;AACA,aAAS,QAAQ;AACjB,aAAS,YAAY;AAAA,EACvB;AAAA,EACA,WAAW;AACT,UAAM,WAAW;AACjB,WAAO,SAAS;AAAA,EAClB;AAAA,EACA,YAAY,YAAY;AACtB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI,OAAO,IAAI,SAAS,GAAG;AACzB,iBAAW,KAAK,wBAAwB,EAAE,YAAY,0GAA0G;AAChK,UAAI;AACJ,UAAI,OAAO,eAAe,MAAM,WAAW,GAAG;AAC5C,cAAM,WAAW,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ;AAC5C,cAAM,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ;AAC7C,aAAK,IAAI,UAAU,KAAK,WAAW,KAAK,KAAK,KAAK,KAAK,KAAM;AAC3D,sBAAY,IAAI,KAAK,CAAC;AACtB,cAAI,WAAW;AACf,cAAI,aAAa,WAAW;AAC1B,gBAAI,MAAM,YAAY,MAAM,WAAW;AACrC,0BAAY;AAAA,YACd;AACA,gBAAI,MAAM,UAAU;AAClB,0BAAY;AAAA,YACd;AACA,gBAAI,MAAM,WAAW;AACnB,0BAAY;AAAA,YACd;AAAA,UACF;AACA,qBAAW,KAAK,4BAA4B,UAAU,YAAY,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,UAAU,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ;AAAA,QAC3I;AACA,oBAAY,IAAI,KAAK,QAAQ;AAC7B,mBAAW,KAAK,4BAA4B,UAAU,YAAY,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,UAAU,QAAQ,CAAC,IAAI,EAAE,YAAY,6BAA6B,EAAE,SAAS,kDAAkD;AAC9N,oBAAY,IAAI,KAAK,SAAS;AAC9B,mBAAW,KAAK,4BAA4B,UAAU,YAAY,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,UAAU,QAAQ,CAAC,IAAI,EAAE,YAAY,6BAA6B,EAAE,SAAS,mDAAmD;AAAA,MACjO,OAAO;AACL,aAAK,IAAI,GAAG,IAAI,SAAS,MAAM,QAAQ,KAAK,GAAG;AAC7C,sBAAY,IAAI,KAAK,MAAM,CAAC,CAAC;AAC7B,qBAAW,KAAK,4BAA4B,UAAU,YAAY,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,UAAU,QAAQ,CAAC,IAAI,EAAE,SAAS,uBAAuB;AAAA,QAC1J;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,YAAY;AACf,eAAS,KAAK,gCAAgC,UAAU,KAAK;AAAA,IAC/D;AACA,QAAI,OAAO,IAAI,SAAS,KAAK,SAAS,eAAe;AACnD,UAAI,KAAK,2BAA2B,EAAE,KAAK,SAAS,MAAM,SAAS,SAAS,sBAAsB,MAAM,CAAC,CAAC,IAAI,SAAS,OAAO,qBAAqB;AAAA,IACrJ;AACA,QAAI,YAAY,SAAS,UAAU,OAAO,QAAQ;AAChD,YAAM,aAAa,SAAS,YAAY,KAAK;AAC7C,UAAI,OAAO,UAAU,OAAO,IAAI,QAAQ;AACtC,YAAI,KAAK,yBAAyB,EAAE,KAAK,UAAU;AAAA,MACrD;AACA,UAAI,YAAY,SAAS,UAAU,CAAC,YAAY;AAC9C,iBAAS,IAAI,UAAU;AACvB,iBAAS,QAAQ,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EACA,uBAAuB,KAAK;AAC1B,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,OAAO,QAAQ,aAAa;AAC9B,eAAS,eAAe,SAAS,QAAQ,GAAG,CAAC,EAAE,KAAK,YAAY,GAAG,EAAE;AACrE,eAAS,cAAc,SAAS,QAAQ,GAAG,CAAC,EAAE,KAAK,WAAW,GAAG,EAAE;AACnE,2BAAqB,QAAQ,GAAG,CAAC,EAAE,KAAK,mBAAmB;AAC3D,0BAAoB,QAAQ,GAAG,CAAC,EAAE,KAAK,kBAAkB;AAAA,IAC3D,OAAO;AACL,eAAS,eAAe,SAAS,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS,IAAI,CAAC,EAAE,KAAK,YAAY,GAAG,EAAE;AAC3G,eAAS,cAAc,SAAS,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS,IAAI,CAAC,EAAE,KAAK,WAAW,GAAG,EAAE;AACzG,2BAAqB,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS,IAAI,CAAC,EAAE,KAAK,mBAAmB;AACjG,0BAAoB,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS,IAAI,CAAC,EAAE,KAAK,kBAAkB;AAAA,IACjG;AACA,QAAI,KAAK,sBAAsB,EAAE,KAAK,WAAW,kBAAkB,CAAC;AACpE,QAAI,KAAK,qBAAqB,EAAE,KAAK,iBAAiB;AAAA,EACxD;AAAA,EACA,SAAS;AACP,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,cAAc,IAAI,KAAK,aAAa,YAAY;AACtD,UAAM,gBAAgB,SAAS,YAAY,aAAa,MAAM;AAC9D,UAAM,mBAAmB,SAAS,YAAY,WAAW;AACzD,UAAM,gBAAgB,SAAS,YAAY,aAAa,MAAM;AAC9D,eAAW,WAAW,CAAC,EAAE,KAAK,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,EAAE,EAAE,UAAU,oBAAoB;AACnH,aAAS,UAAU,WAAW,KAAK,iBAAiB;AACpD,aAAS,kBAAkB;AAC3B,aAAS,mBAAmB;AAC5B,aAAS,QAAQ,KAAK,aAAW;AAC/B,eAAS,KAAK,oCAAoC,OAAO;AAAA,IAC3D,CAAC;AAAA,EACH;AAAA,EACA,mBAAmB,KAAK;AACtB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,aAAS,uBAAuB,GAAG;AACnC,YAAQ,YAAY,gEAAgE;AACpF,UAAM,eAAe,QAAQ,SAAS,QAAQ,SAAS,IAAI;AAC3D,YAAQ,GAAG,YAAY,EAAE,SAAS,wBAAwB;AAC1D,YAAQ,GAAG,QAAQ,SAAS,eAAe,IAAI,eAAe,CAAC,EAAE,SAAS,QAAQ,SAAS,wBAAwB,qBAAqB;AACxI,aAAS,KAAK,4DAA4D,UAAU,aAAa,YAAY;AAAA,EAC/G;AAAA,EACA,iBAAiB,KAAK,aAAa;AACjC,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,aAAS,YAAY;AACrB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,eAAW,KAAK,kGAAkG,EAAE,OAAO;AAC3H,QAAI,OAAO,QAAQ,aAAa;AAC9B,YAAM;AACN,oBAAc;AAAA,IAChB;AAEA,QAAI,CAAC,aAAa;AAChB,yBAAmB,SAAS,YAAY,IAAI,KAAK,aAAa,YAAY,GAAG,GAAG;AAAA,IAClF,OAAO;AACL,iBAAW,KAAK,4CAA4C,EAAE,OAAO;AACrE,sBAAgB,SAAS,YAAY,IAAI,KAAK,aAAa,YAAY,GAAG,MAAM;AAChF,sBAAgB,SAAS,YAAY,IAAI,KAAK,aAAa,YAAY,GAAG,MAAM;AAAA,IAClF;AACA,QAAI,QAAQ,UAAU,aAAa;AACjC,iBAAW,OAAO,oBAAoB,aAAa;AAAA,IACrD;AACA,QAAI,QAAQ,UAAU,aAAa;AACjC,iBAAW,QAAQ,oBAAoB,aAAa;AAAA,IACtD;AACA,UAAM,UAAU,WAAW,KAAK,iBAAiB;AACjD,aAAS,UAAU;AACnB,aAAS,mBAAmB,eAAe;AAC3C,aAAS,KAAK,oCAAoC,UAAU,QAAQ,SAAS,QAAQ,GAAG,QAAQ,SAAS,CAAC,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;AACjI,aAAS,KAAK,wDAAwD,UAAU,aAAa,YAAY;AAAA,EAC3G;AAAA,EACA,mBAAmBC,YAAW;AAC5B,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACF,IAAI;AAEJ,IAAAA,aAAYA,cAAa,SAAS,mBAAmB;AACrD,QAAI,OAAO,SAAS,oBAAoB,aAAa;AACnD,eAAS,kBAAkBA;AAAA,IAC7B;AACA,YAAQ,YAAY,gEAAgE;AACpF,UAAM,qBAAqB,EAAEA,aAAY,KAAK,MAAM;AACpD,UAAM,wBAAwB,CAACA,aAAY,MAAM;AACjD,UAAM,qBAAqB,EAAEA,aAAY,KAAK,MAAM;AACpD,YAAQ,GAAG,CAAC,EAAE,UAAU,eAAe,MAAM,qBAAqB,CAAC,MAAM,MAAM,IAAI,kBAAkB,OAAO,EAAE,SAAS,qBAAqB;AAC5I,YAAQ,GAAG,CAAC,EAAE,UAAU,eAAe,MAAM,wBAAwB,CAAC,MAAM,MAAM,IAAI,qBAAqB,OAAO,EAAE,SAAS,wBAAwB;AACrJ,YAAQ,GAAG,CAAC,EAAE,UAAU,eAAe,MAAM,qBAAqB,CAAC,MAAM,MAAM,IAAI,kBAAkB,OAAO,EAAE,SAAS,qBAAqB;AAAA,EAC9I;AAAA,EACA,UAAUC,aAAY;AACpB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AACJ,QAAI,OAAOA,gBAAe,eAAe,OAAOA,gBAAe,UAAU;AACvE,MAAAA,cAAa;AACb,UAAI,CAAC,OAAO,QAAS,CAAAA,cAAa;AAAA,IACpC;AAEA,UAAM,YAAY,SAAS,SAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,CAAC,EAAE,KAAK,YAAY,GAAG,EAAE;AAClG,UAAM,WAAW,SAAS,SAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,CAAC,EAAE,KAAK,WAAW,GAAG,EAAE;AAChG,UAAM,WAAW,IAAI,KAAK,UAAU,SAAS;AAC7C,UAAM,eAAe,SAAS,QAAQ;AACtC,UAAM,wBAAwB,CAAC,SAAS;AACxC,QAAI,OAAO,SAAS;AAClB,UAAI,eAAe,IAAI,KAAK,OAAO,OAAO,EAAE,QAAQ,GAAG;AACrD,iBAAS,WAAW;AACpB;AAAA,MACF;AAAA,IACF;AACA,aAAS,mBAAmB;AAC5B,QAAI,cAAc,SAAS,cAAc;AACvC,YAAM,qBAAqB,CAAC,SAAS,kBAAkB,MAAM;AAC7D,YAAM,gBAAgB,aAAE,SAAS,YAAY,cAAc,MAAM,CAAC,EAAE,UAAU,eAAe,MAAM,qBAAqB,CAAC,MAAM,MAAM,IAAI,kBAAkB,OAAO,EAAE,SAAS,qBAAqB;AAClM,iBAAW,OAAO,cAAc,CAAC,CAAC;AAClC,eAAS,UAAU,WAAW,KAAK,iBAAiB;AACpD,eAAS,KAAK,oCAAoC,SAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,IACvG;AACA,aAAS,YAAY;AACrB,aAAS,mBAAmB,MAAM;AAClC,UAAMD,aAAY,SAAS,kBAAkB,MAAM;AACnD,eAAW,WAAWC,WAAU,EAAE,UAAU,eAAe,MAAMD,aAAY,CAAC,MAAM,MAAM,IAAIA,UAAS,OAAO;AAC9G,QAAI,uBAAuB;AACzB,iBAAW,cAAc,MAAM;AAC7B,iBAAS,iBAAiB,MAAM;AAAA,MAClC,CAAC;AAAA,IACH;AACA,QAAI,CAAC,OAAO,SAAS;AACnB,eAAS,iBAAiB,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EACA,UAAUC,aAAY;AACpB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AACJ,QAAI,OAAOA,gBAAe,eAAe,OAAOA,gBAAe,UAAU;AACvE,MAAAA,cAAa;AACb,UAAI,CAAC,OAAO,QAAS,CAAAA,cAAa;AAAA,IACpC;AAEA,UAAM,YAAY,SAAS,SAAS,QAAQ,GAAG,CAAC,EAAE,KAAK,YAAY,GAAG,EAAE;AACxE,UAAM,WAAW,SAAS,SAAS,QAAQ,GAAG,CAAC,EAAE,KAAK,WAAW,GAAG,EAAE;AACtE,UAAM,WAAW,IAAI,KAAK,UAAU,YAAY,GAAG,EAAE;AACrD,UAAM,eAAe,SAAS,QAAQ;AACtC,UAAM,wBAAwB,CAAC,SAAS;AACxC,QAAI,OAAO,SAAS;AAClB,UAAI,UAAU,IAAI,KAAK,OAAO,OAAO;AACrC,gBAAU,IAAI,KAAK,QAAQ,YAAY,GAAG,QAAQ,SAAS,GAAG,CAAC;AAC/D,UAAI,eAAe,QAAQ,QAAQ,GAAG;AACpC,iBAAS,WAAW;AACpB;AAAA,MACF;AAAA,IACF;AACA,aAAS,mBAAmB;AAC5B,QAAI,cAAc,SAAS,cAAc;AACvC,YAAM,qBAAqB,CAAC,SAAS,kBAAkB,MAAM;AAC7D,YAAM,gBAAgB,aAAE,SAAS,YAAY,cAAc,MAAM,CAAC,EAAE,UAAU,eAAe,MAAM,qBAAqB,CAAC,MAAM,MAAM,IAAI,kBAAkB,OAAO,EAAE,SAAS,qBAAqB;AAClM,iBAAW,QAAQ,cAAc,CAAC,CAAC;AACnC,eAAS,UAAU,WAAW,KAAK,iBAAiB;AACpD,eAAS,KAAK,oCAAoC,SAAS,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;AAAA,IAC7E;AACA,aAAS,YAAY;AACrB,aAAS,mBAAmB,MAAM;AAClC,UAAMD,aAAY,SAAS,kBAAkB,MAAM;AACnD,eAAW,WAAWC,WAAU,EAAE,UAAU,eAAe,MAAMD,aAAY,CAAC,MAAM,MAAM,IAAIA,UAAS,OAAO;AAC9G,QAAI,uBAAuB;AACzB,iBAAW,cAAc,MAAM;AAC7B,iBAAS,iBAAiB,MAAM;AAAA,MAClC,CAAC;AAAA,IACH;AACA,QAAI,CAAC,OAAO,SAAS;AACnB,eAAS,iBAAiB,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EACA,WAAWC,aAAY;AACrB,QAAIA,gBAAe,QAAQ;AACzB,MAAAA,cAAa;AAAA,IACf;AACA,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACF,IAAI;AACJ,UAAMD,aAAY,kBAAkB,MAAM;AAC1C,eAAW,WAAWC,WAAU,EAAE,UAAU,eAAe,MAAMD,aAAY,CAAC,MAAM,MAAM,IAAIA,UAAS,OAAO;AAAA,EAChH;AAAA;AAAA,EAEA,aAAa,MAAM,OAAOC,aAAY;AACpC,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,QAAI,OAAO,SAAS,YAAa,QAAO,SAAS;AAEjD,QAAI,OAAO,UAAU,YAAa,SAAQ,SAAS;AACnD,QAAI,OAAOA,gBAAe,eAAe,OAAOA,gBAAe,UAAU;AAEvE,MAAAA,cAAa;AAEb,UAAI,CAAC,OAAO,QAAS,CAAAA,cAAa;AAAA,IACpC;AACA,QAAI;AACJ,QAAI,OAAO,SAAS,aAAa;AAC/B,mBAAa,IAAI,KAAK,MAAM,QAAQ,GAAG,EAAE,EAAE,QAAQ;AAAA,IACrD,OAAO;AACL,mBAAa,IAAI,KAAK,MAAM,KAAK,EAAE,QAAQ;AAAA,IAC7C;AACA,QAAI,OAAO,WAAW,aAAa,IAAI,KAAK,OAAO,OAAO,EAAE,QAAQ,GAAG;AACrE,aAAO;AAAA,IACT;AACA,QAAI,OAAO,SAAS;AAClB,UAAI,UAAU,IAAI,KAAK,OAAO,OAAO;AACrC,gBAAU,IAAI,KAAK,QAAQ,YAAY,GAAG,QAAQ,SAAS,GAAG,CAAC;AAC/D,UAAI,aAAa,QAAQ,QAAQ,GAAG;AAClC,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,cAAc,IAAI,KAAK,SAAS,aAAa,SAAS,YAAY,EAAE,QAAQ;AAClF,UAAM,MAAM,aAAa,cAAc,SAAS;AAChD,UAAM,eAAe,SAAS,YAAY,IAAI,KAAK,MAAM,KAAK,CAAC;AAC/D,aAAS,kBAAkB,SAAS,mBAAmB;AACvD,UAAM,gBAAgB,SAAS;AAC/B,QAAI;AACJ,UAAM,wBAAwB,CAAC,SAAS,aAAaA,gBAAe;AACpE,QAAI,aAAa,aAAa;AAE5B,eAAS,mBAAmB;AAC5B,UAAI,CAAC,SAAS,UAAW,UAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,CAAC,EAAE,OAAO;AACjF,iBAAW,OAAO,YAAY;AAC9B,eAAS,UAAU,WAAW,KAAK,iBAAiB;AACpD,uBAAiB,EAAE,gBAAgB,KAAK,MAAM;AAC9C,eAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,CAAC,EAAE,UAAU,eAAe,MAAM,iBAAiB,CAAC,MAAM,MAAM,IAAI,cAAc,OAAO,EAAE,SAAS,qBAAqB;AAAA,IACzK,OAAO;AAEL,eAAS,mBAAmB;AAC5B,UAAI,CAAC,SAAS,UAAW,UAAS,QAAQ,GAAG,CAAC,EAAE,OAAO;AACvD,iBAAW,QAAQ,YAAY;AAC/B,eAAS,UAAU,WAAW,KAAK,iBAAiB;AACpD,uBAAiB,EAAE,gBAAgB,KAAK,MAAM;AAC9C,eAAS,QAAQ,GAAG,CAAC,EAAE,UAAU,eAAe,MAAM,iBAAiB,CAAC,MAAM,MAAM,IAAI,cAAc,OAAO,EAAE,SAAS,qBAAqB;AAAA,IAC/I;AACA,aAAS,KAAK,oCAAoC,QAAQ,SAAS,SAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;AAClJ,aAAS,YAAY;AACrB,aAAS,mBAAmB,GAAG;AAC/B,UAAM,mBAAmB,SAAS,kBAAkB,MAAM;AAC1D,eAAW,WAAWA,WAAU,EAAE,UAAU,eAAe,MAAM,mBAAmB,CAAC,MAAM,MAAM,IAAI,gBAAgB,OAAO;AAC5H,QAAI,uBAAuB;AACzB,iBAAW,cAAc,MAAM;AAC7B,iBAAS,iBAAiB,KAAK,IAAI;AAAA,MACrC,CAAC;AAAA,IACH;AACA,QAAI,CAAC,OAAO,WAAWA,gBAAe,GAAG;AACvC,eAAS,iBAAiB,KAAK,IAAI;AAAA,IACrC;AAAA,EACF;AAAA,EACA,WAAW;AACT,UAAM,WAAW;AACjB,aAAS,aAAa,SAAS,cAAc,CAAC;AAAA,EAChD;AAAA,EACA,WAAW;AACT,UAAM,WAAW;AACjB,aAAS,aAAa,SAAS,cAAc,CAAC;AAAA,EAChD;AAAA;AAAA,EAEA,YAAY,SAAS,OAAO;AAC1B,QAAI,QAAQ;AACZ,QAAI;AACJ,QAAI,CAAC,MAAO,QAAO;AACnB,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACpC,YAAI,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI;AAChC,cAAI,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI;AAChC,gBAAI,WAAW,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,KAAK,WAAW,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG;AAC9F,sBAAQ;AAAA,YACV;AAAA,UACF,WAAW,MAAM,CAAC,EAAE,MAAM;AACxB,gBAAI,WAAW,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG;AAChD,sBAAQ;AAAA,YACV;AAAA,UACF,WAAW,MAAM,CAAC,EAAE,IAAI;AACtB,gBAAI,WAAW,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,GAAG;AAC9C,sBAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF,WAAW,MAAM,CAAC,EAAE,MAAM;AACxB,cAAI,YAAY,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG;AACjD,oBAAQ;AAAA,UACV;AAAA,QACF,WAAW,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG;AACnD,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF,WAAW,MAAM,QAAQ,MAAM,IAAI;AACjC,UAAI,MAAM,QAAQ,MAAM,IAAI;AAC1B,YAAI,WAAW,IAAI,KAAK,MAAM,EAAE,EAAE,QAAQ,KAAK,WAAW,IAAI,KAAK,MAAM,IAAI,EAAE,QAAQ,GAAG;AACxF,kBAAQ;AAAA,QACV;AAAA,MACF,WAAW,MAAM,MAAM;AACrB,YAAI,WAAW,IAAI,KAAK,MAAM,IAAI,EAAE,QAAQ,GAAG;AAC7C,kBAAQ;AAAA,QACV;AAAA,MACF,WAAW,MAAM,IAAI;AACnB,YAAI,WAAW,IAAI,KAAK,MAAM,EAAE,EAAE,QAAQ,GAAG;AAC3C,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF,WAAW,MAAM,MAAM;AACrB,cAAQ,YAAY,IAAI,KAAK,MAAM,IAAI,EAAE,QAAQ;AAAA,IACnD,WAAW,OAAO,UAAU,YAAY;AACtC,cAAQ,MAAM,IAAI,KAAK,OAAO,CAAC;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,YAAY,MAAM;AAChB,UAAM,IAAI,IAAI,KAAK,IAAI;AACvB,WAAO,IAAI,KAAK,EAAE,YAAY,GAAG,EAAE,SAAS,IAAI,GAAG,CAAC,EAAE,QAAQ;AAAA,EAChE;AAAA,EACA,aAAa,MAAM;AACjB,UAAM,WAAW;AACjB,QAAI,SAAS,OAAO,cAAc;AAChC,aAAO,SAAS,OAAO,aAAa,KAAK,UAAU,IAAI;AAAA,IACzD;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,SAAS,YAAY,MAAM,MAAM,GAAG,SAAS,YAAY,IAAI,GAAG,SAAS,YAAY,MAAM,MAAM,CAAC;AAAA,EACvG;AAAA,EACA,YAAY,GAAG,QAAQ;AACrB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,aAAa;AACtB,aAAO,OAAO,YAAY,KAAK,UAAU,GAAG,MAAM;AAAA,IACpD;AACA,QAAI,OAAO,IAAI,KAAK,CAAC;AACrB,QAAI,OAAO,KAAK,YAAY;AAC5B,QAAI,QAAQ,KAAK,SAAS;AAC1B,QAAI,cAAc,SAAS,WAAW,QAAQ,SAAS,eAAe,IAAI,CAAC;AAC3E,QAAI,cAAc,EAAG,eAAc;AACnC,QAAI,aAAa,SAAS,cAAc,IAAI;AAC5C,QAAI,WAAW,QAAQ;AACrB,UAAI,UAAU,GAAI,QAAO,IAAI,KAAK,OAAO,GAAG,CAAC;AAAA,UAAO,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,IACxF;AACA,QAAI,WAAW,QAAQ;AACrB,UAAI,UAAU,EAAG,QAAO,IAAI,KAAK,OAAO,GAAG,EAAE;AAAA,UAAO,QAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,IACxF;AACA,QAAI,WAAW,UAAU,WAAW,QAAQ;AAC1C,cAAQ,KAAK,SAAS;AACtB,aAAO,KAAK,YAAY;AACxB,oBAAc,SAAS,WAAW,QAAQ,SAAS,eAAe,IAAI,CAAC;AACvE,UAAI,cAAc,EAAG,eAAc;AACnC,mBAAa,SAAS,cAAc,IAAI;AAAA,IAC1C;AACA,UAAM,gBAAgB,CAAC;AACvB,UAAM,SAAQ,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AAC5C,UAAM,UAAU,OAAO,UAAU,IAAI,KAAK,OAAO,OAAO,EAAE,QAAQ,IAAI;AACtE,UAAM,UAAU,OAAO,UAAU,IAAI,KAAK,OAAO,OAAO,EAAE,QAAQ,IAAI;AACtE,UAAM,OAAO;AACb,UAAM,OAAO;AACb,UAAM,kBAAkB,SAAS,YAAY,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,CAAC,EAAE,QAAQ,IAAI,KAAK,KAAK,KAAK,KAAK,GAAI;AAC/H,UAAM,cAAc,SAAS,YAAY,IAAI;AAC7C,UAAM,eAAe,OAAO,aAAa,IAAI,IAAI;AACjD,QAAI,YAAY;AAChB,QAAI,WAAW,KAAK,OAAO,WAAW;AACtC,QAAI;AACJ,QAAI;AACJ,QAAI,uBAAuB,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,CAAC,EAAE,OAAO;AAChF,QAAI,yBAAyB,EAAG,wBAAuB;AACvD,QAAI,SAAS,MAAM,QAAQ;AACzB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,sBAAc,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,aAAS,MAAM,GAAG,OAAO,MAAM,OAAO,GAAG;AACvC,UAAI,UAAU;AACd,eAAS,MAAM,GAAG,OAAO,MAAM,OAAO,GAAG;AACvC,oBAAY;AACZ,YAAI;AACJ,YAAI,YAAY,WAAW;AAC3B,YAAI,WAAW;AACf,YAAI,QAAQ,KAAK,QAAQ,KAAK,YAAY,gBAAgB,OAAO,aAAa,GAAG;AAC/E,sBAAY;AACZ,sBAAY,WAAW;AAAA,QACzB;AACA,cAAM,eAAe,MAAM,IAAI,OAAO,WAAW,IAAI,MAAM,IAAI,IAAI,OAAO,WAAW,MAAM,IAAI,OAAO;AACtG,YAAI,YAAY,GAAG;AACjB,sBAAY,kBAAkB,YAAY;AAC1C,sBAAY;AACZ,oBAAU,IAAI,KAAK,QAAQ,IAAI,IAAI,OAAO,IAAI,MAAM,QAAQ,IAAI,IAAI,KAAK,QAAQ,GAAG,SAAS,EAAE,QAAQ;AAAA,QACzG,OAAO;AACL,uBAAa;AACb,cAAI,YAAY,aAAa;AAC3B,yBAAa;AACb,wBAAY;AACZ,sBAAU,IAAI,KAAK,QAAQ,IAAI,KAAK,OAAO,IAAI,MAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,GAAG,SAAS,EAAE,QAAQ;AAAA,UAC1G,OAAO;AACL,sBAAU,IAAI,KAAK,MAAM,OAAO,SAAS,EAAE,QAAQ;AAAA,UACrD;AAAA,QACF;AAEA,YAAI,YAAY,MAAO,aAAY;AAGnC,YAAI,OAAO,eAAe,cAAc,WAAW,GAAG;AACpD,cAAI,WAAW,cAAc,CAAC,KAAK,WAAW,cAAc,CAAC,GAAG;AAC9D,wBAAY;AAAA,UACd;AACA,cAAI,cAAc,CAAC,MAAM,cAAc,CAAC,GAAG;AACzC,gBAAI,UAAU,cAAc,CAAC,KAAK,UAAU,cAAc,CAAC,GAAG;AAC5D,0BAAY;AAAA,YACd;AACA,gBAAI,YAAY,cAAc,CAAC,GAAG;AAChC,0BAAY;AAAA,YACd;AACA,gBAAI,YAAY,cAAc,CAAC,GAAG;AAChC,0BAAY;AAAA,YACd;AAAA,UACF;AAAA,QACF,WAAW,cAAc,QAAQ,OAAO,KAAK,EAAG,aAAY;AAE5D,YAAI,OAAO,YAAY,QAAQ,YAAY,KAAK,GAAG;AACjD,sBAAY;AAAA,QACd;AAEA,YAAI,aAAa;AACjB,oBAAY;AACZ,YAAI,OAAO,QAAQ;AACjB,cAAI,SAAS,YAAY,SAAS,OAAO,MAAM,GAAG;AAChD,wBAAY;AAAA,UACd;AAAA,QACF;AACA,YAAI,WAAW;AACb,sBAAY;AAEZ,uBAAa;AAAA;AAAA;AAAA;AAAA;AAKb,cAAI,MAAM,QAAQ,OAAO,MAAM,GAAG;AAChC,kBAAM,YAAY,CAAC;AACnB,mBAAO,OAAO,QAAQ,QAAM;AAC1B,oBAAM,QAAQ,GAAG,SAAS;AAC1B,kBAAI,UAAU,QAAQ,KAAK,IAAI,KAAK,SAAS,YAAY,SAAS,EAAE,GAAG;AACrE,0BAAU,KAAK,KAAK;AAAA,cACtB;AAAA,YACF,CAAC;AAED,yBAAa;AAAA;AAAA,kBAEP,UAAU,IAAI,WAAS;AAAA,4DACmB,QAAQ,qBAAqB,KAAK,KAAK,EAAE;AAAA,kBACnF,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA,UAGxB;AAAA,QACF;AAEA,YAAI,OAAO,eAAe;AACxB,mBAAS,IAAI,GAAG,IAAI,OAAO,cAAc,QAAQ,KAAK,GAAG;AACvD,gBAAI,SAAS,YAAY,SAAS,OAAO,cAAc,CAAC,EAAE,KAAK,GAAG;AAChE,0BAAY,IAAI,OAAO,cAAc,CAAC,EAAE,QAAQ;AAAA,YAClD;AAAA,UACF;AAAA,QACF;AAEA,mBAAW;AACX,YAAI,WAAW,UAAU,WAAW,WAAW,UAAU,SAAS;AAChE,qBAAW;AAAA,QACb;AACA,YAAI,OAAO,UAAU;AACnB,cAAI,SAAS,YAAY,SAAS,OAAO,QAAQ,GAAG;AAClD,uBAAW;AAAA,UACb;AAAA,QACF;AACA,YAAI,UAAU;AACZ,sBAAY;AAAA,QACd;AACA,kBAAU,IAAI,KAAK,OAAO;AAC1B,cAAM,UAAU,QAAQ,YAAY;AACpC,cAAM,WAAW,QAAQ,SAAS;AAClC,cAAM,mBAAmB,SAAS,aAAa,OAAO;AAEtD,mBAAW;AAAA,4BACS,OAAO,iBAAiB,QAAQ,eAAe,SAAS,wBAAwB,QAAQ,gBAAgB,OAAO,IAAI,QAAQ,IAAI,SAAS;AAAA,gDACpH,gBAAgB,GAAG,UAAU;AAAA,kBAC3D,KAAK;AAAA,MACjB;AACA,mBAAa,6BAA6B,OAAO;AAAA,IACnD;AACA,gBAAY,0CAA0C,IAAI,iBAAiB,KAAK,uBAAuB,UAAU,wBAAwB,WAAW,KAAK,SAAS;AAClK,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,UAAM,WAAW;AACjB,QAAI,SAAS,OAAO,kBAAkB;AACpC,aAAO,SAAS,OAAO,iBAAiB,KAAK,QAAQ;AAAA,IACvD;AACA,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,eAAe;AACnB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC7B,YAAM,WAAW,IAAI,OAAO,WAAW,IAAI,IAAI,IAAI,OAAO,WAAW,IAAI,OAAO;AAChF,YAAM,UAAU,SAAS,cAAc,QAAQ;AAC/C,sBAAgB,kCAAkC,OAAO;AAAA,IAC3D;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAY;AAAA,EACjB;AAAA,EACA,sBAAsB;AACpB,UAAM,WAAW;AACjB,QAAI,SAAS,OAAO,qBAAqB;AACvC,aAAO,SAAS,OAAO,oBAAoB,KAAK,QAAQ;AAAA,IAC1D;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,CAAC,GAAG,SAAS,OAAO,cAAc,YAAK,KAAK;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,KAAK;AAAA,MACZ,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,qBAAqB;AACnB,UAAM,WAAW;AACjB,QAAI,SAAS,OAAO,oBAAoB;AACtC,aAAO,SAAS,OAAO,mBAAmB,KAAK,QAAQ;AAAA,IACzD;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,CAAC,GAAG,SAAS,OAAO,aAAa,YAAK,KAAK;AAAA,MAC1C,OAAO;AAAA,IACT,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,KAAK;AAAA,MACZ,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,qBAAqB;AACnB,UAAM,WAAW;AACjB,UAAM,QAAQ,SAAS,SAAS,SAAS,MAAM,CAAC;AAChD,QAAI;AACJ,QAAI,MAAO,cAAa,SAAS,sBAAsB,KAAK;AAC5D,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,QAAQ,MAAM,SAAS,OAAO,eAAe,GAAG,YAAK,KAAK;AAAA,MAChE,OAAO;AAAA,IACT,GAAG,cAAc,SAAS,OAAO,qBAAqB,CAAC;AAAA,EACzD;AAAA,EACA,eAAe;AACb,UAAM,WAAW;AACjB,QAAI,SAAS,OAAO,cAAc;AAChC,aAAO,SAAS,OAAO,aAAa,KAAK,QAAQ;AAAA,IACnD;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,SAAS,OAAO,iBAAiB,CAAC;AAAA,EACvC;AAAA,EACA,eAAe;AACb,UAAM,WAAW;AACjB,UAAM,MAAM,SAAS;AACrB,QAAI,SAAS,OAAO,cAAc;AAChC,aAAO,SAAS,OAAO,aAAa,KAAK,QAAQ;AAAA,IACnD;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO,GAAG,IAAI,UAAU,OAAO,wBAAwB,MAAM;AAAA,IAC/D,GAAG,SAAS,OAAO,gBAAgB,CAAC;AAAA,EACtC;AAAA,EACA,gBAAgB;AACd,UAAM,WAAW;AACjB,QAAI,SAAS,OAAO,eAAe;AACjC,aAAO,SAAS,OAAO,cAAc,KAAK,UAAU,QAAQ;AAAA,IAC9D;AAEA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,SAAS,OAAO,gBAAgB,SAAS,oBAAoB,IAAI,IAAI,SAAS,OAAO,eAAe,SAAS,mBAAmB,IAAI,EAAE,CAAC;AAAA,EAC5I;AAAA;AAAA,EAEA,eAAe;AACb,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,OAAO,SAAS,MAAM,SAAS,MAAM,CAAC,KAAI,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,CAAC;AAC3E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,4BAA4B,cAAc,mBAAmB,EAAE,IAAI,YAAY,EAAE;AAAA,IAC1F,GAAG,UAAU,SAAS,aAAa,GAAG,WAAW,SAAS,cAAc,GAAG,cAAc,SAAS,iBAAiB,GAAG,YAAK,OAAO;AAAA,MAChI,OAAO;AAAA,IACT,GAAG,SAAS,aAAa,IAAI,CAAC,GAAG,iBAAiB,SAAS,mBAAmB,GAAG,UAAU,SAAS,aAAa,CAAC;AAAA,EACpH;AAAA,EACA,oBAAoB;AAClB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,OAAO,SAAS,MAAM,SAAS,MAAM,CAAC,KAAI,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,CAAC;AAC3E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,2BAA2B,cAAc,mBAAmB,EAAE,IAAI,YAAY,EAAE;AAAA,IACzF,GAAG,UAAU,SAAS,aAAa,GAAG,WAAW,SAAS,cAAc,GAAG,cAAc,SAAS,iBAAiB,GAAG,YAAK,OAAO;AAAA,MAChI,OAAO;AAAA,IACT,GAAG,SAAS,aAAa,IAAI,CAAC,GAAG,iBAAiB,SAAS,mBAAmB,GAAG,UAAU,SAAS,aAAa,CAAC;AAAA,EACpH;AAAA,EACA,cAAc;AACZ,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,OAAO,SAAS,MAAM,SAAS,MAAM,CAAC,KAAI,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,CAAC;AAC3E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,uCAAuC,cAAc,mBAAmB,EAAE,IAAI,YAAY,EAAE;AAAA,IACrG,GAAG,UAAU,SAAS,aAAa,GAAG,WAAW,SAAS,cAAc,GAAG,cAAc,SAAS,iBAAiB,GAAG,YAAK,OAAO;AAAA,MAChI,OAAO;AAAA,IACT,GAAG,SAAS,aAAa,IAAI,CAAC,GAAG,iBAAiB,SAAS,mBAAmB,GAAG,UAAU,SAAS,aAAa,CAAC;AAAA,EACpH;AAAA,EACA,gBAAgB;AACd,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,SAAS;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,OAAO,SAAS,MAAM,SAAS,MAAM,CAAC,KAAI,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,CAAC;AAC3E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,YAAY,cAAc,mBAAmB,EAAE,IAAI,YAAY,EAAE;AAAA,IAC1E,GAAG,UAAU,SAAS,aAAa,GAAG,WAAW,SAAS,cAAc,GAAG,cAAc,SAAS,iBAAiB,GAAG,YAAK,OAAO;AAAA,MAChI,OAAO;AAAA,IACT,GAAG,SAAS,aAAa,IAAI,CAAC,GAAG,iBAAiB,SAAS,mBAAmB,GAAG,UAAU,SAAS,aAAa,CAAC,CAAC,CAAC;AAAA,EACtH;AAAA,EACA,SAAS;AACP,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,OAAQ,QAAO,OAAO,OAAO,KAAK,QAAQ;AACrD,QAAI,CAAC,SAAS,QAAQ;AACpB,UAAI,YAAY,OAAO;AACvB,UAAI,cAAc,OAAQ,aAAY,SAAS,UAAU,IAAI,YAAY;AACzE,UAAI,cAAc,UAAW,QAAO,SAAS,cAAc;AAC3D,UAAI,cAAc,QAAS,QAAO,SAAS,YAAY;AACvD,aAAO,SAAS,kBAAkB;AAAA,IACpC;AACA,WAAO,SAAS,aAAa;AAAA,EAC/B;AAAA,EACA,kBAAkB;AAChB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAO,CAAC,IAAI,OAAQ;AACzB,QAAI,OAAO,sJAAsJ;AACjK,aAAS,qBAAqB,IAAI,QAAQ,OAAO;AAAA,MAC/C,IAAI,IAAI,KAAK,gCAAgC;AAAA,MAC7C,UAAU,IAAI,KAAK,0BAA0B;AAAA,MAC7C,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,IAAI;AAAA,QACF,QAAQ;AACN,mBAAS,iBAAiB;AAAA,QAC5B;AAAA,QACA,SAAS;AACP,cAAI,SAAS,mBAAmB,IAAK,UAAS,mBAAmB,IAAI,OAAO;AAC5E,mBAAS,mBAAmB,QAAQ;AACpC,cAAI,SAAS,qBAAqB;AAChC,qBAAS,oBAAoB,MAAM;AACnC,qBAAS,oBAAoB,QAAQ;AAAA,UACvC;AACA,iBAAO,SAAS;AAChB,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,mBAAmB,KAAK;AACjC,UAAM,cAAc,SAAS,SAAS,IAAI,KAAK,yBAAyB,EAAE,KAAK,mBAAmB,GAAG,EAAE;AACvG,UAAM,SAAS,CAAC;AAChB,UAAM,gBAAgB,CAAC;AACvB,aAAS,WAAW,QAAQ,CAAC,GAAG,UAAU;AACxC,aAAO,KAAK,KAAK;AACjB,oBAAc,KAAK,CAAC;AAAA,IACtB,CAAC;AACD,aAAS,sBAAsB,IAAI,OAAO,OAAO;AAAA,MAC/C,aAAa,SAAS,mBAAmB,IAAI,KAAK,wBAAwB;AAAA,MAC1E,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS,SAAS,OAAO;AAAA,MACzB,cAAc;AAAA,MACd,kBAAkB,SAAS,OAAO;AAAA,MAClC,MAAM,CAAC;AAAA,QACL;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EACA,mBAAmB;AACjB,UAAM,WAAW;AACjB,QAAI,SAAS,sBAAsB,SAAS,mBAAmB,OAAQ,UAAS,mBAAmB,MAAM;AACzG,UAAM,QAAQ,SAAS,oBAAoB,MAAM,CAAC;AAClD,UAAM,mBAAmB,SAAS,SAAS,IAAI,KAAK,yBAAyB,EAAE,KAAK,mBAAmB,GAAG,EAAE;AAC5G,UAAM,aAAa,SAAS;AAC5B,UAAM,OAAO,mBAAmB;AAChC,UAAM,YAAY,QAAQ;AAC1B,aAAS,aAAa,SAAS,aAAa,WAAW,CAAC;AAAA,EAC1D;AAAA,EACA,iBAAiB;AACf,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAO,CAAC,IAAI,OAAQ;AACzB,QAAI,OAAO,oJAAoJ;AAC/J,aAAS,oBAAoB,IAAI,QAAQ,OAAO;AAAA,MAC9C,IAAI,IAAI,KAAK,+BAA+B;AAAA,MAC5C,UAAU,IAAI,KAAK,yBAAyB;AAAA,MAC5C,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,IAAI;AAAA,QACF,QAAQ;AACN,mBAAS,gBAAgB;AAAA,QAC3B;AAAA,QACA,SAAS;AACP,cAAI,SAAS,kBAAkB,IAAK,UAAS,kBAAkB,IAAI,OAAO;AAC1E,mBAAS,kBAAkB,QAAQ;AACnC,cAAI,SAAS,oBAAoB;AAC/B,qBAAS,mBAAmB,MAAM;AAClC,qBAAS,mBAAmB,QAAQ;AAAA,UACtC;AACA,iBAAO,SAAS;AAChB,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,KAAK;AAChC,UAAM,cAAc,SAAS;AAC7B,QAAI,UAAU,SAAS,OAAO,kBAAiB,oBAAI,KAAK,GAAE,YAAY,IAAI;AAC1E,QAAI,SAAS,OAAO,SAAS;AAC3B,gBAAU,KAAK,IAAI,SAAS,IAAI,KAAK,SAAS,OAAO,OAAO,EAAE,YAAY,CAAC;AAAA,IAC7E;AACA,QAAI,UAAU,SAAS,OAAO,kBAAiB,oBAAI,KAAK,GAAE,YAAY,IAAI;AAC1E,QAAI,SAAS,OAAO,SAAS;AAC3B,gBAAU,KAAK,IAAI,SAAS,IAAI,KAAK,SAAS,OAAO,OAAO,EAAE,YAAY,CAAC;AAAA,IAC7E;AACA,UAAM,QAAQ,CAAC;AACf,aAAS,IAAI,SAAS,KAAK,SAAS,KAAK,GAAG;AAC1C,YAAM,KAAK,CAAC;AAAA,IACd;AACA,aAAS,qBAAqB,IAAI,OAAO,OAAO;AAAA,MAC9C,aAAa,SAAS,kBAAkB,IAAI,KAAK,uBAAuB;AAAA,MACxE,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS,SAAS,OAAO;AAAA,MACzB,cAAc;AAAA,MACd,kBAAkB,SAAS,OAAO;AAAA,MAClC,MAAM,CAAC;AAAA,QACL,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EACA,kBAAkB;AAChB,UAAM,WAAW;AACjB,QAAI,SAAS,qBAAqB,SAAS,kBAAkB,OAAQ,UAAS,kBAAkB,MAAM;AACtG,aAAS,aAAa,SAAS,mBAAmB,MAAM,CAAC,GAAG,QAAW,CAAC;AAAA,EAC1E;AAAA,EACA,iBAAiB;AACf,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAO,CAAC,IAAI,OAAQ;AACzB,QAAI,OAAO,oJAAoJ;AAC/J,UAAM,WAAW,CAAC;AAClB,UAAM,aAAa,CAAC;AACpB,UAAM,WAAW,kBAAkB,IAAI;AACvC,UAAM,WAAW,kBAAkB,KAAK;AACxC,aAAS,IAAI,UAAU,KAAK,UAAU,KAAK,GAAG;AAC5C,eAAS,KAAK,CAAC;AAAA,IACjB;AACA,aAAS,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG;AAC/B,iBAAW,KAAK,CAAC;AAAA,IACnB;AACA,QAAI;AACJ,QAAI,SAAS,SAAS,SAAS,MAAM,QAAQ;AAC3C,cAAQ,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,MAAM,CAAC,EAAE,WAAW,CAAC;AAAA,IACvE,OAAO;AACL,cAAQ,EAAC,oBAAI,KAAK,GAAE,SAAS,IAAG,oBAAI,KAAK,GAAE,WAAW,CAAC;AAAA,IACzD;AACA,QAAI,iBAAiB;AACnB,YAAM,KAAK,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI;AACtC,UAAI,MAAM,CAAC,IAAI,GAAI,OAAM,CAAC,KAAK;AAC/B,UAAI,MAAM,CAAC,MAAM,EAAG,OAAM,CAAC,IAAI;AAAA,IACjC;AACA,aAAS,oBAAoB,IAAI,QAAQ,OAAO;AAAA,MAC9C,IAAI,IAAI,KAAK,+BAA+B;AAAA,MAC5C,UAAU,IAAI,KAAK,+BAA+B;AAAA,MAClD,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,IAAI;AAAA,QACF,QAAQ;AACN,mBAAS,gBAAgB;AAAA,QAC3B;AAAA,QACA,SAAS;AACP,cAAI,SAAS,kBAAkB,IAAK,UAAS,kBAAkB,IAAI,OAAO;AAC1E,mBAAS,kBAAkB,QAAQ;AACnC,cAAI,SAAS,oBAAoB;AAC/B,qBAAS,mBAAmB,MAAM;AAClC,qBAAS,mBAAmB,QAAQ;AAAA,UACtC;AACA,iBAAO,SAAS;AAChB,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,KAAK;AAChC,aAAS,qBAAqB,IAAI,OAAO,OAAO;AAAA,MAC9C,aAAa,SAAS,kBAAkB,IAAI,KAAK,uBAAuB;AAAA,MACxE;AAAA,MACA,SAAS,SAAS,OAAO;AAAA,MACzB,cAAc;AAAA,MACd,kBAAkB,SAAS,OAAO;AAAA,MAClC,MAAM,CAAC;AAAA,QACL,QAAQ;AAAA,MACV,GAAG;AAAA,QACD,SAAS;AAAA,QACT,SAAS;AAAA,MACX,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,eAAe,WAAW,IAAI,OAAK,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;AAAA,MACzD,GAAG,GAAI,kBAAkB,CAAC;AAAA,QACxB,QAAQ,CAAC,MAAM,IAAI;AAAA,MACrB,CAAC,IAAI,CAAC,CAAE;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EACA,kBAAkB;AAChB,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,SAAS,oBAAoB;AAC/B,YAAM,kBAAkB,SAAS,mBAAmB;AACpD,UAAI,QAAQ,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC3C,YAAM,UAAU,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/C,YAAM,SAAS,SAAS,mBAAmB,MAAM,CAAC;AAClD,UAAI,iBAAiB;AACnB,YAAI,WAAW,QAAQ,UAAU,IAAI;AACnC,kBAAQ;AAAA,QACV,WAAW,WAAW,QAAQ,UAAU,IAAI;AAC1C,mBAAS;AAAA,QACX;AAAA,MACF;AACA,UAAI,QAAQ,SAAS,SAAS,SAAS,MAAM,UAAU,SAAS,MAAM,CAAC;AACvE,UAAI,CAAC,OAAO;AACV,gBAAQ,oBAAI,KAAK;AACjB,cAAM,SAAS,OAAO,SAAS,GAAG,CAAC;AAAA,MACrC,OAAO;AACL,gBAAQ,IAAI,KAAK,KAAK;AACtB,cAAM,SAAS,OAAO,OAAO;AAAA,MAC/B;AACA,eAAS,SAAS,CAAC,KAAK,CAAC;AACzB,UAAI,SAAS,qBAAqB,SAAS,kBAAkB,OAAQ,UAAS,kBAAkB,MAAM;AAAA,IACxG;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,aAAS,UAAU;AACnB,aAAS,SAAS;AAClB,aAAS,UAAU;AAGnB,aAAS,qBAAqB;AAC9B,UAAM,cAAc,CAAC,SAAS,OAAO;AAGrC,QAAI,CAAC,aAAa;AAChB,UAAI,MAAO,UAAS,SAAS,OAAO,CAAC;AAAA,eAAW,OAAO,OAAO;AAC5D,iBAAS,SAAS,SAAS,gBAAgB,OAAO,KAAK,GAAG,CAAC;AAAA,MAC7D;AAAA,IACF,WAAW,OAAO;AAChB,eAAS,SAAS,OAAO,CAAC;AAAA,IAC5B;AAGA,aAAS,uBAAuB;AAGhC,aAAS,kBAAkB;AAC3B,aAAS,mBAAmB;AAG5B,QAAI,YAAa,UAAS,YAAY;AAAA,aAAW,OAAO,UAAU,OAAO;AACvE,eAAS,YAAY,IAAI;AAAA,IAC3B;AAGA,QAAI,CAAC,UAAU,YAAY,SAAS,UAAU,IAAI,UAAU,MAAM;AAChE,eAAS,QAAQ,OAAO;AAAA,IAC1B;AACA,aAAS,cAAc;AACvB,aAAS,QAAQ,KAAK,aAAW;AAC/B,eAAS,KAAK,oCAAoC,OAAO;AAAA,IAC3D,CAAC;AAGD,QAAI,KAAK;AACP,UAAI,QAAQ,eAAe;AAAA,IAC7B;AACA,QAAI,UAAU;AACZ,eAAS,QAAQ,eAAe;AAAA,IAClC;AACA,aAAS,KAAK,4BAA4B,QAAQ;AAAA,EACpD;AAAA,EACA,WAAW;AACT,UAAM,WAAW;AACjB,aAAS,UAAU;AACnB,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,iBAAiB;AAAA,IACxC;AACA,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,iBAAiB;AAAA,IAC7C;AACA,aAAS,KAAK,gCAAgC,QAAQ;AAAA,EACxD;AAAA,EACA,UAAU;AACR,UAAM,WAAW;AACjB,UAAM,MAAM,SAAS;AACrB,aAAS,UAAU;AACnB,aAAS,UAAU;AACnB,QAAI,SAAS,UAAU;AACrB,UAAI,IAAI,UAAU,MAAM;AACtB,iBAAS,SAAS,QAAQ,MAAM;AAAA,MAClC,OAAO;AACL,cAAM,WAAW,SAAS,SAAS,KAAK,UAAU;AAClD,cAAM,WAAW,SAAS,SAAS,KAAK,UAAU;AAClD,YAAI,YAAY,UAAU;AACxB,cAAI,MAAM,SAAS,SAAS,QAAQ;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AACA,QAAI,SAAS,sBAAsB;AACjC,eAAS,qBAAqB;AAAA,IAChC;AACA,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,gBAAgB;AAAA,IACvC;AACA,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,gBAAgB;AAAA,IAC5C;AACA,aAAS,KAAK,8BAA8B,QAAQ;AAAA,EACtD;AAAA,EACA,WAAW;AACT,UAAM,WAAW;AACjB,aAAS,SAAS;AAClB,aAAS,UAAU;AACnB,QAAI,CAAC,SAAS,QAAQ;AACpB,eAAS,MAAM;AACb,YAAI,SAAS,SAAS,SAAS,MAAM,MAAM,SAAS,MAAM,SAAS;AACjE,cAAI,CAAC,SAAS,OAAO,gBAAgB;AACnC,qBAAS,MAAM,QAAQ;AAAA,UACzB;AAAA,QACF;AACA,eAAO,SAAS;AAAA,MAClB,CAAC;AAAA,IACH;AACA,QAAI,SAAS,oBAAoB;AAC/B,UAAI,SAAS,mBAAmB,QAAS,UAAS,mBAAmB,QAAQ;AAC7E,aAAO,SAAS;AAAA,IAClB;AACA,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,iBAAiB;AAAA,IACxC;AACA,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,iBAAiB;AAAA,IAC7C;AACA,aAAS,KAAK,gCAAgC,QAAQ;AAAA,EACxD;AAAA,EACA,OAAO;AACL,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAQ;AACZ,QAAI,QAAQ;AACV,eAAS,MAAM,aAAE,SAAS,OAAO,CAAC;AAClC,eAAS,IAAI,CAAC,EAAE,aAAa;AAC7B,eAAS,aAAa,SAAS,IAAI,KAAK,0BAA0B;AAClE,eAAS,UAAU,SAAS,WAAW,KAAK,iBAAiB;AAC7D,eAAS,aAAa,OAAO,SAAS,GAAG;AACzC,eAAS,OAAO;AAChB,eAAS,SAAS;AAClB;AAAA,IACF;AACA,QAAI,YAAY,OAAO;AACvB,QAAI,cAAc,QAAQ;AACxB,kBAAY,SAAS,UAAU,IAAI,YAAY;AAAA,IACjD;AACA,UAAM,eAAe,SAAS,OAAO;AACrC,UAAM,cAAc;AAAA,MAClB,UAAU;AAAA,MACV,YAAY,OAAO,gBAAgB,WAAW;AAAA,MAC9C,SAAS;AAAA,MACT,UAAU,OAAO,aAAa,SAAS,cAAc,aAAa,cAAc,kBAAkB,IAAI,OAAO,QAAQ,aAAa,SAAS,OAAO,aAAa;AAAA,MAC/J,sBAAsB,OAAO;AAAA,MAC7B,IAAI;AAAA,QACF,OAAO;AACL,gBAAM,QAAQ;AACd,mBAAS,QAAQ;AACjB,mBAAS,MAAM,cAAc,YAAY,MAAM,IAAI,KAAK,WAAW,IAAI,MAAM;AAC7E,mBAAS,aAAa,SAAS,IAAI,KAAK,0BAA0B;AAClE,mBAAS,UAAU,SAAS,WAAW,KAAK,iBAAiB;AAC7D,mBAAS,IAAI,CAAC,EAAE,aAAa;AAC7B,cAAI,cAAc,eAAe;AAC/B,yBAAE,SAAS,GAAG,EAAE,KAAK,iBAAiB,EAAE,KAAK,SAAS,MAAM;AAC1D,uBAAS,MAAM;AAAA,YACjB,CAAC;AAAA,UACH;AACA,mBAAS,OAAO;AAAA,QAClB;AAAA,QACA,SAAS;AACP,mBAAS,SAAS;AAAA,QACpB;AAAA,QACA,QAAQ;AACN,mBAAS,QAAQ;AAAA,QACnB;AAAA,QACA,SAAS;AACP,mBAAS,SAAS;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACA,QAAI,cAAc,SAAS;AACzB,kBAAY,OAAO,OAAO;AAC1B,kBAAY,eAAe,OAAO;AAAA,IACpC;AACA,QAAI,OAAO,kBAAkB,SAAS,MAAM;AAC1C,eAAS,KAAK,OAAO,SAAS;AAAA,QAC5B,KAAK,SAAS;AAAA,QACd,OAAO;AAAA,UACL,MAAM,SAAS;AAAA,UACf,CAAC,SAAS,GAAG;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,eAAS,QAAQ,IAAI,SAAS,EAAE,OAAO,WAAW;AAClD,eAAS,MAAM,KAAK;AAAA,IACtB;AAAA,EACF;AAAA,EACA,QAAQ;AACN,UAAM,WAAW;AACjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAQ;AACb,QAAI,QAAQ;AACV,eAAS,QAAQ;AACjB,eAAS,SAAS;AAClB;AAAA,IACF;AACA,QAAI,SAAS,OAAO,kBAAkB,SAAS,MAAM;AACnD,eAAS,KAAK,OAAO,KAAK;AAAA,IAC5B,OAAO;AACL,eAAS,MAAM,MAAM;AAAA,IACvB;AAAA,EACF;AAAA,EACA,OAAO;AACL,UAAM,WAAW;AACjB,aAAS,UAAU;AACnB,QAAI,SAAS,QAAQ;AACnB,eAAS,KAAK;AACd,eAAS,KAAK,4BAA4B,QAAQ;AAClD;AAAA,IACF;AACA,QAAI,CAAC,SAAS,eAAe,SAAS,OAAO,OAAO;AAClD,eAAS,SAAS,SAAS,gBAAgB,SAAS,OAAO,KAAK,CAAC;AAAA,IACnE;AAGA,QAAI,SAAS,UAAU;AACrB,eAAS,kBAAkB;AAAA,IAC7B;AACA,QAAI,SAAS,OAAO,qBAAqB;AACvC,eAAS,iBAAiB;AAAA,IAC5B;AACA,aAAS,KAAK,4BAA4B,QAAQ;AAAA,EACpD;AAAA,EACA,UAAU;AACR,UAAM,WAAW;AACjB,QAAI,SAAS,UAAW;AACxB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,aAAS,KAAK,8CAA8C,QAAQ;AACpE,QAAI,IAAK,KAAI,QAAQ,wBAAwB;AAC7C,aAAS,MAAM;AAGf,QAAI,SAAS,UAAU;AACrB,eAAS,kBAAkB;AAAA,IAC7B;AACA,QAAI,SAAS,OAAO,qBAAqB;AACvC,eAAS,iBAAiB;AAAA,IAC5B;AACA,QAAI,SAAS,oBAAoB;AAC/B,UAAI,SAAS,mBAAmB,QAAS,UAAS,mBAAmB,QAAQ;AAC7E,aAAO,SAAS;AAAA,IAClB;AACA,QAAI,OAAO,IAAI,OAAQ,QAAO,SAAS,IAAI,CAAC,EAAE;AAC9C,gBAAY,QAAQ;AACpB,aAAS,YAAY;AAAA,EACvB;AACF;AACA,IAAO,yBAAQ;;;AC50Df,IAAO,mBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,WAAW,mBAAmB;AAAA,MAChC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AACD,QAAI,SAAS,QAAQ,SAASC,OAAM,IAAI;AACtC,UAAI,OAAO,QAAQ;AACjB,aAAK;AAAA,MACP;AACA,YAAM,MAAM,aAAE,EAAE;AAChB,UAAI,IAAI,WAAW,EAAG;AACtB,YAAM,WAAW,IAAI,CAAC,EAAE;AACxB,UAAI,CAAC,YAAY,YAAY,CAAC,SAAS,OAAQ;AAC/C,eAAS,MAAM;AAAA,IACjB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA;AAAA,MAER,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,UAAU;AAAA;AAAA,MAEV,aAAa,CAAC,GAAG,CAAC;AAAA;AAAA,MAElB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,oBAAoB;AAAA;AAAA,MAEpB,oBAAoB;AAAA;AAAA,MAEpB,WAAW;AAAA;AAAA,MAEX,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA;AAAA,MAEV,QAAQ;AAAA;AAAA,MAER,eAAe;AAAA;AAAA,MAEf,WAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,MACf,eAAe;AAAA,MACf,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,MACA,uBAAuB;AAAA,MACvB,qBAAqB;AAAA,MACrB,YAAY;AAAA,MACZ,OAAO;AAAA;AAAA,MAEP,aAAa;AAAA,MACb,QAAQ;AAAA;AAAA,MAER,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,SAAS;AAAA,MACT,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,UAAU;AAAA,MACV,sBAAsB;AAAA;AAAA,MAEtB,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,EACF;AACF;;;ACpHe,SAAR,aAA8B,OAAO,aAAa;AACvD,QAAM,SAAS;AAEf,QAAM,SAAS,aAAE,KAAK;AACtB,QAAM,WAAW,OAAO,MAAM;AAC9B,QAAM,MAAM,OAAO,KAAK,QAAQ;AAChC,MAAI,IAAI,QAAS;AACjB,MAAI,MAAM;AACV,MAAI,KAAK,OAAO,CAAC;AACjB,MAAI,WAAW,IAAI,IAAI,KAAK,eAAe;AAC3C,MAAI,QAAQ,IAAI,SAAS,KAAK,cAAc;AAC5C,MAAI;AACJ,MAAI;AACJ,MAAI,gBAAgB,SAAS,iBAAiB,QAAQ,eAAe;AACnE,QAAI,aAAa;AACjB,QAAI,SAAS;AACb,QAAI,gBAAgB;AACpB,QAAI,SAAS,KAAK,OAAO,aAAa,KAAK,IAAI,CAAC;AAChD,QAAI,QAAQ,IAAI,SAAS,KAAK,cAAc;AAC5C,QAAI,SAAS;AACb,QAAI,SAAS,IAAI,OAAO,CAAC,GAAG,IAAI;AAChC,QAAI,aAAa;AAAA,EACnB;AACA,MAAI,WAAW,SAAS,cAAc;AACpC,gBAAY,IAAI,IAAI,CAAC,EAAE;AACvB,iBAAa,IAAI,MAAM,CAAC,EAAE;AAC1B,UAAM,aAAa,IAAI,GAAG,MAAM,iBAAiB,4BAA4B;AAC7E,QAAI,GAAG,MAAM,YAAY,8BAA8B,IAAI,YAAY,cAAc,CAAC,IAAI;AAC1F,QAAI,CAAC,YAAY;AACf,UAAI,SAAS,CAAC,EAAE,YAAY;AAAA,IAC9B;AAAA,EACF;AACA,MAAI,WAAW,SAAS,YAAY,UAAU,gBAAgB;AAC5D,UAAM,iBAAiB,IAAI,SAAS,KAAK,mCAAmC,QAAQ,IAAI,EAAE,MAAM;AAChG,QAAI,OAAO,mBAAmB,eAAe,mBAAmB,IAAI;AAClE;AAAA,IACF;AACA,UAAM,eAAe,iBAAiB;AACtC,QAAI,SAAS,CAAC,EAAE,YAAY;AAG5B,QAAI,YAAY,gBAAgB,cAAc,cAAc;AAAA,EAC9D;AACA,MAAI,cAAc,SAAS,eAAe,aAAa,WAAW,gBAAgB;AAChF,QAAI,OAAO,cAAc,aAAa;AAEpC,kBAAY,IAAI,SAAS,CAAC,EAAE;AAAA,IAC9B;AAGA,QAAI,OAAO,gBAAgB,aAAa;AACtC,oBAAc,KAAK,MAAM,YAAY,UAAU;AAAA,IACjD;AACA,QAAI,cAAc,EAAG,eAAc;AACnC,QAAI,eAAe,IAAI,MAAM,OAAQ,eAAc,IAAI,MAAM,SAAS;AAEtE,UAAM,sBAAsB,IAAI;AAChC,QAAI,cAAc;AAClB,QAAI,SAAS,KAAK,uBAAuB,EAAE,YAAY,sBAAsB;AAC7E,UAAM,eAAe,IAAI,MAAM,GAAG,WAAW;AAC7C,iBAAa,SAAS,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE;AAErE,QAAI,OAAO,OAAO,cAAc;AAC9B,UAAI,MAAM,KAAK,YAAU;AACvB,cAAM,UAAU,aAAE,MAAM;AACxB,cAAM,aAAa,OAAO,aAAa,YAAY,cAAc,IAAI;AACrE,cAAM,aAAa,aAAa;AAChC,cAAM,WAAW,KAAK,KAAK,IAAI,SAAS,aAAa,CAAC,IAAI;AAC1D,YAAI,QAAQ,MAAM;AAClB,YAAI,QAAQ,IAAK,SAAQ;AACzB,YAAI,QAAQ,KAAM,SAAQ;AAC1B,YAAI,KAAK,IAAI,UAAU,IAAI,UAAU;AACnC,kBAAQ,SAAS,iBAAiB;AAAA,QACpC,OAAO;AACL,kBAAQ,YAAY,iBAAiB;AAAA,QACvC;AACA,gBAAQ,SAAS,MAAM,EAAE,UAAU,kBAAkB,CAAC,aAAa,UAAU,uBAAuB,KAAK,MAAM;AAAA,MACjH,CAAC;AAAA,IACH;AACA,QAAI,kBAAkB,OAAO,mBAAmB,aAAa;AAE3D,UAAI,QAAQ,aAAa,KAAK,mBAAmB;AACjD,UAAI,eAAe,IAAI,gBAAgB,IAAI,cAAc,WAAW,IAAI,IAAI;AAE5E,UAAI,wBAAwB,aAAa;AACvC,YAAI,IAAI,UAAU;AAChB,cAAI,SAAS,QAAQ,IAAI,OAAO,IAAI,YAAY;AAAA,QAClD;AACA,eAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,WAAS,eAAe;AACtB,QAAI,YAAY;AAAA,EAClB;AACA,WAAS,cAAc;AACrB,UAAM,QAAQ,aAAE,IAAI,EAAE,KAAK,mBAAmB;AAC9C,QAAI,SAAS,KAAK;AAAA,EACpB;AACA,MAAI,eAAe,SAAS,kBAAkB;AAC5C,QAAI,SAAS,GAAG,UAAU,YAAY;AACtC,QAAI,MAAM,GAAG,SAAS,WAAW;AAAA,EACnC;AACA,MAAI,eAAe,SAAS,kBAAkB;AAC5C,QAAI,MAAM,IAAI,SAAS,WAAW;AAAA,EACpC;AACA,MAAI,OAAO,SAAS,UAAU;AAC5B,QAAI,SAAS;AACb,QAAI,aAAa,EAAG,KAAI,IAAI,SAAS,qBAAqB;AAC1D,QAAI,aAAa,OAAO,KAAK,SAAS,EAAG,KAAI,IAAI,SAAS,oBAAoB;AAC9E,QAAI,OAAO,OAAO,SAAU,KAAI,IAAI,SAAS,yBAAyB;AAEtE,QAAI,YAAa,KAAI,YAAY,CAAC;AAClC,QAAI,aAAa;AAAA,EACnB;AACA,MAAI,UAAU,SAAS,aAAa;AAClC,QAAI,aAAa;AAAA,EACnB;AACA,MAAI,KAAK;AACX;;;AC/GA,IAAM,SAAN,cAAqB,cAAgB;AAAA,EACnC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,SAAS;AACf,UAAM,SAAS,UAAU;AACzB,UAAMC,UAAS,UAAU;AACzB,WAAO,SAAS,OAAO,CAAC,GAAG,IAAI,OAAO,QAAQ,MAAM;AACpD,QAAI;AACJ,QAAI,OAAO,OAAO,aAAa;AAC7B,qBAAe,aAAE,OAAO,OAAO,WAAW;AAC1C,UAAI,aAAa,WAAW,EAAG,QAAO;AAAA,IACxC;AACA,QAAI;AACJ,QAAI,OAAO,OAAO,SAAS;AACzB,iBAAW,aAAE,OAAO,OAAO,OAAO;AAAA,IACpC;AACA,QAAI,cAAc,OAAO,OAAO,gBAAgB,WAAW;AAC3D,QAAI,OAAO,OAAO,YAAY;AAC5B,YAAM,aAAa,aAAE,OAAO,OAAO,UAAU;AAC7C,UAAI,WAAW,SAAS,GAAG;AACzB,sBAAc;AAAA,MAChB;AAAA,IACF;AACA,WAAO,QAAQ;AAAA,MACb;AAAA,MACA;AAAA,MACA,aAAa,gBAAgB,aAAa,CAAC;AAAA,MAC3C,QAAQ,gBAAgB,aAAa,SAAS;AAAA,MAC9C,gBAAgB,OAAO,OAAOA,QAAO,UAAU,UAAU,YAAY,EAAE,QAAQ,QAAQ,KAAK,KAAKA,QAAO,UAAU,UAAU,YAAY,EAAE,QAAQ,QAAQ,IAAI,KAAK,CAAC,OAAO;AAAA,MAC3K,MAAM,CAAC;AAAA,MACP;AAAA,MACA,SAAS,YAAY,SAAS,CAAC;AAAA,MAC/B;AAAA,MACA,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,KAAK,OAAO,OAAO;AAAA,IACrB,CAAC;AACD,aAASC,YAAW;AAClB,aAAO,WAAW;AAAA,IACpB;AACA,aAAS,eAAe;AACtB,aAAO,KAAK;AAAA,IACd;AACA,aAAS,aAAa,GAAG;AACvB,QAAE,eAAe;AAAA,IACnB;AACA,QAAI,uBAAuB;AAC3B,aAAS,iBAAiB,GAAG;AAC3B,6BAAuB,EAAE;AAAA,IAC3B;AACA,aAAS,YAAY,GAAG;AACtB,UAAI,OAAO,aAAa,CAAC,OAAO,OAAQ;AACxC,YAAM,YAAY,aAAE,EAAE,MAAM;AAC5B,UAAI,OAAO,UAAU,EAAG;AACxB,UAAI,CAAC,OAAO,UAAU,OAAO,QAAS;AACtC,UAAI,UAAU,QAAQ,qBAAqB,EAAE,OAAQ;AACrD,UAAI,YAAY,SAAS,SAAS,GAAG;AACnC,YAAI,yBAAyB,EAAE,UAAU,UAAU,CAAC,MAAM,SAAS,CAAC,KAAK,UAAU,QAAQ,cAAc,EAAE,WAAW,GAAG;AACvH,iBAAO,MAAM;AAAA,QACf;AAAA,MACF,WAAW,aAAE,EAAE,MAAM,EAAE,QAAQ,cAAc,EAAE,WAAW,GAAG;AAC3D,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAGA,WAAO,QAAQ;AAAA,MACb,oBAAoB;AAClB,YAAI,GAAG,UAAUA,SAAQ;AAAA,MAC3B;AAAA,MACA,oBAAoB;AAClB,YAAI,IAAI,UAAUA,SAAQ;AAAA,MAC5B;AAAA,MACA,oBAAoB;AAClB,eAAO,SAAS,GAAG,SAAS,YAAY;AACxC,YAAI,OAAO,OAAO,eAAe;AAC/B,iBAAO,SAAS,GAAG,mBAAmB,YAAY;AAClD,cAAI,OAAO,SAAS,CAAC,GAAG;AACtB,mBAAO,SAAS,CAAC,EAAE,qBAAqB;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAAA,MACA,oBAAoB;AAClB,eAAO,SAAS,IAAI,SAAS,YAAY;AACzC,YAAI,OAAO,OAAO,eAAe;AAC/B,iBAAO,SAAS,IAAI,mBAAmB,YAAY;AACnD,cAAI,OAAO,SAAS,CAAC,GAAG;AACtB,mBAAO,OAAO,SAAS,CAAC,EAAE;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AAAA,MACA,mBAAmB;AACjB,YAAI,GAAG,SAAS,WAAW;AAC3B,YAAI,GAAG,cAAc,gBAAgB;AAAA,MACvC;AAAA,MACA,mBAAmB;AACjB,YAAI,IAAI,SAAS,WAAW;AAC5B,YAAI,IAAI,cAAc,gBAAgB;AAAA,MACxC;AAAA,IACF,CAAC;AACD,WAAO,KAAK;AACZ,WAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI,OAAO,MAAM;AACf,aAAO,OAAO;AAAA,IAChB,WAAW,UAAU;AACnB,aAAO,SAAS,QAAQ,OAAO,EAAE,UAAU,SAAS,QAAQ,OAAO,EAAE,CAAC,EAAE;AAAA,IAC1E;AACA,QAAI,CAAC,KAAM,QAAO,IAAI,MAAM;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,SAAU;AACtB,QAAI,OAAO,OAAO,cAAe,QAAO,SAAS,KAAK,YAAY,IAAI;AAAA,EACxE;AAAA,EACA,aAAa;AACX,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,OAAQ;AACpB,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK,QAAQ,KAAK,GAAG;AAC9C,UAAI,CAAC,OAAO,KAAK,CAAC,EAAE,SAAS;AAC3B,eAAO,KAAK,CAAC,EAAE,SAAS;AACxB,eAAO,KAAK,CAAC,EAAE,SAAS,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAAA,EACA,YAAY;AACV,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,UAAU;AACzB,QAAI,OAAO,WAAW,QAAS,QAAO;AACtC,QAAI,SAAS,MAAM,SAAS,UAAW,QAAO;AAC9C,QAAI,CAAC,OAAO,UAAU,OAAO,SAAS;AACpC,UAAI,OAAO,WAAW,UAAW,QAAO;AACxC,UAAI,OAAO,KAAK;AACd,eAAO,CAAC,CAAC,OAAO;AAAA,MAClB;AACA,UAAI,IAAI,SAAS,KAAK;AACpB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,OAAO,aAAa;AAC7B,aAAO,OAAO,OAAO,YAAY,KAAK,QAAQ,OAAO,YAAY;AAAA,IACnE;AACA,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA,EACA,SAAS,QAAQ;AACf,UAAM,SAAS;AACf,QAAI,aAAa;AACjB,QAAI,OAAO,KAAK,WAAW,GAAG;AAC5B,aAAO,QAAQ;AACf,aAAO,YAAY,MAAM;AACzB;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK,QAAQ,KAAK,GAAG;AAC9C,UAAI,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,SAAS;AAC7C,eAAO,KAAK,CAAC,EAAE,SAAS,OAAO,UAAU,CAAC;AAC1C,sBAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AACT,UAAM,SAAS;AACf,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,YAAY,aAAa;AACvB,UAAM,SAAS;AACf,UAAM,WAAW,eAAe,CAAC;AACjC,UAAM,kBAAkB,CAAC;AACzB,QAAI;AACJ,QAAI,OAAO,KAAK,WAAW,GAAG;AAC5B,YAAM,mBAAmB,OAAO,OAAO,KAAK,OAAO,OAAK,CAAC,EAAE,OAAO;AAClE,eAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK,GAAG;AACnD,iBAAS,iBAAiB,CAAC;AAC3B,YAAI,OAAO,kBAAkB,UAAa,OAAO,WAAW,UAAa,OAAO,OAAO,QAAQ,SAAS,CAAC,CAAC,MAAM,IAAI;AAClH,0BAAgB,KAAK,OAAO,cAAc,OAAO,OAAO,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC;AAAA,QAC/E,OAAO;AACL,0BAAgB,KAAK,SAAS,CAAC,CAAC;AAAA,QAClC;AAAA,MACF;AAAA,IACF,OAAO;AACL,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK,QAAQ,KAAK,GAAG;AAC9C,YAAI,CAAC,OAAO,KAAK,CAAC,EAAE,SAAS;AAC3B,mBAAS,KAAK,OAAO,KAAK,CAAC,EAAE,KAAK;AAClC,0BAAgB,KAAK,OAAO,KAAK,CAAC,EAAE,YAAY;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AACA,QAAI,SAAS,QAAQ,MAAS,KAAK,GAAG;AACpC;AAAA,IACF;AACA,WAAO,QAAQ;AACf,WAAO,eAAe;AACtB,WAAO,KAAK,8BAA8B,QAAQ,OAAO,OAAO,OAAO,YAAY;AACnF,QAAI,OAAO,SAAS;AAClB,aAAO,SAAS,IAAI,OAAO,YAAY,CAAC;AACxC,aAAO,SAAS,QAAQ,QAAQ;AAAA,IAClC;AAAA,EACF;AAAA,EACA,WAAW,OAAO,aAAa;AAC7B,UAAM,SAAS;AACf,iBAAa,KAAK,QAAQ,OAAO,WAAW;AAAA,EAC9C;AAAA;AAAA,EAEA,cAAc,OAAO;AACnB,UAAM,SAAS;AACf,UAAM,SAAS,aAAE,KAAK;AACtB,UAAM,QAAQ,OAAO,MAAM;AAC3B,QAAI,OAAO,KAAK,KAAK,KAAK,OAAO,KAAK,KAAK,EAAE,SAAS;AACpD,aAAO,KAAK,KAAK,EAAE,QAAQ;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,UAAM,SAAS;AACf,QAAI,OAAO,OAAO,cAAe,QAAO,OAAO,OAAO,cAAc,KAAK,QAAQ,MAAM;AACvF,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,CAAC;AAAA,EACtC;AAAA;AAAA,EAEA,aAAa,KAAK,WAAW;AAC3B,UAAM,aAAa,iBAAiB,IAAI,YAAY,iBAAiB,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE;AAC/G,QAAI;AACJ,QAAI;AACJ,QAAI,IAAI,SAAS;AAEf,mBAAa;AAAA,sBACG,UAAU,2BAA2B,IAAI,OAAO;AAAA;AAAA,IAElE,OAAO;AAEL,wBAAkB,IAAI,OAAO,IAAI,CAAC,OAAO,UAAU;AAAA,sDACH,KAAK;AAAA,kBACzC,IAAI,gBAAgB,IAAI,cAAc,KAAK,IAAI,KAAK;AAAA;AAAA,OAE/D,EAAE,KAAK,EAAE;AAEV,mBAAa;AAAA,sBACG,UAAU;AAAA,sCACM,eAAe;AAAA;AAAA;AAAA,IAGjD;AACA,WAAO,YAAY,gBAAgB,KAAK,IAAI,WAAW,KAAK;AAAA,EAC9D;AAAA,EACA,eAAe;AACb,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,UAAM,aAAa,YAAK,OAAO;AAAA,MAC7B,OAAO,wBAAwB,eAAe,cAAc,EAAE,IAAI,YAAY,EAAE;AAAA,IAClF,GAAG,WAAW,OAAO,cAAc,GAAG,YAAK,OAAO;AAAA,MAChD,OAAO;AAAA,IACT,GAAG,OAAO,KAAK,IAAI,SAAO,OAAO,aAAa,GAAG,CAAC,GAAG,YAAK,OAAO;AAAA,MAC/D,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AACH,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,UAAM,YAAY,YAAK,OAAO;AAAA,MAC5B,OAAO,mCAAmC,eAAe,cAAc,EAAE,IAAI,YAAY,EAAE;AAAA,IAC7F,GAAG,WAAW,OAAO,cAAc,GAAG,YAAK,OAAO;AAAA,MAChD,OAAO;AAAA,IACT,GAAG,OAAO,KAAK,IAAI,SAAO,OAAO,aAAa,GAAG,CAAC,GAAG,YAAK,OAAO;AAAA,MAC/D,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AACH,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,UAAM,cAAc,YAAK,OAAO;AAAA,MAC9B,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,UAAU,eAAe,cAAc,EAAE,IAAI,YAAY,EAAE;AAAA,IACpE,GAAG,WAAW,OAAO,cAAc,GAAG,YAAK,OAAO;AAAA,MAChD,OAAO;AAAA,IACT,GAAG,OAAO,KAAK,IAAI,SAAO,OAAO,aAAa,GAAG,CAAC,GAAG,YAAK,OAAO;AAAA,MAC/D,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,SAAS;AACf,QAAI,OAAO,OAAO,OAAQ,QAAO,OAAO,OAAO,OAAO,KAAK,MAAM;AACjE,QAAI,CAAC,OAAO,QAAQ;AAClB,UAAI,OAAO,UAAU,EAAG,QAAO,OAAO,cAAc;AACpD,aAAO,OAAO,YAAY;AAAA,IAC5B;AACA,WAAO,OAAO,aAAa;AAAA,EAC7B;AAAA,EACA,SAAS;AACP,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,WAAO,SAAS;AAChB,WAAO,UAAU;AACjB,WAAO,UAAU;AAGjB,WAAO,kBAAkB;AAGzB,QAAI,KAAK,gBAAgB,EAAE,KAAK,WAAS;AACvC,UAAI,cAAc;AAClB,UAAI,CAAC,eAAe,OAAO,SAAS,eAAe,OAAO;AACxD,sBAAc;AAAA,MAChB;AACA,aAAO,WAAW,OAAO,WAAW;AAAA,IACtC,CAAC;AAGD,QAAI,CAAC,aAAa;AAChB,UAAI,MAAO,QAAO,SAAS,KAAK;AAAA,eAAW,OAAO,OAAO;AACvD,eAAO,SAAS,OAAO,KAAK;AAAA,MAC9B;AAAA,IACF,WAAW,OAAO;AAChB,aAAO,SAAS,KAAK;AAAA,IACvB;AAGA,QAAI,CAAC,UAAU,YAAY,SAAS,UAAU,IAAI,UAAU,MAAM;AAChE,eAAS,QAAQ,OAAO;AAAA,IAC1B;AACA,WAAO,cAAc;AAGrB,QAAI,KAAK;AACP,UAAI,QAAQ,aAAa;AAAA,IAC3B;AACA,QAAI,UAAU;AACZ,eAAS,QAAQ,aAAa;AAAA,IAChC;AACA,WAAO,KAAK,0BAA0B,MAAM;AAAA,EAC9C;AAAA,EACA,WAAW;AACT,UAAM,SAAS;AACf,WAAO,UAAU;AACjB,QAAI,OAAO,KAAK;AACd,aAAO,IAAI,QAAQ,eAAe;AAAA,IACpC;AACA,QAAI,OAAO,UAAU;AACnB,aAAO,SAAS,QAAQ,eAAe;AAAA,IACzC;AACA,WAAO,KAAK,8BAA8B,MAAM;AAAA,EAClD;AAAA,EACA,UAAU;AACR,UAAM,SAAS;AACf,UAAM,MAAM,OAAO;AACnB,WAAO,UAAU;AACjB,WAAO,UAAU;AAGjB,WAAO,kBAAkB;AACzB,WAAO,KAAK,QAAQ,SAAO;AACzB,UAAI,IAAI,QAAS,KAAI,QAAQ;AAAA,IAC/B,CAAC;AACD,QAAI,OAAO,UAAU;AACnB,UAAI,IAAI,UAAU,MAAM;AACtB,eAAO,SAAS,QAAQ,MAAM;AAAA,MAChC,OAAO;AACL,cAAM,WAAW,OAAO,SAAS,KAAK,UAAU;AAChD,cAAM,WAAW,OAAO,SAAS,KAAK,UAAU;AAChD,YAAI,YAAY,UAAU;AACxB,cAAI,MAAM,SAAS,OAAO,QAAQ;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AACA,QAAI,OAAO,KAAK;AACd,aAAO,IAAI,QAAQ,cAAc;AAAA,IACnC;AACA,QAAI,OAAO,UAAU;AACnB,aAAO,SAAS,QAAQ,cAAc;AAAA,IACxC;AACA,WAAO,KAAK,4BAA4B,MAAM;AAAA,EAChD;AAAA,EACA,WAAW;AACT,UAAM,SAAS;AACf,WAAO,SAAS;AAChB,WAAO,UAAU;AACjB,QAAI,CAAC,OAAO,QAAQ;AAClB,eAAS,MAAM;AACb,YAAI,OAAO,SAAS,OAAO,MAAM,MAAM,OAAO,MAAM,SAAS;AAC3D,cAAI,CAAC,OAAO,OAAO,gBAAgB;AACjC,mBAAO,MAAM,QAAQ;AAAA,UACvB;AAAA,QACF;AACA,eAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AACA,QAAI,OAAO,KAAK;AACd,aAAO,IAAI,QAAQ,eAAe;AAAA,IACpC;AACA,QAAI,OAAO,UAAU;AACnB,aAAO,SAAS,QAAQ,eAAe;AAAA,IACzC;AACA,WAAO,KAAK,8BAA8B,MAAM;AAAA,EAClD;AAAA,EACA,OAAO;AACL,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAQ;AACZ,QAAI,OAAO,KAAK,WAAW,KAAK,OAAO,KAAK,QAAQ;AAClD,aAAO,KAAK,QAAQ,SAAO;AACzB,eAAO,KAAK,KAAK,GAAG;AAAA,MACtB,CAAC;AAAA,IACH;AACA,QAAI,QAAQ;AACV,aAAO,MAAM,aAAE,OAAO,OAAO,CAAC;AAC9B,aAAO,IAAI,CAAC,EAAE,WAAW;AACzB,aAAO,aAAa,OAAO,OAAO,GAAG;AACrC,aAAO,OAAO;AACd,aAAO,SAAS;AAChB;AAAA,IACF;AACA,UAAM,YAAY,OAAO,UAAU;AACnC,UAAM,YAAY,YAAY,YAAY;AAC1C,UAAM,cAAc;AAAA,MAClB,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS,OAAO,OAAO;AAAA,MACvB,UAAU,OAAO,OAAO,aAAa,cAAc,OAAO,WAAW;AAAA,MACrE,IAAI;AAAA,QACF,OAAO;AACL,gBAAM,QAAQ;AACd,iBAAO,QAAQ;AACf,iBAAO,MAAM,YAAY,MAAM,IAAI,KAAK,SAAS,IAAI,MAAM;AAC3D,iBAAO,IAAI,CAAC,EAAE,WAAW;AACzB,iBAAO,OAAO;AAAA,QAChB;AAAA,QACA,SAAS;AACP,iBAAO,SAAS;AAAA,QAClB;AAAA,QACA,QAAQ;AACN,iBAAO,QAAQ;AAAA,QACjB;AAAA,QACA,SAAS;AACP,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,QAAI,cAAc,SAAS;AACzB,kBAAY,OAAO,OAAO;AAC1B,kBAAY,eAAe,OAAO;AAAA,IACpC;AACA,QAAI,OAAO,kBAAkB,OAAO,MAAM;AACxC,aAAO,KAAK,OAAO,SAAS;AAAA,QAC1B,KAAK,OAAO;AAAA,QACZ,OAAO;AAAA,UACL,MAAM,OAAO;AAAA,UACb,CAAC,SAAS,GAAG;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,aAAO,QAAQ,IAAI,SAAS,EAAE,OAAO,WAAW;AAChD,aAAO,MAAM,KAAK;AAAA,IACpB;AAAA,EACF;AAAA,EACA,QAAQ;AACN,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAQ;AACb,QAAI,QAAQ;AACV,aAAO,QAAQ;AACf,aAAO,SAAS;AAChB;AAAA,IACF;AACA,QAAI,OAAO,OAAO,kBAAkB,OAAO,MAAM;AAC/C,aAAO,KAAK,OAAO,KAAK;AAAA,IAC1B,OAAO;AACL,aAAO,MAAM,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EACA,OAAO;AACL,UAAM,SAAS;AACf,WAAO,UAAU;AACjB,QAAI,OAAO,QAAQ;AACjB,aAAO,KAAK;AACZ,aAAO,KAAK,0BAA0B,MAAM;AAC5C;AAAA,IACF;AACA,QAAI,CAAC,OAAO,eAAe,OAAO,OAAO,OAAO;AAC9C,aAAO,SAAS,OAAO,OAAO,KAAK;AAAA,IACrC;AAGA,QAAI,OAAO,UAAU;AACnB,aAAO,kBAAkB;AAAA,IAC3B;AACA,QAAI,OAAO,OAAO,qBAAqB;AACrC,aAAO,iBAAiB;AAAA,IAC1B;AACA,WAAO,KAAK,0BAA0B,MAAM;AAAA,EAC9C;AAAA,EACA,UAAU;AACR,UAAM,SAAS;AACf,QAAI,OAAO,UAAW;AACtB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,WAAO,KAAK,4CAA4C,MAAM;AAC9D,QAAI,IAAK,KAAI,QAAQ,sBAAsB;AAC3C,WAAO,MAAM;AAGb,QAAI,OAAO,UAAU;AACnB,aAAO,kBAAkB;AAAA,IAC3B;AACA,QAAI,OAAO,OAAO,qBAAqB;AACrC,aAAO,iBAAiB;AAAA,IAC1B;AACA,QAAI,OAAO,IAAI,OAAQ,QAAO,OAAO,IAAI,CAAC,EAAE;AAC5C,gBAAY,MAAM;AAClB,WAAO,YAAY;AAAA,EACrB;AACF;AACA,IAAO,uBAAQ;;;ACxkBf,IAAO,iBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,SAAS,mBAAmB;AAAA,MAC9B,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AACD,QAAI,OAAO,QAAQ,SAASC,OAAM,IAAI;AACpC,UAAI,OAAO,QAAQ;AACjB,aAAK;AAAA,MACP;AACA,YAAM,MAAM,aAAE,EAAE;AAChB,UAAI,IAAI,WAAW,EAAG;AACtB,YAAM,SAAS,IAAI,CAAC,EAAE;AACtB,UAAI,CAAC,UAAU,UAAU,CAAC,OAAO,OAAQ;AACzC,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ;AAAA;AAAA,MAEN,cAAc;AAAA,MACd,UAAU;AAAA,MACV,MAAM,CAAC;AAAA;AAAA,MAEP,aAAa;AAAA,MACb,QAAQ;AAAA;AAAA,MAER,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,UAAU;AAAA;AAAA,MAEV,aAAa;AAAA,MACb,SAAS;AAAA,MACT,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,KAAK;AAAA;AAAA,MAEL,eAAe;AAAA,MACf,QAAQ;AAAA,IACV;AAAA,EACF;AACF;;;ACxDA,IAAM,iBAAiB;AAAA,EACrB,OAAO,IAAI,GAAG;AACZ,UAAM,MAAM;AACZ,UAAM,MAAM,aAAE,EAAE;AAChB,UAAM,YAAY,IAAI,CAAC,EAAE;AACzB,UAAM,eAAe,IAAI,CAAC,EAAE;AAC5B,UAAM,SAAS,IAAI,CAAC,EAAE;AACtB,QAAI,WAAW,IAAI,CAAC,EAAE,aAAa,wBAAwB;AAC3D,UAAM,uBAAuB,IAAI,KAAK,eAAe;AACrD,QAAI;AACJ,UAAM,QAAQ,IAAI,SAAS,qBAAqB;AAChD,QAAI,CAAC,SAAU,YAAW;AAC1B,QAAI,OAAO,aAAa,YAAY,SAAS,QAAQ,GAAG,KAAK,GAAG;AAC9D,iBAAW,SAAS,UAAU,EAAE,IAAI,MAAM;AAAA,IAC5C;AACA,QAAI,WAAW,OAAQ,YAAW;AAClC,QAAI,OAAO;AACT,UAAI,YAAY,UAAU;AACxB,YAAI,QAAQ,YAAY,CAAC;AACzB,YAAI,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC;AAAA,MAChC;AAAA,IACF,WAAW,YAAY,UAAU,eAAe,UAAU;AACxD,UAAI,qBAAqB,SAAS,GAAG;AACnC,sBAAc,qBAAqB,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7C,YAAI,eAAe,CAAC,YAAY,YAAY,CAAC,YAAY,OAAO,iBAAiB;AAC/E;AAAA,QACF;AAAA,MACF;AACA,UAAI,QAAQ,YAAY,CAAC;AACzB,UAAI,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC;AAAA,IAChC;AAAA,EACF;AAAA,EACA,OAAO,IAAI;AACT,UAAM,MAAM,aAAE,EAAE;AAChB,UAAM,MAAM;AACZ,aAAS,cAAc,GAAG;AACxB,UAAI,eAAe,OAAO,MAAM,CAAC;AAAA,IACnC;AACA,QAAI,KAAK,aAAW;AAClB,cAAQ,0BAA0B;AAClC,cAAQ,iBAAiB,UAAU,QAAQ,uBAAuB;AAAA,IACpE,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,IAAI;AACV,UAAM,MAAM,aAAE,EAAE;AAChB,QAAI,KAAK,aAAW;AAClB,cAAQ,oBAAoB,UAAU,QAAQ,uBAAuB;AACrE,aAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH;AACF;AACA,IAAO,0BAAQ;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACP,UAAM,MAAM;AACZ,gBAAY,KAAK;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,YAAM,SAAS,aAAE,KAAK;AACtB,YAAM,SAAS,OAAO,KAAK,0BAA0B;AACrD,UAAI,OAAO,GAAG,0BAA0B,EAAG,QAAO,IAAI,MAAM;AAC5D,aAAO,KAAK,QAAM;AAChB,YAAI,eAAe,OAAO,EAAE;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,YAAM,SAAS,aAAE,KAAK;AACtB,YAAM,MAAM;AACZ,YAAM,SAAS,OAAO,KAAK,0BAA0B;AACrD,UAAI,OAAO,GAAG,0BAA0B,EAAG,QAAO,IAAI,MAAM;AAC5D,aAAO,KAAK,QAAM;AAChB,YAAI,eAAe,QAAQ,EAAE;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,0BAA0B,EAAE,KAAK,QAAM;AACnD,YAAI,eAAe,OAAO,EAAE;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,0BAA0B,EAAE,KAAK,QAAM;AACnD,YAAI,eAAe,QAAQ,EAAE;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACxFA,IAAM,gBAAN,cAA4B,cAAgB;AAAA,EAC1C,YAAY,KAAK,IAAI;AACnB,UAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACf,UAAM,MAAM;AACZ,UAAM,SAAS,UAAU;AACzB,UAAMC,WAAU,WAAW;AAC3B,UAAM,MAAM,aAAE,EAAE;AAChB,UAAM,eAAe,IAAI,KAAK,gBAAgB;AAC9C,QAAI,MAAM;AACV,QAAI,KAAK,IAAI,CAAC;AACd,QAAI,MAAM;AACV,QAAI,SAAS,IAAI,IAAI,SAAS,YAAY;AAG1C,QAAI,iBAAiB,CAAC,CAAC;AACvB,UAAM,aAAa,IAAI,UAAU;AACjC,UAAM,QAAQ,IAAI,UAAU;AAG5B,QAAI,OAAO,SAAS,OAAO;AACzB,YAAM,oBAAoB,aAAa,eAAe;AACtD,YAAM,iBAAiB,OAAK;AAC1B,YAAI,aAAE,EAAE,MAAM,EAAE,QAAQ,YAAY,EAAE,OAAQ;AAC9C,YAAI,YAAY,yDAAyD;AACzE,YAAI,QAAQ,UAAU;AACtB,YAAI,KAAK,uBAAuB,IAAI,CAAC,CAAC;AACtC,0BAAkB,IAAI,iBAAiB,cAAc;AAAA,MACvD;AACA,wBAAkB,GAAG,iBAAiB,cAAc;AACpD,UAAI,YAAY,gBAAgB,EAAE,SAAS,+BAA+B;AAC1E,aAAO;AAAA,IACT;AACA,QAAI,UAAU,SAASC,WAAU;AAC/B,UAAI,IAAI,SAAS,gBAAgB,EAAG,QAAO;AAC3C,UAAI,SAAS,kCAAkC;AAC/C,UAAI,QAAQ,eAAe,IAAI,IAAI;AACnC,UAAI,KAAK,6BAA6B,IAAI,CAAC,GAAG,IAAI,IAAI;AACtD,aAAO;AAAA,IACT;AAGA,QAAI,aAAa,IAAI,KAAK,qBAAqB,MAAM;AAGrD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,eAAe,CAAC;AACtB,QAAI;AACJ,QAAI;AACJ,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,oBAAoB;AACxB,QAAI,iBAAiB;AACrB,QAAIC;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,YAAY;AAChB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,UAAU,IAAI,QAAQ,OAAO;AACnC,QAAI,QAAQ,KAAK,SAAS,EAAE,SAAS,KAAK,QAAQ,QAAQ,OAAO,EAAE,SAAS,UAAU,EAAE,SAAS,EAAG,aAAY;AAChH,QAAI,QAAQ,SAAS,WAAW,EAAG,aAAY;AAC/C,QAAI,CAAC,IAAI,QAAQ;AACf,YAAM,eAAe,IAAI,OAAO,YAAY,QAAQ,CAAC,CAAC;AACtD,UAAI,cAAc;AAChB,cAAM,gBAAgB,aAAE,YAAY;AACpC,cAAM,qBAAqB,cAAc,SAAS,0BAA0B,KAAK,cAAc,SAAS,cAAc,KAAK,cAAc,SAAS,oBAAoB;AACtK,cAAM,gBAAgB,cAAc,SAAS,oBAAoB,KAAK,CAAC,cAAc,SAAS,cAAc;AAC5G,YAAI,oBAAoB;AACtB,cAAI,SAAS,mCAAmC;AAAA,QAClD,WAAW,eAAe;AACxB,cAAI,SAAS,6BAA6B;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,aAAa,CAAC,IAAI,OAAQ,KAAI,SAAS,eAAe;AAG3D,QAAI,IAAI,KAAK,mBAAmB,GAAG;AACjC,+BAAyB;AAAA,IAC3B,WAAW,YAAY;AACrB,wBAAkB;AAAA,IACpB,WAAW,OAAO;AAChB,wBAAkB;AAAA,IACpB;AACA,aAAS,qBAAqB,UAAU;AACtC,UAAI,aAAa,QAAQ;AACvB,mBAAW;AAAA,MACb;AACA,YAAM,QAAQ,aAAa,KAAK,uBAAuB;AACvD,YAAM,iBAAiB,IAAI,MAAM;AACjC,YAAM,QAAQ,CAAC,OAAO,aAAa;AACjC,cAAM,eAAe,WAAW,WAAW,kBAAkB;AAC7D,cAAM,MAAM,UAAU,KAAK,IAAI,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI;AAAA,MAChE,CAAC;AAAA,IACH;AACA,aAAS,yBAAyB;AAChC,mBAAa,KAAK,uBAAuB,EAAE,IAAI,WAAW,EAAE;AAAA,IAC9D;AACA,aAAS,iBAAiB,GAAG;AAC3B,UAAI,CAAC,EAAE,UAAW;AAClB,UAAI,WAAW;AACb,YAAI,OAAO,OAAO,WAAW;AAC3B,cAAI,mBAAmB,KAAK,EAAE,cAAc,SAAS,EAAG;AAAA,QAC1D,MAAO;AAAA,MACT;AACA,UAAI,IAAI,SAAS,gBAAgB,GAAG;AAClC;AAAA,MACF;AACA,UAAI,aAAE,EAAE,MAAM,EAAE,QAAQ,8DAA8D,EAAE,OAAQ;AAChG,gBAAU;AACV,oBAAc;AACd,kBAAY;AACZ,oBAAc;AACd,oBAAc;AACd,UAAI,EAAE,SAAS,aAAc,WAAU,EAAE,cAAc,CAAC,EAAE;AAC1D,mBAAa,IAAI,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACxE,mBAAa,IAAI,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AAAA,IAC1E;AACA,aAAS,gBAAgB,GAAG;AAC1B,UAAI,CAAC,aAAa,CAAC,EAAE,UAAW;AAChC,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,EAAE,SAAS,aAAa;AAC1B,YAAI,WAAW,EAAE,SAAS;AACxB,mBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,QAAQ,KAAK,GAAG;AAC5C,gBAAI,EAAE,QAAQ,CAAC,EAAE,eAAe,SAAS;AACvC,sBAAQ,EAAE,QAAQ,CAAC;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,MAAO,SAAQ,EAAE,cAAc,CAAC;AACrC,gBAAQ,MAAM;AACd,gBAAQ,MAAM;AAAA,MAChB,OAAO;AACL,gBAAQ,EAAE;AACV,gBAAQ,EAAE;AAAA,MACZ;AACA,UAAI,CAAC,SAAS,CAAC,MAAO;AACtB,UAAI,OAAO,gBAAgB,aAAa;AACtC,sBAAc,CAAC,EAAE,eAAe,KAAK,IAAI,QAAQ,aAAa,CAAC,IAAI,KAAK,IAAI,QAAQ,aAAa,CAAC;AAAA,MACpG;AACA,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ;AAAA,MACF;AACA,kBAAY,IAAI,CAAC,EAAE;AACnB,UAAI,CAAC,SAAS;AACZ,YAAI,YAAY,mBAAmB;AACnC,YAAI,OAAO;AACT,+BAAqB,CAAC;AAAA,QACxB;AACA,YAAI;AACJ,uBAAe,IAAI,CAAC,EAAE;AACtB,uBAAe,IAAI,CAAC,EAAE;AACtB,YAAI,IAAI,QAAQ;AACd,yBAAe,eAAe;AAAA,QAChC;AACA,YAAI,YAAY,cAAc;AAC5B,sBAAY;AACZ;AAAA,QACF;AACA,cAAM,sBAAsB,aAAE,EAAE,MAAM,EAAE,QAAQ,mBAAmB;AACnE,YAAI,oBAAoB,QAAQ;AAC9B,8BAAoB,KAAK,qBAAmB;AAC1C,gBAAI,oBAAoB,GAAI;AAC5B,gBAAI,gBAAgB,eAAe,gBAAgB,gBAAgB,aAAE,eAAe,EAAE,IAAI,UAAU,MAAM,WAAW,CAAC,IAAI,UAAU,gBAAgB,YAAY,KAAK,IAAI,UAAU,gBAAgB,YAAY,gBAAgB,eAAe,gBAAgB,eAAe;AAC3Q,mCAAqB;AAAA,YACvB;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,oBAAoB;AACtB,sBAAY;AACZ;AAAA,QACF;AACA,YAAI,wBAAwB;AAC1B,4BAAkB,IAAI,KAAK,mBAAmB;AAC9C,cAAI,gBAAgB,QAAQ,GAAG,KAAK,EAAG,mBAAkB,eAAe,SAAS,iBAAiB,EAAE,IAAI;AAAA,QAC1G;AACA,yBAAiB,IAAI,SAAS,gBAAgB,IAAI,kBAAkB;AACpE,YAAI,iBAAiB,gBAAgB,OAAO,OAAO,SAAS,YAAY;AACtE,yBAAe;AAAA,QACjB,OAAO;AACL,yBAAe;AAAA,QACjB;AACA,4BAAoB;AAAA,MACtB;AACA,gBAAU;AACV,oBAAc,QAAQ,aAAa;AACnC,UAAI,OAAO,gBAAgB,gBAAgB,IAAI,SAAS,cAAc,eAAe,cAAc,GAAI,eAAc;AACrH,YAAM,aAAa,IAAI,SAAS,cAAc,KAAK,aAAa,gBAAgB,YAAY,eAAe,cAAc,KAAK,aAAa,KAAK,YAAY;AAC5J,UAAI,YAAY;AAEd,YAAI,OAAO,OAAO,SAAS,SAAS,OAAO,UAAU,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,GAAG;AAC3E,cAAI,CAAC,IAAI,UAAU,cAAc,KAAK,CAAC,YAAa,gBAAe;AACnE,cAAI,IAAI,UAAU,cAAc,gBAAgB,CAAC,YAAa,gBAAe;AAAA,QAC/E;AACA,YAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,YAAY;AAC9C,cAAI,IAAI,8BAA8B,MAAM;AAC5C,cAAI,UAAU,YAAY;AAC1B,8BAAoB;AAAA,QACtB;AACA,YAAI,gBAAgB,mBAAmB;AACrC,cAAI,EAAE,YAAY;AAChB,cAAE,eAAe;AAAA,UACnB;AACA,UAAAA,cAAa,IAAI,SAAS,KAAK,KAAK,IAAI,WAAW,KAAK,OAAO,eAAe,QAAQ;AACtF,cAAI,YAAY;AACd,yBAAa,UAAU,iBAAiBA,UAAS,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,UAAU,OAAO,KAAK,IAAI,WAAW,IAAI,MAAM,GAAG,MAAM;AAAA,UACjJ,OAAO;AAEL,gBAAI,IAAI,UAAU,OAAO;AACvB,kBAAI,SAAS,EAAE,UAAU,iBAAiBA,UAAS,OAAO;AAAA,YAC5D,OAAO;AAEL,kBAAI,UAAU,iBAAiBA,UAAS,OAAO;AAAA,YACjD;AACA,gBAAI,OAAO;AACT,2BAAa,UAAU,sBAAsB;AAAA,YAC/C;AAAA,UACF;AAAA,QACF,WAAW,SAAS,CAAC,IAAI,QAAQ;AAC/B,uBAAa,UAAU,iBAAiB,SAAS,OAAO;AAAA,QAC1D;AACA,YAAI;AACJ,YAAI,SAAS,CAAC,SAAS;AACrB,qBAAW,gBAAgB,oBAAoB,KAAK,IAAI,WAAW,KAAK,OAAO,kBAAkB,KAAK,IAAI,WAAW,KAAK,kBAAkB;AAC5I,+BAAqB,QAAQ;AAAA,QAC/B;AACA,aAAK,gBAAgB,sBAAsB,KAAK,IAAI,WAAW,KAAK,OAAO,mBAAmB,CAAC,gBAAgB,KAAK,IAAI,WAAW,KAAK,kBAAkB,GAAG;AAC3J,oBAAU;AACV,cAAI,SAAS,aAAa,EAAE,YAAY,eAAe;AACvD,iCAAuB;AAAA,QACzB,OAAO;AACL,oBAAU;AACV,cAAI,YAAY,aAAa,EAAE,SAAS,eAAe;AAAA,QACzD;AACA,YAAI,CAAC,aAAa;AAChB,cAAI,QAAQ,eAAe;AAC3B,cAAI,KAAK,iCAAiC,IAAI,CAAC,CAAC;AAChD,wBAAc;AAAA,QAChB;AACA,YAAI,QAAQ,gBAAgB;AAAA,UAC1B,OAAO;AAAA,UACP;AAAA,UACA,WAAAA;AAAA,UACA;AAAA,QACF,CAAC;AACD,YAAI,KAAK,+BAA+B,IAAI,CAAC,GAAG;AAAA,UAC9C,OAAO;AAAA,UACP;AAAA,UACA,WAAAA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,sBAAc;AACd,YAAI,YAAY,2BAA2B;AAC3C,kBAAU;AAAA,MACZ;AAAA,IACF;AACA,aAAS,eAAe,GAAG;AACzB,UAAI,CAAC,EAAE,UAAW;AAClB,UAAI,EAAE,SAAS,cAAc,EAAE,kBAAkB,EAAE,eAAe,SAAS,KAAK,SAAS;AACvF,YAAI,EAAE,eAAe,CAAC,EAAE,eAAe,SAAS;AAC9C,sBAAY;AACZ,wBAAc;AACd,oBAAU;AACV,oBAAU;AACV;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,aAAa,CAAC,SAAS;AAC1B,oBAAY;AACZ,kBAAU;AACV;AAAA,MACF;AACA,UAAIA,YAAW;AACb,YAAI,SAAS,mBAAmB;AAChC,QAAAA,aAAY;AAAA,MACd;AACA,UAAI,YAAY;AACd,qBAAa,UAAU,EAAE,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE;AAAA,MAC5D,OAAO;AACL,qBAAa,UAAU,EAAE;AACzB,YAAI,IAAI,UAAU,OAAO;AACvB,cAAI,SAAS,EAAE,UAAU,EAAE;AAAA,QAC7B,OAAO;AACL,cAAI,UAAU,EAAE;AAAA,QAClB;AAAA,MACF;AACA,UAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,YAAY;AAC9C,YAAI,IAAI,8BAA8B,EAAE;AAAA,MAC1C;AACA,UAAI,SAAS;AACX,YAAI,SAAS,gBAAgB;AAC7B,YAAI,QAAQ,eAAe,IAAI,IAAI;AACnC,YAAI,KAAK,6BAA6B,IAAI,CAAC,GAAG,IAAI,IAAI;AAAA,MACxD,OAAO;AACL,YAAI,YAAY,eAAe;AAAA,MACjC;AACA,kBAAY;AACZ,gBAAU;AACV,UAAI,aAAa;AACf,YAAI,QAAQ,aAAa;AACzB,YAAI,KAAK,6BAA6B,IAAI,CAAC,CAAC;AAAA,MAC9C;AAAA,IACF;AACA,QAAI;AACJ,QAAI;AACJ,QAAI,kBAAkB;AACtB,QAAI,sBAAsB;AAC1B,aAAS,0BAA0B;AACjC,wBAAkB;AAClB,wBAAkB;AAClB,4BAAsB;AACtB,UAAIA,YAAW;AACb,YAAI,SAAS,mBAAmB;AAChC,QAAAA,aAAY;AAAA,MACd;AACA,UAAI,YAAY;AACd,qBAAa,UAAU,EAAE,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE;AAAA,MAC5D,OAAO;AACL,qBAAa,UAAU,EAAE;AACzB,YAAI,IAAI,QAAQ;AACd,cAAI,SAAS,EAAE,UAAU,EAAE;AAAA,QAC7B,OAAO;AACL,cAAI,UAAU,EAAE;AAAA,QAClB;AAAA,MACF;AACA,UAAI,SAAS;AACX,YAAI,SAAS,gBAAgB;AAC7B,YAAI,QAAQ,eAAe,IAAI,IAAI;AACnC,YAAI,KAAK,6BAA6B,IAAI,CAAC,GAAG,IAAI,IAAI;AAAA,MACxD,OAAO;AACL,YAAI,YAAY,eAAe;AAAA,MACjC;AACA,UAAI,aAAa;AACf,YAAI,QAAQ,aAAa;AACzB,YAAI,KAAK,6BAA6B,IAAI,CAAC,CAAC;AAAA,MAC9C;AAAA,IACF;AACA,aAAS,iBAAiB,GAAG;AAC3B,UAAI,CAAC,gBAAiB;AACtB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,UAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,EAAG;AACzC,UAAI,IAAI,SAAS,gBAAgB,GAAG;AAClC;AAAA,MACF;AACA,UAAI,aAAE,EAAE,MAAM,EAAE,QAAQ,8DAA8D,EAAE,OAAQ;AAChG,mBAAa,iBAAiB;AAC9B,kBAAY,IAAI,CAAC,EAAE;AACnB,UAAI,CAAC,iBAAiB;AACpB,YAAI,YAAY,mBAAmB;AACnC,YAAI,OAAO;AACT,+BAAqB,CAAC;AAAA,QACxB;AACA,YAAI;AACJ,uBAAe,IAAI,CAAC,EAAE;AACtB,uBAAe,IAAI,CAAC,EAAE;AACtB,YAAI,IAAI,QAAQ;AACd,yBAAe,eAAe;AAAA,QAChC;AACA,YAAI,YAAY,cAAc;AAC5B,4BAAkB;AAClB;AAAA,QACF;AACA,cAAM,sBAAsB,aAAE,EAAE,MAAM,EAAE,QAAQ,mBAAmB;AACnE,YAAI,oBAAoB,QAAQ;AAC9B,8BAAoB,KAAK,qBAAmB;AAC1C,gBAAI,oBAAoB,GAAI;AAC5B,gBAAI,gBAAgB,eAAe,gBAAgB,gBAAgB,aAAE,eAAe,EAAE,IAAI,UAAU,MAAM,WAAW,CAAC,IAAI,UAAU,gBAAgB,YAAY,KAAK,IAAI,UAAU,gBAAgB,YAAY,gBAAgB,eAAe,gBAAgB,eAAe;AAC3Q,mCAAqB;AAAA,YACvB;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,oBAAoB;AACtB,4BAAkB;AAClB;AAAA,QACF;AACA,YAAI,wBAAwB;AAC1B,4BAAkB,IAAI,KAAK,mBAAmB;AAC9C,cAAI,gBAAgB,QAAQ,GAAG,KAAK,EAAG,mBAAkB,eAAe,SAAS,iBAAiB,EAAE,IAAI;AAAA,QAC1G;AAAA,MACF;AACA,gBAAU;AACV,6BAAuB;AACvB,oBAAc;AAEd,UAAI,OAAO,gBAAgB,gBAAgB,IAAI,SAAS,cAAc,eAAe,cAAc,GAAI,eAAc;AACrH,YAAM,aAAa,IAAI,SAAS,cAAc,KAAK,aAAa,gBAAgB,YAAY,eAAe,cAAc,KAAK,aAAa,KAAK,YAAY;AAC5J,UAAI,YAAY;AACd,YAAI,EAAE,YAAY;AAChB,YAAE,eAAe;AAAA,QACnB;AACA,QAAAA,aAAY;AACZ,YAAI,KAAK,IAAIA,UAAS,IAAI,iBAAiB;AACzC,UAAAA,aAAY,mBAAmB,KAAK,IAAIA,UAAS,IAAI,oBAAoB;AACzE,cAAI,IAAI,OAAQ,CAAAA,aAAY,CAACA;AAAA,QAC/B;AACA,YAAI,YAAY;AACd,uBAAa,UAAU,iBAAiBA,UAAS,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,UAAU,OAAO,KAAK,IAAI,WAAW,IAAI,MAAM,GAAG,MAAM;AAAA,QACjJ,OAAO;AAEL,cAAI,IAAI,QAAQ;AACd,gBAAI,SAAS,EAAE,UAAU,iBAAiBA,UAAS,OAAO;AAAA,UAC5D,OAAO;AACL,gBAAI,UAAU,iBAAiBA,UAAS,OAAO;AAC/C,gBAAI,OAAO;AACT,2BAAa,UAAU,iBAAiB,CAACA,UAAS,OAAO;AAAA,YAC3D;AAAA,UACF;AAAA,QACF;AACA,YAAI;AACJ,YAAI,SAAS,CAAC,SAAS;AACrB,qBAAW,KAAK,IAAIA,UAAS,IAAI;AACjC,+BAAqB,QAAQ;AAAA,QAC/B;AACA,YAAI,KAAK,IAAIA,UAAS,IAAI,iBAAiB;AACzC,oBAAU;AACV,cAAI,SAAS,aAAa,EAAE,YAAY,eAAe;AACvD,iCAAuB;AAAA,QACzB,OAAO;AACL,oBAAU;AACV,cAAI,YAAY,aAAa,EAAE,SAAS,eAAe;AAAA,QACzD;AACA,YAAI,CAAC,aAAa;AAChB,cAAI,QAAQ,eAAe;AAC3B,cAAI,KAAK,iCAAiC,IAAI,CAAC,CAAC;AAChD,wBAAc;AAAA,QAChB;AACA,YAAI,QAAQ,gBAAgB;AAAA,UAC1B,OAAO;AAAA,UACP;AAAA,UACA,WAAAA;AAAA,UACA;AAAA,QACF,CAAC;AACD,YAAI,KAAK,+BAA+B,IAAI,CAAC,GAAG;AAAA,UAC9C,OAAO;AAAA,UACP;AAAA,UACA,WAAAA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,sBAAc;AACd,YAAI,YAAY,2BAA2B;AAC3C,kBAAU;AAAA,MACZ;AACA,0BAAoB,WAAW,yBAAyB,GAAG;AAAA,IAC7D;AACA,QAAI,CAAC,QAAQ,UAAU,CAAC,IAAI,OAAQ,QAAO;AAC3C,QAAI,CAAC,EAAE,kBAAkB;AAGzB,QAAI,eAAe,SAASC,gBAAe;AACzC,YAAM,UAAUH,SAAQ,kBAAkB;AAAA,QACxC,SAAS;AAAA,MACX,IAAI;AACJ,UAAI,GAAG,IAAI,YAAY,OAAO,kBAAkB,OAAO;AACvD,UAAI,GAAG,oBAAoB,eAAe;AAC1C,UAAI,GAAG,oBAAoB,cAAc;AACzC,UAAI,IAAI,cAAc,CAAC,IAAI,QAAQ;AACjC,YAAI,GAAG,SAAS,gBAAgB;AAAA,MAClC;AAAA,IACF;AACA,QAAI,eAAe,SAASI,gBAAe;AACzC,YAAM,UAAUJ,SAAQ,kBAAkB;AAAA,QACxC,SAAS;AAAA,MACX,IAAI;AACJ,UAAI,IAAI,IAAI,YAAY,OAAO,kBAAkB,OAAO;AACxD,UAAI,IAAI,oBAAoB,eAAe;AAC3C,UAAI,IAAI,oBAAoB,cAAc;AAC1C,UAAI,IAAI,cAAc,CAAC,IAAI,QAAQ;AACjC,YAAI,IAAI,SAAS,gBAAgB;AAAA,MACnC;AAAA,IACF;AAGA,QAAI,WAAW;AAGf,QAAI,KAAK;AACT,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,MAAM;AACZ,QAAI,aAAa;AAAA,EACnB;AAAA,EACA,UAAU;AACR,QAAI,MAAM;AACV,QAAI,KAAK,yCAAyC,GAAG;AACrD,QAAI,IAAI,QAAQ,mBAAmB;AACnC,WAAO,IAAI,GAAG;AACd,QAAI,aAAa;AACjB,gBAAY,GAAG;AACf,UAAM;AAAA,EACR;AACF;AACA,IAAO,gCAAQ;;;AC3ff,IAAO,0BAAQ;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,MAAM,OAAO,mBAAmB;AAAA,MAClC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC,GAAG;AAAA,MACF,KAAK,IAAI;AACP,cAAM,MAAM,IAAI,IAAI,IAAI,EAAE;AAC1B,YAAI,IAAK,QAAO,IAAI,KAAK;AACzB,eAAO;AAAA,MACT;AAAA,MACA,QAAQ,IAAI;AACV,cAAM,MAAM,IAAI,IAAI,IAAI,EAAE;AAC1B,YAAI,IAAK,QAAO,IAAI,QAAQ;AAC5B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,YAAM,SAAS,aAAE,KAAK;AACtB,YAAM,UAAU,OAAO,KAAK,cAAc;AAC1C,UAAI,OAAO,GAAG,cAAc,EAAG,SAAQ,IAAI,MAAM;AACjD,cAAQ,KAAK,QAAM;AACjB,YAAI,IAAI,OAAO,EAAE;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,YAAM,SAAS,aAAE,KAAK;AACtB,YAAM,MAAM;AACZ,YAAM,UAAU,OAAO,KAAK,cAAc;AAC1C,UAAI,OAAO,GAAG,cAAc,EAAG,SAAQ,IAAI,MAAM;AACjD,cAAQ,KAAK,QAAM;AACjB,YAAI,IAAI,QAAQ,EAAE;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,cAAc,EAAE,KAAK,QAAM;AACvC,YAAI,IAAI,OAAO,EAAE;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,cAAc,EAAE,KAAK,QAAM;AACvC,YAAI,IAAI,QAAQ,EAAE;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC1DA,IAAM,YAAN,cAAwB,cAAgB;AAAA,EACtC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,QAAQ;AACd,UAAMK,YAAW,CAAC;AAGlB,UAAM,iBAAiBA,SAAQ;AAC/B,UAAM,SAAS,OAAOA,WAAU,MAAM;AAGtC,UAAM,MAAM,aAAE,MAAM,OAAO,EAAE;AAC7B,QAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,UAAM,MAAM;AACZ,UAAM,KAAK,IAAI,CAAC;AAChB,QAAI,MAAM,IAAI,CAAC,EAAE,aAAa;AAC5B,YAAM,WAAW,MAAM,IAAI,CAAC,EAAE;AAC9B,YAAM,QAAQ;AACd,aAAO;AAAA,IACT;AACA,UAAM,IAAI,CAAC,EAAE,cAAc;AAC3B,WAAO,OAAO;AAAA,MACZ,aAAa,IAAI,SAAS,wBAAwB;AAAA;AAAA,MAElD,WAAW,IAAI,KAAK,oBAAoB;AAAA,MACxC,mBAAmB,IAAI,KAAK,6BAA6B;AAAA,IAC3D,CAAC;AAGD,aAAS,aAAa,GAAG;AACvB,UAAI,EAAE,UAAU,EAAE,OAAO,mBAAmB;AAE1C;AAAA,MACF;AACA,YAAM,WAAW,aAAE,IAAI;AACvB,YAAM,UAAU,SAAS,CAAC,EAAE;AAC5B,YAAM,cAAc,SAAS,QAAQ,OAAO,EAAE,MAAM;AACpD,UAAI,SAAS,QAAQ,OAAO,EAAE,SAAS,GAAG;AACxC,YAAI,gBAAgB,GAAG;AACrB,cAAI,KAAK,UAAU,EAAE,UAAU,aAAa,aAAa,EAAE,yBAAyB;AAAA,QACtF;AACA,YAAI,KAAK,yBAAyB,cAAc,CAAC,SAAS,EAAE,KAAK,WAAW,OAAO,EAAE,QAAQ,UAAU;AAAA,UACrG,mBAAmB;AAAA,QACrB,CAAC;AACD,iBAAS,KAAK,iBAAiB,KAAK;AAAA,MACtC,OAAO;AACL,YAAI,gBAAgB,GAAG;AACrB,mBAAS,QAAQ,IAAI,EAAE,UAAU,aAAa,aAAa,EAAE,yBAAyB;AAAA,QACxF;AACA,cAAM,cAAc,IAAI,KAAK,kCAAkC,cAAc,CAAC,kCAAkC,EAAE;AAClH,cAAM,YAAY,IAAI,KAAK,UAAU,EAAE;AACvC,cAAM,kBAAkB,IAAI,KAAK,kCAAkC,cAAc,CAAC,0BAA0B;AAC5G,YAAI,CAAC,SAAS;AACZ,0BAAgB,KAAK,WAAW,KAAK;AAAA,QACvC,WAAW,gBAAgB,WAAW;AACpC,0BAAgB,KAAK,WAAW,IAAI,EAAE,QAAQ,UAAU;AAAA,YACtD,mBAAmB;AAAA,UACrB,CAAC;AAAA,QACH;AACA,wBAAgB,KAAK,iBAAiB,cAAc,KAAK,cAAc,SAAS;AAAA,MAClF;AACA,YAAM,oBAAoB;AAAA,IAC5B;AACA,aAAS,sBAAsB;AAC7B,YAAM,UAAU,aAAE,IAAI;AACtB,YAAM,WAAW,QAAQ,SAAS,sBAAsB;AACxD,YAAM,cAAc,QAAQ,SAAS,eAAe,IAAI,SAAS;AACjE,UAAI;AACJ,UAAI,UAAU;AACZ,kBAAU,gBAAgB,SAAS,QAAQ;AAC3C,gBAAQ,YAAY,4BAA4B,EAAE,SAAS,YAAY,OAAO,EAAE;AAAA,MAClF,OAAO;AACL,YAAI,KAAK,6BAA6B,EAAE,YAAY,sBAAsB;AAC1E,gBAAQ,SAAS,sBAAsB;AACvC,kBAAU;AAAA,MACZ;AACA,cAAQ,QAAQ,kBAAkB,OAAO;AACzC,YAAM,KAAK,6BAA6B,OAAO,OAAO;AAAA,IACxD;AACA,UAAM,eAAe,SAASC,gBAAe;AAC3C,YAAM,IAAI,GAAG,UAAU,yCAAyC,YAAY;AAC5E,YAAM,IAAI,KAAK,sBAAsB,EAAE,GAAG,SAAS,mBAAmB;AAAA,IACxE;AACA,UAAM,eAAe,SAASC,gBAAe;AAC3C,YAAM,IAAI,IAAI,UAAU,yCAAyC,YAAY;AAC7E,YAAM,IAAI,KAAK,sBAAsB,EAAE,IAAI,SAAS,mBAAmB;AAAA,IACzE;AAGA,UAAM,WAAW;AAGjB,UAAM,KAAK;AACX,WAAO;AAAA,EACT;AAAA,EACA,uBAAuB;AACrB,UAAM,QAAQ;AACd,QAAI,CAAC,MAAM,YAAa;AACxB,UAAM,IAAI,KAAK,8BAA8B,EAAE,KAAK,QAAM;AACxD,YAAM,MAAM,aAAE,EAAE;AAChB,YAAM,UAAU,IAAI,MAAM;AAC1B,YAAM,mBAAmB,IAAI,KAAK,wBAAwB;AAC1D,UAAI,CAAC,oBAAoB,qBAAqB,IAAI;AAChD,YAAI,KAAK,0BAA0B,MAAM,IAAI,KAAK,UAAU,EAAE,GAAG,OAAO,EAAE,KAAK,CAAC;AAAA,MAClF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB;AACpB,UAAM,QAAQ;AACd,QAAI,MAAM,UAAU,SAAS,KAAK,MAAM,kBAAkB,SAAS,GAAG;AACpE,YAAM,eAAe,MAAM,IAAI,KAAK,oCAAoC,EAAE;AAC1E,YAAM,IAAI,eAAe,IAAI,aAAa,aAAa,EAAE,wBAAwB;AACjF,YAAM,kBAAkB,KAAK,4BAA4B,EAAE,KAAK,YAAY;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,OAAO;AACL,UAAM,QAAQ;AACd,UAAM,aAAa;AACnB,UAAM,qBAAqB;AAC3B,UAAM,oBAAoB;AAAA,EAC5B;AAAA,EACA,UAAU;AACR,QAAI,QAAQ;AACZ,UAAM,IAAI,QAAQ,yBAAyB;AAC3C,UAAM,KAAK,+CAA+C,KAAK;AAC/D,UAAM,aAAa;AACnB,QAAI,MAAM,IAAI,CAAC,GAAG;AAChB,YAAM,IAAI,CAAC,EAAE,cAAc;AAC3B,aAAO,MAAM,IAAI,CAAC,EAAE;AAAA,IACtB;AACA,gBAAY,KAAK;AACjB,YAAQ;AAAA,EACV;AACF;AACA,IAAO,2BAAQ;;;ACzIf,IAAO,qBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,YAAY,mBAAmB;AAAA,MACjC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,gBAAgB,OAAO;AACrB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAW;AAChD,YAAI,UAAU,QAAQ,OAAO;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAW;AAChD,YAAI,UAAU,OAAO;AAAA,UACnB,IAAI;AAAA,QACN,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,kBAAkB,EAAE,KAAK,aAAW;AAChD,YAAI,UAAU,QAAQ,OAAO;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,kBAAkB,EAAE,KAAK,aAAW;AAChD,YAAI,UAAU,OAAO;AAAA,UACnB,IAAI;AAAA,QACN,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,mBAAmB;AAAA,MACjB,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,UAAU,MAAM;AACtB,YAAI,UAAU,OAAO;AAAA,UACnB,IAAI;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,MAAM;AACZ,cAAM,UAAU,MAAM;AACtB,YAAI,UAAU,QAAQ,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACF;;;AC7DA,IAAM,MAAM;AAAA,EACV,UAAU,OAAO,UAAU;AACzB,UAAM,MAAM;AACZ,UAAM,SAAS,aAAE,KAAK;AACtB,UAAM,YAAY,aAAE,QAAQ;AAC5B,QAAI,UAAU,WAAW,EAAG;AAC5B,cAAU,WAAW,CAAC,EAAE,SAAS,0BAA0B;AAC3D,UAAM,SAAS;AAAA,MACb,OAAO,UAAU,CAAC,EAAE;AAAA,MACpB,QAAQ,UAAU,CAAC,EAAE;AAAA,MACrB,QAAQ,UAAU,OAAO;AAAA,MACzB,cAAc,UAAU,IAAI,eAAe;AAAA,MAC3C,QAAQ,UAAU,IAAI,SAAS;AAAA,IACjC;AACA,UAAM,MAAM;AAAA,MACV,OAAO,OAAO,CAAC,EAAE;AAAA,MACjB,QAAQ,OAAO,CAAC,EAAE;AAAA,MAClB,QAAQ,OAAO,OAAO;AAAA,MACtB,YAAY,aAAa,OAAO,CAAC,GAAG,GAAG;AAAA,MACvC,YAAY,aAAa,OAAO,CAAC,GAAG,GAAG;AAAA,IACzC;AACA,WAAO,CAAC,EAAE,iBAAiB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,UAAM,QAAQ,IAAI,OAAO,OAAO,IAAI,QAAQ,KAAK,OAAO,OAAO,OAAO,OAAO,QAAQ,KAAK,IAAI;AAC9F,UAAM,QAAQ,IAAI,OAAO,MAAM,IAAI,SAAS,KAAK,OAAO,OAAO,MAAM,OAAO,SAAS,KAAK,IAAI;AAC9F,UAAM,SAAS,OAAO,QAAQ,IAAI;AAClC,UAAM,SAAS,OAAO,SAAS,IAAI;AACnC,QAAI,eAAe,KAAK,KAAK,SAAS,OAAO,cAAc,EAAE,IAAI,KAAK,IAAI,QAAQ,MAAM,CAAC;AACzF,QAAI,eAAe,EAAG,iBAAgB;AACtC,WAAO,CAAC,EAAE,0BAA0B,SAAS,gBAAgB;AAC3D,aAAO,WAAW,CAAC,EAAE,UAAU,EAAE;AACjC,gBAAU,WAAW,CAAC;AACtB,aAAO,QAAQ,UAAU,CAAC,EAAE;AAC5B,aAAO,SAAS,UAAU,CAAC,EAAE;AAC7B,aAAO,SAAS,UAAU,OAAO;AACjC,UAAI,SAAS,OAAO,OAAO;AAC3B,YAAM,WAAW,IAAI,OAAO,OAAO,IAAI,QAAQ,KAAK,OAAO,OAAO,OAAO,OAAO,QAAQ,KAAK,IAAI;AACjG,YAAM,WAAW,IAAI,OAAO,MAAM,IAAI,SAAS,KAAK,OAAO,OAAO,MAAM,OAAO,SAAS,KAAK,IAAI;AACjG,YAAM,YAAY,OAAO,QAAQ,IAAI;AACrC,YAAM,YAAY,OAAO,SAAS,IAAI;AACtC,aAAO,UAAU,eAAe,CAAC,QAAQ,OAAO,CAAC,QAAQ,gBAAgB,SAAS,KAAK,SAAS,GAAG;AAAA,IACrG;AACA,cAAU,IAAI,WAAW,CAAC,EAAE,UAAU,SAAS,IAAI,MAAM,KAAK,IAAI,MAAM,GAAG;AAC3E,WAAO,SAAS,YAAY,EAAE,IAAI,WAAW,OAAO,SAAS,CAAC,EAAE,UAAU,eAAe,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ;AACpH,WAAO,cAAc,MAAM;AACzB,gBAAU,WAAW,EAAE;AACvB,gBAAU,MAAM;AACd,kBAAU,IAAI,WAAW,CAAC,EAAE,UAAU,YAAY;AAClD,eAAO,UAAU,eAAe,CAAC,KAAK,OAAO,CAAC,KAAK,gBAAgB,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG,YAAY,IAAI,EAAE,IAAI,cAAc,MAAM,EAAE,IAAI,WAAW,GAAG;AAAA,MACjL,CAAC;AACD,UAAI,GAAG,UAAU,OAAO,CAAC,EAAE,uBAAuB;AAClD,UAAI,UAAU,QAAQ,eAAe,EAAE,SAAS,GAAG;AACjD,kBAAU,QAAQ,eAAe,EAAE,GAAG,UAAU,OAAO,CAAC,EAAE,uBAAuB;AAAA,MACnF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,WAAW,OAAO;AAChB,UAAM,MAAM;AACZ,UAAM,SAAS,aAAE,KAAK;AACtB,UAAM,YAAY,OAAO,CAAC,EAAE;AAC5B,QAAI,CAAC,UAAW;AAChB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,UAAU,WAAW,EAAG;AAC5B,UAAM,QAAQ,IAAI,OAAO,OAAO,IAAI,QAAQ,KAAK,OAAO,OAAO,OAAO,OAAO,QAAQ,KAAK,IAAI;AAC9F,UAAM,QAAQ,IAAI,OAAO,MAAM,IAAI,SAAS,KAAK,OAAO,OAAO,MAAM,OAAO,SAAS,KAAK,IAAI;AAC9F,UAAM,SAAS,OAAO,QAAQ,IAAI;AAClC,UAAM,SAAS,OAAO,SAAS,IAAI;AACnC,QAAI,IAAI,UAAU,OAAO,CAAC,EAAE,uBAAuB;AACnD,QAAI,UAAU,QAAQ,eAAe,EAAE,SAAS,GAAG;AACjD,gBAAU,QAAQ,eAAe,EAAE,IAAI,UAAU,OAAO,CAAC,EAAE,uBAAuB;AAAA,IACpF;AACA,cAAU,IAAI,WAAW,CAAC,EAAE,UAAU,SAAS,IAAI,MAAM,KAAK,IAAI,MAAM,GAAG;AAC3E,WAAO,WAAW,EAAE,EAAE,IAAI,cAAc,EAAE,EAAE,IAAI,iBAAiB,EAAE,EAAE,IAAI,WAAW,GAAG,EAAE,UAAU,eAAe,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ;AAC7I,WAAO,cAAc,MAAM;AACzB,aAAO,IAAI,WAAW,EAAE,EAAE,YAAY,YAAY,EAAE,UAAU,EAAE;AAChE,gBAAU,MAAM;AACd,eAAO,cAAc,MAAM;AACzB,oBAAU,YAAY,0BAA0B,EAAE,IAAI,WAAW,EAAE,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE;AAAA,QAClG,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EACA,KAAK,OAAO,UAAU;AACpB,UAAM,MAAM;AACZ,UAAM,SAAS,aAAE,KAAK,EAAE,GAAG,CAAC;AAC5B,UAAM,aAAa,OAAO,KAAK,cAAc;AAC7C,QAAI,CAAC,OAAO,OAAQ;AACpB,QAAI,OAAO,SAAS,YAAY,EAAG;AACnC,QAAI,CAAC,WAAW,UAAU,CAAC,OAAO,SAAS,WAAW,EAAG;AACzD,QAAI,IAAI,IAAI,UAAU;AACpB,UAAI,IAAI,IAAI,aAAa,OAAO,CAAC,EAAG;AACpC,UAAI,IAAI,MAAM,IAAI,IAAI,QAAQ;AAAA,IAChC;AACA,QAAI,IAAI,WAAW,OAAO,CAAC;AAC3B,QAAI,OAAO,SAAS,WAAW,GAAG;AAChC,UAAI,IAAI,UAAU,QAAQ,YAAY,OAAO,KAAK,eAAe,CAAC;AAAA,IACpE,OAAO;AACL,aAAO,SAAS,YAAY;AAAA,IAC9B;AACA,WAAO,SAAS,eAAe,EAAE,SAAS,aAAa;AACvD,WAAO,QAAQ,UAAU;AAAA,EAC3B;AAAA,EACA,MAAM,OAAO;AACX,QAAI,UAAU,QAAQ;AACpB,cAAQ;AAAA,IACV;AACA,UAAM,MAAM;AACZ,UAAM,SAAS,aAAE,KAAK,EAAE,GAAG,CAAC;AAC5B,UAAM,aAAa,OAAO,KAAK,cAAc;AAC7C,QAAI,CAAC,OAAO,OAAQ;AACpB,QAAI,CAAC,OAAO,SAAS,YAAY,EAAG;AACpC,QAAI,CAAC,WAAW,UAAU,CAAC,OAAO,SAAS,WAAW,EAAG;AACzD,QAAI,IAAI,WAAW;AACnB,QAAI,OAAO,SAAS,WAAW,GAAG;AAChC,UAAI,IAAI,WAAW,MAAM;AAAA,IAC3B,OAAO;AACL,aAAO,YAAY,YAAY;AAAA,IACjC;AACA,WAAO,SAAS,eAAe,EAAE,YAAY,aAAa;AAC1D,WAAO,QAAQ,WAAW;AAAA,EAC5B;AAAA,EACA,OAAO,OAAO;AACZ,UAAM,MAAM;AACZ,UAAM,SAAS,aAAE,KAAK;AACtB,QAAI,CAAC,OAAO,SAAS,YAAY,EAAG,KAAI,IAAI,KAAK,KAAK;AAAA,QAAO,KAAI,IAAI,MAAM,KAAK;AAAA,EAClF;AACF;AACA,IAAO,cAAQ;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACP,UAAM,MAAM;AACZ,gBAAY,KAAK;AAAA,MACf,KAAK;AAAA,QACH,UAAU;AAAA,QACV,GAAG;AAAA,MACL;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,QAAQ;AAAA,IACN,YAAY,SAASC,MAAK,YAAY;AACpC,YAAM,MAAM;AACZ,UAAI,IAAI,OAAO,WAAW,QAAQ,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,aAAa,SAASA,MAAK,YAAY,MAAM;AAC3C,UAAI,SAAS,QAAQ;AACnB,eAAO,CAAC;AAAA,MACV;AACA,YAAM,MAAM;AACZ,UAAI,IAAI,KAAK,KAAK,GAAG;AAAA,IACvB;AAAA,IACA,cAAc,SAASC,OAAM,YAAY,MAAM;AAC7C,UAAI,SAAS,QAAQ;AACnB,eAAO,CAAC;AAAA,MACV;AACA,YAAM,MAAM;AACZ,UAAI,IAAI,MAAM,KAAK,GAAG;AAAA,IACxB;AAAA,IACA,iBAAiB,SAASA,SAAQ;AAChC,YAAM,MAAM;AACZ,UAAI,IAAI,MAAM;AAAA,IAChB;AAAA,EACF;AACF;;;ACrKA,IAAM,YAAN,cAAwB,cAAe;AAAA,EACrC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,KAAK;AACX,UAAMC,YAAW;AAAA,MACf,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,MACb,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,iBAAiB;AAAA;AAAA,MAEjB,YAAY;AAAA;AAAA,MAEZ,UAAU;AAAA;AAAA,MAEV,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,wBAAwB;AAAA,MACxB,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV;AAGA,OAAG,iBAAiBA,SAAQ;AAC5B,OAAG,SAAS,OAAOA,WAAU,MAAM;AACnC,UAAM,MAAM,aAAE,GAAG,OAAO,EAAE;AAC1B,QAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,QAAI,IAAI,CAAC,EAAE,YAAa,QAAO,IAAI,CAAC,EAAE;AACtC,QAAI,CAAC,EAAE,cAAc;AACrB,QAAI;AACJ,UAAM,YAAY,IAAI,QAAQ,SAAS;AACvC,QAAI,IAAI,QAAQ,OAAO,EAAE,SAAS,GAAG;AACnC,gBAAU,IAAI,QAAQ,OAAO;AAAA,IAC/B,WAAW,UAAU,SAAS,GAAG;AAC/B,gBAAU,aAAE,IAAI,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC;AAChD,UAAI,CAAC,QAAQ,QAAQ;AACnB,cAAM,iBAAiB,IAAI,QAAQ,OAAO,EAAE,KAAK,eAAe;AAChE,YAAI,eAAe,CAAC,KAAK,eAAe,CAAC,EAAE,UAAU,eAAe,CAAC,EAAE,OAAO,aAAa,UAAU,CAAC,GAAG;AACvG,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACJ,QAAI,OAAO,SAAS;AAClB,iBAAW,aAAE,OAAO,OAAO;AAAA,IAC7B,WAAW,OAAO,GAAG,OAAO,YAAY,YAAY,SAAS;AAC3D,iBAAW,QAAQ,KAAK,GAAG,OAAO,OAAO;AAAA,IAC3C;AACA,QAAI;AACJ,QAAI,OAAO,YAAY;AACrB,oBAAc,aAAE,OAAO,UAAU;AAAA,IACnC,WAAW,OAAO,GAAG,OAAO,eAAe,YAAY,SAAS;AAC9D,oBAAc,QAAQ,KAAK,GAAG,OAAO,UAAU;AAAA,IACjD;AACA,QAAI;AACJ,QAAI,OAAO,gBAAgB;AACzB,wBAAkB,aAAE,OAAO,cAAc;AAAA,IAC3C,WAAW,OAAO,GAAG,OAAO,mBAAmB,YAAY,SAAS;AAClE,wBAAkB,QAAQ,KAAK,GAAG,OAAO,cAAc;AAAA,IACzD;AACA,QAAI;AACJ,QAAI,OAAO,gBAAgB;AACzB,wBAAkB,aAAE,OAAO,cAAc;AAAA,IAC3C,WAAW,OAAO,GAAG,OAAO,mBAAmB,YAAY,SAAS;AAClE,wBAAkB,QAAQ,KAAK,GAAG,OAAO,cAAc;AAAA,IACzD;AACA,UAAM,aAAa,GAAG,OAAO,cAAc,IAAI,SAAS,sBAAsB;AAC9E,UAAM,SAAS,GAAG,OAAO,UAAU,IAAI,SAAS,kBAAkB;AAClE,QAAI,OAAO,GAAG,OAAO,aAAa,aAAa;AAC7C,SAAG,OAAO,WAAW,CAAC;AAAA,IACxB;AACA,QAAI;AACJ,QAAI,GAAG,OAAO,UAAU;AACtB,UAAI,GAAG,OAAO,YAAY;AACxB,sBAAc,aAAE,GAAG,OAAO,UAAU;AAAA,MACtC,WAAW,WAAW,QAAQ,SAAS,GAAG;AACxC,sBAAc,QAAQ,KAAK,qBAAqB;AAAA,MAClD,OAAO;AACL,sBAAc,IAAI,SAAS,qBAAqB;AAAA,MAClD;AACA,UAAI,YAAY,WAAW,GAAG;AAC5B,sBAAc,aAAE,wCAAwC;AACxD,YAAI,WAAW,QAAQ,QAAQ;AAC7B,cAAI,IAAI,QAAQ,OAAO,EAAE,SAAS,KAAK,aAAa,IAAI,QAAQ,SAAS,EAAE,WAAW,GAAG;AACvF,wBAAY,aAAa,GAAG;AAAA,UAC9B,OAAO;AACL,wBAAY,aAAa,QAAQ,KAAK,eAAe,EAAE,GAAG,CAAC,CAAC;AAAA,UAC9D;AAAA,QACF,OAAO;AACL,sBAAY,aAAa,GAAG;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACJ,QAAI,GAAG,OAAO,iBAAiB;AAC7B,yBAAmB,aAAE,GAAG,OAAO,eAAe;AAAA,IAChD;AACA,QAAI;AACJ,QAAI,GAAG,OAAO,SAAS;AACrB,iBAAW,aAAE,GAAG,OAAO,OAAO;AAAA,IAChC,OAAO;AACL,iBAAW,IAAI,KAAK,sBAAsB,EAAE,GAAG,CAAC;AAAA,IAClD;AACA,QAAI;AACJ,QAAI,GAAG,OAAO,eAAe;AAC3B,UAAI,GAAG,OAAO,iBAAiB;AAC7B,2BAAmB,aAAE,GAAG,OAAO,eAAe;AAAA,MAChD,OAAO;AACL,2BAAmB,IAAI,KAAK,2BAA2B;AAAA,MACzD;AAAA,IACF;AACA,WAAO,IAAI;AAAA,MACT;AAAA,MACA,MAAM,IAAI,MAAM,IAAI,IAAI,QAAQ,OAAO,CAAC;AAAA,MACxC;AAAA,MACA,IAAI,IAAI,CAAC;AAAA,MACT;AAAA,MACA,YAAY,eAAe,YAAY,CAAC;AAAA,MACxC;AAAA,MACA,iBAAiB,oBAAoB,iBAAiB,CAAC;AAAA,MACvD;AAAA,MACA,SAAS,SAAS,CAAC;AAAA,MACnB;AAAA,MACA,iBAAiB,oBAAoB,iBAAiB,CAAC;AAAA,MACvD,wBAAwB;AAAA,MACxB;AAAA,MACA,QAAQ,WAAW,QAAQ,CAAC;AAAA,MAC5B;AAAA,MACA,UAAU,aAAa,UAAU,CAAC;AAAA,MAClC;AAAA,MACA,SAAS,YAAY,SAAS,CAAC;AAAA,MAC/B;AAAA,MACA,YAAY,eAAe,YAAY,CAAC;AAAA,MACxC;AAAA,MACA,gBAAgB,mBAAmB,gBAAgB,CAAC;AAAA,MACpD;AAAA,MACA,gBAAgB,mBAAmB,gBAAgB,CAAC;AAAA,MACpD,eAAe;AAAA,MACf,OAAO;AAAA,MACP,eAAe,oBAAoB,iBAAiB,SAAS,cAAc;AAAA,MAC3E,aAAa;AAAA,MACb,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAGD,aAAS,cAAc,GAAG;AACxB,QAAE,eAAe;AAAA,IACnB;AACA,aAAS,aAAa,GAAG;AACvB,SAAG,OAAO,CAAC;AACX,SAAG,IAAI,SAAS,mBAAmB;AAAA,IACrC;AACA,aAAS,cAAc;AACrB,SAAG,IAAI,YAAY,mBAAmB;AAAA,IACxC;AACA,aAAS,gBAAgB;AACvB,YAAM,QAAQ,GAAG,SAAS,IAAI,EAAE,KAAK;AACrC,UAAI,GAAG,oBAAoB,GAAG,iBAAiB,SAAS,MAAM,GAAG,OAAO,YAAY,GAAG,iBAAiB,GAAG,OAAO,aAAa,GAAG,OAAO,eAAe,GAAG,OAAO,cAAc;AAC9K,WAAG,OAAO,OAAO,IAAI;AAAA,MACvB;AAAA,IACF;AACA,aAAS,aAAa,GAAG,eAAe;AACtC,SAAG,IAAI,QAAQ,mBAAmB,aAAa;AAC/C,SAAG,KAAK,+BAA+B,IAAI,aAAa;AAAA,IAC1D;AACA,aAAS,eAAe,GAAG;AACzB,SAAG,QAAQ,CAAC;AAAA,IACd;AACA,aAAS,kBAAkB;AACzB,UAAI,CAAC,MAAM,MAAM,CAAC,GAAG,IAAK;AAC1B,UAAI,GAAG,SAAS;AACd,WAAG,IAAI,YAAY,mBAAmB;AACtC,YAAI,GAAG,YAAY;AACjB,aAAG,IAAI,QAAQ,SAAS,EAAE,YAAY,mFAAmF;AAAA,QAC3H;AAAA,MACF;AAAA,IACF;AACA,aAAS,iBAAiB;AACxB,UAAI,CAAC,MAAM,MAAM,CAAC,GAAG,IAAK;AAC1B,UAAI,GAAG,SAAS;AACd,WAAG,IAAI,SAAS,mBAAmB;AACnC,YAAI,GAAG,YAAY;AACjB,aAAG,IAAI,QAAQ,SAAS,EAAE,SAAS,iDAAiD;AAAA,QACtF;AAAA,MACF;AAAA,IACF;AACA,OAAG,eAAe,SAASC,gBAAe;AACxC,UAAI,GAAG,UAAU,aAAa;AAC9B,UAAI,GAAG,OAAO,eAAe;AAC3B,WAAG,iBAAiB,GAAG,SAAS,cAAc;AAAA,MAChD;AACA,UAAI,GAAG,OAAO,0BAA0B,GAAG,aAAa;AACtD,WAAG,YAAY,GAAG,SAAS,cAAc;AAAA,MAC3C;AACA,UAAI,GAAG,cAAc,IAAI,UAAU,SAAS,GAAG,QAAQ,UAAU,UAAU,GAAG,SAAS;AACrF,WAAG,QAAQ,GAAG,kBAAkB,eAAe;AAC/C,WAAG,QAAQ,GAAG,iBAAiB,cAAc;AAAA,MAC/C;AACA,SAAG,SAAS,GAAG,SAAS,YAAY;AACpC,SAAG,SAAS,GAAG,QAAQ,WAAW;AAClC,SAAG,SAAS,GAAG,GAAG,OAAO,aAAa,aAAa;AACnD,SAAG,SAAS,GAAG,eAAe,YAAY;AAAA,IAC5C;AACA,OAAG,eAAe,SAASC,gBAAe;AACxC,UAAI,IAAI,UAAU,aAAa;AAC/B,UAAI,GAAG,OAAO,eAAe;AAC3B,WAAG,iBAAiB,IAAI,SAAS,cAAc;AAAA,MACjD;AACA,UAAI,GAAG,OAAO,0BAA0B,GAAG,aAAa;AACtD,WAAG,YAAY,IAAI,SAAS,cAAc;AAAA,MAC5C;AACA,UAAI,GAAG,cAAc,IAAI,UAAU,SAAS,GAAG,QAAQ,UAAU,UAAU,GAAG,SAAS;AACrF,WAAG,QAAQ,IAAI,kBAAkB,eAAe;AAChD,WAAG,QAAQ,IAAI,iBAAiB,cAAc;AAAA,MAChD;AACA,SAAG,SAAS,IAAI,SAAS,YAAY;AACrC,SAAG,SAAS,IAAI,QAAQ,WAAW;AACnC,SAAG,SAAS,IAAI,GAAG,OAAO,aAAa,aAAa;AACpD,SAAG,SAAS,IAAI,eAAe,YAAY;AAAA,IAC7C;AAGA,OAAG,WAAW;AAGd,OAAG,KAAK;AACR,WAAO;AAAA,EACT;AAAA,EACA,MAAM,GAAG;AACP,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,SAAS,KAAK,aAAE,EAAE,MAAM,EAAE,SAAS,iBAAiB,GAAG;AAC7D,SAAG,QAAQ;AACX,aAAO;AAAA,IACT;AACA,UAAM,gBAAgB,GAAG;AACzB,OAAG,SAAS,IAAI,EAAE,EAAE,QAAQ,QAAQ,EAAE,MAAM;AAC5C,OAAG,IAAI,QAAQ,mBAAmB,aAAa;AAC/C,OAAG,KAAK,+BAA+B,IAAI,aAAa;AACxD,WAAO;AAAA,EACT;AAAA,EACA,yBAAyB;AACvB,UAAM,KAAK;AACX,QAAI,GAAG,WAAY;AACnB,UAAM,MAAM,GAAG;AACf,OAAG,iBAAiB,WAAW,CAAC,EAAE,KAAK;AACvC,OAAG,iBAAiB,IAAI,UAAU,IAAI,MAAM,SAAS,OAAO,IAAI,GAAG,CAAC,GAAG,gBAAgB,WAAW,IAAI;AAEtG,OAAG,cAAc,GAAG,iBAAiB,CAAC,EAAE;AACxC,OAAG,iBAAiB,WAAW,EAAE;AACjC,OAAG,yBAAyB;AAAA,EAC9B;AAAA,EACA,OAAO,UAAU;AACf,UAAM,KAAK;AACX,QAAI,GAAG,QAAS,QAAO;AACvB,UAAM,MAAM,GAAG;AACf,UAAMC,YAAW,YAAY;AAC7B,UAAM,SAAS,UAAU;AACzB,OAAG,UAAU;AACb,aAASC,UAAS;AAChB,UAAI,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,UAAU,GAAG,OAAO,iBAAiB,CAAC,GAAG,IAAI,SAAS,mBAAmB,KAAK,CAAC,GAAG,OAAO;AACzJ,WAAG,aAAa;AAAA,MAClB;AACA,SAAG,IAAI,SAAS,mBAAmB;AACnC,UAAI,CAAC,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,iBAAiB,WAAW,GAAG;AACnF,WAAG,IAAI,SAAS,qCAAqC;AAAA,MACvD;AACA,UAAI,CAAC,GAAG,cAAc,GAAG,oBAAoB,GAAG,iBAAiB,SAAS,KAAK,IAAI,UAAU,MAAM;AACjG,YAAI,CAAC,GAAG,wBAAwB;AAC9B,aAAG,uBAAuB;AAAA,QAC5B;AACA,WAAG,iBAAiB,IAAI,UAAU,IAAI,MAAM,SAAS,OAAO,IAAI,KAAK;AAAA,MACvE;AACA,UAAI,GAAG,YAAY;AACjB,cAAM,YAAY,GAAG,IAAI,QAAQ,SAAS;AAC1C,YAAI,UAAU,SAAS,cAAc,KAAK,GAAG,SAAS;AACpD,gBAAM,iBAAiB,GAAG,QAAQ,KAAK,eAAe;AACtD,gBAAM,gBAAgB,UAAU,KAAK,cAAc;AACnD,yBAAe,SAAS,mCAAmC;AAC3D,cAAI,UAAU,SAAS,cAAc,KAAK,UAAU,SAAS,wBAAwB,KAAK,cAAc,UAAU,eAAe,QAAQ;AACvI,2BAAe,WAAW,CAAC;AAC3B,2BAAe,CAAC,EAAE,aAAa,cAAc,CAAC,EAAE;AAChD,uBAAW,MAAM;AACf,6BAAe,WAAW,EAAE;AAAA,YAC9B,GAAG,GAAG;AAAA,UACR;AAAA,QACF;AACA,YAAI,IAAI,UAAU,QAAQ,UAAU,QAAQ;AAC1C,oBAAU,SAAS,mCAAmC;AAAA,QACxD,OAAO;AACL,oBAAU,SAAS,mCAAmC;AACtD,cAAI,UAAU,SAAS,cAAc,GAAG;AACtC,sBAAU,SAAS,wBAAwB;AAAA,UAC7C;AAAA,QACF;AAAA,MACF;AACA,UAAI,GAAG,gBAAiB,IAAG,gBAAgB,SAAS,qBAAqB;AACzE,SAAG,IAAI,QAAQ,kBAAkB;AACjC,SAAG,KAAK,iCAAiC,EAAE;AAAA,IAC7C;AACA,QAAI,aAAa;AACjB,QAAI,aAAa,MAAM;AACrB,UAAID,UAAS,kBAAkB,GAAG,SAAS;AACzC,qBAAa;AAAA,MACf;AAAA,IACF;AACA,UAAM,QAAQ,OAAO,OAAO,IAAI,UAAU;AAC1C,QAAI,OAAO;AACT,UAAI,GAAG,YAAY;AACjB,YAAI,WAAY,IAAG,SAAS,MAAM;AAClC,QAAAC,QAAO;AAAA,MACT,OAAO;AACL,YAAI,WAAY,IAAG,SAAS,MAAM;AAClC,YAAI,aAAa,SAAS,SAAS,WAAW,aAAa,OAAO;AAChE,mBAAS,MAAM;AACb,YAAAA,QAAO;AAAA,UACT,GAAG,GAAG;AAAA,QACR,OAAO;AACL,UAAAA,QAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,OAAO;AACL,UAAI,WAAY,IAAG,SAAS,MAAM;AAClC,UAAI,IAAI,UAAU,QAAQ,GAAG,YAAY;AACvC,WAAG,IAAI,QAAQ,sCAAsC,EAAE,WAAW,IAAI,MAAM,MAAM,CAAC;AAAA,MACrF;AACA,MAAAA,QAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,QAAS,QAAO;AACxB,UAAM,MAAM,GAAG;AACf,OAAG,SAAS,IAAI,EAAE,EAAE,QAAQ,QAAQ;AACpC,OAAG,IAAI,YAAY,yEAAyE;AAC5F,QAAI,GAAG,YAAY;AACjB,YAAM,YAAY,GAAG,IAAI,QAAQ,SAAS;AAC1C,YAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,KAAK,eAAe;AACpE,UAAI,UAAU,SAAS,cAAc,KAAK,eAAe,QAAQ;AAC/D,cAAM,gBAAgB,UAAU,KAAK,cAAc;AACnD,WAAG,IAAI,cAAc,MAAM;AACzB,yBAAe,YAAY,mCAAmC;AAAA,QAChE,CAAC;AACD,YAAI,UAAU,SAAS,cAAc,KAAK,UAAU,SAAS,wBAAwB,KAAK,cAAc,QAAQ;AAC9G,gBAAM,YAAY,eAAe,CAAC,EAAE;AACpC,gBAAM,mBAAmB,cAAc,CAAC,EAAE;AAC1C,cAAI,YAAY,kBAAkB;AAChC,2BAAe,WAAW,CAAC;AAC3B,2BAAe,CAAC,EAAE,YAAY,YAAY;AAC1C,uBAAW,MAAM;AACf,6BAAe,WAAW,EAAE;AAAA,YAC9B,GAAG,GAAG;AAAA,UACR;AAAA,QACF;AACA,uBAAe,YAAY,mCAAmC,EAAE,SAAS,mCAAmC;AAAA,MAC9G;AACA,UAAI,IAAI,UAAU,QAAQ,UAAU,QAAQ;AAC1C,kBAAU,YAAY,mFAAmF,EAAE,SAAS,mCAAmC;AACvJ,WAAG,IAAI,cAAc,MAAM;AACzB,oBAAU,YAAY,mCAAmC;AAAA,QAC3D,CAAC;AAAA,MACH,OAAO;AACL,kBAAU,YAAY,mFAAmF,EAAE,SAAS,mCAAmC;AACvJ,WAAG,IAAI,cAAc,MAAM;AACzB,oBAAU,YAAY,mCAAmC;AAAA,QAC3D,CAAC;AACD,YAAI,GAAG,SAAS;AACd,aAAG,QAAQ,KAAK,eAAe,EAAE,QAAQ,QAAQ;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,GAAG,cAAc,GAAG,oBAAoB,GAAG,iBAAiB,SAAS,KAAK,IAAI,UAAU,MAAM;AACjG,SAAG,iBAAiB,IAAI,UAAU,IAAI,MAAM,SAAS,OAAO,IAAI,GAAG,CAAC,GAAG,gBAAgB,WAAW,IAAI;AAAA,IACxG;AACA,QAAI,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,UAAU,GAAG,OAAO,eAAe;AACnG,SAAG,aAAa;AAAA,IAClB;AACA,OAAG,UAAU;AACb,OAAG,SAAS,KAAK;AACjB,QAAI,GAAG,gBAAiB,IAAG,gBAAgB,YAAY,qBAAqB;AAC5E,OAAG,IAAI,QAAQ,mBAAmB;AAClC,OAAG,KAAK,mCAAmC,EAAE;AAC7C,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,KAAK;AACX,QAAI,GAAG,QAAS,IAAG,QAAQ;AAAA,QAAO,IAAG,OAAO,IAAI;AAChD,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,QAAI,GAAG,aAAa;AAClB,SAAG,YAAY,SAAS,uBAAuB;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,QAAI,GAAG,aAAa;AAClB,SAAG,YAAY,YAAY,uBAAuB;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO,UAAU;AACtB,UAAM,KAAK;AACX,OAAG,gBAAgB,GAAG,SAAS;AAC/B,QAAI,UAAU,GAAG,cAAe,QAAO;AACvC,QAAI,CAAC,UAAU;AACb,UAAI,CAAC,GAAG,SAAS;AACf,WAAG,OAAO;AAAA,MACZ;AACA,SAAG,SAAS,IAAI,KAAK;AACrB,SAAG,SAAS,QAAQ,OAAO;AAAA,IAC7B;AACA,OAAG,QAAQ;AACX,OAAG,QAAQ;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAGJ,QAAI,MAAM,SAAS,KAAK,iBAAiB;AACvC,sBAAgB,SAAS,qBAAqB;AAAA,IAChD,WAAW,iBAAiB;AAC1B,sBAAgB,YAAY,qBAAqB;AAAA,IACnD;AAEA,QAAI,oBAAoB,iBAAiB,UAAU,IAAI,SAAS,mBAAmB,KAAK,GAAG,OAAO,gBAAgB,IAAI,SAAS,mBAAmB,GAAG;AACnJ,UAAI,MAAM,WAAW,GAAG;AACtB,WAAG,aAAa;AAAA,MAClB,OAAO;AACL,WAAG,aAAa;AAAA,MAClB;AAAA,IACF;AACA,QAAI,GAAG,OAAO,cAAc;AAC1B,UAAI,QAAQ,oBAAoB;AAAA,QAC9B;AAAA,QACA,eAAe,GAAG;AAAA,MACpB,CAAC;AACD,SAAG,KAAK,iCAAiC,IAAI,OAAO,GAAG,aAAa;AACpE,aAAO;AAAA,IACT;AACA,QAAI,aAAa,CAAC;AAClB,QAAI;AACJ,QAAI,eAAe;AACjB,SAAG,cAAc,iBAAiB,CAAC,EAAE;AACrC,UAAI,MAAM,KAAK,MAAM,IAAI;AACvB,WAAG,YAAY,YAAY;AAC3B,YAAI,YAAa,aAAY,KAAK;AAClC,YAAI,SAAU,UAAS,KAAK;AAC5B,YAAI,QAAQ,oBAAoB;AAAA,UAC9B;AAAA,UACA,eAAe,GAAG;AAAA,QACpB,CAAC;AACD,WAAG,KAAK,iCAAiC,IAAI,OAAO,GAAG,aAAa;AACpE,eAAO;AAAA,MACT;AACA,gBAAU,GAAG,OAAO,mBAAmB,0BAAiB,KAAK,IAAI;AACjE,UAAI,GAAG,YAAY,OAAO,WAAW;AACnC,qBAAa,GAAG,YAAY,OAAO,UAAU,SAAS,GAAG,YAAY,KAAK,KAAK,CAAC;AAAA,MAClF,WAAW,GAAG,YAAY,OAAO,cAAc;AAC7C,iBAAS,IAAI,GAAG,IAAI,GAAG,YAAY,MAAM,QAAQ,KAAK,GAAG;AACvD,cAAI,GAAG,YAAY,OAAO,aAAa,SAAS,GAAG,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG;AAC3E,uBAAW,KAAK,CAAC;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,UAAI;AACJ,UAAI,GAAG,OAAO,iBAAkB,UAAS,0BAAiB,MAAM,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;AAAA,WAAO;AACpG,iBAAS,MAAM,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG;AAAA,MAC/C;AACA,uBAAiB,KAAK,GAAG,OAAO,UAAU,EAAE,YAAY,qBAAqB,EAAE,KAAK,YAAU;AAC5F,cAAM,UAAU,aAAE,MAAM;AACxB,YAAI,kBAAkB,CAAC;AACvB,YAAI,YAAY,GAAG,OAAO,WAAW,QAAQ,KAAK,GAAG,OAAO,QAAQ,IAAI;AACxE,YAAI,GAAG,OAAO,aAAa,GAAG,OAAO,YAAY;AAC/C,sBAAY;AAAA,QACd;AACA,kBAAU,KAAK,gBAAc;AAC3B,cAAI,WAAW,aAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY;AACvD,cAAI,GAAG,OAAO,iBAAkB,YAAW,0BAAiB,QAAQ;AACpE,0BAAgB,KAAK,QAAQ;AAAA,QAC/B,CAAC;AACD,0BAAkB,gBAAgB,KAAK,GAAG;AAC1C,YAAI,aAAa;AACjB,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,cAAI,gBAAgB,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAG,eAAc;AAAA,QAC7D;AACA,YAAI,eAAe,OAAO,UAAU,EAAE,GAAG,OAAO,UAAU,QAAQ,GAAG,GAAG,OAAO,MAAM,IAAI;AACvF,kBAAQ,SAAS,qBAAqB;AAAA,QACxC,OAAO;AACL,qBAAW,KAAK,QAAQ,CAAC,CAAC;AAAA,QAC5B;AAAA,MACF,CAAC;AACD,UAAI,GAAG,OAAO,iBAAiB;AAC7B,yBAAiB,KAAK,GAAG,OAAO,gBAAgB,EAAE,KAAK,aAAW;AAChE,gBAAM,WAAW,aAAE,OAAO;AAC1B,gBAAM,gBAAgB,SAAS,QAAQ,GAAG,OAAO,UAAU;AAC3D,cAAI,OAAO;AACX,mBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK,GAAG;AAChD,kBAAM,UAAU,cAAc,GAAG,CAAC;AAClC,gBAAI,QAAQ,GAAG,GAAG,OAAO,gBAAgB,EAAG;AAC5C,gBAAI,CAAC,QAAQ,SAAS,qBAAqB,GAAG;AAC5C,qBAAO;AAAA,YACT;AAAA,UACF;AACA,gBAAM,SAAS,GAAG,OAAO,UAAU,SAAS,GAAG,GAAG,OAAO,MAAM;AAC/D,cAAI,QAAQ,CAAC,OAAQ,UAAS,SAAS,qBAAqB;AAAA,cAAO,UAAS,YAAY,qBAAqB;AAAA,QAC/G,CAAC;AAAA,MACH;AACA,UAAI,GAAG,OAAO,YAAY;AACxB,yBAAiB,KAAK,GAAG,OAAO,WAAW,EAAE,KAAK,aAAW;AAC3D,gBAAM,WAAW,aAAE,OAAO;AAC1B,gBAAM,SAAS,GAAG,OAAO,UAAU,SAAS,GAAG,GAAG,OAAO,MAAM;AAE/D,gBAAM,YAAY,SAAS,KAAK,GAAG,OAAO,UAAU,EAAE,OAAO,QAAM;AACjE,mBAAO,CAAC,aAAE,EAAE,EAAE,SAAS,qBAAqB;AAAA,UAC9C,CAAC;AACD,cAAI,UAAU,WAAW,KAAK,CAAC,QAAQ;AACrC,qBAAS,SAAS,qBAAqB;AAAA,UACzC,OAAO;AACL,qBAAS,YAAY,qBAAqB;AAAA,UAC5C;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,WAAW,WAAW,GAAG;AAC3B,UAAI,YAAa,aAAY,KAAK;AAClC,UAAI,SAAU,UAAS,KAAK;AAAA,IAC9B,OAAO;AACL,UAAI,YAAa,aAAY,KAAK;AAClC,UAAI,SAAU,UAAS,KAAK;AAAA,IAC9B;AACA,QAAI,iBAAiB,GAAG,aAAa;AACnC,SAAG,YAAY,YAAY,UAAU;AAAA,IACvC;AACA,QAAI,QAAQ,oBAAoB;AAAA,MAC9B;AAAA,MACA,eAAe,GAAG;AAAA,MAClB;AAAA,IACF,CAAC;AACD,OAAG,KAAK,iCAAiC,IAAI,OAAO,GAAG,eAAe,UAAU;AAChF,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,KAAK;AACX,QAAI,GAAG,cAAc,GAAG,IAAK,IAAG,IAAI,SAAS,sBAAsB;AACnE,QAAI,GAAG,UAAU,GAAG,IAAK,IAAG,IAAI,SAAS,kBAAkB;AAC3D,OAAG,aAAa;AAAA,EAClB;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,OAAG,KAAK,+CAA+C,EAAE;AACzD,OAAG,IAAI,QAAQ,yBAAyB;AACxC,OAAG,aAAa;AAChB,QAAI,GAAG,IAAI,CAAC,GAAG;AACb,SAAG,IAAI,CAAC,EAAE,cAAc;AACxB,aAAO,GAAG,IAAI,CAAC,EAAE;AAAA,IACnB;AACA,gBAAY,EAAE;AAAA,EAChB;AACF;AACA,IAAO,0BAAQ;;;AC3kBf,IAAO,oBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,YAAY,mBAAmB;AAAA,MACjC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,MACT,YAAY,qCAAqC,MAAM,GAAG;AAAA,IAC5D,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAe;AACnD,cAAM,eAAe,aAAE,WAAW;AAClC,YAAI,UAAU,OAAO,OAAO,aAAa,QAAQ,GAAG;AAAA,UAClD,IAAI;AAAA,QACN,CAAC,CAAC;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,mBAAE,KAAK,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAe;AACnD,YAAI,YAAY,eAAe,YAAY,YAAY,SAAS;AAC9D,sBAAY,YAAY,QAAQ;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,iBAAiB,EAAE,KAAK,iBAAe;AACnD,cAAM,eAAe,aAAE,WAAW;AAClC,YAAI,UAAU,OAAO,OAAO,aAAa,QAAQ,GAAG;AAAA,UAClD,IAAI;AAAA,QACN,CAAC,CAAC;AAAA,MACJ,CAAC;AACD,UAAI,IAAI,UAAU,SAAS,KAAK,QAAQ,KAAK,KAAK,OAAO,iBAAiB,KAAK,aAAa,KAAK,UAAU,SAAS,GAAG;AACrH,aAAK,UAAU,KAAK,iBAAiB,EAAE,KAAK,iBAAe;AACzD,gBAAM,eAAe,aAAE,WAAW;AAClC,cAAI,UAAU,OAAO,OAAO,aAAa,QAAQ,GAAG;AAAA,YAClD,IAAI;AAAA,UACN,CAAC,CAAC;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,iBAAiB,EAAE,KAAK,iBAAe;AACnD,YAAI,YAAY,eAAe,YAAY,YAAY,SAAS;AAC9D,sBAAY,YAAY,QAAQ;AAAA,QAClC;AAAA,MACF,CAAC;AACD,UAAI,IAAI,UAAU,SAAS,KAAK,QAAQ,KAAK,KAAK,OAAO,iBAAiB,KAAK,aAAa,KAAK,UAAU,SAAS,GAAG;AACrH,aAAK,UAAU,KAAK,iBAAiB,EAAE,KAAK,iBAAe;AACzD,cAAI,YAAY,eAAe,YAAY,YAAY,SAAS;AAC9D,wBAAY,YAAY,QAAQ;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,oBAAoB,SAAS,MAAM,YAAY,MAAM;AACnD,UAAI,SAAS,QAAQ;AACnB,eAAO,CAAC;AAAA,MACV;AACA,YAAM,MAAM;AACZ,YAAM,KAAK,IAAI,UAAU,IAAI,KAAK,SAAS;AAC3C,UAAI,GAAI,IAAG,MAAM;AAAA,IACnB;AAAA,IACA,qBAAqB,SAASC,QAAO,YAAY,MAAM;AACrD,UAAI,SAAS,QAAQ;AACnB,eAAO,CAAC;AAAA,MACV;AACA,YAAM,MAAM;AACZ,YAAM,KAAK,IAAI,UAAU,IAAI,KAAK,SAAS;AAC3C,UAAI,GAAI,IAAG,OAAO,IAAI;AAAA,IACxB;AAAA,IACA,sBAAsB,SAASC,SAAQ,YAAY,MAAM;AACvD,UAAI,SAAS,QAAQ;AACnB,eAAO,CAAC;AAAA,MACV;AACA,YAAM,MAAM;AACZ,YAAM,KAAK,IAAI,UAAU,IAAI,KAAK,SAAS;AAC3C,UAAI,GAAI,IAAG,QAAQ;AAAA,IACrB;AAAA,IACA,qBAAqB,SAASC,QAAO,YAAY,MAAM;AACrD,UAAI,SAAS,QAAQ;AACnB,eAAO,CAAC;AAAA,MACV;AACA,YAAM,MAAM;AACZ,YAAM,KAAK,IAAI,UAAU,IAAI,KAAK,SAAS;AAC3C,UAAI,GAAI,IAAG,OAAO;AAAA,IACpB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,cAAc,MAAM;AAC1B,cAAM,eAAe,aAAE,WAAW;AAClC,YAAI,UAAU,OAAO,OAAO,aAAa,QAAQ,GAAG;AAAA,UAClD,IAAI;AAAA,QACN,CAAC,CAAC;AAAA,MACJ;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,cAAc,MAAM;AAC1B,YAAI,YAAY,eAAe,YAAY,YAAY,SAAS;AAC9D,sBAAY,YAAY,QAAQ;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACzHA,SAAS,WAAW;AAAE,aAAW,OAAO,SAAS,OAAO,OAAO,KAAK,IAAI,SAAU,QAAQ;AAAE,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,UAAI,SAAS,UAAU,CAAC;AAAG,eAAS,OAAO,QAAQ;AAAE,YAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AAAE,iBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,QAAG;AAAA,MAAE;AAAA,IAAE;AAAE,WAAO;AAAA,EAAQ;AAAG,SAAO,SAAS,MAAM,MAAM,SAAS;AAAG;AAMlV,IAAM,WAAN,cAAuB,cAAgB;AAAA,EACrC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,IAAI;AACV,UAAMC,YAAW;AAAA,MACf,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,MACX,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,qBAAqB;AAAA,MACrB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,wBAAwB;AAAA,MACxB,eAAe;AAAA,IACjB;AAGA,MAAE,iBAAiBA,SAAQ;AAC3B,MAAE,SAAS,OAAOA,WAAU,MAAM;AAClC,UAAM,MAAM,aAAE,OAAO,EAAE,EAAE,GAAG,CAAC;AAC7B,QAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,QAAI,IAAI,CAAC,EAAE,WAAY,QAAO,IAAI,CAAC,EAAE;AACrC,QAAI,CAAC,EAAE,aAAa;AACpB,UAAM,iBAAiB,IAAI,QAAQ,eAAe,EAAE,GAAG,CAAC;AACxD,WAAO,GAAG;AAAA,MACR,UAAU,EAAE,OAAO;AAAA,MACnB;AAAA,MACA,IAAI,IAAI,CAAC;AAAA,MACT;AAAA,MACA,eAAe,eAAe,CAAC;AAAA,IACjC,CAAC;AAED,MAAE,WAAW;AAGb,MAAE,KAAK;AACP,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,eAAe,WAAW;AACxB,UAAM,aAAa,aAAE,SAAS;AAC9B,UAAM,OAAO;AAAA,MACX,MAAM,WAAW,KAAK,eAAe,EAAE,KAAK;AAAA,MAC5C,QAAQ,WAAW,KAAK,iBAAiB,EAAE,KAAK;AAAA,MAChD,YAAY,WAAW,KAAK,sBAAsB,EAAE,KAAK;AAAA,MACzD,YAAY,WAAW,KAAK,sBAAsB,EAAE,KAAK;AAAA,MACzD,QAAQ,WAAW,KAAK,iBAAiB,EAAE,KAAK;AAAA,MAChD,SAAS,WAAW,SAAS,gBAAgB;AAAA,MAC7C,MAAM,WAAW,SAAS,cAAc,IAAI,SAAS;AAAA,MACrD,MAAM,WAAW,KAAK,eAAe,EAAE,KAAK;AAAA,MAC5C,OAAO,WAAW,KAAK,gBAAgB,EAAE,KAAK;AAAA,MAC9C,UAAU,WAAW,KAAK,oBAAoB,EAAE,KAAK,KAAK;AAAA,MAC1D,QAAQ,WAAW,SAAS,gBAAgB;AAAA,IAC9C;AACA,QAAI,KAAK,SAAS;AAChB,WAAK,OAAO,WAAW,KAAK;AAAA,IAC9B;AACA,QAAI,KAAK,QAAQ,KAAK,YAAY;AAChC,WAAK,OAAO,KAAK,KAAK,QAAQ,oCAAoC,KAAK,UAAU,UAAU,EAAE;AAAA,IAC/F;AACA,QAAI,KAAK,QAAQ,KAAK,YAAY;AAChC,WAAK,OAAO,KAAK,KAAK,QAAQ,oCAAoC,KAAK,UAAU,UAAU,EAAE;AAAA,IAC/F;AACA,QAAI,SAAS,WAAW,KAAK,iBAAiB,EAAE,IAAI,kBAAkB;AACtE,QAAI,WAAW,UAAU,WAAW,GAAI,UAAS;AACjD,QAAI,UAAU,OAAO,WAAW,UAAU;AACxC,eAAS,OAAO,QAAQ,QAAQ,EAAE,EAAE,QAAQ,KAAK,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE;AAAA,IACzF,OAAO;AACL,eAAS;AAAA,IACX;AACA,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,UAAM,IAAI;AACV,UAAM,OAAO,CAAC;AACd,MAAE,IAAI,KAAK,2BAA2B,EAAE,KAAK,eAAa;AACxD,WAAK,KAAK,EAAE,eAAe,SAAS,CAAC;AAAA,IACvC,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,cAAc,iBAAiB;AAC7B,UAAM,IAAI;AACV,UAAM,UAAU,OAAO;AAAA,MACrB,MAAM;AAAA,MACN,OAAO,CAAC;AAAA,IACV,GAAG,eAAe;AAClB,QAAI,EAAE,OAAO,eAAe;AAC1B,aAAO,EAAE,OAAO,cAAc,KAAK,GAAG,OAAO;AAAA,IAC/C;AACA,QAAI,QAAQ,SAAS;AACnB,aAAO,+BAA+B,QAAQ,IAAI;AAAA,IACpD;AACA,WAAO,YAAK,OAAO,SAAS;AAAA,MAC1B,OAAO,mBAAmB,QAAQ,IAAI,IAAI,QAAQ,WAAW,mBAAmB,EAAE,IAAI,QAAQ,YAAY,EAAE;AAAA,IAC9G,GAAG,QAAQ,KAAK,GAAG,QAAQ,UAAU,YAAK,OAAO;AAAA,MAC/C,OAAO;AAAA,MACP,OAAO,wBAAwB,QAAQ,MAAM;AAAA,IAC/C,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,QAAQ,QAAQ,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,QAAQ,IAAI,GAAG,QAAQ,UAAU,YAAK,OAAO;AAAA,MAC9C,OAAO;AAAA,IACT,GAAG,QAAQ,MAAM,GAAG,YAAK,OAAO;AAAA,MAC9B,OAAO;AAAA,IACT,GAAG,QAAQ,cAAc,YAAK,OAAO;AAAA,MACnC,OAAO;AAAA,IACT,GAAG,QAAQ,UAAU,GAAG,QAAQ,SAAS,YAAK,OAAO;AAAA,MACnD,OAAO;AAAA,IACT,GAAG,QAAQ,KAAK,GAAG,QAAQ,YAAY,CAAC,QAAQ,SAAS,YAAK,OAAO;AAAA,MACnE,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,KAAK,QAAQ;AAAA,IACf,CAAC,CAAC,IAAI,QAAQ,QAAQ,QAAQ,aAAa,YAAK,OAAO;AAAA,MACrD,OAAO;AAAA,IACT,GAAG,QAAQ,QAAQ,IAAI,QAAQ,YAAY,YAAK,OAAO;AAAA,MACrD,OAAO;AAAA,IACT,GAAG,YAAK,OAAO,IAAI,GAAG,YAAK,OAAO,IAAI,GAAG,YAAK,OAAO,IAAI,CAAC,CAAC,GAAG,QAAQ,cAAc,YAAK,OAAO;AAAA,MAC9F,OAAO;AAAA,IACT,GAAG,QAAQ,UAAU,CAAC,GAAG,QAAQ,UAAU,YAAK,OAAO;AAAA,MACrD,OAAO;AAAA,IACT,GAAG,QAAQ,MAAM,CAAC,CAAC;AAAA,EACrB;AAAA,EACA,eAAe,kBAAkB,QAAQ;AACvC,QAAI,qBAAqB,QAAQ;AAC/B,yBAAmB,KAAK;AAAA,IAC1B;AACA,QAAI,WAAW,QAAQ;AACrB,eAAS,KAAK,OAAO,mBAAmB,YAAY;AAAA,IACtD;AACA,UAAM,IAAI;AACV,UAAM,OAAO,iBAAiB,IAAI,aAAW,EAAE,cAAc,OAAO,CAAC,EAAE,KAAK,EAAE;AAC9E,MAAE,IAAI,MAAM,EAAE,IAAI;AAAA,EACpB;AAAA,EACA,iBAAiB;AACf,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,iBAAkB,QAAO,EAAE,OAAO,iBAAiB,GAAG,SAAS;AAC5E,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,gBAAiB,QAAO,EAAE,OAAO,gBAAgB,GAAG,SAAS;AAC1E,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,gBAAiB,QAAO,EAAE,OAAO,gBAAgB,GAAG,SAAS;AAC1E,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,oBAAqB,QAAO,EAAE,OAAO,oBAAoB,GAAG,SAAS;AAClF,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB;AACpB,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,sBAAuB,QAAO,EAAE,OAAO,sBAAsB,GAAG,SAAS;AACtF,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB;AACpB,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,sBAAuB,QAAO,EAAE,OAAO,sBAAsB,GAAG,SAAS;AACtF,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB;AACpB,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,sBAAuB,QAAO,EAAE,OAAO,sBAAsB,GAAG,SAAS;AACtF,WAAO;AAAA,EACT;AAAA,EACA,uBAAuB;AACrB,UAAM,IAAI;AACV,QAAI,EAAE,OAAO,uBAAwB,QAAO,EAAE,OAAO,uBAAuB,GAAG,SAAS;AACxF,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,IAAI;AACV,MAAE,IAAI,KAAK,2BAA2B,EAAE,KAAK,CAAC,WAAW,UAAU;AACjE,YAAM,aAAa,aAAE,SAAS;AAC9B,UAAI,CAAC,EAAE,UAAU;AACf,UAAE,WAAW,EAAE,gBAAgB;AAAA,MACjC;AACA,YAAMC,WAAU,CAAC;AACjB,YAAM,UAAU,EAAE,SAAS,KAAK;AAChC,YAAM,kBAAkB,EAAE,SAAS,QAAQ,CAAC;AAC5C,YAAM,cAAc,EAAE,SAAS,QAAQ,CAAC;AACxC,UAAI,EAAE,eAAe,SAAS,iBAAiB,WAAW,GAAG;AAC3D,QAAAA,SAAQ,KAAK,eAAe;AAAA,MAC9B;AACA,UAAI,EAAE,cAAc,SAAS,iBAAiB,WAAW,GAAG;AAC1D,QAAAA,SAAQ,KAAK,cAAc;AAAA,MAC7B;AACA,UAAI,EAAE,cAAc,SAAS,iBAAiB,WAAW,GAAG;AAC1D,QAAAA,SAAQ,KAAK,cAAc;AAAA,MAC7B;AACA,UAAI,EAAE,kBAAkB,SAAS,iBAAiB,WAAW,GAAG;AAC9D,QAAAA,SAAQ,KAAK,mBAAmB;AAAA,MAClC;AACA,UAAI,EAAE,oBAAoB,SAAS,iBAAiB,WAAW,GAAG;AAChE,QAAAA,SAAQ,KAAK,qBAAqB;AAAA,MACpC;AACA,UAAI,EAAE,oBAAoB,SAAS,iBAAiB,WAAW,GAAG;AAChE,QAAAA,SAAQ,KAAK,qBAAqB;AAAA,MACpC;AACA,UAAI,EAAE,oBAAoB,SAAS,iBAAiB,WAAW,GAAG;AAChE,QAAAA,SAAQ,KAAK,qBAAqB;AAAA,MACpC;AACA,UAAI,uBAAuB,EAAE,qBAAqB,SAAS,iBAAiB,WAAW;AACvF,UAAI,wBAAwB,qBAAqB,QAAQ;AACvD,YAAI,OAAO,yBAAyB,UAAU;AAC5C,iCAAuB,qBAAqB,MAAM,GAAG;AAAA,QACvD;AACA,6BAAqB,QAAQ,iBAAe;AAC1C,UAAAA,SAAQ,KAAK,WAAW;AAAA,QAC1B,CAAC;AAAA,MACH;AACA,iBAAW,YAAY,uHAAuH;AAC9I,MAAAA,SAAQ,QAAQ,eAAa;AAC3B,mBAAW,SAAS,SAAS;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EACA,QAAQ;AACN,UAAM,IAAI;AACV,MAAE,WAAW,CAAC;AACd,MAAE,IAAI,KAAK,EAAE;AAAA,EACf;AAAA,EACA,cAAc,iBAAiB,QAAQ;AACrC,QAAI,WAAW,QAAQ;AACrB,eAAS;AAAA,IACX;AACA,UAAM,IAAI;AAEV,QAAI;AACJ,QAAI;AACJ,QAAI,OAAO,oBAAoB,UAAU;AACvC,cAAQ;AACR,YAAM,EAAE,IAAI,KAAK,2BAA2B,EAAE,GAAG,KAAK;AAAA,IACxD,WAAW,EAAE,YAAY,EAAE,SAAS,QAAQ,eAAe,KAAK,GAAG;AACjE,cAAQ,EAAE,SAAS,QAAQ,eAAe;AAC1C,YAAM,EAAE,IAAI,SAAS,EAAE,GAAG,KAAK;AAAA,IACjC,OAAO;AACL,YAAM,aAAE,eAAe;AACvB,cAAQ,IAAI,MAAM;AAAA,IACpB;AACA,QAAI,IAAI,WAAW,GAAG;AACpB,aAAO;AAAA,IACT;AACA,QAAI,OAAO;AACX,MAAE,SAAS,OAAO,OAAO,CAAC;AAC1B,QAAI,EAAE,OAAO,cAAc,OAAQ,GAAE,OAAO;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,eAAe,kBAAkB,QAAQ;AACvC,QAAI,WAAW,QAAQ;AACrB,eAAS;AAAA,IACX;AACA,UAAM,IAAI;AACV,QAAI,MAAM,QAAQ,gBAAgB,GAAG;AACnC,YAAM,sBAAsB,CAAC;AAC7B,uBAAiB,QAAQ,0BAAwB;AAC/C,4BAAoB,KAAK,EAAE,IAAI,KAAK,2BAA2B,EAAE,GAAG,oBAAoB,CAAC;AAAA,MAC3F,CAAC;AACD,0BAAoB,QAAQ,qBAAmB;AAC7C,UAAE,cAAc,iBAAiB,KAAK;AAAA,MACxC,CAAC;AAAA,IACH,OAAO;AACL,mBAAE,gBAAgB,EAAE,KAAK,qBAAmB;AAC1C,UAAE,cAAc,iBAAiB,KAAK;AAAA,MACxC,CAAC;AAAA,IACH;AACA,QAAI,EAAE,OAAO,cAAc,OAAQ,GAAE,OAAO;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,IAAI;AACV,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,aAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,WAAK,IAAI,IAAI,UAAU,IAAI;AAAA,IAC7B;AACA,QAAI,OAAO,KAAK,CAAC,MAAM,WAAW;AAChC,OAAC,cAAc,SAAS,MAAM,IAAI;AAAA,IACpC,OAAO;AACL,OAAC,cAAc,QAAQ,OAAO,IAAI;AAAA,IACpC;AACA,QAAI,OAAO,YAAY,aAAa;AAClC,gBAAU;AAAA,IACZ;AACA,QAAI,OAAO,WAAW,aAAa;AACjC,eAAS,EAAE,OAAO,mBAAmB,YAAY;AAAA,IACnD;AACA,WAAO,EAAE,YAAY,CAAC,YAAY,GAAG,SAAS,MAAM;AAAA,EACtD;AAAA,EACA,gBAAgB;AACd,UAAM,IAAI;AAEV,UAAM,qBAAqB,EAAE,cAAc;AAC3C,UAAM,eAAe,EAAE,cAAc;AACrC,UAAM,eAAe,EAAE,cAAc;AACrC,MAAE,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc;AACZ,UAAM,IAAI;AACV,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,aAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,WAAK,KAAK,IAAI,UAAU,KAAK;AAAA,IAC/B;AACA,QAAI,OAAO,KAAK,CAAC,MAAM,WAAW;AAChC,OAAC,eAAe,SAAS,MAAM,IAAI;AAAA,IACrC,OAAO;AACL,OAAC,eAAe,QAAQ,OAAO,IAAI;AAAA,IACrC;AACA,QAAI,OAAO,YAAY,aAAa;AAClC,gBAAU;AAAA,IACZ;AACA,QAAI,OAAO,WAAW,aAAa;AACjC,eAAS,EAAE,OAAO,mBAAmB,YAAY;AAAA,IACnD;AACA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,EAAE,cAAc;AAGpB,QAAI,eAAe;AACnB,UAAM,gBAAgB,EAAE,SAAS,OAAO,QAAM,GAAG,QAAQ,EAAE,CAAC;AAC5D,kBAAc,QAAQ,kBAAgB;AACpC,UAAI,eAAe;AACjB,YAAI,WAAW,UAAU;AACvB,YAAE,SAAS,OAAO,EAAE,SAAS,QAAQ,aAAa,GAAG,GAAG,YAAY;AAAA,QACtE,OAAO;AACL,YAAE,SAAS,OAAO,EAAE,SAAS,QAAQ,aAAa,IAAI,GAAG,GAAG,YAAY;AAAA,QAC1E;AAAA,MACF,OAAO;AACL,UAAE,SAAS,WAAW,WAAW,SAAS,SAAS,EAAE,YAAY;AAAA,MACnE;AACA,sBAAgB,EAAE,cAAc,YAAY;AAAA,IAC9C,CAAC;AACD,UAAM,eAAe,aAAE,YAAY;AACnC,QAAI,SAAS;AACX,UAAI,WAAW,YAAY,CAAC,EAAE,OAAO,kBAAkB;AACrD,qBAAa,SAAS,4BAA4B;AAAA,MACpD;AACA,UAAI,WAAW,aAAa,EAAE,OAAO,kBAAkB;AACrD,qBAAa,SAAS,yBAAyB;AAAA,MACjD;AAAA,IACF;AACA,QAAI,eAAe;AACjB,UAAI,WAAW,UAAU;AACvB,qBAAa,aAAa,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAAA,MACzD,OAAO;AACL,qBAAa,YAAY,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAAA,MACxD;AAAA,IACF,OAAO;AACL,QAAE,IAAI,MAAM,EAAE,YAAY;AAAA,IAC5B;AAGA,QAAI,EAAE,OAAO,WAAY,GAAE,OAAO;AAClC,QAAI,WAAW,aAAa,CAAC,eAAe;AAC1C,QAAE,cAAc,YAAY,gBAAgB,EAAE,cAAc,eAAe;AAAA,IAC7E;AACA,QAAI,EAAE,OAAO,mBAAmB,WAAW,YAAY,CAAC,EAAE,OAAO,oBAAoB,WAAW,aAAa,EAAE,OAAO,oBAAoB,CAAC,gBAAgB;AACzJ,QAAE,oBAAoB,OAAO;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EACA,WAAW,SAAS;AAClB,QAAI,YAAY,QAAQ;AACtB,gBAAU,CAAC;AAAA,IACb;AACA,UAAM,IAAI;AACV,UAAM,gBAAgB,EAAE,SAAS,OAAO,QAAM,GAAG,QAAQ,EAAE,CAAC;AAC5D,QAAI,eAAe;AACjB,QAAE,cAAc,EAAE,SAAS,QAAQ,aAAa,CAAC;AAAA,IACnD;AACA,MAAE,WAAW,OAAO;AAAA,MAClB,MAAM;AAAA,MACN,UAAU;AAAA,IACZ,GAAG,OAAO,CAAC;AACX,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,IAAI;AACV,QAAI;AACJ,QAAI;AACJ,MAAE,SAAS,QAAQ,CAAC,SAAS,UAAU;AACrC,UAAI,QAAQ,SAAU,sBAAqB;AAAA,IAC7C,CAAC;AACD,QAAI,OAAO,uBAAuB,aAAa;AAC7C,UAAI,EAAE,IAAI,KAAK,UAAU,EAAE,GAAG,kBAAkB,EAAE,SAAS,gBAAgB,GAAG;AAC5E,sBAAc;AACd,UAAE,cAAc,kBAAkB;AAAA,MACpC;AAAA,IACF;AACA,QAAI,CAAC,aAAa;AAChB,YAAM,mBAAmB,EAAE,IAAI,KAAK,iBAAiB;AACrD,UAAI,iBAAiB,QAAQ;AAC3B,UAAE,cAAc,gBAAgB;AAAA,MAClC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB,SAAS;AAC3B,UAAM,IAAI;AACV,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,EAAE;AACN,QAAI,EAAE,OAAO,sBAAsB;AACjC,UAAI,SAAS;AACb,UAAI,EAAE,OAAO,oBAAoB,iBAAiB,GAAG;AACnD,iBAAS;AAAA,MACX;AACA,UAAI,CAAC,EAAE,OAAO,oBAAoB,gBAAgB,qBAAqB,iBAAiB,KAAK;AAC3F,iBAAS;AAAA,MACX;AACA,UAAI,OAAQ,GAAE,OAAO,UAAU,SAAY,CAAC;AAAA,IAC9C,OAAO;AACL,QAAE,OAAO,UAAU,SAAY,CAAC;AAAA,IAClC;AAAA,EACF;AAAA,EACA,OAAO,UAAU,WAAW;AAC1B,QAAI,aAAa,QAAQ;AACvB,iBAAW;AAAA,IACb;AACA,UAAM,IAAI;AACV,UAAM,gBAAgB,EAAE,cAAc;AACtC,QAAI;AACJ,QAAI,OAAO,cAAc,YAAa,gBAAe;AAAA,SAAe;AAClE,qBAAe,EAAE,OAAO,mBAAmB,IAAI,EAAE,cAAc,eAAe,EAAE,cAAc;AAC9F,UAAI,iBAAiB,cAAe,QAAO;AAAA,IAC7C;AACA,MAAE,eAAe,UAAU,cAAc,QAAQ;AACjD,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,IAAI;AACV,QAAI,CAAC,EAAE,YAAY,EAAE,SAAS,WAAW,GAAG;AAC1C,QAAE,WAAW,EAAE,gBAAgB;AAAA,IACjC;AACA,QAAI,EAAE,OAAO,YAAY,EAAE,OAAO,SAAS,QAAQ;AACjD,QAAE,eAAe;AAAA,IACnB;AACA,QAAI,EAAE,OAAO,WAAY,GAAE,OAAO;AAClC,QAAI,EAAE,OAAO,eAAgB,GAAE,OAAO,CAAC;AAAA,EACzC;AAAA,EACA,UAAU;AACR,UAAM,IAAI;AACV,MAAE,KAAK,8CAA8C,CAAC;AACtD,MAAE,IAAI,QAAQ,wBAAwB;AACtC,QAAI,EAAE,IAAI,CAAC,GAAG;AACZ,QAAE,IAAI,CAAC,EAAE,aAAa;AACtB,aAAO,EAAE,IAAI,CAAC,EAAE;AAAA,IAClB;AACA,gBAAY,CAAC;AAAA,EACf;AACF;AACA,IAAO,yBAAQ;;;ACnef,IAAO,mBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,WAAW,mBAAmB;AAAA,MAChC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,MACT,YAAY,yFAAyF,MAAM,GAAG;AAAA,IAChH,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,gBAAgB,OAAO;AACrB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAc;AACjD,YAAI,SAAS,QAAQ,UAAU;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAc;AACjD,YAAI,SAAS,OAAO;AAAA,UAClB,IAAI;AAAA,QACN,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,gBAAgB,EAAE,KAAK,gBAAc;AACjD,YAAI,SAAS,QAAQ,UAAU;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,gBAAgB,EAAE,KAAK,gBAAc;AACjD,YAAI,SAAS,OAAO;AAAA,UAClB,IAAI;AAAA,QACN,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,iBAAiB;AAAA,MACf,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,aAAa,MAAM;AACzB,YAAI,SAAS,OAAO;AAAA,UAClB,IAAI;AAAA,QACN,CAAC;AAAA,MACH;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,MAAM;AACZ,cAAM,aAAa,MAAM;AACzB,YAAI,SAAS,QAAQ,UAAU;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AACF;;;AC7DA,IAAM,aAAN,cAAyB,cAAgB;AAAA,EACvC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,aAAa;AACnB,UAAMC,YAAW;AAAA,MACf,KAAK;AAAA,MACL,WAAW;AAAA,MACX,cAAc;AAAA,MACd,aAAa,CAAC;AAAA,MACd,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAGA,eAAW,iBAAiBA,SAAQ;AACpC,eAAW,SAAS,OAAOA,WAAU,MAAM;AAG3C,UAAM,MAAM,aAAE,WAAW,OAAO,EAAE;AAClC,QAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,QAAI,IAAI,CAAC,EAAE,aAAc,QAAO,IAAI,CAAC,EAAE;AACvC,QAAI,CAAC,EAAE,eAAe;AAGtB,UAAM,UAAU,IAAI,QAAQ,OAAO,EAAE,GAAG,CAAC;AACzC,UAAM,iBAAiB,QAAQ,KAAK,eAAe,EAAE,GAAG,CAAC;AAGzD,UAAM,UAAU,IAAI,KAAK,kBAAkB;AAG3C,QAAI;AACJ,QAAI,WAAW,OAAO,YAAY;AAChC,oBAAc,aAAE,WAAW,OAAO,UAAU;AAAA,IAC9C,OAAO;AACL,oBAAc,IAAI,KAAK,UAAU;AAAA,IACnC;AAGA,UAAM,iBAAiB,IAAI,KAAK,yBAAyB;AACzD,UAAM,WAAW,IAAI,KAAK,mBAAmB;AAC7C,QAAI,WAAW,OAAO,KAAK;AACzB,UAAI,SAAS,gBAAgB;AAAA,IAC/B;AACA,WAAO,YAAY;AAAA,MACjB;AAAA,MACA,IAAI,IAAI,CAAC;AAAA,MACT;AAAA,MACA,QAAQ,QAAQ,CAAC;AAAA,MACjB;AAAA,MACA,YAAY,YAAY,CAAC;AAAA,MACzB;AAAA,MACA,eAAe,eAAe,CAAC;AAAA,MAC/B,oBAAoB,eAAe,SAAS,gCAAgC;AAAA,MAC5E;AAAA,MACA,SAAS,SAAS,CAAC;AAAA,MACnB,cAAc,SAAS,SAAS,0BAA0B;AAAA,MAC1D;AAAA,MACA,QAAQ,QAAQ,CAAC;AAAA,MACjB;AAAA,MACA,eAAe;AAAA,MACf,KAAK,IAAI,SAAS,gBAAgB,KAAK,WAAW,OAAO;AAAA,MACzD,aAAa,CAAC;AAAA,IAChB,CAAC;AAGD,aAAS,cAAc;AACrB,UAAI,WAAW,OAAO,YAAY;AAChC,mBAAW,WAAW;AAAA,MACxB;AAAA,IACF;AACA,aAAS,SAAS,GAAG;AACnB,QAAE,eAAe;AAAA,IACnB;AACA,aAAS,kBAAkB,GAAG;AAC5B,YAAM,QAAQ,aAAE,IAAI,EAAE,MAAM;AAC5B,UAAI,aAAE,EAAE,MAAM,EAAE,QAAQ,+BAA+B,EAAE,QAAQ;AAC/D,qBAAE,IAAI,EAAE,QAAQ,+BAA+B,KAAK;AACpD,mBAAW,KAAK,sDAAsD,YAAY,MAAM,KAAK;AAAA,MAC/F,OAAO;AACL,qBAAE,IAAI,EAAE,QAAQ,8BAA8B,KAAK;AACnD,mBAAW,KAAK,oDAAoD,YAAY,MAAM,KAAK;AAAA,MAC7F;AAAA,IACF;AACA,aAAS,mBAAmB;AAC1B,iBAAW,gBAAgB;AAC3B,iBAAW,IAAI,QAAQ,mBAAmB;AAC1C,iBAAW,KAAK,kCAAkC,UAAU;AAAA,IAC9D;AACA,aAAS,kBAAkB;AACzB,iBAAW,UAAU;AACrB,iBAAW,IAAI,SAAS,oBAAoB;AAC5C,iBAAW,IAAI,QAAQ,kBAAkB;AACzC,iBAAW,KAAK,gCAAgC,UAAU;AAAA,IAC5D;AACA,aAAS,iBAAiB;AACxB,iBAAW,IAAI,YAAY,oBAAoB;AAC/C,iBAAW,IAAI,QAAQ,iBAAiB;AACxC,iBAAW,KAAK,8BAA8B,UAAU;AAAA,IAC1D;AACA,eAAW,eAAe,SAASC,gBAAe;AAChD,UAAI,GAAG,mBAAmB,WAAW;AACrC,UAAI,GAAG,UAAU,QAAQ;AACzB,UAAI,GAAG,SAAS,0BAA0B,iBAAiB;AAC3D,kBAAY,GAAG,gBAAgB,gBAAgB;AAC/C,kBAAY,GAAG,SAAS,eAAe;AACvC,kBAAY,GAAG,QAAQ,cAAc;AACrC,UAAI,GAAG,UAAU,WAAW;AAAA,IAC9B;AACA,eAAW,eAAe,SAASC,gBAAe;AAChD,UAAI,IAAI,mBAAmB,WAAW;AACtC,UAAI,IAAI,UAAU,QAAQ;AAC1B,UAAI,IAAI,SAAS,0BAA0B,iBAAiB;AAC5D,kBAAY,IAAI,gBAAgB,gBAAgB;AAChD,kBAAY,IAAI,SAAS,eAAe;AACxC,kBAAY,IAAI,QAAQ,cAAc;AACtC,UAAI,IAAI,UAAU,WAAW;AAAA,IAC/B;AAGA,eAAW,WAAW;AAGtB,eAAW,KAAK;AAChB,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,UAAM,aAAa;AACnB,eAAW,YAAY,MAAM;AAC7B,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,aAAa;AACnB,eAAW,YAAY,KAAK;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,UAAM,aAAa;AACnB,eAAW,YAAY,IAAI,EAAE,EAAE,QAAQ,QAAQ;AAC/C,WAAO;AAAA,EACT;AAAA,EACA,WAAW;AACT,UAAM,aAAa;AACnB,WAAO,WAAW,YAAY,IAAI,EAAE,KAAK;AAAA,EAC3C;AAAA,EACA,SAAS,OAAO;AACd,UAAM,aAAa;AACnB,eAAW,YAAY,IAAI,KAAK,EAAE,QAAQ,QAAQ;AAClD,WAAO;AAAA,EACT;AAAA,EACA,eAAe,aAAa;AAC1B,UAAM,aAAa;AACnB,eAAW,YAAY,KAAK,eAAe,WAAW;AACtD,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,aAAa;AACnB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,WAAW,IAAI,CAAC,EAAE;AACxB,QAAI,YAAY,OAAO;AACvB,QAAI,KAAK;AAAA,IAeT,OAAO;AACL,YAAM,uBAAuB,SAAS,eAAe,IAAI,gBAAgB,GAAG,EAAE;AAC9E,YAAM,wBAAwB,WAAW,OAAO;AAChD,UAAI,0BAA0B,wBAAwB,eAAe,QAAQ;AAC3E,cAAM,oBAAoB,SAAS,eAAe,IAAI,aAAa,GAAG,EAAE;AACxE,cAAM,mBAAmB,eAAe,CAAC,EAAE;AAC3C,cAAM,mBAAmB,eAAe,CAAC,EAAE;AAC3C,cAAM,gBAAgB,eAAe,CAAC,EAAE;AACxC,cAAM,iBAAiB,kBAAkB,mBAAmB;AAC5D,YAAI,CAAC,WAAW;AACd,sBAAY,QAAQ,CAAC,EAAE,eAAe,oBAAoB,SAAS,YAAY,IAAI,eAAe,YAAY,IAAI,SAAS,QAAQ,IAAI,YAAY,GAAG,EAAE,IAAI,SAAS,QAAQ,IAAI,eAAe,GAAG,EAAE;AAAA,QACvM;AACA,oBAAY,IAAI,cAAc,GAAG,SAAS,IAAI;AAC9C,uBAAe,IAAI,kBAAkB,GAAG,qBAAqB,IAAI;AACjE,YAAI,gBAAgB;AAClB,yBAAe,UAAU,eAAe,CAAC,EAAE,eAAe,gBAAgB;AAAA,QAC5E;AACA,YAAI,QAAQ,uBAAuB;AACnC,mBAAW,KAAK,0CAA0C,UAAU;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAChB,UAAM,aAAa;AACnB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,QAAQ,YAAY,IAAI,EAAE,KAAK;AACrC,QAAI,SAAS,MAAM,QAAQ;AACzB,UAAI,SAAS,uBAAuB;AAAA,IACtC,OAAO;AACL,UAAI,YAAY,uBAAuB;AAAA,IACzC;AAAA,EACF;AAAA,EACA,kBAAkB,WAAW;AAC3B,QAAI,cAAc,QAAQ;AACxB,kBAAY;AAAA,IACd;AACA,UAAM,aAAa;AACnB,UAAM,iBAAiB,aAAE,uCAAuC,SAAS,QAAQ;AACjF,mBAAe,aAAa,WAAW,WAAW;AAClD,WAAO,YAAY;AAAA,MACjB;AAAA,MACA,eAAe,eAAe,CAAC;AAAA,IACjC,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB,WAAW;AACzB,QAAI,cAAc,QAAQ;AACxB,kBAAY;AAAA,IACd;AACA,UAAM,aAAa;AACnB,eAAW,iBAAiB,WAAW,IAAI,KAAK,yBAAyB;AACzE,QAAI,WAAW,eAAe,WAAW,GAAG;AAC1C,iBAAW,kBAAkB,SAAS;AAAA,IACxC;AACA,eAAW,IAAI,SAAS,gCAAgC;AACxD,eAAW,qBAAqB;AAChC,QAAI,WAAW,OAAO,YAAY;AAChC,iBAAW,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,UAAM,aAAa;AACnB,eAAW,IAAI,YAAY,gCAAgC;AAC3D,eAAW,qBAAqB;AAChC,QAAI,WAAW,OAAO,YAAY;AAChC,iBAAW,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,UAAM,aAAa;AACnB,QAAI,WAAW,oBAAoB;AACjC,iBAAW,gBAAgB;AAAA,IAC7B,OAAO;AACL,iBAAW,gBAAgB;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB,YAAY;AAC3B,UAAM,aAAa;AACnB,QAAI,WAAW,OAAO,kBAAkB;AACtC,aAAO,WAAW,OAAO,iBAAiB,KAAK,YAAY,UAAU;AAAA,IACvE;AACA,WAAO;AAAA;AAAA,oBAES,UAAU;AAAA;AAAA;AAAA;AAAA,EAI5B;AAAA,EACA,oBAAoB;AAClB,UAAM,aAAa;AACnB,QAAI;AACJ,QAAI,WAAW,OAAO,mBAAmB;AACvC,aAAO,WAAW,OAAO,kBAAkB,KAAK,YAAY,WAAW,WAAW;AAAA,IACpF,OAAO;AACL,aAAO,GAAG,WAAW,YAAY,IAAI,gBAAc,WAAW,iBAAiB,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA,IACtG;AACA,QAAI,WAAW,eAAe,WAAW,GAAG;AAC1C,iBAAW,kBAAkB,IAAI;AAAA,IACnC,OAAO;AACL,iBAAW,eAAe,KAAK,IAAI;AAAA,IACrC;AAAA,EACF;AAAA,EACA,YAAY,WAAW;AACrB,QAAI,cAAc,QAAQ;AACxB,kBAAY;AAAA,IACd;AACA,UAAM,aAAa;AACnB,UAAM,WAAW,aAAE,iCAAiC,SAAS,QAAQ;AACrE,eAAW,IAAI,OAAO,QAAQ;AAC9B,WAAO,YAAY;AAAA,MACjB;AAAA,MACA,SAAS,SAAS,CAAC;AAAA,IACrB,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,UAAU,WAAW;AACnB,QAAI,cAAc,QAAQ;AACxB,kBAAY;AAAA,IACd;AACA,UAAM,aAAa;AACnB,eAAW,WAAW,WAAW,IAAI,KAAK,mBAAmB;AAC7D,QAAI,WAAW,SAAS,WAAW,GAAG;AACpC,iBAAW,YAAY,SAAS;AAAA,IAClC;AACA,eAAW,IAAI,SAAS,0BAA0B;AAClD,eAAW,eAAe;AAC1B,QAAI,WAAW,OAAO,YAAY;AAChC,iBAAW,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,aAAa;AACnB,eAAW,IAAI,YAAY,0BAA0B;AACrD,eAAW,eAAe;AAC1B,QAAI,WAAW,OAAO,YAAY;AAChC,iBAAW,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,aAAa;AACnB,QAAI,WAAW,cAAc;AAC3B,iBAAW,UAAU;AAAA,IACvB,OAAO;AACL,iBAAW,UAAU;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,aAAa;AACnB,eAAW,aAAa;AACxB,eAAW,gBAAgB;AAC3B,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AACR,UAAM,aAAa;AACnB,eAAW,KAAK,gDAAgD,UAAU;AAC1E,eAAW,IAAI,QAAQ,0BAA0B;AACjD,eAAW,aAAa;AACxB,QAAI,WAAW,IAAI,CAAC,GAAG;AACrB,iBAAW,IAAI,CAAC,EAAE,eAAe;AACjC,aAAO,WAAW,IAAI,CAAC,EAAE;AAAA,IAC3B;AACA,gBAAY,UAAU;AAAA,EACxB;AACF;AACA,IAAO,2BAAQ;;;AC1Wf,IAAO,qBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,aAAa,mBAAmB;AAAA,MAClC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,MACT,YAAY,iMAAiM,MAAM,GAAG;AAAA,IACxN,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,gBAAgB,OAAO;AACrB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAgB;AACrD,YAAI,WAAW,QAAQ,YAAY;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAgB;AACrD,YAAI,WAAW,OAAO,OAAO;AAAA,UAC3B,IAAI;AAAA,QACN,GAAG,aAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,kBAAkB,EAAE,KAAK,kBAAgB;AACrD,YAAI,WAAW,QAAQ,YAAY;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,kBAAkB,EAAE,KAAK,kBAAgB;AACrD,YAAI,WAAW,OAAO,OAAO;AAAA,UAC3B,IAAI;AAAA,QACN,GAAG,aAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,mBAAmB;AAAA,MACjB,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,eAAe,MAAM;AAC3B,YAAI,WAAW,OAAO,OAAO;AAAA,UAC3B,IAAI;AAAA,QACN,GAAG,aAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC/B;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,MAAM;AACZ,cAAM,eAAe,MAAM;AAC3B,YAAI,WAAW,QAAQ,YAAY;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AACF;;;ACrDA,SAAS,SAAS,KAAK;AACrB,SAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,iBAAiB,OAAO,IAAI,gBAAgB;AAChG;AACA,SAASC,QAAO,QAAQ,KAAK;AAC3B,MAAI,WAAW,QAAQ;AACrB,aAAS,CAAC;AAAA,EACZ;AACA,MAAI,QAAQ,QAAQ;AAClB,UAAM,CAAC;AAAA,EACT;AACA,SAAO,KAAK,GAAG,EAAE,QAAQ,SAAO;AAC9B,QAAI,OAAO,OAAO,GAAG,MAAM,YAAa,QAAO,GAAG,IAAI,IAAI,GAAG;AAAA,aAAW,SAAS,IAAI,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,CAAC,KAAK,OAAO,KAAK,IAAI,GAAG,CAAC,EAAE,SAAS,GAAG;AACvJ,MAAAA,QAAO,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC;AAAA,IAC9B;AAAA,EACF,CAAC;AACH;AACA,IAAM,cAAc;AAAA,EAClB,MAAM,CAAC;AAAA,EACP,mBAAmB;AAAA,EAAC;AAAA,EACpB,sBAAsB;AAAA,EAAC;AAAA,EACvB,eAAe;AAAA,IACb,OAAO;AAAA,IAAC;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,gBAAgB;AACd,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,WAAO,CAAC;AAAA,EACV;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,WAAO;AAAA,MACL,YAAY;AAAA,MAAC;AAAA,IACf;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,YAAY,CAAC;AAAA,MACb,OAAO,CAAC;AAAA,MACR,eAAe;AAAA,MAAC;AAAA,MAChB,uBAAuB;AACrB,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAChB,WAAO,CAAC;AAAA,EACV;AAAA,EACA,aAAa;AACX,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AACA,SAASC,eAAc;AACrB,QAAM,MAAM,OAAO,aAAa,cAAc,WAAW,CAAC;AAC1D,EAAAD,QAAO,KAAK,WAAW;AACvB,SAAO;AACT;AACA,IAAM,YAAY;AAAA,EAChB,UAAU;AAAA,EACV,WAAW;AAAA,IACT,WAAW;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,eAAe;AAAA,IAAC;AAAA,IAChB,YAAY;AAAA,IAAC;AAAA,IACb,KAAK;AAAA,IAAC;AAAA,IACN,OAAO;AAAA,IAAC;AAAA,EACV;AAAA,EACA,aAAa,SAASE,eAAc;AAClC,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AAAA,EAAC;AAAA,EACpB,sBAAsB;AAAA,EAAC;AAAA,EACvB,mBAAmB;AACjB,WAAO;AAAA,MACL,mBAAmB;AACjB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,EAAC;AAAA,EACT,OAAO;AAAA,EAAC;AAAA,EACR,QAAQ,CAAC;AAAA,EACT,aAAa;AAAA,EAAC;AAAA,EACd,eAAe;AAAA,EAAC;AAAA,EAChB,aAAa;AACX,WAAO,CAAC;AAAA,EACV;AAAA,EACA,sBAAsB,UAAU;AAC9B,QAAI,OAAO,eAAe,aAAa;AACrC,eAAS;AACT,aAAO;AAAA,IACT;AACA,WAAO,WAAW,UAAU,CAAC;AAAA,EAC/B;AAAA,EACA,qBAAqBC,KAAI;AACvB,QAAI,OAAO,eAAe,aAAa;AACrC;AAAA,IACF;AACA,iBAAaA,GAAE;AAAA,EACjB;AACF;AACA,SAASC,aAAY;AACnB,QAAM,MAAM,OAAO,WAAW,cAAc,SAAS,CAAC;AACtD,EAAAJ,QAAO,KAAK,SAAS;AACrB,SAAO;AACT;;;AC5IA,SAASK,aAAY,KAAK;AACxB,QAAM,SAAS;AACf,SAAO,KAAK,MAAM,EAAE,QAAQ,SAAO;AACjC,QAAI;AACF,aAAO,GAAG,IAAI;AAAA,IAChB,SAAS,GAAG;AAAA,IAEZ;AACA,QAAI;AACF,aAAO,OAAO,GAAG;AAAA,IACnB,SAAS,GAAG;AAAA,IAEZ;AAAA,EACF,CAAC;AACH;AACA,SAASC,UAAS,UAAU,OAAO;AACjC,MAAI,UAAU,QAAQ;AACpB,YAAQ;AAAA,EACV;AACA,SAAO,WAAW,UAAU,KAAK;AACnC;AACA,SAASC,OAAM;AACb,SAAO,KAAK,IAAI;AAClB;AACA,SAASC,kBAAiB,IAAI;AAC5B,QAAMC,UAASC,WAAU;AACzB,MAAI;AACJ,MAAID,QAAO,kBAAkB;AAC3B,YAAQA,QAAO,iBAAiB,IAAI,IAAI;AAAA,EAC1C;AACA,MAAI,CAAC,SAAS,GAAG,cAAc;AAC7B,YAAQ,GAAG;AAAA,EACb;AACA,MAAI,CAAC,OAAO;AACV,YAAQ,GAAG;AAAA,EACb;AACA,SAAO;AACT;AACA,SAASE,cAAa,IAAI,MAAM;AAC9B,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACA,QAAMF,UAASC,WAAU;AACzB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM,WAAWF,kBAAiB,EAAE;AACpC,MAAIC,QAAO,iBAAiB;AAC1B,mBAAe,SAAS,aAAa,SAAS;AAC9C,QAAI,aAAa,MAAM,GAAG,EAAE,SAAS,GAAG;AACtC,qBAAe,aAAa,MAAM,IAAI,EAAE,IAAI,OAAK,EAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,IACjF;AAGA,sBAAkB,IAAIA,QAAO,gBAAgB,iBAAiB,SAAS,KAAK,YAAY;AAAA,EAC1F,OAAO;AACL,sBAAkB,SAAS,gBAAgB,SAAS,cAAc,SAAS,eAAe,SAAS,eAAe,SAAS,aAAa,SAAS,iBAAiB,WAAW,EAAE,QAAQ,cAAc,oBAAoB;AACzN,aAAS,gBAAgB,SAAS,EAAE,MAAM,GAAG;AAAA,EAC/C;AACA,MAAI,SAAS,KAAK;AAEhB,QAAIA,QAAO,gBAAiB,gBAAe,gBAAgB;AAAA,aAElD,OAAO,WAAW,GAAI,gBAAe,WAAW,OAAO,EAAE,CAAC;AAAA,QAE9D,gBAAe,WAAW,OAAO,CAAC,CAAC;AAAA,EAC1C;AACA,MAAI,SAAS,KAAK;AAEhB,QAAIA,QAAO,gBAAiB,gBAAe,gBAAgB;AAAA,aAElD,OAAO,WAAW,GAAI,gBAAe,WAAW,OAAO,EAAE,CAAC;AAAA,QAE9D,gBAAe,WAAW,OAAO,CAAC,CAAC;AAAA,EAC1C;AACA,SAAO,gBAAgB;AACzB;AACA,SAASG,UAAS,GAAG;AACnB,SAAO,OAAO,MAAM,YAAY,MAAM,QAAQ,EAAE,eAAe,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM;AACpH;AACA,SAAS,OAAO,MAAM;AAEpB,MAAI,OAAO,WAAW,eAAe,OAAO,OAAO,gBAAgB,aAAa;AAC9E,WAAO,gBAAgB;AAAA,EACzB;AACA,SAAO,SAAS,KAAK,aAAa,KAAK,KAAK,aAAa;AAC3D;AACA,SAASC,UAAS;AAChB,QAAM,KAAK,OAAO,UAAU,UAAU,IAAI,SAAY,UAAU,CAAC,CAAC;AAClE,QAAM,WAAW,CAAC,aAAa,eAAe,WAAW;AACzD,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GAAG;AAC5C,UAAM,aAAa,IAAI,KAAK,UAAU,UAAU,IAAI,SAAY,UAAU,CAAC;AAC3E,QAAI,eAAe,UAAa,eAAe,QAAQ,CAAC,OAAO,UAAU,GAAG;AAC1E,YAAM,YAAY,OAAO,KAAK,OAAO,UAAU,CAAC,EAAE,OAAO,SAAO,SAAS,QAAQ,GAAG,IAAI,CAAC;AACzF,eAAS,YAAY,GAAG,MAAM,UAAU,QAAQ,YAAY,KAAK,aAAa,GAAG;AAC/E,cAAM,UAAU,UAAU,SAAS;AACnC,cAAM,OAAO,OAAO,yBAAyB,YAAY,OAAO;AAChE,YAAI,SAAS,UAAa,KAAK,YAAY;AACzC,cAAID,UAAS,GAAG,OAAO,CAAC,KAAKA,UAAS,WAAW,OAAO,CAAC,GAAG;AAC1D,gBAAI,WAAW,OAAO,EAAE,YAAY;AAClC,iBAAG,OAAO,IAAI,WAAW,OAAO;AAAA,YAClC,OAAO;AACL,cAAAC,QAAO,GAAG,OAAO,GAAG,WAAW,OAAO,CAAC;AAAA,YACzC;AAAA,UACF,WAAW,CAACD,UAAS,GAAG,OAAO,CAAC,KAAKA,UAAS,WAAW,OAAO,CAAC,GAAG;AAClE,eAAG,OAAO,IAAI,CAAC;AACf,gBAAI,WAAW,OAAO,EAAE,YAAY;AAClC,iBAAG,OAAO,IAAI,WAAW,OAAO;AAAA,YAClC,OAAO;AACL,cAAAC,QAAO,GAAG,OAAO,GAAG,WAAW,OAAO,CAAC;AAAA,YACzC;AAAA,UACF,OAAO;AACL,eAAG,OAAO,IAAI,WAAW,OAAO;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,eAAe,IAAI,SAAS,UAAU;AAC7C,KAAG,MAAM,YAAY,SAAS,QAAQ;AACxC;AACA,SAAS,qBAAqB,MAAM;AAClC,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMJ,UAASC,WAAU;AACzB,QAAM,gBAAgB,CAAC,OAAO;AAC9B,MAAI,YAAY;AAChB,MAAI;AACJ,QAAM,WAAW,OAAO,OAAO;AAC/B,SAAO,UAAU,MAAM,iBAAiB;AACxC,EAAAD,QAAO,qBAAqB,OAAO,cAAc;AACjD,QAAM,MAAM,iBAAiB,gBAAgB,SAAS;AACtD,QAAM,eAAe,CAAC,SAAS,WAAW;AACxC,WAAO,QAAQ,UAAU,WAAW,UAAU,QAAQ,UAAU,WAAW;AAAA,EAC7E;AACA,QAAM,UAAU,MAAM;AACpB,YAAO,oBAAI,KAAK,GAAE,QAAQ;AAC1B,QAAI,cAAc,MAAM;AACtB,kBAAY;AAAA,IACd;AACA,UAAM,WAAW,KAAK,IAAI,KAAK,KAAK,OAAO,aAAa,UAAU,CAAC,GAAG,CAAC;AACvE,UAAM,eAAe,MAAM,KAAK,IAAI,WAAW,KAAK,EAAE,IAAI;AAC1D,QAAI,kBAAkB,gBAAgB,gBAAgB,iBAAiB;AACvE,QAAI,aAAa,iBAAiB,cAAc,GAAG;AACjD,wBAAkB;AAAA,IACpB;AACA,WAAO,UAAU,SAAS;AAAA,MACxB,CAAC,IAAI,GAAG;AAAA,IACV,CAAC;AACD,QAAI,aAAa,iBAAiB,cAAc,GAAG;AACjD,aAAO,UAAU,MAAM,WAAW;AAClC,aAAO,UAAU,MAAM,iBAAiB;AACxC,iBAAW,MAAM;AACf,eAAO,UAAU,MAAM,WAAW;AAClC,eAAO,UAAU,SAAS;AAAA,UACxB,CAAC,IAAI,GAAG;AAAA,QACV,CAAC;AAAA,MACH,CAAC;AACD,MAAAA,QAAO,qBAAqB,OAAO,cAAc;AACjD;AAAA,IACF;AACA,WAAO,iBAAiBA,QAAO,sBAAsB,OAAO;AAAA,EAC9D;AACA,UAAQ;AACV;AACA,SAAS,oBAAoB,SAAS;AACpC,SAAO,QAAQ,cAAc,yBAAyB,KAAK,QAAQ,cAAc,QAAQ,WAAW,cAAc,yBAAyB,KAAK;AAClJ;AACA,SAAS,gBAAgB,SAAS,UAAU;AAC1C,MAAI,aAAa,QAAQ;AACvB,eAAW;AAAA,EACb;AACA,SAAO,CAAC,GAAG,QAAQ,QAAQ,EAAE,OAAO,QAAM,GAAG,QAAQ,QAAQ,CAAC;AAChE;AACA,SAAS,cAAc,KAAKK,UAAS;AACnC,MAAIA,aAAY,QAAQ;AACtB,IAAAA,WAAU,CAAC;AAAA,EACb;AACA,QAAM,KAAK,SAAS,cAAc,GAAG;AACrC,KAAG,UAAU,IAAI,GAAI,MAAM,QAAQA,QAAO,IAAIA,WAAU,CAACA,QAAO,CAAE;AAClE,SAAO;AACT;AACA,SAAS,cAAc,IAAI;AACzB,QAAML,UAASC,WAAU;AACzB,QAAMK,YAAWC,aAAY;AAC7B,QAAM,MAAM,GAAG,sBAAsB;AACrC,QAAM,OAAOD,UAAS;AACtB,QAAM,YAAY,GAAG,aAAa,KAAK,aAAa;AACpD,QAAM,aAAa,GAAG,cAAc,KAAK,cAAc;AACvD,QAAM,YAAY,OAAON,UAASA,QAAO,UAAU,GAAG;AACtD,QAAM,aAAa,OAAOA,UAASA,QAAO,UAAU,GAAG;AACvD,SAAO;AAAA,IACL,KAAK,IAAI,MAAM,YAAY;AAAA,IAC3B,MAAM,IAAI,OAAO,aAAa;AAAA,EAChC;AACF;AACA,SAAS,eAAe,IAAI,UAAU;AACpC,QAAM,UAAU,CAAC;AACjB,SAAO,GAAG,wBAAwB;AAChC,UAAM,OAAO,GAAG;AAChB,QAAI,UAAU;AACZ,UAAI,KAAK,QAAQ,QAAQ,EAAG,SAAQ,KAAK,IAAI;AAAA,IAC/C,MAAO,SAAQ,KAAK,IAAI;AACxB,SAAK;AAAA,EACP;AACA,SAAO;AACT;AACA,SAAS,eAAe,IAAI,UAAU;AACpC,QAAM,UAAU,CAAC;AACjB,SAAO,GAAG,oBAAoB;AAC5B,UAAM,OAAO,GAAG;AAChB,QAAI,UAAU;AACZ,UAAI,KAAK,QAAQ,QAAQ,EAAG,SAAQ,KAAK,IAAI;AAAA,IAC/C,MAAO,SAAQ,KAAK,IAAI;AACxB,SAAK;AAAA,EACP;AACA,SAAO;AACT;AACA,SAAS,aAAa,IAAI,MAAM;AAC9B,QAAMA,UAASC,WAAU;AACzB,SAAOD,QAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,IAAI;AAChE;AACA,SAAS,aAAa,IAAI;AACxB,MAAI,QAAQ;AACZ,MAAI;AACJ,MAAI,OAAO;AACT,QAAI;AAEJ,YAAQ,QAAQ,MAAM,qBAAqB,MAAM;AAC/C,UAAI,MAAM,aAAa,EAAG,MAAK;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,eAAe,IAAI,UAAU;AACpC,QAAM,UAAU,CAAC;AACjB,MAAI,SAAS,GAAG;AAChB,SAAO,QAAQ;AACb,QAAI,UAAU;AACZ,UAAI,OAAO,QAAQ,QAAQ,EAAG,SAAQ,KAAK,MAAM;AAAA,IACnD,OAAO;AACL,cAAQ,KAAK,MAAM;AAAA,IACrB;AACA,aAAS,OAAO;AAAA,EAClB;AACA,SAAO;AACT;AACA,SAAS,qBAAqB,IAAI,UAAU;AAC1C,WAAS,aAAa,GAAG;AACvB,QAAI,EAAE,WAAW,GAAI;AACrB,aAAS,KAAK,IAAI,CAAC;AACnB,OAAG,oBAAoB,iBAAiB,YAAY;AAAA,EACtD;AACA,MAAI,UAAU;AACZ,OAAG,iBAAiB,iBAAiB,YAAY;AAAA,EACnD;AACF;AACA,SAAS,iBAAiB,IAAI,MAAM,gBAAgB;AAClD,QAAMA,UAASC,WAAU;AACzB,MAAI,gBAAgB;AAClB,WAAO,GAAG,SAAS,UAAU,gBAAgB,cAAc,IAAI,WAAWD,QAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,SAAS,UAAU,iBAAiB,YAAY,CAAC,IAAI,WAAWA,QAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,SAAS,UAAU,gBAAgB,eAAe,CAAC;AAAA,EACrS;AACA,SAAO,GAAG;AACZ;;;AC5QA,IAAI;AACJ,SAAS,cAAc;AACrB,QAAMQ,UAASC,WAAU;AACzB,QAAMC,YAAWC,aAAY;AAC7B,SAAO;AAAA,IACL,cAAcD,UAAS,mBAAmBA,UAAS,gBAAgB,SAAS,oBAAoBA,UAAS,gBAAgB;AAAA,IACzH,OAAO,CAAC,EAAE,kBAAkBF,WAAUA,QAAO,iBAAiBE,qBAAoBF,QAAO;AAAA,EAC3F;AACF;AACA,SAASI,cAAa;AACpB,MAAI,CAAC,SAAS;AACZ,cAAU,YAAY;AAAA,EACxB;AACA,SAAO;AACT;AAEA,IAAI;AACJ,SAAS,WAAW,OAAO;AACzB,MAAI;AAAA,IACF;AAAA,EACF,IAAI,UAAU,SAAS,CAAC,IAAI;AAC5B,QAAMC,WAAUD,YAAW;AAC3B,QAAMJ,UAASC,WAAU;AACzB,QAAM,WAAWD,QAAO,UAAU;AAClC,QAAM,KAAK,aAAaA,QAAO,UAAU;AACzC,QAAM,SAAS;AAAA,IACb,KAAK;AAAA,IACL,SAAS;AAAA,EACX;AACA,QAAM,cAAcA,QAAO,OAAO;AAClC,QAAM,eAAeA,QAAO,OAAO;AACnC,QAAM,UAAU,GAAG,MAAM,6BAA6B;AACtD,MAAI,OAAO,GAAG,MAAM,sBAAsB;AAC1C,QAAM,OAAO,GAAG,MAAM,yBAAyB;AAC/C,QAAM,SAAS,CAAC,QAAQ,GAAG,MAAM,4BAA4B;AAC7D,QAAM,UAAU,aAAa;AAC7B,MAAI,QAAQ,aAAa;AAGzB,QAAM,cAAc,CAAC,aAAa,aAAa,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACrK,MAAI,CAAC,QAAQ,SAASK,SAAQ,SAAS,YAAY,QAAQ,GAAG,WAAW,IAAI,YAAY,EAAE,KAAK,GAAG;AACjG,WAAO,GAAG,MAAM,qBAAqB;AACrC,QAAI,CAAC,KAAM,QAAO,CAAC,GAAG,GAAG,QAAQ;AACjC,YAAQ;AAAA,EACV;AAGA,MAAI,WAAW,CAAC,SAAS;AACvB,WAAO,KAAK;AACZ,WAAO,UAAU;AAAA,EACnB;AACA,MAAI,QAAQ,UAAU,MAAM;AAC1B,WAAO,KAAK;AACZ,WAAO,MAAM;AAAA,EACf;AAGA,SAAO;AACT;AACA,SAASC,WAAU,WAAW;AAC5B,MAAI,cAAc,QAAQ;AACxB,gBAAY,CAAC;AAAA,EACf;AACA,MAAI,CAAC,cAAc;AACjB,mBAAe,WAAW,SAAS;AAAA,EACrC;AACA,SAAO;AACT;AAEA,IAAI;AACJ,SAAS,cAAc;AACrB,QAAMN,UAASC,WAAU;AACzB,MAAI,qBAAqB;AACzB,WAAS,WAAW;AAClB,UAAM,KAAKD,QAAO,UAAU,UAAU,YAAY;AAClD,WAAO,GAAG,QAAQ,QAAQ,KAAK,KAAK,GAAG,QAAQ,QAAQ,IAAI,KAAK,GAAG,QAAQ,SAAS,IAAI;AAAA,EAC1F;AACA,MAAI,SAAS,GAAG;AACd,UAAM,KAAK,OAAOA,QAAO,UAAU,SAAS;AAC5C,QAAI,GAAG,SAAS,UAAU,GAAG;AAC3B,YAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAAO,OAAO,GAAG,CAAC;AAC9F,2BAAqB,QAAQ,MAAM,UAAU,MAAM,QAAQ;AAAA,IAC7D;AAAA,EACF;AACA,SAAO;AAAA,IACL,UAAU,sBAAsB,SAAS;AAAA,IACzC;AAAA,IACA,WAAW,+CAA+C,KAAKA,QAAO,UAAU,SAAS;AAAA,EAC3F;AACF;AACA,SAAS,aAAa;AACpB,MAAI,CAAC,SAAS;AACZ,cAAU,YAAY;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,OAAO,MAAM;AACpB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMA,UAASC,WAAU;AACzB,MAAI,WAAW;AACf,MAAI,iBAAiB;AACrB,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,YAAa;AACxD,SAAK,cAAc;AACnB,SAAK,QAAQ;AAAA,EACf;AACA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,YAAa;AACxD,eAAW,IAAI,eAAe,aAAW;AACvC,uBAAiBD,QAAO,sBAAsB,MAAM;AAClD,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI;AACJ,YAAI,WAAW;AACf,YAAI,YAAY;AAChB,gBAAQ,QAAQ,WAAS;AACvB,cAAI;AAAA,YACF;AAAA,YACA;AAAA,YACA;AAAA,UACF,IAAI;AACJ,cAAI,UAAU,WAAW,OAAO,GAAI;AACpC,qBAAW,cAAc,YAAY,SAAS,eAAe,CAAC,KAAK,gBAAgB;AACnF,sBAAY,cAAc,YAAY,UAAU,eAAe,CAAC,KAAK,gBAAgB;AAAA,QACvF,CAAC;AACD,YAAI,aAAa,SAAS,cAAc,QAAQ;AAC9C,wBAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,aAAS,QAAQ,OAAO,EAAE;AAAA,EAC5B;AACA,QAAM,iBAAiB,MAAM;AAC3B,QAAI,gBAAgB;AAClB,MAAAA,QAAO,qBAAqB,cAAc;AAAA,IAC5C;AACA,QAAI,YAAY,SAAS,aAAa,OAAO,IAAI;AAC/C,eAAS,UAAU,OAAO,EAAE;AAC5B,iBAAW;AAAA,IACb;AAAA,EACF;AACA,QAAM,2BAA2B,MAAM;AACrC,QAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,YAAa;AACxD,SAAK,mBAAmB;AAAA,EAC1B;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,kBAAkB,OAAOA,QAAO,mBAAmB,aAAa;AAChF,qBAAe;AACf;AAAA,IACF;AACA,IAAAA,QAAO,iBAAiB,UAAU,aAAa;AAC/C,IAAAA,QAAO,iBAAiB,qBAAqB,wBAAwB;AAAA,EACvE,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,mBAAe;AACf,IAAAA,QAAO,oBAAoB,UAAU,aAAa;AAClD,IAAAA,QAAO,oBAAoB,qBAAqB,wBAAwB;AAAA,EAC1E,CAAC;AACH;AAEA,SAAS,SAAS,MAAM;AACtB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,CAAC;AACnB,QAAMA,UAASC,WAAU;AACzB,QAAM,SAAS,SAAU,QAAQ,SAAS;AACxC,QAAI,YAAY,QAAQ;AACtB,gBAAU,CAAC;AAAA,IACb;AACA,UAAM,eAAeD,QAAO,oBAAoBA,QAAO;AACvD,UAAM,WAAW,IAAI,aAAa,eAAa;AAI7C,UAAI,OAAO,oBAAqB;AAChC,UAAI,UAAU,WAAW,GAAG;AAC1B,aAAK,kBAAkB,UAAU,CAAC,CAAC;AACnC;AAAA,MACF;AACA,YAAM,iBAAiB,SAASO,kBAAiB;AAC/C,aAAK,kBAAkB,UAAU,CAAC,CAAC;AAAA,MACrC;AACA,UAAIP,QAAO,uBAAuB;AAChC,QAAAA,QAAO,sBAAsB,cAAc;AAAA,MAC7C,OAAO;AACL,QAAAA,QAAO,WAAW,gBAAgB,CAAC;AAAA,MACrC;AAAA,IACF,CAAC;AACD,aAAS,QAAQ,QAAQ;AAAA,MACvB,YAAY,OAAO,QAAQ,eAAe,cAAc,OAAO,QAAQ;AAAA,MACvE,WAAW,OAAO,QAAQ,cAAc,cAAc,OAAO,QAAQ;AAAA,MACrE,eAAe,OAAO,QAAQ,kBAAkB,cAAc,OAAO,QAAQ;AAAA,IAC/E,CAAC;AACD,cAAU,KAAK,QAAQ;AAAA,EACzB;AACA,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC,OAAO,OAAO,SAAU;AAC7B,QAAI,OAAO,OAAO,gBAAgB;AAChC,YAAM,mBAAmB,eAAe,OAAO,MAAM;AACrD,eAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK,GAAG;AACnD,eAAO,iBAAiB,CAAC,CAAC;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,OAAO,QAAQ;AAAA,MACpB,WAAW,OAAO,OAAO;AAAA,IAC3B,CAAC;AAGD,WAAO,OAAO,WAAW;AAAA,MACvB,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACA,QAAM,UAAU,MAAM;AACpB,cAAU,QAAQ,cAAY;AAC5B,eAAS,WAAW;AAAA,IACtB,CAAC;AACD,cAAU,OAAO,GAAG,UAAU,MAAM;AAAA,EACtC;AACA,eAAa;AAAA,IACX,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB,CAAC;AACD,KAAG,QAAQ,IAAI;AACf,KAAG,WAAW,OAAO;AACvB;AAIA,IAAI,gBAAgB;AAAA,EAClB,GAAGQ,SAAQ,SAAS,UAAU;AAC5B,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,mBAAmB,KAAK,UAAW,QAAO;AACpD,QAAI,OAAO,YAAY,WAAY,QAAO;AAC1C,UAAM,SAAS,WAAW,YAAY;AACtC,IAAAA,QAAO,MAAM,GAAG,EAAE,QAAQ,CAAAC,WAAS;AACjC,UAAI,CAAC,KAAK,gBAAgBA,MAAK,EAAG,MAAK,gBAAgBA,MAAK,IAAI,CAAC;AACjE,WAAK,gBAAgBA,MAAK,EAAE,MAAM,EAAE,OAAO;AAAA,IAC7C,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,KAAKD,SAAQ,SAAS,UAAU;AAC9B,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,mBAAmB,KAAK,UAAW,QAAO;AACpD,QAAI,OAAO,YAAY,WAAY,QAAO;AAC1C,aAAS,cAAc;AACrB,WAAK,IAAIA,SAAQ,WAAW;AAC5B,UAAI,YAAY,gBAAgB;AAC9B,eAAO,YAAY;AAAA,MACrB;AACA,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AACA,cAAQ,MAAM,MAAM,IAAI;AAAA,IAC1B;AACA,gBAAY,iBAAiB;AAC7B,WAAO,KAAK,GAAGA,SAAQ,aAAa,QAAQ;AAAA,EAC9C;AAAA,EACA,MAAM,SAAS,UAAU;AACvB,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,mBAAmB,KAAK,UAAW,QAAO;AACpD,QAAI,OAAO,YAAY,WAAY,QAAO;AAC1C,UAAM,SAAS,WAAW,YAAY;AACtC,QAAI,KAAK,mBAAmB,QAAQ,OAAO,IAAI,GAAG;AAChD,WAAK,mBAAmB,MAAM,EAAE,OAAO;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO,SAAS;AACd,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,mBAAmB,KAAK,UAAW,QAAO;AACpD,QAAI,CAAC,KAAK,mBAAoB,QAAO;AACrC,UAAM,QAAQ,KAAK,mBAAmB,QAAQ,OAAO;AACrD,QAAI,SAAS,GAAG;AACd,WAAK,mBAAmB,OAAO,OAAO,CAAC;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAIA,SAAQ,SAAS;AACnB,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,mBAAmB,KAAK,UAAW,QAAO;AACpD,QAAI,CAAC,KAAK,gBAAiB,QAAO;AAClC,IAAAA,QAAO,MAAM,GAAG,EAAE,QAAQ,CAAAC,WAAS;AACjC,UAAI,OAAO,YAAY,aAAa;AAClC,aAAK,gBAAgBA,MAAK,IAAI,CAAC;AAAA,MACjC,WAAW,KAAK,gBAAgBA,MAAK,GAAG;AACtC,aAAK,gBAAgBA,MAAK,EAAE,QAAQ,CAAC,cAAc,UAAU;AAC3D,cAAI,iBAAiB,WAAW,aAAa,kBAAkB,aAAa,mBAAmB,SAAS;AACtG,iBAAK,gBAAgBA,MAAK,EAAE,OAAO,OAAO,CAAC;AAAA,UAC7C;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,mBAAmB,KAAK,UAAW,QAAO;AACpD,QAAI,CAAC,KAAK,gBAAiB,QAAO;AAClC,QAAID;AACJ,QAAI;AACJ,QAAI;AACJ,aAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,WAAK,KAAK,IAAI,UAAU,KAAK;AAAA,IAC/B;AACA,QAAI,OAAO,KAAK,CAAC,MAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AACzD,MAAAA,UAAS,KAAK,CAAC;AACf,aAAO,KAAK,MAAM,GAAG,KAAK,MAAM;AAChC,gBAAU;AAAA,IACZ,OAAO;AACL,MAAAA,UAAS,KAAK,CAAC,EAAE;AACjB,aAAO,KAAK,CAAC,EAAE;AACf,gBAAU,KAAK,CAAC,EAAE,WAAW;AAAA,IAC/B;AACA,SAAK,QAAQ,OAAO;AACpB,UAAM,cAAc,MAAM,QAAQA,OAAM,IAAIA,UAASA,QAAO,MAAM,GAAG;AACrE,gBAAY,QAAQ,CAAAC,WAAS;AAC3B,UAAI,KAAK,sBAAsB,KAAK,mBAAmB,QAAQ;AAC7D,aAAK,mBAAmB,QAAQ,kBAAgB;AAC9C,uBAAa,MAAM,SAAS,CAACA,QAAO,GAAG,IAAI,CAAC;AAAA,QAC9C,CAAC;AAAA,MACH;AACA,UAAI,KAAK,mBAAmB,KAAK,gBAAgBA,MAAK,GAAG;AACvD,aAAK,gBAAgBA,MAAK,EAAE,QAAQ,kBAAgB;AAClD,uBAAa,MAAM,SAAS,IAAI;AAAA,QAClC,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa;AACpB,QAAM,SAAS;AACf,MAAI;AACJ,MAAI;AACJ,QAAM,KAAK,OAAO;AAClB,MAAI,OAAO,OAAO,OAAO,UAAU,eAAe,OAAO,OAAO,UAAU,MAAM;AAC9E,YAAQ,OAAO,OAAO;AAAA,EACxB,OAAO;AACL,YAAQ,GAAG;AAAA,EACb;AACA,MAAI,OAAO,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,WAAW,MAAM;AAChF,aAAS,OAAO,OAAO;AAAA,EACzB,OAAO;AACL,aAAS,GAAG;AAAA,EACd;AACA,MAAI,UAAU,KAAK,OAAO,aAAa,KAAK,WAAW,KAAK,OAAO,WAAW,GAAG;AAC/E;AAAA,EACF;AAGA,UAAQ,QAAQ,SAAS,aAAa,IAAI,cAAc,KAAK,GAAG,EAAE,IAAI,SAAS,aAAa,IAAI,eAAe,KAAK,GAAG,EAAE;AACzH,WAAS,SAAS,SAAS,aAAa,IAAI,aAAa,KAAK,GAAG,EAAE,IAAI,SAAS,aAAa,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3H,MAAI,OAAO,MAAM,KAAK,EAAG,SAAQ;AACjC,MAAI,OAAO,MAAM,MAAM,EAAG,UAAS;AACnC,SAAO,OAAO,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA,MAAM,OAAO,aAAa,IAAI,QAAQ;AAAA,EACxC,CAAC;AACH;AAEA,SAAS,eAAe;AACtB,QAAM,SAAS;AACf,WAAS,kBAAkB,UAAU;AACnC,QAAI,OAAO,aAAa,GAAG;AACzB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,MACT,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,eAAe;AAAA,IACjB,EAAE,QAAQ;AAAA,EACZ;AACA,WAAS,0BAA0B,MAAM,OAAO;AAC9C,WAAO,WAAW,KAAK,iBAAiB,kBAAkB,KAAK,CAAC,KAAK,CAAC;AAAA,EACxE;AACA,QAAM,SAAS,OAAO;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,QAAM,uBAAuB,YAAY,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO;AACtF,QAAM,SAAS,gBAAgB,UAAU,IAAI,OAAO,OAAO,UAAU,gBAAgB;AACrF,QAAM,eAAe,YAAY,OAAO,QAAQ,OAAO,SAAS,OAAO;AACvE,MAAI,WAAW,CAAC;AAChB,QAAM,aAAa,CAAC;AACpB,QAAM,kBAAkB,CAAC;AACzB,MAAI,eAAe,OAAO;AAC1B,MAAI,OAAO,iBAAiB,YAAY;AACtC,mBAAe,OAAO,mBAAmB,KAAK,MAAM;AAAA,EACtD;AACA,MAAI,cAAc,OAAO;AACzB,MAAI,OAAO,gBAAgB,YAAY;AACrC,kBAAc,OAAO,kBAAkB,KAAK,MAAM;AAAA,EACpD;AACA,QAAM,yBAAyB,OAAO,SAAS;AAC/C,QAAM,2BAA2B,OAAO,WAAW;AACnD,MAAI,eAAe,OAAO;AAC1B,MAAI,gBAAgB,CAAC;AACrB,MAAI,gBAAgB;AACpB,MAAI,QAAQ;AACZ,MAAI,OAAO,eAAe,aAAa;AACrC;AAAA,EACF;AACA,MAAI,OAAO,iBAAiB,YAAY,aAAa,QAAQ,GAAG,KAAK,GAAG;AACtE,mBAAe,WAAW,aAAa,QAAQ,KAAK,EAAE,CAAC,IAAI,MAAM;AAAA,EACnE,WAAW,OAAO,iBAAiB,UAAU;AAC3C,mBAAe,WAAW,YAAY;AAAA,EACxC;AACA,SAAO,cAAc,CAAC;AAGtB,SAAO,QAAQ,aAAW;AACxB,QAAI,KAAK;AACP,cAAQ,MAAM,aAAa;AAAA,IAC7B,OAAO;AACL,cAAQ,MAAM,cAAc;AAAA,IAC9B;AACA,YAAQ,MAAM,eAAe;AAC7B,YAAQ,MAAM,YAAY;AAAA,EAC5B,CAAC;AAGD,MAAI,OAAO,kBAAkB,OAAO,SAAS;AAC3C,mBAAe,WAAW,mCAAmC,EAAE;AAC/D,mBAAe,WAAW,kCAAkC,EAAE;AAAA,EAChE;AACA,QAAM,cAAc,OAAO,QAAQ,OAAO,KAAK,OAAO,KAAK,OAAO;AAClE,MAAI,aAAa;AACf,WAAO,KAAK,WAAW,YAAY;AAAA,EACrC;AAGA,MAAI;AACJ,QAAM,uBAAuB,OAAO,kBAAkB,UAAU,OAAO,eAAe,OAAO,KAAK,OAAO,WAAW,EAAE,OAAO,SAAO;AAClI,WAAO,OAAO,OAAO,YAAY,GAAG,EAAE,kBAAkB;AAAA,EAC1D,CAAC,EAAE,SAAS;AACZ,WAAS,IAAI,GAAG,IAAI,cAAc,KAAK,GAAG;AACxC,gBAAY;AACZ,QAAIC;AACJ,QAAI,OAAO,CAAC,EAAG,CAAAA,SAAQ,OAAO,CAAC;AAC/B,QAAI,aAAa;AACf,aAAO,KAAK,YAAY,GAAGA,QAAO,cAAc,iBAAiB;AAAA,IACnE;AACA,QAAI,OAAO,CAAC,KAAK,aAAaA,QAAO,SAAS,MAAM,OAAQ;AAE5D,QAAI,OAAO,kBAAkB,QAAQ;AACnC,UAAI,sBAAsB;AACxB,eAAO,CAAC,EAAE,MAAM,kBAAkB,OAAO,CAAC,IAAI;AAAA,MAChD;AACA,YAAM,cAAc,iBAAiBA,MAAK;AAC1C,YAAM,mBAAmBA,OAAM,MAAM;AACrC,YAAM,yBAAyBA,OAAM,MAAM;AAC3C,UAAI,kBAAkB;AACpB,QAAAA,OAAM,MAAM,YAAY;AAAA,MAC1B;AACA,UAAI,wBAAwB;AAC1B,QAAAA,OAAM,MAAM,kBAAkB;AAAA,MAChC;AACA,UAAI,OAAO,cAAc;AACvB,oBAAY,OAAO,aAAa,IAAI,iBAAiBA,QAAO,SAAS,IAAI,IAAI,iBAAiBA,QAAO,UAAU,IAAI;AAAA,MACrH,OAAO;AAEL,cAAM,QAAQ,0BAA0B,aAAa,OAAO;AAC5D,cAAM,cAAc,0BAA0B,aAAa,cAAc;AACzE,cAAM,eAAe,0BAA0B,aAAa,eAAe;AAC3E,cAAM,aAAa,0BAA0B,aAAa,aAAa;AACvE,cAAM,cAAc,0BAA0B,aAAa,cAAc;AACzE,cAAM,YAAY,YAAY,iBAAiB,YAAY;AAC3D,YAAI,aAAa,cAAc,cAAc;AAC3C,sBAAY,QAAQ,aAAa;AAAA,QACnC,OAAO;AACL,gBAAM;AAAA,YACJ;AAAA,YACA;AAAA,UACF,IAAIA;AACJ,sBAAY,QAAQ,cAAc,eAAe,aAAa,eAAe,cAAc;AAAA,QAC7F;AAAA,MACF;AACA,UAAI,kBAAkB;AACpB,QAAAA,OAAM,MAAM,YAAY;AAAA,MAC1B;AACA,UAAI,wBAAwB;AAC1B,QAAAA,OAAM,MAAM,kBAAkB;AAAA,MAChC;AACA,UAAI,OAAO,aAAc,aAAY,KAAK,MAAM,SAAS;AAAA,IAC3D,OAAO;AACL,mBAAa,cAAc,OAAO,gBAAgB,KAAK,gBAAgB,OAAO;AAC9E,UAAI,OAAO,aAAc,aAAY,KAAK,MAAM,SAAS;AACzD,UAAI,OAAO,CAAC,GAAG;AACb,eAAO,CAAC,EAAE,MAAM,kBAAkB,OAAO,CAAC,IAAI,GAAG,SAAS;AAAA,MAC5D;AAAA,IACF;AACA,QAAI,OAAO,CAAC,GAAG;AACb,aAAO,CAAC,EAAE,kBAAkB;AAAA,IAC9B;AACA,oBAAgB,KAAK,SAAS;AAC9B,QAAI,OAAO,gBAAgB;AACzB,sBAAgB,gBAAgB,YAAY,IAAI,gBAAgB,IAAI;AACpE,UAAI,kBAAkB,KAAK,MAAM,EAAG,iBAAgB,gBAAgB,aAAa,IAAI;AACrF,UAAI,MAAM,EAAG,iBAAgB,gBAAgB,aAAa,IAAI;AAC9D,UAAI,KAAK,IAAI,aAAa,IAAI,IAAI,IAAM,iBAAgB;AACxD,UAAI,OAAO,aAAc,iBAAgB,KAAK,MAAM,aAAa;AACjE,UAAI,QAAQ,OAAO,mBAAmB,EAAG,UAAS,KAAK,aAAa;AACpE,iBAAW,KAAK,aAAa;AAAA,IAC/B,OAAO;AACL,UAAI,OAAO,aAAc,iBAAgB,KAAK,MAAM,aAAa;AACjE,WAAK,QAAQ,KAAK,IAAI,OAAO,OAAO,oBAAoB,KAAK,KAAK,OAAO,OAAO,mBAAmB,EAAG,UAAS,KAAK,aAAa;AACjI,iBAAW,KAAK,aAAa;AAC7B,sBAAgB,gBAAgB,YAAY;AAAA,IAC9C;AACA,WAAO,eAAe,YAAY;AAClC,oBAAgB;AAChB,aAAS;AAAA,EACX;AACA,SAAO,cAAc,KAAK,IAAI,OAAO,aAAa,UAAU,IAAI;AAChE,MAAI,OAAO,aAAa,OAAO,WAAW,WAAW,OAAO,WAAW,cAAc;AACnF,cAAU,MAAM,QAAQ,GAAG,OAAO,cAAc,YAAY;AAAA,EAC9D;AACA,MAAI,OAAO,gBAAgB;AACzB,cAAU,MAAM,kBAAkB,OAAO,CAAC,IAAI,GAAG,OAAO,cAAc,YAAY;AAAA,EACpF;AACA,MAAI,aAAa;AACf,WAAO,KAAK,kBAAkB,WAAW,UAAU,iBAAiB;AAAA,EACtE;AAGA,MAAI,CAAC,OAAO,gBAAgB;AAC1B,UAAM,gBAAgB,CAAC;AACvB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAC3C,UAAI,iBAAiB,SAAS,CAAC;AAC/B,UAAI,OAAO,aAAc,kBAAiB,KAAK,MAAM,cAAc;AACnE,UAAI,SAAS,CAAC,KAAK,OAAO,cAAc,YAAY;AAClD,sBAAc,KAAK,cAAc;AAAA,MACnC;AAAA,IACF;AACA,eAAW;AACX,QAAI,KAAK,MAAM,OAAO,cAAc,UAAU,IAAI,KAAK,MAAM,SAAS,SAAS,SAAS,CAAC,CAAC,IAAI,GAAG;AAC/F,eAAS,KAAK,OAAO,cAAc,UAAU;AAAA,IAC/C;AAAA,EACF;AACA,MAAI,aAAa,OAAO,MAAM;AAC5B,UAAM,OAAO,gBAAgB,CAAC,IAAI;AAClC,QAAI,OAAO,iBAAiB,GAAG;AAC7B,YAAM,SAAS,KAAK,MAAM,OAAO,QAAQ,eAAe,OAAO,QAAQ,eAAe,OAAO,cAAc;AAC3G,YAAM,YAAY,OAAO,OAAO;AAChC,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,GAAG;AAClC,iBAAS,KAAK,SAAS,SAAS,SAAS,CAAC,IAAI,SAAS;AAAA,MACzD;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,eAAe,OAAO,QAAQ,aAAa,KAAK,GAAG;AACpF,UAAI,OAAO,mBAAmB,GAAG;AAC/B,iBAAS,KAAK,SAAS,SAAS,SAAS,CAAC,IAAI,IAAI;AAAA,MACpD;AACA,iBAAW,KAAK,WAAW,WAAW,SAAS,CAAC,IAAI,IAAI;AACxD,aAAO,eAAe;AAAA,IACxB;AAAA,EACF;AACA,MAAI,SAAS,WAAW,EAAG,YAAW,CAAC,CAAC;AACxC,MAAI,iBAAiB,GAAG;AACtB,UAAM,MAAM,OAAO,aAAa,KAAK,MAAM,eAAe,kBAAkB,aAAa;AACzF,WAAO,OAAO,CAAC,GAAG,eAAe;AAC/B,UAAI,CAAC,OAAO,WAAW,OAAO,KAAM,QAAO;AAC3C,UAAI,eAAe,OAAO,SAAS,GAAG;AACpC,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC,EAAE,QAAQ,aAAW;AACpB,cAAQ,MAAM,GAAG,IAAI,GAAG,YAAY;AAAA,IACtC,CAAC;AAAA,EACH;AACA,MAAI,OAAO,kBAAkB,OAAO,sBAAsB;AACxD,QAAI,gBAAgB;AACpB,oBAAgB,QAAQ,oBAAkB;AACxC,uBAAiB,kBAAkB,gBAAgB;AAAA,IACrD,CAAC;AACD,qBAAiB;AACjB,UAAM,UAAU,gBAAgB;AAChC,eAAW,SAAS,IAAI,UAAQ;AAC9B,UAAI,QAAQ,EAAG,QAAO,CAAC;AACvB,UAAI,OAAO,QAAS,QAAO,UAAU;AACrC,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,MAAI,OAAO,0BAA0B;AACnC,QAAI,gBAAgB;AACpB,oBAAgB,QAAQ,oBAAkB;AACxC,uBAAiB,kBAAkB,gBAAgB;AAAA,IACrD,CAAC;AACD,qBAAiB;AACjB,QAAI,gBAAgB,YAAY;AAC9B,YAAM,mBAAmB,aAAa,iBAAiB;AACvD,eAAS,QAAQ,CAAC,MAAM,cAAc;AACpC,iBAAS,SAAS,IAAI,OAAO;AAAA,MAC/B,CAAC;AACD,iBAAW,QAAQ,CAAC,MAAM,cAAc;AACtC,mBAAW,SAAS,IAAI,OAAO;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,OAAO,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,MAAI,OAAO,kBAAkB,OAAO,WAAW,CAAC,OAAO,sBAAsB;AAC3E,mBAAe,WAAW,mCAAmC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI;AAChF,mBAAe,WAAW,kCAAkC,GAAG,OAAO,OAAO,IAAI,gBAAgB,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI;AACpI,UAAM,gBAAgB,CAAC,OAAO,SAAS,CAAC;AACxC,UAAM,kBAAkB,CAAC,OAAO,WAAW,CAAC;AAC5C,WAAO,WAAW,OAAO,SAAS,IAAI,OAAK,IAAI,aAAa;AAC5D,WAAO,aAAa,OAAO,WAAW,IAAI,OAAK,IAAI,eAAe;AAAA,EACpE;AACA,MAAI,iBAAiB,sBAAsB;AACzC,WAAO,KAAK,oBAAoB;AAAA,EAClC;AACA,MAAI,SAAS,WAAW,wBAAwB;AAC9C,QAAI,OAAO,OAAO,cAAe,QAAO,cAAc;AACtD,WAAO,KAAK,sBAAsB;AAAA,EACpC;AACA,MAAI,WAAW,WAAW,0BAA0B;AAClD,WAAO,KAAK,wBAAwB;AAAA,EACtC;AACA,MAAI,OAAO,qBAAqB;AAC9B,WAAO,mBAAmB;AAAA,EAC5B;AACA,MAAI,CAAC,aAAa,CAAC,OAAO,YAAY,OAAO,WAAW,WAAW,OAAO,WAAW,SAAS;AAC5F,UAAM,sBAAsB,GAAG,OAAO,sBAAsB;AAC5D,UAAM,6BAA6B,OAAO,GAAG,UAAU,SAAS,mBAAmB;AACnF,QAAI,gBAAgB,OAAO,yBAAyB;AAClD,UAAI,CAAC,2BAA4B,QAAO,GAAG,UAAU,IAAI,mBAAmB;AAAA,IAC9E,WAAW,4BAA4B;AACrC,aAAO,GAAG,UAAU,OAAO,mBAAmB;AAAA,IAChD;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,OAAO;AAC/B,QAAM,SAAS;AACf,QAAM,eAAe,CAAC;AACtB,QAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAC1D,MAAI,YAAY;AAChB,MAAI;AACJ,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,cAAc,KAAK;AAAA,EAC5B,WAAW,UAAU,MAAM;AACzB,WAAO,cAAc,OAAO,OAAO,KAAK;AAAA,EAC1C;AACA,QAAM,kBAAkB,WAAS;AAC/B,QAAI,WAAW;AACb,aAAO,OAAO,OAAO,OAAO,oBAAoB,KAAK,CAAC;AAAA,IACxD;AACA,WAAO,OAAO,OAAO,KAAK;AAAA,EAC5B;AAEA,MAAI,OAAO,OAAO,kBAAkB,UAAU,OAAO,OAAO,gBAAgB,GAAG;AAC7E,QAAI,OAAO,OAAO,gBAAgB;AAChC,OAAC,OAAO,iBAAiB,CAAC,GAAG,QAAQ,CAAAA,WAAS;AAC5C,qBAAa,KAAKA,MAAK;AAAA,MACzB,CAAC;AAAA,IACH,OAAO;AACL,WAAK,IAAI,GAAG,IAAI,KAAK,KAAK,OAAO,OAAO,aAAa,GAAG,KAAK,GAAG;AAC9D,cAAM,QAAQ,OAAO,cAAc;AACnC,YAAI,QAAQ,OAAO,OAAO,UAAU,CAAC,UAAW;AAChD,qBAAa,KAAK,gBAAgB,KAAK,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF,OAAO;AACL,iBAAa,KAAK,gBAAgB,OAAO,WAAW,CAAC;AAAA,EACvD;AAGA,OAAK,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC3C,QAAI,OAAO,aAAa,CAAC,MAAM,aAAa;AAC1C,YAAM,SAAS,aAAa,CAAC,EAAE;AAC/B,kBAAY,SAAS,YAAY,SAAS;AAAA,IAC5C;AAAA,EACF;AAGA,MAAI,aAAa,cAAc,EAAG,QAAO,UAAU,MAAM,SAAS,GAAG,SAAS;AAChF;AAEA,SAAS,qBAAqB;AAC5B,QAAM,SAAS;AACf,QAAM,SAAS,OAAO;AAEtB,QAAM,cAAc,OAAO,YAAY,OAAO,aAAa,IAAI,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY;AAC1H,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,WAAO,CAAC,EAAE,qBAAqB,OAAO,aAAa,IAAI,OAAO,CAAC,EAAE,aAAa,OAAO,CAAC,EAAE,aAAa,cAAc,OAAO,sBAAsB;AAAA,EAClJ;AACF;AAEA,SAAS,qBAAqBC,YAAW;AACvC,MAAIA,eAAc,QAAQ;AACxB,IAAAA,aAAY,QAAQ,KAAK,aAAa;AAAA,EACxC;AACA,QAAM,SAAS;AACf,QAAM,SAAS,OAAO;AACtB,QAAM;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,IACd;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,WAAW,EAAG;AACzB,MAAI,OAAO,OAAO,CAAC,EAAE,sBAAsB,YAAa,QAAO,mBAAmB;AAClF,MAAI,eAAe,CAACA;AACpB,MAAI,IAAK,gBAAeA;AAGxB,SAAO,QAAQ,aAAW;AACxB,YAAQ,UAAU,OAAO,OAAO,iBAAiB;AAAA,EACnD,CAAC;AACD,SAAO,uBAAuB,CAAC;AAC/B,SAAO,gBAAgB,CAAC;AACxB,MAAI,eAAe,OAAO;AAC1B,MAAI,OAAO,iBAAiB,YAAY,aAAa,QAAQ,GAAG,KAAK,GAAG;AACtE,mBAAe,WAAW,aAAa,QAAQ,KAAK,EAAE,CAAC,IAAI,MAAM,OAAO;AAAA,EAC1E,WAAW,OAAO,iBAAiB,UAAU;AAC3C,mBAAe,WAAW,YAAY;AAAA,EACxC;AACA,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAMD,SAAQ,OAAO,CAAC;AACtB,QAAI,cAAcA,OAAM;AACxB,QAAI,OAAO,WAAW,OAAO,gBAAgB;AAC3C,qBAAe,OAAO,CAAC,EAAE;AAAA,IAC3B;AACA,UAAM,iBAAiB,gBAAgB,OAAO,iBAAiB,OAAO,aAAa,IAAI,KAAK,gBAAgBA,OAAM,kBAAkB;AACpI,UAAM,yBAAyB,eAAe,SAAS,CAAC,KAAK,OAAO,iBAAiB,OAAO,aAAa,IAAI,KAAK,gBAAgBA,OAAM,kBAAkB;AAC1J,UAAM,cAAc,EAAE,eAAe;AACrC,UAAM,aAAa,cAAc,OAAO,gBAAgB,CAAC;AACzD,UAAM,YAAY,eAAe,KAAK,cAAc,OAAO,OAAO,KAAK,aAAa,KAAK,cAAc,OAAO,QAAQ,eAAe,KAAK,cAAc,OAAO;AAC/J,QAAI,WAAW;AACb,aAAO,cAAc,KAAKA,MAAK;AAC/B,aAAO,qBAAqB,KAAK,CAAC;AAClC,aAAO,CAAC,EAAE,UAAU,IAAI,OAAO,iBAAiB;AAAA,IAClD;AACA,IAAAA,OAAM,WAAW,MAAM,CAAC,gBAAgB;AACxC,IAAAA,OAAM,mBAAmB,MAAM,CAAC,wBAAwB;AAAA,EAC1D;AACF;AAEA,SAAS,eAAeC,YAAW;AACjC,QAAM,SAAS;AACf,MAAI,OAAOA,eAAc,aAAa;AACpC,UAAM,aAAa,OAAO,eAAe,KAAK;AAE9C,IAAAA,aAAY,UAAU,OAAO,aAAa,OAAO,YAAY,cAAc;AAAA,EAC7E;AACA,QAAM,SAAS,OAAO;AACtB,QAAM,iBAAiB,OAAO,aAAa,IAAI,OAAO,aAAa;AACnE,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,eAAe;AACrB,QAAM,SAAS;AACf,MAAI,mBAAmB,GAAG;AACxB,eAAW;AACX,kBAAc;AACd,YAAQ;AAAA,EACV,OAAO;AACL,gBAAYA,aAAY,OAAO,aAAa,KAAK;AACjD,UAAM,qBAAqB,KAAK,IAAIA,aAAY,OAAO,aAAa,CAAC,IAAI;AACzE,UAAM,eAAe,KAAK,IAAIA,aAAY,OAAO,aAAa,CAAC,IAAI;AACnE,kBAAc,sBAAsB,YAAY;AAChD,YAAQ,gBAAgB,YAAY;AACpC,QAAI,mBAAoB,YAAW;AACnC,QAAI,aAAc,YAAW;AAAA,EAC/B;AACA,MAAI,OAAO,MAAM;AACf,UAAM,kBAAkB,OAAO,oBAAoB,CAAC;AACpD,UAAM,iBAAiB,OAAO,oBAAoB,OAAO,OAAO,SAAS,CAAC;AAC1E,UAAM,sBAAsB,OAAO,WAAW,eAAe;AAC7D,UAAM,qBAAqB,OAAO,WAAW,cAAc;AAC3D,UAAM,eAAe,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC;AACnE,UAAM,eAAe,KAAK,IAAIA,UAAS;AACvC,QAAI,gBAAgB,qBAAqB;AACvC,sBAAgB,eAAe,uBAAuB;AAAA,IACxD,OAAO;AACL,sBAAgB,eAAe,eAAe,sBAAsB;AAAA,IACtE;AACA,QAAI,eAAe,EAAG,iBAAgB;AAAA,EACxC;AACA,SAAO,OAAO,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,MAAI,OAAO,uBAAuB,OAAO,kBAAkB,OAAO,WAAY,QAAO,qBAAqBA,UAAS;AACnH,MAAI,eAAe,CAAC,cAAc;AAChC,WAAO,KAAK,uBAAuB;AAAA,EACrC;AACA,MAAI,SAAS,CAAC,QAAQ;AACpB,WAAO,KAAK,iBAAiB;AAAA,EAC/B;AACA,MAAI,gBAAgB,CAAC,eAAe,UAAU,CAAC,OAAO;AACpD,WAAO,KAAK,UAAU;AAAA,EACxB;AACA,SAAO,KAAK,YAAY,QAAQ;AAClC;AAEA,SAAS,sBAAsB;AAC7B,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,QAAM,mBAAmB,cAAY;AACnC,WAAO,gBAAgB,UAAU,IAAI,OAAO,UAAU,GAAG,QAAQ,iBAAiB,QAAQ,EAAE,EAAE,CAAC;AAAA,EACjG;AACA,SAAO,QAAQ,aAAW;AACxB,YAAQ,UAAU,OAAO,OAAO,kBAAkB,OAAO,gBAAgB,OAAO,cAAc;AAAA,EAChG,CAAC;AACD,MAAI;AACJ,MAAI,WAAW;AACb,QAAI,OAAO,MAAM;AACf,UAAI,aAAa,cAAc,OAAO,QAAQ;AAC9C,UAAI,aAAa,EAAG,cAAa,OAAO,QAAQ,OAAO,SAAS;AAChE,UAAI,cAAc,OAAO,QAAQ,OAAO,OAAQ,eAAc,OAAO,QAAQ,OAAO;AACpF,oBAAc,iBAAiB,6BAA6B,UAAU,IAAI;AAAA,IAC5E,OAAO;AACL,oBAAc,iBAAiB,6BAA6B,WAAW,IAAI;AAAA,IAC7E;AAAA,EACF,OAAO;AACL,kBAAc,OAAO,WAAW;AAAA,EAClC;AACA,MAAI,aAAa;AAEf,gBAAY,UAAU,IAAI,OAAO,gBAAgB;AAGjD,QAAI,YAAY,eAAe,aAAa,IAAI,OAAO,UAAU,gBAAgB,EAAE,CAAC;AACpF,QAAI,OAAO,QAAQ,CAAC,WAAW;AAC7B,kBAAY,OAAO,CAAC;AAAA,IACtB;AACA,QAAI,WAAW;AACb,gBAAU,UAAU,IAAI,OAAO,cAAc;AAAA,IAC/C;AAEA,QAAI,YAAY,eAAe,aAAa,IAAI,OAAO,UAAU,gBAAgB,EAAE,CAAC;AACpF,QAAI,OAAO,QAAQ,CAAC,cAAc,GAAG;AACnC,kBAAY,OAAO,OAAO,SAAS,CAAC;AAAA,IACtC;AACA,QAAI,WAAW;AACb,gBAAU,UAAU,IAAI,OAAO,cAAc;AAAA,IAC/C;AAAA,EACF;AACA,SAAO,kBAAkB;AAC3B;AAEA,IAAM,uBAAuB,CAAC,QAAQ,YAAY;AAChD,MAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,OAAQ;AACnD,QAAM,gBAAgB,MAAM,OAAO,YAAY,iBAAiB,IAAI,OAAO,OAAO,UAAU;AAC5F,QAAM,UAAU,QAAQ,QAAQ,cAAc,CAAC;AAC/C,MAAI,SAAS;AACX,QAAI,SAAS,QAAQ,cAAc,IAAI,OAAO,OAAO,kBAAkB,EAAE;AACzE,QAAI,CAAC,UAAU,OAAO,WAAW;AAC/B,UAAI,QAAQ,YAAY;AACtB,iBAAS,QAAQ,WAAW,cAAc,IAAI,OAAO,OAAO,kBAAkB,EAAE;AAAA,MAClF,OAAO;AAEL,8BAAsB,MAAM;AAC1B,cAAI,QAAQ,YAAY;AACtB,qBAAS,QAAQ,WAAW,cAAc,IAAI,OAAO,OAAO,kBAAkB,EAAE;AAChF,gBAAI,OAAQ,QAAO,OAAO;AAAA,UAC5B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,OAAQ,QAAO,OAAO;AAAA,EAC5B;AACF;AACA,IAAM,SAAS,CAAC,QAAQ,UAAU;AAChC,MAAI,CAAC,OAAO,OAAO,KAAK,EAAG;AAC3B,QAAM,UAAU,OAAO,OAAO,KAAK,EAAE,cAAc,kBAAkB;AACrE,MAAI,QAAS,SAAQ,gBAAgB,SAAS;AAChD;AACA,IAAM,UAAU,YAAU;AACxB,MAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,OAAQ;AACnD,MAAI,SAAS,OAAO,OAAO;AAC3B,QAAM,MAAM,OAAO,OAAO;AAC1B,MAAI,CAAC,OAAO,CAAC,UAAU,SAAS,EAAG;AACnC,WAAS,KAAK,IAAI,QAAQ,GAAG;AAC7B,QAAM,gBAAgB,OAAO,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,KAAK,KAAK,OAAO,OAAO,aAAa;AACpI,QAAM,cAAc,OAAO;AAC3B,MAAI,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,OAAO,GAAG;AACrD,UAAM,eAAe;AACrB,UAAM,iBAAiB,CAAC,eAAe,MAAM;AAC7C,mBAAe,KAAK,GAAG,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,IACV,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM;AACf,aAAO,eAAe,gBAAgB;AAAA,IACxC,CAAC,CAAC;AACF,WAAO,OAAO,QAAQ,CAAC,SAAS,MAAM;AACpC,UAAI,eAAe,SAAS,QAAQ,MAAM,EAAG,QAAO,QAAQ,CAAC;AAAA,IAC/D,CAAC;AACD;AAAA,EACF;AACA,QAAM,uBAAuB,cAAc,gBAAgB;AAC3D,MAAI,OAAO,OAAO,UAAU,OAAO,OAAO,MAAM;AAC9C,aAAS,IAAI,cAAc,QAAQ,KAAK,uBAAuB,QAAQ,KAAK,GAAG;AAC7E,YAAM,aAAa,IAAI,MAAM,OAAO;AACpC,UAAI,YAAY,eAAe,YAAY,qBAAsB,QAAO,QAAQ,SAAS;AAAA,IAC3F;AAAA,EACF,OAAO;AACL,aAAS,IAAI,KAAK,IAAI,cAAc,QAAQ,CAAC,GAAG,KAAK,KAAK,IAAI,uBAAuB,QAAQ,MAAM,CAAC,GAAG,KAAK,GAAG;AAC7G,UAAI,MAAM,gBAAgB,IAAI,wBAAwB,IAAI,cAAc;AACtE,eAAO,QAAQ,CAAC;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B,QAAQ;AACzC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMA,aAAY,OAAO,eAAe,OAAO,YAAY,CAAC,OAAO;AACnE,MAAI;AACJ,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAC7C,QAAI,OAAO,WAAW,IAAI,CAAC,MAAM,aAAa;AAC5C,UAAIA,cAAa,WAAW,CAAC,KAAKA,aAAY,WAAW,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,GAAG;AACzG,sBAAc;AAAA,MAChB,WAAWA,cAAa,WAAW,CAAC,KAAKA,aAAY,WAAW,IAAI,CAAC,GAAG;AACtE,sBAAc,IAAI;AAAA,MACpB;AAAA,IACF,WAAWA,cAAa,WAAW,CAAC,GAAG;AACrC,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,OAAO,qBAAqB;AAC9B,QAAI,cAAc,KAAK,OAAO,gBAAgB,YAAa,eAAc;AAAA,EAC3E;AACA,SAAO;AACT;AACA,SAAS,kBAAkB,gBAAgB;AACzC,QAAM,SAAS;AACf,QAAMA,aAAY,OAAO,eAAe,OAAO,YAAY,CAAC,OAAO;AACnE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,EACb,IAAI;AACJ,MAAI,cAAc;AAClB,MAAI;AACJ,QAAM,sBAAsB,YAAU;AACpC,QAAIC,aAAY,SAAS,OAAO,QAAQ;AACxC,QAAIA,aAAY,GAAG;AACjB,MAAAA,aAAY,OAAO,QAAQ,OAAO,SAASA;AAAA,IAC7C;AACA,QAAIA,cAAa,OAAO,QAAQ,OAAO,QAAQ;AAC7C,MAAAA,cAAa,OAAO,QAAQ,OAAO;AAAA,IACrC;AACA,WAAOA;AAAA,EACT;AACA,MAAI,OAAO,gBAAgB,aAAa;AACtC,kBAAc,0BAA0B,MAAM;AAAA,EAChD;AACA,MAAI,SAAS,QAAQD,UAAS,KAAK,GAAG;AACpC,gBAAY,SAAS,QAAQA,UAAS;AAAA,EACxC,OAAO;AACL,UAAM,OAAO,KAAK,IAAI,OAAO,oBAAoB,WAAW;AAC5D,gBAAY,OAAO,KAAK,OAAO,cAAc,QAAQ,OAAO,cAAc;AAAA,EAC5E;AACA,MAAI,aAAa,SAAS,OAAQ,aAAY,SAAS,SAAS;AAChE,MAAI,gBAAgB,eAAe;AACjC,QAAI,cAAc,mBAAmB;AACnC,aAAO,YAAY;AACnB,aAAO,KAAK,iBAAiB;AAAA,IAC/B;AACA,QAAI,OAAO,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACzE,aAAO,YAAY,oBAAoB,WAAW;AAAA,IACpD;AACA;AAAA,EACF;AAEA,MAAI;AACJ,MAAI,OAAO,WAAW,OAAO,QAAQ,WAAW,OAAO,MAAM;AAC3D,gBAAY,oBAAoB,WAAW;AAAA,EAC7C,WAAW,OAAO,OAAO,WAAW,GAAG;AACrC,gBAAY,SAAS,OAAO,OAAO,WAAW,EAAE,aAAa,yBAAyB,KAAK,aAAa,EAAE;AAAA,EAC5G,OAAO;AACL,gBAAY;AAAA,EACd;AACA,SAAO,OAAO,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,MAAI,OAAO,aAAa;AACtB,YAAQ,MAAM;AAAA,EAChB;AACA,SAAO,KAAK,mBAAmB;AAC/B,SAAO,KAAK,iBAAiB;AAC7B,MAAI,OAAO,eAAe,OAAO,OAAO,oBAAoB;AAC1D,QAAI,sBAAsB,WAAW;AACnC,aAAO,KAAK,iBAAiB;AAAA,IAC/B;AACA,WAAO,KAAK,aAAa;AAAA,EAC3B;AACF;AAEA,SAAS,mBAAmB,IAAI,MAAM;AACpC,QAAM,SAAS;AACf,QAAM,SAAS,OAAO;AACtB,MAAID,SAAQ,GAAG,QAAQ,IAAI,OAAO,UAAU,gBAAgB;AAC5D,MAAI,CAACA,UAAS,OAAO,aAAa,QAAQ,KAAK,SAAS,KAAK,KAAK,SAAS,EAAE,GAAG;AAC9E,KAAC,GAAG,KAAK,MAAM,KAAK,QAAQ,EAAE,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE,QAAQ,YAAU;AACnE,UAAI,CAACA,UAAS,OAAO,WAAW,OAAO,QAAQ,IAAI,OAAO,UAAU,gBAAgB,GAAG;AACrF,QAAAA,SAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,aAAa;AACjB,MAAI;AACJ,MAAIA,QAAO;AACT,aAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,KAAK,GAAG;AAChD,UAAI,OAAO,OAAO,CAAC,MAAMA,QAAO;AAC9B,qBAAa;AACb,qBAAa;AACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAIA,UAAS,YAAY;AACvB,WAAO,eAAeA;AACtB,QAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACnD,aAAO,eAAe,SAASA,OAAM,aAAa,yBAAyB,GAAG,EAAE;AAAA,IAClF,OAAO;AACL,aAAO,eAAe;AAAA,IACxB;AAAA,EACF,OAAO;AACL,WAAO,eAAe;AACtB,WAAO,eAAe;AACtB;AAAA,EACF;AACA,MAAI,OAAO,uBAAuB,OAAO,iBAAiB,UAAa,OAAO,iBAAiB,OAAO,aAAa;AACjH,WAAO,oBAAoB;AAAA,EAC7B;AACF;AAEA,IAAI,SAAS;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,mBAAmB,MAAM;AAChC,MAAI,SAAS,QAAQ;AACnB,WAAO,KAAK,aAAa,IAAI,MAAM;AAAA,EACrC;AACA,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,IACd,WAAAC;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,kBAAkB;AAC3B,WAAO,MAAM,CAACA,aAAYA;AAAA,EAC5B;AACA,MAAI,OAAO,SAAS;AAClB,WAAOA;AAAA,EACT;AACA,MAAI,mBAAmBE,cAAa,WAAW,IAAI;AACnD,sBAAoB,OAAO,sBAAsB;AACjD,MAAI,IAAK,oBAAmB,CAAC;AAC7B,SAAO,oBAAoB;AAC7B;AAEA,SAAS,aAAaF,YAAW,cAAc;AAC7C,QAAM,SAAS;AACf,QAAM;AAAA,IACJ,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,IAAI;AACR,MAAI,IAAI;AACR,QAAM,IAAI;AACV,MAAI,OAAO,aAAa,GAAG;AACzB,QAAI,MAAM,CAACA,aAAYA;AAAA,EACzB,OAAO;AACL,QAAIA;AAAA,EACN;AACA,MAAI,OAAO,cAAc;AACvB,QAAI,KAAK,MAAM,CAAC;AAChB,QAAI,KAAK,MAAM,CAAC;AAAA,EAClB;AACA,SAAO,oBAAoB,OAAO;AAClC,SAAO,YAAY,OAAO,aAAa,IAAI,IAAI;AAC/C,MAAI,OAAO,SAAS;AAClB,cAAU,OAAO,aAAa,IAAI,eAAe,WAAW,IAAI,OAAO,aAAa,IAAI,CAAC,IAAI,CAAC;AAAA,EAChG,WAAW,CAAC,OAAO,kBAAkB;AACnC,QAAI,OAAO,aAAa,GAAG;AACzB,WAAK,OAAO,sBAAsB;AAAA,IACpC,OAAO;AACL,WAAK,OAAO,sBAAsB;AAAA,IACpC;AACA,cAAU,MAAM,YAAY,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;AAAA,EAC9D;AAGA,MAAI;AACJ,QAAM,iBAAiB,OAAO,aAAa,IAAI,OAAO,aAAa;AACnE,MAAI,mBAAmB,GAAG;AACxB,kBAAc;AAAA,EAChB,OAAO;AACL,mBAAeA,aAAY,OAAO,aAAa,KAAK;AAAA,EACtD;AACA,MAAI,gBAAgB,UAAU;AAC5B,WAAO,eAAeA,UAAS;AAAA,EACjC;AACA,SAAO,KAAK,gBAAgB,OAAO,WAAW,YAAY;AAC5D;AAEA,SAAS,eAAe;AACtB,SAAO,CAAC,KAAK,SAAS,CAAC;AACzB;AAEA,SAAS,eAAe;AACtB,SAAO,CAAC,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC;AAChD;AAEA,SAAS,YAAYA,YAAW,OAAO,cAAc,iBAAiB,UAAU;AAC9E,MAAIA,eAAc,QAAQ;AACxB,IAAAA,aAAY;AAAA,EACd;AACA,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,MAAI,oBAAoB,QAAQ;AAC9B,sBAAkB;AAAA,EACpB;AACA,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,aAAa,OAAO,gCAAgC;AAC7D,WAAO;AAAA,EACT;AACA,QAAMG,gBAAe,OAAO,aAAa;AACzC,QAAMC,gBAAe,OAAO,aAAa;AACzC,MAAI;AACJ,MAAI,mBAAmBJ,aAAYG,cAAc,gBAAeA;AAAA,WAAsB,mBAAmBH,aAAYI,cAAc,gBAAeA;AAAA,MAAkB,gBAAeJ;AAGnL,SAAO,eAAe,YAAY;AAClC,MAAI,OAAO,SAAS;AAClB,UAAM,MAAM,OAAO,aAAa;AAChC,QAAI,UAAU,GAAG;AACf,gBAAU,MAAM,eAAe,WAAW,IAAI,CAAC;AAAA,IACjD,OAAO;AACL,UAAI,CAAC,OAAO,QAAQ,cAAc;AAChC,6BAAqB;AAAA,UACnB;AAAA,UACA,gBAAgB,CAAC;AAAA,UACjB,MAAM,MAAM,SAAS;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACT;AACA,gBAAU,SAAS;AAAA,QACjB,CAAC,MAAM,SAAS,KAAK,GAAG,CAAC;AAAA,QACzB,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACA,MAAI,UAAU,GAAG;AACf,WAAO,cAAc,CAAC;AACtB,WAAO,aAAa,YAAY;AAChC,QAAI,cAAc;AAChB,aAAO,KAAK,yBAAyB,OAAO,QAAQ;AACpD,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA,EACF,OAAO;AACL,WAAO,cAAc,KAAK;AAC1B,WAAO,aAAa,YAAY;AAChC,QAAI,cAAc;AAChB,aAAO,KAAK,yBAAyB,OAAO,QAAQ;AACpD,aAAO,KAAK,iBAAiB;AAAA,IAC/B;AACA,QAAI,CAAC,OAAO,WAAW;AACrB,aAAO,YAAY;AACnB,UAAI,CAAC,OAAO,mCAAmC;AAC7C,eAAO,oCAAoC,SAASK,eAAc,GAAG;AACnE,cAAI,CAAC,UAAU,OAAO,UAAW;AACjC,cAAI,EAAE,WAAW,KAAM;AACvB,iBAAO,UAAU,oBAAoB,iBAAiB,OAAO,iCAAiC;AAC9F,iBAAO,oCAAoC;AAC3C,iBAAO,OAAO;AACd,cAAI,cAAc;AAChB,mBAAO,KAAK,eAAe;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU,iBAAiB,iBAAiB,OAAO,iCAAiC;AAAA,IAC7F;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAI,YAAY;AAAA,EACd,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,cAAc,UAAU,cAAc;AAC7C,QAAM,SAAS;AACf,MAAI,CAAC,OAAO,OAAO,SAAS;AAC1B,WAAO,UAAU,MAAM,qBAAqB,GAAG,QAAQ;AACvD,WAAO,UAAU,MAAM,kBAAkB,aAAa,IAAI,QAAQ;AAAA,EACpE;AACA,SAAO,KAAK,iBAAiB,UAAU,YAAY;AACrD;AAEA,SAAS,eAAe,MAAM;AAC5B,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,MAAM;AACV,MAAI,CAAC,KAAK;AACR,QAAI,cAAc,cAAe,OAAM;AAAA,aAAgB,cAAc,cAAe,OAAM;AAAA,QAAY,OAAM;AAAA,EAC9G;AACA,SAAO,KAAK,aAAa,IAAI,EAAE;AAC/B,MAAI,gBAAgB,gBAAgB,eAAe;AACjD,QAAI,QAAQ,SAAS;AACnB,aAAO,KAAK,uBAAuB,IAAI,EAAE;AACzC;AAAA,IACF;AACA,WAAO,KAAK,wBAAwB,IAAI,EAAE;AAC1C,QAAI,QAAQ,QAAQ;AAClB,aAAO,KAAK,sBAAsB,IAAI,EAAE;AAAA,IAC1C,OAAO;AACL,aAAO,KAAK,sBAAsB,IAAI,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,cAAc,WAAW;AAChD,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,QAAS;AACpB,MAAI,OAAO,YAAY;AACrB,WAAO,iBAAiB;AAAA,EAC1B;AACA,iBAAe;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACH;AAEA,SAAS,cAAc,cAAc,WAAW;AAC9C,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AACJ,SAAO,YAAY;AACnB,MAAI,OAAO,QAAS;AACpB,SAAO,cAAc,CAAC;AACtB,iBAAe;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACH;AAEA,IAAI,aAAa;AAAA,EACf;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,QAAQ,OAAO,OAAO,cAAc,UAAU,SAAS;AAC9D,MAAI,UAAU,QAAQ;AACpB,YAAQ;AAAA,EACV;AACA,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,YAAQ,SAAS,OAAO,EAAE;AAAA,EAC5B;AACA,QAAM,SAAS;AACf,MAAI,aAAa;AACjB,MAAI,aAAa,EAAG,cAAa;AACjC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,aAAa,OAAO,kCAAkC,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS;AAClG,WAAO;AAAA,EACT;AACA,QAAM,OAAO,KAAK,IAAI,OAAO,OAAO,oBAAoB,UAAU;AAClE,MAAI,YAAY,OAAO,KAAK,OAAO,aAAa,QAAQ,OAAO,OAAO,cAAc;AACpF,MAAI,aAAa,SAAS,OAAQ,aAAY,SAAS,SAAS;AAChE,QAAML,aAAY,CAAC,SAAS,SAAS;AAErC,MAAI,OAAO,qBAAqB;AAC9B,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAC7C,YAAM,sBAAsB,CAAC,KAAK,MAAMA,aAAY,GAAG;AACvD,YAAM,iBAAiB,KAAK,MAAM,WAAW,CAAC,IAAI,GAAG;AACrD,YAAM,qBAAqB,KAAK,MAAM,WAAW,IAAI,CAAC,IAAI,GAAG;AAC7D,UAAI,OAAO,WAAW,IAAI,CAAC,MAAM,aAAa;AAC5C,YAAI,uBAAuB,kBAAkB,sBAAsB,sBAAsB,qBAAqB,kBAAkB,GAAG;AACjI,uBAAa;AAAA,QACf,WAAW,uBAAuB,kBAAkB,sBAAsB,oBAAoB;AAC5F,uBAAa,IAAI;AAAA,QACnB;AAAA,MACF,WAAW,uBAAuB,gBAAgB;AAChD,qBAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,eAAe,eAAe,aAAa;AACpD,QAAI,CAAC,OAAO,mBAAmB,MAAMA,aAAY,OAAO,aAAaA,aAAY,OAAO,aAAa,IAAIA,aAAY,OAAO,aAAaA,aAAY,OAAO,aAAa,IAAI;AAC3K,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,kBAAkBA,aAAY,OAAO,aAAaA,aAAY,OAAO,aAAa,GAAG;AAC/F,WAAK,eAAe,OAAO,YAAY;AACrC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,gBAAgB,iBAAiB,MAAM,cAAc;AACvD,WAAO,KAAK,wBAAwB;AAAA,EACtC;AAGA,SAAO,eAAeA,UAAS;AAC/B,MAAI;AACJ,MAAI,aAAa,YAAa,aAAY;AAAA,WAAgB,aAAa,YAAa,aAAY;AAAA,MAAY,aAAY;AAGxH,MAAI,OAAO,CAACA,eAAc,OAAO,aAAa,CAAC,OAAOA,eAAc,OAAO,WAAW;AACpF,WAAO,kBAAkB,UAAU;AAEnC,QAAI,OAAO,YAAY;AACrB,aAAO,iBAAiB;AAAA,IAC1B;AACA,WAAO,oBAAoB;AAC3B,QAAI,OAAO,WAAW,SAAS;AAC7B,aAAO,aAAaA,UAAS;AAAA,IAC/B;AACA,QAAI,cAAc,SAAS;AACzB,aAAO,gBAAgB,cAAc,SAAS;AAC9C,aAAO,cAAc,cAAc,SAAS;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,SAAS;AAClB,UAAM,MAAM,OAAO,aAAa;AAChC,UAAM,IAAI,MAAMA,aAAY,CAACA;AAC7B,QAAI,UAAU,GAAG;AACf,YAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAC1D,UAAI,WAAW;AACb,eAAO,UAAU,MAAM,iBAAiB;AACxC,eAAO,oBAAoB;AAAA,MAC7B;AACA,UAAI,aAAa,CAAC,OAAO,6BAA6B,OAAO,OAAO,eAAe,GAAG;AACpF,eAAO,4BAA4B;AACnC,8BAAsB,MAAM;AAC1B,oBAAU,MAAM,eAAe,WAAW,IAAI;AAAA,QAChD,CAAC;AAAA,MACH,OAAO;AACL,kBAAU,MAAM,eAAe,WAAW,IAAI;AAAA,MAChD;AACA,UAAI,WAAW;AACb,8BAAsB,MAAM;AAC1B,iBAAO,UAAU,MAAM,iBAAiB;AACxC,iBAAO,oBAAoB;AAAA,QAC7B,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,UAAI,CAAC,OAAO,QAAQ,cAAc;AAChC,6BAAqB;AAAA,UACnB;AAAA,UACA,gBAAgB;AAAA,UAChB,MAAM,MAAM,SAAS;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACT;AACA,gBAAU,SAAS;AAAA,QACjB,CAAC,MAAM,SAAS,KAAK,GAAG;AAAA,QACxB,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACA,SAAO,cAAc,KAAK;AAC1B,SAAO,aAAaA,UAAS;AAC7B,SAAO,kBAAkB,UAAU;AACnC,SAAO,oBAAoB;AAC3B,SAAO,KAAK,yBAAyB,OAAO,QAAQ;AACpD,SAAO,gBAAgB,cAAc,SAAS;AAC9C,MAAI,UAAU,GAAG;AACf,WAAO,cAAc,cAAc,SAAS;AAAA,EAC9C,WAAW,CAAC,OAAO,WAAW;AAC5B,WAAO,YAAY;AACnB,QAAI,CAAC,OAAO,+BAA+B;AACzC,aAAO,gCAAgC,SAASK,eAAc,GAAG;AAC/D,YAAI,CAAC,UAAU,OAAO,UAAW;AACjC,YAAI,EAAE,WAAW,KAAM;AACvB,eAAO,UAAU,oBAAoB,iBAAiB,OAAO,6BAA6B;AAC1F,eAAO,gCAAgC;AACvC,eAAO,OAAO;AACd,eAAO,cAAc,cAAc,SAAS;AAAA,MAC9C;AAAA,IACF;AACA,WAAO,UAAU,iBAAiB,iBAAiB,OAAO,6BAA6B;AAAA,EACzF;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAO,OAAO,cAAc,UAAU;AACzD,MAAI,UAAU,QAAQ;AACpB,YAAQ;AAAA,EACV;AACA,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,gBAAgB,SAAS,OAAO,EAAE;AACxC,YAAQ;AAAA,EACV;AACA,QAAM,SAAS;AACf,MAAI,WAAW;AACf,MAAI,OAAO,OAAO,MAAM;AACtB,QAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AAEnD,iBAAW,WAAW,OAAO,QAAQ;AAAA,IACvC,OAAO;AACL,iBAAW,OAAO,oBAAoB,QAAQ;AAAA,IAChD;AAAA,EACF;AACA,SAAO,OAAO,QAAQ,UAAU,OAAO,cAAc,QAAQ;AAC/D;AAGA,SAAS,UAAU,OAAO,cAAc,UAAU;AAChD,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,WAAW,OAAO;AACtB,MAAI,OAAO,kBAAkB,UAAU,OAAO,mBAAmB,KAAK,OAAO,oBAAoB;AAC/F,eAAW,KAAK,IAAI,OAAO,qBAAqB,WAAW,IAAI,GAAG,CAAC;AAAA,EACrE;AACA,QAAM,YAAY,OAAO,cAAc,OAAO,qBAAqB,IAAI;AACvE,QAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,MAAI,OAAO,MAAM;AACf,QAAI,aAAa,CAAC,aAAa,OAAO,oBAAqB,QAAO;AAClE,WAAO,QAAQ;AAAA,MACb,WAAW;AAAA,IACb,CAAC;AAED,WAAO,cAAc,OAAO,UAAU;AACtC,QAAI,OAAO,gBAAgB,OAAO,OAAO,SAAS,KAAK,OAAO,SAAS;AACrE,4BAAsB,MAAM;AAC1B,eAAO,QAAQ,OAAO,cAAc,WAAW,OAAO,cAAc,QAAQ;AAAA,MAC9E,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,OAAO,UAAU,OAAO,OAAO;AACjC,WAAO,OAAO,QAAQ,GAAG,OAAO,cAAc,QAAQ;AAAA,EACxD;AACA,SAAO,OAAO,QAAQ,OAAO,cAAc,WAAW,OAAO,cAAc,QAAQ;AACrF;AAGA,SAAS,UAAU,OAAO,cAAc,UAAU;AAChD,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,MAAI,OAAO,MAAM;AACf,QAAI,aAAa,CAAC,aAAa,OAAO,oBAAqB,QAAO;AAClE,WAAO,QAAQ;AAAA,MACb,WAAW;AAAA,IACb,CAAC;AAED,WAAO,cAAc,OAAO,UAAU;AAAA,EACxC;AACA,QAAML,aAAY,eAAe,OAAO,YAAY,CAAC,OAAO;AAC5D,WAAS,UAAU,KAAK;AACtB,QAAI,MAAM,EAAG,QAAO,CAAC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC;AAC7C,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB;AACA,QAAM,sBAAsB,UAAUA,UAAS;AAC/C,QAAM,qBAAqB,SAAS,IAAI,SAAO,UAAU,GAAG,CAAC;AAC7D,MAAI,WAAW,SAAS,mBAAmB,QAAQ,mBAAmB,IAAI,CAAC;AAC3E,MAAI,OAAO,aAAa,eAAe,OAAO,SAAS;AACrD,QAAI;AACJ,aAAS,QAAQ,CAAC,MAAM,cAAc;AACpC,UAAI,uBAAuB,MAAM;AAE/B,wBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AACD,QAAI,OAAO,kBAAkB,aAAa;AACxC,iBAAW,SAAS,gBAAgB,IAAI,gBAAgB,IAAI,aAAa;AAAA,IAC3E;AAAA,EACF;AACA,MAAI,YAAY;AAChB,MAAI,OAAO,aAAa,aAAa;AACnC,gBAAY,WAAW,QAAQ,QAAQ;AACvC,QAAI,YAAY,EAAG,aAAY,OAAO,cAAc;AACpD,QAAI,OAAO,kBAAkB,UAAU,OAAO,mBAAmB,KAAK,OAAO,oBAAoB;AAC/F,kBAAY,YAAY,OAAO,qBAAqB,YAAY,IAAI,IAAI;AACxE,kBAAY,KAAK,IAAI,WAAW,CAAC;AAAA,IACnC;AAAA,EACF;AACA,MAAI,OAAO,UAAU,OAAO,aAAa;AACvC,UAAM,YAAY,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,IAAI,OAAO,OAAO,SAAS;AACvJ,WAAO,OAAO,QAAQ,WAAW,OAAO,cAAc,QAAQ;AAAA,EAChE,WAAW,OAAO,QAAQ,OAAO,gBAAgB,KAAK,OAAO,SAAS;AACpE,0BAAsB,MAAM;AAC1B,aAAO,QAAQ,WAAW,OAAO,cAAc,QAAQ;AAAA,IACzD,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO,OAAO,QAAQ,WAAW,OAAO,cAAc,QAAQ;AAChE;AAGA,SAAS,WAAW,OAAO,cAAc,UAAU;AACjD,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,QAAM,SAAS;AACf,SAAO,OAAO,QAAQ,OAAO,aAAa,OAAO,cAAc,QAAQ;AACzE;AAGA,SAAS,eAAe,OAAO,cAAc,UAAU,WAAW;AAChE,MAAI,UAAU,QAAQ;AACpB,YAAQ,KAAK,OAAO;AAAA,EACtB;AACA,MAAI,iBAAiB,QAAQ;AAC3B,mBAAe;AAAA,EACjB;AACA,MAAI,cAAc,QAAQ;AACxB,gBAAY;AAAA,EACd;AACA,QAAM,SAAS;AACf,MAAI,QAAQ,OAAO;AACnB,QAAM,OAAO,KAAK,IAAI,OAAO,OAAO,oBAAoB,KAAK;AAC7D,QAAM,YAAY,OAAO,KAAK,OAAO,QAAQ,QAAQ,OAAO,OAAO,cAAc;AACjF,QAAMA,aAAY,OAAO,eAAe,OAAO,YAAY,CAAC,OAAO;AACnE,MAAIA,cAAa,OAAO,SAAS,SAAS,GAAG;AAG3C,UAAM,cAAc,OAAO,SAAS,SAAS;AAC7C,UAAM,WAAW,OAAO,SAAS,YAAY,CAAC;AAC9C,QAAIA,aAAY,eAAe,WAAW,eAAe,WAAW;AAClE,eAAS,OAAO,OAAO;AAAA,IACzB;AAAA,EACF,OAAO;AAGL,UAAM,WAAW,OAAO,SAAS,YAAY,CAAC;AAC9C,UAAM,cAAc,OAAO,SAAS,SAAS;AAC7C,QAAIA,aAAY,aAAa,cAAc,YAAY,WAAW;AAChE,eAAS,OAAO,OAAO;AAAA,IACzB;AAAA,EACF;AACA,UAAQ,KAAK,IAAI,OAAO,CAAC;AACzB,UAAQ,KAAK,IAAI,OAAO,OAAO,WAAW,SAAS,CAAC;AACpD,SAAO,OAAO,QAAQ,OAAO,OAAO,cAAc,QAAQ;AAC5D;AAEA,SAAS,sBAAsB;AAC7B,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,gBAAgB,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,OAAO;AAC/F,MAAI,eAAe,OAAO;AAC1B,MAAI;AACJ,QAAM,gBAAgB,OAAO,YAAY,iBAAiB,IAAI,OAAO,UAAU;AAC/E,MAAI,OAAO,MAAM;AACf,QAAI,OAAO,UAAW;AACtB,gBAAY,SAAS,OAAO,aAAa,aAAa,yBAAyB,GAAG,EAAE;AACpF,QAAI,OAAO,gBAAgB;AACzB,UAAI,eAAe,OAAO,eAAe,gBAAgB,KAAK,eAAe,OAAO,OAAO,SAAS,OAAO,eAAe,gBAAgB,GAAG;AAC3I,eAAO,QAAQ;AACf,uBAAe,OAAO,cAAc,gBAAgB,UAAU,GAAG,aAAa,6BAA6B,SAAS,IAAI,EAAE,CAAC,CAAC;AAC5H,QAAAM,UAAS,MAAM;AACb,iBAAO,QAAQ,YAAY;AAAA,QAC7B,CAAC;AAAA,MACH,OAAO;AACL,eAAO,QAAQ,YAAY;AAAA,MAC7B;AAAA,IACF,WAAW,eAAe,OAAO,OAAO,SAAS,eAAe;AAC9D,aAAO,QAAQ;AACf,qBAAe,OAAO,cAAc,gBAAgB,UAAU,GAAG,aAAa,6BAA6B,SAAS,IAAI,EAAE,CAAC,CAAC;AAC5H,MAAAA,UAAS,MAAM;AACb,eAAO,QAAQ,YAAY;AAAA,MAC7B,CAAC;AAAA,IACH,OAAO;AACL,aAAO,QAAQ,YAAY;AAAA,IAC7B;AAAA,EACF,OAAO;AACL,WAAO,QAAQ,YAAY;AAAA,EAC7B;AACF;AAEA,IAAI,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,WAAW,gBAAgB;AAClC,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,QAAS;AACrE,QAAM,SAAS,gBAAgB,UAAU,IAAI,OAAO,UAAU,gBAAgB;AAC9E,SAAO,QAAQ,CAAC,IAAI,UAAU;AAC5B,OAAG,aAAa,2BAA2B,KAAK;AAAA,EAClD,CAAC;AACD,SAAO,QAAQ;AAAA,IACb;AAAA,IACA,WAAW,OAAO,iBAAiB,SAAY;AAAA,EACjD,CAAC;AACH;AAEA,SAAS,QAAQ,OAAO;AACtB,MAAI;AAAA,IACF;AAAA,IACA,SAAAC,WAAU;AAAA,IACV;AAAA,IACA,cAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,UAAU,SAAS,CAAC,IAAI;AAC5B,QAAM,SAAS;AACf,MAAI,CAAC,OAAO,OAAO,KAAM;AACzB,SAAO,KAAK,eAAe;AAC3B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SAAO,iBAAiB;AACxB,SAAO,iBAAiB;AACxB,MAAI,OAAO,WAAW,OAAO,QAAQ,SAAS;AAC5C,QAAID,UAAS;AACX,UAAI,CAAC,OAAO,kBAAkB,OAAO,cAAc,GAAG;AACpD,eAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,GAAG,OAAO,IAAI;AAAA,MAC7D,WAAW,OAAO,kBAAkB,OAAO,YAAY,OAAO,eAAe;AAC3E,eAAO,QAAQ,OAAO,QAAQ,OAAO,SAAS,OAAO,WAAW,GAAG,OAAO,IAAI;AAAA,MAChF,WAAW,OAAO,cAAc,OAAO,SAAS,SAAS,GAAG;AAC1D,eAAO,QAAQ,OAAO,QAAQ,cAAc,GAAG,OAAO,IAAI;AAAA,MAC5D;AAAA,IACF;AACA,WAAO,iBAAiB;AACxB,WAAO,iBAAiB;AACxB,WAAO,KAAK,SAAS;AACrB;AAAA,EACF;AACA,QAAM,gBAAgB,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,KAAK,KAAK,WAAW,OAAO,eAAe,EAAE,CAAC;AACtI,MAAI,eAAe,OAAO,gBAAgB;AAC1C,MAAI,eAAe,OAAO,mBAAmB,GAAG;AAC9C,oBAAgB,OAAO,iBAAiB,eAAe,OAAO;AAAA,EAChE;AACA,SAAO,eAAe;AACtB,QAAM,uBAAuB,CAAC;AAC9B,QAAM,sBAAsB,CAAC;AAC7B,MAAI,cAAc,OAAO;AACzB,MAAI,OAAO,qBAAqB,aAAa;AAC3C,uBAAmB,OAAO,cAAc,OAAO,OAAO,OAAO,QAAM,GAAG,UAAU,SAAS,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAAA,EACvH,OAAO;AACL,kBAAc;AAAA,EAChB;AACA,QAAM,SAAS,cAAc,UAAU,CAAC;AACxC,QAAM,SAAS,cAAc,UAAU,CAAC;AACxC,MAAI,kBAAkB;AACtB,MAAI,iBAAiB;AAErB,MAAI,mBAAmB,cAAc;AACnC,sBAAkB,KAAK,IAAI,eAAe,kBAAkB,OAAO,cAAc;AACjF,aAAS,IAAI,GAAG,IAAI,eAAe,kBAAkB,KAAK,GAAG;AAC3D,YAAM,QAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO;AACzD,2BAAqB,KAAK,OAAO,SAAS,QAAQ,CAAC;AAAA,IACrD;AAAA,EACF,WAAW,mBAAyC,OAAO,OAAO,SAAS,eAAe,GAAG;AAC3F,qBAAiB,KAAK,IAAI,oBAAoB,OAAO,OAAO,SAAS,eAAe,IAAI,OAAO,cAAc;AAC7G,aAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK,GAAG;AAC1C,YAAM,QAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO;AACzD,0BAAoB,KAAK,KAAK;AAAA,IAChC;AAAA,EACF;AACA,MAAI,QAAQ;AACV,yBAAqB,QAAQ,WAAS;AACpC,aAAO,OAAO,KAAK,EAAE,oBAAoB;AACzC,eAAS,QAAQ,OAAO,OAAO,KAAK,CAAC;AACrC,aAAO,OAAO,KAAK,EAAE,oBAAoB;AAAA,IAC3C,CAAC;AAAA,EACH;AACA,MAAI,QAAQ;AACV,wBAAoB,QAAQ,WAAS;AACnC,aAAO,OAAO,KAAK,EAAE,oBAAoB;AACzC,eAAS,OAAO,OAAO,OAAO,KAAK,CAAC;AACpC,aAAO,OAAO,KAAK,EAAE,oBAAoB;AAAA,IAC3C,CAAC;AAAA,EACH;AACA,SAAO,aAAa;AACpB,MAAI,OAAO,kBAAkB,QAAQ;AACnC,WAAO,aAAa;AAAA,EACtB;AACA,MAAI,OAAO,qBAAqB;AAC9B,WAAO,mBAAmB;AAAA,EAC5B;AACA,MAAIA,UAAS;AACX,QAAI,qBAAqB,SAAS,KAAK,QAAQ;AAC7C,UAAI,OAAO,mBAAmB,aAAa;AACzC,cAAM,wBAAwB,OAAO,WAAW,WAAW;AAC3D,cAAM,oBAAoB,OAAO,WAAW,cAAc,eAAe;AACzE,cAAM,OAAO,oBAAoB;AACjC,YAAI,cAAc;AAChB,iBAAO,aAAa,OAAO,YAAY,IAAI;AAAA,QAC7C,OAAO;AACL,iBAAO,QAAQ,cAAc,iBAAiB,GAAG,OAAO,IAAI;AAC5D,cAAIC,eAAc;AAChB,mBAAO,QAAQ,OAAO,aAAa,IAAI,WAAW,QAAQ,KAAK;AAC/D,mBAAO,gBAAgB,mBAAmB,OAAO;AAAA,UACnD;AAAA,QACF;AAAA,MACF,OAAO;AACL,YAAIA,eAAc;AAChB,iBAAO,YAAY,gBAAgB,GAAG,OAAO,IAAI;AACjD,iBAAO,gBAAgB,mBAAmB,OAAO;AAAA,QACnD;AAAA,MACF;AAAA,IACF,WAAW,oBAAoB,SAAS,KAAK,QAAQ;AACnD,UAAI,OAAO,mBAAmB,aAAa;AACzC,cAAM,wBAAwB,OAAO,WAAW,WAAW;AAC3D,cAAM,oBAAoB,OAAO,WAAW,cAAc,cAAc;AACxE,cAAM,OAAO,oBAAoB;AACjC,YAAI,cAAc;AAChB,iBAAO,aAAa,OAAO,YAAY,IAAI;AAAA,QAC7C,OAAO;AACL,iBAAO,QAAQ,cAAc,gBAAgB,GAAG,OAAO,IAAI;AAC3D,cAAIA,eAAc;AAChB,mBAAO,QAAQ,OAAO,aAAa,IAAI,WAAW,QAAQ,KAAK;AAC/D,mBAAO,gBAAgB,mBAAmB,OAAO;AAAA,UACnD;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO,YAAY,gBAAgB,GAAG,OAAO,IAAI;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACA,SAAO,iBAAiB;AACxB,SAAO,iBAAiB;AACxB,MAAI,OAAO,cAAc,OAAO,WAAW,WAAW,CAAC,cAAc;AACnE,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA,cAAAA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB;AACA,QAAI,MAAM,QAAQ,OAAO,WAAW,OAAO,GAAG;AAC5C,aAAO,WAAW,QAAQ,QAAQ,OAAK;AACrC,YAAI,CAAC,EAAE,aAAa,EAAE,OAAO,KAAM,GAAE,QAAQ;AAAA,UAC3C,GAAG;AAAA,UACH,SAAS,EAAE,OAAO,kBAAkB,OAAO,gBAAgBD,WAAU;AAAA,QACvE,CAAC;AAAA,MACH,CAAC;AAAA,IACH,WAAW,OAAO,WAAW,mBAAmB,OAAO,eAAe,OAAO,WAAW,QAAQ,OAAO,MAAM;AAC3G,aAAO,WAAW,QAAQ,QAAQ;AAAA,QAChC,GAAG;AAAA,QACH,SAAS,OAAO,WAAW,QAAQ,OAAO,kBAAkB,OAAO,gBAAgBA,WAAU;AAAA,MAC/F,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,KAAK,SAAS;AACvB;AAEA,SAAS,cAAc;AACrB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,QAAS;AACrE,SAAO,aAAa;AACpB,QAAM,iBAAiB,CAAC;AACxB,SAAO,OAAO,QAAQ,aAAW;AAC/B,UAAM,QAAQ,OAAO,QAAQ,qBAAqB,cAAc,QAAQ,aAAa,yBAAyB,IAAI,IAAI,QAAQ;AAC9H,mBAAe,KAAK,IAAI;AAAA,EAC1B,CAAC;AACD,SAAO,OAAO,QAAQ,aAAW;AAC/B,YAAQ,gBAAgB,yBAAyB;AAAA,EACnD,CAAC;AACD,iBAAe,QAAQ,aAAW;AAChC,aAAS,OAAO,OAAO;AAAA,EACzB,CAAC;AACD,SAAO,aAAa;AACpB,SAAO,QAAQ,OAAO,WAAW,CAAC;AACpC;AAEA,IAAI,OAAO;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,cAAc,QAAQ;AAC7B,QAAM,SAAS;AACf,MAAI,CAAC,OAAO,OAAO,iBAAiB,OAAO,OAAO,iBAAiB,OAAO,YAAY,OAAO,OAAO,QAAS;AAC7G,QAAM,KAAK,OAAO,OAAO,sBAAsB,cAAc,OAAO,KAAK,OAAO;AAChF,MAAI,OAAO,WAAW;AACpB,WAAO,sBAAsB;AAAA,EAC/B;AACA,KAAG,MAAM,SAAS;AAClB,KAAG,MAAM,SAAS,SAAS,aAAa;AACxC,MAAI,OAAO,WAAW;AACpB,0BAAsB,MAAM;AAC1B,aAAO,sBAAsB;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AAEA,SAAS,kBAAkB;AACzB,QAAM,SAAS;AACf,MAAI,OAAO,OAAO,iBAAiB,OAAO,YAAY,OAAO,OAAO,SAAS;AAC3E;AAAA,EACF;AACA,MAAI,OAAO,WAAW;AACpB,WAAO,sBAAsB;AAAA,EAC/B;AACA,SAAO,OAAO,OAAO,sBAAsB,cAAc,OAAO,WAAW,EAAE,MAAM,SAAS;AAC5F,MAAI,OAAO,WAAW;AACpB,0BAAsB,MAAM;AAC1B,aAAO,sBAAsB;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AAEA,IAAI,aAAa;AAAA,EACf;AAAA,EACA;AACF;AAGA,SAAS,eAAe,UAAU,MAAM;AACtC,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACA,WAAS,cAAc,IAAI;AACzB,QAAI,CAAC,MAAM,OAAOf,aAAY,KAAK,OAAOF,WAAU,EAAG,QAAO;AAC9D,QAAI,GAAG,aAAc,MAAK,GAAG;AAC7B,UAAM,QAAQ,GAAG,QAAQ,QAAQ;AACjC,QAAI,CAAC,SAAS,CAAC,GAAG,aAAa;AAC7B,aAAO;AAAA,IACT;AACA,WAAO,SAAS,cAAc,GAAG,YAAY,EAAE,IAAI;AAAA,EACrD;AACA,SAAO,cAAc,IAAI;AAC3B;AACA,SAAS,aAAaQ,QAAO;AAC3B,QAAM,SAAS;AACf,QAAMP,YAAWC,aAAY;AAC7B,QAAMH,UAASC,WAAU;AACzB,QAAM,OAAO,OAAO;AACpB,OAAK,QAAQ,KAAKQ,MAAK;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,QAAS;AACd,MAAI,CAAC,OAAO,iBAAiBA,OAAM,gBAAgB,QAAS;AAC5D,MAAI,OAAO,aAAa,OAAO,gCAAgC;AAC7D;AAAA,EACF;AACA,MAAI,CAAC,OAAO,aAAa,OAAO,WAAW,OAAO,MAAM;AACtD,WAAO,QAAQ;AAAA,EACjB;AACA,MAAI,IAAIA;AACR,MAAI,EAAE,cAAe,KAAI,EAAE;AAC3B,MAAI,WAAW,EAAE;AACjB,MAAI,OAAO,sBAAsB,WAAW;AAC1C,QAAI,CAAC,OAAO,UAAU,SAAS,QAAQ,EAAG;AAAA,EAC5C;AACA,MAAI,WAAW,KAAK,EAAE,UAAU,EAAG;AACnC,MAAI,YAAY,KAAK,EAAE,SAAS,EAAG;AACnC,MAAI,KAAK,aAAa,KAAK,QAAS;AAGpC,QAAM,uBAAuB,CAAC,CAAC,OAAO,kBAAkB,OAAO,mBAAmB;AAElF,QAAM,YAAYA,OAAM,eAAeA,OAAM,aAAa,IAAIA,OAAM;AACpE,MAAI,wBAAwB,EAAE,UAAU,EAAE,OAAO,cAAc,WAAW;AACxE,eAAW,UAAU,CAAC;AAAA,EACxB;AACA,QAAM,oBAAoB,OAAO,oBAAoB,OAAO,oBAAoB,IAAI,OAAO,cAAc;AACzG,QAAM,iBAAiB,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO;AAG/C,MAAI,OAAO,cAAc,iBAAiB,eAAe,mBAAmB,QAAQ,IAAI,SAAS,QAAQ,iBAAiB,IAAI;AAC5H,WAAO,aAAa;AACpB;AAAA,EACF;AACA,MAAI,OAAO,cAAc;AACvB,QAAI,CAAC,SAAS,QAAQ,OAAO,YAAY,EAAG;AAAA,EAC9C;AACA,UAAQ,WAAW,EAAE;AACrB,UAAQ,WAAW,EAAE;AACrB,QAAM,SAAS,QAAQ;AACvB,QAAM,SAAS,QAAQ;AAIvB,QAAM,qBAAqB,OAAO,sBAAsB,OAAO;AAC/D,QAAM,qBAAqB,OAAO,sBAAsB,OAAO;AAC/D,MAAI,uBAAuB,UAAU,sBAAsB,UAAUT,QAAO,aAAa,qBAAqB;AAC5G,QAAI,uBAAuB,WAAW;AACpC,MAAAS,OAAM,eAAe;AAAA,IACvB,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACA,SAAO,OAAO,MAAM;AAAA,IAClB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,qBAAqB;AAAA,IACrB,aAAa;AAAA,IACb,aAAa;AAAA,EACf,CAAC;AACD,UAAQ,SAAS;AACjB,UAAQ,SAAS;AACjB,OAAK,iBAAiBW,KAAI;AAC1B,SAAO,aAAa;AACpB,SAAO,WAAW;AAClB,SAAO,iBAAiB;AACxB,MAAI,OAAO,YAAY,EAAG,MAAK,qBAAqB;AACpD,MAAI,iBAAiB;AACrB,MAAI,SAAS,QAAQ,KAAK,iBAAiB,GAAG;AAC5C,qBAAiB;AACjB,QAAI,SAAS,aAAa,UAAU;AAClC,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AACA,MAAIlB,UAAS,iBAAiBA,UAAS,cAAc,QAAQ,KAAK,iBAAiB,KAAKA,UAAS,kBAAkB,UAAU;AAC3H,IAAAA,UAAS,cAAc,KAAK;AAAA,EAC9B;AACA,QAAM,uBAAuB,kBAAkB,OAAO,kBAAkB,OAAO;AAC/E,OAAK,OAAO,iCAAiC,yBAAyB,CAAC,SAAS,mBAAmB;AACjG,MAAE,eAAe;AAAA,EACnB;AACA,MAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,YAAY,OAAO,aAAa,CAAC,OAAO,SAAS;AACxG,WAAO,SAAS,aAAa;AAAA,EAC/B;AACA,SAAO,KAAK,cAAc,CAAC;AAC7B;AAEA,SAAS,YAAYO,QAAO;AAC1B,QAAMP,YAAWC,aAAY;AAC7B,QAAM,SAAS;AACf,QAAM,OAAO,OAAO;AACpB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,QAAS;AACd,MAAI,CAAC,OAAO,iBAAiBM,OAAM,gBAAgB,QAAS;AAC5D,MAAI,IAAIA;AACR,MAAI,EAAE,cAAe,KAAI,EAAE;AAC3B,MAAI,CAAC,KAAK,WAAW;AACnB,QAAI,KAAK,eAAe,KAAK,aAAa;AACxC,aAAO,KAAK,qBAAqB,CAAC;AAAA,IACpC;AACA;AAAA,EACF;AACA,QAAM,eAAe,KAAK,QAAQ,UAAU,cAAY,SAAS,cAAc,EAAE,SAAS;AAC1F,MAAI,gBAAgB,EAAG,MAAK,QAAQ,YAAY,IAAI;AACpD,QAAM,cAAc,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,CAAC,IAAI;AAChE,QAAM,QAAQ,YAAY;AAC1B,QAAM,QAAQ,YAAY;AAC1B,MAAI,EAAE,yBAAyB;AAC7B,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB;AAAA,EACF;AACA,MAAI,CAAC,OAAO,gBAAgB;AAC1B,QAAI,CAAC,EAAE,OAAO,QAAQ,KAAK,iBAAiB,GAAG;AAC7C,aAAO,aAAa;AAAA,IACtB;AACA,QAAI,KAAK,WAAW;AAClB,aAAO,OAAO,SAAS;AAAA,QACrB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,OAAO,QAAQ;AAAA,QACtB,OAAO,OAAO,QAAQ;AAAA,QACtB,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AACD,WAAK,iBAAiBW,KAAI;AAAA,IAC5B;AACA;AAAA,EACF;AACA,MAAI,OAAO,uBAAuB,CAAC,OAAO,MAAM;AAC9C,QAAI,OAAO,WAAW,GAAG;AAEvB,UAAI,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,KAAK,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,GAAG;AAC9I,aAAK,YAAY;AACjB,aAAK,UAAU;AACf;AAAA,MACF;AAAA,IACF,WAAW,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,KAAK,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,GAAG;AACrJ;AAAA,IACF;AAAA,EACF;AACA,MAAIlB,UAAS,eAAe;AAC1B,QAAI,EAAE,WAAWA,UAAS,iBAAiB,EAAE,OAAO,QAAQ,KAAK,iBAAiB,GAAG;AACnF,WAAK,UAAU;AACf,aAAO,aAAa;AACpB;AAAA,IACF;AAAA,EACF;AACA,MAAI,KAAK,qBAAqB;AAC5B,WAAO,KAAK,aAAa,CAAC;AAAA,EAC5B;AACA,MAAI,EAAE,iBAAiB,EAAE,cAAc,SAAS,EAAG;AACnD,UAAQ,WAAW;AACnB,UAAQ,WAAW;AACnB,QAAM,QAAQ,QAAQ,WAAW,QAAQ;AACzC,QAAM,QAAQ,QAAQ,WAAW,QAAQ;AACzC,MAAI,OAAO,OAAO,aAAa,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,OAAO,OAAO,UAAW;AAC7F,MAAI,OAAO,KAAK,gBAAgB,aAAa;AAC3C,QAAI;AACJ,QAAI,OAAO,aAAa,KAAK,QAAQ,aAAa,QAAQ,UAAU,OAAO,WAAW,KAAK,QAAQ,aAAa,QAAQ,QAAQ;AAC9H,WAAK,cAAc;AAAA,IACrB,OAAO;AAEL,UAAI,QAAQ,QAAQ,QAAQ,SAAS,IAAI;AACvC,qBAAa,KAAK,MAAM,KAAK,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK;AACvE,aAAK,cAAc,OAAO,aAAa,IAAI,aAAa,OAAO,aAAa,KAAK,aAAa,OAAO;AAAA,MACvG;AAAA,IACF;AAAA,EACF;AACA,MAAI,KAAK,aAAa;AACpB,WAAO,KAAK,qBAAqB,CAAC;AAAA,EACpC;AACA,MAAI,OAAO,KAAK,gBAAgB,aAAa;AAC3C,QAAI,QAAQ,aAAa,QAAQ,UAAU,QAAQ,aAAa,QAAQ,QAAQ;AAC9E,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AACA,MAAI,KAAK,eAAe,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,WAAW,KAAK,QAAQ,SAAS,GAAG;AAClH,SAAK,YAAY;AACjB;AAAA,EACF;AACA,MAAI,CAAC,KAAK,aAAa;AACrB;AAAA,EACF;AACA,SAAO,aAAa;AACpB,MAAI,CAAC,OAAO,WAAW,EAAE,YAAY;AACnC,MAAE,eAAe;AAAA,EACnB;AACA,MAAI,OAAO,4BAA4B,CAAC,OAAO,QAAQ;AACrD,MAAE,gBAAgB;AAAA,EACpB;AACA,MAAI,OAAO,OAAO,aAAa,IAAI,QAAQ;AAC3C,MAAI,cAAc,OAAO,aAAa,IAAI,QAAQ,WAAW,QAAQ,YAAY,QAAQ,WAAW,QAAQ;AAC5G,MAAI,OAAO,gBAAgB;AACzB,WAAO,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI;AACnC,kBAAc,KAAK,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,EACnD;AACA,UAAQ,OAAO;AACf,UAAQ,OAAO;AACf,MAAI,KAAK;AACP,WAAO,CAAC;AACR,kBAAc,CAAC;AAAA,EACjB;AACA,QAAM,uBAAuB,OAAO;AACpC,SAAO,iBAAiB,OAAO,IAAI,SAAS;AAC5C,SAAO,mBAAmB,cAAc,IAAI,SAAS;AACrD,QAAM,SAAS,OAAO,OAAO,QAAQ,CAAC,OAAO;AAC7C,QAAM,eAAe,OAAO,mBAAmB,UAAU,OAAO,kBAAkB,OAAO,mBAAmB,UAAU,OAAO;AAC7H,MAAI,CAAC,KAAK,SAAS;AACjB,QAAI,UAAU,cAAc;AAC1B,aAAO,QAAQ;AAAA,QACb,WAAW,OAAO;AAAA,MACpB,CAAC;AAAA,IACH;AACA,SAAK,iBAAiB,OAAO,aAAa;AAC1C,WAAO,cAAc,CAAC;AACtB,QAAI,OAAO,WAAW;AACpB,YAAM,MAAM,IAAI,OAAO,YAAY,iBAAiB;AAAA,QAClD,SAAS;AAAA,QACT,YAAY;AAAA,MACd,CAAC;AACD,aAAO,UAAU,cAAc,GAAG;AAAA,IACpC;AACA,SAAK,sBAAsB;AAE3B,QAAI,OAAO,eAAe,OAAO,mBAAmB,QAAQ,OAAO,mBAAmB,OAAO;AAC3F,aAAO,cAAc,IAAI;AAAA,IAC3B;AACA,WAAO,KAAK,mBAAmB,CAAC;AAAA,EAClC;AACA,MAAI;AACJ,MAAI,KAAK,WAAW,yBAAyB,OAAO,oBAAoB,UAAU,gBAAgB,KAAK,IAAI,IAAI,KAAK,GAAG;AAErH,WAAO,QAAQ;AAAA,MACb,WAAW,OAAO;AAAA,MAClB,cAAc;AAAA,IAChB,CAAC;AACD,gBAAY;AAAA,EACd;AACA,SAAO,KAAK,cAAc,CAAC;AAC3B,OAAK,UAAU;AACf,OAAK,mBAAmB,OAAO,KAAK;AACpC,MAAI,sBAAsB;AAC1B,MAAI,kBAAkB,OAAO;AAC7B,MAAI,OAAO,qBAAqB;AAC9B,sBAAkB;AAAA,EACpB;AACA,MAAI,OAAO,GAAG;AACZ,QAAI,UAAU,gBAAgB,CAAC,aAAa,KAAK,oBAAoB,OAAO,iBAAiB,OAAO,aAAa,IAAI,OAAO,OAAO,IAAI,OAAO,aAAa,IAAI;AAC7J,aAAO,QAAQ;AAAA,QACb,WAAW;AAAA,QACX,cAAc;AAAA,QACd,kBAAkB;AAAA,MACpB,CAAC;AAAA,IACH;AACA,QAAI,KAAK,mBAAmB,OAAO,aAAa,GAAG;AACjD,4BAAsB;AACtB,UAAI,OAAO,YAAY;AACrB,aAAK,mBAAmB,OAAO,aAAa,IAAI,KAAK,CAAC,OAAO,aAAa,IAAI,KAAK,iBAAiB,SAAS;AAAA,MAC/G;AAAA,IACF;AAAA,EACF,WAAW,OAAO,GAAG;AACnB,QAAI,UAAU,gBAAgB,CAAC,aAAa,KAAK,oBAAoB,OAAO,iBAAiB,OAAO,aAAa,IAAI,OAAO,OAAO,IAAI,OAAO,aAAa,IAAI;AAC7J,aAAO,QAAQ;AAAA,QACb,WAAW;AAAA,QACX,cAAc;AAAA,QACd,kBAAkB,OAAO,OAAO,UAAU,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,KAAK,KAAK,WAAW,OAAO,eAAe,EAAE,CAAC;AAAA,MAC5J,CAAC;AAAA,IACH;AACA,QAAI,KAAK,mBAAmB,OAAO,aAAa,GAAG;AACjD,4BAAsB;AACtB,UAAI,OAAO,YAAY;AACrB,aAAK,mBAAmB,OAAO,aAAa,IAAI,KAAK,OAAO,aAAa,IAAI,KAAK,iBAAiB,SAAS;AAAA,MAC9G;AAAA,IACF;AAAA,EACF;AACA,MAAI,qBAAqB;AACvB,MAAE,0BAA0B;AAAA,EAC9B;AAGA,MAAI,CAAC,OAAO,kBAAkB,OAAO,mBAAmB,UAAU,KAAK,mBAAmB,KAAK,gBAAgB;AAC7G,SAAK,mBAAmB,KAAK;AAAA,EAC/B;AACA,MAAI,CAAC,OAAO,kBAAkB,OAAO,mBAAmB,UAAU,KAAK,mBAAmB,KAAK,gBAAgB;AAC7G,SAAK,mBAAmB,KAAK;AAAA,EAC/B;AACA,MAAI,CAAC,OAAO,kBAAkB,CAAC,OAAO,gBAAgB;AACpD,SAAK,mBAAmB,KAAK;AAAA,EAC/B;AAGA,MAAI,OAAO,YAAY,GAAG;AACxB,QAAI,KAAK,IAAI,IAAI,IAAI,OAAO,aAAa,KAAK,oBAAoB;AAChE,UAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAK,qBAAqB;AAC1B,gBAAQ,SAAS,QAAQ;AACzB,gBAAQ,SAAS,QAAQ;AACzB,aAAK,mBAAmB,KAAK;AAC7B,gBAAQ,OAAO,OAAO,aAAa,IAAI,QAAQ,WAAW,QAAQ,SAAS,QAAQ,WAAW,QAAQ;AACtG;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,mBAAmB,KAAK;AAC7B;AAAA,IACF;AAAA,EACF;AACA,MAAI,CAAC,OAAO,gBAAgB,OAAO,QAAS;AAG5C,MAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,YAAY,OAAO,qBAAqB;AAC/F,WAAO,kBAAkB;AACzB,WAAO,oBAAoB;AAAA,EAC7B;AACA,MAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,UAAU;AACjE,WAAO,SAAS,YAAY;AAAA,EAC9B;AAEA,SAAO,eAAe,KAAK,gBAAgB;AAE3C,SAAO,aAAa,KAAK,gBAAgB;AAC3C;AAEA,SAAS,WAAWO,QAAO;AACzB,QAAM,SAAS;AACf,QAAM,OAAO,OAAO;AACpB,QAAM,eAAe,KAAK,QAAQ,UAAU,cAAY,SAAS,cAAcA,OAAM,SAAS;AAC9F,MAAI,gBAAgB,GAAG;AACrB,SAAK,QAAQ,OAAO,cAAc,CAAC;AAAA,EACrC;AACA,MAAI,CAAC,iBAAiB,cAAc,gBAAgB,aAAa,EAAE,SAASA,OAAM,IAAI,GAAG;AACvF,UAAM,UAAU,CAAC,iBAAiB,aAAa,EAAE,SAASA,OAAM,IAAI,MAAM,OAAO,QAAQ,YAAY,OAAO,QAAQ;AACpH,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAAA,EACF;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,QAAS;AACd,MAAI,CAAC,OAAO,iBAAiBA,OAAM,gBAAgB,QAAS;AAC5D,MAAI,IAAIA;AACR,MAAI,EAAE,cAAe,KAAI,EAAE;AAC3B,MAAI,KAAK,qBAAqB;AAC5B,WAAO,KAAK,YAAY,CAAC;AAAA,EAC3B;AACA,OAAK,sBAAsB;AAC3B,MAAI,CAAC,KAAK,WAAW;AACnB,QAAI,KAAK,WAAW,OAAO,YAAY;AACrC,aAAO,cAAc,KAAK;AAAA,IAC5B;AACA,SAAK,UAAU;AACf,SAAK,cAAc;AACnB;AAAA,EACF;AAEA,MAAI,OAAO,cAAc,KAAK,WAAW,KAAK,cAAc,OAAO,mBAAmB,QAAQ,OAAO,mBAAmB,OAAO;AAC7H,WAAO,cAAc,KAAK;AAAA,EAC5B;AAGA,QAAM,eAAeW,KAAI;AACzB,QAAM,WAAW,eAAe,KAAK;AAGrC,MAAI,OAAO,YAAY;AACrB,UAAM,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa;AAC5D,WAAO,mBAAmB,YAAY,SAAS,CAAC,KAAK,EAAE,QAAQ,QAAQ;AACvE,WAAO,KAAK,aAAa,CAAC;AAC1B,QAAI,WAAW,OAAO,eAAe,KAAK,gBAAgB,KAAK;AAC7D,aAAO,KAAK,yBAAyB,CAAC;AAAA,IACxC;AAAA,EACF;AACA,OAAK,gBAAgBA,KAAI;AACzB,EAAAH,UAAS,MAAM;AACb,QAAI,CAAC,OAAO,UAAW,QAAO,aAAa;AAAA,EAC7C,CAAC;AACD,MAAI,CAAC,KAAK,aAAa,CAAC,KAAK,WAAW,CAAC,OAAO,kBAAkB,QAAQ,SAAS,KAAK,KAAK,qBAAqB,KAAK,gBAAgB;AACrI,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,cAAc;AACnB;AAAA,EACF;AACA,OAAK,YAAY;AACjB,OAAK,UAAU;AACf,OAAK,cAAc;AACnB,MAAI;AACJ,MAAI,OAAO,cAAc;AACvB,iBAAa,MAAM,OAAO,YAAY,CAAC,OAAO;AAAA,EAChD,OAAO;AACL,iBAAa,CAAC,KAAK;AAAA,EACrB;AACA,MAAI,OAAO,SAAS;AAClB;AAAA,EACF;AACA,MAAI,OAAO,YAAY,OAAO,SAAS,SAAS;AAC9C,WAAO,SAAS,WAAW;AAAA,MACzB;AAAA,IACF,CAAC;AACD;AAAA,EACF;AAGA,MAAI,YAAY;AAChB,MAAI,YAAY,OAAO,gBAAgB,CAAC;AACxC,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,IAAI,OAAO,qBAAqB,IAAI,OAAO,gBAAgB;AACrG,UAAMI,aAAY,IAAI,OAAO,qBAAqB,IAAI,IAAI,OAAO;AACjE,QAAI,OAAO,WAAW,IAAIA,UAAS,MAAM,aAAa;AACpD,UAAI,cAAc,WAAW,CAAC,KAAK,aAAa,WAAW,IAAIA,UAAS,GAAG;AACzE,oBAAY;AACZ,oBAAY,WAAW,IAAIA,UAAS,IAAI,WAAW,CAAC;AAAA,MACtD;AAAA,IACF,WAAW,cAAc,WAAW,CAAC,GAAG;AACtC,kBAAY;AACZ,kBAAY,WAAW,WAAW,SAAS,CAAC,IAAI,WAAW,WAAW,SAAS,CAAC;AAAA,IAClF;AAAA,EACF;AACA,MAAI,mBAAmB;AACvB,MAAI,kBAAkB;AACtB,MAAI,OAAO,QAAQ;AACjB,QAAI,OAAO,aAAa;AACtB,wBAAkB,OAAO,WAAW,OAAO,QAAQ,WAAW,OAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,IAAI,OAAO,OAAO,SAAS;AAAA,IAC3I,WAAW,OAAO,OAAO;AACvB,yBAAmB;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,SAAS,aAAa,WAAW,SAAS,KAAK;AACrD,QAAM,YAAY,YAAY,OAAO,qBAAqB,IAAI,IAAI,OAAO;AACzE,MAAI,WAAW,OAAO,cAAc;AAElC,QAAI,CAAC,OAAO,YAAY;AACtB,aAAO,QAAQ,OAAO,WAAW;AACjC;AAAA,IACF;AACA,QAAI,OAAO,mBAAmB,QAAQ;AACpC,UAAI,SAAS,OAAO,gBAAiB,QAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,mBAAmB,YAAY,SAAS;AAAA,UAAO,QAAO,QAAQ,SAAS;AAAA,IAC7J;AACA,QAAI,OAAO,mBAAmB,QAAQ;AACpC,UAAI,QAAQ,IAAI,OAAO,iBAAiB;AACtC,eAAO,QAAQ,YAAY,SAAS;AAAA,MACtC,WAAW,oBAAoB,QAAQ,QAAQ,KAAK,KAAK,IAAI,KAAK,IAAI,OAAO,iBAAiB;AAC5F,eAAO,QAAQ,eAAe;AAAA,MAChC,OAAO;AACL,eAAO,QAAQ,SAAS;AAAA,MAC1B;AAAA,IACF;AAAA,EACF,OAAO;AAEL,QAAI,CAAC,OAAO,aAAa;AACvB,aAAO,QAAQ,OAAO,WAAW;AACjC;AAAA,IACF;AACA,UAAM,oBAAoB,OAAO,eAAe,EAAE,WAAW,OAAO,WAAW,UAAU,EAAE,WAAW,OAAO,WAAW;AACxH,QAAI,CAAC,mBAAmB;AACtB,UAAI,OAAO,mBAAmB,QAAQ;AACpC,eAAO,QAAQ,qBAAqB,OAAO,mBAAmB,YAAY,SAAS;AAAA,MACrF;AACA,UAAI,OAAO,mBAAmB,QAAQ;AACpC,eAAO,QAAQ,oBAAoB,OAAO,kBAAkB,SAAS;AAAA,MACvE;AAAA,IACF,WAAW,EAAE,WAAW,OAAO,WAAW,QAAQ;AAChD,aAAO,QAAQ,YAAY,SAAS;AAAA,IACtC,OAAO;AACL,aAAO,QAAQ,SAAS;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,SAAS,WAAW;AAClB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,MAAM,GAAG,gBAAgB,EAAG;AAGhC,MAAI,OAAO,aAAa;AACtB,WAAO,cAAc;AAAA,EACvB;AAGA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAG1D,SAAO,iBAAiB;AACxB,SAAO,iBAAiB;AACxB,SAAO,WAAW;AAClB,SAAO,aAAa;AACpB,SAAO,oBAAoB;AAC3B,QAAM,gBAAgB,aAAa,OAAO;AAC1C,OAAK,OAAO,kBAAkB,UAAU,OAAO,gBAAgB,MAAM,OAAO,SAAS,CAAC,OAAO,eAAe,CAAC,OAAO,OAAO,kBAAkB,CAAC,eAAe;AAC3J,WAAO,QAAQ,OAAO,OAAO,SAAS,GAAG,GAAG,OAAO,IAAI;AAAA,EACzD,OAAO;AACL,QAAI,OAAO,OAAO,QAAQ,CAAC,WAAW;AACpC,aAAO,YAAY,OAAO,WAAW,GAAG,OAAO,IAAI;AAAA,IACrD,OAAO;AACL,aAAO,QAAQ,OAAO,aAAa,GAAG,OAAO,IAAI;AAAA,IACnD;AAAA,EACF;AACA,MAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,SAAS,QAAQ;AACxE,iBAAa,OAAO,SAAS,aAAa;AAC1C,WAAO,SAAS,gBAAgB,WAAW,MAAM;AAC/C,UAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,SAAS,QAAQ;AACxE,eAAO,SAAS,OAAO;AAAA,MACzB;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAEA,SAAO,iBAAiB;AACxB,SAAO,iBAAiB;AACxB,MAAI,OAAO,OAAO,iBAAiB,aAAa,OAAO,UAAU;AAC/D,WAAO,cAAc;AAAA,EACvB;AACF;AAEA,SAAS,QAAQ,GAAG;AAClB,QAAM,SAAS;AACf,MAAI,CAAC,OAAO,QAAS;AACrB,MAAI,CAAC,OAAO,YAAY;AACtB,QAAI,OAAO,OAAO,cAAe,GAAE,eAAe;AAClD,QAAI,OAAO,OAAO,4BAA4B,OAAO,WAAW;AAC9D,QAAE,gBAAgB;AAClB,QAAE,yBAAyB;AAAA,IAC7B;AAAA,EACF;AACF;AAEA,SAAS,WAAW;AAClB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,CAAC,QAAS;AACd,SAAO,oBAAoB,OAAO;AAClC,MAAI,OAAO,aAAa,GAAG;AACzB,WAAO,YAAY,CAAC,UAAU;AAAA,EAChC,OAAO;AACL,WAAO,YAAY,CAAC,UAAU;AAAA,EAChC;AAEA,MAAI,OAAO,cAAc,EAAG,QAAO,YAAY;AAC/C,SAAO,kBAAkB;AACzB,SAAO,oBAAoB;AAC3B,MAAI;AACJ,QAAM,iBAAiB,OAAO,aAAa,IAAI,OAAO,aAAa;AACnE,MAAI,mBAAmB,GAAG;AACxB,kBAAc;AAAA,EAChB,OAAO;AACL,mBAAe,OAAO,YAAY,OAAO,aAAa,KAAK;AAAA,EAC7D;AACA,MAAI,gBAAgB,OAAO,UAAU;AACnC,WAAO,eAAe,eAAe,CAAC,OAAO,YAAY,OAAO,SAAS;AAAA,EAC3E;AACA,SAAO,KAAK,gBAAgB,OAAO,WAAW,KAAK;AACrD;AAEA,SAAS,OAAO,GAAG;AACjB,QAAM,SAAS;AACf,uBAAqB,QAAQ,EAAE,MAAM;AACrC,MAAI,OAAO,OAAO,WAAW,OAAO,OAAO,kBAAkB,UAAU,CAAC,OAAO,OAAO,YAAY;AAChG;AAAA,EACF;AACA,SAAO,OAAO;AAChB;AAEA,IAAI,qBAAqB;AACzB,SAAS,qBAAqB;AAAC;AAC/B,IAAM,SAAS,CAAC,QAAQ,WAAW;AACjC,QAAMnB,YAAWC,aAAY;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,UAAU,CAAC,CAAC,OAAO;AACzB,QAAM,YAAY,WAAW,OAAO,qBAAqB;AACzD,QAAM,eAAe;AAGrB,KAAG,SAAS,EAAE,eAAe,OAAO,cAAc;AAAA,IAChD,SAAS;AAAA,EACX,CAAC;AACD,EAAAD,UAAS,SAAS,EAAE,eAAe,OAAO,aAAa;AAAA,IACrD,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AACD,EAAAA,UAAS,SAAS,EAAE,aAAa,OAAO,YAAY;AAAA,IAClD,SAAS;AAAA,EACX,CAAC;AACD,EAAAA,UAAS,SAAS,EAAE,iBAAiB,OAAO,YAAY;AAAA,IACtD,SAAS;AAAA,EACX,CAAC;AACD,EAAAA,UAAS,SAAS,EAAE,cAAc,OAAO,YAAY;AAAA,IACnD,SAAS;AAAA,EACX,CAAC;AACD,EAAAA,UAAS,SAAS,EAAE,gBAAgB,OAAO,YAAY;AAAA,IACrD,SAAS;AAAA,EACX,CAAC;AACD,EAAAA,UAAS,SAAS,EAAE,eAAe,OAAO,YAAY;AAAA,IACpD,SAAS;AAAA,EACX,CAAC;AAGD,MAAI,OAAO,iBAAiB,OAAO,0BAA0B;AAC3D,OAAG,SAAS,EAAE,SAAS,OAAO,SAAS,IAAI;AAAA,EAC7C;AACA,MAAI,OAAO,SAAS;AAClB,cAAU,SAAS,EAAE,UAAU,OAAO,QAAQ;AAAA,EAChD;AAGA,MAAI,OAAO,sBAAsB;AAC/B,WAAO,YAAY,EAAE,OAAO,OAAO,OAAO,UAAU,4CAA4C,yBAAyB,UAAU,IAAI;AAAA,EACzI,OAAO;AACL,WAAO,YAAY,EAAE,kBAAkB,UAAU,IAAI;AAAA,EACvD;AAGA,KAAG,SAAS,EAAE,QAAQ,OAAO,QAAQ;AAAA,IACnC,SAAS;AAAA,EACX,CAAC;AACH;AACA,SAAS,eAAe;AACtB,QAAM,SAAS;AACf,QAAMA,YAAWC,aAAY;AAC7B,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AACJ,SAAO,eAAe,aAAa,KAAK,MAAM;AAC9C,SAAO,cAAc,YAAY,KAAK,MAAM;AAC5C,SAAO,aAAa,WAAW,KAAK,MAAM;AAC1C,MAAI,OAAO,SAAS;AAClB,WAAO,WAAW,SAAS,KAAK,MAAM;AAAA,EACxC;AACA,SAAO,UAAU,QAAQ,KAAK,MAAM;AACpC,SAAO,SAAS,OAAO,KAAK,MAAM;AAClC,MAAI,CAAC,oBAAoB;AACvB,IAAAD,UAAS,iBAAiB,cAAc,kBAAkB;AAC1D,yBAAqB;AAAA,EACvB;AACA,SAAO,QAAQ,IAAI;AACrB;AACA,SAAS,eAAe;AACtB,QAAM,SAAS;AACf,SAAO,QAAQ,KAAK;AACtB;AACA,IAAI,WAAW;AAAA,EACb;AAAA,EACA;AACF;AAEA,IAAM,gBAAgB,CAAC,QAAQ,WAAW;AACxC,SAAO,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AAC1D;AACA,SAAS,gBAAgB;AACvB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMoB,eAAc,OAAO;AAC3B,MAAI,CAACA,gBAAeA,gBAAe,OAAO,KAAKA,YAAW,EAAE,WAAW,EAAG;AAG1E,QAAM,aAAa,OAAO,cAAcA,cAAa,OAAO,OAAO,iBAAiB,OAAO,EAAE;AAC7F,MAAI,CAAC,cAAc,OAAO,sBAAsB,WAAY;AAC5D,QAAM,uBAAuB,cAAcA,eAAcA,aAAY,UAAU,IAAI;AACnF,QAAM,mBAAmB,wBAAwB,OAAO;AACxD,QAAM,cAAc,cAAc,QAAQ,MAAM;AAChD,QAAM,aAAa,cAAc,QAAQ,gBAAgB;AACzD,QAAM,aAAa,OAAO;AAC1B,MAAI,eAAe,CAAC,YAAY;AAC9B,OAAG,UAAU,OAAO,GAAG,OAAO,sBAAsB,QAAQ,GAAG,OAAO,sBAAsB,aAAa;AACzG,WAAO,qBAAqB;AAAA,EAC9B,WAAW,CAAC,eAAe,YAAY;AACrC,OAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,MAAM;AACvD,QAAI,iBAAiB,KAAK,QAAQ,iBAAiB,KAAK,SAAS,YAAY,CAAC,iBAAiB,KAAK,QAAQ,OAAO,KAAK,SAAS,UAAU;AACzI,SAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,aAAa;AAAA,IAChE;AACA,WAAO,qBAAqB;AAAA,EAC9B;AAGA,GAAC,cAAc,cAAc,WAAW,EAAE,QAAQ,UAAQ;AACxD,QAAI,OAAO,iBAAiB,IAAI,MAAM,YAAa;AACnD,UAAM,mBAAmB,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE;AACtD,UAAM,kBAAkB,iBAAiB,IAAI,KAAK,iBAAiB,IAAI,EAAE;AACzE,QAAI,oBAAoB,CAAC,iBAAiB;AACxC,aAAO,IAAI,EAAE,QAAQ;AAAA,IACvB;AACA,QAAI,CAAC,oBAAoB,iBAAiB;AACxC,aAAO,IAAI,EAAE,OAAO;AAAA,IACtB;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,iBAAiB,aAAa,iBAAiB,cAAc,OAAO;AAC7F,QAAM,cAAc,OAAO,SAAS,iBAAiB,kBAAkB,OAAO,iBAAiB;AAC/F,QAAM,UAAU,OAAO;AACvB,MAAI,oBAAoB,aAAa;AACnC,WAAO,gBAAgB;AAAA,EACzB;AACA,EAAAC,QAAO,OAAO,QAAQ,gBAAgB;AACtC,QAAM,YAAY,OAAO,OAAO;AAChC,QAAM,UAAU,OAAO,OAAO;AAC9B,SAAO,OAAO,QAAQ;AAAA,IACpB,gBAAgB,OAAO,OAAO;AAAA,IAC9B,gBAAgB,OAAO,OAAO;AAAA,IAC9B,gBAAgB,OAAO,OAAO;AAAA,EAChC,CAAC;AACD,MAAI,cAAc,CAAC,WAAW;AAC5B,WAAO,QAAQ;AAAA,EACjB,WAAW,CAAC,cAAc,WAAW;AACnC,WAAO,OAAO;AAAA,EAChB;AACA,SAAO,oBAAoB;AAC3B,SAAO,KAAK,qBAAqB,gBAAgB;AACjD,MAAI,aAAa;AACf,QAAI,aAAa;AACf,aAAO,YAAY;AACnB,aAAO,WAAW,SAAS;AAC3B,aAAO,aAAa;AAAA,IACtB,WAAW,CAAC,WAAW,SAAS;AAC9B,aAAO,WAAW,SAAS;AAC3B,aAAO,aAAa;AAAA,IACtB,WAAW,WAAW,CAAC,SAAS;AAC9B,aAAO,YAAY;AAAA,IACrB;AAAA,EACF;AACA,SAAO,KAAK,cAAc,gBAAgB;AAC5C;AAEA,SAAS,cAAcD,cAAa,MAAM,aAAa;AACrD,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACA,MAAI,CAACA,gBAAe,SAAS,eAAe,CAAC,YAAa,QAAO;AACjE,MAAI,aAAa;AACjB,QAAMtB,UAASC,WAAU;AACzB,QAAM,gBAAgB,SAAS,WAAWD,QAAO,cAAc,YAAY;AAC3E,QAAM,SAAS,OAAO,KAAKsB,YAAW,EAAE,IAAI,WAAS;AACnD,QAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,GAAG,MAAM,GAAG;AACzD,YAAM,WAAW,WAAW,MAAM,OAAO,CAAC,CAAC;AAC3C,YAAM,QAAQ,gBAAgB;AAC9B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO,KAAK,CAAC,GAAG,MAAM,SAAS,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC;AACnE,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO,CAAC;AACZ,QAAI,SAAS,UAAU;AACrB,UAAItB,QAAO,WAAW,eAAe,KAAK,KAAK,EAAE,SAAS;AACxD,qBAAa;AAAA,MACf;AAAA,IACF,WAAW,SAAS,YAAY,aAAa;AAC3C,mBAAa;AAAA,IACf;AAAA,EACF;AACA,SAAO,cAAc;AACvB;AAEA,IAAI,cAAc;AAAA,EAChB;AAAA,EACA;AACF;AAEA,SAAS,eAAe,SAAS,QAAQ;AACvC,QAAM,gBAAgB,CAAC;AACvB,UAAQ,QAAQ,UAAQ;AACtB,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO,KAAK,IAAI,EAAE,QAAQ,gBAAc;AACtC,YAAI,KAAK,UAAU,GAAG;AACpB,wBAAc,KAAK,SAAS,UAAU;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH,WAAW,OAAO,SAAS,UAAU;AACnC,oBAAc,KAAK,SAAS,IAAI;AAAA,IAClC;AAAA,EACF,CAAC;AACD,SAAO;AACT;AACA,SAAS,aAAa;AACpB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,WAAW,eAAe,CAAC,eAAe,OAAO,WAAW;AAAA,IAChE,aAAa,OAAO,OAAO,YAAY,OAAO,SAAS;AAAA,EACzD,GAAG;AAAA,IACD,cAAc,OAAO;AAAA,EACvB,GAAG;AAAA,IACD,OAAO;AAAA,EACT,GAAG;AAAA,IACD,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AAAA,EAC5C,GAAG;AAAA,IACD,eAAe,OAAO,QAAQ,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,SAAS;AAAA,EAC7E,GAAG;AAAA,IACD,WAAW,OAAO;AAAA,EACpB,GAAG;AAAA,IACD,OAAO,OAAO;AAAA,EAChB,GAAG;AAAA,IACD,YAAY,OAAO;AAAA,EACrB,GAAG;AAAA,IACD,YAAY,OAAO,WAAW,OAAO;AAAA,EACvC,GAAG;AAAA,IACD,kBAAkB,OAAO;AAAA,EAC3B,CAAC,GAAG,OAAO,sBAAsB;AACjC,aAAW,KAAK,GAAG,QAAQ;AAC3B,KAAG,UAAU,IAAI,GAAG,UAAU;AAC9B,SAAO,qBAAqB;AAC9B;AAEA,SAAS,gBAAgB;AACvB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,KAAG,UAAU,OAAO,GAAG,UAAU;AACjC,SAAO,qBAAqB;AAC9B;AAEA,IAAI,UAAU;AAAA,EACZ;AAAA,EACA;AACF;AAEA,SAAS,gBAAgB;AACvB,QAAM,SAAS;AACf,QAAM;AAAA,IACJ,UAAU;AAAA,IACV;AAAA,EACF,IAAI;AACJ,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AACJ,MAAI,oBAAoB;AACtB,UAAM,iBAAiB,OAAO,OAAO,SAAS;AAC9C,UAAM,qBAAqB,OAAO,WAAW,cAAc,IAAI,OAAO,gBAAgB,cAAc,IAAI,qBAAqB;AAC7H,WAAO,WAAW,OAAO,OAAO;AAAA,EAClC,OAAO;AACL,WAAO,WAAW,OAAO,SAAS,WAAW;AAAA,EAC/C;AACA,MAAI,OAAO,mBAAmB,MAAM;AAClC,WAAO,iBAAiB,CAAC,OAAO;AAAA,EAClC;AACA,MAAI,OAAO,mBAAmB,MAAM;AAClC,WAAO,iBAAiB,CAAC,OAAO;AAAA,EAClC;AACA,MAAI,aAAa,cAAc,OAAO,UAAU;AAC9C,WAAO,QAAQ;AAAA,EACjB;AACA,MAAI,cAAc,OAAO,UAAU;AACjC,WAAO,KAAK,OAAO,WAAW,SAAS,QAAQ;AAAA,EACjD;AACF;AACA,IAAI,kBAAkB;AAAA,EACpB;AACF;AAEA,IAAI,WAAW;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,OAAO;AAAA,EACP,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,mBAAmB;AAAA;AAAA,EAEnB,OAAO;AAAA,EACP,QAAQ;AAAA;AAAA,EAER,gCAAgC;AAAA;AAAA,EAEhC,WAAW;AAAA,EACX,KAAK;AAAA;AAAA,EAEL,oBAAoB;AAAA,EACpB,oBAAoB;AAAA;AAAA,EAEpB,YAAY;AAAA;AAAA,EAEZ,gBAAgB;AAAA;AAAA,EAEhB,kBAAkB;AAAA;AAAA,EAElB,QAAQ;AAAA;AAAA;AAAA,EAIR,aAAa;AAAA,EACb,iBAAiB;AAAA;AAAA,EAEjB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA;AAAA,EAEpB,mBAAmB;AAAA;AAAA,EAEnB,qBAAqB;AAAA,EACrB,0BAA0B;AAAA;AAAA,EAE1B,eAAe;AAAA;AAAA,EAEf,cAAc;AAAA;AAAA,EAEd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,+BAA+B;AAAA,EAC/B,qBAAqB;AAAA;AAAA,EAErB,mBAAmB;AAAA;AAAA,EAEnB,YAAY;AAAA,EACZ,iBAAiB;AAAA;AAAA,EAEjB,qBAAqB;AAAA;AAAA,EAErB,YAAY;AAAA;AAAA,EAEZ,eAAe;AAAA,EACf,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA;AAAA,EAErB,MAAM;AAAA,EACN,cAAc;AAAA,EACd,qBAAqB;AAAA;AAAA,EAErB,QAAQ;AAAA;AAAA,EAER,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA;AAAA,EAEd,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,mBAAmB;AAAA;AAAA,EAEnB,kBAAkB;AAAA,EAClB,yBAAyB;AAAA;AAAA,EAEzB,wBAAwB;AAAA;AAAA,EAExB,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,qBAAqB;AAAA;AAAA,EAErB,oBAAoB;AAAA;AAAA,EAEpB,cAAc;AAChB;AAEA,SAAS,mBAAmB,QAAQ,kBAAkB;AACpD,SAAO,SAAS,aAAa,KAAK;AAChC,QAAI,QAAQ,QAAQ;AAClB,YAAM,CAAC;AAAA,IACT;AACA,UAAM,kBAAkB,OAAO,KAAK,GAAG,EAAE,CAAC;AAC1C,UAAM,eAAe,IAAI,eAAe;AACxC,QAAI,OAAO,iBAAiB,YAAY,iBAAiB,MAAM;AAC7D,MAAAuB,QAAO,kBAAkB,GAAG;AAC5B;AAAA,IACF;AACA,QAAI,OAAO,eAAe,MAAM,MAAM;AACpC,aAAO,eAAe,IAAI;AAAA,QACxB,SAAS;AAAA,MACX;AAAA,IACF;AACA,QAAI,oBAAoB,gBAAgB,OAAO,eAAe,KAAK,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,eAAe,EAAE,QAAQ;AACxK,aAAO,eAAe,EAAE,OAAO;AAAA,IACjC;AACA,QAAI,CAAC,cAAc,WAAW,EAAE,QAAQ,eAAe,KAAK,KAAK,OAAO,eAAe,KAAK,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,IAAI;AAC1J,aAAO,eAAe,EAAE,OAAO;AAAA,IACjC;AACA,QAAI,EAAE,mBAAmB,UAAU,aAAa,eAAe;AAC7D,MAAAA,QAAO,kBAAkB,GAAG;AAC5B;AAAA,IACF;AACA,QAAI,OAAO,OAAO,eAAe,MAAM,YAAY,EAAE,aAAa,OAAO,eAAe,IAAI;AAC1F,aAAO,eAAe,EAAE,UAAU;AAAA,IACpC;AACA,QAAI,CAAC,OAAO,eAAe,EAAG,QAAO,eAAe,IAAI;AAAA,MACtD,SAAS;AAAA,IACX;AACA,IAAAA,QAAO,kBAAkB,GAAG;AAAA,EAC9B;AACF;AAGA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,eAAe;AAAA,EACf;AACF;AACA,IAAM,mBAAmB,CAAC;AAC1B,IAAM,SAAN,MAAM,QAAO;AAAA,EACX,cAAc;AACZ,QAAI;AACJ,QAAI;AACJ,aAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,WAAK,IAAI,IAAI,UAAU,IAAI;AAAA,IAC7B;AACA,QAAI,KAAK,WAAW,KAAK,KAAK,CAAC,EAAE,eAAe,OAAO,UAAU,SAAS,KAAK,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,UAAU;AACjH,eAAS,KAAK,CAAC;AAAA,IACjB,OAAO;AACL,OAAC,IAAI,MAAM,IAAI;AAAA,IACjB;AACA,QAAI,CAAC,OAAQ,UAAS,CAAC;AACvB,aAASA,QAAO,CAAC,GAAG,MAAM;AAC1B,QAAI,MAAM,CAAC,OAAO,GAAI,QAAO,KAAK;AAClC,UAAMrB,YAAWC,aAAY;AAC7B,QAAI,OAAO,MAAM,OAAO,OAAO,OAAO,YAAYD,UAAS,iBAAiB,OAAO,EAAE,EAAE,SAAS,GAAG;AACjG,YAAM,UAAU,CAAC;AACjB,MAAAA,UAAS,iBAAiB,OAAO,EAAE,EAAE,QAAQ,iBAAe;AAC1D,cAAM,YAAYqB,QAAO,CAAC,GAAG,QAAQ;AAAA,UACnC,IAAI;AAAA,QACN,CAAC;AACD,gBAAQ,KAAK,IAAI,QAAO,SAAS,CAAC;AAAA,MACpC,CAAC;AAED,aAAO;AAAA,IACT;AAGA,UAAM,SAAS;AACf,WAAO,aAAa;AACpB,WAAO,UAAUnB,YAAW;AAC5B,WAAO,SAASE,WAAU;AAAA,MACxB,WAAW,OAAO;AAAA,IACpB,CAAC;AACD,WAAO,UAAU,WAAW;AAC5B,WAAO,kBAAkB,CAAC;AAC1B,WAAO,qBAAqB,CAAC;AAC7B,WAAO,UAAU,CAAC,GAAG,OAAO,WAAW;AACvC,QAAI,OAAO,WAAW,MAAM,QAAQ,OAAO,OAAO,GAAG;AACnD,aAAO,QAAQ,KAAK,GAAG,OAAO,OAAO;AAAA,IACvC;AACA,UAAM,mBAAmB,CAAC;AAC1B,WAAO,QAAQ,QAAQ,SAAO;AAC5B,UAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA,cAAc,mBAAmB,QAAQ,gBAAgB;AAAA,QACzD,IAAI,OAAO,GAAG,KAAK,MAAM;AAAA,QACzB,MAAM,OAAO,KAAK,KAAK,MAAM;AAAA,QAC7B,KAAK,OAAO,IAAI,KAAK,MAAM;AAAA,QAC3B,MAAM,OAAO,KAAK,KAAK,MAAM;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAGD,UAAM,eAAeiB,QAAO,CAAC,GAAG,UAAU,gBAAgB;AAG1D,WAAO,SAASA,QAAO,CAAC,GAAG,cAAc,kBAAkB,MAAM;AACjE,WAAO,iBAAiBA,QAAO,CAAC,GAAG,OAAO,MAAM;AAChD,WAAO,eAAeA,QAAO,CAAC,GAAG,MAAM;AAGvC,QAAI,OAAO,UAAU,OAAO,OAAO,IAAI;AACrC,aAAO,KAAK,OAAO,OAAO,EAAE,EAAE,QAAQ,eAAa;AACjD,eAAO,GAAG,WAAW,OAAO,OAAO,GAAG,SAAS,CAAC;AAAA,MAClD,CAAC;AAAA,IACH;AACA,QAAI,OAAO,UAAU,OAAO,OAAO,OAAO;AACxC,aAAO,MAAM,OAAO,OAAO,KAAK;AAAA,IAClC;AAGA,WAAO,OAAO,QAAQ;AAAA,MACpB,SAAS,OAAO,OAAO;AAAA,MACvB;AAAA;AAAA,MAEA,YAAY,CAAC;AAAA;AAAA,MAEb,QAAQ,CAAC;AAAA,MACT,YAAY,CAAC;AAAA,MACb,UAAU,CAAC;AAAA,MACX,iBAAiB,CAAC;AAAA;AAAA,MAElB,eAAe;AACb,eAAO,OAAO,OAAO,cAAc;AAAA,MACrC;AAAA,MACA,aAAa;AACX,eAAO,OAAO,OAAO,cAAc;AAAA,MACrC;AAAA;AAAA,MAEA,aAAa;AAAA,MACb,WAAW;AAAA;AAAA,MAEX,aAAa;AAAA,MACb,OAAO;AAAA;AAAA,MAEP,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MACX,wBAAwB;AAGtB,eAAO,KAAK,MAAM,KAAK,YAAY,KAAK,EAAE,IAAI,KAAK;AAAA,MACrD;AAAA;AAAA,MAEA,gBAAgB,OAAO,OAAO;AAAA,MAC9B,gBAAgB,OAAO,OAAO;AAAA;AAAA,MAE9B,iBAAiB;AAAA,QACf,WAAW;AAAA,QACX,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,oBAAoB;AAAA;AAAA,QAEpB,mBAAmB,OAAO,OAAO;AAAA;AAAA,QAEjC,eAAe;AAAA,QACf,cAAc;AAAA;AAAA,QAEd,YAAY,CAAC;AAAA,QACb,qBAAqB;AAAA,QACrB,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA;AAAA,MAEA,YAAY;AAAA;AAAA,MAEZ,gBAAgB,OAAO,OAAO;AAAA,MAC9B,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA;AAAA,MAEA,cAAc,CAAC;AAAA,MACf,cAAc;AAAA,IAChB,CAAC;AACD,WAAO,KAAK,SAAS;AAGrB,QAAI,OAAO,OAAO,MAAM;AACtB,aAAO,KAAK;AAAA,IACd;AAIA,WAAO;AAAA,EACT;AAAA,EACA,cAAc,SAAS;AACrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,gBAAgB,UAAU,IAAI,OAAO,UAAU,gBAAgB;AAC9E,UAAM,kBAAkB,aAAa,OAAO,CAAC,CAAC;AAC9C,WAAO,aAAa,OAAO,IAAI;AAAA,EACjC;AAAA,EACA,oBAAoB,OAAO;AACzB,WAAO,KAAK,cAAc,KAAK,OAAO,OAAO,aAAW,QAAQ,aAAa,yBAAyB,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC;AAAA,EAC3H;AAAA,EACA,eAAe;AACb,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,WAAO,SAAS,gBAAgB,UAAU,IAAI,OAAO,UAAU,gBAAgB;AAAA,EACjF;AAAA,EACA,SAAS;AACP,UAAM,SAAS;AACf,QAAI,OAAO,QAAS;AACpB,WAAO,UAAU;AACjB,QAAI,OAAO,OAAO,YAAY;AAC5B,aAAO,cAAc;AAAA,IACvB;AACA,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EACA,UAAU;AACR,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,QAAS;AACrB,WAAO,UAAU;AACjB,QAAI,OAAO,OAAO,YAAY;AAC5B,aAAO,gBAAgB;AAAA,IACzB;AACA,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,YAAY,UAAU,OAAO;AAC3B,UAAM,SAAS;AACf,eAAW,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC;AAC5C,UAAM,MAAM,OAAO,aAAa;AAChC,UAAM,MAAM,OAAO,aAAa;AAChC,UAAM,WAAW,MAAM,OAAO,WAAW;AACzC,WAAO,YAAY,SAAS,OAAO,UAAU,cAAc,IAAI,KAAK;AACpE,WAAO,kBAAkB;AACzB,WAAO,oBAAoB;AAAA,EAC7B;AAAA,EACA,uBAAuB;AACrB,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,OAAO,gBAAgB,CAAC,OAAO,GAAI;AAC/C,UAAM,MAAM,OAAO,GAAG,UAAU,MAAM,GAAG,EAAE,OAAO,eAAa;AAC7D,aAAO,UAAU,QAAQ,QAAQ,MAAM,KAAK,UAAU,QAAQ,OAAO,OAAO,sBAAsB,MAAM;AAAA,IAC1G,CAAC;AACD,WAAO,KAAK,qBAAqB,IAAI,KAAK,GAAG,CAAC;AAAA,EAChD;AAAA,EACA,gBAAgB,SAAS;AACvB,UAAM,SAAS;AACf,QAAI,OAAO,UAAW,QAAO;AAC7B,WAAO,QAAQ,UAAU,MAAM,GAAG,EAAE,OAAO,eAAa;AACtD,aAAO,UAAU,QAAQ,cAAc,MAAM,KAAK,UAAU,QAAQ,OAAO,OAAO,UAAU,MAAM;AAAA,IACpG,CAAC,EAAE,KAAK,GAAG;AAAA,EACb;AAAA,EACA,oBAAoB;AAClB,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,OAAO,gBAAgB,CAAC,OAAO,GAAI;AAC/C,UAAM,UAAU,CAAC;AACjB,WAAO,OAAO,QAAQ,aAAW;AAC/B,YAAM,aAAa,OAAO,gBAAgB,OAAO;AACjD,cAAQ,KAAK;AAAA,QACX;AAAA,QACA;AAAA,MACF,CAAC;AACD,aAAO,KAAK,eAAe,SAAS,UAAU;AAAA,IAChD,CAAC;AACD,WAAO,KAAK,iBAAiB,OAAO;AAAA,EACtC;AAAA,EACA,qBAAqB,MAAM,OAAO;AAChC,QAAI,SAAS,QAAQ;AACnB,aAAO;AAAA,IACT;AACA,QAAI,UAAU,QAAQ;AACpB,cAAQ;AAAA,IACV;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACF,IAAI;AACJ,QAAI,MAAM;AACV,QAAI,OAAO,OAAO,kBAAkB,SAAU,QAAO,OAAO;AAC5D,QAAI,OAAO,gBAAgB;AACzB,UAAI,YAAY,OAAO,WAAW,IAAI,OAAO,WAAW,EAAE,kBAAkB;AAC5E,UAAI;AACJ,eAAS,IAAI,cAAc,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACvD,YAAI,OAAO,CAAC,KAAK,CAAC,WAAW;AAC3B,uBAAa,OAAO,CAAC,EAAE;AACvB,iBAAO;AACP,cAAI,YAAY,WAAY,aAAY;AAAA,QAC1C;AAAA,MACF;AACA,eAAS,IAAI,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG;AAC5C,YAAI,OAAO,CAAC,KAAK,CAAC,WAAW;AAC3B,uBAAa,OAAO,CAAC,EAAE;AACvB,iBAAO;AACP,cAAI,YAAY,WAAY,aAAY;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,OAAO;AAEL,UAAI,SAAS,WAAW;AACtB,iBAAS,IAAI,cAAc,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACvD,gBAAM,cAAc,QAAQ,WAAW,CAAC,IAAI,gBAAgB,CAAC,IAAI,WAAW,WAAW,IAAI,aAAa,WAAW,CAAC,IAAI,WAAW,WAAW,IAAI;AAClJ,cAAI,aAAa;AACf,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,OAAO;AAEL,iBAAS,IAAI,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG;AAC5C,gBAAM,cAAc,WAAW,WAAW,IAAI,WAAW,CAAC,IAAI;AAC9D,cAAI,aAAa;AACf,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,SAAS;AACf,QAAI,CAAC,UAAU,OAAO,UAAW;AACjC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,QAAI,OAAO,aAAa;AACtB,aAAO,cAAc;AAAA,IACvB;AACA,KAAC,GAAG,OAAO,GAAG,iBAAiB,kBAAkB,CAAC,EAAE,QAAQ,aAAW;AACrE,UAAI,QAAQ,UAAU;AACpB,6BAAqB,QAAQ,OAAO;AAAA,MACtC;AAAA,IACF,CAAC;AACD,WAAO,WAAW;AAClB,WAAO,aAAa;AACpB,WAAO,eAAe;AACtB,WAAO,oBAAoB;AAC3B,aAASJ,gBAAe;AACtB,YAAM,iBAAiB,OAAO,eAAe,OAAO,YAAY,KAAK,OAAO;AAC5E,YAAM,eAAe,KAAK,IAAI,KAAK,IAAI,gBAAgB,OAAO,aAAa,CAAC,GAAG,OAAO,aAAa,CAAC;AACpG,aAAO,aAAa,YAAY;AAChC,aAAO,kBAAkB;AACzB,aAAO,oBAAoB;AAAA,IAC7B;AACA,QAAI;AACJ,QAAI,OAAO,YAAY,OAAO,SAAS,WAAW,CAAC,OAAO,SAAS;AACjE,MAAAA,cAAa;AACb,UAAI,OAAO,YAAY;AACrB,eAAO,iBAAiB;AAAA,MAC1B;AAAA,IACF,OAAO;AACL,WAAK,OAAO,kBAAkB,UAAU,OAAO,gBAAgB,MAAM,OAAO,SAAS,CAAC,OAAO,gBAAgB;AAC3G,cAAM,SAAS,OAAO,WAAW,OAAO,QAAQ,UAAU,OAAO,QAAQ,SAAS,OAAO;AACzF,qBAAa,OAAO,QAAQ,OAAO,SAAS,GAAG,GAAG,OAAO,IAAI;AAAA,MAC/D,OAAO;AACL,qBAAa,OAAO,QAAQ,OAAO,aAAa,GAAG,OAAO,IAAI;AAAA,MAChE;AACA,UAAI,CAAC,YAAY;AACf,QAAAA,cAAa;AAAA,MACf;AAAA,IACF;AACA,QAAI,OAAO,iBAAiB,aAAa,OAAO,UAAU;AACxD,aAAO,cAAc;AAAA,IACvB;AACA,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EACA,gBAAgB,cAAc,YAAY;AACxC,QAAI,eAAe,QAAQ;AACzB,mBAAa;AAAA,IACf;AACA,UAAM,SAAS;AACf,UAAM,mBAAmB,OAAO,OAAO;AACvC,QAAI,CAAC,cAAc;AAEjB,qBAAe,qBAAqB,eAAe,aAAa;AAAA,IAClE;AACA,QAAI,iBAAiB,oBAAoB,iBAAiB,gBAAgB,iBAAiB,YAAY;AACrG,aAAO;AAAA,IACT;AACA,WAAO,GAAG,UAAU,OAAO,GAAG,OAAO,OAAO,sBAAsB,GAAG,gBAAgB,EAAE;AACvF,WAAO,GAAG,UAAU,IAAI,GAAG,OAAO,OAAO,sBAAsB,GAAG,YAAY,EAAE;AAChF,WAAO,qBAAqB;AAC5B,WAAO,OAAO,YAAY;AAC1B,WAAO,OAAO,QAAQ,aAAW;AAC/B,UAAI,iBAAiB,YAAY;AAC/B,gBAAQ,MAAM,QAAQ;AAAA,MACxB,OAAO;AACL,gBAAQ,MAAM,SAAS;AAAA,MACzB;AAAA,IACF,CAAC;AACD,WAAO,KAAK,iBAAiB;AAC7B,QAAI,WAAY,QAAO,OAAO;AAC9B,WAAO;AAAA,EACT;AAAA,EACA,wBAAwB,WAAW;AACjC,UAAM,SAAS;AACf,QAAI,OAAO,OAAO,cAAc,SAAS,CAAC,OAAO,OAAO,cAAc,MAAO;AAC7E,WAAO,MAAM,cAAc;AAC3B,WAAO,eAAe,OAAO,OAAO,cAAc,gBAAgB,OAAO;AACzE,QAAI,OAAO,KAAK;AACd,aAAO,GAAG,UAAU,IAAI,GAAG,OAAO,OAAO,sBAAsB,KAAK;AACpE,aAAO,GAAG,MAAM;AAAA,IAClB,OAAO;AACL,aAAO,GAAG,UAAU,OAAO,GAAG,OAAO,OAAO,sBAAsB,KAAK;AACvE,aAAO,GAAG,MAAM;AAAA,IAClB;AACA,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,MAAM,SAAS;AACb,UAAM,SAAS;AACf,QAAI,OAAO,QAAS,QAAO;AAG3B,QAAI,KAAK,WAAW,OAAO,OAAO;AAClC,QAAI,OAAO,OAAO,UAAU;AAC1B,WAAK,SAAS,cAAc,EAAE;AAAA,IAChC;AACA,QAAI,CAAC,IAAI;AACP,aAAO;AAAA,IACT;AACA,OAAG,SAAS;AACZ,QAAI,GAAG,cAAc,GAAG,WAAW,QAAQ,GAAG,WAAW,KAAK,aAAa,oBAAoB;AAC7F,aAAO,YAAY;AAAA,IACrB;AACA,UAAM,qBAAqB,MAAM;AAC/B,aAAO,KAAK,OAAO,OAAO,gBAAgB,IAAI,KAAK,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,IAC3E;AACA,UAAM,aAAa,MAAM;AACvB,UAAI,MAAM,GAAG,cAAc,GAAG,WAAW,eAAe;AACtD,cAAM,MAAM,GAAG,WAAW,cAAc,mBAAmB,CAAC;AAE5D,eAAO;AAAA,MACT;AACA,aAAO,gBAAgB,IAAI,mBAAmB,CAAC,EAAE,CAAC;AAAA,IACpD;AAEA,QAAI,YAAY,WAAW;AAC3B,QAAI,CAAC,aAAa,OAAO,OAAO,gBAAgB;AAC9C,kBAAY,cAAc,OAAO,OAAO,OAAO,YAAY;AAC3D,SAAG,OAAO,SAAS;AACnB,sBAAgB,IAAI,IAAI,OAAO,OAAO,UAAU,EAAE,EAAE,QAAQ,aAAW;AACrE,kBAAU,OAAO,OAAO;AAAA,MAC1B,CAAC;AAAA,IACH;AACA,WAAO,OAAO,QAAQ;AAAA,MACpB;AAAA,MACA;AAAA,MACA,UAAU,OAAO,aAAa,CAAC,GAAG,WAAW,KAAK,aAAa,GAAG,WAAW,OAAO;AAAA,MACpF,QAAQ,OAAO,YAAY,GAAG,WAAW,OAAO;AAAA,MAChD,SAAS;AAAA;AAAA,MAET,KAAK,GAAG,IAAI,YAAY,MAAM,SAAS,aAAa,IAAI,WAAW,MAAM;AAAA,MACzE,cAAc,OAAO,OAAO,cAAc,iBAAiB,GAAG,IAAI,YAAY,MAAM,SAAS,aAAa,IAAI,WAAW,MAAM;AAAA,MAC/H,UAAU,aAAa,WAAW,SAAS,MAAM;AAAA,IACnD,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,KAAK,IAAI;AACP,UAAM,SAAS;AACf,QAAI,OAAO,YAAa,QAAO;AAC/B,UAAM,UAAU,OAAO,MAAM,EAAE;AAC/B,QAAI,YAAY,MAAO,QAAO;AAC9B,WAAO,KAAK,YAAY;AAGxB,QAAI,OAAO,OAAO,aAAa;AAC7B,aAAO,cAAc;AAAA,IACvB;AAGA,WAAO,WAAW;AAGlB,WAAO,WAAW;AAGlB,WAAO,aAAa;AACpB,QAAI,OAAO,OAAO,eAAe;AAC/B,aAAO,cAAc;AAAA,IACvB;AAGA,QAAI,OAAO,OAAO,cAAc,OAAO,SAAS;AAC9C,aAAO,cAAc;AAAA,IACvB;AAGA,QAAI,OAAO,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACzE,aAAO,QAAQ,OAAO,OAAO,eAAe,OAAO,QAAQ,cAAc,GAAG,OAAO,OAAO,oBAAoB,OAAO,IAAI;AAAA,IAC3H,OAAO;AACL,aAAO,QAAQ,OAAO,OAAO,cAAc,GAAG,OAAO,OAAO,oBAAoB,OAAO,IAAI;AAAA,IAC7F;AAGA,QAAI,OAAO,OAAO,MAAM;AACtB,aAAO,WAAW;AAAA,IACpB;AAGA,WAAO,aAAa;AACpB,UAAM,eAAe,CAAC,GAAG,OAAO,GAAG,iBAAiB,kBAAkB,CAAC;AACvE,QAAI,OAAO,WAAW;AACpB,mBAAa,KAAK,GAAG,OAAO,OAAO,iBAAiB,kBAAkB,CAAC;AAAA,IACzE;AACA,iBAAa,QAAQ,aAAW;AAC9B,UAAI,QAAQ,UAAU;AACpB,6BAAqB,QAAQ,OAAO;AAAA,MACtC,OAAO;AACL,gBAAQ,iBAAiB,QAAQ,OAAK;AACpC,+BAAqB,QAAQ,EAAE,MAAM;AAAA,QACvC,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,YAAQ,MAAM;AAGd,WAAO,cAAc;AACrB,YAAQ,MAAM;AAGd,WAAO,KAAK,MAAM;AAClB,WAAO,KAAK,WAAW;AACvB,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,gBAAgB,aAAa;AACnC,QAAI,mBAAmB,QAAQ;AAC7B,uBAAiB;AAAA,IACnB;AACA,QAAI,gBAAgB,QAAQ;AAC1B,oBAAc;AAAA,IAChB;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,OAAO,WAAW,eAAe,OAAO,WAAW;AAC5D,aAAO;AAAA,IACT;AACA,WAAO,KAAK,eAAe;AAG3B,WAAO,cAAc;AAGrB,WAAO,aAAa;AAGpB,QAAI,OAAO,MAAM;AACf,aAAO,YAAY;AAAA,IACrB;AAGA,QAAI,aAAa;AACf,aAAO,cAAc;AACrB,SAAG,gBAAgB,OAAO;AAC1B,gBAAU,gBAAgB,OAAO;AACjC,UAAI,UAAU,OAAO,QAAQ;AAC3B,eAAO,QAAQ,aAAW;AACxB,kBAAQ,UAAU,OAAO,OAAO,mBAAmB,OAAO,kBAAkB,OAAO,gBAAgB,OAAO,cAAc;AACxH,kBAAQ,gBAAgB,OAAO;AAC/B,kBAAQ,gBAAgB,yBAAyB;AAAA,QACnD,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,KAAK,SAAS;AAGrB,WAAO,KAAK,OAAO,eAAe,EAAE,QAAQ,eAAa;AACvD,aAAO,IAAI,SAAS;AAAA,IACtB,CAAC;AACD,QAAI,mBAAmB,OAAO;AAC5B,aAAO,GAAG,SAAS;AACnB,MAAAK,aAAY,MAAM;AAAA,IACpB;AACA,WAAO,YAAY;AACnB,WAAO;AAAA,EACT;AAAA,EACA,OAAO,eAAe,aAAa;AACjC,IAAAD,QAAO,kBAAkB,WAAW;AAAA,EACtC;AAAA,EACA,WAAW,mBAAmB;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,WAAW,WAAW;AACpB,WAAO;AAAA,EACT;AAAA,EACA,OAAO,cAAc,KAAK;AACxB,QAAI,CAAC,QAAO,UAAU,YAAa,SAAO,UAAU,cAAc,CAAC;AACnE,UAAME,WAAU,QAAO,UAAU;AACjC,QAAI,OAAO,QAAQ,cAAcA,SAAQ,QAAQ,GAAG,IAAI,GAAG;AACzD,MAAAA,SAAQ,KAAK,GAAG;AAAA,IAClB;AAAA,EACF;AAAA,EACA,OAAO,IAAI,QAAQ;AACjB,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,QAAQ,OAAK,QAAO,cAAc,CAAC,CAAC;AAC3C,aAAO;AAAA,IACT;AACA,YAAO,cAAc,MAAM;AAC3B,WAAO;AAAA,EACT;AACF;AACA,OAAO,KAAK,UAAU,EAAE,QAAQ,oBAAkB;AAChD,SAAO,KAAK,WAAW,cAAc,CAAC,EAAE,QAAQ,iBAAe;AAC7D,WAAO,UAAU,WAAW,IAAI,WAAW,cAAc,EAAE,WAAW;AAAA,EACxE,CAAC;AACH,CAAC;AACD,OAAO,IAAI,CAAC,QAAQ,QAAQ,CAAC;;;ACxjH7B,SAAS,QAAQ,MAAM;AACrB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,SAAS;AAAA,MACP,SAAS;AAAA,MACT,QAAQ,CAAC;AAAA,MACT,OAAO;AAAA,MACP,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACD,MAAI;AACJ,QAAMC,YAAWC,aAAY;AAC7B,SAAO,UAAU;AAAA,IACf,OAAO,CAAC;AAAA,IACR,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,QAAQ,CAAC;AAAA,IACT,QAAQ;AAAA,IACR,YAAY,CAAC;AAAA,EACf;AACA,QAAM,UAAUD,UAAS,cAAc,KAAK;AAC5C,WAAS,YAAYE,QAAO,OAAO;AACjC,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,OAAO,SAAS,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC/C,aAAO,OAAO,QAAQ,MAAM,KAAK;AAAA,IACnC;AAEA,QAAI;AACJ,QAAI,OAAO,aAAa;AACtB,gBAAU,OAAO,YAAY,KAAK,QAAQA,QAAO,KAAK;AACtD,UAAI,OAAO,YAAY,UAAU;AAC/B,gBAAQ,YAAY;AACpB,kBAAU,QAAQ,SAAS,CAAC;AAAA,MAC9B;AAAA,IACF,WAAW,OAAO,WAAW;AAC3B,gBAAU,cAAc,cAAc;AAAA,IACxC,OAAO;AACL,gBAAU,cAAc,OAAO,OAAO,OAAO,UAAU;AAAA,IACzD;AACA,YAAQ,aAAa,2BAA2B,KAAK;AACrD,QAAI,CAAC,OAAO,aAAa;AACvB,cAAQ,YAAYA;AAAA,IACtB;AACA,QAAI,OAAO,OAAO;AAChB,aAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,WAASC,QAAO,OAAO;AACrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,IAAI,OAAO;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO,OAAO;AAClB,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,IAAI;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV,IAAI,OAAO;AACX,QAAI,CAAC,OAAO,OAAO,SAAS;AAC1B,aAAO,kBAAkB;AAAA,IAC3B;AACA,UAAM,cAAc,OAAO,eAAe;AAC1C,QAAI;AACJ,QAAI,OAAO,aAAc,cAAa;AAAA,QAAa,cAAa,OAAO,aAAa,IAAI,SAAS;AACjG,QAAI;AACJ,QAAI;AACJ,QAAI,gBAAgB;AAClB,oBAAc,KAAK,MAAM,gBAAgB,CAAC,IAAI,iBAAiB;AAC/D,qBAAe,KAAK,MAAM,gBAAgB,CAAC,IAAI,iBAAiB;AAAA,IAClE,OAAO;AACL,oBAAc,iBAAiB,iBAAiB,KAAK;AACrD,sBAAgB,SAAS,gBAAgB,kBAAkB;AAAA,IAC7D;AACA,QAAI,OAAO,cAAc;AACzB,QAAI,KAAK,cAAc;AACvB,QAAI,CAAC,QAAQ;AACX,aAAO,KAAK,IAAI,MAAM,CAAC;AACvB,WAAK,KAAK,IAAI,IAAI,OAAO,SAAS,CAAC;AAAA,IACrC;AACA,QAAI,UAAU,OAAO,WAAW,IAAI,KAAK,MAAM,OAAO,WAAW,CAAC,KAAK;AACvE,QAAI,UAAU,eAAe,cAAc;AACzC,cAAQ;AACR,UAAI,CAAC,eAAgB,WAAU,OAAO,WAAW,CAAC;AAAA,IACpD,WAAW,UAAU,cAAc,cAAc;AAC/C,aAAO,CAAC;AACR,UAAI,eAAgB,WAAU,OAAO,WAAW,CAAC;AAAA,IACnD;AACA,WAAO,OAAO,OAAO,SAAS;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,IACF,CAAC;AACD,aAAS,aAAa;AACpB,aAAO,aAAa;AACpB,aAAO,eAAe;AACtB,aAAO,oBAAoB;AAC3B,WAAK,eAAe;AAAA,IACtB;AACA,QAAI,iBAAiB,QAAQ,eAAe,MAAM,CAAC,OAAO;AACxD,UAAI,OAAO,eAAe,sBAAsB,WAAW,gBAAgB;AACzE,eAAO,OAAO,QAAQ,aAAW;AAC/B,kBAAQ,MAAM,UAAU,IAAI,GAAG,SAAS,KAAK,IAAI,OAAO,sBAAsB,CAAC,CAAC;AAAA,QAClF,CAAC;AAAA,MACH;AACA,aAAO,eAAe;AACtB,WAAK,eAAe;AACpB;AAAA,IACF;AACA,QAAI,OAAO,OAAO,QAAQ,gBAAgB;AACxC,aAAO,OAAO,QAAQ,eAAe,KAAK,QAAQ;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,SAAS,YAAY;AAC3B,gBAAM,iBAAiB,CAAC;AACxB,mBAAS,IAAI,MAAM,KAAK,IAAI,KAAK,GAAG;AAClC,2BAAe,KAAK,OAAO,CAAC,CAAC;AAAA,UAC/B;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC;AACD,UAAI,OAAO,OAAO,QAAQ,sBAAsB;AAC9C,mBAAW;AAAA,MACb,OAAO;AACL,aAAK,eAAe;AAAA,MACtB;AACA;AAAA,IACF;AACA,UAAM,iBAAiB,CAAC;AACxB,UAAM,gBAAgB,CAAC;AACvB,UAAM,gBAAgB,WAAS;AAC7B,UAAI,aAAa;AACjB,UAAI,QAAQ,GAAG;AACb,qBAAa,OAAO,SAAS;AAAA,MAC/B,WAAW,cAAc,OAAO,QAAQ;AAEtC,qBAAa,aAAa,OAAO;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AACA,QAAI,OAAO;AACT,aAAO,OAAO,OAAO,QAAM,GAAG,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB,CAAC,EAAE,QAAQ,aAAW;AACtG,gBAAQ,OAAO;AAAA,MACjB,CAAC;AAAA,IACH,OAAO;AACL,eAAS,IAAI,cAAc,KAAK,YAAY,KAAK,GAAG;AAClD,YAAI,IAAI,QAAQ,IAAI,IAAI;AACtB,gBAAM,aAAa,cAAc,CAAC;AAClC,iBAAO,OAAO,OAAO,QAAM,GAAG,QAAQ,IAAI,OAAO,OAAO,UAAU,6BAA6B,UAAU,6CAA6C,UAAU,IAAI,CAAC,EAAE,QAAQ,aAAW;AACxL,oBAAQ,OAAO;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,UAAM,WAAW,SAAS,CAAC,OAAO,SAAS;AAC3C,UAAM,SAAS,SAAS,OAAO,SAAS,IAAI,OAAO;AACnD,aAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,GAAG;AACzC,UAAI,KAAK,QAAQ,KAAK,IAAI;AACxB,cAAM,aAAa,cAAc,CAAC;AAClC,YAAI,OAAO,eAAe,eAAe,OAAO;AAC9C,wBAAc,KAAK,UAAU;AAAA,QAC/B,OAAO;AACL,cAAI,IAAI,WAAY,eAAc,KAAK,UAAU;AACjD,cAAI,IAAI,aAAc,gBAAe,KAAK,UAAU;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AACA,kBAAc,QAAQ,WAAS;AAC7B,aAAO,SAAS,OAAO,YAAY,OAAO,KAAK,GAAG,KAAK,CAAC;AAAA,IAC1D,CAAC;AACD,QAAI,QAAQ;AACV,eAAS,IAAI,eAAe,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AACtD,cAAM,QAAQ,eAAe,CAAC;AAC9B,eAAO,SAAS,QAAQ,YAAY,OAAO,KAAK,GAAG,KAAK,CAAC;AAAA,MAC3D;AAAA,IACF,OAAO;AACL,qBAAe,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACnC,qBAAe,QAAQ,WAAS;AAC9B,eAAO,SAAS,QAAQ,YAAY,OAAO,KAAK,GAAG,KAAK,CAAC;AAAA,MAC3D,CAAC;AAAA,IACH;AACA,oBAAgB,OAAO,UAAU,6BAA6B,EAAE,QAAQ,aAAW;AACjF,cAAQ,MAAM,UAAU,IAAI,GAAG,SAAS,KAAK,IAAI,OAAO,sBAAsB,CAAC,CAAC;AAAA,IAClF,CAAC;AACD,eAAW;AAAA,EACb;AACA,WAASC,aAAY,QAAQ;AAC3B,QAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAI,OAAO,CAAC,EAAG,QAAO,QAAQ,OAAO,KAAK,OAAO,CAAC,CAAC;AAAA,MACrD;AAAA,IACF,OAAO;AACL,aAAO,QAAQ,OAAO,KAAK,MAAM;AAAA,IACnC;AACA,IAAAD,QAAO,IAAI;AAAA,EACb;AACA,WAASE,cAAa,QAAQ;AAC5B,UAAM,cAAc,OAAO;AAC3B,QAAI,iBAAiB,cAAc;AACnC,QAAI,oBAAoB;AACxB,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAI,OAAO,CAAC,EAAG,QAAO,QAAQ,OAAO,QAAQ,OAAO,CAAC,CAAC;AAAA,MACxD;AACA,uBAAiB,cAAc,OAAO;AACtC,0BAAoB,OAAO;AAAA,IAC7B,OAAO;AACL,aAAO,QAAQ,OAAO,QAAQ,MAAM;AAAA,IACtC;AACA,QAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,YAAM,QAAQ,OAAO,QAAQ;AAC7B,YAAM,WAAW,CAAC;AAClB,aAAO,KAAK,KAAK,EAAE,QAAQ,iBAAe;AACxC,cAAM,WAAW,MAAM,WAAW;AAClC,cAAM,gBAAgB,SAAS,aAAa,yBAAyB;AACrE,YAAI,eAAe;AACjB,mBAAS,aAAa,2BAA2B,SAAS,eAAe,EAAE,IAAI,iBAAiB;AAAA,QAClG;AACA,iBAAS,SAAS,aAAa,EAAE,IAAI,iBAAiB,IAAI;AAAA,MAC5D,CAAC;AACD,aAAO,QAAQ,QAAQ;AAAA,IACzB;AACA,IAAAF,QAAO,IAAI;AACX,WAAO,QAAQ,gBAAgB,CAAC;AAAA,EAClC;AACA,WAASG,aAAY,eAAe;AAClC,QAAI,OAAO,kBAAkB,eAAe,kBAAkB,KAAM;AACpE,QAAI,cAAc,OAAO;AACzB,QAAI,MAAM,QAAQ,aAAa,GAAG;AAChC,eAAS,IAAI,cAAc,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AACrD,YAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,iBAAO,OAAO,QAAQ,MAAM,cAAc,CAAC,CAAC;AAE5C,iBAAO,KAAK,OAAO,QAAQ,KAAK,EAAE,QAAQ,SAAO;AAC/C,gBAAI,MAAM,eAAe;AACvB,qBAAO,QAAQ,MAAM,MAAM,CAAC,IAAI,OAAO,QAAQ,MAAM,GAAG;AACxD,qBAAO,QAAQ,MAAM,MAAM,CAAC,EAAE,aAAa,2BAA2B,MAAM,CAAC;AAC7E,qBAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,YACjC;AAAA,UACF,CAAC;AAAA,QACH;AACA,eAAO,QAAQ,OAAO,OAAO,cAAc,CAAC,GAAG,CAAC;AAChD,YAAI,cAAc,CAAC,IAAI,YAAa,gBAAe;AACnD,sBAAc,KAAK,IAAI,aAAa,CAAC;AAAA,MACvC;AAAA,IACF,OAAO;AACL,UAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,eAAO,OAAO,QAAQ,MAAM,aAAa;AAEzC,eAAO,KAAK,OAAO,QAAQ,KAAK,EAAE,QAAQ,SAAO;AAC/C,cAAI,MAAM,eAAe;AACvB,mBAAO,QAAQ,MAAM,MAAM,CAAC,IAAI,OAAO,QAAQ,MAAM,GAAG;AACxD,mBAAO,QAAQ,MAAM,MAAM,CAAC,EAAE,aAAa,2BAA2B,MAAM,CAAC;AAC7E,mBAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,UACjC;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO,QAAQ,OAAO,OAAO,eAAe,CAAC;AAC7C,UAAI,gBAAgB,YAAa,gBAAe;AAChD,oBAAc,KAAK,IAAI,aAAa,CAAC;AAAA,IACvC;AACA,IAAAH,QAAO,IAAI;AACX,WAAO,QAAQ,aAAa,CAAC;AAAA,EAC/B;AACA,WAASI,mBAAkB;AACzB,WAAO,QAAQ,SAAS,CAAC;AACzB,QAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,aAAO,QAAQ,QAAQ,CAAC;AAAA,IAC1B;AACA,IAAAJ,QAAO,IAAI;AACX,WAAO,QAAQ,GAAG,CAAC;AAAA,EACrB;AACA,KAAG,cAAc,MAAM;AACrB,QAAI,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpC,QAAI;AACJ,QAAI,OAAO,OAAO,aAAa,QAAQ,WAAW,aAAa;AAC7D,YAAM,SAAS,CAAC,GAAG,OAAO,SAAS,QAAQ,EAAE,OAAO,QAAM,GAAG,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB,CAAC;AAClH,UAAI,UAAU,OAAO,QAAQ;AAC3B,eAAO,QAAQ,SAAS,CAAC,GAAG,MAAM;AAClC,4BAAoB;AACpB,eAAO,QAAQ,CAAC,SAAS,eAAe;AACtC,kBAAQ,aAAa,2BAA2B,UAAU;AAC1D,iBAAO,QAAQ,MAAM,UAAU,IAAI;AACnC,kBAAQ,OAAO;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,CAAC,mBAAmB;AACtB,aAAO,QAAQ,SAAS,OAAO,OAAO,QAAQ;AAAA,IAChD;AACA,WAAO,WAAW,KAAK,GAAG,OAAO,OAAO,sBAAsB,SAAS;AACvE,WAAO,OAAO,sBAAsB;AACpC,WAAO,eAAe,sBAAsB;AAC5C,IAAAA,QAAO;AAAA,EACT,CAAC;AACD,KAAG,gBAAgB,MAAM;AACvB,QAAI,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpC,QAAI,OAAO,OAAO,WAAW,CAAC,OAAO,mBAAmB;AACtD,mBAAa,cAAc;AAC3B,uBAAiB,WAAW,MAAM;AAChC,QAAAA,QAAO;AAAA,MACT,GAAG,GAAG;AAAA,IACR,OAAO;AACL,MAAAA,QAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,KAAG,sBAAsB,MAAM;AAC7B,QAAI,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpC,QAAI,OAAO,OAAO,SAAS;AACzB,qBAAe,OAAO,WAAW,yBAAyB,GAAG,OAAO,WAAW,IAAI;AAAA,IACrF;AAAA,EACF,CAAC;AACD,SAAO,OAAO,OAAO,SAAS;AAAA,IAC5B,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,QAAAJ;AAAA,EACF,CAAC;AACH;;;AClVA,SAAS,SAAS,MAAM;AACtB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMK,YAAWC,aAAY;AAC7B,QAAMC,UAASC,WAAU;AACzB,SAAO,WAAW;AAAA,IAChB,SAAS;AAAA,EACX;AACA,eAAa;AAAA,IACX,UAAU;AAAA,MACR,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AACD,WAAS,OAAOC,QAAO;AACrB,QAAI,CAAC,OAAO,QAAS;AACrB,UAAM;AAAA,MACJ,cAAc;AAAA,IAChB,IAAI;AACJ,QAAI,IAAIA;AACR,QAAI,EAAE,cAAe,KAAI,EAAE;AAC3B,UAAM,KAAK,EAAE,WAAW,EAAE;AAC1B,UAAM,aAAa,OAAO,OAAO,SAAS;AAC1C,UAAM,WAAW,cAAc,OAAO;AACtC,UAAM,aAAa,cAAc,OAAO;AACxC,UAAM,cAAc,OAAO;AAC3B,UAAM,eAAe,OAAO;AAC5B,UAAM,YAAY,OAAO;AACzB,UAAM,cAAc,OAAO;AAE3B,QAAI,CAAC,OAAO,mBAAmB,OAAO,aAAa,KAAK,gBAAgB,OAAO,WAAW,KAAK,eAAe,aAAa;AACzH,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,mBAAmB,OAAO,aAAa,KAAK,eAAe,OAAO,WAAW,KAAK,aAAa,WAAW;AACpH,aAAO;AAAA,IACT;AACA,QAAI,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS;AACpD,aAAO;AAAA,IACT;AACA,QAAIJ,UAAS,iBAAiBA,UAAS,cAAc,aAAaA,UAAS,cAAc,SAAS,YAAY,MAAM,WAAWA,UAAS,cAAc,SAAS,YAAY,MAAM,aAAa;AAC5L,aAAO;AAAA,IACT;AACA,QAAI,OAAO,OAAO,SAAS,mBAAmB,YAAY,cAAc,eAAe,gBAAgB,aAAa,cAAc;AAChI,UAAI,SAAS;AAEb,UAAI,eAAe,OAAO,IAAI,IAAI,OAAO,OAAO,UAAU,gBAAgB,EAAE,SAAS,KAAK,eAAe,OAAO,IAAI,IAAI,OAAO,OAAO,gBAAgB,EAAE,EAAE,WAAW,GAAG;AACtK,eAAO;AAAA,MACT;AACA,YAAM,KAAK,OAAO;AAClB,YAAM,cAAc,GAAG;AACvB,YAAM,eAAe,GAAG;AACxB,YAAM,cAAcE,QAAO;AAC3B,YAAM,eAAeA,QAAO;AAC5B,YAAM,eAAe,cAAc,EAAE;AACrC,UAAI,IAAK,cAAa,QAAQ,GAAG;AACjC,YAAM,cAAc,CAAC,CAAC,aAAa,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,OAAO,aAAa,aAAa,GAAG,GAAG,CAAC,aAAa,MAAM,aAAa,MAAM,YAAY,GAAG,CAAC,aAAa,OAAO,aAAa,aAAa,MAAM,YAAY,CAAC;AACzO,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,GAAG;AAC9C,cAAM,QAAQ,YAAY,CAAC;AAC3B,YAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,cAAc;AACzF,cAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAG;AACtC,mBAAS;AAAA,QACX;AAAA,MACF;AACA,UAAI,CAAC,OAAQ,QAAO;AAAA,IACtB;AACA,QAAI,OAAO,aAAa,GAAG;AACzB,UAAI,YAAY,cAAc,eAAe,cAAc;AACzD,YAAI,EAAE,eAAgB,GAAE,eAAe;AAAA,YAAO,GAAE,cAAc;AAAA,MAChE;AACA,WAAK,cAAc,iBAAiB,CAAC,QAAQ,YAAY,gBAAgB,IAAK,QAAO,UAAU;AAC/F,WAAK,YAAY,gBAAgB,CAAC,QAAQ,cAAc,iBAAiB,IAAK,QAAO,UAAU;AAAA,IACjG,OAAO;AACL,UAAI,YAAY,cAAc,aAAa,aAAa;AACtD,YAAI,EAAE,eAAgB,GAAE,eAAe;AAAA,YAAO,GAAE,cAAc;AAAA,MAChE;AACA,UAAI,cAAc,YAAa,QAAO,UAAU;AAChD,UAAI,YAAY,UAAW,QAAO,UAAU;AAAA,IAC9C;AACA,SAAK,YAAY,EAAE;AACnB,WAAO;AAAA,EACT;AACA,WAASG,UAAS;AAChB,QAAI,OAAO,SAAS,QAAS;AAC7B,IAAAL,UAAS,iBAAiB,WAAW,MAAM;AAC3C,WAAO,SAAS,UAAU;AAAA,EAC5B;AACA,WAASM,WAAU;AACjB,QAAI,CAAC,OAAO,SAAS,QAAS;AAC9B,IAAAN,UAAS,oBAAoB,WAAW,MAAM;AAC9C,WAAO,SAAS,UAAU;AAAA,EAC5B;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,SAAS,SAAS;AAClC,MAAAK,QAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,QAAI,OAAO,SAAS,SAAS;AAC3B,MAAAC,SAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACD,SAAO,OAAO,OAAO,UAAU;AAAA,IAC7B,QAAAD;AAAA,IACA,SAAAC;AAAA,EACF,CAAC;AACH;;;AC9GA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMC,UAASC,WAAU;AACzB,eAAa;AAAA,IACX,YAAY;AAAA,MACV,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB;AAAA,EACF,CAAC;AACD,SAAO,aAAa;AAAA,IAClB,SAAS;AAAA,EACX;AACA,MAAI;AACJ,MAAI,iBAAiBC,KAAI;AACzB,MAAI;AACJ,QAAM,oBAAoB,CAAC;AAC3B,WAAS,UAAU,GAAG;AAEpB,UAAM,aAAa;AACnB,UAAM,cAAc;AACpB,UAAM,cAAc;AACpB,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,KAAK;AAGT,QAAI,YAAY,GAAG;AACjB,WAAK,EAAE;AAAA,IACT;AACA,QAAI,gBAAgB,GAAG;AACrB,WAAK,CAAC,EAAE,aAAa;AAAA,IACvB;AACA,QAAI,iBAAiB,GAAG;AACtB,WAAK,CAAC,EAAE,cAAc;AAAA,IACxB;AACA,QAAI,iBAAiB,GAAG;AACtB,WAAK,CAAC,EAAE,cAAc;AAAA,IACxB;AAGA,QAAI,UAAU,KAAK,EAAE,SAAS,EAAE,iBAAiB;AAC/C,WAAK;AACL,WAAK;AAAA,IACP;AACA,SAAK,KAAK;AACV,SAAK,KAAK;AACV,QAAI,YAAY,GAAG;AACjB,WAAK,EAAE;AAAA,IACT;AACA,QAAI,YAAY,GAAG;AACjB,WAAK,EAAE;AAAA,IACT;AACA,QAAI,EAAE,YAAY,CAAC,IAAI;AAErB,WAAK;AACL,WAAK;AAAA,IACP;AACA,SAAK,MAAM,OAAO,EAAE,WAAW;AAC7B,UAAI,EAAE,cAAc,GAAG;AAErB,cAAM;AACN,cAAM;AAAA,MACR,OAAO;AAEL,cAAM;AACN,cAAM;AAAA,MACR;AAAA,IACF;AAGA,QAAI,MAAM,CAAC,IAAI;AACb,WAAK,KAAK,IAAI,KAAK;AAAA,IACrB;AACA,QAAI,MAAM,CAAC,IAAI;AACb,WAAK,KAAK,IAAI,KAAK;AAAA,IACrB;AACA,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AACA,WAAS,mBAAmB;AAC1B,QAAI,CAAC,OAAO,QAAS;AACrB,WAAO,eAAe;AAAA,EACxB;AACA,WAAS,mBAAmB;AAC1B,QAAI,CAAC,OAAO,QAAS;AACrB,WAAO,eAAe;AAAA,EACxB;AACA,WAAS,cAAc,UAAU;AAC/B,QAAI,OAAO,OAAO,WAAW,kBAAkB,SAAS,QAAQ,OAAO,OAAO,WAAW,gBAAgB;AAEvG,aAAO;AAAA,IACT;AACA,QAAI,OAAO,OAAO,WAAW,iBAAiBA,KAAI,IAAI,iBAAiB,OAAO,OAAO,WAAW,eAAe;AAE7G,aAAO;AAAA,IACT;AAKA,QAAI,SAAS,SAAS,KAAKA,KAAI,IAAI,iBAAiB,IAAI;AAEtD,aAAO;AAAA,IACT;AAaA,QAAI,SAAS,YAAY,GAAG;AAC1B,WAAK,CAAC,OAAO,SAAS,OAAO,OAAO,SAAS,CAAC,OAAO,WAAW;AAC9D,eAAO,UAAU;AACjB,aAAK,UAAU,SAAS,GAAG;AAAA,MAC7B;AAAA,IACF,YAAY,CAAC,OAAO,eAAe,OAAO,OAAO,SAAS,CAAC,OAAO,WAAW;AAC3E,aAAO,UAAU;AACjB,WAAK,UAAU,SAAS,GAAG;AAAA,IAC7B;AAEA,qBAAiB,IAAIF,QAAO,KAAK,EAAE,QAAQ;AAE3C,WAAO;AAAA,EACT;AACA,WAAS,cAAc,UAAU;AAC/B,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,SAAS,YAAY,GAAG;AAC1B,UAAI,OAAO,SAAS,CAAC,OAAO,OAAO,QAAQ,OAAO,gBAAgB;AAEhE,eAAO;AAAA,MACT;AAAA,IACF,WAAW,OAAO,eAAe,CAAC,OAAO,OAAO,QAAQ,OAAO,gBAAgB;AAE7E,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAAS,OAAOG,QAAO;AACrB,QAAI,IAAIA;AACR,QAAI,sBAAsB;AAC1B,QAAI,CAAC,OAAO,QAAS;AAGrB,QAAIA,OAAM,OAAO,QAAQ,IAAI,OAAO,OAAO,WAAW,iBAAiB,EAAE,EAAG;AAC5E,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,OAAO,OAAO,SAAS;AACzB,QAAE,eAAe;AAAA,IACnB;AACA,QAAI,WAAW,OAAO;AACtB,QAAI,OAAO,OAAO,WAAW,iBAAiB,aAAa;AACzD,iBAAW,SAAS,cAAc,OAAO,OAAO,WAAW,YAAY;AAAA,IACzE;AACA,UAAM,yBAAyB,YAAY,SAAS,SAAS,EAAE,MAAM;AACrE,QAAI,CAAC,OAAO,gBAAgB,CAAC,0BAA0B,CAAC,OAAO,eAAgB,QAAO;AACtF,QAAI,EAAE,cAAe,KAAI,EAAE;AAC3B,QAAI,QAAQ;AACZ,UAAM,YAAY,OAAO,eAAe,KAAK;AAC7C,UAAM,OAAO,UAAU,CAAC;AACxB,QAAI,OAAO,aAAa;AACtB,UAAI,OAAO,aAAa,GAAG;AACzB,YAAI,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,MAAM,EAAG,SAAQ,CAAC,KAAK,SAAS;AAAA,YAAe,QAAO;AAAA,MAClG,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,MAAM,EAAG,SAAQ,CAAC,KAAK;AAAA,UAAY,QAAO;AAAA,IAC7F,OAAO;AACL,cAAQ,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS,YAAY,CAAC,KAAK;AAAA,IAC3F;AACA,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,OAAO,OAAQ,SAAQ,CAAC;AAG5B,QAAI,YAAY,OAAO,aAAa,IAAI,QAAQ,OAAO;AACvD,QAAI,aAAa,OAAO,aAAa,EAAG,aAAY,OAAO,aAAa;AACxE,QAAI,aAAa,OAAO,aAAa,EAAG,aAAY,OAAO,aAAa;AASxE,0BAAsB,OAAO,OAAO,OAAO,OAAO,EAAE,cAAc,OAAO,aAAa,KAAK,cAAc,OAAO,aAAa;AAC7H,QAAI,uBAAuB,OAAO,OAAO,OAAQ,GAAE,gBAAgB;AACnE,QAAI,CAAC,OAAO,OAAO,YAAY,CAAC,OAAO,OAAO,SAAS,SAAS;AAE9D,YAAM,WAAW;AAAA,QACf,MAAMD,KAAI;AAAA,QACV,OAAO,KAAK,IAAI,KAAK;AAAA,QACrB,WAAW,KAAK,KAAK,KAAK;AAAA,QAC1B,KAAKC;AAAA,MACP;AAGA,UAAI,kBAAkB,UAAU,GAAG;AACjC,0BAAkB,MAAM;AAAA,MAC1B;AAEA,YAAM,YAAY,kBAAkB,SAAS,kBAAkB,kBAAkB,SAAS,CAAC,IAAI;AAC/F,wBAAkB,KAAK,QAAQ;AAQ/B,UAAI,WAAW;AACb,YAAI,SAAS,cAAc,UAAU,aAAa,SAAS,QAAQ,UAAU,SAAS,SAAS,OAAO,UAAU,OAAO,KAAK;AAC1H,wBAAc,QAAQ;AAAA,QACxB;AAAA,MACF,OAAO;AACL,sBAAc,QAAQ;AAAA,MACxB;AAIA,UAAI,cAAc,QAAQ,GAAG;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AAOL,YAAM,WAAW;AAAA,QACf,MAAMD,KAAI;AAAA,QACV,OAAO,KAAK,IAAI,KAAK;AAAA,QACrB,WAAW,KAAK,KAAK,KAAK;AAAA,MAC5B;AACA,YAAM,oBAAoB,uBAAuB,SAAS,OAAO,oBAAoB,OAAO,OAAO,SAAS,SAAS,oBAAoB,SAAS,SAAS,cAAc,oBAAoB;AAC7L,UAAI,CAAC,mBAAmB;AACtB,8BAAsB;AACtB,YAAI,WAAW,OAAO,aAAa,IAAI,QAAQ,OAAO;AACtD,cAAM,eAAe,OAAO;AAC5B,cAAM,SAAS,OAAO;AACtB,YAAI,YAAY,OAAO,aAAa,EAAG,YAAW,OAAO,aAAa;AACtE,YAAI,YAAY,OAAO,aAAa,EAAG,YAAW,OAAO,aAAa;AACtE,eAAO,cAAc,CAAC;AACtB,eAAO,aAAa,QAAQ;AAC5B,eAAO,eAAe;AACtB,eAAO,kBAAkB;AACzB,eAAO,oBAAoB;AAC3B,YAAI,CAAC,gBAAgB,OAAO,eAAe,CAAC,UAAU,OAAO,OAAO;AAClE,iBAAO,oBAAoB;AAAA,QAC7B;AACA,YAAI,OAAO,OAAO,MAAM;AACtB,iBAAO,QAAQ;AAAA,YACb,WAAW,SAAS,YAAY,IAAI,SAAS;AAAA,YAC7C,cAAc;AAAA,UAChB,CAAC;AAAA,QACH;AACA,YAAI,OAAO,OAAO,SAAS,QAAQ;AAYjC,uBAAa,OAAO;AACpB,oBAAU;AACV,cAAI,kBAAkB,UAAU,IAAI;AAClC,8BAAkB,MAAM;AAAA,UAC1B;AAEA,gBAAM,YAAY,kBAAkB,SAAS,kBAAkB,kBAAkB,SAAS,CAAC,IAAI;AAC/F,gBAAM,aAAa,kBAAkB,CAAC;AACtC,4BAAkB,KAAK,QAAQ;AAC/B,cAAI,cAAc,SAAS,QAAQ,UAAU,SAAS,SAAS,cAAc,UAAU,YAAY;AAEjG,8BAAkB,OAAO,CAAC;AAAA,UAC5B,WAAW,kBAAkB,UAAU,MAAM,SAAS,OAAO,WAAW,OAAO,OAAO,WAAW,QAAQ,SAAS,SAAS,KAAK,SAAS,SAAS,GAAG;AAOnJ,kBAAM,kBAAkB,QAAQ,IAAI,MAAM;AAC1C,kCAAsB;AACtB,8BAAkB,OAAO,CAAC;AAC1B,sBAAUE,UAAS,MAAM;AACvB,qBAAO,eAAe,OAAO,OAAO,OAAO,MAAM,QAAW,eAAe;AAAA,YAC7E,GAAG,CAAC;AAAA,UACN;AAEA,cAAI,CAAC,SAAS;AAIZ,sBAAUA,UAAS,MAAM;AACvB,oBAAM,kBAAkB;AACxB,oCAAsB;AACtB,gCAAkB,OAAO,CAAC;AAC1B,qBAAO,eAAe,OAAO,OAAO,OAAO,MAAM,QAAW,eAAe;AAAA,YAC7E,GAAG,GAAG;AAAA,UACR;AAAA,QACF;AAGA,YAAI,CAAC,kBAAmB,MAAK,UAAU,CAAC;AAGxC,YAAI,OAAO,OAAO,YAAY,OAAO,OAAO,6BAA8B,QAAO,SAAS,KAAK;AAE/F,YAAI,OAAO,mBAAmB,aAAa,OAAO,aAAa,KAAK,aAAa,OAAO,aAAa,IAAI;AACvG,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,QAAI,EAAE,eAAgB,GAAE,eAAe;AAAA,QAAO,GAAE,cAAc;AAC9D,WAAO;AAAA,EACT;AACA,WAASC,QAAO,QAAQ;AACtB,QAAI,WAAW,OAAO;AACtB,QAAI,OAAO,OAAO,WAAW,iBAAiB,aAAa;AACzD,iBAAW,SAAS,cAAc,OAAO,OAAO,WAAW,YAAY;AAAA,IACzE;AACA,aAAS,MAAM,EAAE,cAAc,gBAAgB;AAC/C,aAAS,MAAM,EAAE,cAAc,gBAAgB;AAC/C,aAAS,MAAM,EAAE,SAAS,MAAM;AAAA,EAClC;AACA,WAASC,UAAS;AAChB,QAAI,OAAO,OAAO,SAAS;AACzB,aAAO,UAAU,oBAAoB,SAAS,MAAM;AACpD,aAAO;AAAA,IACT;AACA,QAAI,OAAO,WAAW,QAAS,QAAO;AACtC,IAAAD,QAAO,kBAAkB;AACzB,WAAO,WAAW,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,WAASE,WAAU;AACjB,QAAI,OAAO,OAAO,SAAS;AACzB,aAAO,UAAU,iBAAiB,OAAO,MAAM;AAC/C,aAAO;AAAA,IACT;AACA,QAAI,CAAC,OAAO,WAAW,QAAS,QAAO;AACvC,IAAAF,QAAO,qBAAqB;AAC5B,WAAO,WAAW,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,CAAC,OAAO,OAAO,WAAW,WAAW,OAAO,OAAO,SAAS;AAC9D,MAAAE,SAAQ;AAAA,IACV;AACA,QAAI,OAAO,OAAO,WAAW,QAAS,CAAAD,QAAO;AAAA,EAC/C,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,QAAI,OAAO,OAAO,SAAS;AACzB,MAAAA,QAAO;AAAA,IACT;AACA,QAAI,OAAO,WAAW,QAAS,CAAAC,SAAQ;AAAA,EACzC,CAAC;AACD,SAAO,OAAO,OAAO,YAAY;AAAA,IAC/B,QAAAD;AAAA,IACA,SAAAC;AAAA,EACF,CAAC;AACH;;;ACpYA,SAAS,0BAA0B,QAAQ,gBAAgB,QAAQ,YAAY;AAC7E,MAAI,OAAO,OAAO,gBAAgB;AAChC,WAAO,KAAK,UAAU,EAAE,QAAQ,SAAO;AACrC,UAAI,CAAC,OAAO,GAAG,KAAK,OAAO,SAAS,MAAM;AACxC,YAAI,UAAU,gBAAgB,OAAO,IAAI,IAAI,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC;AACjE,YAAI,CAAC,SAAS;AACZ,oBAAU,cAAc,OAAO,WAAW,GAAG,CAAC;AAC9C,kBAAQ,YAAY,WAAW,GAAG;AAClC,iBAAO,GAAG,OAAO,OAAO;AAAA,QAC1B;AACA,eAAO,GAAG,IAAI;AACd,uBAAe,GAAG,IAAI;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;AChBA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,aAAa;AAAA,MACb,WAAW;AAAA,MACX,yBAAyB;AAAA,IAC3B;AAAA,EACF,CAAC;AACD,SAAO,aAAa;AAAA,IAClB,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AACA,QAAM,oBAAoB,SAAO,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,OAAO,OAAK,CAAC,CAAC,CAAC;AAC/E,WAAS,MAAM,IAAI;AACjB,QAAI;AACJ,QAAI,MAAM,OAAO,OAAO,YAAY,OAAO,WAAW;AACpD,YAAM,OAAO,GAAG,cAAc,EAAE;AAChC,UAAI,IAAK,QAAO;AAAA,IAClB;AACA,QAAI,IAAI;AACN,UAAI,OAAO,OAAO,SAAU,OAAM,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAAC;AACnE,UAAI,OAAO,OAAO,qBAAqB,OAAO,OAAO,YAAY,IAAI,SAAS,KAAK,OAAO,GAAG,iBAAiB,EAAE,EAAE,WAAW,GAAG;AAC9H,cAAM,OAAO,GAAG,cAAc,EAAE;AAAA,MAClC;AAAA,IACF;AACA,QAAI,MAAM,CAAC,IAAK,QAAO;AAEvB,WAAO;AAAA,EACT;AACA,WAAS,SAAS,IAAI,UAAU;AAC9B,UAAM,SAAS,OAAO,OAAO;AAC7B,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,UAAI,OAAO;AACT,cAAM,UAAU,WAAW,QAAQ,QAAQ,EAAE,GAAG,OAAO,cAAc,MAAM,GAAG,CAAC;AAC/E,YAAI,MAAM,YAAY,SAAU,OAAM,WAAW;AACjD,YAAI,OAAO,OAAO,iBAAiB,OAAO,SAAS;AACjD,gBAAM,UAAU,OAAO,WAAW,QAAQ,QAAQ,EAAE,OAAO,SAAS;AAAA,QACtE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAASC,UAAS;AAEhB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,QAAI,OAAO,OAAO,MAAM;AACtB,eAAS,QAAQ,KAAK;AACtB,eAAS,QAAQ,KAAK;AACtB;AAAA,IACF;AACA,aAAS,QAAQ,OAAO,eAAe,CAAC,OAAO,OAAO,MAAM;AAC5D,aAAS,QAAQ,OAAO,SAAS,CAAC,OAAO,OAAO,MAAM;AAAA,EACxD;AACA,WAAS,YAAY,GAAG;AACtB,MAAE,eAAe;AACjB,QAAI,OAAO,eAAe,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,OAAO,OAAQ;AACxE,WAAO,UAAU;AACjB,SAAK,gBAAgB;AAAA,EACvB;AACA,WAAS,YAAY,GAAG;AACtB,MAAE,eAAe;AACjB,QAAI,OAAO,SAAS,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,OAAO,OAAQ;AAClE,WAAO,UAAU;AACjB,SAAK,gBAAgB;AAAA,EACvB;AACA,WAAS,OAAO;AACd,UAAM,SAAS,OAAO,OAAO;AAC7B,WAAO,OAAO,aAAa,0BAA0B,QAAQ,OAAO,eAAe,YAAY,OAAO,OAAO,YAAY;AAAA,MACvH,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AACD,QAAI,EAAE,OAAO,UAAU,OAAO,QAAS;AACvC,QAAI,SAAS,MAAM,OAAO,MAAM;AAChC,QAAI,SAAS,MAAM,OAAO,MAAM;AAChC,WAAO,OAAO,OAAO,YAAY;AAAA,MAC/B;AAAA,MACA;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,MAAM;AACjC,aAAS,kBAAkB,MAAM;AACjC,UAAM,aAAa,CAAC,IAAI,QAAQ;AAC9B,UAAI,IAAI;AACN,WAAG,iBAAiB,SAAS,QAAQ,SAAS,cAAc,WAAW;AAAA,MACzE;AACA,UAAI,CAAC,OAAO,WAAW,IAAI;AACzB,WAAG,UAAU,IAAI,GAAG,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,MACjD;AAAA,IACF;AACA,WAAO,QAAQ,QAAM,WAAW,IAAI,MAAM,CAAC;AAC3C,WAAO,QAAQ,QAAM,WAAW,IAAI,MAAM,CAAC;AAAA,EAC7C;AACA,WAAS,UAAU;AACjB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,aAAS,kBAAkB,MAAM;AACjC,aAAS,kBAAkB,MAAM;AACjC,UAAM,gBAAgB,CAAC,IAAI,QAAQ;AACjC,SAAG,oBAAoB,SAAS,QAAQ,SAAS,cAAc,WAAW;AAC1E,SAAG,UAAU,OAAO,GAAG,OAAO,OAAO,WAAW,cAAc,MAAM,GAAG,CAAC;AAAA,IAC1E;AACA,WAAO,QAAQ,QAAM,cAAc,IAAI,MAAM,CAAC;AAC9C,WAAO,QAAQ,QAAM,cAAc,IAAI,MAAM,CAAC;AAAA,EAChD;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,WAAW,YAAY,OAAO;AAE9C,MAAAC,SAAQ;AAAA,IACV,OAAO;AACL,WAAK;AACL,MAAAD,QAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,KAAG,+BAA+B,MAAM;AACtC,IAAAA,QAAO;AAAA,EACT,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,YAAQ;AAAA,EACV,CAAC;AACD,KAAG,kBAAkB,MAAM;AACzB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,aAAS,kBAAkB,MAAM;AACjC,aAAS,kBAAkB,MAAM;AACjC,QAAI,OAAO,SAAS;AAClB,MAAAA,QAAO;AACP;AAAA,IACF;AACA,KAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,OAAO,QAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAM,GAAG,UAAU,IAAI,OAAO,OAAO,WAAW,SAAS,CAAC;AAAA,EAC9G,CAAC;AACD,KAAG,SAAS,CAAC,IAAI,MAAM;AACrB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,aAAS,kBAAkB,MAAM;AACjC,aAAS,kBAAkB,MAAM;AACjC,UAAM,WAAW,EAAE;AACnB,QAAI,OAAO,OAAO,WAAW,eAAe,CAAC,OAAO,SAAS,QAAQ,KAAK,CAAC,OAAO,SAAS,QAAQ,GAAG;AACpG,UAAI,OAAO,cAAc,OAAO,OAAO,cAAc,OAAO,OAAO,WAAW,cAAc,OAAO,WAAW,OAAO,YAAY,OAAO,WAAW,GAAG,SAAS,QAAQ,GAAI;AAC3K,UAAI;AACJ,UAAI,OAAO,QAAQ;AACjB,mBAAW,OAAO,CAAC,EAAE,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW;AAAA,MAC9E,WAAW,OAAO,QAAQ;AACxB,mBAAW,OAAO,CAAC,EAAE,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW;AAAA,MAC9E;AACA,UAAI,aAAa,MAAM;AACrB,aAAK,gBAAgB;AAAA,MACvB,OAAO;AACL,aAAK,gBAAgB;AAAA,MACvB;AACA,OAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,OAAO,QAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAM,GAAG,UAAU,OAAO,OAAO,OAAO,WAAW,WAAW,CAAC;AAAA,IACnH;AAAA,EACF,CAAC;AACD,QAAME,UAAS,MAAM;AACnB,WAAO,GAAG,UAAU,OAAO,GAAG,OAAO,OAAO,WAAW,wBAAwB,MAAM,GAAG,CAAC;AACzF,SAAK;AACL,IAAAF,QAAO;AAAA,EACT;AACA,QAAMC,WAAU,MAAM;AACpB,WAAO,GAAG,UAAU,IAAI,GAAG,OAAO,OAAO,WAAW,wBAAwB,MAAM,GAAG,CAAC;AACtF,YAAQ;AAAA,EACV;AACA,SAAO,OAAO,OAAO,YAAY;AAAA,IAC/B,QAAAC;AAAA,IACA,SAAAD;AAAA,IACA,QAAAD;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;;;AC5LA,SAAS,kBAAkBG,UAAS;AAClC,MAAIA,aAAY,QAAQ;AACtB,IAAAA,WAAU;AAAA,EACZ;AACA,SAAO,IAAIA,SAAQ,KAAK,EAAE,QAAQ,gBAAgB,MAAM,EACvD,QAAQ,MAAM,GAAG,CAAC;AACrB;;;ACFA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,MAAM;AACZ,eAAa;AAAA,IACX,YAAY;AAAA,MACV,IAAI;AAAA,MACJ,eAAe;AAAA,MACf,WAAW;AAAA,MACX,aAAa;AAAA,MACb,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB,MAAM;AAAA;AAAA,MAEN,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,uBAAuB,YAAU;AAAA,MACjC,qBAAqB,YAAU;AAAA,MAC/B,aAAa,GAAG,GAAG;AAAA,MACnB,mBAAmB,GAAG,GAAG;AAAA,MACzB,eAAe,GAAG,GAAG;AAAA,MACrB,cAAc,GAAG,GAAG;AAAA,MACpB,YAAY,GAAG,GAAG;AAAA,MAClB,aAAa,GAAG,GAAG;AAAA,MACnB,sBAAsB,GAAG,GAAG;AAAA,MAC5B,0BAA0B,GAAG,GAAG;AAAA,MAChC,gBAAgB,GAAG,GAAG;AAAA,MACtB,WAAW,GAAG,GAAG;AAAA,MACjB,iBAAiB,GAAG,GAAG;AAAA,MACvB,eAAe,GAAG,GAAG;AAAA,MACrB,yBAAyB,GAAG,GAAG;AAAA,IACjC;AAAA,EACF,CAAC;AACD,SAAO,aAAa;AAAA,IAClB,IAAI;AAAA,IACJ,SAAS,CAAC;AAAA,EACZ;AACA,MAAI;AACJ,MAAI,qBAAqB;AACzB,QAAM,oBAAoB,SAAO,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,OAAO,OAAK,CAAC,CAAC,CAAC;AAC/E,WAAS,uBAAuB;AAC9B,WAAO,CAAC,OAAO,OAAO,WAAW,MAAM,CAAC,OAAO,WAAW,MAAM,MAAM,QAAQ,OAAO,WAAW,EAAE,KAAK,OAAO,WAAW,GAAG,WAAW;AAAA,EACzI;AACA,WAAS,eAAe,UAAU,UAAU;AAC1C,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,OAAO,OAAO;AAClB,QAAI,CAAC,SAAU;AACf,eAAW,SAAS,GAAG,aAAa,SAAS,aAAa,MAAM,gBAAgB;AAChF,QAAI,UAAU;AACZ,eAAS,UAAU,IAAI,GAAG,iBAAiB,IAAI,QAAQ,EAAE;AACzD,iBAAW,SAAS,GAAG,aAAa,SAAS,aAAa,MAAM,gBAAgB;AAChF,UAAI,UAAU;AACZ,iBAAS,UAAU,IAAI,GAAG,iBAAiB,IAAI,QAAQ,IAAI,QAAQ,EAAE;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AACA,WAAS,cAAc,GAAG;AACxB,UAAM,WAAW,EAAE,OAAO,QAAQ,kBAAkB,OAAO,OAAO,WAAW,WAAW,CAAC;AACzF,QAAI,CAAC,UAAU;AACb;AAAA,IACF;AACA,MAAE,eAAe;AACjB,UAAM,QAAQ,aAAa,QAAQ,IAAI,OAAO,OAAO;AACrD,QAAI,OAAO,OAAO,MAAM;AACtB,UAAI,OAAO,cAAc,MAAO;AAChC,YAAM,YAAY,OAAO;AACzB,YAAM,gBAAgB,OAAO,oBAAoB,KAAK;AACtD,YAAM,oBAAoB,OAAO,oBAAoB,OAAO,SAAS;AACrE,YAAMC,WAAU,SAAO;AACrB,cAAM,qBAAqB,OAAO;AAClC,eAAO,QAAQ;AAAA,UACb,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,SAAS;AAAA,QACX,CAAC;AACD,cAAM,gBAAgB,OAAO;AAC7B,YAAI,uBAAuB,eAAe;AACxC,iBAAO,YAAY,WAAW,GAAG,OAAO,IAAI;AAAA,QAC9C;AAAA,MACF;AACA,UAAI,gBAAgB,OAAO,OAAO,SAAS,OAAO,cAAc;AAC9D,QAAAA,SAAQ,gBAAgB,oBAAoB,SAAS,MAAM;AAAA,MAC7D,WAAW,OAAO,OAAO,gBAAgB;AACvC,cAAM,gBAAgB,OAAO,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,KAAK,KAAK,WAAW,OAAO,OAAO,eAAe,EAAE,CAAC;AACpJ,YAAI,gBAAgB,KAAK,MAAM,gBAAgB,CAAC,GAAG;AACjD,UAAAA,SAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,aAAO,YAAY,KAAK;AAAA,IAC1B,OAAO;AACL,aAAO,QAAQ,KAAK;AAAA,IACtB;AAAA,EACF;AACA,WAASC,UAAS;AAEhB,UAAM,MAAM,OAAO;AACnB,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,qBAAqB,EAAG;AAC5B,QAAI,KAAK,OAAO,WAAW;AAC3B,SAAK,kBAAkB,EAAE;AAEzB,QAAI;AACJ,QAAI;AACJ,UAAM,eAAe,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO;AACpH,UAAM,QAAQ,OAAO,OAAO,OAAO,KAAK,KAAK,eAAe,OAAO,OAAO,cAAc,IAAI,OAAO,SAAS;AAC5G,QAAI,OAAO,OAAO,MAAM;AACtB,sBAAgB,OAAO,qBAAqB;AAC5C,gBAAU,OAAO,OAAO,iBAAiB,IAAI,KAAK,MAAM,OAAO,YAAY,OAAO,OAAO,cAAc,IAAI,OAAO;AAAA,IACpH,WAAW,OAAO,OAAO,cAAc,aAAa;AAClD,gBAAU,OAAO;AACjB,sBAAgB,OAAO;AAAA,IACzB,OAAO;AACL,sBAAgB,OAAO,iBAAiB;AACxC,gBAAU,OAAO,eAAe;AAAA,IAClC;AAEA,QAAI,OAAO,SAAS,aAAa,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ,SAAS,GAAG;AAClG,YAAM,UAAU,OAAO,WAAW;AAClC,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,OAAO,gBAAgB;AACzB,qBAAa,iBAAiB,QAAQ,CAAC,GAAG,OAAO,aAAa,IAAI,UAAU,UAAU,IAAI;AAC1F,WAAG,QAAQ,WAAS;AAClB,gBAAM,MAAM,OAAO,aAAa,IAAI,UAAU,QAAQ,IAAI,GAAG,cAAc,OAAO,qBAAqB,EAAE;AAAA,QAC3G,CAAC;AACD,YAAI,OAAO,qBAAqB,KAAK,kBAAkB,QAAW;AAChE,gCAAsB,WAAW,iBAAiB;AAClD,cAAI,qBAAqB,OAAO,qBAAqB,GAAG;AACtD,iCAAqB,OAAO,qBAAqB;AAAA,UACnD,WAAW,qBAAqB,GAAG;AACjC,iCAAqB;AAAA,UACvB;AAAA,QACF;AACA,qBAAa,KAAK,IAAI,UAAU,oBAAoB,CAAC;AACrD,oBAAY,cAAc,KAAK,IAAI,QAAQ,QAAQ,OAAO,kBAAkB,IAAI;AAChF,oBAAY,YAAY,cAAc;AAAA,MACxC;AACA,cAAQ,QAAQ,cAAY;AAC1B,cAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,SAAS,cAAc,SAAS,cAAc,OAAO,EAAE,IAAI,YAAU,GAAG,OAAO,iBAAiB,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,OAAK,OAAO,MAAM,YAAY,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK;AAC1N,iBAAS,UAAU,OAAO,GAAG,eAAe;AAAA,MAC9C,CAAC;AACD,UAAI,GAAG,SAAS,GAAG;AACjB,gBAAQ,QAAQ,YAAU;AACxB,gBAAM,cAAc,aAAa,MAAM;AACvC,cAAI,gBAAgB,SAAS;AAC3B,mBAAO,UAAU,IAAI,GAAG,OAAO,kBAAkB,MAAM,GAAG,CAAC;AAAA,UAC7D,WAAW,OAAO,WAAW;AAC3B,mBAAO,aAAa,QAAQ,QAAQ;AAAA,UACtC;AACA,cAAI,OAAO,gBAAgB;AACzB,gBAAI,eAAe,cAAc,eAAe,WAAW;AACzD,qBAAO,UAAU,IAAI,GAAG,GAAG,OAAO,iBAAiB,QAAQ,MAAM,GAAG,CAAC;AAAA,YACvE;AACA,gBAAI,gBAAgB,YAAY;AAC9B,6BAAe,QAAQ,MAAM;AAAA,YAC/B;AACA,gBAAI,gBAAgB,WAAW;AAC7B,6BAAe,QAAQ,MAAM;AAAA,YAC/B;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,cAAM,SAAS,QAAQ,OAAO;AAC9B,YAAI,QAAQ;AACV,iBAAO,UAAU,IAAI,GAAG,OAAO,kBAAkB,MAAM,GAAG,CAAC;AAAA,QAC7D;AACA,YAAI,OAAO,WAAW;AACpB,kBAAQ,QAAQ,CAAC,UAAU,gBAAgB;AACzC,qBAAS,aAAa,QAAQ,gBAAgB,UAAU,kBAAkB,QAAQ;AAAA,UACpF,CAAC;AAAA,QACH;AACA,YAAI,OAAO,gBAAgB;AACzB,gBAAM,uBAAuB,QAAQ,UAAU;AAC/C,gBAAM,sBAAsB,QAAQ,SAAS;AAC7C,mBAAS,IAAI,YAAY,KAAK,WAAW,KAAK,GAAG;AAC/C,gBAAI,QAAQ,CAAC,GAAG;AACd,sBAAQ,CAAC,EAAE,UAAU,IAAI,GAAG,GAAG,OAAO,iBAAiB,QAAQ,MAAM,GAAG,CAAC;AAAA,YAC3E;AAAA,UACF;AACA,yBAAe,sBAAsB,MAAM;AAC3C,yBAAe,qBAAqB,MAAM;AAAA,QAC5C;AAAA,MACF;AACA,UAAI,OAAO,gBAAgB;AACzB,cAAM,uBAAuB,KAAK,IAAI,QAAQ,QAAQ,OAAO,qBAAqB,CAAC;AACnF,cAAM,iBAAiB,aAAa,uBAAuB,cAAc,IAAI,WAAW;AACxF,cAAM,aAAa,MAAM,UAAU;AACnC,gBAAQ,QAAQ,YAAU;AACxB,iBAAO,MAAM,OAAO,aAAa,IAAI,aAAa,KAAK,IAAI,GAAG,aAAa;AAAA,QAC7E,CAAC;AAAA,MACH;AAAA,IACF;AACA,OAAG,QAAQ,CAAC,OAAO,eAAe;AAChC,UAAI,OAAO,SAAS,YAAY;AAC9B,cAAM,iBAAiB,kBAAkB,OAAO,YAAY,CAAC,EAAE,QAAQ,gBAAc;AACnF,qBAAW,cAAc,OAAO,sBAAsB,UAAU,CAAC;AAAA,QACnE,CAAC;AACD,cAAM,iBAAiB,kBAAkB,OAAO,UAAU,CAAC,EAAE,QAAQ,aAAW;AAC9E,kBAAQ,cAAc,OAAO,oBAAoB,KAAK;AAAA,QACxD,CAAC;AAAA,MACH;AACA,UAAI,OAAO,SAAS,eAAe;AACjC,YAAI;AACJ,YAAI,OAAO,qBAAqB;AAC9B,iCAAuB,OAAO,aAAa,IAAI,aAAa;AAAA,QAC9D,OAAO;AACL,iCAAuB,OAAO,aAAa,IAAI,eAAe;AAAA,QAChE;AACA,cAAM,SAAS,UAAU,KAAK;AAC9B,YAAI,SAAS;AACb,YAAI,SAAS;AACb,YAAI,yBAAyB,cAAc;AACzC,mBAAS;AAAA,QACX,OAAO;AACL,mBAAS;AAAA,QACX;AACA,cAAM,iBAAiB,kBAAkB,OAAO,oBAAoB,CAAC,EAAE,QAAQ,gBAAc;AAC3F,qBAAW,MAAM,YAAY,6BAA6B,MAAM,YAAY,MAAM;AAClF,qBAAW,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK;AAAA,QAC9D,CAAC;AAAA,MACH;AACA,UAAI,OAAO,SAAS,YAAY,OAAO,cAAc;AACnD,cAAM,YAAY,OAAO,aAAa,QAAQ,UAAU,GAAG,KAAK;AAChE,YAAI,eAAe,EAAG,MAAK,oBAAoB,KAAK;AAAA,MACtD,OAAO;AACL,YAAI,eAAe,EAAG,MAAK,oBAAoB,KAAK;AACpD,aAAK,oBAAoB,KAAK;AAAA,MAChC;AACA,UAAI,OAAO,OAAO,iBAAiB,OAAO,SAAS;AACjD,cAAM,UAAU,OAAO,WAAW,QAAQ,QAAQ,EAAE,OAAO,SAAS;AAAA,MACtE;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,SAAS;AAEhB,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,qBAAqB,EAAG;AAC5B,UAAM,eAAe,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO;AACpH,QAAI,KAAK,OAAO,WAAW;AAC3B,SAAK,kBAAkB,EAAE;AACzB,QAAI,iBAAiB;AACrB,QAAI,OAAO,SAAS,WAAW;AAC7B,UAAI,kBAAkB,OAAO,OAAO,OAAO,KAAK,KAAK,eAAe,OAAO,OAAO,cAAc,IAAI,OAAO,SAAS;AACpH,UAAI,OAAO,OAAO,YAAY,OAAO,OAAO,SAAS,WAAW,kBAAkB,cAAc;AAC9F,0BAAkB;AAAA,MACpB;AACA,eAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK,GAAG;AAC3C,YAAI,OAAO,cAAc;AACvB,4BAAkB,OAAO,aAAa,KAAK,QAAQ,GAAG,OAAO,WAAW;AAAA,QAC1E,OAAO;AAEL,4BAAkB,IAAI,OAAO,aAAa,IAAI,OAAO,YAAY,kBAAkB,EAAE,WAAW,OAAO,WAAW,OAAO,OAAO,aAAa;AAAA,QAC/I;AAAA,MACF;AAAA,IACF;AACA,QAAI,OAAO,SAAS,YAAY;AAC9B,UAAI,OAAO,gBAAgB;AACzB,yBAAiB,OAAO,eAAe,KAAK,QAAQ,OAAO,cAAc,OAAO,UAAU;AAAA,MAC5F,OAAO;AACL,yBAAiB,gBAAgB,OAAO,YAAY,4BAAsC,OAAO,UAAU;AAAA,MAC7G;AAAA,IACF;AACA,QAAI,OAAO,SAAS,eAAe;AACjC,UAAI,OAAO,mBAAmB;AAC5B,yBAAiB,OAAO,kBAAkB,KAAK,QAAQ,OAAO,oBAAoB;AAAA,MACpF,OAAO;AACL,yBAAiB,gBAAgB,OAAO,oBAAoB;AAAA,MAC9D;AAAA,IACF;AACA,WAAO,WAAW,UAAU,CAAC;AAC7B,OAAG,QAAQ,WAAS;AAClB,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,YAAY,kBAAkB;AAAA,MACtC;AACA,UAAI,OAAO,SAAS,WAAW;AAC7B,eAAO,WAAW,QAAQ,KAAK,GAAG,MAAM,iBAAiB,kBAAkB,OAAO,WAAW,CAAC,CAAC;AAAA,MACjG;AAAA,IACF,CAAC;AACD,QAAI,OAAO,SAAS,UAAU;AAC5B,WAAK,oBAAoB,GAAG,CAAC,CAAC;AAAA,IAChC;AAAA,EACF;AACA,WAAS,OAAO;AACd,WAAO,OAAO,aAAa,0BAA0B,QAAQ,OAAO,eAAe,YAAY,OAAO,OAAO,YAAY;AAAA,MACvH,IAAI;AAAA,IACN,CAAC;AACD,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,CAAC,OAAO,GAAI;AAChB,QAAI;AACJ,QAAI,OAAO,OAAO,OAAO,YAAY,OAAO,WAAW;AACrD,WAAK,OAAO,GAAG,cAAc,OAAO,EAAE;AAAA,IACxC;AACA,QAAI,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU;AACxC,WAAK,CAAC,GAAG,SAAS,iBAAiB,OAAO,EAAE,CAAC;AAAA,IAC/C;AACA,QAAI,CAAC,IAAI;AACP,WAAK,OAAO;AAAA,IACd;AACA,QAAI,CAAC,MAAM,GAAG,WAAW,EAAG;AAC5B,QAAI,OAAO,OAAO,qBAAqB,OAAO,OAAO,OAAO,YAAY,MAAM,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG;AAC1G,WAAK,CAAC,GAAG,OAAO,GAAG,iBAAiB,OAAO,EAAE,CAAC;AAE9C,UAAI,GAAG,SAAS,GAAG;AACjB,aAAK,GAAG,OAAO,WAAS;AACtB,cAAI,eAAe,OAAO,SAAS,EAAE,CAAC,MAAM,OAAO,GAAI,QAAO;AAC9D,iBAAO;AAAA,QACT,CAAC,EAAE,CAAC;AAAA,MACN;AAAA,IACF;AACA,QAAI,MAAM,QAAQ,EAAE,KAAK,GAAG,WAAW,EAAG,MAAK,GAAG,CAAC;AACnD,WAAO,OAAO,OAAO,YAAY;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,UAAI,OAAO,SAAS,aAAa,OAAO,WAAW;AACjD,cAAM,UAAU,IAAI,IAAI,OAAO,kBAAkB,IAAI,MAAM,GAAG,CAAC;AAAA,MACjE;AACA,YAAM,UAAU,IAAI,OAAO,gBAAgB,OAAO,IAAI;AACtD,YAAM,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AACzF,UAAI,OAAO,SAAS,aAAa,OAAO,gBAAgB;AACtD,cAAM,UAAU,IAAI,GAAG,OAAO,aAAa,GAAG,OAAO,IAAI,UAAU;AACnE,6BAAqB;AACrB,YAAI,OAAO,qBAAqB,GAAG;AACjC,iBAAO,qBAAqB;AAAA,QAC9B;AAAA,MACF;AACA,UAAI,OAAO,SAAS,iBAAiB,OAAO,qBAAqB;AAC/D,cAAM,UAAU,IAAI,OAAO,wBAAwB;AAAA,MACrD;AACA,UAAI,OAAO,WAAW;AACpB,cAAM,iBAAiB,SAAS,aAAa;AAAA,MAC/C;AACA,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,UAAU,IAAI,OAAO,SAAS;AAAA,MACtC;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,UAAU;AACjB,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,qBAAqB,EAAG;AAC5B,QAAI,KAAK,OAAO,WAAW;AAC3B,QAAI,IAAI;AACN,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,UAAU,OAAO,OAAO,WAAW;AACzC,cAAM,UAAU,OAAO,OAAO,gBAAgB,OAAO,IAAI;AACzD,cAAM,UAAU,OAAO,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AAC5F,YAAI,OAAO,WAAW;AACpB,gBAAM,UAAU,OAAO,IAAI,OAAO,kBAAkB,IAAI,MAAM,GAAG,CAAC;AAClE,gBAAM,oBAAoB,SAAS,aAAa;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,OAAO,WAAW,QAAS,QAAO,WAAW,QAAQ,QAAQ,WAAS,MAAM,UAAU,OAAO,GAAG,OAAO,kBAAkB,MAAM,GAAG,CAAC,CAAC;AAAA,EAC1I;AACA,KAAG,mBAAmB,MAAM;AAC1B,QAAI,CAAC,OAAO,cAAc,CAAC,OAAO,WAAW,GAAI;AACjD,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI;AAAA,MACF;AAAA,IACF,IAAI,OAAO;AACX,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,UAAU,OAAO,OAAO,iBAAiB,OAAO,aAAa;AACnE,YAAM,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AAAA,IAC3F,CAAC;AAAA,EACH,CAAC;AACD,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,WAAW,YAAY,OAAO;AAE9C,MAAAC,SAAQ;AAAA,IACV,OAAO;AACL,WAAK;AACL,aAAO;AACP,MAAAD,QAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,KAAG,qBAAqB,MAAM;AAC5B,QAAI,OAAO,OAAO,cAAc,aAAa;AAC3C,MAAAA,QAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,KAAG,mBAAmB,MAAM;AAC1B,IAAAA,QAAO;AAAA,EACT,CAAC;AACD,KAAG,wBAAwB,MAAM;AAC/B,WAAO;AACP,IAAAA,QAAO;AAAA,EACT,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,YAAQ;AAAA,EACV,CAAC;AACD,KAAG,kBAAkB,MAAM;AACzB,QAAI;AAAA,MACF;AAAA,IACF,IAAI,OAAO;AACX,QAAI,IAAI;AACN,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS,MAAM,UAAU,OAAO,UAAU,WAAW,KAAK,EAAE,OAAO,OAAO,WAAW,SAAS,CAAC;AAAA,IAC5G;AAAA,EACF,CAAC;AACD,KAAG,eAAe,MAAM;AACtB,IAAAA,QAAO;AAAA,EACT,CAAC;AACD,KAAG,SAAS,CAAC,IAAI,MAAM;AACrB,UAAM,WAAW,EAAE;AACnB,UAAM,KAAK,kBAAkB,OAAO,WAAW,EAAE;AACjD,QAAI,OAAO,OAAO,WAAW,MAAM,OAAO,OAAO,WAAW,eAAe,MAAM,GAAG,SAAS,KAAK,CAAC,SAAS,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW,GAAG;AACpK,UAAI,OAAO,eAAe,OAAO,WAAW,UAAU,aAAa,OAAO,WAAW,UAAU,OAAO,WAAW,UAAU,aAAa,OAAO,WAAW,QAAS;AACnK,YAAM,WAAW,GAAG,CAAC,EAAE,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW;AAC9E,UAAI,aAAa,MAAM;AACrB,aAAK,gBAAgB;AAAA,MACvB,OAAO;AACL,aAAK,gBAAgB;AAAA,MACvB;AACA,SAAG,QAAQ,WAAS,MAAM,UAAU,OAAO,OAAO,OAAO,WAAW,WAAW,CAAC;AAAA,IAClF;AAAA,EACF,CAAC;AACD,QAAME,UAAS,MAAM;AACnB,WAAO,GAAG,UAAU,OAAO,OAAO,OAAO,WAAW,uBAAuB;AAC3E,QAAI;AAAA,MACF;AAAA,IACF,IAAI,OAAO;AACX,QAAI,IAAI;AACN,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS,MAAM,UAAU,OAAO,OAAO,OAAO,WAAW,uBAAuB,CAAC;AAAA,IAC9F;AACA,SAAK;AACL,WAAO;AACP,IAAAF,QAAO;AAAA,EACT;AACA,QAAMC,WAAU,MAAM;AACpB,WAAO,GAAG,UAAU,IAAI,OAAO,OAAO,WAAW,uBAAuB;AACxE,QAAI;AAAA,MACF;AAAA,IACF,IAAI,OAAO;AACX,QAAI,IAAI;AACN,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS,MAAM,UAAU,IAAI,OAAO,OAAO,WAAW,uBAAuB,CAAC;AAAA,IAC3F;AACA,YAAQ;AAAA,EACV;AACA,SAAO,OAAO,OAAO,YAAY;AAAA,IAC/B,QAAAC;AAAA,IACA,SAAAD;AAAA,IACA;AAAA,IACA,QAAAD;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;;;AC5cA,SAAS,UAAU,MAAM;AACvB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMG,YAAWC,aAAY;AAC7B,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,cAAc;AAClB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,eAAa;AAAA,IACX,WAAW;AAAA,MACT,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,MACX,eAAe;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,MACX,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,MACjB,eAAe;AAAA,IACjB;AAAA,EACF,CAAC;AACD,SAAO,YAAY;AAAA,IACjB,IAAI;AAAA,IACJ,QAAQ;AAAA,EACV;AACA,WAASC,gBAAe;AACtB,QAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,WAAW,OAAO,OAAO,OAAO,OAAO,eAAe,OAAO;AACnE,QAAI,UAAU;AACd,QAAI,UAAU,YAAY,YAAY;AACtC,QAAI,KAAK;AACP,eAAS,CAAC;AACV,UAAI,SAAS,GAAG;AACd,kBAAU,WAAW;AACrB,iBAAS;AAAA,MACX,WAAW,CAAC,SAAS,WAAW,WAAW;AACzC,kBAAU,YAAY;AAAA,MACxB;AAAA,IACF,WAAW,SAAS,GAAG;AACrB,gBAAU,WAAW;AACrB,eAAS;AAAA,IACX,WAAW,SAAS,WAAW,WAAW;AACxC,gBAAU,YAAY;AAAA,IACxB;AACA,QAAI,OAAO,aAAa,GAAG;AACzB,aAAO,MAAM,YAAY,eAAe,MAAM;AAC9C,aAAO,MAAM,QAAQ,GAAG,OAAO;AAAA,IACjC,OAAO;AACL,aAAO,MAAM,YAAY,oBAAoB,MAAM;AACnD,aAAO,MAAM,SAAS,GAAG,OAAO;AAAA,IAClC;AACA,QAAI,OAAO,MAAM;AACf,mBAAa,OAAO;AACpB,SAAG,MAAM,UAAU;AACnB,gBAAU,WAAW,MAAM;AACzB,WAAG,MAAM,UAAU;AACnB,WAAG,MAAM,qBAAqB;AAAA,MAChC,GAAG,GAAI;AAAA,IACT;AAAA,EACF;AACA,WAASC,eAAc,UAAU;AAC/B,QAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,WAAO,UAAU,OAAO,MAAM,qBAAqB,GAAG,QAAQ;AAAA,EAChE;AACA,WAASC,cAAa;AACpB,QAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,WAAO,MAAM,QAAQ;AACrB,WAAO,MAAM,SAAS;AACtB,gBAAY,OAAO,aAAa,IAAI,GAAG,cAAc,GAAG;AACxD,cAAU,OAAO,QAAQ,OAAO,cAAc,OAAO,OAAO,sBAAsB,OAAO,OAAO,iBAAiB,OAAO,SAAS,CAAC,IAAI;AACtI,QAAI,OAAO,OAAO,UAAU,aAAa,QAAQ;AAC/C,iBAAW,YAAY;AAAA,IACzB,OAAO;AACL,iBAAW,SAAS,OAAO,OAAO,UAAU,UAAU,EAAE;AAAA,IAC1D;AACA,QAAI,OAAO,aAAa,GAAG;AACzB,aAAO,MAAM,QAAQ,GAAG,QAAQ;AAAA,IAClC,OAAO;AACL,aAAO,MAAM,SAAS,GAAG,QAAQ;AAAA,IACnC;AACA,QAAI,WAAW,GAAG;AAChB,SAAG,MAAM,UAAU;AAAA,IACrB,OAAO;AACL,SAAG,MAAM,UAAU;AAAA,IACrB;AACA,QAAI,OAAO,OAAO,UAAU,MAAM;AAChC,SAAG,MAAM,UAAU;AAAA,IACrB;AACA,QAAI,OAAO,OAAO,iBAAiB,OAAO,SAAS;AACjD,gBAAU,GAAG,UAAU,OAAO,WAAW,QAAQ,QAAQ,EAAE,OAAO,OAAO,UAAU,SAAS;AAAA,IAC9F;AAAA,EACF;AACA,WAAS,mBAAmB,GAAG;AAC7B,WAAO,OAAO,aAAa,IAAI,EAAE,UAAU,EAAE;AAAA,EAC/C;AACA,WAAS,gBAAgB,GAAG;AAC1B,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,qBAAiB,mBAAmB,CAAC,IAAI,cAAc,EAAE,EAAE,OAAO,aAAa,IAAI,SAAS,KAAK,KAAK,iBAAiB,OAAO,eAAe,WAAW,OAAO,YAAY;AAC3K,oBAAgB,KAAK,IAAI,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC;AACtD,QAAI,KAAK;AACP,sBAAgB,IAAI;AAAA,IACtB;AACA,UAAM,WAAW,OAAO,aAAa,KAAK,OAAO,aAAa,IAAI,OAAO,aAAa,KAAK;AAC3F,WAAO,eAAe,QAAQ;AAC9B,WAAO,aAAa,QAAQ;AAC5B,WAAO,kBAAkB;AACzB,WAAO,oBAAoB;AAAA,EAC7B;AACA,WAAS,YAAY,GAAG;AACtB,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,gBAAY;AACZ,mBAAe,EAAE,WAAW,SAAS,mBAAmB,CAAC,IAAI,EAAE,OAAO,sBAAsB,EAAE,OAAO,aAAa,IAAI,SAAS,KAAK,IAAI;AACxI,MAAE,eAAe;AACjB,MAAE,gBAAgB;AAClB,cAAU,MAAM,qBAAqB;AACrC,WAAO,MAAM,qBAAqB;AAClC,oBAAgB,CAAC;AACjB,iBAAa,WAAW;AACxB,OAAG,MAAM,qBAAqB;AAC9B,QAAI,OAAO,MAAM;AACf,SAAG,MAAM,UAAU;AAAA,IACrB;AACA,QAAI,OAAO,OAAO,SAAS;AACzB,aAAO,UAAU,MAAM,kBAAkB,IAAI;AAAA,IAC/C;AACA,SAAK,sBAAsB,CAAC;AAAA,EAC9B;AACA,WAAS,WAAW,GAAG;AACrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,UAAW;AAChB,QAAI,EAAE,eAAgB,GAAE,eAAe;AAAA,QAAO,GAAE,cAAc;AAC9D,oBAAgB,CAAC;AACjB,cAAU,MAAM,qBAAqB;AACrC,OAAG,MAAM,qBAAqB;AAC9B,WAAO,MAAM,qBAAqB;AAClC,SAAK,qBAAqB,CAAC;AAAA,EAC7B;AACA,WAAS,UAAU,GAAG;AACpB,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,UAAW;AAChB,gBAAY;AACZ,QAAI,OAAO,OAAO,SAAS;AACzB,aAAO,UAAU,MAAM,kBAAkB,IAAI;AAC7C,gBAAU,MAAM,qBAAqB;AAAA,IACvC;AACA,QAAI,OAAO,MAAM;AACf,mBAAa,WAAW;AACxB,oBAAcC,UAAS,MAAM;AAC3B,WAAG,MAAM,UAAU;AACnB,WAAG,MAAM,qBAAqB;AAAA,MAChC,GAAG,GAAI;AAAA,IACT;AACA,SAAK,oBAAoB,CAAC;AAC1B,QAAI,OAAO,eAAe;AACxB,aAAO,eAAe;AAAA,IACxB;AAAA,EACF;AACA,WAASC,QAAO,QAAQ;AACtB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,KAAK,UAAU;AACrB,QAAI,CAAC,GAAI;AACT,UAAM,SAAS;AACf,UAAM,iBAAiB,OAAO,mBAAmB;AAAA,MAC/C,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,UAAM,kBAAkB,OAAO,mBAAmB;AAAA,MAChD,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,QAAI,CAAC,OAAQ;AACb,UAAM,cAAc,WAAW,OAAO,qBAAqB;AAC3D,WAAO,WAAW,EAAE,eAAe,aAAa,cAAc;AAC9D,IAAAN,UAAS,WAAW,EAAE,eAAe,YAAY,cAAc;AAC/D,IAAAA,UAAS,WAAW,EAAE,aAAa,WAAW,eAAe;AAAA,EAC/D;AACA,WAAS,kBAAkB;AACzB,QAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,IAAAM,QAAO,IAAI;AAAA,EACb;AACA,WAAS,mBAAmB;AAC1B,QAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,IAAAA,QAAO,KAAK;AAAA,EACd;AACA,WAAS,OAAO;AACd,UAAM;AAAA,MACJ;AAAA,MACA,IAAI;AAAA,IACN,IAAI;AACJ,WAAO,OAAO,YAAY,0BAA0B,QAAQ,OAAO,eAAe,WAAW,OAAO,OAAO,WAAW;AAAA,MACpH,IAAI;AAAA,IACN,CAAC;AACD,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,CAAC,OAAO,GAAI;AAChB,QAAI;AACJ,QAAI,OAAO,OAAO,OAAO,YAAY,OAAO,WAAW;AACrD,WAAK,OAAO,GAAG,cAAc,OAAO,EAAE;AAAA,IACxC;AACA,QAAI,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU;AACxC,WAAKN,UAAS,iBAAiB,OAAO,EAAE;AAAA,IAC1C,WAAW,CAAC,IAAI;AACd,WAAK,OAAO;AAAA,IACd;AACA,QAAI,OAAO,OAAO,qBAAqB,OAAO,OAAO,OAAO,YAAY,GAAG,SAAS,KAAK,SAAS,iBAAiB,OAAO,EAAE,EAAE,WAAW,GAAG;AAC1I,WAAK,SAAS,cAAc,OAAO,EAAE;AAAA,IACvC;AACA,QAAI,GAAG,SAAS,EAAG,MAAK,GAAG,CAAC;AAC5B,OAAG,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AACtF,QAAI;AACJ,QAAI,IAAI;AACN,eAAS,GAAG,cAAc,IAAI,OAAO,OAAO,UAAU,SAAS,EAAE;AACjE,UAAI,CAAC,QAAQ;AACX,iBAAS,cAAc,OAAO,OAAO,OAAO,UAAU,SAAS;AAC/D,WAAG,OAAO,MAAM;AAAA,MAClB;AAAA,IACF;AACA,WAAO,OAAO,WAAW;AAAA,MACvB;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,OAAO,WAAW;AACpB,sBAAgB;AAAA,IAClB;AACA,QAAI,IAAI;AACN,SAAG,UAAU,OAAO,UAAU,WAAW,KAAK,EAAE,OAAO,OAAO,UAAU,SAAS;AAAA,IACnF;AAAA,EACF;AACA,WAAS,UAAU;AACjB,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,KAAK,OAAO,UAAU;AAC5B,QAAI,IAAI;AACN,SAAG,UAAU,OAAO,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AAAA,IAC3F;AACA,qBAAiB;AAAA,EACnB;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,UAAU,YAAY,OAAO;AAE7C,MAAAO,SAAQ;AAAA,IACV,OAAO;AACL,WAAK;AACL,MAAAH,YAAW;AACX,MAAAF,cAAa;AAAA,IACf;AAAA,EACF,CAAC;AACD,KAAG,4CAA4C,MAAM;AACnD,IAAAE,YAAW;AAAA,EACb,CAAC;AACD,KAAG,gBAAgB,MAAM;AACvB,IAAAF,cAAa;AAAA,EACf,CAAC;AACD,KAAG,iBAAiB,CAAC,IAAI,aAAa;AACpC,IAAAC,eAAc,QAAQ;AAAA,EACxB,CAAC;AACD,KAAG,kBAAkB,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,OAAO;AACX,QAAI,IAAI;AACN,SAAG,UAAU,OAAO,UAAU,WAAW,KAAK,EAAE,OAAO,OAAO,UAAU,SAAS;AAAA,IACnF;AAAA,EACF,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,YAAQ;AAAA,EACV,CAAC;AACD,QAAMK,UAAS,MAAM;AACnB,WAAO,GAAG,UAAU,OAAO,OAAO,OAAO,UAAU,sBAAsB;AACzE,QAAI,OAAO,UAAU,IAAI;AACvB,aAAO,UAAU,GAAG,UAAU,OAAO,OAAO,OAAO,UAAU,sBAAsB;AAAA,IACrF;AACA,SAAK;AACL,IAAAJ,YAAW;AACX,IAAAF,cAAa;AAAA,EACf;AACA,QAAMK,WAAU,MAAM;AACpB,WAAO,GAAG,UAAU,IAAI,OAAO,OAAO,UAAU,sBAAsB;AACtE,QAAI,OAAO,UAAU,IAAI;AACvB,aAAO,UAAU,GAAG,UAAU,IAAI,OAAO,OAAO,UAAU,sBAAsB;AAAA,IAClF;AACA,YAAQ;AAAA,EACV;AACA,SAAO,OAAO,OAAO,WAAW;AAAA,IAC9B,QAAAC;AAAA,IACA,SAAAD;AAAA,IACA,YAAAH;AAAA,IACA,cAAAF;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;;;AC3VA,SAAS,SAAS,MAAM;AACtB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,UAAU;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB;AACzB,QAAM,eAAe,CAAC,IAAI,aAAa;AACrC,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM,YAAY,MAAM,KAAK;AAC7B,UAAM,IAAI,GAAG,aAAa,sBAAsB,KAAK;AACrD,QAAI,IAAI,GAAG,aAAa,wBAAwB;AAChD,QAAI,IAAI,GAAG,aAAa,wBAAwB;AAChD,UAAM,QAAQ,GAAG,aAAa,4BAA4B;AAC1D,UAAM,UAAU,GAAG,aAAa,8BAA8B;AAC9D,UAAM,SAAS,GAAG,aAAa,6BAA6B;AAC5D,QAAI,KAAK,GAAG;AACV,UAAI,KAAK;AACT,UAAI,KAAK;AAAA,IACX,WAAW,OAAO,aAAa,GAAG;AAChC,UAAI;AACJ,UAAI;AAAA,IACN,OAAO;AACL,UAAI;AACJ,UAAI;AAAA,IACN;AACA,QAAI,EAAE,QAAQ,GAAG,KAAK,GAAG;AACvB,UAAI,GAAG,SAAS,GAAG,EAAE,IAAI,WAAW,SAAS;AAAA,IAC/C,OAAO;AACL,UAAI,GAAG,IAAI,WAAW,SAAS;AAAA,IACjC;AACA,QAAI,EAAE,QAAQ,GAAG,KAAK,GAAG;AACvB,UAAI,GAAG,SAAS,GAAG,EAAE,IAAI,QAAQ;AAAA,IACnC,OAAO;AACL,UAAI,GAAG,IAAI,QAAQ;AAAA,IACrB;AACA,QAAI,OAAO,YAAY,eAAe,YAAY,MAAM;AACtD,YAAM,iBAAiB,WAAW,UAAU,MAAM,IAAI,KAAK,IAAI,QAAQ;AACvE,SAAG,MAAM,UAAU;AAAA,IACrB;AACA,QAAI,YAAY,eAAe,CAAC,KAAK,CAAC;AACtC,QAAI,OAAO,UAAU,eAAe,UAAU,MAAM;AAClD,YAAM,eAAe,SAAS,QAAQ,MAAM,IAAI,KAAK,IAAI,QAAQ;AACjE,mBAAa,UAAU,YAAY;AAAA,IACrC;AACA,QAAI,UAAU,OAAO,WAAW,eAAe,WAAW,MAAM;AAC9D,YAAM,gBAAgB,SAAS,WAAW;AAC1C,mBAAa,WAAW,aAAa;AAAA,IACvC;AACA,OAAG,MAAM,YAAY;AAAA,EACvB;AACA,QAAMO,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,WAAW,gBAAgB,IAAI,gBAAgB;AACrD,QAAI,OAAO,WAAW;AACpB,eAAS,KAAK,GAAG,gBAAgB,OAAO,QAAQ,gBAAgB,CAAC;AAAA,IACnE;AACA,aAAS,QAAQ,WAAS;AACxB,mBAAa,OAAO,QAAQ;AAAA,IAC9B,CAAC;AACD,WAAO,QAAQ,CAAC,SAAS,eAAe;AACtC,UAAI,gBAAgB,QAAQ;AAC5B,UAAI,OAAO,OAAO,iBAAiB,KAAK,OAAO,OAAO,kBAAkB,QAAQ;AAC9E,yBAAiB,KAAK,KAAK,aAAa,CAAC,IAAI,YAAY,SAAS,SAAS;AAAA,MAC7E;AACA,sBAAgB,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE,GAAG,CAAC;AACvD,cAAQ,iBAAiB,GAAG,gBAAgB,iCAAiC,EAAE,QAAQ,WAAS;AAC9F,qBAAa,OAAO,aAAa;AAAA,MACnC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,QAAMC,iBAAgB,SAAU,UAAU;AACxC,QAAI,aAAa,QAAQ;AACvB,iBAAW,OAAO,OAAO;AAAA,IAC3B;AACA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,WAAW,CAAC,GAAG,GAAG,iBAAiB,gBAAgB,CAAC;AAC1D,QAAI,OAAO,WAAW;AACpB,eAAS,KAAK,GAAG,OAAO,iBAAiB,gBAAgB,CAAC;AAAA,IAC5D;AACA,aAAS,QAAQ,gBAAc;AAC7B,UAAI,mBAAmB,SAAS,WAAW,aAAa,+BAA+B,GAAG,EAAE,KAAK;AACjG,UAAI,aAAa,EAAG,oBAAmB;AACvC,iBAAW,MAAM,qBAAqB,GAAG,gBAAgB;AAAA,IAC3D,CAAC;AAAA,EACH;AACA,KAAG,cAAc,MAAM;AACrB,QAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,WAAO,OAAO,sBAAsB;AACpC,WAAO,eAAe,sBAAsB;AAAA,EAC9C,CAAC;AACD,KAAG,QAAQ,MAAM;AACf,QAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,IAAAD,cAAa;AAAA,EACf,CAAC;AACD,KAAG,gBAAgB,MAAM;AACvB,QAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,IAAAA,cAAa;AAAA,EACf,CAAC;AACD,KAAG,iBAAiB,CAAC,SAAS,aAAa;AACzC,QAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,IAAAC,eAAc,QAAQ;AAAA,EACxB,CAAC;AACH;;;ACtHA,SAAS,KAAK,MAAM;AAClB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAMC,UAASC,WAAU;AACzB,eAAa;AAAA,IACX,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,IACpB;AAAA,EACF,CAAC;AACD,SAAO,OAAO;AAAA,IACZ,SAAS;AAAA,EACX;AACA,MAAI,eAAe;AACnB,MAAI,YAAY;AAChB,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,CAAC;AACjB,QAAM,UAAU;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,IACT,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AACA,QAAM,QAAQ;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,cAAc,CAAC;AAAA,IACf,gBAAgB,CAAC;AAAA,EACnB;AACA,QAAM,WAAW;AAAA,IACf,GAAG;AAAA,IACH,GAAG;AAAA,IACH,eAAe;AAAA,IACf,eAAe;AAAA,IACf,UAAU;AAAA,EACZ;AACA,MAAI,QAAQ;AACZ,SAAO,eAAe,OAAO,MAAM,SAAS;AAAA,IAC1C,MAAM;AACJ,aAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO;AACT,UAAI,UAAU,OAAO;AACnB,cAAM,UAAU,QAAQ;AACxB,cAAM,UAAU,QAAQ;AACxB,aAAK,cAAc,OAAO,SAAS,OAAO;AAAA,MAC5C;AACA,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACD,WAAS,4BAA4B;AACnC,QAAI,QAAQ,SAAS,EAAG,QAAO;AAC/B,UAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,UAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,UAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,UAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,UAAM,WAAW,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,OAAO,CAAC;AAC1D,WAAO;AAAA,EACT;AACA,WAAS,iBAAiB;AACxB,QAAI,QAAQ,SAAS,EAAG,QAAO;AAAA,MAC7B,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AACA,UAAM,MAAM,QAAQ,QAAQ,sBAAsB;AAClD,WAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,EAAE,SAAS,IAAI,IAAI,IAAID,QAAO,WAAW,eAAe,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,EAAE,SAAS,IAAI,IAAI,IAAIA,QAAO,WAAW,YAAY;AAAA,EACxN;AACA,WAAS,mBAAmB;AAC1B,WAAO,OAAO,YAAY,iBAAiB,IAAI,OAAO,OAAO,UAAU;AAAA,EACzE;AACA,WAAS,iBAAiB,GAAG;AAC3B,UAAM,gBAAgB,iBAAiB;AACvC,QAAI,EAAE,OAAO,QAAQ,aAAa,EAAG,QAAO;AAC5C,QAAI,OAAO,OAAO,OAAO,aAAW,QAAQ,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAG,QAAO;AACnF,WAAO;AAAA,EACT;AACA,WAAS,yBAAyB,GAAG;AACnC,UAAM,WAAW,IAAI,OAAO,OAAO,KAAK,cAAc;AACtD,QAAI,EAAE,OAAO,QAAQ,QAAQ,EAAG,QAAO;AACvC,QAAI,CAAC,GAAG,OAAO,OAAO,iBAAiB,QAAQ,CAAC,EAAE,OAAO,iBAAe,YAAY,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAG,QAAO;AAC3H,WAAO;AAAA,EACT;AAGA,WAAS,eAAe,GAAG;AACzB,QAAI,EAAE,gBAAgB,SAAS;AAC7B,cAAQ,OAAO,GAAG,QAAQ,MAAM;AAAA,IAClC;AACA,QAAI,CAAC,iBAAiB,CAAC,EAAG;AAC1B,UAAM,SAAS,OAAO,OAAO;AAC7B,yBAAqB;AACrB,uBAAmB;AACnB,YAAQ,KAAK,CAAC;AACd,QAAI,QAAQ,SAAS,GAAG;AACtB;AAAA,IACF;AACA,yBAAqB;AACrB,YAAQ,aAAa,0BAA0B;AAC/C,QAAI,CAAC,QAAQ,SAAS;AACpB,cAAQ,UAAU,EAAE,OAAO,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB;AAC/E,UAAI,CAAC,QAAQ,QAAS,SAAQ,UAAU,OAAO,OAAO,OAAO,WAAW;AACxE,UAAI,UAAU,QAAQ,QAAQ,cAAc,IAAI,OAAO,cAAc,EAAE;AACvE,UAAI,SAAS;AACX,kBAAU,QAAQ,iBAAiB,gDAAgD,EAAE,CAAC;AAAA,MACxF;AACA,cAAQ,UAAU;AAClB,UAAI,SAAS;AACX,gBAAQ,cAAc,eAAe,QAAQ,SAAS,IAAI,OAAO,cAAc,EAAE,EAAE,CAAC;AAAA,MACtF,OAAO;AACL,gBAAQ,cAAc;AAAA,MACxB;AACA,UAAI,CAAC,QAAQ,aAAa;AACxB,gBAAQ,UAAU;AAClB;AAAA,MACF;AACA,cAAQ,WAAW,QAAQ,YAAY,aAAa,kBAAkB,KAAK,OAAO;AAAA,IACpF;AACA,QAAI,QAAQ,SAAS;AACnB,YAAM,CAAC,SAAS,OAAO,IAAI,eAAe;AAC1C,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,QAAQ,MAAM,qBAAqB;AAAA,IAC7C;AACA,gBAAY;AAAA,EACd;AACA,WAAS,gBAAgB,GAAG;AAC1B,QAAI,CAAC,iBAAiB,CAAC,EAAG;AAC1B,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,OAAO,OAAO;AACpB,UAAM,eAAe,QAAQ,UAAU,cAAY,SAAS,cAAc,EAAE,SAAS;AACrF,QAAI,gBAAgB,EAAG,SAAQ,YAAY,IAAI;AAC/C,QAAI,QAAQ,SAAS,GAAG;AACtB;AAAA,IACF;AACA,uBAAmB;AACnB,YAAQ,YAAY,0BAA0B;AAC9C,QAAI,CAAC,QAAQ,SAAS;AACpB;AAAA,IACF;AACA,SAAK,QAAQ,QAAQ,YAAY,QAAQ,aAAa;AACtD,QAAI,KAAK,QAAQ,QAAQ,UAAU;AACjC,WAAK,QAAQ,QAAQ,WAAW,KAAK,KAAK,QAAQ,QAAQ,WAAW,MAAM;AAAA,IAC7E;AACA,QAAI,KAAK,QAAQ,OAAO,UAAU;AAChC,WAAK,QAAQ,OAAO,WAAW,KAAK,OAAO,WAAW,KAAK,QAAQ,MAAM;AAAA,IAC3E;AACA,YAAQ,QAAQ,MAAM,YAAY,4BAA4B,KAAK,KAAK;AAAA,EAC1E;AACA,WAAS,aAAa,GAAG;AACvB,QAAI,CAAC,iBAAiB,CAAC,EAAG;AAC1B,QAAI,EAAE,gBAAgB,WAAW,EAAE,SAAS,aAAc;AAC1D,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,OAAO,OAAO;AACpB,UAAM,eAAe,QAAQ,UAAU,cAAY,SAAS,cAAc,EAAE,SAAS;AACrF,QAAI,gBAAgB,EAAG,SAAQ,OAAO,cAAc,CAAC;AACrD,QAAI,CAAC,sBAAsB,CAAC,kBAAkB;AAC5C;AAAA,IACF;AACA,yBAAqB;AACrB,uBAAmB;AACnB,QAAI,CAAC,QAAQ,QAAS;AACtB,SAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,OAAO,QAAQ,QAAQ,GAAG,OAAO,QAAQ;AAC7E,YAAQ,QAAQ,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK;AACjE,YAAQ,QAAQ,MAAM,YAAY,4BAA4B,KAAK,KAAK;AACxE,mBAAe,KAAK;AACpB,gBAAY;AACZ,QAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS;AACrC,cAAQ,QAAQ,UAAU,IAAI,GAAG,OAAO,gBAAgB,EAAE;AAAA,IAC5D,WAAW,KAAK,SAAS,KAAK,QAAQ,SAAS;AAC7C,cAAQ,QAAQ,UAAU,OAAO,GAAG,OAAO,gBAAgB,EAAE;AAAA,IAC/D;AACA,QAAI,KAAK,UAAU,GAAG;AACpB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF;AACA,WAASE,cAAa,GAAG;AACvB,UAAM,SAAS,OAAO;AACtB,QAAI,CAAC,QAAQ,QAAS;AACtB,QAAI,MAAM,UAAW;AACrB,QAAI,OAAO,WAAW,EAAE,WAAY,GAAE,eAAe;AACrD,UAAM,YAAY;AAClB,UAAMC,SAAQ,QAAQ,SAAS,IAAI,QAAQ,CAAC,IAAI;AAChD,UAAM,aAAa,IAAIA,OAAM;AAC7B,UAAM,aAAa,IAAIA,OAAM;AAAA,EAC/B;AACA,WAASC,aAAY,GAAG;AACtB,QAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAG;AAC1D,UAAM,OAAO,OAAO;AACpB,QAAI,CAAC,QAAQ,QAAS;AACtB,QAAI,CAAC,MAAM,aAAa,CAAC,QAAQ,QAAS;AAC1C,QAAI,CAAC,MAAM,SAAS;AAClB,YAAM,QAAQ,QAAQ,QAAQ;AAC9B,YAAM,SAAS,QAAQ,QAAQ;AAC/B,YAAM,SAASC,cAAa,QAAQ,aAAa,GAAG,KAAK;AACzD,YAAM,SAASA,cAAa,QAAQ,aAAa,GAAG,KAAK;AACzD,cAAQ,aAAa,QAAQ,QAAQ;AACrC,cAAQ,cAAc,QAAQ,QAAQ;AACtC,cAAQ,YAAY,MAAM,qBAAqB;AAAA,IACjD;AAEA,UAAM,cAAc,MAAM,QAAQ,KAAK;AACvC,UAAM,eAAe,MAAM,SAAS,KAAK;AACzC,QAAI,cAAc,QAAQ,cAAc,eAAe,QAAQ,YAAa;AAC5E,UAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,IAAI,cAAc,GAAG,CAAC;AACjE,UAAM,OAAO,CAAC,MAAM;AACpB,UAAM,OAAO,KAAK,IAAI,QAAQ,cAAc,IAAI,eAAe,GAAG,CAAC;AACnE,UAAM,OAAO,CAAC,MAAM;AACpB,UAAM,eAAe,IAAI,QAAQ,SAAS,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE;AACnE,UAAM,eAAe,IAAI,QAAQ,SAAS,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE;AACnE,UAAM,cAAc,KAAK,IAAI,KAAK,IAAI,MAAM,eAAe,IAAI,MAAM,aAAa,CAAC,GAAG,KAAK,IAAI,MAAM,eAAe,IAAI,MAAM,aAAa,CAAC,CAAC;AAC7I,QAAI,cAAc,GAAG;AACnB,aAAO,aAAa;AAAA,IACtB;AACA,QAAI,CAAC,MAAM,WAAW,CAAC,WAAW;AAChC,UAAI,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI;AAC3O,cAAM,YAAY;AAClB;AAAA,MACF;AACA,UAAI,CAAC,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI;AAC5O,cAAM,YAAY;AAClB;AAAA,MACF;AAAA,IACF;AACA,QAAI,EAAE,YAAY;AAChB,QAAE,eAAe;AAAA,IACnB;AACA,MAAE,gBAAgB;AAClB,UAAM,UAAU;AAChB,UAAM,cAAc,KAAK,QAAQ,iBAAiB,QAAQ,WAAW,OAAO,OAAO,KAAK;AACxF,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,WAAW,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI,MAAM,SAAS,cAAc,MAAM,QAAQ,UAAU;AACtH,UAAM,WAAW,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI,MAAM,SAAS,cAAc,MAAM,SAAS,UAAU;AACvH,QAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,YAAM,WAAW,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,WAAW,MAAM;AAAA,IACzE;AACA,QAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,YAAM,WAAW,MAAM,OAAO,KAAK,MAAM,WAAW,MAAM,OAAO,MAAM;AAAA,IACzE;AACA,QAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,YAAM,WAAW,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,WAAW,MAAM;AAAA,IACzE;AACA,QAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,YAAM,WAAW,MAAM,OAAO,KAAK,MAAM,WAAW,MAAM,OAAO,MAAM;AAAA,IACzE;AAGA,QAAI,CAAC,SAAS,cAAe,UAAS,gBAAgB,MAAM,eAAe;AAC3E,QAAI,CAAC,SAAS,cAAe,UAAS,gBAAgB,MAAM,eAAe;AAC3E,QAAI,CAAC,SAAS,SAAU,UAAS,WAAW,KAAK,IAAI;AACrD,aAAS,KAAK,MAAM,eAAe,IAAI,SAAS,kBAAkB,KAAK,IAAI,IAAI,SAAS,YAAY;AACpG,aAAS,KAAK,MAAM,eAAe,IAAI,SAAS,kBAAkB,KAAK,IAAI,IAAI,SAAS,YAAY;AACpG,QAAI,KAAK,IAAI,MAAM,eAAe,IAAI,SAAS,aAAa,IAAI,EAAG,UAAS,IAAI;AAChF,QAAI,KAAK,IAAI,MAAM,eAAe,IAAI,SAAS,aAAa,IAAI,EAAG,UAAS,IAAI;AAChF,aAAS,gBAAgB,MAAM,eAAe;AAC9C,aAAS,gBAAgB,MAAM,eAAe;AAC9C,aAAS,WAAW,KAAK,IAAI;AAC7B,YAAQ,YAAY,MAAM,YAAY,eAAe,MAAM,QAAQ,OAAO,MAAM,QAAQ;AAAA,EAC1F;AACA,WAASC,cAAa;AACpB,UAAM,OAAO,OAAO;AACpB,QAAI,CAAC,QAAQ,QAAS;AACtB,QAAI,CAAC,MAAM,aAAa,CAAC,MAAM,SAAS;AACtC,YAAM,YAAY;AAClB,YAAM,UAAU;AAChB;AAAA,IACF;AACA,UAAM,YAAY;AAClB,UAAM,UAAU;AAChB,QAAI,oBAAoB;AACxB,QAAI,oBAAoB;AACxB,UAAM,oBAAoB,SAAS,IAAI;AACvC,UAAM,eAAe,MAAM,WAAW;AACtC,UAAM,oBAAoB,SAAS,IAAI;AACvC,UAAM,eAAe,MAAM,WAAW;AAGtC,QAAI,SAAS,MAAM,EAAG,qBAAoB,KAAK,KAAK,eAAe,MAAM,YAAY,SAAS,CAAC;AAC/F,QAAI,SAAS,MAAM,EAAG,qBAAoB,KAAK,KAAK,eAAe,MAAM,YAAY,SAAS,CAAC;AAC/F,UAAM,mBAAmB,KAAK,IAAI,mBAAmB,iBAAiB;AACtE,UAAM,WAAW;AACjB,UAAM,WAAW;AAEjB,UAAM,cAAc,MAAM,QAAQ,KAAK;AACvC,UAAM,eAAe,MAAM,SAAS,KAAK;AACzC,UAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,IAAI,cAAc,GAAG,CAAC;AACjE,UAAM,OAAO,CAAC,MAAM;AACpB,UAAM,OAAO,KAAK,IAAI,QAAQ,cAAc,IAAI,eAAe,GAAG,CAAC;AACnE,UAAM,OAAO,CAAC,MAAM;AACpB,UAAM,WAAW,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,MAAM,IAAI,GAAG,MAAM,IAAI;AAC1E,UAAM,WAAW,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,MAAM,IAAI,GAAG,MAAM,IAAI;AAC1E,YAAQ,YAAY,MAAM,qBAAqB,GAAG,gBAAgB;AAClE,YAAQ,YAAY,MAAM,YAAY,eAAe,MAAM,QAAQ,OAAO,MAAM,QAAQ;AAAA,EAC1F;AACA,WAAS,kBAAkB;AACzB,UAAM,OAAO,OAAO;AACpB,QAAI,QAAQ,WAAW,OAAO,gBAAgB,OAAO,OAAO,QAAQ,QAAQ,OAAO,GAAG;AACpF,UAAI,QAAQ,SAAS;AACnB,gBAAQ,QAAQ,MAAM,YAAY;AAAA,MACpC;AACA,UAAI,QAAQ,aAAa;AACvB,gBAAQ,YAAY,MAAM,YAAY;AAAA,MACxC;AACA,cAAQ,QAAQ,UAAU,OAAO,GAAG,OAAO,OAAO,KAAK,gBAAgB,EAAE;AACzE,WAAK,QAAQ;AACb,qBAAe;AACf,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,cAAc;AACtB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF;AACA,WAAS,OAAO,GAAG;AACjB,UAAM,OAAO,OAAO;AACpB,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,CAAC,QAAQ,SAAS;AACpB,UAAI,KAAK,EAAE,QAAQ;AACjB,gBAAQ,UAAU,EAAE,OAAO,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB;AAAA,MACjF;AACA,UAAI,CAAC,QAAQ,SAAS;AACpB,YAAI,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,SAAS;AAC5E,kBAAQ,UAAU,gBAAgB,OAAO,UAAU,IAAI,OAAO,OAAO,gBAAgB,EAAE,EAAE,CAAC;AAAA,QAC5F,OAAO;AACL,kBAAQ,UAAU,OAAO,OAAO,OAAO,WAAW;AAAA,QACpD;AAAA,MACF;AACA,UAAI,UAAU,QAAQ,QAAQ,cAAc,IAAI,OAAO,cAAc,EAAE;AACvE,UAAI,SAAS;AACX,kBAAU,QAAQ,iBAAiB,gDAAgD,EAAE,CAAC;AAAA,MACxF;AACA,cAAQ,UAAU;AAClB,UAAI,SAAS;AACX,gBAAQ,cAAc,eAAe,QAAQ,SAAS,IAAI,OAAO,cAAc,EAAE,EAAE,CAAC;AAAA,MACtF,OAAO;AACL,gBAAQ,cAAc;AAAA,MACxB;AAAA,IACF;AACA,QAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,YAAa;AAC9C,QAAI,OAAO,OAAO,SAAS;AACzB,aAAO,UAAU,MAAM,WAAW;AAClC,aAAO,UAAU,MAAM,cAAc;AAAA,IACvC;AACA,YAAQ,QAAQ,UAAU,IAAI,GAAG,OAAO,gBAAgB,EAAE;AAC1D,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,OAAO,MAAM,aAAa,MAAM,eAAe,GAAG;AACpD,eAAS,EAAE;AACX,eAAS,EAAE;AAAA,IACb,OAAO;AACL,eAAS,MAAM,aAAa;AAC5B,eAAS,MAAM,aAAa;AAAA,IAC9B;AACA,UAAM,iBAAiB,OAAO,MAAM,WAAW,IAAI;AACnD,QAAI,iBAAiB,KAAK,gBAAgB;AACxC,eAAS;AACT,eAAS;AAAA,IACX;AACA,SAAK,QAAQ,kBAAkB,QAAQ,YAAY,aAAa,kBAAkB,KAAK,OAAO;AAC9F,mBAAe,kBAAkB,QAAQ,YAAY,aAAa,kBAAkB,KAAK,OAAO;AAChG,QAAI,KAAK,EAAE,iBAAiB,KAAK,iBAAiB;AAChD,mBAAa,QAAQ,QAAQ;AAC7B,oBAAc,QAAQ,QAAQ;AAC9B,gBAAU,cAAc,QAAQ,OAAO,EAAE,OAAON,QAAO;AACvD,gBAAU,cAAc,QAAQ,OAAO,EAAE,MAAMA,QAAO;AACtD,cAAQ,UAAU,aAAa,IAAI;AACnC,cAAQ,UAAU,cAAc,IAAI;AACpC,mBAAa,QAAQ,QAAQ;AAC7B,oBAAc,QAAQ,QAAQ;AAC9B,oBAAc,aAAa,KAAK;AAChC,qBAAe,cAAc,KAAK;AAClC,sBAAgB,KAAK,IAAI,aAAa,IAAI,cAAc,GAAG,CAAC;AAC5D,sBAAgB,KAAK,IAAI,cAAc,IAAI,eAAe,GAAG,CAAC;AAC9D,sBAAgB,CAAC;AACjB,sBAAgB,CAAC;AACjB,mBAAa,QAAQ,KAAK;AAC1B,mBAAa,QAAQ,KAAK;AAC1B,UAAI,aAAa,eAAe;AAC9B,qBAAa;AAAA,MACf;AACA,UAAI,aAAa,eAAe;AAC9B,qBAAa;AAAA,MACf;AACA,UAAI,aAAa,eAAe;AAC9B,qBAAa;AAAA,MACf;AACA,UAAI,aAAa,eAAe;AAC9B,qBAAa;AAAA,MACf;AAAA,IACF,OAAO;AACL,mBAAa;AACb,mBAAa;AAAA,IACf;AACA,QAAI,kBAAkB,KAAK,UAAU,GAAG;AACtC,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAAA,IACpB;AACA,YAAQ,YAAY,MAAM,qBAAqB;AAC/C,YAAQ,YAAY,MAAM,YAAY,eAAe,UAAU,OAAO,UAAU;AAChF,YAAQ,QAAQ,MAAM,qBAAqB;AAC3C,YAAQ,QAAQ,MAAM,YAAY,4BAA4B,KAAK,KAAK;AAAA,EAC1E;AACA,WAAS,UAAU;AACjB,UAAM,OAAO,OAAO;AACpB,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,CAAC,QAAQ,SAAS;AACpB,UAAI,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,SAAS;AAC5E,gBAAQ,UAAU,gBAAgB,OAAO,UAAU,IAAI,OAAO,OAAO,gBAAgB,EAAE,EAAE,CAAC;AAAA,MAC5F,OAAO;AACL,gBAAQ,UAAU,OAAO,OAAO,OAAO,WAAW;AAAA,MACpD;AACA,UAAI,UAAU,QAAQ,QAAQ,cAAc,IAAI,OAAO,cAAc,EAAE;AACvE,UAAI,SAAS;AACX,kBAAU,QAAQ,iBAAiB,gDAAgD,EAAE,CAAC;AAAA,MACxF;AACA,cAAQ,UAAU;AAClB,UAAI,SAAS;AACX,gBAAQ,cAAc,eAAe,QAAQ,SAAS,IAAI,OAAO,cAAc,EAAE,EAAE,CAAC;AAAA,MACtF,OAAO;AACL,gBAAQ,cAAc;AAAA,MACxB;AAAA,IACF;AACA,QAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,YAAa;AAC9C,QAAI,OAAO,OAAO,SAAS;AACzB,aAAO,UAAU,MAAM,WAAW;AAClC,aAAO,UAAU,MAAM,cAAc;AAAA,IACvC;AACA,SAAK,QAAQ;AACb,mBAAe;AACf,YAAQ,YAAY,MAAM,qBAAqB;AAC/C,YAAQ,YAAY,MAAM,YAAY;AACtC,YAAQ,QAAQ,MAAM,qBAAqB;AAC3C,YAAQ,QAAQ,MAAM,YAAY;AAClC,YAAQ,QAAQ,UAAU,OAAO,GAAG,OAAO,gBAAgB,EAAE;AAC7D,YAAQ,UAAU;AAClB,YAAQ,UAAU;AAClB,YAAQ,UAAU;AAAA,EACpB;AAGA,WAAS,WAAW,GAAG;AACrB,UAAM,OAAO,OAAO;AACpB,QAAI,KAAK,SAAS,KAAK,UAAU,GAAG;AAElC,cAAQ;AAAA,IACV,OAAO;AAEL,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACA,WAAS,eAAe;AACtB,UAAM,kBAAkB,OAAO,OAAO,mBAAmB;AAAA,MACvD,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,UAAM,4BAA4B,OAAO,OAAO,mBAAmB;AAAA,MACjE,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,WAASO,UAAS;AAChB,UAAM,OAAO,OAAO;AACpB,QAAI,KAAK,QAAS;AAClB,SAAK,UAAU;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,aAAa;AAGjB,WAAO,UAAU,iBAAiB,eAAe,gBAAgB,eAAe;AAChF,WAAO,UAAU,iBAAiB,eAAe,iBAAiB,yBAAyB;AAC3F,KAAC,aAAa,iBAAiB,YAAY,EAAE,QAAQ,eAAa;AAChE,aAAO,UAAU,iBAAiB,WAAW,cAAc,eAAe;AAAA,IAC5E,CAAC;AAGD,WAAO,UAAU,iBAAiB,eAAeH,cAAa,yBAAyB;AAAA,EACzF;AACA,WAASI,WAAU;AACjB,UAAM,OAAO,OAAO;AACpB,QAAI,CAAC,KAAK,QAAS;AACnB,SAAK,UAAU;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,aAAa;AAGjB,WAAO,UAAU,oBAAoB,eAAe,gBAAgB,eAAe;AACnF,WAAO,UAAU,oBAAoB,eAAe,iBAAiB,yBAAyB;AAC9F,KAAC,aAAa,iBAAiB,YAAY,EAAE,QAAQ,eAAa;AAChE,aAAO,UAAU,oBAAoB,WAAW,cAAc,eAAe;AAAA,IAC/E,CAAC;AAGD,WAAO,UAAU,oBAAoB,eAAeJ,cAAa,yBAAyB;AAAA,EAC5F;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,KAAK,SAAS;AAC9B,MAAAG,QAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,IAAAC,SAAQ;AAAA,EACV,CAAC;AACD,KAAG,cAAc,CAAC,IAAI,MAAM;AAC1B,QAAI,CAAC,OAAO,KAAK,QAAS;AAC1B,IAAAN,cAAa,CAAC;AAAA,EAChB,CAAC;AACD,KAAG,YAAY,CAAC,IAAI,MAAM;AACxB,QAAI,CAAC,OAAO,KAAK,QAAS;AAC1B,IAAAI,YAAW;AAAA,EACb,CAAC;AACD,KAAG,aAAa,CAAC,IAAI,MAAM;AACzB,QAAI,CAAC,OAAO,aAAa,OAAO,OAAO,KAAK,WAAW,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,QAAQ;AACvG,iBAAW,CAAC;AAAA,IACd;AAAA,EACF,CAAC;AACD,KAAG,iBAAiB,MAAM;AACxB,QAAI,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,SAAS;AACrD,sBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACD,KAAG,eAAe,MAAM;AACtB,QAAI,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,WAAW,OAAO,OAAO,SAAS;AAC9E,sBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACD,SAAO,OAAO,OAAO,MAAM;AAAA,IACzB,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,QAAQ;AAAA,EACV,CAAC;AACH;;;ACzkBA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,YAAY;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,IAAI;AAAA;AAAA,IACN;AAAA,EACF,CAAC;AAED,SAAO,aAAa;AAAA,IAClB,SAAS;AAAA,EACX;AACA,WAAS,aAAa,GAAG,GAAG;AAC1B,UAAM,eAAe,yBAAS,SAAS;AACrC,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,aAAO,CAAC,OAAO,QAAQ;AACrB,mBAAW;AACX,mBAAW,MAAM;AACjB,eAAO,WAAW,WAAW,GAAG;AAC9B,kBAAQ,WAAW,YAAY;AAC/B,cAAI,MAAM,KAAK,KAAK,KAAK;AACvB,uBAAW;AAAA,UACb,OAAO;AACL,uBAAW;AAAA,UACb;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,EAAE;AACF,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,YAAY,EAAE,SAAS;AAI5B,QAAI;AACJ,QAAI;AACJ,SAAK,cAAc,SAAS,YAAY,IAAI;AAC1C,UAAI,CAAC,GAAI,QAAO;AAGhB,WAAK,aAAa,KAAK,GAAG,EAAE;AAC5B,WAAK,KAAK;AAIV,cAAQ,KAAK,KAAK,EAAE,EAAE,MAAM,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,MAAM,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,EAAE;AAAA,IAC9F;AACA,WAAO;AAAA,EACT;AACA,WAAS,uBAAuB,GAAG;AACjC,WAAO,WAAW,SAAS,OAAO,OAAO,OAAO,IAAI,aAAa,OAAO,YAAY,EAAE,UAAU,IAAI,IAAI,aAAa,OAAO,UAAU,EAAE,QAAQ;AAAA,EAClJ;AACA,WAASC,cAAa,IAAI,cAAc;AACtC,UAAM,aAAa,OAAO,WAAW;AACrC,QAAI;AACJ,QAAI;AACJ,UAAMC,UAAS,OAAO;AACtB,aAAS,uBAAuB,GAAG;AACjC,UAAI,EAAE,UAAW;AAMjB,YAAMC,aAAY,OAAO,eAAe,CAAC,OAAO,YAAY,OAAO;AACnE,UAAI,OAAO,OAAO,WAAW,OAAO,SAAS;AAC3C,+BAAuB,CAAC;AAGxB,8BAAsB,CAAC,OAAO,WAAW,OAAO,YAAY,CAACA,UAAS;AAAA,MACxE;AACA,UAAI,CAAC,uBAAuB,OAAO,OAAO,WAAW,OAAO,aAAa;AACvE,sBAAc,EAAE,aAAa,IAAI,EAAE,aAAa,MAAM,OAAO,aAAa,IAAI,OAAO,aAAa;AAClG,YAAI,OAAO,MAAM,UAAU,KAAK,CAAC,OAAO,SAAS,UAAU,GAAG;AAC5D,uBAAa;AAAA,QACf;AACA,+BAAuBA,aAAY,OAAO,aAAa,KAAK,aAAa,EAAE,aAAa;AAAA,MAC1F;AACA,UAAI,OAAO,OAAO,WAAW,SAAS;AACpC,8BAAsB,EAAE,aAAa,IAAI;AAAA,MAC3C;AACA,QAAE,eAAe,mBAAmB;AACpC,QAAE,aAAa,qBAAqB,MAAM;AAC1C,QAAE,kBAAkB;AACpB,QAAE,oBAAoB;AAAA,IACxB;AACA,QAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAC7C,YAAI,WAAW,CAAC,MAAM,gBAAgB,WAAW,CAAC,aAAaD,SAAQ;AACrE,iCAAuB,WAAW,CAAC,CAAC;AAAA,QACtC;AAAA,MACF;AAAA,IACF,WAAW,sBAAsBA,WAAU,iBAAiB,YAAY;AACtE,6BAAuB,UAAU;AAAA,IACnC;AAAA,EACF;AACA,WAASE,eAAc,UAAU,cAAc;AAC7C,UAAMF,UAAS,OAAO;AACtB,UAAM,aAAa,OAAO,WAAW;AACrC,QAAI;AACJ,aAAS,wBAAwB,GAAG;AAClC,UAAI,EAAE,UAAW;AACjB,QAAE,cAAc,UAAU,MAAM;AAChC,UAAI,aAAa,GAAG;AAClB,UAAE,gBAAgB;AAClB,YAAI,EAAE,OAAO,YAAY;AACvB,UAAAG,UAAS,MAAM;AACb,cAAE,iBAAiB;AAAA,UACrB,CAAC;AAAA,QACH;AACA,6BAAqB,EAAE,WAAW,MAAM;AACtC,cAAI,CAAC,WAAY;AACjB,YAAE,cAAc;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,WAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AACzC,YAAI,WAAW,CAAC,MAAM,gBAAgB,WAAW,CAAC,aAAaH,SAAQ;AACrE,kCAAwB,WAAW,CAAC,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF,WAAW,sBAAsBA,WAAU,iBAAiB,YAAY;AACtE,8BAAwB,UAAU;AAAA,IACpC;AAAA,EACF;AACA,WAAS,eAAe;AACtB,QAAI,CAAC,OAAO,WAAW,QAAS;AAChC,QAAI,OAAO,WAAW,QAAQ;AAC5B,aAAO,WAAW,SAAS;AAC3B,aAAO,OAAO,WAAW;AAAA,IAC3B;AAAA,EACF;AACA,KAAG,cAAc,MAAM;AACrB,QAAI,OAAO,WAAW;AAAA,KAEtB,OAAO,OAAO,OAAO,WAAW,YAAY,YAAY,OAAO,OAAO,WAAW,mBAAmB,cAAc;AAChH,YAAM,iBAAiB,SAAS,cAAc,OAAO,OAAO,WAAW,OAAO;AAC9E,UAAI,kBAAkB,eAAe,QAAQ;AAC3C,eAAO,WAAW,UAAU,eAAe;AAAA,MAC7C,WAAW,gBAAgB;AACzB,cAAM,qBAAqB,OAAK;AAC9B,iBAAO,WAAW,UAAU,EAAE,OAAO,CAAC;AACtC,iBAAO,OAAO;AACd,yBAAe,oBAAoB,QAAQ,kBAAkB;AAAA,QAC/D;AACA,uBAAe,iBAAiB,QAAQ,kBAAkB;AAAA,MAC5D;AACA;AAAA,IACF;AACA,WAAO,WAAW,UAAU,OAAO,OAAO,WAAW;AAAA,EACvD,CAAC;AACD,KAAG,UAAU,MAAM;AACjB,iBAAa;AAAA,EACf,CAAC;AACD,KAAG,UAAU,MAAM;AACjB,iBAAa;AAAA,EACf,CAAC;AACD,KAAG,kBAAkB,MAAM;AACzB,iBAAa;AAAA,EACf,CAAC;AACD,KAAG,gBAAgB,CAAC,IAAIC,YAAW,iBAAiB;AAClD,QAAI,CAAC,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ,UAAW;AACvE,WAAO,WAAW,aAAaA,YAAW,YAAY;AAAA,EACxD,CAAC;AACD,KAAG,iBAAiB,CAAC,IAAI,UAAU,iBAAiB;AAClD,QAAI,CAAC,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ,UAAW;AACvE,WAAO,WAAW,cAAc,UAAU,YAAY;AAAA,EACxD,CAAC;AACD,SAAO,OAAO,OAAO,YAAY;AAAA,IAC/B,cAAAF;AAAA,IACA,eAAAG;AAAA,EACF,CAAC;AACH;;;ACrLA,SAAS,KAAK,MAAM;AAClB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,yBAAyB;AAAA,MACzB,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,iCAAiC;AAAA,MACjC,4BAA4B;AAAA,MAC5B,WAAW;AAAA,MACX,IAAI;AAAA,IACN;AAAA,EACF,CAAC;AACD,SAAO,OAAO;AAAA,IACZ,SAAS;AAAA,EACX;AACA,MAAI,aAAa;AACjB,WAAS,OAAO,SAAS;AACvB,UAAM,eAAe;AACrB,QAAI,aAAa,WAAW,EAAG;AAC/B,iBAAa,YAAY;AACzB,iBAAa,YAAY;AAAA,EAC3B;AACA,QAAM,oBAAoB,SAAO,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,OAAO,OAAK,CAAC,CAAC,CAAC;AAC/E,WAAS,gBAAgB,MAAM;AAC7B,QAAI,SAAS,QAAQ;AACnB,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,KAAK,MAAM,KAAK,KAAK,OAAO,CAAC,EAAE,SAAS,EAAE;AACnE,WAAO,IAAI,OAAO,IAAI,EAAE,QAAQ,MAAM,UAAU;AAAA,EAClD;AACA,WAAS,gBAAgB,IAAI;AAC3B,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,YAAY,GAAG;AAAA,IACpC,CAAC;AAAA,EACH;AACA,WAAS,mBAAmB,IAAI;AAC9B,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,YAAY,IAAI;AAAA,IACrC,CAAC;AAAA,EACH;AACA,WAAS,UAAU,IAAI,MAAM;AAC3B,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,QAAQ,IAAI;AAAA,IACjC,CAAC;AAAA,EACH;AACA,WAAS,qBAAqB,IAAI,aAAa;AAC7C,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,wBAAwB,WAAW;AAAA,IACxD,CAAC;AAAA,EACH;AACA,WAAS,cAAc,IAAI,UAAU;AACnC,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,iBAAiB,QAAQ;AAAA,IAC9C,CAAC;AAAA,EACH;AACA,WAAS,WAAW,IAAI,OAAO;AAC7B,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,cAAc,KAAK;AAAA,IACxC,CAAC;AAAA,EACH;AACA,WAAS,QAAQ,IAAIE,KAAI;AACvB,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,MAAMA,GAAE;AAAA,IAC7B,CAAC;AAAA,EACH;AACA,WAAS,UAAU,IAAI,MAAM;AAC3B,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,aAAa,IAAI;AAAA,IACtC,CAAC;AAAA,EACH;AACA,WAAS,UAAU,IAAI;AACrB,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,iBAAiB,IAAI;AAAA,IAC1C,CAAC;AAAA,EACH;AACA,WAAS,SAAS,IAAI;AACpB,SAAK,kBAAkB,EAAE;AACzB,OAAG,QAAQ,WAAS;AAClB,YAAM,aAAa,iBAAiB,KAAK;AAAA,IAC3C,CAAC;AAAA,EACH;AACA,WAAS,kBAAkB,GAAG;AAC5B,QAAI,EAAE,YAAY,MAAM,EAAE,YAAY,GAAI;AAC1C,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,WAAW,EAAE;AACnB,QAAI,OAAO,cAAc,OAAO,WAAW,OAAO,aAAa,OAAO,WAAW,MAAM,OAAO,WAAW,GAAG,SAAS,EAAE,MAAM,IAAI;AAC/H,UAAI,CAAC,EAAE,OAAO,QAAQ,kBAAkB,OAAO,OAAO,WAAW,WAAW,CAAC,EAAG;AAAA,IAClF;AACA,QAAI,OAAO,cAAc,OAAO,WAAW,UAAU,aAAa,OAAO,WAAW,QAAQ;AAC1F,UAAI,EAAE,OAAO,SAAS,CAAC,OAAO,OAAO,OAAO;AAC1C,eAAO,UAAU;AAAA,MACnB;AACA,UAAI,OAAO,OAAO;AAChB,eAAO,OAAO,gBAAgB;AAAA,MAChC,OAAO;AACL,eAAO,OAAO,gBAAgB;AAAA,MAChC;AAAA,IACF;AACA,QAAI,OAAO,cAAc,OAAO,WAAW,UAAU,aAAa,OAAO,WAAW,QAAQ;AAC1F,UAAI,EAAE,OAAO,eAAe,CAAC,OAAO,OAAO,OAAO;AAChD,eAAO,UAAU;AAAA,MACnB;AACA,UAAI,OAAO,aAAa;AACtB,eAAO,OAAO,iBAAiB;AAAA,MACjC,OAAO;AACL,eAAO,OAAO,gBAAgB;AAAA,MAChC;AAAA,IACF;AACA,QAAI,OAAO,cAAc,SAAS,QAAQ,kBAAkB,OAAO,OAAO,WAAW,WAAW,CAAC,GAAG;AAClG,eAAS,MAAM;AAAA,IACjB;AAAA,EACF;AACA,WAAS,mBAAmB;AAC1B,QAAI,OAAO,OAAO,QAAQ,OAAO,OAAO,UAAU,CAAC,OAAO,WAAY;AACtE,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,QAAI,QAAQ;AACV,UAAI,OAAO,aAAa;AACtB,kBAAU,MAAM;AAChB,2BAAmB,MAAM;AAAA,MAC3B,OAAO;AACL,iBAAS,MAAM;AACf,wBAAgB,MAAM;AAAA,MACxB;AAAA,IACF;AACA,QAAI,QAAQ;AACV,UAAI,OAAO,OAAO;AAChB,kBAAU,MAAM;AAChB,2BAAmB,MAAM;AAAA,MAC3B,OAAO;AACL,iBAAS,MAAM;AACf,wBAAgB,MAAM;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACA,WAAS,gBAAgB;AACvB,WAAO,OAAO,cAAc,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ;AAAA,EACrF;AACA,WAAS,yBAAyB;AAChC,WAAO,cAAc,KAAK,OAAO,OAAO,WAAW;AAAA,EACrD;AACA,WAAS,mBAAmB;AAC1B,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,CAAC,cAAc,EAAG;AACtB,WAAO,WAAW,QAAQ,QAAQ,cAAY;AAC5C,UAAI,OAAO,OAAO,WAAW,WAAW;AACtC,wBAAgB,QAAQ;AACxB,YAAI,CAAC,OAAO,OAAO,WAAW,cAAc;AAC1C,oBAAU,UAAU,QAAQ;AAC5B,qBAAW,UAAU,OAAO,wBAAwB,QAAQ,iBAAiB,aAAa,QAAQ,IAAI,CAAC,CAAC;AAAA,QAC1G;AAAA,MACF;AACA,UAAI,SAAS,QAAQ,kBAAkB,OAAO,OAAO,WAAW,iBAAiB,CAAC,GAAG;AACnF,iBAAS,aAAa,gBAAgB,MAAM;AAAA,MAC9C,OAAO;AACL,iBAAS,gBAAgB,cAAc;AAAA,MACzC;AAAA,IACF,CAAC;AAAA,EACH;AACA,QAAM,YAAY,CAAC,IAAI,WAAW,YAAY;AAC5C,oBAAgB,EAAE;AAClB,QAAI,GAAG,YAAY,UAAU;AAC3B,gBAAU,IAAI,QAAQ;AACtB,SAAG,iBAAiB,WAAW,iBAAiB;AAAA,IAClD;AACA,eAAW,IAAI,OAAO;AACtB,kBAAc,IAAI,SAAS;AAAA,EAC7B;AACA,QAAM,oBAAoB,MAAM;AAC9B,WAAO,KAAK,UAAU;AAAA,EACxB;AACA,QAAM,kBAAkB,MAAM;AAC5B,0BAAsB,MAAM;AAC1B,4BAAsB,MAAM;AAC1B,YAAI,CAAC,OAAO,WAAW;AACrB,iBAAO,KAAK,UAAU;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,QAAM,cAAc,OAAK;AACvB,QAAI,OAAO,KAAK,QAAS;AACzB,UAAM,UAAU,EAAE,OAAO,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB;AAC7E,QAAI,CAAC,WAAW,CAAC,OAAO,OAAO,SAAS,OAAO,EAAG;AAClD,UAAM,WAAW,OAAO,OAAO,QAAQ,OAAO,MAAM,OAAO;AAC3D,UAAM,YAAY,OAAO,OAAO,uBAAuB,OAAO,iBAAiB,OAAO,cAAc,SAAS,OAAO;AACpH,QAAI,YAAY,UAAW;AAC3B,QAAI,EAAE,sBAAsB,EAAE,mBAAmB,iBAAkB;AACnE,QAAI,OAAO,aAAa,GAAG;AACzB,aAAO,GAAG,aAAa;AAAA,IACzB,OAAO;AACL,aAAO,GAAG,YAAY;AAAA,IACxB;AACA,WAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,GAAG,CAAC;AAAA,EAClD;AACA,QAAM,aAAa,MAAM;AACvB,UAAM,SAAS,OAAO,OAAO;AAC7B,QAAI,OAAO,4BAA4B;AACrC,2BAAqB,OAAO,QAAQ,OAAO,0BAA0B;AAAA,IACvE;AACA,QAAI,OAAO,WAAW;AACpB,gBAAU,OAAO,QAAQ,OAAO,SAAS;AAAA,IAC3C;AACA,UAAM,eAAe,OAAO,OAAO;AACnC,QAAI,OAAO,mBAAmB;AAC5B,aAAO,OAAO,QAAQ,CAAC,SAAS,UAAU;AACxC,cAAM,aAAa,OAAO,OAAO,OAAO,SAAS,QAAQ,aAAa,yBAAyB,GAAG,EAAE,IAAI;AACxG,cAAM,mBAAmB,OAAO,kBAAkB,QAAQ,iBAAiB,aAAa,CAAC,EAAE,QAAQ,wBAAwB,YAAY;AACvI,mBAAW,SAAS,gBAAgB;AAAA,MACtC,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,OAAO,MAAM;AACjB,UAAM,SAAS,OAAO,OAAO;AAC7B,WAAO,GAAG,OAAO,UAAU;AAG3B,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,iCAAiC;AAC1C,2BAAqB,aAAa,OAAO,+BAA+B;AAAA,IAC1E;AACA,QAAI,OAAO,kBAAkB;AAC3B,iBAAW,aAAa,OAAO,gBAAgB;AAAA,IACjD;AAGA,UAAM,YAAY,OAAO;AACzB,UAAM,YAAY,OAAO,MAAM,UAAU,aAAa,IAAI,KAAK,kBAAkB,gBAAgB,EAAE,CAAC;AACpG,UAAM,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO,SAAS,UAAU,QAAQ;AAChF,YAAQ,WAAW,SAAS;AAC5B,cAAU,WAAW,IAAI;AAGzB,eAAW;AAGX,QAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,IAAI,OAAO,aAAa,OAAO,aAAa,CAAC;AAC7C,aAAS,kBAAkB,MAAM;AACjC,aAAS,kBAAkB,MAAM;AACjC,QAAI,QAAQ;AACV,aAAO,QAAQ,QAAM,UAAU,IAAI,WAAW,OAAO,gBAAgB,CAAC;AAAA,IACxE;AACA,QAAI,QAAQ;AACV,aAAO,QAAQ,QAAM,UAAU,IAAI,WAAW,OAAO,gBAAgB,CAAC;AAAA,IACxE;AAGA,QAAI,uBAAuB,GAAG;AAC5B,YAAM,eAAe,MAAM,QAAQ,OAAO,WAAW,EAAE,IAAI,OAAO,WAAW,KAAK,CAAC,OAAO,WAAW,EAAE;AACvG,mBAAa,QAAQ,QAAM;AACzB,WAAG,iBAAiB,WAAW,iBAAiB;AAAA,MAClD,CAAC;AAAA,IACH;AAGA,WAAO,GAAG,iBAAiB,SAAS,aAAa,IAAI;AACrD,WAAO,GAAG,iBAAiB,eAAe,mBAAmB,IAAI;AACjE,WAAO,GAAG,iBAAiB,aAAa,iBAAiB,IAAI;AAAA,EAC/D;AACA,WAAS,UAAU;AACjB,QAAI,WAAY,YAAW,OAAO;AAClC,QAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,IAAI,OAAO,aAAa,OAAO,aAAa,CAAC;AAC7C,aAAS,kBAAkB,MAAM;AACjC,aAAS,kBAAkB,MAAM;AACjC,QAAI,QAAQ;AACV,aAAO,QAAQ,QAAM,GAAG,oBAAoB,WAAW,iBAAiB,CAAC;AAAA,IAC3E;AACA,QAAI,QAAQ;AACV,aAAO,QAAQ,QAAM,GAAG,oBAAoB,WAAW,iBAAiB,CAAC;AAAA,IAC3E;AAGA,QAAI,uBAAuB,GAAG;AAC5B,YAAM,eAAe,MAAM,QAAQ,OAAO,WAAW,EAAE,IAAI,OAAO,WAAW,KAAK,CAAC,OAAO,WAAW,EAAE;AACvG,mBAAa,QAAQ,QAAM;AACzB,WAAG,oBAAoB,WAAW,iBAAiB;AAAA,MACrD,CAAC;AAAA,IACH;AAGA,WAAO,GAAG,oBAAoB,SAAS,aAAa,IAAI;AACxD,WAAO,GAAG,oBAAoB,eAAe,mBAAmB,IAAI;AACpE,WAAO,GAAG,oBAAoB,aAAa,iBAAiB,IAAI;AAAA,EAClE;AACA,KAAG,cAAc,MAAM;AACrB,iBAAa,cAAc,QAAQ,OAAO,OAAO,KAAK,iBAAiB;AACvE,eAAW,aAAa,aAAa,WAAW;AAChD,eAAW,aAAa,eAAe,MAAM;AAAA,EAC/C,CAAC;AACD,KAAG,aAAa,MAAM;AACpB,QAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,SAAK;AAAA,EACP,CAAC;AACD,KAAG,kEAAkE,MAAM;AACzE,QAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,eAAW;AAAA,EACb,CAAC;AACD,KAAG,yCAAyC,MAAM;AAChD,QAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,qBAAiB;AAAA,EACnB,CAAC;AACD,KAAG,oBAAoB,MAAM;AAC3B,QAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,qBAAiB;AAAA,EACnB,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,QAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,YAAQ;AAAA,EACV,CAAC;AACH;;;AClVA,SAAS,QAAQ,MAAM;AACrB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,SAAS;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,cAAc;AAAA,MACd,KAAK;AAAA,MACL,WAAW;AAAA,IACb;AAAA,EACF,CAAC;AACD,MAAI,cAAc;AAClB,MAAI,QAAQ,CAAC;AACb,QAAM,UAAU,UAAQ;AACtB,WAAO,KAAK,SAAS,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,EAAE;AAAA,EAC/H;AACA,QAAM,gBAAgB,iBAAe;AACnC,UAAMC,UAASC,WAAU;AACzB,QAAI;AACJ,QAAI,aAAa;AACf,iBAAW,IAAI,IAAI,WAAW;AAAA,IAChC,OAAO;AACL,iBAAWD,QAAO;AAAA,IACpB;AACA,UAAM,YAAY,SAAS,SAAS,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,UAAQ,SAAS,EAAE;AAClF,UAAM,QAAQ,UAAU;AACxB,UAAM,MAAM,UAAU,QAAQ,CAAC;AAC/B,UAAM,QAAQ,UAAU,QAAQ,CAAC;AACjC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,aAAa,CAAC,KAAK,UAAU;AACjC,UAAMA,UAASC,WAAU;AACzB,QAAI,CAAC,eAAe,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpD,QAAI;AACJ,QAAI,OAAO,OAAO,KAAK;AACrB,iBAAW,IAAI,IAAI,OAAO,OAAO,GAAG;AAAA,IACtC,OAAO;AACL,iBAAWD,QAAO;AAAA,IACpB;AACA,UAAME,SAAQ,OAAO,OAAO,KAAK;AACjC,QAAI,QAAQ,QAAQA,OAAM,aAAa,cAAc,CAAC;AACtD,QAAI,OAAO,OAAO,QAAQ,KAAK,SAAS,GAAG;AACzC,UAAI,OAAO,OAAO,OAAO,QAAQ;AACjC,UAAI,KAAK,KAAK,SAAS,CAAC,MAAM,IAAK,QAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AACvE,cAAQ,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,KAAK;AAAA,IACjD,WAAW,CAAC,SAAS,SAAS,SAAS,GAAG,GAAG;AAC3C,cAAQ,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,KAAK;AAAA,IACzC;AACA,QAAI,OAAO,OAAO,QAAQ,WAAW;AACnC,eAAS,SAAS;AAAA,IACpB;AACA,UAAM,eAAeF,QAAO,QAAQ;AACpC,QAAI,gBAAgB,aAAa,UAAU,OAAO;AAChD;AAAA,IACF;AACA,QAAI,OAAO,OAAO,QAAQ,cAAc;AACtC,MAAAA,QAAO,QAAQ,aAAa;AAAA,QAC1B;AAAA,MACF,GAAG,MAAM,KAAK;AAAA,IAChB,OAAO;AACL,MAAAA,QAAO,QAAQ,UAAU;AAAA,QACvB;AAAA,MACF,GAAG,MAAM,KAAK;AAAA,IAChB;AAAA,EACF;AACA,QAAM,gBAAgB,CAAC,OAAO,OAAO,iBAAiB;AACpD,QAAI,OAAO;AACT,eAAS,IAAI,GAAG,SAAS,OAAO,OAAO,QAAQ,IAAI,QAAQ,KAAK,GAAG;AACjE,cAAME,SAAQ,OAAO,OAAO,CAAC;AAC7B,cAAM,eAAe,QAAQA,OAAM,aAAa,cAAc,CAAC;AAC/D,YAAI,iBAAiB,OAAO;AAC1B,gBAAM,QAAQ,OAAO,cAAcA,MAAK;AACxC,iBAAO,QAAQ,OAAO,OAAO,YAAY;AAAA,QAC3C;AAAA,MACF;AAAA,IACF,OAAO;AACL,aAAO,QAAQ,GAAG,OAAO,YAAY;AAAA,IACvC;AAAA,EACF;AACA,QAAM,qBAAqB,MAAM;AAC/B,YAAQ,cAAc,OAAO,OAAO,GAAG;AACvC,kBAAc,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK;AAAA,EACvD;AACA,QAAM,OAAO,MAAM;AACjB,UAAMF,UAASC,WAAU;AACzB,QAAI,CAAC,OAAO,OAAO,QAAS;AAC5B,QAAI,CAACD,QAAO,WAAW,CAACA,QAAO,QAAQ,WAAW;AAChD,aAAO,OAAO,QAAQ,UAAU;AAChC,aAAO,OAAO,eAAe,UAAU;AACvC;AAAA,IACF;AACA,kBAAc;AACd,YAAQ,cAAc,OAAO,OAAO,GAAG;AACvC,QAAI,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO;AAC9B,UAAI,CAAC,OAAO,OAAO,QAAQ,cAAc;AACvC,QAAAA,QAAO,iBAAiB,YAAY,kBAAkB;AAAA,MACxD;AACA;AAAA,IACF;AACA,kBAAc,GAAG,MAAM,OAAO,OAAO,OAAO,kBAAkB;AAC9D,QAAI,CAAC,OAAO,OAAO,QAAQ,cAAc;AACvC,MAAAA,QAAO,iBAAiB,YAAY,kBAAkB;AAAA,IACxD;AAAA,EACF;AACA,QAAM,UAAU,MAAM;AACpB,UAAMA,UAASC,WAAU;AACzB,QAAI,CAAC,OAAO,OAAO,QAAQ,cAAc;AACvC,MAAAD,QAAO,oBAAoB,YAAY,kBAAkB;AAAA,IAC3D;AAAA,EACF;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,QAAQ,SAAS;AACjC,WAAK;AAAA,IACP;AAAA,EACF,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,QAAI,OAAO,OAAO,QAAQ,SAAS;AACjC,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACD,KAAG,4CAA4C,MAAM;AACnD,QAAI,aAAa;AACf,iBAAW,OAAO,OAAO,QAAQ,KAAK,OAAO,WAAW;AAAA,IAC1D;AAAA,EACF,CAAC;AACD,KAAG,eAAe,MAAM;AACtB,QAAI,eAAe,OAAO,OAAO,SAAS;AACxC,iBAAW,OAAO,OAAO,QAAQ,KAAK,OAAO,WAAW;AAAA,IAC1D;AAAA,EACF,CAAC;AACH;;;ACxIA,SAAS,eAAe,MAAM;AAC5B,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,cAAc;AAClB,QAAMG,YAAWC,aAAY;AAC7B,QAAMC,UAASC,WAAU;AACzB,eAAa;AAAA,IACX,gBAAgB;AAAA,MACd,SAAS;AAAA,MACT,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc,IAAI,MAAM;AACtB,YAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACnD,gBAAM,gBAAgB,OAAO,OAAO,OAAO,aAAW,QAAQ,aAAa,WAAW,MAAM,IAAI,EAAE,CAAC;AACnG,cAAI,CAAC,cAAe,QAAO;AAC3B,gBAAM,QAAQ,SAAS,cAAc,aAAa,yBAAyB,GAAG,EAAE;AAChF,iBAAO;AAAA,QACT;AACA,eAAO,OAAO,cAAc,gBAAgB,OAAO,UAAU,IAAI,OAAO,OAAO,UAAU,eAAe,IAAI,+BAA+B,IAAI,IAAI,EAAE,CAAC,CAAC;AAAA,MACzJ;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,eAAe,MAAM;AACzB,SAAK,YAAY;AACjB,UAAM,UAAUH,UAAS,SAAS,KAAK,QAAQ,KAAK,EAAE;AACtD,UAAM,gBAAgB,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,SAAS,cAAc,6BAA6B,OAAO,WAAW,IAAI,IAAI,OAAO,OAAO,OAAO,WAAW;AAC7L,UAAM,kBAAkB,gBAAgB,cAAc,aAAa,WAAW,IAAI;AAClF,QAAI,YAAY,iBAAiB;AAC/B,YAAM,WAAW,OAAO,OAAO,eAAe,cAAc,QAAQ,OAAO;AAC3E,UAAI,OAAO,aAAa,eAAe,OAAO,MAAM,QAAQ,EAAG;AAC/D,aAAO,QAAQ,QAAQ;AAAA,IACzB;AAAA,EACF;AACA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,eAAe,CAAC,OAAO,OAAO,eAAe,QAAS;AAC3D,UAAM,gBAAgB,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,SAAS,cAAc,6BAA6B,OAAO,WAAW,IAAI,IAAI,OAAO,OAAO,OAAO,WAAW;AAC7L,UAAM,kBAAkB,gBAAgB,cAAc,aAAa,WAAW,KAAK,cAAc,aAAa,cAAc,IAAI;AAChI,QAAI,OAAO,OAAO,eAAe,gBAAgBE,QAAO,WAAWA,QAAO,QAAQ,cAAc;AAC9F,MAAAA,QAAO,QAAQ,aAAa,MAAM,MAAM,IAAI,eAAe,MAAM,EAAE;AACnE,WAAK,SAAS;AAAA,IAChB,OAAO;AACL,MAAAF,UAAS,SAAS,OAAO,mBAAmB;AAC5C,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AACA,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC,OAAO,OAAO,eAAe,WAAW,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,QAAS;AACrG,kBAAc;AACd,UAAM,OAAOA,UAAS,SAAS,KAAK,QAAQ,KAAK,EAAE;AACnD,QAAI,MAAM;AACR,YAAM,QAAQ;AACd,YAAM,QAAQ,OAAO,OAAO,eAAe,cAAc,QAAQ,IAAI;AACrE,aAAO,QAAQ,SAAS,GAAG,OAAO,OAAO,OAAO,oBAAoB,IAAI;AAAA,IAC1E;AACA,QAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,MAAAE,QAAO,iBAAiB,cAAc,YAAY;AAAA,IACpD;AAAA,EACF;AACA,QAAM,UAAU,MAAM;AACpB,QAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,MAAAA,QAAO,oBAAoB,cAAc,YAAY;AAAA,IACvD;AAAA,EACF;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,eAAe,SAAS;AACxC,WAAK;AAAA,IACP;AAAA,EACF,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,QAAI,OAAO,OAAO,eAAe,SAAS;AACxC,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACD,KAAG,4CAA4C,MAAM;AACnD,QAAI,aAAa;AACf,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACD,KAAG,eAAe,MAAM;AACtB,QAAI,eAAe,OAAO,OAAO,SAAS;AACxC,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH;;;ACtFA,SAAS,SAAS,MAAM;AACtB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SAAO,WAAW;AAAA,IAChB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACA,eAAa;AAAA,IACX,UAAU;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,MACtB,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,IACrB;AAAA,EACF,CAAC;AACD,MAAI;AACJ,MAAI;AACJ,MAAI,qBAAqB,UAAU,OAAO,WAAW,OAAO,SAAS,QAAQ;AAC7E,MAAI,uBAAuB,UAAU,OAAO,WAAW,OAAO,SAAS,QAAQ;AAC/E,MAAI;AACJ,MAAI,qBAAoB,oBAAI,KAAK,GAAE;AACnC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,WAAS,gBAAgB,GAAG;AAC1B,QAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,UAAW;AACtD,QAAI,EAAE,WAAW,OAAO,UAAW;AACnC,WAAO,UAAU,oBAAoB,iBAAiB,eAAe;AACrE,WAAO;AAAA,EACT;AACA,QAAM,eAAe,MAAM;AACzB,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,QAAI,OAAO,SAAS,QAAQ;AAC1B,kBAAY;AAAA,IACd,WAAW,WAAW;AACpB,6BAAuB;AACvB,kBAAY;AAAA,IACd;AACA,UAAM,WAAW,OAAO,SAAS,SAAS,mBAAmB,oBAAoB,wBAAuB,oBAAI,KAAK,GAAE,QAAQ;AAC3H,WAAO,SAAS,WAAW;AAC3B,SAAK,oBAAoB,UAAU,WAAW,kBAAkB;AAChE,UAAM,sBAAsB,MAAM;AAChC,mBAAa;AAAA,IACf,CAAC;AAAA,EACH;AACA,QAAM,gBAAgB,MAAM;AAC1B,QAAI;AACJ,QAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACnD,sBAAgB,OAAO,OAAO,OAAO,aAAW,QAAQ,UAAU,SAAS,qBAAqB,CAAC,EAAE,CAAC;AAAA,IACtG,OAAO;AACL,sBAAgB,OAAO,OAAO,OAAO,WAAW;AAAA,IAClD;AACA,QAAI,CAAC,cAAe,QAAO;AAC3B,UAAM,oBAAoB,SAAS,cAAc,aAAa,sBAAsB,GAAG,EAAE;AACzF,WAAO;AAAA,EACT;AACA,QAAM,MAAM,gBAAc;AACxB,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,yBAAqB,GAAG;AACxB,iBAAa;AACb,QAAI,QAAQ,OAAO,eAAe,cAAc,OAAO,OAAO,SAAS,QAAQ;AAC/E,yBAAqB,OAAO,OAAO,SAAS;AAC5C,2BAAuB,OAAO,OAAO,SAAS;AAC9C,UAAM,oBAAoB,cAAc;AACxC,QAAI,CAAC,OAAO,MAAM,iBAAiB,KAAK,oBAAoB,KAAK,OAAO,eAAe,aAAa;AAClG,cAAQ;AACR,2BAAqB;AACrB,6BAAuB;AAAA,IACzB;AACA,uBAAmB;AACnB,UAAM,QAAQ,OAAO,OAAO;AAC5B,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,UAAU,OAAO,UAAW;AACjC,UAAI,OAAO,OAAO,SAAS,kBAAkB;AAC3C,YAAI,CAAC,OAAO,eAAe,OAAO,OAAO,QAAQ,OAAO,OAAO,QAAQ;AACrE,iBAAO,UAAU,OAAO,MAAM,IAAI;AAClC,eAAK,UAAU;AAAA,QACjB,WAAW,CAAC,OAAO,OAAO,SAAS,iBAAiB;AAClD,iBAAO,QAAQ,OAAO,OAAO,SAAS,GAAG,OAAO,MAAM,IAAI;AAC1D,eAAK,UAAU;AAAA,QACjB;AAAA,MACF,OAAO;AACL,YAAI,CAAC,OAAO,SAAS,OAAO,OAAO,QAAQ,OAAO,OAAO,QAAQ;AAC/D,iBAAO,UAAU,OAAO,MAAM,IAAI;AAClC,eAAK,UAAU;AAAA,QACjB,WAAW,CAAC,OAAO,OAAO,SAAS,iBAAiB;AAClD,iBAAO,QAAQ,GAAG,OAAO,MAAM,IAAI;AACnC,eAAK,UAAU;AAAA,QACjB;AAAA,MACF;AACA,UAAI,OAAO,OAAO,SAAS;AACzB,6BAAoB,oBAAI,KAAK,GAAE,QAAQ;AACvC,8BAAsB,MAAM;AAC1B,cAAI;AAAA,QACN,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,QAAQ,GAAG;AACb,mBAAa,OAAO;AACpB,gBAAU,WAAW,MAAM;AACzB,gBAAQ;AAAA,MACV,GAAG,KAAK;AAAA,IACV,OAAO;AACL,4BAAsB,MAAM;AAC1B,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAGA,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,MAAM;AAClB,WAAO,SAAS,UAAU;AAC1B,QAAI;AACJ,SAAK,eAAe;AAAA,EACtB;AACA,QAAM,OAAO,MAAM;AACjB,WAAO,SAAS,UAAU;AAC1B,iBAAa,OAAO;AACpB,yBAAqB,GAAG;AACxB,SAAK,cAAc;AAAA,EACrB;AACA,QAAM,QAAQ,CAAC,UAAU,UAAU;AACjC,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,iBAAa,OAAO;AACpB,QAAI,CAAC,UAAU;AACb,4BAAsB;AAAA,IACxB;AACA,UAAM,UAAU,MAAM;AACpB,WAAK,eAAe;AACpB,UAAI,OAAO,OAAO,SAAS,mBAAmB;AAC5C,eAAO,UAAU,iBAAiB,iBAAiB,eAAe;AAAA,MACpE,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,SAAS,SAAS;AACzB,QAAI,OAAO;AACT,UAAI,cAAc;AAChB,2BAAmB,OAAO,OAAO,SAAS;AAAA,MAC5C;AACA,qBAAe;AACf,cAAQ;AACR;AAAA,IACF;AACA,UAAM,QAAQ,oBAAoB,OAAO,OAAO,SAAS;AACzD,uBAAmB,UAAS,oBAAI,KAAK,GAAE,QAAQ,IAAI;AACnD,QAAI,OAAO,SAAS,mBAAmB,KAAK,CAAC,OAAO,OAAO,KAAM;AACjE,QAAI,mBAAmB,EAAG,oBAAmB;AAC7C,YAAQ;AAAA,EACV;AACA,QAAM,SAAS,MAAM;AACnB,QAAI,OAAO,SAAS,mBAAmB,KAAK,CAAC,OAAO,OAAO,QAAQ,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AACjH,yBAAoB,oBAAI,KAAK,GAAE,QAAQ;AACvC,QAAI,qBAAqB;AACvB,4BAAsB;AACtB,UAAI,gBAAgB;AAAA,IACtB,OAAO;AACL,UAAI;AAAA,IACN;AACA,WAAO,SAAS,SAAS;AACzB,SAAK,gBAAgB;AAAA,EACvB;AACA,QAAM,qBAAqB,MAAM;AAC/B,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,UAAME,YAAWC,aAAY;AAC7B,QAAID,UAAS,oBAAoB,UAAU;AACzC,4BAAsB;AACtB,YAAM,IAAI;AAAA,IACZ;AACA,QAAIA,UAAS,oBAAoB,WAAW;AAC1C,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,iBAAiB,OAAK;AAC1B,QAAI,EAAE,gBAAgB,QAAS;AAC/B,0BAAsB;AACtB,QAAI,OAAO,aAAa,OAAO,SAAS,OAAQ;AAChD,UAAM,IAAI;AAAA,EACZ;AACA,QAAM,iBAAiB,OAAK;AAC1B,QAAI,EAAE,gBAAgB,QAAS;AAC/B,QAAI,OAAO,SAAS,QAAQ;AAC1B,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,oBAAoB,MAAM;AAC9B,QAAI,OAAO,OAAO,SAAS,mBAAmB;AAC5C,aAAO,GAAG,iBAAiB,gBAAgB,cAAc;AACzD,aAAO,GAAG,iBAAiB,gBAAgB,cAAc;AAAA,IAC3D;AAAA,EACF;AACA,QAAM,oBAAoB,MAAM;AAC9B,WAAO,GAAG,oBAAoB,gBAAgB,cAAc;AAC5D,WAAO,GAAG,oBAAoB,gBAAgB,cAAc;AAAA,EAC9D;AACA,QAAM,uBAAuB,MAAM;AACjC,UAAMA,YAAWC,aAAY;AAC7B,IAAAD,UAAS,iBAAiB,oBAAoB,kBAAkB;AAAA,EAClE;AACA,QAAM,uBAAuB,MAAM;AACjC,UAAMA,YAAWC,aAAY;AAC7B,IAAAD,UAAS,oBAAoB,oBAAoB,kBAAkB;AAAA,EACrE;AACA,KAAG,QAAQ,MAAM;AACf,QAAI,OAAO,OAAO,SAAS,SAAS;AAClC,wBAAkB;AAClB,2BAAqB;AACrB,2BAAoB,oBAAI,KAAK,GAAE,QAAQ;AACvC,YAAM;AAAA,IACR;AAAA,EACF,CAAC;AACD,KAAG,WAAW,MAAM;AAClB,sBAAkB;AAClB,yBAAqB;AACrB,QAAI,OAAO,SAAS,SAAS;AAC3B,WAAK;AAAA,IACP;AAAA,EACF,CAAC;AACD,KAAG,yBAAyB,CAAC,IAAI,OAAO,aAAa;AACnD,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,QAAI,YAAY,CAAC,OAAO,OAAO,SAAS,sBAAsB;AAC5D,YAAM,MAAM,IAAI;AAAA,IAClB,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF,CAAC;AACD,KAAG,mBAAmB,MAAM;AAC1B,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,QAAI,OAAO,OAAO,SAAS,sBAAsB;AAC/C,WAAK;AACL;AAAA,IACF;AACA,gBAAY;AACZ,oBAAgB;AAChB,0BAAsB;AACtB,wBAAoB,WAAW,MAAM;AACnC,4BAAsB;AACtB,sBAAgB;AAChB,YAAM,IAAI;AAAA,IACZ,GAAG,GAAG;AAAA,EACR,CAAC;AACD,KAAG,YAAY,MAAM;AACnB,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,WAAW,CAAC,UAAW;AAChE,iBAAa,iBAAiB;AAC9B,iBAAa,OAAO;AACpB,QAAI,OAAO,OAAO,SAAS,sBAAsB;AAC/C,sBAAgB;AAChB,kBAAY;AACZ;AAAA,IACF;AACA,QAAI,iBAAiB,OAAO,OAAO,QAAS,QAAO;AACnD,oBAAgB;AAChB,gBAAY;AAAA,EACd,CAAC;AACD,KAAG,eAAe,MAAM;AACtB,QAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,mBAAe;AAAA,EACjB,CAAC;AACD,SAAO,OAAO,OAAO,UAAU;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;;;ACtRA,SAAS,MAAM,MAAM;AACnB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,sBAAsB;AAAA,MACtB,kBAAkB;AAAA,MAClB,uBAAuB;AAAA,MACvB,sBAAsB;AAAA,IACxB;AAAA,EACF,CAAC;AACD,MAAI,cAAc;AAClB,MAAI,gBAAgB;AACpB,SAAO,SAAS;AAAA,IACd,QAAQ;AAAA,EACV;AACA,WAAS,eAAe;AACtB,UAAM,eAAe,OAAO,OAAO;AACnC,QAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,UAAM,eAAe,aAAa;AAClC,UAAM,eAAe,aAAa;AAClC,QAAI,gBAAgB,aAAa,UAAU,SAAS,OAAO,OAAO,OAAO,qBAAqB,EAAG;AACjG,QAAI,OAAO,iBAAiB,eAAe,iBAAiB,KAAM;AAClE,QAAI;AACJ,QAAI,aAAa,OAAO,MAAM;AAC5B,qBAAe,SAAS,aAAa,aAAa,aAAa,yBAAyB,GAAG,EAAE;AAAA,IAC/F,OAAO;AACL,qBAAe;AAAA,IACjB;AACA,QAAI,OAAO,OAAO,MAAM;AACtB,aAAO,YAAY,YAAY;AAAA,IACjC,OAAO;AACL,aAAO,QAAQ,YAAY;AAAA,IAC7B;AAAA,EACF;AACA,WAAS,OAAO;AACd,UAAM;AAAA,MACJ,QAAQ;AAAA,IACV,IAAI,OAAO;AACX,QAAI,YAAa,QAAO;AACxB,kBAAc;AACd,UAAM,cAAc,OAAO;AAC3B,QAAI,aAAa,kBAAkB,aAAa;AAC9C,aAAO,OAAO,SAAS,aAAa;AACpC,aAAO,OAAO,OAAO,OAAO,OAAO,gBAAgB;AAAA,QACjD,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,MACvB,CAAC;AACD,aAAO,OAAO,OAAO,OAAO,OAAO,QAAQ;AAAA,QACzC,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,MACvB,CAAC;AACD,aAAO,OAAO,OAAO,OAAO;AAAA,IAC9B,WAAWE,UAAS,aAAa,MAAM,GAAG;AACxC,YAAM,qBAAqB,OAAO,OAAO,CAAC,GAAG,aAAa,MAAM;AAChE,aAAO,OAAO,oBAAoB;AAAA,QAChC,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,MACvB,CAAC;AACD,aAAO,OAAO,SAAS,IAAI,YAAY,kBAAkB;AACzD,sBAAgB;AAAA,IAClB;AACA,WAAO,OAAO,OAAO,GAAG,UAAU,IAAI,OAAO,OAAO,OAAO,oBAAoB;AAC/E,WAAO,OAAO,OAAO,GAAG,OAAO,YAAY;AAC3C,WAAO;AAAA,EACT;AACA,WAASC,QAAO,SAAS;AACvB,UAAM,eAAe,OAAO,OAAO;AACnC,QAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,UAAM,gBAAgB,aAAa,OAAO,kBAAkB,SAAS,aAAa,qBAAqB,IAAI,aAAa,OAAO;AAG/H,QAAI,mBAAmB;AACvB,UAAM,mBAAmB,OAAO,OAAO,OAAO;AAC9C,QAAI,OAAO,OAAO,gBAAgB,KAAK,CAAC,OAAO,OAAO,gBAAgB;AACpE,yBAAmB,OAAO,OAAO;AAAA,IACnC;AACA,QAAI,CAAC,OAAO,OAAO,OAAO,sBAAsB;AAC9C,yBAAmB;AAAA,IACrB;AACA,uBAAmB,KAAK,MAAM,gBAAgB;AAC9C,iBAAa,OAAO,QAAQ,aAAW,QAAQ,UAAU,OAAO,gBAAgB,CAAC;AACjF,QAAI,aAAa,OAAO,QAAQ,aAAa,OAAO,WAAW,aAAa,OAAO,QAAQ,SAAS;AAClG,eAAS,IAAI,GAAG,IAAI,kBAAkB,KAAK,GAAG;AAC5C,wBAAgB,aAAa,UAAU,6BAA6B,OAAO,YAAY,CAAC,IAAI,EAAE,QAAQ,aAAW;AAC/G,kBAAQ,UAAU,IAAI,gBAAgB;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,eAAS,IAAI,GAAG,IAAI,kBAAkB,KAAK,GAAG;AAC5C,YAAI,aAAa,OAAO,OAAO,YAAY,CAAC,GAAG;AAC7C,uBAAa,OAAO,OAAO,YAAY,CAAC,EAAE,UAAU,IAAI,gBAAgB;AAAA,QAC1E;AAAA,MACF;AAAA,IACF;AACA,UAAM,mBAAmB,OAAO,OAAO,OAAO;AAC9C,UAAM,YAAY,oBAAoB,CAAC,aAAa,OAAO;AAC3D,QAAI,OAAO,cAAc,aAAa,aAAa,WAAW;AAC5D,YAAM,qBAAqB,aAAa;AACxC,UAAI;AACJ,UAAI;AACJ,UAAI,aAAa,OAAO,MAAM;AAC5B,cAAM,iBAAiB,aAAa,OAAO,OAAO,aAAW,QAAQ,aAAa,yBAAyB,MAAM,GAAG,OAAO,SAAS,EAAE,EAAE,CAAC;AACzI,yBAAiB,aAAa,OAAO,QAAQ,cAAc;AAC3D,oBAAY,OAAO,cAAc,OAAO,gBAAgB,SAAS;AAAA,MACnE,OAAO;AACL,yBAAiB,OAAO;AACxB,oBAAY,iBAAiB,OAAO,gBAAgB,SAAS;AAAA,MAC/D;AACA,UAAI,WAAW;AACb,0BAAkB,cAAc,SAAS,mBAAmB,KAAK;AAAA,MACnE;AACA,UAAI,aAAa,wBAAwB,aAAa,qBAAqB,QAAQ,cAAc,IAAI,GAAG;AACtG,YAAI,aAAa,OAAO,gBAAgB;AACtC,cAAI,iBAAiB,oBAAoB;AACvC,6BAAiB,iBAAiB,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,UACpE,OAAO;AACL,6BAAiB,iBAAiB,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,UACpE;AAAA,QACF,WAAW,iBAAiB,sBAAsB,aAAa,OAAO,mBAAmB,EAAG;AAC5F,qBAAa,QAAQ,gBAAgB,UAAU,IAAI,MAAS;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACA,KAAG,cAAc,MAAM;AACrB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,OAAO;AACX,QAAI,CAAC,UAAU,CAAC,OAAO,OAAQ;AAC/B,QAAI,OAAO,OAAO,WAAW,YAAY,OAAO,kBAAkB,aAAa;AAC7E,YAAMC,YAAWC,aAAY;AAC7B,YAAM,0BAA0B,MAAM;AACpC,cAAM,gBAAgB,OAAO,OAAO,WAAW,WAAWD,UAAS,cAAc,OAAO,MAAM,IAAI,OAAO;AACzG,YAAI,iBAAiB,cAAc,QAAQ;AACzC,iBAAO,SAAS,cAAc;AAC9B,eAAK;AACL,UAAAD,QAAO,IAAI;AAAA,QACb,WAAW,eAAe;AACxB,gBAAM,iBAAiB,OAAK;AAC1B,mBAAO,SAAS,EAAE,OAAO,CAAC;AAC1B,0BAAc,oBAAoB,QAAQ,cAAc;AACxD,iBAAK;AACL,YAAAA,QAAO,IAAI;AACX,mBAAO,OAAO,OAAO;AACrB,mBAAO,OAAO;AAAA,UAChB;AACA,wBAAc,iBAAiB,QAAQ,cAAc;AAAA,QACvD;AACA,eAAO;AAAA,MACT;AACA,YAAM,yBAAyB,MAAM;AACnC,YAAI,OAAO,UAAW;AACtB,cAAM,gBAAgB,wBAAwB;AAC9C,YAAI,CAAC,eAAe;AAClB,gCAAsB,sBAAsB;AAAA,QAC9C;AAAA,MACF;AACA,4BAAsB,sBAAsB;AAAA,IAC9C,OAAO;AACL,WAAK;AACL,MAAAA,QAAO,IAAI;AAAA,IACb;AAAA,EACF,CAAC;AACD,KAAG,4CAA4C,MAAM;AACnD,IAAAA,QAAO;AAAA,EACT,CAAC;AACD,KAAG,iBAAiB,CAAC,IAAI,aAAa;AACpC,UAAM,eAAe,OAAO,OAAO;AACnC,QAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,iBAAa,cAAc,QAAQ;AAAA,EACrC,CAAC;AACD,KAAG,iBAAiB,MAAM;AACxB,UAAM,eAAe,OAAO,OAAO;AACnC,QAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,QAAI,eAAe;AACjB,mBAAa,QAAQ;AAAA,IACvB;AAAA,EACF,CAAC;AACD,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B;AAAA,IACA,QAAAA;AAAA,EACF,CAAC;AACH;;;AC3LA,SAAS,SAAS,MAAM;AACtB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,UAAU;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,uBAAuB;AAAA,MACvB,QAAQ;AAAA,MACR,iBAAiB;AAAA,IACnB;AAAA,EACF,CAAC;AACD,WAASG,gBAAe;AACtB,QAAI,OAAO,OAAO,QAAS;AAC3B,UAAMC,aAAY,OAAO,aAAa;AACtC,WAAO,aAAaA,UAAS;AAC7B,WAAO,cAAc,CAAC;AACtB,WAAO,gBAAgB,WAAW,SAAS;AAC3C,WAAO,SAAS,WAAW;AAAA,MACzB,YAAY,OAAO,MAAM,OAAO,YAAY,CAAC,OAAO;AAAA,IACtD,CAAC;AAAA,EACH;AACA,WAASC,eAAc;AACrB,QAAI,OAAO,OAAO,QAAS;AAC3B,UAAM;AAAA,MACJ,iBAAiB;AAAA,MACjB;AAAA,IACF,IAAI;AAEJ,QAAI,KAAK,WAAW,WAAW,GAAG;AAChC,WAAK,WAAW,KAAK;AAAA,QACnB,UAAU,QAAQ,OAAO,aAAa,IAAI,WAAW,QAAQ;AAAA,QAC7D,MAAM,KAAK;AAAA,MACb,CAAC;AAAA,IACH;AACA,SAAK,WAAW,KAAK;AAAA,MACnB,UAAU,QAAQ,OAAO,aAAa,IAAI,aAAa,UAAU;AAAA,MACjE,MAAMC,KAAI;AAAA,IACZ,CAAC;AAAA,EACH;AACA,WAASC,YAAW,OAAO;AACzB,QAAI;AAAA,MACF;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,OAAO,QAAS;AAC3B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA,iBAAiB;AAAA,IACnB,IAAI;AAEJ,UAAM,eAAeD,KAAI;AACzB,UAAM,WAAW,eAAe,KAAK;AACrC,QAAI,aAAa,CAAC,OAAO,aAAa,GAAG;AACvC,aAAO,QAAQ,OAAO,WAAW;AACjC;AAAA,IACF;AACA,QAAI,aAAa,CAAC,OAAO,aAAa,GAAG;AACvC,UAAI,OAAO,OAAO,SAAS,SAAS,QAAQ;AAC1C,eAAO,QAAQ,SAAS,SAAS,CAAC;AAAA,MACpC,OAAO;AACL,eAAO,QAAQ,OAAO,OAAO,SAAS,CAAC;AAAA,MACzC;AACA;AAAA,IACF;AACA,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,cAAM,gBAAgB,KAAK,WAAW,IAAI;AAC1C,cAAM,gBAAgB,KAAK,WAAW,IAAI;AAC1C,cAAM,WAAW,cAAc,WAAW,cAAc;AACxD,cAAM,OAAO,cAAc,OAAO,cAAc;AAChD,eAAO,WAAW,WAAW;AAC7B,eAAO,YAAY;AACnB,YAAI,KAAK,IAAI,OAAO,QAAQ,IAAI,OAAO,SAAS,iBAAiB;AAC/D,iBAAO,WAAW;AAAA,QACpB;AAGA,YAAI,OAAO,OAAOA,KAAI,IAAI,cAAc,OAAO,KAAK;AAClD,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,OAAO;AACL,eAAO,WAAW;AAAA,MACpB;AACA,aAAO,YAAY,OAAO,SAAS;AACnC,WAAK,WAAW,SAAS;AACzB,UAAI,mBAAmB,MAAO,OAAO,SAAS;AAC9C,YAAM,mBAAmB,OAAO,WAAW;AAC3C,UAAI,cAAc,OAAO,YAAY;AACrC,UAAI,IAAK,eAAc,CAAC;AACxB,UAAI,WAAW;AACf,UAAI;AACJ,YAAM,eAAe,KAAK,IAAI,OAAO,QAAQ,IAAI,KAAK,OAAO,SAAS;AACtE,UAAI;AACJ,UAAI,cAAc,OAAO,aAAa,GAAG;AACvC,YAAI,OAAO,SAAS,gBAAgB;AAClC,cAAI,cAAc,OAAO,aAAa,IAAI,CAAC,cAAc;AACvD,0BAAc,OAAO,aAAa,IAAI;AAAA,UACxC;AACA,gCAAsB,OAAO,aAAa;AAC1C,qBAAW;AACX,eAAK,sBAAsB;AAAA,QAC7B,OAAO;AACL,wBAAc,OAAO,aAAa;AAAA,QACpC;AACA,YAAI,OAAO,QAAQ,OAAO,eAAgB,gBAAe;AAAA,MAC3D,WAAW,cAAc,OAAO,aAAa,GAAG;AAC9C,YAAI,OAAO,SAAS,gBAAgB;AAClC,cAAI,cAAc,OAAO,aAAa,IAAI,cAAc;AACtD,0BAAc,OAAO,aAAa,IAAI;AAAA,UACxC;AACA,gCAAsB,OAAO,aAAa;AAC1C,qBAAW;AACX,eAAK,sBAAsB;AAAA,QAC7B,OAAO;AACL,wBAAc,OAAO,aAAa;AAAA,QACpC;AACA,YAAI,OAAO,QAAQ,OAAO,eAAgB,gBAAe;AAAA,MAC3D,WAAW,OAAO,SAAS,QAAQ;AACjC,YAAI;AACJ,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAC3C,cAAI,SAAS,CAAC,IAAI,CAAC,aAAa;AAC9B,wBAAY;AACZ;AAAA,UACF;AAAA,QACF;AACA,YAAI,KAAK,IAAI,SAAS,SAAS,IAAI,WAAW,IAAI,KAAK,IAAI,SAAS,YAAY,CAAC,IAAI,WAAW,KAAK,OAAO,mBAAmB,QAAQ;AACrI,wBAAc,SAAS,SAAS;AAAA,QAClC,OAAO;AACL,wBAAc,SAAS,YAAY,CAAC;AAAA,QACtC;AACA,sBAAc,CAAC;AAAA,MACjB;AACA,UAAI,cAAc;AAChB,aAAK,iBAAiB,MAAM;AAC1B,iBAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,aAAa,GAAG;AACzB,YAAI,KAAK;AACP,6BAAmB,KAAK,KAAK,CAAC,cAAc,OAAO,aAAa,OAAO,QAAQ;AAAA,QACjF,OAAO;AACL,6BAAmB,KAAK,KAAK,cAAc,OAAO,aAAa,OAAO,QAAQ;AAAA,QAChF;AACA,YAAI,OAAO,SAAS,QAAQ;AAQ1B,gBAAM,eAAe,KAAK,KAAK,MAAM,CAAC,cAAc,eAAe,OAAO,SAAS;AACnF,gBAAM,mBAAmB,OAAO,gBAAgB,OAAO,WAAW;AAClE,cAAI,eAAe,kBAAkB;AACnC,+BAAmB,OAAO;AAAA,UAC5B,WAAW,eAAe,IAAI,kBAAkB;AAC9C,+BAAmB,OAAO,QAAQ;AAAA,UACpC,OAAO;AACL,+BAAmB,OAAO,QAAQ;AAAA,UACpC;AAAA,QACF;AAAA,MACF,WAAW,OAAO,SAAS,QAAQ;AACjC,eAAO,eAAe;AACtB;AAAA,MACF;AACA,UAAI,OAAO,SAAS,kBAAkB,UAAU;AAC9C,eAAO,eAAe,mBAAmB;AACzC,eAAO,cAAc,gBAAgB;AACrC,eAAO,aAAa,WAAW;AAC/B,eAAO,gBAAgB,MAAM,OAAO,cAAc;AAClD,eAAO,YAAY;AACnB,6BAAqB,WAAW,MAAM;AACpC,cAAI,CAAC,UAAU,OAAO,aAAa,CAAC,KAAK,oBAAqB;AAC9D,eAAK,gBAAgB;AACrB,iBAAO,cAAc,OAAO,KAAK;AACjC,qBAAW,MAAM;AACf,mBAAO,aAAa,mBAAmB;AACvC,iCAAqB,WAAW,MAAM;AACpC,kBAAI,CAAC,UAAU,OAAO,UAAW;AACjC,qBAAO,cAAc;AAAA,YACvB,CAAC;AAAA,UACH,GAAG,CAAC;AAAA,QACN,CAAC;AAAA,MACH,WAAW,OAAO,UAAU;AAC1B,aAAK,4BAA4B;AACjC,eAAO,eAAe,WAAW;AACjC,eAAO,cAAc,gBAAgB;AACrC,eAAO,aAAa,WAAW;AAC/B,eAAO,gBAAgB,MAAM,OAAO,cAAc;AAClD,YAAI,CAAC,OAAO,WAAW;AACrB,iBAAO,YAAY;AACnB,+BAAqB,WAAW,MAAM;AACpC,gBAAI,CAAC,UAAU,OAAO,UAAW;AACjC,mBAAO,cAAc;AAAA,UACvB,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,eAAO,eAAe,WAAW;AAAA,MACnC;AACA,aAAO,kBAAkB;AACzB,aAAO,oBAAoB;AAAA,IAC7B,WAAW,OAAO,SAAS,QAAQ;AACjC,aAAO,eAAe;AACtB;AAAA,IACF,WAAW,OAAO,UAAU;AAC1B,WAAK,4BAA4B;AAAA,IACnC;AACA,QAAI,CAAC,OAAO,SAAS,YAAY,YAAY,OAAO,cAAc;AAChE,aAAO,eAAe;AACtB,aAAO,kBAAkB;AACzB,aAAO,oBAAoB;AAAA,IAC7B;AAAA,EACF;AACA,SAAO,OAAO,QAAQ;AAAA,IACpB,UAAU;AAAA,MACR,cAAAH;AAAA,MACA,aAAAE;AAAA,MACA,YAAAE;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ACzOA,SAAS,KAAK,MAAM;AAClB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AACD,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM,kBAAkB,MAAM;AAC5B,QAAI,eAAe,OAAO,OAAO;AACjC,QAAI,OAAO,iBAAiB,YAAY,aAAa,QAAQ,GAAG,KAAK,GAAG;AACtE,qBAAe,WAAW,aAAa,QAAQ,KAAK,EAAE,CAAC,IAAI,MAAM,OAAO;AAAA,IAC1E,WAAW,OAAO,iBAAiB,UAAU;AAC3C,qBAAe,WAAW,YAAY;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AACA,QAAM,aAAa,kBAAgB;AACjC,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,OAAO;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO,OAAO;AAClB,qBAAiB,KAAK,MAAM,eAAe,IAAI;AAC/C,QAAI,KAAK,MAAM,eAAe,IAAI,MAAM,eAAe,MAAM;AAC3D,+BAAyB;AAAA,IAC3B,OAAO;AACL,+BAAyB,KAAK,KAAK,eAAe,IAAI,IAAI;AAAA,IAC5D;AACA,QAAI,kBAAkB,UAAU,SAAS,OAAO;AAC9C,+BAAyB,KAAK,IAAI,wBAAwB,gBAAgB,IAAI;AAAA,IAChF;AACA,mBAAe,yBAAyB;AAAA,EAC1C;AACA,QAAM,cAAc,CAAC,GAAGC,QAAO,cAAc,sBAAsB;AACjE,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,OAAO;AACX,UAAM,eAAe,gBAAgB;AACrC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO,OAAO;AAElB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,SAAS,SAAS,iBAAiB,GAAG;AACxC,YAAM,aAAa,KAAK,MAAM,KAAK,iBAAiB,KAAK;AACzD,YAAM,oBAAoB,IAAI,OAAO,iBAAiB;AACtD,YAAM,iBAAiB,eAAe,IAAI,iBAAiB,KAAK,IAAI,KAAK,MAAM,eAAe,aAAa,OAAO,kBAAkB,IAAI,GAAG,cAAc;AACzJ,YAAM,KAAK,MAAM,oBAAoB,cAAc;AACnD,eAAS,oBAAoB,MAAM,iBAAiB,aAAa;AACjE,2BAAqB,SAAS,MAAM,yBAAyB;AAC7D,MAAAA,OAAM,MAAM,QAAQ;AAAA,IACtB,WAAW,SAAS,UAAU;AAC5B,eAAS,KAAK,MAAM,IAAI,IAAI;AAC5B,YAAM,IAAI,SAAS;AACnB,UAAI,SAAS,kBAAkB,WAAW,kBAAkB,QAAQ,OAAO,GAAG;AAC5E,eAAO;AACP,YAAI,OAAO,MAAM;AACf,gBAAM;AACN,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,KAAK,MAAM,IAAI,YAAY;AACjC,eAAS,IAAI,MAAM;AAAA,IACrB;AACA,IAAAA,OAAM,MAAM;AACZ,IAAAA,OAAM,SAAS;AACf,IAAAA,OAAM,MAAM,kBAAkB,YAAY,CAAC,IAAI,QAAQ,IAAI,gBAAgB,GAAG,YAAY,OAAO;AAAA,EACnG;AACA,QAAM,oBAAoB,CAAC,WAAW,UAAU,sBAAsB;AACpE,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,UAAM,eAAe,gBAAgB;AACrC,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,OAAO,OAAO;AAClB,WAAO,eAAe,YAAY,gBAAgB;AAClD,WAAO,cAAc,KAAK,KAAK,OAAO,cAAc,IAAI,IAAI;AAC5D,WAAO,UAAU,MAAM,kBAAkB,OAAO,CAAC,IAAI,GAAG,OAAO,cAAc,YAAY;AACzF,QAAI,gBAAgB;AAClB,YAAM,gBAAgB,CAAC;AACvB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAC3C,YAAI,iBAAiB,SAAS,CAAC;AAC/B,YAAI,aAAc,kBAAiB,KAAK,MAAM,cAAc;AAC5D,YAAI,SAAS,CAAC,IAAI,OAAO,cAAc,SAAS,CAAC,EAAG,eAAc,KAAK,cAAc;AAAA,MACvF;AACA,eAAS,OAAO,GAAG,SAAS,MAAM;AAClC,eAAS,KAAK,GAAG,aAAa;AAAA,IAChC;AAAA,EACF;AACA,QAAMC,UAAS,MAAM;AACnB,kBAAc,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,OAAO;AAAA,EAChE;AACA,QAAM,WAAW,MAAM;AACrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,aAAa,OAAO,QAAQ,OAAO,KAAK,OAAO;AACrD,QAAI,eAAe,CAAC,YAAY;AAC9B,SAAG,UAAU,OAAO,GAAG,OAAO,sBAAsB,QAAQ,GAAG,OAAO,sBAAsB,aAAa;AACzG,uBAAiB;AACjB,aAAO,qBAAqB;AAAA,IAC9B,WAAW,CAAC,eAAe,YAAY;AACrC,SAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,MAAM;AACvD,UAAI,OAAO,KAAK,SAAS,UAAU;AACjC,WAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,aAAa;AAAA,MAChE;AACA,aAAO,qBAAqB;AAAA,IAC9B;AACA,kBAAc;AAAA,EAChB;AACA,KAAG,QAAQA,OAAM;AACjB,KAAG,UAAU,QAAQ;AACrB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACvIA,SAAS,YAAY,QAAQ;AAC3B,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,MAAM;AACf,WAAO,YAAY;AAAA,EACrB;AACA,QAAM,gBAAgB,aAAW;AAC/B,QAAI,OAAO,YAAY,UAAU;AAC/B,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,YAAY;AACpB,eAAS,OAAO,QAAQ,SAAS,CAAC,CAAC;AACnC,cAAQ,YAAY;AAAA,IACtB,OAAO;AACL,eAAS,OAAO,OAAO;AAAA,IACzB;AAAA,EACF;AACA,MAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAI,OAAO,CAAC,EAAG,eAAc,OAAO,CAAC,CAAC;AAAA,IACxC;AAAA,EACF,OAAO;AACL,kBAAc,MAAM;AAAA,EACtB;AACA,SAAO,aAAa;AACpB,MAAI,OAAO,MAAM;AACf,WAAO,WAAW;AAAA,EACpB;AACA,MAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,WAAO,OAAO;AAAA,EAChB;AACF;AAEA,SAAS,aAAa,QAAQ;AAC5B,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,OAAO,MAAM;AACf,WAAO,YAAY;AAAA,EACrB;AACA,MAAI,iBAAiB,cAAc;AACnC,QAAM,iBAAiB,aAAW;AAChC,QAAI,OAAO,YAAY,UAAU;AAC/B,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,YAAY;AACpB,eAAS,QAAQ,QAAQ,SAAS,CAAC,CAAC;AACpC,cAAQ,YAAY;AAAA,IACtB,OAAO;AACL,eAAS,QAAQ,OAAO;AAAA,IAC1B;AAAA,EACF;AACA,MAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAI,OAAO,CAAC,EAAG,gBAAe,OAAO,CAAC,CAAC;AAAA,IACzC;AACA,qBAAiB,cAAc,OAAO;AAAA,EACxC,OAAO;AACL,mBAAe,MAAM;AAAA,EACvB;AACA,SAAO,aAAa;AACpB,MAAI,OAAO,MAAM;AACf,WAAO,WAAW;AAAA,EACpB;AACA,MAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,WAAO,OAAO;AAAA,EAChB;AACA,SAAO,QAAQ,gBAAgB,GAAG,KAAK;AACzC;AAEA,SAAS,SAAS,OAAO,QAAQ;AAC/B,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,oBAAoB;AACxB,MAAI,OAAO,MAAM;AACf,yBAAqB,OAAO;AAC5B,WAAO,YAAY;AACnB,WAAO,aAAa;AAAA,EACtB;AACA,QAAM,aAAa,OAAO,OAAO;AACjC,MAAI,SAAS,GAAG;AACd,WAAO,aAAa,MAAM;AAC1B;AAAA,EACF;AACA,MAAI,SAAS,YAAY;AACvB,WAAO,YAAY,MAAM;AACzB;AAAA,EACF;AACA,MAAI,iBAAiB,oBAAoB,QAAQ,oBAAoB,IAAI;AACzE,QAAM,eAAe,CAAC;AACtB,WAAS,IAAI,aAAa,GAAG,KAAK,OAAO,KAAK,GAAG;AAC/C,UAAM,eAAe,OAAO,OAAO,CAAC;AACpC,iBAAa,OAAO;AACpB,iBAAa,QAAQ,YAAY;AAAA,EACnC;AACA,MAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAI,OAAO,CAAC,EAAG,UAAS,OAAO,OAAO,CAAC,CAAC;AAAA,IAC1C;AACA,qBAAiB,oBAAoB,QAAQ,oBAAoB,OAAO,SAAS;AAAA,EACnF,OAAO;AACL,aAAS,OAAO,MAAM;AAAA,EACxB;AACA,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,aAAS,OAAO,aAAa,CAAC,CAAC;AAAA,EACjC;AACA,SAAO,aAAa;AACpB,MAAI,OAAO,MAAM;AACf,WAAO,WAAW;AAAA,EACpB;AACA,MAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,OAAO,MAAM;AACf,WAAO,QAAQ,iBAAiB,OAAO,cAAc,GAAG,KAAK;AAAA,EAC/D,OAAO;AACL,WAAO,QAAQ,gBAAgB,GAAG,KAAK;AAAA,EACzC;AACF;AAEA,SAAS,YAAY,eAAe;AAClC,QAAM,SAAS;AACf,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,oBAAoB;AACxB,MAAI,OAAO,MAAM;AACf,yBAAqB,OAAO;AAC5B,WAAO,YAAY;AAAA,EACrB;AACA,MAAI,iBAAiB;AACrB,MAAI;AACJ,MAAI,OAAO,kBAAkB,YAAY,YAAY,eAAe;AAClE,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK,GAAG;AAChD,sBAAgB,cAAc,CAAC;AAC/B,UAAI,OAAO,OAAO,aAAa,EAAG,QAAO,OAAO,aAAa,EAAE,OAAO;AACtE,UAAI,gBAAgB,eAAgB,mBAAkB;AAAA,IACxD;AACA,qBAAiB,KAAK,IAAI,gBAAgB,CAAC;AAAA,EAC7C,OAAO;AACL,oBAAgB;AAChB,QAAI,OAAO,OAAO,aAAa,EAAG,QAAO,OAAO,aAAa,EAAE,OAAO;AACtE,QAAI,gBAAgB,eAAgB,mBAAkB;AACtD,qBAAiB,KAAK,IAAI,gBAAgB,CAAC;AAAA,EAC7C;AACA,SAAO,aAAa;AACpB,MAAI,OAAO,MAAM;AACf,WAAO,WAAW;AAAA,EACpB;AACA,MAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,OAAO,MAAM;AACf,WAAO,QAAQ,iBAAiB,OAAO,cAAc,GAAG,KAAK;AAAA,EAC/D,OAAO;AACL,WAAO,QAAQ,gBAAgB,GAAG,KAAK;AAAA,EACzC;AACF;AAEA,SAAS,kBAAkB;AACzB,QAAM,SAAS;AACf,QAAM,gBAAgB,CAAC;AACvB,WAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,KAAK,GAAG;AAChD,kBAAc,KAAK,CAAC;AAAA,EACtB;AACA,SAAO,YAAY,aAAa;AAClC;AAEA,SAAS,aAAa,MAAM;AAC1B,MAAI;AAAA,IACF;AAAA,EACF,IAAI;AACJ,SAAO,OAAO,QAAQ;AAAA,IACpB,aAAa,YAAY,KAAK,MAAM;AAAA,IACpC,cAAc,aAAa,KAAK,MAAM;AAAA,IACtC,UAAU,SAAS,KAAK,MAAM;AAAA,IAC9B,aAAa,YAAY,KAAK,MAAM;AAAA,IACpC,iBAAiB,gBAAgB,KAAK,MAAM;AAAA,EAC9C,CAAC;AACH;;;AC5LA,SAAS,WAAW,QAAQ;AAC1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAAC;AAAA,IACA,eAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,KAAG,cAAc,MAAM;AACrB,QAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,WAAO,WAAW,KAAK,GAAG,OAAO,OAAO,sBAAsB,GAAG,MAAM,EAAE;AACzE,QAAI,eAAe,YAAY,GAAG;AAChC,aAAO,WAAW,KAAK,GAAG,OAAO,OAAO,sBAAsB,IAAI;AAAA,IACpE;AACA,UAAM,wBAAwB,kBAAkB,gBAAgB,IAAI,CAAC;AACrE,WAAO,OAAO,OAAO,QAAQ,qBAAqB;AAClD,WAAO,OAAO,OAAO,gBAAgB,qBAAqB;AAAA,EAC5D,CAAC;AACD,KAAG,gBAAgB,MAAM;AACvB,QAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,IAAAD,cAAa;AAAA,EACf,CAAC;AACD,KAAG,iBAAiB,CAAC,IAAI,aAAa;AACpC,QAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,IAAAC,eAAc,QAAQ;AAAA,EACxB,CAAC;AACD,KAAG,iBAAiB,MAAM;AACxB,QAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,QAAI,iBAAiB;AACnB,UAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,aAAc;AAEzD,aAAO,OAAO,QAAQ,aAAW;AAC/B,gBAAQ,iBAAiB,8GAA8G,EAAE,QAAQ,cAAY,SAAS,OAAO,CAAC;AAAA,MAChL,CAAC;AAED,sBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACD,MAAI;AACJ,KAAG,iBAAiB,MAAM;AACxB,QAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,QAAI,CAAC,OAAO,OAAO,QAAQ;AACzB,+BAAyB;AAAA,IAC3B;AACA,0BAAsB,MAAM;AAC1B,UAAI,0BAA0B,OAAO,UAAU,OAAO,OAAO,QAAQ;AACnE,QAAAD,cAAa;AACb,iCAAyB;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;;;ACrDA,SAAS,aAAa,cAAc,SAAS;AAC3C,QAAM,cAAc,oBAAoB,OAAO;AAC/C,MAAI,gBAAgB,SAAS;AAC3B,gBAAY,MAAM,qBAAqB;AACvC,gBAAY,MAAM,6BAA6B,IAAI;AAAA,EACrD;AACA,SAAO;AACT;;;ACPA,SAAS,2BAA2B,MAAM;AACxC,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AACJ,QAAM,WAAW,QAAM;AACrB,QAAI,CAAC,GAAG,eAAe;AAErB,YAAME,SAAQ,OAAO,OAAO,OAAO,aAAW,QAAQ,cAAc,QAAQ,eAAe,GAAG,UAAU,EAAE,CAAC;AAC3G,aAAOA;AAAA,IACT;AACA,WAAO,GAAG;AAAA,EACZ;AACA,MAAI,OAAO,OAAO,oBAAoB,aAAa,GAAG;AACpD,QAAI,iBAAiB;AACrB,QAAI;AACJ,QAAI,WAAW;AACb,4BAAsB;AAAA,IACxB,OAAO;AACL,4BAAsB,kBAAkB,OAAO,iBAAe;AAC5D,cAAM,KAAK,YAAY,UAAU,SAAS,wBAAwB,IAAI,SAAS,WAAW,IAAI;AAC9F,eAAO,OAAO,cAAc,EAAE,MAAM;AAAA,MACtC,CAAC;AAAA,IACH;AACA,wBAAoB,QAAQ,QAAM;AAChC,2BAAqB,IAAI,MAAM;AAC7B,YAAI,eAAgB;AACpB,YAAI,CAAC,UAAU,OAAO,UAAW;AACjC,yBAAiB;AACjB,eAAO,YAAY;AACnB,cAAM,MAAM,IAAI,OAAO,YAAY,iBAAiB;AAAA,UAClD,SAAS;AAAA,UACT,YAAY;AAAA,QACd,CAAC;AACD,eAAO,UAAU,cAAc,GAAG;AAAA,MACpC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACxCA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,YAAY;AAAA,MACV,WAAW;AAAA,IACb;AAAA,EACF,CAAC;AACD,QAAMC,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAM,UAAU,OAAO,OAAO,CAAC;AAC/B,YAAM,SAAS,QAAQ;AACvB,UAAI,KAAK,CAAC;AACV,UAAI,CAAC,OAAO,OAAO,iBAAkB,OAAM,OAAO;AAClD,UAAI,KAAK;AACT,UAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,aAAK;AACL,aAAK;AAAA,MACP;AACA,YAAM,eAAe,OAAO,OAAO,WAAW,YAAY,KAAK,IAAI,IAAI,KAAK,IAAI,QAAQ,QAAQ,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,EAAE,GAAG,CAAC;AACtJ,YAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,eAAS,MAAM,UAAU;AACzB,eAAS,MAAM,YAAY,eAAe,EAAE,OAAO,EAAE;AAAA,IACvD;AAAA,EACF;AACA,QAAMC,iBAAgB,cAAY;AAChC,UAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,sBAAkB,QAAQ,QAAM;AAC9B,SAAG,MAAM,qBAAqB,GAAG,QAAQ;AAAA,IAC3C,CAAC;AACD,+BAA2B;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AACA,aAAW;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAAD;AAAA,IACA,eAAAC;AAAA,IACA,iBAAiB,OAAO;AAAA,MACtB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,kBAAkB,CAAC,OAAO,OAAO;AAAA,IACnC;AAAA,EACF,CAAC;AACH;;;AC5DA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,YAAY;AAAA,MACV,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,aAAa;AAAA,IACf;AAAA,EACF,CAAC;AACD,QAAM,qBAAqB,CAAC,SAAS,UAAU,iBAAiB;AAC9D,QAAI,eAAe,eAAe,QAAQ,cAAc,2BAA2B,IAAI,QAAQ,cAAc,0BAA0B;AACvI,QAAI,cAAc,eAAe,QAAQ,cAAc,4BAA4B,IAAI,QAAQ,cAAc,6BAA6B;AAC1I,QAAI,CAAC,cAAc;AACjB,qBAAe,cAAc,OAAO,gDAAgD,eAAe,SAAS,KAAK,GAAG,MAAM,GAAG,CAAC;AAC9H,cAAQ,OAAO,YAAY;AAAA,IAC7B;AACA,QAAI,CAAC,aAAa;AAChB,oBAAc,cAAc,OAAO,gDAAgD,eAAe,UAAU,QAAQ,GAAG,MAAM,GAAG,CAAC;AACjI,cAAQ,OAAO,WAAW;AAAA,IAC5B;AACA,QAAI,aAAc,cAAa,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;AACpE,QAAI,YAAa,aAAY,MAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AAAA,EACnE;AACA,QAAM,kBAAkB,MAAM;AAE5B,UAAM,eAAe,OAAO,aAAa;AACzC,WAAO,OAAO,QAAQ,aAAW;AAC/B,YAAM,WAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAC3D,yBAAmB,SAAS,UAAU,YAAY;AAAA,IACpD,CAAC;AAAA,EACH;AACA,QAAMC,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,MAAM;AAAA,MACN,SAAAC;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,eAAe,OAAO,aAAa;AACzC,UAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAC1D,QAAI,gBAAgB;AACpB,QAAI;AACJ,QAAI,OAAO,QAAQ;AACjB,UAAI,cAAc;AAChB,uBAAe,OAAO,UAAU,cAAc,qBAAqB;AACnE,YAAI,CAAC,cAAc;AACjB,yBAAe,cAAc,OAAO,oBAAoB;AACxD,iBAAO,UAAU,OAAO,YAAY;AAAA,QACtC;AACA,qBAAa,MAAM,SAAS,GAAG,WAAW;AAAA,MAC5C,OAAO;AACL,uBAAe,GAAG,cAAc,qBAAqB;AACrD,YAAI,CAAC,cAAc;AACjB,yBAAe,cAAc,OAAO,oBAAoB;AACxD,aAAG,OAAO,YAAY;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAM,UAAU,OAAO,CAAC;AACxB,UAAI,aAAa;AACjB,UAAI,WAAW;AACb,qBAAa,SAAS,QAAQ,aAAa,yBAAyB,GAAG,EAAE;AAAA,MAC3E;AACA,UAAI,aAAa,aAAa;AAC9B,UAAI,QAAQ,KAAK,MAAM,aAAa,GAAG;AACvC,UAAI,KAAK;AACP,qBAAa,CAAC;AACd,gBAAQ,KAAK,MAAM,CAAC,aAAa,GAAG;AAAA,MACtC;AACA,YAAM,WAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAC3D,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,aAAa,MAAM,GAAG;AACxB,aAAK,CAAC,QAAQ,IAAI;AAClB,aAAK;AAAA,MACP,YAAY,aAAa,KAAK,MAAM,GAAG;AACrC,aAAK;AACL,aAAK,CAAC,QAAQ,IAAI;AAAA,MACpB,YAAY,aAAa,KAAK,MAAM,GAAG;AACrC,aAAK,aAAa,QAAQ,IAAI;AAC9B,aAAK;AAAA,MACP,YAAY,aAAa,KAAK,MAAM,GAAG;AACrC,aAAK,CAAC;AACN,aAAK,IAAI,aAAa,aAAa,IAAI;AAAA,MACzC;AACA,UAAI,KAAK;AACP,aAAK,CAAC;AAAA,MACR;AACA,UAAI,CAAC,cAAc;AACjB,aAAK;AACL,aAAK;AAAA,MACP;AACA,YAAM,YAAY,WAAW,eAAe,IAAI,CAAC,UAAU,gBAAgB,eAAe,aAAa,CAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE;AAChJ,UAAI,YAAY,KAAK,WAAW,IAAI;AAClC,wBAAgB,aAAa,KAAK,WAAW;AAC7C,YAAI,IAAK,iBAAgB,CAAC,aAAa,KAAK,WAAW;AAAA,MACzD;AACA,cAAQ,MAAM,YAAY;AAC1B,UAAI,OAAO,cAAc;AACvB,2BAAmB,SAAS,UAAU,YAAY;AAAA,MACpD;AAAA,IACF;AACA,cAAU,MAAM,kBAAkB,YAAY,aAAa,CAAC;AAC5D,cAAU,MAAM,0BAA0B,IAAI,YAAY,aAAa,CAAC;AACxE,QAAI,OAAO,QAAQ;AACjB,UAAI,cAAc;AAChB,qBAAa,MAAM,YAAY,oBAAoB,cAAc,IAAI,OAAO,YAAY,OAAO,CAAC,cAAc,CAAC,0CAA0C,OAAO,WAAW;AAAA,MAC7K,OAAO;AACL,cAAM,cAAc,KAAK,IAAI,aAAa,IAAI,KAAK,MAAM,KAAK,IAAI,aAAa,IAAI,EAAE,IAAI;AACzF,cAAM,aAAa,OAAO,KAAK,IAAI,cAAc,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,KAAK,GAAG,IAAI;AACtH,cAAM,SAAS,OAAO;AACtB,cAAM,SAAS,OAAO,cAAc;AACpC,cAAM,SAAS,OAAO;AACtB,qBAAa,MAAM,YAAY,WAAW,MAAM,QAAQ,MAAM,sBAAsB,eAAe,IAAI,MAAM,OAAO,CAAC,eAAe,IAAI,MAAM;AAAA,MAChJ;AAAA,IACF;AACA,UAAM,WAAWA,SAAQ,YAAYA,SAAQ,cAAcA,SAAQ,qBAAqB,CAAC,aAAa,IAAI;AAC1G,cAAU,MAAM,YAAY,qBAAqB,OAAO,eAAe,OAAO,aAAa,IAAI,IAAI,aAAa,gBAAgB,OAAO,aAAa,IAAI,CAAC,gBAAgB,CAAC;AAC1K,cAAU,MAAM,YAAY,6BAA6B,GAAG,OAAO,IAAI;AAAA,EACzE;AACA,QAAMC,iBAAgB,cAAY;AAChC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,WAAO,QAAQ,aAAW;AACxB,cAAQ,MAAM,qBAAqB,GAAG,QAAQ;AAC9C,cAAQ,iBAAiB,8GAA8G,EAAE,QAAQ,WAAS;AACxJ,cAAM,MAAM,qBAAqB,GAAG,QAAQ;AAAA,MAC9C,CAAC;AAAA,IACH,CAAC;AACD,QAAI,OAAO,OAAO,WAAW,UAAU,CAAC,OAAO,aAAa,GAAG;AAC7D,YAAM,WAAW,GAAG,cAAc,qBAAqB;AACvD,UAAI,SAAU,UAAS,MAAM,qBAAqB,GAAG,QAAQ;AAAA,IAC/D;AAAA,EACF;AACA,aAAW;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAAF;AAAA,IACA,eAAAE;AAAA,IACA;AAAA,IACA,iBAAiB,MAAM,OAAO,OAAO;AAAA,IACrC,aAAa,MAAM;AAAA,IACnB,iBAAiB,OAAO;AAAA,MACtB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,IACpB;AAAA,EACF,CAAC;AACH;;;ACxKA,SAAS,aAAa,QAAQ,SAAS,MAAM;AAC3C,QAAM,cAAc,sBAAsB,OAAO,IAAI,IAAI,KAAK,EAAE,GAAG,SAAS,wBAAwB,MAAM,KAAK,EAAE;AACjH,QAAM,kBAAkB,oBAAoB,OAAO;AACnD,MAAI,WAAW,gBAAgB,cAAc,IAAI,YAAY,MAAM,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE;AACnF,MAAI,CAAC,UAAU;AACb,eAAW,cAAc,OAAO,YAAY,MAAM,GAAG,CAAC;AACtD,oBAAgB,OAAO,QAAQ;AAAA,EACjC;AACA,SAAO;AACT;;;ACLA,SAAS,WAAW,MAAM;AACxB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,YAAY;AAAA,MACV,cAAc;AAAA,MACd,eAAe;AAAA,IACjB;AAAA,EACF,CAAC;AACD,QAAM,qBAAqB,CAAC,SAAS,aAAa;AAChD,QAAI,eAAe,OAAO,aAAa,IAAI,QAAQ,cAAc,2BAA2B,IAAI,QAAQ,cAAc,0BAA0B;AAChJ,QAAI,cAAc,OAAO,aAAa,IAAI,QAAQ,cAAc,4BAA4B,IAAI,QAAQ,cAAc,6BAA6B;AACnJ,QAAI,CAAC,cAAc;AACjB,qBAAe,aAAa,QAAQ,SAAS,OAAO,aAAa,IAAI,SAAS,KAAK;AAAA,IACrF;AACA,QAAI,CAAC,aAAa;AAChB,oBAAc,aAAa,QAAQ,SAAS,OAAO,aAAa,IAAI,UAAU,QAAQ;AAAA,IACxF;AACA,QAAI,aAAc,cAAa,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;AACpE,QAAI,YAAa,aAAY,MAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AAAA,EACnE;AACA,QAAM,kBAAkB,MAAM;AAE5B,WAAO,OAAO;AACd,WAAO,OAAO,QAAQ,aAAW;AAC/B,UAAI,WAAW,QAAQ;AACvB,UAAI,OAAO,OAAO,WAAW,eAAe;AAC1C,mBAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAAA,MACvD;AACA,yBAAmB,SAAS,QAAQ;AAAA,IACtC,CAAC;AAAA,EACH;AACA,QAAMC,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAM,UAAU,OAAO,CAAC;AACxB,UAAI,WAAW,QAAQ;AACvB,UAAI,OAAO,OAAO,WAAW,eAAe;AAC1C,mBAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAAA,MACvD;AACA,YAAM,SAAS,QAAQ;AACvB,YAAM,SAAS,OAAO;AACtB,UAAI,UAAU;AACd,UAAI,UAAU;AACd,UAAI,KAAK,OAAO,OAAO,UAAU,CAAC,SAAS,OAAO,YAAY,CAAC;AAC/D,UAAI,KAAK;AACT,UAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,aAAK;AACL,aAAK;AACL,kBAAU,CAAC;AACX,kBAAU;AAAA,MACZ,WAAW,KAAK;AACd,kBAAU,CAAC;AAAA,MACb;AACA,cAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC,IAAI,OAAO;AAChE,UAAI,OAAO,cAAc;AACvB,2BAAmB,SAAS,QAAQ;AAAA,MACtC;AACA,YAAM,YAAY,eAAe,EAAE,OAAO,EAAE,oBAAoB,OAAO,gBAAgB,OAAO;AAC9F,YAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,eAAS,MAAM,YAAY;AAAA,IAC7B;AAAA,EACF;AACA,QAAMC,iBAAgB,cAAY;AAChC,UAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,sBAAkB,QAAQ,QAAM;AAC9B,SAAG,MAAM,qBAAqB,GAAG,QAAQ;AACzC,SAAG,iBAAiB,8GAA8G,EAAE,QAAQ,cAAY;AACtJ,iBAAS,MAAM,qBAAqB,GAAG,QAAQ;AAAA,MACjD,CAAC;AAAA,IACH,CAAC;AACD,+BAA2B;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,aAAW;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAAD;AAAA,IACA,eAAAC;AAAA,IACA;AAAA,IACA,iBAAiB,MAAM,OAAO,OAAO;AAAA,IACrC,aAAa,MAAM;AAAA,IACnB,iBAAiB,OAAO;AAAA,MACtB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,kBAAkB,CAAC,OAAO,OAAO;AAAA,IACnC;AAAA,EACF,CAAC;AACH;;;ACtGA,SAAS,gBAAgB,MAAM;AAC7B,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,EACF,CAAC;AACD,QAAMC,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM,eAAe,OAAO,aAAa;AACzC,UAAM,YAAY,OAAO;AACzB,UAAM,SAAS,eAAe,CAAC,YAAY,cAAc,IAAI,CAAC,YAAY,eAAe;AACzF,UAAM,SAAS,eAAe,OAAO,SAAS,CAAC,OAAO;AACtD,UAAMC,aAAY,OAAO;AAEzB,aAAS,IAAI,GAAG,SAAS,OAAO,QAAQ,IAAI,QAAQ,KAAK,GAAG;AAC1D,YAAM,UAAU,OAAO,CAAC;AACxB,YAAM,YAAY,gBAAgB,CAAC;AACnC,YAAM,cAAc,QAAQ;AAC5B,YAAM,gBAAgB,SAAS,cAAc,YAAY,KAAK;AAC9D,YAAM,mBAAmB,OAAO,OAAO,aAAa,aAAa,OAAO,SAAS,YAAY,IAAI,eAAe,OAAO;AACvH,UAAI,UAAU,eAAe,SAAS,mBAAmB;AACzD,UAAI,UAAU,eAAe,IAAI,SAAS;AAE1C,UAAI,aAAa,CAACA,aAAY,KAAK,IAAI,gBAAgB;AACvD,UAAI,UAAU,OAAO;AAErB,UAAI,OAAO,YAAY,YAAY,QAAQ,QAAQ,GAAG,MAAM,IAAI;AAC9D,kBAAU,WAAW,OAAO,OAAO,IAAI,MAAM;AAAA,MAC/C;AACA,UAAI,aAAa,eAAe,IAAI,UAAU;AAC9C,UAAI,aAAa,eAAe,UAAU,mBAAmB;AAC7D,UAAI,QAAQ,KAAK,IAAI,OAAO,SAAS,KAAK,IAAI,gBAAgB;AAG9D,UAAI,KAAK,IAAI,UAAU,IAAI,KAAO,cAAa;AAC/C,UAAI,KAAK,IAAI,UAAU,IAAI,KAAO,cAAa;AAC/C,UAAI,KAAK,IAAI,UAAU,IAAI,KAAO,cAAa;AAC/C,UAAI,KAAK,IAAI,OAAO,IAAI,KAAO,WAAU;AACzC,UAAI,KAAK,IAAI,OAAO,IAAI,KAAO,WAAU;AACzC,UAAI,KAAK,IAAI,KAAK,IAAI,KAAO,SAAQ;AACrC,YAAM,iBAAiB,eAAe,UAAU,MAAM,UAAU,MAAM,UAAU,gBAAgB,OAAO,gBAAgB,OAAO,cAAc,KAAK;AACjJ,YAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,eAAS,MAAM,YAAY;AAC3B,cAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,gBAAgB,CAAC,IAAI;AACjE,UAAI,OAAO,cAAc;AAEvB,YAAI,iBAAiB,eAAe,QAAQ,cAAc,2BAA2B,IAAI,QAAQ,cAAc,0BAA0B;AACzI,YAAI,gBAAgB,eAAe,QAAQ,cAAc,4BAA4B,IAAI,QAAQ,cAAc,6BAA6B;AAC5I,YAAI,CAAC,gBAAgB;AACnB,2BAAiB,aAAa,aAAa,SAAS,eAAe,SAAS,KAAK;AAAA,QACnF;AACA,YAAI,CAAC,eAAe;AAClB,0BAAgB,aAAa,aAAa,SAAS,eAAe,UAAU,QAAQ;AAAA,QACtF;AACA,YAAI,eAAgB,gBAAe,MAAM,UAAU,mBAAmB,IAAI,mBAAmB;AAC7F,YAAI,cAAe,eAAc,MAAM,UAAU,CAAC,mBAAmB,IAAI,CAAC,mBAAmB;AAAA,MAC/F;AAAA,IACF;AAAA,EACF;AACA,QAAMC,iBAAgB,cAAY;AAChC,UAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,sBAAkB,QAAQ,QAAM;AAC9B,SAAG,MAAM,qBAAqB,GAAG,QAAQ;AACzC,SAAG,iBAAiB,8GAA8G,EAAE,QAAQ,cAAY;AACtJ,iBAAS,MAAM,qBAAqB,GAAG,QAAQ;AAAA,MACjD,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,aAAW;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAAF;AAAA,IACA,eAAAE;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,iBAAiB,OAAO;AAAA,MACtB,qBAAqB;AAAA,IACvB;AAAA,EACF,CAAC;AACH;;;AC9FA,SAAS,eAAe,MAAM;AAC5B,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,gBAAgB;AAAA,MACd,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,MAAM;AAAA,QACJ,WAAW,CAAC,GAAG,GAAG,CAAC;AAAA,QACnB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,QAChB,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,WAAW,CAAC,GAAG,GAAG,CAAC;AAAA,QACnB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,QAChB,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,oBAAoB,WAAS;AACjC,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,QAAMC,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM;AAAA,MACJ,oBAAoB;AAAA,IACtB,IAAI;AACJ,UAAM,mBAAmB,OAAO,OAAO;AACvC,QAAI,kBAAkB;AACpB,YAAM,SAAS,gBAAgB,CAAC,IAAI,IAAI,OAAO,OAAO,sBAAsB;AAC5E,gBAAU,MAAM,YAAY,yBAAyB,MAAM;AAAA,IAC7D;AACA,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAM,UAAU,OAAO,CAAC;AACxB,YAAM,gBAAgB,QAAQ;AAC9B,YAAM,WAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,OAAO,aAAa,GAAG,OAAO,aAAa;AACjG,UAAI,mBAAmB;AACvB,UAAI,CAAC,kBAAkB;AACrB,2BAAmB,KAAK,IAAI,KAAK,IAAI,QAAQ,kBAAkB,CAAC,OAAO,aAAa,GAAG,OAAO,aAAa;AAAA,MAC7G;AACA,YAAM,SAAS,QAAQ;AACvB,YAAM,IAAI,CAAC,OAAO,OAAO,UAAU,CAAC,SAAS,OAAO,YAAY,CAAC,QAAQ,GAAG,CAAC;AAC7E,YAAM,IAAI,CAAC,GAAG,GAAG,CAAC;AAClB,UAAI,SAAS;AACb,UAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,UAAE,CAAC,IAAI,EAAE,CAAC;AACV,UAAE,CAAC,IAAI;AAAA,MACT;AACA,UAAI,OAAO;AAAA,QACT,WAAW,CAAC,GAAG,GAAG,CAAC;AAAA,QACnB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,QAChB,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AACA,UAAI,WAAW,GAAG;AAChB,eAAO,OAAO;AACd,iBAAS;AAAA,MACX,WAAW,WAAW,GAAG;AACvB,eAAO,OAAO;AACd,iBAAS;AAAA,MACX;AAEA,QAAE,QAAQ,CAAC,OAAO,UAAU;AAC1B,UAAE,KAAK,IAAI,QAAQ,KAAK,SAAS,kBAAkB,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,WAAW,UAAU,CAAC;AAAA,MAChH,CAAC;AAED,QAAE,QAAQ,CAAC,OAAO,UAAU;AAC1B,UAAE,KAAK,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,IAAI,WAAW,UAAU;AAAA,MAChE,CAAC;AACD,cAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,aAAa,CAAC,IAAI,OAAO;AACrE,YAAM,kBAAkB,EAAE,KAAK,IAAI;AACnC,YAAM,eAAe,WAAW,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC5E,YAAM,cAAc,mBAAmB,IAAI,SAAS,KAAK,IAAI,KAAK,SAAS,mBAAmB,UAAU,MAAM,SAAS,KAAK,IAAI,KAAK,SAAS,mBAAmB,UAAU;AAC3K,YAAM,gBAAgB,mBAAmB,IAAI,KAAK,IAAI,KAAK,WAAW,mBAAmB,aAAa,KAAK,IAAI,KAAK,WAAW,mBAAmB;AAClJ,YAAM,YAAY,eAAe,eAAe,KAAK,YAAY,IAAI,WAAW;AAGhF,UAAI,UAAU,KAAK,UAAU,CAAC,QAAQ;AACpC,YAAI,WAAW,QAAQ,cAAc,sBAAsB;AAC3D,YAAI,CAAC,YAAY,KAAK,QAAQ;AAC5B,qBAAW,aAAa,YAAY,OAAO;AAAA,QAC7C;AACA,YAAI,UAAU;AACZ,gBAAM,gBAAgB,OAAO,oBAAoB,YAAY,IAAI,OAAO,iBAAiB;AACzF,mBAAS,MAAM,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,aAAa,GAAG,CAAC,GAAG,CAAC;AAAA,QAC3E;AAAA,MACF;AACA,YAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,eAAS,MAAM,YAAY;AAC3B,eAAS,MAAM,UAAU;AACzB,UAAI,KAAK,QAAQ;AACf,iBAAS,MAAM,kBAAkB,KAAK;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACA,QAAMC,iBAAgB,cAAY;AAChC,UAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,sBAAkB,QAAQ,QAAM;AAC9B,SAAG,MAAM,qBAAqB,GAAG,QAAQ;AACzC,SAAG,iBAAiB,sBAAsB,EAAE,QAAQ,cAAY;AAC9D,iBAAS,MAAM,qBAAqB,GAAG,QAAQ;AAAA,MACjD,CAAC;AAAA,IACH,CAAC;AACD,+BAA2B;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AACA,aAAW;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAAD;AAAA,IACA,eAAAC;AAAA,IACA,aAAa,MAAM,OAAO,OAAO,eAAe;AAAA,IAChD,iBAAiB,OAAO;AAAA,MACtB,qBAAqB;AAAA,MACrB,kBAAkB,CAAC,OAAO,OAAO;AAAA,IACnC;AAAA,EACF,CAAC;AACH;;;ACvIA,SAAS,YAAY,MAAM;AACzB,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,eAAa;AAAA,IACX,aAAa;AAAA,MACX,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACD,QAAMC,gBAAe,MAAM;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AACJ,UAAM,SAAS,OAAO,OAAO;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,OAAO;AACX,UAAM,mBAAmB,MAAM,CAAC,OAAO,YAAY,OAAO;AAC1D,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,YAAM,UAAU,OAAO,CAAC;AACxB,YAAM,gBAAgB,QAAQ;AAC9B,YAAM,WAAW,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE,GAAG,CAAC;AACxD,UAAI,SAAS,QAAQ;AACrB,UAAI,OAAO,OAAO,kBAAkB,CAAC,OAAO,OAAO,SAAS;AAC1D,eAAO,UAAU,MAAM,YAAY,cAAc,OAAO,aAAa,CAAC;AAAA,MACxE;AACA,UAAI,OAAO,OAAO,kBAAkB,OAAO,OAAO,SAAS;AACzD,kBAAU,OAAO,CAAC,EAAE;AAAA,MACtB;AACA,UAAI,KAAK,OAAO,OAAO,UAAU,CAAC,SAAS,OAAO,YAAY,CAAC;AAC/D,UAAI,KAAK;AACT,YAAM,KAAK,OAAO,KAAK,IAAI,QAAQ;AACnC,UAAI,QAAQ;AACZ,UAAI,SAAS,CAAC,OAAO,iBAAiB;AACtC,UAAI,QAAQ,OAAO,iBAAiB,KAAK,IAAI,QAAQ,IAAI;AACzD,YAAM,aAAa,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,IAAI;AAC/F,YAAM,iBAAiB,eAAe,eAAe,eAAe,cAAc,MAAM,WAAW,KAAK,WAAW,MAAM,aAAa,OAAO,OAAO,YAAY,mBAAmB;AACnL,YAAM,iBAAiB,eAAe,eAAe,eAAe,cAAc,MAAM,WAAW,KAAK,WAAW,OAAO,aAAa,OAAO,OAAO,YAAY,mBAAmB;AACpL,UAAI,iBAAiB,eAAe;AAClC,cAAM,eAAe,IAAI,KAAK,KAAK,KAAK,IAAI,QAAQ,IAAI,OAAO,GAAG,MAAM;AACxE,kBAAU,MAAM,WAAW;AAC3B,iBAAS,OAAO;AAChB,iBAAS,KAAK;AACd,aAAK,GAAG,MAAM,cAAc,KAAK,IAAI,QAAQ,CAAC;AAAA,MAChD;AACA,UAAI,WAAW,GAAG;AAEhB,aAAK,QAAQ,EAAE,MAAM,MAAM,MAAM,GAAG,KAAK,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAAA,MACrE,WAAW,WAAW,GAAG;AAEvB,aAAK,QAAQ,EAAE,MAAM,MAAM,MAAM,GAAG,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAAA,MACtE,OAAO;AACL,aAAK,GAAG,EAAE;AAAA,MACZ;AACA,UAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,cAAM,QAAQ;AACd,aAAK;AACL,aAAK;AAAA,MACP;AACA,YAAM,cAAc,WAAW,IAAI,GAAG,KAAK,IAAI,SAAS,QAAQ,KAAK,GAAG,KAAK,IAAI,SAAS,QAAQ;AAGlG,YAAM,YAAY;AAAA,sBACF,EAAE,KAAK,EAAE,KAAK,EAAE;AAAA,kBACpB,OAAO,SAAS,MAAM,CAAC,SAAS,SAAS,CAAC;AAAA,gBAC5C,WAAW;AAAA;AAIrB,UAAI,OAAO,cAAc;AAEvB,YAAI,WAAW,QAAQ,cAAc,sBAAsB;AAC3D,YAAI,CAAC,UAAU;AACb,qBAAW,aAAa,SAAS,OAAO;AAAA,QAC1C;AACA,YAAI,SAAU,UAAS,MAAM,UAAU,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC;AAAA,MAClG;AACA,cAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,aAAa,CAAC,IAAI,OAAO;AACrE,YAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,eAAS,MAAM,YAAY;AAAA,IAC7B;AAAA,EACF;AACA,QAAMC,iBAAgB,cAAY;AAChC,UAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,sBAAkB,QAAQ,QAAM;AAC9B,SAAG,MAAM,qBAAqB,GAAG,QAAQ;AACzC,SAAG,iBAAiB,sBAAsB,EAAE,QAAQ,cAAY;AAC9D,iBAAS,MAAM,qBAAqB,GAAG,QAAQ;AAAA,MACjD,CAAC;AAAA,IACH,CAAC;AACD,+BAA2B;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACA,aAAW;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAAD;AAAA,IACA,eAAAC;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,iBAAiB,OAAO;AAAA,MACtB,qBAAqB;AAAA,MACrB,kBAAkB,CAAC,OAAO,OAAO;AAAA,IACnC;AAAA,EACF,CAAC;AACH;;;ACpFA,IAAM,UAAU,CAAC,SAAS,UAAU,YAAY,YAAY,YAAY,WAAW,UAAU,MAAM,YAAY,MAAM,SAAS,gBAAgB,UAAU,OAAO,UAAU,MAAM,cAAc,YAAY,YAAY,YAAY,iBAAiB,gBAAgB,WAAW;AAC7Q,OAAO,IAAI,OAAO;;;ACtClB,IAAM,aAAa;AAAA,EAAC;AAAA,EAAgB;AAAA,EAAgB;AAAA,EAAoB;AAAA,EAAW;AAAA,EAAQ;AAAA,EAAc;AAAA,EAAkB;AAAA,EAAqB;AAAA,EAAgB;AAAA,EAAU;AAAA,EAAW;AAAA,EAAwB;AAAA,EAAkB;AAAA,EAAU;AAAA,EAAqB;AAAA,EAAY;AAAA,EAAU;AAAA,EAAW;AAAA,EAAkC;AAAA,EAAa;AAAA,EAAO;AAAA,EAAuB;AAAA,EAAuB;AAAA,EAAa;AAAA,EAAe;AAAA,EAAkB;AAAA,EAAoB;AAAA,EAAW;AAAA,EAAe;AAAA,EAAmB;AAAA,EAAiB;AAAA,EAAkB;AAAA,EAA2B;AAAA,EAAS;AAAA,EAAmB;AAAA,EAAuB;AAAA,EAAuB;AAAA,EAAmB;AAAA,EAAyB;AAAA,EAAuB;AAAA,EAAsB;AAAA,EAAuB;AAAA,EAA6B;AAAA,EAAkB;AAAA,EAAgB;AAAA,EAAc;AAAA,EAAc;AAAA,EAAiB;AAAA,EAAgB;AAAA,EAAe;AAAA,EAAmB;AAAA,EAAgB;AAAA,EAAiB;AAAA,EAAkB;AAAA,EAAc;AAAA,EAA4B;AAAA,EAA4B;AAAA,EAAiC;AAAA,EAAuB;AAAA,EAAqB;AAAA,EAAe;AAAA,EAAoB;AAAA,EAAwB;AAAA,EAAe;AAAA,EAAiB;AAAA,EAA4B;AAAA,EAAwB;AAAA,EAAS;AAAA,EAAgB;AAAA,EAAuB;AAAA,EAAW;AAAA,EAAmB;AAAA,EAAmB;AAAA,EAAiB;AAAA,EAAc;AAAA,EAAkB;AAAA,EAAqB;AAAA,EAAoB;AAAA,EAA0B;AAAA,EAAc;AAAA,EAAoB;AAAA,EAAqB;AAAA,EAAkB;AAAA,EAAkB;AAAA,EAAgB;AAAA,EAAsB;AAAA,EAAuB;AAAA,EAAsB;AAAA,EAAY;AAAA,EAAkB;AAAA;AAAA,EAE9nD;AAAA,EAAQ;AAAA,EAAa;AAAA,EAAe;AAAA,EAAmB;AAAA,EAAc;AAAA,EAAc;AAAA,EAAc;AAAA,EAAkB;AAAA,EAAe;AAAA,EAAkB;AAAA,EAAW;AAAA,EAAY;AAAA,EAAc;AAAA,EAAe;AAAA,EAAe;AAAA,EAAY;AAAA,EAAc;AAAA,EAAW;AAAA,EAAW;AAAA,EAAQ;AAAS;AAExR,SAASC,UAAS,GAAG;AACnB,SAAO,OAAO,MAAM,YAAY,MAAM,QAAQ,EAAE,eAAe,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,YAAY,CAAC,EAAE;AACnI;AACA,SAASC,QAAO,QAAQ,KAAK;AAC3B,QAAM,WAAW,CAAC,aAAa,eAAe,WAAW;AACzD,SAAO,KAAK,GAAG,EAAE,OAAO,SAAO,SAAS,QAAQ,GAAG,IAAI,CAAC,EAAE,QAAQ,SAAO;AACvE,QAAI,OAAO,OAAO,GAAG,MAAM,YAAa,QAAO,GAAG,IAAI,IAAI,GAAG;AAAA,aAAWD,UAAS,IAAI,GAAG,CAAC,KAAKA,UAAS,OAAO,GAAG,CAAC,KAAK,OAAO,KAAK,IAAI,GAAG,CAAC,EAAE,SAAS,GAAG;AACvJ,UAAI,IAAI,GAAG,EAAE,WAAY,QAAO,GAAG,IAAI,IAAI,GAAG;AAAA,UAAO,CAAAC,QAAO,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC;AAAA,IACnF,OAAO;AACL,aAAO,GAAG,IAAI,IAAI,GAAG;AAAA,IACvB;AAAA,EACF,CAAC;AACH;AACA,SAAS,gBAAgB,QAAQ;AAC/B,MAAI,WAAW,QAAQ;AACrB,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,OAAO,cAAc,OAAO,OAAO,WAAW,WAAW,eAAe,OAAO,OAAO,WAAW,WAAW;AACrH;AACA,SAAS,gBAAgB,QAAQ;AAC/B,MAAI,WAAW,QAAQ;AACrB,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,OAAO,cAAc,OAAO,OAAO,WAAW,OAAO;AAC9D;AACA,SAAS,eAAe,QAAQ;AAC9B,MAAI,WAAW,QAAQ;AACrB,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,OAAO,aAAa,OAAO,OAAO,UAAU,OAAO;AAC5D;AAYA,SAAS,WAAW,UAAU;AAC5B,MAAI,aAAa,QAAQ;AACvB,eAAW;AAAA,EACb;AACA,SAAO,SAAS,QAAQ,WAAW,OAAK,EAAE,YAAY,EAAE,QAAQ,KAAK,EAAE,CAAC;AAC1E;AAUA,SAAS,aAAa,MAAM;AAC1B,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,eAAe,cAAc,OAAO,SAAO,QAAQ,cAAc,QAAQ,eAAe,QAAQ,cAAc;AACpH,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,cAAc,SAAS,QAAQ,KAAK,aAAa,UAAU,aAAa,OAAO,UAAU,cAAc,UAAU,CAAC,cAAc,OAAO,QAAQ;AACjJ,qBAAiB;AAAA,EACnB;AACA,MAAI,cAAc,SAAS,YAAY,KAAK,aAAa,cAAc,aAAa,WAAW,WAAW,cAAc,cAAc,CAAC,cAAc,WAAW,SAAS;AACvK,yBAAqB;AAAA,EACvB;AACA,MAAI,cAAc,SAAS,YAAY,KAAK,aAAa,eAAe,aAAa,WAAW,MAAM,kBAAkB,cAAc,cAAc,cAAc,eAAe,UAAU,cAAc,CAAC,WAAW,IAAI;AACvN,yBAAqB;AAAA,EACvB;AACA,MAAI,cAAc,SAAS,WAAW,KAAK,aAAa,cAAc,aAAa,UAAU,MAAM,iBAAiB,cAAc,aAAa,cAAc,cAAc,UAAU,aAAa,CAAC,UAAU,IAAI;AAC/M,wBAAoB;AAAA,EACtB;AACA,MAAI,cAAc,SAAS,YAAY,KAAK,aAAa,eAAe,aAAa,WAAW,UAAU,YAAY,aAAa,WAAW,UAAU,YAAY,cAAc,cAAc,cAAc,eAAe,UAAU,cAAc,CAAC,WAAW,UAAU,CAAC,WAAW,QAAQ;AAC7R,yBAAqB;AAAA,EACvB;AACA,QAAM,gBAAgB,SAAO;AAC3B,QAAI,CAAC,OAAO,GAAG,EAAG;AAClB,WAAO,GAAG,EAAE,QAAQ;AACpB,QAAI,QAAQ,cAAc;AACxB,UAAI,OAAO,WAAW;AACpB,eAAO,GAAG,EAAE,OAAO,OAAO;AAC1B,eAAO,GAAG,EAAE,OAAO,OAAO;AAAA,MAC5B;AACA,oBAAc,GAAG,EAAE,SAAS;AAC5B,oBAAc,GAAG,EAAE,SAAS;AAC5B,aAAO,GAAG,EAAE,SAAS;AACrB,aAAO,GAAG,EAAE,SAAS;AAAA,IACvB,OAAO;AACL,UAAI,OAAO,WAAW;AACpB,eAAO,GAAG,EAAE,GAAG,OAAO;AAAA,MACxB;AACA,oBAAc,GAAG,EAAE,KAAK;AACxB,aAAO,GAAG,EAAE,KAAK;AAAA,IACnB;AAAA,EACF;AACA,MAAI,cAAc,SAAS,MAAM,KAAK,OAAO,WAAW;AACtD,QAAI,cAAc,QAAQ,CAAC,aAAa,MAAM;AAC5C,wBAAkB;AAAA,IACpB,WAAW,CAAC,cAAc,QAAQ,aAAa,MAAM;AACnD,uBAAiB;AAAA,IACnB,OAAO;AACL,uBAAiB;AAAA,IACnB;AAAA,EACF;AACA,eAAa,QAAQ,SAAO;AAC1B,QAAIC,UAAS,cAAc,GAAG,CAAC,KAAKA,UAAS,aAAa,GAAG,CAAC,GAAG;AAC/D,MAAAC,QAAO,cAAc,GAAG,GAAG,aAAa,GAAG,CAAC;AAC5C,WAAK,QAAQ,gBAAgB,QAAQ,gBAAgB,QAAQ,gBAAgB,aAAa,aAAa,GAAG,KAAK,CAAC,aAAa,GAAG,EAAE,SAAS;AACzI,sBAAc,GAAG;AAAA,MACnB;AAAA,IACF,OAAO;AACL,YAAM,WAAW,aAAa,GAAG;AACjC,WAAK,aAAa,QAAQ,aAAa,WAAW,QAAQ,gBAAgB,QAAQ,gBAAgB,QAAQ,cAAc;AACtH,YAAI,aAAa,OAAO;AACtB,wBAAc,GAAG;AAAA,QACnB;AAAA,MACF,OAAO;AACL,sBAAc,GAAG,IAAI,aAAa,GAAG;AAAA,MACvC;AAAA,IACF;AAAA,EACF,CAAC;AACD,MAAI,aAAa,SAAS,YAAY,KAAK,CAAC,sBAAsB,OAAO,cAAc,OAAO,WAAW,WAAW,cAAc,cAAc,cAAc,WAAW,SAAS;AAChL,WAAO,WAAW,UAAU,cAAc,WAAW;AAAA,EACvD;AACA,MAAI,cAAc,SAAS,UAAU,KAAK,UAAU,WAAW,cAAc,QAAQ,SAAS;AAC5F,YAAQ,SAAS;AACjB,YAAQ,OAAO,IAAI;AAAA,EACrB;AACA,MAAI,cAAc,SAAS,UAAU,KAAK,UAAU,cAAc,MAAM;AACtE,qBAAiB;AAAA,EACnB;AACA,MAAI,gBAAgB;AAClB,UAAM,cAAc,OAAO,KAAK;AAChC,QAAI,YAAa,QAAO,OAAO,IAAI;AAAA,EACrC;AACA,MAAI,oBAAoB;AACtB,WAAO,WAAW,UAAU,cAAc,WAAW;AAAA,EACvD;AACA,MAAI,oBAAoB;AACtB,QAAI,OAAO,cAAc,CAAC,gBAAgB,OAAO,iBAAiB,WAAW;AAC3E,qBAAe,SAAS,cAAc,KAAK;AAC3C,mBAAa,UAAU,IAAI,mBAAmB;AAC9C,mBAAa,KAAK,IAAI,YAAY;AAClC,aAAO,GAAG,YAAY,YAAY;AAAA,IACpC;AACA,QAAI,aAAc,eAAc,WAAW,KAAK;AAChD,eAAW,KAAK;AAChB,eAAW,OAAO;AAClB,eAAW,OAAO;AAAA,EACpB;AACA,MAAI,mBAAmB;AACrB,QAAI,OAAO,cAAc,CAAC,eAAe,OAAO,gBAAgB,WAAW;AACzE,oBAAc,SAAS,cAAc,KAAK;AAC1C,kBAAY,UAAU,IAAI,kBAAkB;AAC5C,kBAAY,KAAK,IAAI,WAAW;AAChC,aAAO,GAAG,YAAY,WAAW;AAAA,IACnC;AACA,QAAI,YAAa,eAAc,UAAU,KAAK;AAC9C,cAAU,KAAK;AACf,cAAU,WAAW;AACrB,cAAU,aAAa;AAAA,EACzB;AACA,MAAI,oBAAoB;AACtB,QAAI,OAAO,WAAW;AACpB,UAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AACzC,iBAAS,SAAS,cAAc,KAAK;AACrC,eAAO,UAAU,IAAI,oBAAoB;AACzC,eAAO,YAAY,OAAO,OAAO,YAAY;AAC7C,eAAO,KAAK,IAAI,aAAa;AAC7B,eAAO,GAAG,YAAY,MAAM;AAAA,MAC9B;AACA,UAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AACzC,iBAAS,SAAS,cAAc,KAAK;AACrC,eAAO,UAAU,IAAI,oBAAoB;AACzC,eAAO,YAAY,OAAO,OAAO,YAAY;AAC7C,eAAO,KAAK,IAAI,aAAa;AAC7B,eAAO,GAAG,YAAY,MAAM;AAAA,MAC9B;AAAA,IACF;AACA,QAAI,OAAQ,eAAc,WAAW,SAAS;AAC9C,QAAI,OAAQ,eAAc,WAAW,SAAS;AAC9C,eAAW,KAAK;AAChB,eAAW,OAAO;AAAA,EACpB;AACA,MAAI,cAAc,SAAS,gBAAgB,GAAG;AAC5C,WAAO,iBAAiB,aAAa;AAAA,EACvC;AACA,MAAI,cAAc,SAAS,gBAAgB,GAAG;AAC5C,WAAO,iBAAiB,aAAa;AAAA,EACvC;AACA,MAAI,cAAc,SAAS,WAAW,GAAG;AACvC,WAAO,gBAAgB,aAAa,WAAW,KAAK;AAAA,EACtD;AACA,MAAI,mBAAmB,gBAAgB;AACrC,WAAO,YAAY;AAAA,EACrB;AACA,MAAI,kBAAkB,gBAAgB;AACpC,WAAO,WAAW;AAAA,EACpB;AACA,SAAO,OAAO;AAChB;;;ACnOA,IAAM,cAAc,SAAO;AACzB,MAAI,WAAW,GAAG,MAAM,OAAO,GAAG,EAAG,QAAO,OAAO,GAAG;AACtD,MAAI,QAAQ,OAAQ,QAAO;AAC3B,MAAI,QAAQ,GAAI,QAAO;AACvB,MAAI,QAAQ,QAAS,QAAO;AAC5B,MAAI,QAAQ,OAAQ,QAAO;AAC3B,MAAI,QAAQ,YAAa,QAAO;AAChC,MAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS,GAAG,GAAG;AAC1F,QAAI;AACJ,QAAI;AACF,UAAI,KAAK,MAAM,GAAG;AAAA,IACpB,SAAS,KAAK;AACZ,UAAI;AAAA,IACN;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,IAAM,oBAAoB,CAAC,QAAQ,YAAY,cAAc,gBAAgB,oBAAoB,mBAAmB,eAAe,eAAe,eAAe,aAAa,QAAQ,mBAAmB,WAAW,YAAY,cAAc,cAAc,cAAc,YAAY,aAAa,UAAU,WAAW,MAAM;AAC9T,SAAS,UAAU,SAAS,UAAU,WAAW;AAC/C,QAAM,SAAS,CAAC;AAChB,QAAM,eAAe,CAAC;AACtB,EAAAC,QAAO,QAAQ,QAAQ;AACvB,QAAM,kBAAkB,CAAC,GAAG,YAAY,IAAI;AAC5C,QAAM,gBAAgB,gBAAgB,IAAI,SAAO,IAAI,QAAQ,KAAK,EAAE,CAAC;AAGrE,kBAAgB,QAAQ,eAAa;AACnC,gBAAY,UAAU,QAAQ,KAAK,EAAE;AACrC,QAAI,OAAO,QAAQ,SAAS,MAAM,aAAa;AAC7C,mBAAa,SAAS,IAAI,QAAQ,SAAS;AAAA,IAC7C;AAAA,EACF,CAAC;AAGD,QAAM,YAAY,CAAC,GAAG,QAAQ,UAAU;AACxC,MAAI,OAAO,aAAa,YAAY,OAAO,cAAc,aAAa;AACpE,cAAU,KAAK;AAAA,MACb,MAAM;AAAA,MACN,OAAOC,UAAS,SAAS,IAAI;AAAA,QAC3B,GAAG;AAAA,MACL,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACA,YAAU,QAAQ,UAAQ;AACxB,UAAM,cAAc,kBAAkB,OAAO,YAAU,KAAK,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/F,QAAI,aAAa;AACf,YAAM,gBAAgB,WAAW,WAAW;AAC5C,YAAM,aAAa,WAAW,KAAK,KAAK,MAAM,GAAG,WAAW,GAAG,EAAE,CAAC,CAAC;AACnE,UAAI,OAAO,aAAa,aAAa,MAAM,YAAa,cAAa,aAAa,IAAI,CAAC;AACvF,UAAI,aAAa,aAAa,MAAM,MAAM;AACxC,qBAAa,aAAa,IAAI;AAAA,UAC5B,SAAS;AAAA,QACX;AAAA,MACF;AACA,mBAAa,aAAa,EAAE,UAAU,IAAI,YAAY,KAAK,KAAK;AAAA,IAClE,OAAO;AACL,YAAM,OAAO,WAAW,KAAK,IAAI;AACjC,UAAI,CAAC,cAAc,SAAS,IAAI,EAAG;AACnC,YAAM,QAAQ,YAAY,KAAK,KAAK;AACpC,UAAI,aAAa,IAAI,KAAK,kBAAkB,SAAS,KAAK,IAAI,KAAK,CAACA,UAAS,KAAK,GAAG;AACnF,YAAI,aAAa,IAAI,EAAE,gBAAgB,QAAQ;AAC7C,uBAAa,IAAI,IAAI,CAAC;AAAA,QACxB;AACA,qBAAa,IAAI,EAAE,UAAU,CAAC,CAAC;AAAA,MACjC,OAAO;AACL,qBAAa,IAAI,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAC;AACD,EAAAD,QAAO,QAAQ,YAAY;AAC3B,MAAI,OAAO,YAAY;AACrB,WAAO,aAAa;AAAA,MAClB,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,GAAI,OAAO,eAAe,OAAO,OAAO,aAAa,CAAC;AAAA,IACxD;AAAA,EACF,WAAW,OAAO,eAAe,OAAO;AACtC,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,OAAO,WAAW;AACpB,WAAO,YAAY;AAAA,MACjB,IAAI;AAAA,MACJ,GAAI,OAAO,cAAc,OAAO,OAAO,YAAY,CAAC;AAAA,IACtD;AAAA,EACF,WAAW,OAAO,cAAc,OAAO;AACrC,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,OAAO,YAAY;AACrB,WAAO,aAAa;AAAA,MAClB,IAAI;AAAA,MACJ,GAAI,OAAO,eAAe,OAAO,OAAO,aAAa,CAAC;AAAA,IACxD;AAAA,EACF,WAAW,OAAO,eAAe,OAAO;AACtC,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACpFA,IAAM,YAAY;AAClB,IAAM,iBAAiB;AAEvB,IAAM,mBAAN,MAAuB;AAAC;AACxB,IAAM,gBAAgB,OAAO,WAAW,eAAe,OAAO,gBAAgB,cAAc,mBAAmB;AAC/G,IAAM,WAAW;AAAA;AAEjB,IAAM,WAAW,CAAC,YAAY,WAAW;AACvC,MAAI,OAAO,kBAAkB,eAAe,WAAW,oBAAoB;AACzE,UAAM,aAAa,IAAI,cAAc;AACrC,eAAW,YAAY,MAAM;AAC7B,eAAW,qBAAqB,CAAC,UAAU;AAAA,EAC7C,OAAO;AACL,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,MAAM;AACZ,UAAM,cAAc;AACpB,eAAW,YAAY,KAAK;AAAA,EAC9B;AACF;AACA,IAAM,kBAAN,cAA8B,cAAc;AAAA,EAC1C,cAAc;AACZ,UAAM;AACN,SAAK,aAAa;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,WAAW,gBAAgB;AACzB,WAAO;AAAA,EACT;AAAA,EACA,WAAW,gBAAgB;AACzB,WAAO,SAAS,QAAQ,YAAY,4DAA4D;AAAA,EAClG;AAAA,EACA,YAAY;AACV,WAAO;AAAA,MAAC;AAAA;AAAA,MAER,GAAI,KAAK,gBAAgB,MAAM,QAAQ,KAAK,YAAY,IAAI,KAAK,eAAe,CAAC;AAAA,IAAE,EAAE,KAAK,IAAI;AAAA,EAChG;AAAA,EACA,WAAW;AACT,WAAO,KAAK,oBAAoB,CAAC;AAAA,EACnC;AAAA,EACA,iBAAiB;AACf,UAAM,mBAAmB,KAAK,cAAc;AAE5C,UAAM,oBAAoB,CAAC,GAAG,KAAK,iBAAiB,gBAAgB,CAAC,EAAE,IAAI,WAAS;AAClF,aAAO,SAAS,MAAM,aAAa,MAAM,EAAE,MAAM,QAAQ,EAAE,CAAC,GAAG,EAAE;AAAA,IACnE,CAAC;AACD,SAAK,aAAa,kBAAkB,SAAS,KAAK,IAAI,GAAG,iBAAiB,IAAI,IAAI;AAClF,QAAI,CAAC,KAAK,SAAU;AACpB,QAAI,KAAK,aAAa,kBAAkB;AACtC,eAAS,IAAI,kBAAkB,IAAI,KAAK,YAAY,KAAK,GAAG;AAC1D,cAAM,UAAU,SAAS,cAAc,cAAc;AACrD,gBAAQ,aAAa,QAAQ,eAAe,IAAI,CAAC,EAAE;AACnD,cAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,eAAO,aAAa,QAAQ,SAAS,IAAI,CAAC,EAAE;AAC5C,gBAAQ,YAAY,MAAM;AAC1B,aAAK,WAAW,cAAc,iBAAiB,EAAE,YAAY,OAAO;AAAA,MACtE;AAAA,IACF,WAAW,KAAK,aAAa,kBAAkB;AAC7C,YAAM,SAAS,KAAK,OAAO;AAC3B,eAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AAC9C,YAAI,IAAI,KAAK,YAAY;AACvB,iBAAO,CAAC,EAAE,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AACP,QAAI,KAAK,SAAU;AACnB,SAAK,eAAe;AAGpB,QAAI,cAAc,KAAK,UAAU;AACjC,QAAI,KAAK,aAAa,GAAG;AACvB,oBAAc,YAAY,QAAQ,+BAA+B,IAAI;AAAA,IACvE;AACA,QAAI,YAAY,QAAQ;AACtB,eAAS,KAAK,YAAY,WAAW;AAAA,IACvC;AACA,SAAK,SAAS,EAAE,QAAQ,SAAO;AAC7B,YAAM,aAAa,KAAK,WAAW,cAAc,cAAc,GAAG,IAAI;AACtE,UAAI,WAAY;AAChB,YAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,aAAO,MAAM;AACb,aAAO,OAAO;AACd,WAAK,WAAW,YAAY,MAAM;AAAA,IACpC,CAAC;AAED,UAAM,KAAK,SAAS,cAAc,KAAK;AACvC,OAAG,UAAU,IAAI,QAAQ;AACzB,OAAG,OAAO;AAGV,OAAG,YAAY;AAAA;AAAA;AAAA;AAAA,UAIT,MAAM,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,IACf,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU;AAAA,0CACiB,KAAK;AAAA,8BACjB,KAAK;AAAA;AAAA,SAE1B,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA,QAGX,gBAAgB,KAAK,YAAY,IAAI;AAAA,6DACgB,KAAK,YAAY,aAAa;AAAA,6DAC9B,KAAK,YAAY,aAAa;AAAA,UACjF,EAAE;AAAA,QACJ,gBAAgB,KAAK,YAAY,IAAI;AAAA;AAAA,UAEnC,EAAE;AAAA,QACJ,eAAe,KAAK,YAAY,IAAI;AAAA;AAAA,UAElC,EAAE;AAAA;AAER,SAAK,WAAW,YAAY,EAAE;AAC9B,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,aAAa;AACX,QAAI,QAAQ;AACZ,QAAI,KAAK,YAAa;AACtB,SAAK,cAAc;AACnB,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,IACF,IAAI,UAAU,IAAI;AAClB,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,WAAO,KAAK,aAAa;AACzB,SAAK,OAAO;AAGZ,SAAK,SAAS,IAAI,OAAO,KAAK,WAAW,cAAc,SAAS,GAAG;AAAA,MACjE,GAAI,aAAa,UAAU,CAAC,IAAI;AAAA,QAC9B,UAAU;AAAA,QACV,sBAAsB,KAAK,aAAa;AAAA,MAC1C;AAAA,MACA,GAAG;AAAA,MACH,mBAAmB;AAAA,MACnB,OAAO,SAAU,MAAM;AACrB,YAAI,SAAS,kBAAkB;AAC7B,gBAAM,eAAe;AAAA,QACvB;AACA,cAAM,YAAY,aAAa,eAAe,GAAG,aAAa,YAAY,GAAG,KAAK,YAAY,CAAC,KAAK,KAAK,YAAY;AACrH,iBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1G,eAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,QACjC;AACA,cAAME,SAAQ,IAAI,YAAY,WAAW;AAAA,UACvC,QAAQ;AAAA,UACR,SAAS,SAAS;AAAA,UAClB,YAAY;AAAA,QACd,CAAC;AACD,cAAM,cAAcA,MAAK;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,oBAAoB;AAClB,QAAI,KAAK,eAAe,KAAK,UAAU,KAAK,QAAQ,cAAc,KAAK,KAAK,QAAQ,cAAc,EAAE,mBAAmB;AACrH;AAAA,IACF;AACA,QAAI,KAAK,SAAS,SAAS,KAAK,aAAa,MAAM,MAAM,SAAS;AAChE;AAAA,IACF;AACA,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,uBAAuB;AACrB,QAAI,KAAK,UAAU,KAAK,QAAQ,cAAc,KAAK,KAAK,QAAQ,cAAc,EAAE,mBAAmB;AACjG;AAAA,IACF;AACA,QAAI,KAAK,UAAU,KAAK,OAAO,SAAS;AACtC,WAAK,OAAO,QAAQ;AAAA,IACtB;AACA,SAAK,cAAc;AAAA,EACrB;AAAA,EACA,yBAAyB,UAAU,WAAW;AAC5C,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,IACF,IAAI,UAAU,MAAM,UAAU,SAAS;AACvC,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,iBAAa;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,cAAc,KAAK;AAAA,MACnB,eAAe,CAAC,WAAW,QAAQ,CAAC;AAAA,MACpC,GAAI,aAAa,gBAAgB,aAAa,QAAQ,IAAI;AAAA,QACxD,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV,IAAI,CAAC;AAAA,MACL,GAAI,aAAa,gBAAgB,aAAa,QAAQ,IAAI;AAAA,QACxD,cAAc;AAAA,MAChB,IAAI,CAAC;AAAA,MACL,GAAI,aAAa,eAAe,aAAa,QAAQ,IAAI;AAAA,QACvD,aAAa;AAAA,MACf,IAAI,CAAC;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EACA,yBAAyB,MAAM,WAAW,UAAU;AAClD,QAAI,CAAC,KAAK,YAAa;AACvB,QAAI,cAAc,UAAU,aAAa,MAAM;AAC7C,iBAAW;AAAA,IACb;AACA,SAAK,yBAAyB,MAAM,QAAQ;AAAA,EAC9C;AAAA,EACA,WAAW,qBAAqB;AAC9B,UAAM,QAAQ,WAAW,OAAO,WAAS,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,WAAS,MAAM,QAAQ,UAAU,OAAK,IAAI,CAAC,EAAE,EAAE,QAAQ,KAAK,EAAE,EAAE,YAAY,CAAC;AAC/I,WAAO;AAAA,EACT;AACF;AACA,WAAW,QAAQ,eAAa;AAC9B,MAAI,cAAc,OAAQ;AAC1B,cAAY,UAAU,QAAQ,KAAK,EAAE;AACrC,SAAO,eAAe,gBAAgB,WAAW,WAAW;AAAA,IAC1D,cAAc;AAAA,IACd,MAAM;AACJ,cAAQ,KAAK,gBAAgB,CAAC,GAAG,SAAS;AAAA,IAC5C;AAAA,IACA,IAAI,OAAO;AACT,UAAI,CAAC,KAAK,aAAc,MAAK,eAAe,CAAC;AAC7C,WAAK,aAAa,SAAS,IAAI;AAC/B,UAAI,CAAC,KAAK,YAAa;AACvB,WAAK,yBAAyB,WAAW,KAAK;AAAA,IAChD;AAAA,EACF,CAAC;AACH,CAAC;AACD,IAAM,cAAN,cAA0B,cAAc;AAAA,EACtC,cAAc;AACZ,UAAM;AACN,SAAK,aAAa;AAAA,MAChB,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAM,OAAO,KAAK,QAAQ,KAAK,aAAa,MAAM,MAAM,MAAM,KAAK,aAAa,MAAM,MAAM;AAC5F,aAAS,KAAK,YAAY,cAAc;AACxC,SAAK,WAAW,YAAY,SAAS,cAAc,MAAM,CAAC;AAC1D,QAAI,MAAM;AACR,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,UAAU,IAAI,uBAAuB;AAC7C,cAAQ,KAAK,IAAI,WAAW;AAC5B,WAAK,WAAW,YAAY,OAAO;AAAA,IACrC;AAAA,EACF;AAAA,EACA,aAAa;AACX,SAAK,OAAO;AAAA,EACd;AAAA,EACA,oBAAoB;AAClB,SAAK,WAAW;AAAA,EAClB;AACF;AAGA,IAAM,WAAW,MAAM;AACrB,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI,CAAC,OAAO,eAAe,IAAI,kBAAkB,EAAG,QAAO,eAAe,OAAO,oBAAoB,eAAe;AACpH,MAAI,CAAC,OAAO,eAAe,IAAI,cAAc,EAAG,QAAO,eAAe,OAAO,gBAAgB,WAAW;AAC1G;AACA,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,8BAA8B,YAAU;AAC7C,eAAW,KAAK,GAAG,MAAM;AAAA,EAC3B;AACF;;;ACnRA,SAAS;AAIT,SAAS,WAAW,UAAU;AAC5B,QAAM,MAAM;AACZ,QAAM,YAAY,aAAE,QAAQ;AAC5B,MAAI,UAAU,WAAW,EAAG;AAC5B,QAAM,YAAY,UAAU,CAAC,EAAE,UAAU,UAAU,CAAC,EAAE,OAAO;AAC7D,MAAI,UAAU,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,UAAW;AAC3D,MAAI;AACJ,MAAI,SAAS,CAAC;AACd,MAAI;AACJ,MAAI;AACJ,MAAI,UAAU,SAAS,MAAM,GAAG;AAC9B,mBAAe,UAAU,SAAS,cAAc,EAAE,QAAQ,UAAU,SAAS,aAAa,EAAE,CAAC,CAAC;AAC9F,aAAS;AACT,qBAAiB,UAAU,KAAK,gBAAgB,EAAE,SAAS;AAAA,EAC7D;AACA,MAAI,UAAU,KAAK,aAAa,GAAG;AACjC,aAAS,KAAK,MAAM,UAAU,KAAK,aAAa,CAAC;AAAA,EACnD,WAAW,UAAU,CAAC,EAAE,gBAAgB;AACtC,aAAS,UAAU,CAAC,EAAE;AAAA,EACxB,OAAO;AACL,aAAS,UAAU,QAAQ;AAC3B,WAAO,KAAK,MAAM,EAAE,QAAQ,SAAO;AACjC,YAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,QAAQ,GAAG,IAAI,GAAG;AACnF,YAAI;AACF,iBAAO,GAAG,IAAI,KAAK,MAAM,KAAK;AAAA,QAChC,SAAS,GAAG;AAAA,QAEZ;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,OAAO,OAAO,iBAAiB,eAAe,OAAO,iBAAiB,aAAa;AACrF,WAAO,eAAe;AAAA,EACxB;AACA,QAAM,SAAS,YAAY,UAAU,CAAC,EAAE,SAAS,IAAI,OAAO,OAAO,UAAU,CAAC,GAAG,MAAM;AACvF,MAAI,WAAW;AACb,WAAO,QAAQ,cAAc,CAAC;AAAA,EAChC;AACA,WAASC,gBAAe;AACtB,WAAO,OAAO;AAAA,EAChB;AACA,QAAM,SAAS,UAAU,QAAQ,MAAM,EAAE,OAAO,WAAS;AACvD,WAAO,aAAE,KAAK,EAAE,OAAO,OAAO,EAAE,OAAO,4CAA4C,EAAE,WAAW;AAAA,EAClG,CAAC,EAAE,GAAG,CAAC;AACP,YAAU,QAAQ,+CAA+C,EAAE,GAAG,cAAcA,aAAY;AAChG,YAAU,QAAQ,QAAQ,EAAE,GAAG,cAAcA,aAAY;AACzD,MAAI,UAAU,OAAO,QAAQ;AAC3B,WAAO,GAAG,YAAYA,aAAY;AAAA,EACpC;AACA,SAAO,GAAG,iBAAiB,MAAM;AAC/B,cAAU,QAAQ,+CAA+C,EAAE,IAAI,cAAcA,aAAY;AACjG,cAAU,QAAQ,QAAQ,EAAE,IAAI,cAAcA,aAAY;AAC1D,QAAI,UAAU,OAAO,QAAQ;AAC3B,aAAO,IAAI,YAAYA,aAAY;AAAA,IACrC;AAAA,EACF,CAAC;AACD,MAAI,QAAQ;AACV,WAAO,GAAG,eAAe,MAAM;AAC7B,UAAI,gBAAgB;AAClB,YAAI,OAAO,IAAI,MAAM,IAAI,UAAU,QAAQ,OAAO,CAAC;AACnD,YAAI,CAAC,KAAM,QAAO,IAAI,MAAM;AAC5B,cAAM,SAAS,KAAK;AACpB,cAAM,cAAc,OAAO,gBAAgB,aAAE,OAAO,MAAM,EAAE,GAAG,OAAO,WAAW,EAAE,CAAC,CAAC;AACrF,YAAI,aAAa;AACf,qBAAW,MAAM;AACf,mBAAO,SAAS,WAAW;AAAA,UAC7B,GAAG,CAAC;AAAA,QACN;AAAA,MACF,OAAO;AACL,YAAI,IAAI,KAAK;AAAA,UACX,OAAO,aAAE,OAAO,MAAM,EAAE,GAAG,OAAO,WAAW;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACF;AACA,IAAO,iBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,SAAS,mBAAmB;AAAA,MAC9B,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EACA,IAAI;AAAA,IACF,YAAY,MAAM;AAChB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,uBAAuB,EAAE,KAAK,cAAY;AACtD,mBAAW,KAAK,KAAK,QAAQ;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,uBAAuB,EAAE,KAAK,cAAY;AACtD,mBAAW,KAAK,KAAK,QAAQ;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,WAAW,MAAM;AACf,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,uBAAuB,EAAE,KAAK,cAAY;AACtD,cAAM,SAAS,IAAI,OAAO,IAAI,QAAQ;AACtC,YAAI,UAAU,OAAO,OAAQ,QAAO,OAAO;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAY;AACtD,mBAAW,KAAK,KAAK,QAAQ;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,OAAO;AACb,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAY;AACtD,cAAM,SAAS,IAAI,OAAO,IAAI,QAAQ;AACtC,YAAI,UAAU,OAAO,OAAQ,QAAO,OAAO;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,uBAAuB,EAAE,KAAK,cAAY;AACtD,YAAI,OAAO,QAAQ,QAAQ;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACrIA,IAAM,eAAN,cAA2B,cAAgB;AAAA,EACzC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,KAAK;AACX,OAAG,MAAM;AACT,UAAMC,YAAW,OAAO;AAAA,MACtB,IAAI,CAAC;AAAA,IACP,GAAG,IAAI,OAAO,YAAY;AAG1B,OAAG,iBAAiBA,SAAQ;AAC5B,OAAG,SAAS,OAAOA,WAAU,MAAM;AACnC,WAAO,IAAI;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,aAAa,GAAG,OAAO,OAAO;AAAA,MAC9B,KAAK,GAAG,OAAO;AAAA,MACf,cAAc;AAAA,QACZ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,aAAa;AAAA,QACb,WAAW;AAAA,MACb;AAAA,IACF,CAAC;AAGD,OAAG,WAAW;AAGd,OAAG,KAAK;AAAA,EACV;AAAA,EACA,IAAI,OAAO;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,WAAO,OAAO,QAAQ,IAAI,MAAM;AAAA,EAClC;AAAA,EACA,cAAc,QAAQ;AACpB,UAAM,KAAK;AACX,OAAG,cAAc,OAAO;AACxB,QAAI,UAAU,OAAO,cAAc;AACnC,QAAI,QAAQ,GAAG,OAAO,gBAAgB,GAAG,OAAO,OAAO,SAAS,OAAO,OAAO;AAC9E,QAAI,OAAO,OAAO,MAAM;AACtB,eAAS;AACT,iBAAW,OAAO;AAClB,UAAI,UAAU,EAAG,WAAU,QAAQ;AACnC,UAAI,UAAU,MAAO,YAAW;AAAA,IAClC;AACA,UAAM,iBAAiB,GAAG,OAAO,gBAAgB,aAAE,OAAO,SAAS,EAAE,KAAK,0CAA0C,OAAO,WAAW,IAAI,IAAI,aAAE,OAAO,MAAM,EAAE,GAAG,OAAO,WAAW;AACpL,UAAM,mBAAmB,GAAG,OAAO,gBAAgB,aAAE,OAAO,SAAS,EAAE,KAAK,0CAA0C,OAAO,aAAa,IAAI,IAAI,aAAE,OAAO,MAAM,EAAE,GAAG,OAAO,aAAa;AAC1L,QAAI,aAAa,GAAG,IAAI,KAAK,wBAAwB;AACrD,QAAI,WAAW,GAAG,IAAI,KAAK,sBAAsB;AACjD,QAAI;AACJ,QAAI,GAAG,OAAO,SAAS,UAAU,GAAG,OAAO,UAAU,WAAW,WAAW,KAAK,GAAG,IAAI,UAAU,OAAO;AACtG,iBAAW,GAAG,IAAI,OAAO,YAAY,GAAG,GAAG;AAC3C,UAAI,UAAU;AACZ,qBAAa,aAAE,QAAQ,EAAE,KAAK,wBAAwB;AACtD,mBAAW,aAAE,QAAQ,EAAE,KAAK,sBAAsB;AAAA,MACpD;AAAA,IACF;AACA,QAAI,WAAW,UAAU,SAAS,QAAQ;AACxC,iBAAW,KAAK,OAAO;AACvB,eAAS,KAAK,KAAK;AACnB,UAAI,CAAC,SAAU,YAAW,WAAW,QAAQ,SAAS,EAAE,CAAC;AACzD,UAAI,UAAU;AACZ,WAAG,IAAI,OAAO,KAAK,QAAQ;AAAA,MAC7B;AAAA,IACF;AAGA,QAAI,GAAG,SAAS,SAAS,GAAG;AAC1B,YAAM,eAAe,OAAO,OAAO,OAAO,eAAe,KAAK,yBAAyB,IAAI,GAAG;AAC9F,SAAG,qBAAqB,KAAK,+BAA+B,EAAE,YAAY,8BAA8B;AACxG,SAAG,qBAAqB,KAAK,wBAAwB,YAAY,IAAI,EAAE,SAAS,8BAA8B;AAAA,IAChH;AAGA,UAAM,qBAAqB,iBAAiB,KAAK,OAAO;AACxD,QAAI,mBAAmB,SAAS,GAAG;AACjC,UAAI,WAAW,mBAAmB,CAAC,EAAG,oBAAmB,CAAC,EAAE,MAAM;AAAA,IACpE;AAAA,EACF;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,UAAM,eAAe,GAAG;AACxB,QAAI,CAAC,aAAa,MAAO;AACzB,iBAAa,YAAY;AAAA,EAC3B;AAAA,EACA,YAAY,GAAG;AACb,UAAM,KAAK;AACX,UAAM,eAAe,GAAG;AACxB,QAAI,CAAC,aAAa,UAAW;AAC7B,QAAI,CAAC,aAAa,SAAS;AACzB,mBAAa,UAAU;AACvB,mBAAa,QAAQ,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AAC3E,UAAI,GAAG,OAAO,eAAe;AAC3B,qBAAa,cAAc,aAAE,GAAG,OAAO,SAAS,EAAE,SAAS,sBAAsB;AAAA,MACnF,OAAO;AACL,qBAAa,cAAc,aAAE,GAAG,OAAO,MAAM,EAAE,GAAG,GAAG,OAAO,WAAW;AAAA,MACzE;AACA,mBAAa,YAAY,IAAI;AAAA,IAC/B;AACA,MAAE,eAAe;AACjB,iBAAa,UAAU,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AAC7E,iBAAa,OAAO,aAAa,QAAQ,aAAa;AACtD,OAAG,IAAI,WAAW,CAAC,EAAE,UAAU,iBAAiB,CAAC,aAAa,IAAI,OAAO;AAAA,EAC3E;AAAA,EACA,aAAa;AACX,UAAM,KAAK;AACX,UAAM,eAAe,GAAG;AACxB,iBAAa,YAAY;AACzB,QAAI,CAAC,aAAa,SAAS;AACzB,mBAAa,UAAU;AACvB;AAAA,IACF;AACA,iBAAa,UAAU;AACvB,iBAAa,QAAQ;AACrB,UAAM,OAAO,KAAK,IAAI,aAAa,IAAI;AACvC,UAAM,YAAW,oBAAI,KAAK,GAAE,QAAQ,IAAI,aAAa;AACrD,QAAI,WAAW,OAAO,OAAO,MAAM,YAAY,OAAO,OAAO,KAAK;AAChE,eAAS,MAAM;AACb,YAAI,GAAG,KAAK;AACV,cAAI,aAAa,OAAO,EAAG,IAAG,IAAI,SAAS,uBAAuB;AAAA,cAAO,IAAG,IAAI,SAAS,oBAAoB;AAAA,QAC/G;AACA,WAAG,KAAK,uBAAuB,EAAE;AACjC,WAAG,IAAI,UAAU,EAAE,EAAE,WAAW,EAAE;AAClC,WAAG,MAAM;AACT,qBAAa,QAAQ;AAAA,MACvB,CAAC;AACD;AAAA,IACF;AACA,QAAI,SAAS,GAAG;AACd,SAAG,IAAI,SAAS,6BAA6B,EAAE,cAAc,MAAM;AACjE,qBAAa,QAAQ;AACrB,WAAG,IAAI,YAAY,6BAA6B;AAAA,MAClD,CAAC;AAAA,IACH,OAAO;AACL,mBAAa,QAAQ;AAAA,IACvB;AACA,aAAS,MAAM;AACb,SAAG,IAAI,UAAU,EAAE,EAAE,WAAW,EAAE;AAAA,IACpC,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,eAAe;AACb,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,aAAc,QAAO,GAAG,OAAO,aAAa,KAAK,EAAE;AACjE,UAAM,aAAa,GAAG,OAAO;AAC7B,UAAM,mBAAmB,GAAG,IAAI,UAAU,SAAS,GAAG,OAAO,mBAAmB,GAAG,OAAO,mBAAmB;AAC7G,UAAM,oBAAoB,OAAO,GAAG,OAAO,oBAAoB,cAAc,GAAG,OAAO,OAAO,SAAS,IAAI,GAAG,OAAO;AACrH,UAAM,UAAU,GAAG,OAAO,SAAS;AACnC,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,+BAA+B,GAAG,OAAO,UAAU,SAAS,8BAA8B,EAAE;AAAA,IACrG,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,CAAC,WAAW,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO,QAAQ,CAAC,mBAAmB,cAAc,EAAE;AAAA,IACrD,GAAG,YAAK,KAAK;AAAA,MACX,OAAO,kBAAkB,aAAa,SAAS,UAAU,KAAK,EAAE;AAAA,IAClE,CAAC,GAAG,oBAAoB,YAAK,QAAQ,MAAM,gBAAgB,CAAC,CAAC,GAAG,qBAAqB,YAAK,OAAO;AAAA,MAC/F,OAAO;AAAA,IACT,GAAG,YAAK,QAAQ;AAAA,MACd,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,YAAY,GAAG,YAAK,QAAQ;AAAA,MACvC,OAAO;AAAA,IACT,CAAC,CAAC,GAAG,YAAY,GAAG,OAAO,sBAAsB,GAAG,OAAO,uBAAuB,YAAK,OAAO;AAAA,MAC5F,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,MACP,cAAc;AAAA,IAChB,GAAG,GAAG,OAAO,sBAAsB,GAAG,IAAI,UAAU,SAAS,YAAK,KAAK,MAAM,YAAK,OAAO;AAAA,MACvF,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,GAAG,YAAK,QAAQ;AAAA,MACd,MAAM;AAAA,MACN,GAAG;AAAA,IACL,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,sBAAsB,GAAG,IAAI,UAAU,QAAQ,YAAK,KAAK,MAAM,YAAK,OAAO;AAAA,MACzF,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,IACR,GAAG,YAAK,QAAQ;AAAA,MACd,GAAG;AAAA,MACH,MAAM;AAAA,IACR,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,GAAG;AAAA,IACL,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,sBAAsB,YAAK,QAAQ,MAAM,GAAG,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3F;AAAA,EACA,gBAAgB;AACd,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,cAAe,QAAO,GAAG,OAAO,cAAc,KAAK,EAAE;AACnE,UAAM,aAAa,GAAG,OAAO;AAC7B,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO,kBAAkB,aAAa,SAAS,UAAU,KAAK,EAAE;AAAA,IAClE,CAAC,CAAC,GAAG,YAAK,KAAK;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO,qBAAqB,aAAa,SAAS,UAAU,KAAK,EAAE;AAAA,IACrE,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,OAAO,IAAI,CAAC,OAAO,UAAU,GAAG,YAAY,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3E;AAAA,EACA,cAAc,SAAS,OAAO;AAC5B,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,cAAe,QAAO,GAAG,OAAO,cAAc,KAAK,IAAI,SAAS,KAAK;AACnF,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,sBAAsB;AAAA,IACxB,GAAG,OAAO;AAAA,EACZ;AAAA,EACA,aAAa,OAAO,OAAO;AACzB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,aAAc,QAAO,GAAG,OAAO,aAAa,KAAK,IAAI,OAAO,KAAK;AAC/E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,2BAA2B;AAAA,IAC7B,GAAG,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,EACpC;AAAA,EACA,gBAAgB,OAAO,OAAO;AAC5B,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,gBAAiB,QAAO,GAAG,OAAO,gBAAgB,KAAK,IAAI,OAAO,KAAK;AACrF,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,2BAA2B;AAAA,IAC7B,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,SAAS;AAAA,MACT,KAAK,MAAM,MAAM,MAAM,MAAM;AAAA,IAC/B,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,YAAY,OAAO,OAAO;AACxB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,IAAI,OAAO,KAAK;AAC7E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,2BAA2B;AAAA,IAC7B,GAAG,YAAK,QAAQ;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,KAAK,MAAM,MAAM,MAAM,MAAM;AAAA,IAC/B,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,YAAY,OAAO,OAAO;AACxB,UAAM,KAAK;AACX,UAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,MAAM;AACtD,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,IAAI,OAAO,KAAK;AAC7E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,2BAA2B;AAAA,IAC7B,GAAG,OAAO,YAAK,OAAO;AAAA,MACpB,KAAK;AAAA,MACL,SAAS;AAAA,IACX,CAAC,CAAC;AAAA,EACJ;AAAA,EACA,SAAS;AACP,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,OAAQ,QAAO,GAAG,OAAO,OAAO,KAAK,IAAI,GAAG,MAAM;AAChE,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,+BAA+B,GAAG,OAAO,KAAK;AAAA,IACvD,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,8CAA8C,GAAG,OAAO,KAAK,eAAe,CAAC,GAAG,OAAO,SAAS,cAAc,EAAE;AAAA,MACvH,aAAa;AAAA,IACf,GAAG,GAAG,OAAO,UAAU,GAAG,aAAa,GAAG,GAAG,OAAO,WAAW,GAAG,cAAc,GAAG,GAAG,OAAO,UAAU,GAAG,OAAO,OAAO,UAAU,GAAG,aAAa,GAAG,YAAK,OAAO;AAAA,MAC/J,OAAO,iDAAiD,GAAG,OAAO,iBAAiB,GAAG,OAAO,KAAK;AAAA,IACpG,GAAG,GAAG,OAAO,OAAO,IAAI,CAAC,OAAO,UAAU;AACxC,UAAI,MAAM,QAAS,QAAO,GAAG,cAAc,MAAM,SAAS,KAAK;AAC/D,aAAO;AAAA,IACT,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MACf,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,CAAC,GAAG,OAAO,iBAAiB,GAAG,OAAO,OAAO,IAAI,CAAC,OAAO,UAAU;AACpE,UAAI,MAAM,SAAS,OAAO,UAAU,YAAY,iBAAiB,WAAW,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,QAAQ,GAAG,KAAK,GAAG;AAC9H,eAAO,GAAG,aAAa,OAAO,KAAK;AAAA,MACrC;AACA,UAAI,GAAG,OAAO,SAAS,MAAM;AAC3B,eAAO,GAAG,gBAAgB,OAAO,KAAK;AAAA,MACxC;AACA,aAAO,GAAG,YAAY,OAAO,KAAK;AAAA,IACpC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,EACR;AAAA,EACA,mBAAmB;AACjB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,iBAAkB,QAAO,GAAG,OAAO,iBAAiB,KAAK,EAAE;AACzE,UAAM,iBAAiB,2FAA2F,GAAG,OAAO,CAAC;AAC7H,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAY,QAAO,GAAG,OAAO,WAAW,KAAK,EAAE;AAC7D,UAAM,WAAW,GAAG,OAAO;AAC3B,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,EAAE;AAC/D,UAAM,YAAY,0CAA0C,GAAG,OAAO,CAAC;AACvE,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,OAAO,MAAM,IAAI;AACf,UAAM,KAAK;AACX,UAAM,MAAM,GAAG;AACf,UAAM,MAAM,aAAE,EAAE;AAChB,QAAI,CAAC,EAAE,iBAAiB;AACxB,OAAG,MAAM;AACT,OAAG,KAAK,IAAI,CAAC;AACb,OAAG,WAAW;AACd,OAAG,SAAS;AACZ,OAAG,qBAAqB,GAAG,IAAI,KAAK,iCAAiC;AACrE,OAAG,mBAAmB,GAAG,IAAI,KAAK,+BAA+B;AACjE,OAAG,SAAS,GAAG,IAAI,KAAK,sBAAsB;AAC9C,OAAG,uBAAuB,GAAG,IAAI,KAAK,yBAAyB;AAC/D,OAAG,WAAW,GAAG,IAAI,KAAK,wBAAwB;AAClD,UAAM,YAAY,GAAG,OAAO,UAAU,GAAG,OAAO,OAAO,SAAS;AAGhE,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,eAAe,GAAG;AACxB,UAAM,eAAe,OAAO,CAAC,GAAG,GAAG,OAAO,QAAQ;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI;AAAA,QACF,MAAM,GAAG;AACP,uBAAa,YAAY;AACzB,cAAI,GAAG,OAAO,YAAY;AACxB,2BAAe,WAAW,MAAM;AAC9B,iBAAG,iBAAiB;AAAA,YACtB,GAAG,GAAG;AAAA,UACR;AACA,aAAG,KAAK,cAAc,CAAC;AACvB,aAAG,KAAK,gBAAgB,CAAC;AAAA,QAC3B;AAAA,QACA,YAAY,GAAG;AACb,uBAAa,YAAY;AACzB,aAAG,KAAK,oBAAoB,CAAC;AAC7B,aAAG,KAAK,sBAAsB,CAAC;AAAA,QACjC;AAAA,QACA,cAAc;AACZ,gBAAM,SAAS;AACf,cAAI,aAAa,GAAG,gBAAgB,CAAC,kBAAkB;AACrD,iCAAqB;AACrB,eAAG,aAAa,QAAQ,GAAG,OAAO,WAAW;AAC7C,uBAAW,MAAM;AACf,mCAAqB;AAAA,YACvB,CAAC;AAAA,UACH;AACA,aAAG,cAAc,MAAM;AACvB,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,aAAG,KAAK,sBAAsB,GAAG,IAAI;AAAA,QACvC;AAAA,QACA,kBAAkB;AAChB,mBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,iBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,UAC/B;AACA,aAAG,KAAK,0BAA0B,GAAG,IAAI;AAAA,QAC3C;AAAA,QACA,gBAAgB;AACd,mBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,iBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,UAC/B;AACA,aAAG,KAAK,wBAAwB,GAAG,IAAI;AAAA,QACzC;AAAA,QACA,6BAA6B;AAC3B,gBAAM,SAAS;AACf,aAAG,cAAc,MAAM;AACvB,mBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,iBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,UAC/B;AACA,aAAG,KAAK,qCAAqC,GAAG,IAAI;AAAA,QACtD;AAAA,QACA,2BAA2B;AACzB,mBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,iBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,UAC/B;AACA,aAAG,KAAK,mCAAmC,GAAG,IAAI;AAAA,QACpD;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,GAAG,OAAO,gBAAgB,GAAG,OAAO,SAAS,QAAQ;AACvD,aAAO,aAAa,IAAI;AAAA,QACtB,WAAW,QAAQ,GAAG;AACpB,aAAG,aAAa,CAAC;AACjB,aAAG,KAAK,qBAAqB,CAAC;AAAA,QAChC;AAAA,QACA,kBAAkB,QAAQ,GAAG;AAC3B,aAAG,YAAY,CAAC;AAChB,aAAG,KAAK,4BAA4B,CAAC;AAAA,QACvC;AAAA,QACA,SAAS,QAAQ,GAAG;AAClB,aAAG,WAAW,CAAC;AACf,aAAG,KAAK,mBAAmB,CAAC;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,GAAG,OAAO,eAAe;AAC3B,aAAO,cAAc;AAAA,QACnB,SAAS;AAAA,UACP,QAAQ,GAAG,OAAO;AAAA,UAClB,YAAY,OAAO,OAAO;AACxB,gBAAI,MAAM,SAAS,OAAO,UAAU,YAAY,iBAAiB,WAAW,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,QAAQ,GAAG,KAAK,GAAG;AAC9H,qBAAO,GAAG,aAAa,OAAO,KAAK;AAAA,YACrC;AACA,gBAAI,GAAG,OAAO,SAAS,MAAM;AAC3B,qBAAO,GAAG,gBAAgB,OAAO,KAAK;AAAA,YACxC;AACA,mBAAO,GAAG,YAAY,OAAO,KAAK;AAAA,UACpC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,UAAMC,UAAS,UAAU;AACzB,OAAG,SAAS,IAAI,SAAS,IAAI,OAAO,OAAO,GAAG,mBAAmB,CAAC,GAAG,YAAY,IAAI,IAAIA,QAAO,OAAO,GAAG,mBAAmB,CAAC,GAAG,YAAY;AAC7I,QAAI,GAAG,gBAAgB,KAAK,GAAG,OAAO,eAAe;AACnD,SAAG,cAAc,GAAG,MAAM;AAAA,IAC5B;AACA,QAAI,WAAW;AACb,YAAM,qBAAqB;AAAA,QACzB,IAAI,GAAG,IAAI,KAAK,+BAA+B,EAAE,CAAC;AAAA,QAClD,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,qBAAqB;AAAA,QACrB;AAAA,QACA,IAAI;AAAA,UACF,YAAY;AACV,+BAAmB;AAAA,UACrB;AAAA,UACA,WAAW;AACT,+BAAmB;AAAA,UACrB;AAAA,UACA,YAAY,GAAG;AACb,gBAAI,mBAAoB;AACxB,eAAG,OAAO,QAAQ,EAAE,aAAa,CAAC;AAAA,UACpC;AAAA,UACA,MAAM,GAAG;AACP,gBAAI,CAAC,EAAE,aAAc;AACrB,kBAAM,QAAQ,SAAS,aAAE,EAAE,YAAY,EAAE,KAAK,yBAAyB,GAAG,EAAE;AAC5E,cAAE,QAAQ,OAAO,CAAC;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AACA,SAAG,eAAe,IAAI,SAAS,IAAI,OAAO,OAAO,kBAAkB,IAAI,IAAIA,QAAO,OAAO,kBAAkB;AAAA,IAC7G;AACA,QAAI,GAAG,KAAK;AACV,SAAG,IAAI,QAAQ,mBAAmB;AAAA,IACpC;AACA,OAAG,KAAK,gCAAgC,EAAE;AAAA,EAC5C;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,GAAG,OAAO,SAAS,cAAc;AAC7C,SAAG,IAAI,IAAI,aAAa,MAAM;AAAA,IAChC;AACA,QAAI,GAAG,KAAK;AACV,SAAG,IAAI,QAAQ,qBAAqB;AAAA,IACtC;AACA,OAAG,KAAK,oCAAoC,EAAE;AAAA,EAChD;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,QAAI,GAAG,UAAW;AAGlB,QAAI,GAAG,UAAU,GAAG,OAAO,SAAS;AAClC,SAAG,OAAO,QAAQ,MAAM,KAAK;AAC7B,SAAG,SAAS;AACZ,aAAO,GAAG;AAAA,IACZ;AACA,QAAI,GAAG,gBAAgB,GAAG,aAAa,SAAS;AAC9C,SAAG,aAAa,QAAQ,MAAM,KAAK;AACnC,SAAG,eAAe;AAClB,aAAO,GAAG;AAAA,IACZ;AACA,QAAI,GAAG,KAAK;AACV,SAAG,IAAI,QAAQ,oBAAoB;AAAA,IACrC;AACA,OAAG,KAAK,kCAAkC,EAAE;AAAA,EAC9C;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,UAAW;AAClB,OAAG,SAAS;AACZ,OAAG,MAAM;AACT,OAAG,KAAK;AACR,WAAO,GAAG;AACV,WAAO,GAAG;AACV,QAAI,GAAG,KAAK;AACV,SAAG,IAAI,QAAQ,qBAAqB;AAAA,IACtC;AACA,OAAG,KAAK,oCAAoC,EAAE;AAAA,EAChD;AAAA;AAAA,EAGA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,UAAM,WAAW,GAAG,WAAW;AAC/B,OAAG,KAAK,OAAO,SAAS;AAAA,MACtB,KAAK,GAAG;AAAA,MACR,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM,GAAG;AAAA,QACT,IAAI;AAAA,UACF,aAAa,GAAG,MAAM;AACpB,eAAG,KAAK,IAAI,SAAS,mDAAmD,GAAG,OAAO,KAAK,EAAE;AACzF,eAAG,OAAO,QAAQ,KAAK,EAAE;AAAA,UAC3B;AAAA,UACA,YAAY,GAAG,MAAM;AACnB,eAAG,SAAS,QAAQ,KAAK,EAAE;AAAA,UAC7B;AAAA,UACA,cAAc,GAAG,MAAM;AACrB,eAAG,KAAK,IAAI,YAAY,mFAAmF,GAAG,OAAO,KAAK,EAAE;AAC5H,eAAG,QAAQ,QAAQ,KAAK,EAAE;AAAA,UAC5B;AAAA,UACA,aAAa,GAAG,MAAM;AACpB,eAAG,SAAS,QAAQ,KAAK,EAAE;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,UAAM,iBAAiB,GAAG,iBAAiB;AAC3C,UAAM,cAAc;AAAA,MAClB,UAAU;AAAA,MACV,SAAS;AAAA,MACT,IAAI;AAAA,QACF,UAAU,OAAO;AACf,aAAG,OAAO,SAAS,MAAM,EAAE;AAAA,QAC7B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,QACA,WAAW,OAAO;AAChB,aAAG,QAAQ,SAAS,MAAM,EAAE;AAAA,QAC9B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,QAAI,GAAG,OAAO,kBAAkB,GAAG,MAAM;AACvC,SAAG,KAAK,OAAO,SAAS;AAAA,QACtB,KAAK,GAAG;AAAA,QACR,OAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,SAAG,QAAQ,GAAG,IAAI,MAAM,OAAO,WAAW,EAAE,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,UAAM,YAAY,GAAG,YAAY;AACjC,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,MAAM,GAAG,OAAO;AAAA,MAChB,sBAAsB,GAAG,OAAO;AAAA,MAChC,IAAI;AAAA,QACF,UAAU,OAAO;AACf,aAAG,OAAO,SAAS,MAAM,EAAE;AAAA,QAC7B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,QACA,WAAW,OAAO;AAChB,aAAG,QAAQ,SAAS,MAAM,EAAE;AAAA,QAC9B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,QAAI,GAAG,OAAO,kBAAkB,GAAG,MAAM;AACvC,SAAG,KAAK,OAAO,SAAS;AAAA,QACtB,KAAK,GAAG;AAAA,QACR,OAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,SAAG,QAAQ,GAAG,IAAI,MAAM,OAAO,WAAW,EAAE,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,mBAAmB;AACjB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,SAAS,QAAQ;AAC7B,SAAG,KAAK,IAAI,SAAS,iCAAiC;AAAA,IACxD;AACA,QAAI,GAAG,IAAK,IAAG,IAAI,SAAS,uBAAuB;AACnD,QAAI,GAAG,OAAO,uBAAwB,IAAG,qBAAqB,SAAS,gCAAgC;AACvG,OAAG,UAAU;AACb,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,SAAS,QAAQ;AAC7B,SAAG,KAAK,IAAI,YAAY,iCAAiC;AAAA,IAC3D;AACA,QAAI,GAAG,IAAK,IAAG,IAAI,YAAY,uBAAuB;AACtD,QAAI,GAAG,OAAO,uBAAwB,IAAG,qBAAqB,YAAY,gCAAgC;AAC1G,OAAG,UAAU;AACb,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,SAAS,QAAQ;AAC7B,SAAG,KAAK,IAAI,YAAY,iCAAiC;AAAA,IAC3D;AACA,QAAI,GAAG,IAAK,IAAG,IAAI,YAAY,uBAAuB;AACtD,QAAI,GAAG,OAAO,uBAAwB,IAAG,qBAAqB,YAAY,gCAAgC;AAC1G,OAAG,UAAU,CAAC,GAAG;AACjB,WAAO;AAAA,EACT;AAAA,EACA,KAAK,OAAO;AACV,UAAM,KAAK;AACX,UAAM,OAAO,GAAG,OAAO;AACvB,QAAI,GAAG,QAAQ;AACb,UAAI,GAAG,UAAU,OAAO,UAAU,aAAa;AAC7C,WAAG,OAAO,QAAQ,SAAS,OAAO,EAAE,CAAC;AAAA,MACvC;AACA,aAAO;AAAA,IACT;AACA,QAAI,OAAO,UAAU,aAAa;AAChC,SAAG,cAAc;AAAA,IACnB;AACA,QAAI,SAAS,cAAc;AACzB,SAAG,eAAe;AAAA,IACpB;AACA,QAAI,SAAS,QAAQ;AACnB,SAAG,SAAS;AAAA,IACd;AACA,QAAI,SAAS,SAAS;AACpB,SAAG,UAAU;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,OAAQ,QAAO;AACvB,QAAI,GAAG,OAAO,kBAAkB,GAAG,QAAQ,GAAG,aAAa,QAAQ;AACjE,SAAG,KAAK,OAAO,KAAK;AAAA,IACtB,OAAO;AACL,SAAG,MAAM,KAAK,eAAe,MAAM;AACjC,iBAAS,MAAM;AACb,cAAI,GAAG,UAAW;AAClB,aAAG,MAAM,QAAQ;AACjB,iBAAO,GAAG;AAAA,QACZ,CAAC;AAAA,MACH,CAAC;AACD,SAAG,MAAM,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,OAAO;AAAA,EAAC;AAAA,EACR,UAAU;AACR,QAAI,KAAK;AACT,OAAG,KAAK,kDAAkD,EAAE;AAC5D,QAAI,GAAG,KAAK;AACV,SAAG,IAAI,QAAQ,4BAA4B;AAC3C,SAAG,IAAI,CAAC,EAAE,iBAAiB;AAC3B,aAAO,GAAG,IAAI,CAAC,EAAE;AAAA,IACnB;AACA,gBAAY,EAAE;AACd,OAAG,YAAY;AACf,SAAK;AAAA,EACP;AACF;AACA,IAAO,8BAAQ;;;AC3tBf,IAAO,wBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ,QAAQ,CAAC;AAAA,MACT,QAAQ,CAAC;AAAA,MACT,YAAY;AAAA,MACZ,wBAAwB;AAAA,MACxB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,MAAM;AAAA,MACN,sBAAsB;AAAA,MACtB,cAAc;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,MACf,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,cAAc;AAAA,QACd,cAAc;AAAA,QACd,OAAO;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,UACR,SAAS;AAAA,QACX;AAAA,QACA,YAAY;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,UAAU;AAAA,UACV,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,eAAe,mBAAmB;AAAA,MACpC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AACF;;;ACnEA,IAAM,eAAN,cAA2B,oBAAM;AAAA,EAC/B,YAAY,KAAK,QAAQ;AACvB,UAAM,iBAAiB,OAAO;AAAA,MAC5B,IAAI,CAAC;AAAA,IACP,GAAG,IAAI,OAAO,cAAc,MAAM;AAGlC,UAAM,KAAK,cAAc;AACzB,UAAM,eAAe;AACrB,iBAAa,MAAM;AACnB,iBAAa,SAAS;AACtB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,aAAa;AACjB,QAAI;AACJ,QAAI,CAAC,aAAa,OAAO,IAAI;AAE3B,YAAM,mBAAmB,aAAa,OAAO;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,YAAM,aAAE,gBAAgB;AAAA,IAC1B,OAAO;AACL,YAAM,aAAE,aAAa,OAAO,EAAE;AAAA,IAChC;AACA,QAAI,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE,SAAS;AAC3C,aAAO,IAAI,CAAC,EAAE;AAAA,IAChB;AACA,QAAI,IAAI,WAAW,GAAG;AACpB,aAAO,aAAa,QAAQ;AAAA,IAC9B;AACA,WAAO,cAAc;AAAA,MACnB;AAAA,MACA,IAAI,IAAI,CAAC;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AACD,QAAI,CAAC,EAAE,UAAU;AACjB,QAAI,aAAa;AACf,UAAI,KAAK,4BAA4B,EAAE,GAAG,SAAS,MAAM;AACvD,qBAAa,MAAM;AAAA,MACrB,CAAC;AAAA,IACH;AACA,QAAI,GAAG,SAAS,OAAK;AACnB,UAAI,eAAe,aAAE,EAAE,MAAM,EAAE,QAAQ,4BAA4B,EAAE,QAAQ;AAC3E;AAAA,MACF;AACA,mBAAa,KAAK,kCAAkC,YAAY;AAChE,UAAI,aAAc,cAAa,MAAM;AAAA,IACvC,CAAC;AACD,iBAAa,GAAG,iBAAiB,MAAM;AACrC,UAAI,IAAI,OAAO;AAAA,IACjB,CAAC;AAGD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,eAAe,CAAC;AACtB,aAAS,iBAAiB,GAAG;AAC3B,UAAI,UAAW;AACf,kBAAY;AACZ,gBAAU;AACV,oBAAc;AACd,uBAAiB,IAAI;AACrB,mBAAa,IAAI,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACxE,mBAAa,IAAI,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AAAA,IAC1E;AACA,aAAS,gBAAgB,GAAG;AAC1B,UAAI,CAAC,UAAW;AAChB,YAAM,QAAQ,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACpE,YAAM,QAAQ,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACpE,UAAI,OAAO,gBAAgB,aAAa;AACtC,sBAAc,CAAC,EAAE,eAAe,KAAK,IAAI,QAAQ,aAAa,CAAC,IAAI,KAAK,IAAI,QAAQ,aAAa,CAAC;AAAA,MACpG;AACA,UAAI,aAAa;AACf,oBAAY;AACZ;AAAA,MACF;AACA,QAAE,eAAe;AACjB,UAAI,CAAC,SAAS;AACZ,qBAAa,IAAI,YAAY,4BAA4B;AACzD,qBAAa,IAAI,WAAW,CAAC;AAC7B,6BAAqB,aAAa,IAAI,CAAC,EAAE,eAAe;AAAA,MAC1D;AACA,gBAAU;AACV,oBAAc,QAAQ,aAAa;AACnC,UAAI,eAAe;AACnB,UAAI,cAAc,GAAG;AACnB,uBAAe,eAAe;AAAA,MAChC;AACA,mBAAa,IAAI,UAAU,kBAAkB,YAAY,QAAQ;AAAA,IACnE;AACA,aAAS,iBAAiB;AACxB,UAAI,CAAC,aAAa,CAAC,SAAS;AAC1B,oBAAY;AACZ,kBAAU;AACV;AAAA,MACF;AACA,kBAAY;AACZ,gBAAU;AACV,UAAI,gBAAgB,GAAG;AACrB;AAAA,MACF;AACA,YAAM,WAAW,IAAI,IAAI;AACzB,mBAAa,IAAI,WAAW,EAAE;AAC9B,mBAAa,IAAI,SAAS,4BAA4B;AACtD,mBAAa,IAAI,UAAU,EAAE;AAC7B,UAAI,cAAc,OAAO,WAAW,OAAO,CAAC,eAAe,qBAAqB,GAAG;AACjF,qBAAa,MAAM;AAAA,MACrB;AAAA,IACF;AACA,aAAS,oBAAoB;AAC3B,mBAAa,IAAI,GAAG,IAAI,YAAY,OAAO,kBAAkB;AAAA,QAC3D,SAAS;AAAA,MACX,CAAC;AACD,UAAI,GAAG,oBAAoB,eAAe;AAC1C,UAAI,GAAG,oBAAoB,cAAc;AAAA,IAC3C;AACA,aAAS,oBAAoB;AAC3B,mBAAa,IAAI,IAAI,IAAI,YAAY,OAAO,kBAAkB;AAAA,QAC5D,SAAS;AAAA,MACX,CAAC;AACD,UAAI,IAAI,oBAAoB,eAAe;AAC3C,UAAI,IAAI,oBAAoB,cAAc;AAAA,IAC5C;AACA,QAAI;AACJ,aAAS,iBAAiB;AACxB,kBAAY,SAAS,MAAM;AACzB,YAAI,aAAa,SAAS;AACxB,yBAAe;AACf;AAAA,QACF;AACA,qBAAa,MAAM;AAAA,MACrB,GAAG,YAAY;AAAA,IACjB;AACA,iBAAa,GAAG,QAAQ,MAAM;AAC5B,UAAI,aAAa,OAAO,cAAc;AACpC,0BAAkB;AAAA,MACpB;AACA,mBAAE,wBAAwB,EAAE,KAAK,cAAY;AAC3C,cAAM,uBAAuB,IAAI,aAAa,IAAI,QAAQ;AAC1D,YAAI,aAAa,aAAa,MAAM,sBAAsB;AACxD,+BAAqB,MAAM;AAAA,QAC7B;AAAA,MACF,CAAC;AACD,UAAI,cAAc;AAChB,uBAAe;AAAA,MACjB;AAAA,IACF,CAAC;AACD,iBAAa,GAAG,uBAAuB,MAAM;AAC3C,UAAI,aAAa,OAAO,cAAc;AACpC,0BAAkB;AAAA,MACpB;AACA,mBAAa,SAAS;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,eAAe;AACrB,QAAI,aAAa,OAAO,OAAQ,QAAO,aAAa,OAAO,OAAO,KAAK,cAAc,YAAY;AACjG,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,aAAa;AACjB,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,gBAAgB,OAAO,2BAA2B,EAAE,IAAI,YAAY,EAAE;AAAA,IAC/E,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,QAAQ,YAAK,OAAO;AAAA,MACrB,OAAO;AAAA,IACT,GAAG,IAAI,GAAG,SAAS,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,KAAK,GAAG,kBAAkB,YAAK,OAAO;AAAA,MACvC,OAAO;AAAA,IACT,GAAG,cAAc,GAAG,eAAe,YAAK,QAAQ;AAAA,MAC9C,OAAO;AAAA,IACT,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MACf,OAAO;AAAA,IACT,GAAG,YAAY,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,QAAQ,GAAG,QAAQ,YAAK,OAAO;AAAA,MAChC,OAAO;AAAA,IACT,GAAG,IAAI,CAAC,CAAC;AAAA,EACX;AACF;AACA,IAAO,6BAAQ;;;AChNf,IAAO,uBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,eAAe,OAAO,CAAC,GAAG,aAAa;AAAA,MACzC;AAAA,MACA,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB,CAAC,CAAC;AAAA,EACJ;AAAA,EACA,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,IACf;AAAA,EACF;AACF;;;ACzBA,IAAM,eAAN,cAA2B,cAAgB;AAAA,EACzC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,KAAK;AACX,OAAG,MAAM;AACT,UAAM,SAAS,UAAU;AACzB,UAAMC,YAAW,OAAO;AAAA,MACtB,IAAI,CAAC;AAAA,IACP,GAAG,IAAI,OAAO,YAAY;AAG1B,OAAG,iBAAiBA,SAAQ;AAC5B,OAAG,SAAS,OAAOA,WAAU,MAAM;AACnC,QAAI;AACJ,QAAI,GAAG,OAAO,UAAU;AACtB,kBAAY,aAAE,GAAG,OAAO,QAAQ;AAChC,UAAI,UAAU,OAAQ,WAAU,CAAC,EAAE,iBAAiB;AAAA,IACtD;AACA,QAAI;AACJ,QAAI,GAAG,OAAO,SAAS;AACrB,iBAAW,aAAE,GAAG,OAAO,OAAO;AAC9B,UAAI,SAAS,OAAQ,UAAS,CAAC,EAAE,iBAAiB;AAAA,IACpD;AACA,UAAM,WAAW,GAAG;AACpB,QAAI,MAAM,OAAO;AACjB,QAAI,CAAC,OAAO,aAAa,UAAU,QAAQ;AACzC,UAAI,UAAU,KAAK,MAAM,EAAG,OAAM,UAAU,KAAK,MAAM;AAAA,eAAW,UAAU,KAAK,GAAG,EAAE,SAAS,GAAG;AAChG,cAAM,UAAU,KAAK,GAAG,EAAE,KAAK,MAAM;AAAA,MACvC;AAAA,IACF;AACA,QAAI,CAAC,OAAO,QAAQ,OAAO,QAAQ,GAAI,OAAM,GAAG,OAAO;AACvD,UAAM,YAAY,GAAG,OAAO,WAAW,aAAa;AACpD,WAAO,IAAI;AAAA,MACT;AAAA,MACA,UAAU,aAAa,UAAU,CAAC;AAAA,MAClC;AAAA,MACA,SAAS,YAAY,SAAS,CAAC;AAAA,MAC/B,IAAI;AAAA,MACJ;AAAA,MACA,OAAO,GAAG,OAAO,SAAS,CAAC;AAAA,MAC3B;AAAA,MACA,WAAW,GAAG,SAAS,IAAI,QAAQ;AAAA,MACnC,UAAU;AAAA,MACV,aAAa;AAAA,IACf,CAAC;AACD,QAAI,gBAAgB;AACpB,aAAS,gBAAgB;AACvB,UAAI,QAAQ,GAAG,SAAS,IAAI,EAAE,KAAK;AACnC,UAAI,CAAC,GAAG,OAAO,OAAQ;AACvB,SAAG,OAAO,OAAO,KAAK,IAAI,OAAO,WAAS;AACxC,YAAI,YAAY;AAChB,cAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,IAAI,GAAG,OAAO,OAAO,MAAM,MAAM,IAAI,MAAM;AAChF,WAAG,QAAQ;AACX,YAAI;AACJ,YAAI,GAAG,OAAO,kBAAkB;AAC9B,kBAAQ,MAAM,QAAQ,uCAAuC,MAAM;AACnE,mBAAS,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG;AAAA,QACvC;AACA,YAAI;AACJ,YAAI;AACJ,iBAAS,IAAI,GAAG,IAAI,OAAO,KAAK,GAAG;AACjC,gBAAM,YAAY,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,MAAM,CAAC;AAC5F,gBAAM,WAAW,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,EAAE,GAAG,OAAO,YAAY,IAAI,MAAM,CAAC;AAC1F,cAAI,MAAM,GAAG;AACX,yBAAa;AACb,wBAAY,GAAG,MAAM,CAAC;AAAA,UACxB;AACA,uBAAa,GAAG,WAAW;AAAA,YACzB,OAAO;AAAA,YACP,MAAM,GAAG,OAAO,mBAAmB,SAAS,QAAQ,QAAQ,WAAW,IAAI;AAAA,UAC7E,GAAG,CAAC;AAAA,QACN;AACA,YAAI,cAAc,MAAM,UAAU,MAAM,GAAG,OAAO,yBAAyB;AACzE,uBAAa,GAAG,WAAW;AAAA,YACzB,aAAa;AAAA,YACb,MAAM,GAAG,OAAO;AAAA,UAClB,CAAC;AAAA,QACH;AACA,WAAG,YAAY,KAAK,IAAI,EAAE,KAAK,SAAS;AACxC,YAAI,GAAG,OAAO,WAAW;AACvB,cAAI,CAAC,cAAc,CAAC,WAAW;AAC7B;AAAA,UACF;AACA,cAAI,WAAW,YAAY,EAAE,QAAQ,MAAM,YAAY,CAAC,MAAM,GAAG;AAC/D;AAAA,UACF;AACA,cAAI,cAAc,YAAY,MAAM,MAAM,YAAY,GAAG;AACvD,eAAG,QAAQ,CAAC;AACZ;AAAA,UACF;AACA,cAAI,cAAc,YAAY,EAAE,QAAQ,MAAM,YAAY,CAAC,MAAM,GAAG;AAClE,4BAAgB;AAChB,eAAG,QAAQ,CAAC;AACZ;AAAA,UACF;AACA,mBAAS,IAAI,UAAU;AACvB,mBAAS,CAAC,EAAE,kBAAkB,MAAM,QAAQ,WAAW,MAAM;AAC7D,gBAAM,gBAAgB,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,GAAG,MAAM,CAAC;AACzG,cAAI,CAAC,iBAAiB,WAAW,YAAY,MAAM,cAAc,YAAY,GAAG;AAC9E,eAAG,QAAQ,CAAC,SAAS;AACrB,eAAG,KAAK,oCAAoC,CAAC,SAAS,CAAC;AAAA,UACzD;AAAA,QACF;AACA,wBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AACA,aAAS,oBAAoB;AAC3B,YAAM,UAAU;AAChB,YAAM,QAAQ,QAAQ;AACtB,YAAM,WAAW,aAAE,OAAO,EAAE,QAAQ,sBAAsB,EAAE,SAAS;AACrE,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,UAAU;AACZ,YAAI,GAAG,cAAc,cAAc,CAAC,QAAQ,SAAS;AACnD,mBAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,KAAK,GAAG;AAC3C,qBAAS,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa;AAC5F,gBAAI,WAAW,SAAS,SAAS,MAAM,QAAQ,GAAG;AAChD,iBAAG,MAAM,OAAO,GAAG,CAAC;AAAA,YACtB;AAAA,UACF;AACA,aAAG,aAAa;AAChB,aAAG,KAAK,oCAAoC,GAAG,KAAK;AAAA,QACtD;AACA;AAAA,MACF;AAGA,eAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,KAAK,GAAG;AAC3C,oBAAY,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,GAAG,MAAM,CAAC;AAC/F,YAAI,cAAc,SAAS,YAAY,MAAM,QAAQ,EAAG,QAAO,GAAG,MAAM,CAAC;AAAA,MAC3E;AACA,UAAI,GAAG,cAAc,SAAS;AAC5B,WAAG,QAAQ,CAAC,IAAI;AAAA,MAClB,WAAW,QAAQ,SAAS;AAC1B,WAAG,MAAM,KAAK,IAAI;AAAA,MACpB,OAAO;AACL,iBAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,KAAK,GAAG;AAC3C,mBAAS,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,GAAG,MAAM,CAAC;AAC5F,cAAI,WAAW,SAAS,SAAS,MAAM,QAAQ,GAAG;AAChD,eAAG,MAAM,OAAO,GAAG,CAAC;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAGA,SAAG,aAAa;AAGhB,UAAI,GAAG,cAAc,WAAW,QAAQ,WAAW,GAAG,cAAc,YAAY;AAC9E,WAAG,KAAK,oCAAoC,GAAG,KAAK;AAAA,MACtD;AAAA,IACF;AACA,aAAS,YAAY,GAAG;AACtB,YAAM,YAAY,aAAE,EAAE,MAAM;AAC5B,UAAI,UAAU,GAAG,GAAG,SAAS,CAAC,CAAC,KAAK,GAAG,eAAe,UAAU,QAAQ,GAAG,YAAY,CAAC,CAAC,EAAE,OAAQ;AACnG,SAAG,MAAM;AAAA,IACX;AACA,aAAS,gBAAgB;AACvB,SAAG,KAAK;AAAA,IACV;AACA,aAAS,eAAe;AACtB,SAAG,KAAK;AAAA,IACV;AACA,aAAS,cAAc;AACrB,UAAI,GAAG,YAAY,KAAK,oBAAoB,EAAE,SAAS,EAAG;AAC1D,iBAAW,MAAM;AACf,WAAG,MAAM;AAAA,MACX,GAAG,CAAC;AAAA,IACN;AACA,aAASC,YAAW;AAClB,SAAG,iBAAiB;AAAA,IACtB;AACA,aAAS,UAAU,GAAG;AACpB,UAAI,CAAC,GAAG,OAAQ;AAChB,UAAI,EAAE,YAAY,IAAI;AAEpB,UAAE,eAAe;AACjB,WAAG,SAAS,KAAK;AACjB;AAAA,MACF;AACA,UAAI,EAAE,YAAY,IAAI;AAEpB,cAAM,qBAAqB,GAAG,YAAY,KAAK,uCAAuC;AACtF,YAAI,mBAAmB,QAAQ;AAC7B,YAAE,eAAe;AACjB,6BAAmB,QAAQ,OAAO;AAClC,aAAG,SAAS,KAAK;AACjB;AAAA,QACF;AACA,YAAI,GAAG,OAAO,WAAW;AACvB,YAAE,eAAe;AACjB,aAAG,SAAS,KAAK;AAAA,QACnB;AACA;AAAA,MACF;AACA,UAAI,EAAE,YAAY,MAAM,EAAE,YAAY,GAAI;AAC1C,QAAE,eAAe;AACjB,YAAM,gBAAgB,GAAG,YAAY,KAAK,iCAAiC;AAC3E,UAAI;AACJ,UAAI,cAAc,QAAQ;AACxB,mBAAW,cAAc,EAAE,YAAY,KAAK,SAAS,MAAM,EAAE,IAAI;AACjE,YAAI,CAAC,SAAS,QAAQ;AACpB,qBAAW,GAAG,YAAY,KAAK,IAAI,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,YAAY,KAAK,IAAI,EAAE,SAAS,CAAC;AAAA,QACrG;AAAA,MACF,OAAO;AACL,mBAAW,GAAG,YAAY,KAAK,IAAI,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,YAAY,KAAK,IAAI,EAAE,SAAS,CAAC;AAAA,MACrG;AACA,UAAI,SAAS,SAAS,mCAAmC,EAAG;AAC5D,oBAAc,YAAY,gCAAgC;AAC1D,eAAS,SAAS,gCAAgC;AAAA,IACpD;AACA,aAAS,kBAAkB;AACzB,YAAM,aAAa,aAAE,IAAI;AACzB,UAAI;AACJ,eAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,KAAK,GAAG;AAC3C,cAAM,YAAY,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,GAAG,MAAM,CAAC;AACrG,cAAM,QAAQ,WAAW,KAAK,YAAY;AAC1C,YAAI,cAAc,SAAS,YAAY,MAAM,QAAQ,GAAG;AACtD,wBAAc,GAAG,MAAM,CAAC;AAAA,QAC1B;AAAA,MACF;AACA,UAAI,GAAG,OAAO,0BAA0B;AACtC,WAAG,SAAS,IAAI,OAAO,gBAAgB,WAAW,YAAY,GAAG,OAAO,aAAa,IAAI,WAAW;AACpG,WAAG,SAAS,QAAQ,cAAc;AAAA,MACpC;AACA,SAAG,QAAQ,CAAC,WAAW;AACvB,SAAG,KAAK,oCAAoC,CAAC,WAAW,CAAC;AACzD,SAAG,MAAM;AAAA,IACX;AACA,OAAG,eAAe,SAASC,gBAAe;AACxC,UAAI,GAAG,OAAO,WAAW,cAAc,GAAG,WAAW;AACnD,WAAG,UAAU,GAAG,SAAS,aAAa;AAAA,MACxC;AACA,UAAI,GAAG,OAAO,WAAW,cAAc,GAAG,UAAU;AAClD,WAAG,SAAS,GAAG,SAAS,YAAY;AACpC,WAAG,SAAS,GAAG,GAAG,OAAO,aAAa,aAAa;AACnD,YAAI,OAAO,SAAS;AAClB,uBAAE,MAAM,EAAE,GAAG,SAAS,WAAW;AAAA,QACnC,OAAO;AACL,aAAG,SAAS,GAAG,QAAQ,WAAW;AAAA,QACpC;AACA,WAAG,SAAS,GAAG,WAAW,SAAS;AAAA,MACrC;AAAA,IACF;AACA,OAAG,eAAe,SAASA,gBAAe;AACxC,UAAI,GAAG,OAAO,WAAW,cAAc,GAAG,WAAW;AACnD,WAAG,UAAU,IAAI,SAAS,aAAa;AAAA,MACzC;AACA,UAAI,GAAG,OAAO,WAAW,cAAc,GAAG,UAAU;AAClD,WAAG,SAAS,IAAI,SAAS,YAAY;AACrC,WAAG,SAAS,IAAI,GAAG,OAAO,aAAa,aAAa;AACpD,YAAI,OAAO,SAAS;AAClB,uBAAE,MAAM,EAAE,IAAI,SAAS,WAAW;AAAA,QACpC,OAAO;AACL,aAAG,SAAS,IAAI,QAAQ,WAAW;AAAA,QACrC;AACA,WAAG,SAAS,IAAI,WAAW,SAAS;AAAA,MACtC;AAAA,IACF;AACA,OAAG,uBAAuB,SAAS,uBAAuB;AACxD,SAAG,YAAY,GAAG,SAAS,SAAS,eAAe;AACnD,UAAI,GAAG,UAAUD,SAAQ;AAAA,IAC3B;AACA,OAAG,uBAAuB,SAAS,uBAAuB;AACxD,SAAG,YAAY,IAAI,SAAS,SAAS,eAAe;AACpD,UAAI,IAAI,UAAUA,SAAQ;AAAA,IAC5B;AACA,OAAG,mBAAmB,SAAS,mBAAmB;AAChD,SAAG,IAAI,GAAG,UAAU,+CAA+C,iBAAiB;AACpF,UAAI,GAAG,OAAO,iBAAiB,CAAC,GAAG,OAAO,UAAU;AAClD,WAAG,IAAI,KAAK,SAAS,eAAe,MAAM;AACxC,mBAAS,MAAM;AACb,eAAG,MAAM;AAAA,UACX,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AACA,OAAG,mBAAmB,SAAS,mBAAmB;AAChD,SAAG,IAAI,IAAI,UAAU,+CAA+C,iBAAiB;AAAA,IACvF;AAGA,OAAG,WAAW;AAGd,OAAG,KAAK;AACR,WAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO;AACT,UAAM,KAAK;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI,GAAG,OAAO,MAAM;AAClB,aAAO,GAAG,OAAO;AAAA,IACnB,WAAW,aAAa,UAAU;AAChC,YAAM,MAAM,aAAa;AACzB,aAAO,IAAI,QAAQ,OAAO,EAAE,UAAU,IAAI,QAAQ,OAAO,EAAE,CAAC,EAAE;AAAA,IAChE;AACA,QAAI,CAAC,KAAM,QAAO,IAAI,MAAM;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,UAAM,KAAK;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,iBAAiB,SAAS,QAAQ,eAAe;AACvD,QAAI,eAAe,WAAW,EAAG;AACjC,UAAM,cAAc,SAAS,OAAO;AACpC,UAAM,mBAAmB,SAAS,CAAC,EAAE;AACrC,UAAM,oBAAoB,SAAS,CAAC,EAAE;AACtC,UAAM,UAAU,SAAS,QAAQ,OAAO;AACxC,QAAI;AACJ,YAAQ,QAAQ,EAAE,KAAK,cAAY;AACjC,UAAI,YAAa;AACjB,YAAM,YAAY,aAAE,QAAQ;AAC5B,UAAI,UAAU,OAAO,cAAc,EAAE,OAAQ,eAAc;AAAA,IAC7D,CAAC;AACD,UAAM,aAAa,QAAQ,OAAO;AAClC,UAAM,gBAAgB,SAAS,eAAe,IAAI,gBAAgB,GAAG,EAAE;AACvE,UAAM,iBAAiB,QAAQ,SAAS,IAAI,WAAW,OAAO,eAAe,OAAO,EAAE,OAAO;AAC7F,UAAM,kBAAkB,YAAY,QAAQ,QAAQ,SAAS,IAAI,WAAW,OAAO,MAAM,IAAI,MAAM,IAAI;AACvG,UAAM,iBAAiB,YAAY,OAAO,eAAe,OAAO,EAAE,MAAM,eAAe,CAAC,EAAE;AAC1F,UAAM,YAAY,eAAe,CAAC,EAAE,eAAe,iBAAiB,iBAAiB,eAAe,CAAC,EAAE,aAAa,SAAS,CAAC,EAAE;AAChI,UAAM,cAAc,IAAI,MAAM,kBAAkB;AAChD,QAAI;AACJ,QAAI,QAAQ,QAAQ;AAClB,sBAAgB,IAAI,MAAM,QAAQ,CAAC,EAAE,cAAc,kBAAkB,mBAAmB,oBAAoB,IAAI,UAAU,OAAO,KAAK;AAAA,IACxI;AACA,gBAAY,IAAI;AAAA,MACd,MAAM,GAAG,QAAQ,SAAS,IAAI,iBAAiB,eAAe;AAAA,MAC9D,KAAK,GAAG,iBAAiB,eAAe,CAAC,EAAE,YAAY,iBAAiB;AAAA,MACxE,OAAO,GAAG,QAAQ,SAAS,IAAI,QAAQ,CAAC,EAAE,cAAc,gBAAgB;AAAA,IAC1E,CAAC;AACD,gBAAY,SAAS,8BAA8B,EAAE,IAAI;AAAA,MACvD,WAAW,GAAG,SAAS;AAAA,MACvB,CAAC,WAAW,GAAG,QAAQ,SAAS,IAAI,GAAG,YAAY,OAAO;AAAA,IAC5D,CAAC;AAAA,EACH;AAAA,EACA,QAAQ;AACN,UAAM,KAAK;AACX,OAAG,IAAI,KAAK,oBAAoB,EAAE,MAAM;AAAA,EAC1C;AAAA,EACA,OAAO,OAAO;AACZ,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,OAAO,OAAQ;AACvB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,OAAG,OAAO,OAAO,KAAK,IAAI,OAAO,WAAS;AACxC,UAAI,YAAY;AAChB,YAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,IAAI,GAAG,OAAO,OAAO,MAAM,MAAM,IAAI,MAAM;AAChF,SAAG,QAAQ;AACX,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK,GAAG;AACjC,YAAI,WAAW;AACf,cAAM,YAAY,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,MAAM,CAAC;AAC5F,iBAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,KAAK,GAAG;AAC3C,gBAAM,SAAS,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,GAAG,MAAM,CAAC;AAClG,cAAI,WAAW,aAAa,SAAS,MAAM,YAAY,EAAG,YAAW;AAAA,QACvE;AACA,qBAAa,GAAG,WAAW;AAAA,UACzB,OAAO;AAAA,UACP,MAAM,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,EAAE,GAAG,OAAO,YAAY,IAAI,MAAM,CAAC;AAAA,UAC/E,WAAW,GAAG;AAAA,UACd,IAAI,GAAG;AAAA,UACP,WAAW,GAAG;AAAA,UACd;AAAA,QACF,GAAG,CAAC;AAAA,MACN;AACA,UAAI,KAAK,wBAAwB,EAAE,KAAK,SAAS;AACjD,UAAI,MAAM,WAAW,GAAG;AACtB,YAAI,MAAM,WAAW,GAAG;AACtB,cAAI,KAAK,yBAAyB,EAAE,KAAK;AACzC,cAAI,KAAK,2CAA2C,EAAE,KAAK;AAAA,QAC7D,OAAO;AACL,cAAI,KAAK,sBAAsB,EAAE,KAAK;AACtC,cAAI,KAAK,8CAA8C,EAAE,KAAK;AAAA,QAChE;AAAA,MACF,OAAO;AACL,YAAI,KAAK,qBAAqB,EAAE,KAAK;AACrC,YAAI,KAAK,+CAA+C,EAAE,KAAK;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,QAAI,aAAa;AACjB,aAAS,IAAI,GAAG,IAAI,GAAG,MAAM,QAAQ,KAAK,GAAG;AAC3C,oBAAc,GAAG,WAAW;AAAA,QAC1B,OAAO,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,aAAa,IAAI,GAAG,MAAM,CAAC;AAAA,QAC1F,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,YAAY,IAAI,GAAG,MAAM,CAAC;AAAA,QACxF,WAAW,GAAG;AAAA,QACd,IAAI,GAAG;AAAA,QACP,WAAW,GAAG,GAAG,SAAS;AAAA,QAC1B,UAAU;AAAA,MACZ,GAAG,CAAC;AAAA,IACN;AACA,OAAG,IAAI,KAAK,yBAAyB,EAAE,KAAK,UAAU;AAAA,EACxD;AAAA,EACA,gBAAgB;AACd,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAW,cAAc,GAAG,aAAa;AACrD,SAAG,YAAY,KAAK,yBAAyB,EAAE,YAAY,gCAAgC;AAAA,IAC7F,OAAO;AACL,mBAAE,yBAAyB,EAAE,YAAY,gCAAgC;AAAA,IAC3E;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAW,cAAc,GAAG,aAAa;AACrD,SAAG,YAAY,KAAK,yBAAyB,EAAE,SAAS,gCAAgC;AAAA,IAC1F,OAAO;AACL,mBAAE,yBAAyB,EAAE,SAAS,gCAAgC;AAAA,IACxE;AAAA,EACF;AAAA,EACA,kBAAkB;AAChB,UAAM,KAAK;AACX,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,oCAAoC,GAAG,OAAO,iBAAiB,SAAS,GAAG,OAAO,cAAc,KAAK,EAAE;AAAA,IAChH,GAAG,WAAW,GAAG,GAAG,IAAI,KAAK,kBAAkB,KAAK,EAAE;AAAA,EACxD;AAAA,EACA,kBAAkB;AAChB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,gBAAiB,QAAO,GAAG,OAAO,gBAAgB,KAAK,EAAE;AACvE,WAAO,YAAK,QAAQ;AAAA,MAClB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,SAAS;AAAA,MACf,MAAM;AAAA,MACN,YAAY,GAAG,OAAO,uBAAuB;AAAA,MAC7C,aAAa,GAAG,OAAO;AAAA,IACzB,CAAC,GAAG,YAAK,KAAK;AAAA,MACZ,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,CAAC,CAAC,GAAG,GAAG,OAAO,0BAA0B,YAAK,QAAQ;AAAA,MACpD,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,oBAAoB,CAAC,CAAC;AAAA,EACrC;AAAA,EACA,WAAW,MAAM,OAAO;AACtB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAY,QAAO,GAAG,OAAO,WAAW,KAAK,IAAI,MAAM,KAAK;AAC1E,UAAM,YAAY,KAAK,SAAS,OAAO,KAAK,UAAU,WAAW,KAAK,MAAM,QAAQ,MAAM,QAAQ,IAAI,KAAK;AAC3G,QAAI,GAAG,OAAO,WAAW,YAAY;AACnC,aAAO,YAAK,MAAM,MAAM,YAAK,SAAS;AAAA,QACpC,OAAO,QAAQ,KAAK,SAAS;AAAA,MAC/B,GAAG,YAAK,SAAS;AAAA,QACf,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,MACjB,CAAC,GAAG,YAAK,KAAK;AAAA,QACZ,OAAO,aAAa,KAAK,SAAS;AAAA,MACpC,CAAC,GAAG,YAAK,OAAO;AAAA,QACd,OAAO;AAAA,MACT,GAAG,YAAK,OAAO;AAAA,QACb,OAAO;AAAA,MACT,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,IACjB;AAEA,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO,YAAK,MAAM,MAAM,YAAK,SAAS;AAAA,QACpC,OAAO;AAAA,QACP,cAAc;AAAA,MAChB,GAAG,YAAK,OAAO;AAAA,QACb,OAAO;AAAA,MACT,GAAG,YAAK,OAAO;AAAA,QACb,OAAO;AAAA,MACT,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,IACjB;AAGA,WAAO,YAAK,MAAM;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,YAAK,SAAS;AAAA,MACf,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,EACjB;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,aAAc,QAAO,GAAG,OAAO,aAAa,KAAK,EAAE;AACjE,QAAI,YAAY,GAAG,OAAO;AAC1B,QAAI,OAAO,cAAc,eAAe,GAAG,aAAa,GAAG,UAAU,QAAQ;AAC3E,kBAAY,GAAG,UAAU,KAAK,aAAa,EAAE,KAAK,EAAE,KAAK;AAAA,IAC3D;AACA,UAAM,UAAU,GAAG,OAAO,WAAW;AAGrC,UAAM,aAAa,UAAU,GAAG,OAAO,aAAa,YAAK,OAAO;AAAA,MAC9D,OAAO;AAAA,IACT,GAAG,GAAG,gBAAgB,CAAC,IAAI,YAAK,OAAO;AAAA,MACrC,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,gBAAgB,CAAC,CAAC;AAC/B,UAAM,cAAc,UAAU,YAAK,OAAO;AAAA,MACxC,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,MACP,cAAc;AAAA,IAChB,GAAG,GAAG,OAAO,kBAAkB,CAAC,IAAI,GAAG,OAAO,aAAa,YAAK,OAAO;AAAA,MACrE,OAAO;AAAA,IACT,GAAG,GAAG,gBAAgB,CAAC;AACvB,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,UAAU,GAAG,OAAO,mBAAmB,SAAS,GAAG,OAAO,gBAAgB,KAAK,EAAE;AAAA,IAC1F,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO,gBAAgB,GAAG,OAAO,mBAAmB,SAAS,GAAG,OAAO,gBAAgB,KAAK,EAAE;AAAA,IAChG,GAAG,YAAY,aAAa,YAAK,OAAO;AAAA,MACtC,OAAO;AAAA,IACT,GAAG,SAAS,GAAG,aAAa,YAAK,OAAO;AAAA,MACtC,OAAO;AAAA,IACT,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAAA,EAC3B;AAAA,EACA,iBAAiB;AACf,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,eAAgB,QAAO,GAAG,OAAO,eAAe,KAAK,IAAI,GAAG,KAAK;AAC/E,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,OAAO,aAAa,GAAG,gBAAgB,CAAC;AAAA,EACpE;AAAA,EACA,WAAW,SAAS;AAClB,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAY,QAAO,GAAG,OAAO,WAAW,KAAK,IAAI,GAAG,KAAK;AACvE,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,aAAa;AAAA,IACf,GAAG,GAAG,aAAa,OAAO,GAAG,YAAK,OAAO;AAAA,MACvC,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,+DAA+D,GAAG,EAAE,IAAI,GAAG,OAAO,iBAAiB,SAAS,GAAG,OAAO,cAAc,KAAK,EAAE;AAAA,IACpJ,GAAG,YAAK,MAAM,IAAI,CAAC,GAAG,YAAK,OAAO;AAAA,MAChC,OAAO;AAAA,IACT,GAAG,YAAK,MAAM,MAAM,YAAK,MAAM;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,GAAG,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAC1C,OAAO;AAAA,IACT,GAAG,YAAK,MAAM,IAAI,CAAC,CAAC,CAAC;AAAA,EACvB;AAAA,EACA,cAAc;AACZ,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,YAAa,QAAO,GAAG,OAAO,YAAY,KAAK,IAAI,GAAG,KAAK;AACzE,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,GAAG,WAAW,IAAI,GAAG,GAAG,CAAC;AAAA,EAC9B;AAAA,EACA,OAAO,MAAM,IAAI;AACf,UAAM,KAAK;AACX,UAAM,MAAM,GAAG;AACf,UAAM,MAAM,aAAE,EAAE;AAChB,OAAG,MAAM;AACT,OAAG,KAAK,IAAI,CAAC;AACb,OAAG,WAAW;AACd,OAAG,SAAS;AACZ,QAAI,GAAG,OAAO,WAAW,YAAY;AACnC,SAAG,qBAAqB;AACxB,SAAG,YAAY,SAAS,0BAA0B;AAClD,SAAG,SAAS,QAAQ,OAAO;AAAA,IAC7B,OAAO;AAEL,UAAI,eAAe,IAAI,KAAK,YAAY;AACxC,UAAI,GAAG,OAAO,WAAW,UAAU,IAAI,UAAU,SAAS,aAAa,WAAW,GAAG;AACnF,uBAAe,aAAE,IAAI,OAAO,YAAY,GAAG,CAAC,EAAE,KAAK,YAAY;AAAA,MACjE;AACA,SAAG,YAAY,IAAI,UAAU,OAAO;AAAA,QAClC,IAAI;AAAA,QACJ,YAAY,IAAI,KAAK,qBAAqB;AAAA,QAC1C,cAAc;AAAA,QACd,IAAI;AAAA,UACF,OAAO,IAAI,OAAO;AAChB,gBAAI,MAAM,WAAW,KAAK,GAAG,UAAU,SAAS;AAC9C,iBAAG,UAAU,aAAa;AAAA,YAC5B,OAAO;AACL,iBAAG,UAAU,aAAa;AAAA,YAC5B;AACA,eAAG,OAAO,KAAK;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAC;AAGD,SAAG,iBAAiB;AAGpB,SAAG,aAAa;AAGhB,UAAI,GAAG,OAAO,oBAAqB,IAAG,OAAO,EAAE;AAAA,IACjD;AACA,OAAG,KAAK,gCAAgC,EAAE;AAAA,EAC5C;AAAA,EACA,YAAY;AACV,UAAM,KAAK;AACX,QAAI,GAAG,aAAa,GAAG,UAAU,UAAU;AACzC,SAAG,UAAU,SAAS,MAAM;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,OAAO,WAAW,cAAc,GAAG,OAAO,WAAW;AAC1D,SAAG,UAAU;AAAA,IACf;AACA,OAAG,KAAK,oCAAoC,EAAE;AAAA,EAChD;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,QAAI,GAAG,UAAW;AAGlB,QAAI,GAAG,aAAa,GAAG,UAAU,SAAS;AACxC,SAAG,UAAU,QAAQ;AACrB,SAAG,YAAY;AACf,aAAO,GAAG;AAAA,IACZ;AACA,QAAI,GAAG,OAAO,WAAW,YAAY;AACnC,SAAG,qBAAqB;AACxB,SAAG,YAAY,YAAY,0BAA0B,EAAE,OAAO;AAAA,IAChE,OAAO;AACL,SAAG,iBAAiB;AAAA,IACtB;AACA,OAAG,KAAK,kCAAkC,EAAE;AAAA,EAC9C;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,UAAW;AAClB,OAAG,SAAS;AACZ,OAAG,MAAM;AACT,OAAG,KAAK;AACR,WAAO,GAAG;AACV,WAAO,GAAG;AACV,OAAG,KAAK,oCAAoC,EAAE;AAAA,EAChD;AAAA,EACA,WAAW;AACT,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,UAAM,WAAW,GAAG,WAAW;AAC/B,OAAG,KAAK,OAAO,SAAS;AAAA,MACtB,KAAK,GAAG;AAAA,MACR,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM,GAAG;AAAA,QACT,IAAI;AAAA,UACF,aAAa,GAAG,MAAM;AACpB,eAAG,OAAO,QAAQ,KAAK,EAAE;AAAA,UAC3B;AAAA,UACA,YAAY,GAAG,MAAM;AACnB,eAAG,SAAS,QAAQ,KAAK,EAAE;AAAA,UAC7B;AAAA,UACA,cAAc,GAAG,MAAM;AACrB,eAAG,QAAQ,QAAQ,KAAK,EAAE;AAAA,UAC5B;AAAA,UACA,aAAa,GAAG,MAAM;AACpB,eAAG,SAAS,QAAQ,KAAK,EAAE;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP,SAAS,GAAG,OAAO;AAAA,QACrB;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,UAAM,YAAY,GAAG,YAAY;AACjC,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,SAAS,GAAG,OAAO;AAAA,MACnB,MAAM,GAAG,OAAO;AAAA,MAChB,cAAc,GAAG,OAAO;AAAA,MACxB,IAAI;AAAA,QACF,UAAU,OAAO;AACf,aAAG,OAAO,SAAS,MAAM,EAAE;AAAA,QAC7B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,QACA,WAAW,OAAO;AAChB,aAAG,QAAQ,SAAS,MAAM,EAAE;AAAA,QAC9B;AAAA,QACA,YAAY,OAAO;AACjB,aAAG,SAAS,SAAS,MAAM,EAAE;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,QAAI,GAAG,OAAO,kBAAkB,GAAG,MAAM;AACvC,SAAG,KAAK,OAAO,SAAS;AAAA,QACtB,KAAK,GAAG;AAAA,QACR,OAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,SAAG,QAAQ,GAAG,IAAI,MAAM,OAAO,WAAW,EAAE,KAAK,GAAG,OAAO,OAAO;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,aAAa;AACnB,SAAG,cAAc,aAAE,GAAG,eAAe,CAAC;AAAA,IACxC;AACA,UAAM,iBAAiB,GAAG,SAAS,QAAQ,eAAe;AAC1D,QAAI,GAAG,OAAO,qBAAqB;AACjC,mBAAE,GAAG,OAAO,mBAAmB,EAAE,OAAO,GAAG,WAAW;AAAA,IACxD,WAAW,eAAe,WAAW,GAAG;AACtC,SAAG,YAAY,YAAY,GAAG,QAAQ;AAAA,IACxC,OAAO;AACL,SAAG,iBAAiB;AACpB,qBAAe,OAAO,GAAG,WAAW;AAAA,IACtC;AACA,OAAG,OAAO,YAAY,GAAG,WAAW;AACpC,OAAG,SAAS,YAAY,GAAG,WAAW;AAAA,EACxC;AAAA,EACA,OAAO;AACL,UAAM,KAAK;AACX,QAAI,GAAG,OAAQ,QAAO;AACtB,UAAM,SAAS,GAAG,OAAO;AACzB,OAAG,OAAO,OAAO,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,UAAU;AAC5C,UAAI,UAAU,EAAG,QAAO,GAAG,YAAY;AACvC,aAAO;AAAA,IACT,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;AACf,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,UAAM,KAAK;AACX,QAAI,CAAC,GAAG,OAAQ,QAAO;AACvB,QAAI,GAAG,OAAO,WAAW,YAAY;AACnC,SAAG,QAAQ;AACX,SAAG,SAAS;AAAA,IACd,WAAW,GAAG,OAAO,kBAAkB,GAAG,QAAQ,GAAG,aAAa,QAAQ;AACxE,SAAG,KAAK,OAAO,KAAK;AAAA,QAClB,SAAS,GAAG,OAAO;AAAA,MACrB,CAAC;AAAA,IACH,OAAO;AACL,SAAG,MAAM,KAAK,eAAe,MAAM;AACjC,iBAAS,MAAM;AACb,cAAI,GAAG,UAAW;AAClB,aAAG,MAAM,QAAQ;AACjB,iBAAO,GAAG;AAAA,QACZ,CAAC;AAAA,MACH,CAAC;AACD,SAAG,MAAM,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,KAAK;AACX,OAAG,aAAa;AAAA,EAClB;AAAA,EACA,UAAU;AACR,UAAM,KAAK;AACX,OAAG,KAAK,kDAAkD,EAAE;AAC5D,OAAG,aAAa;AAChB,QAAI,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG;AACjC,aAAO,GAAG,SAAS,CAAC,EAAE;AAAA,IACxB;AACA,QAAI,GAAG,aAAa,GAAG,UAAU,CAAC,GAAG;AACnC,aAAO,GAAG,UAAU,CAAC,EAAE;AAAA,IACzB;AACA,gBAAY,EAAE;AACd,OAAG,YAAY;AAAA,EACjB;AACF;AACA,IAAO,6BAAQ;;;ACzyBf,IAAO,uBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,cAAc;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM;AAAA;AAAA,MAEN,qBAAqB;AAAA,MACrB,yBAAyB;AAAA,MACzB,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,0BAA0B;AAAA,MAC1B,aAAa;AAAA,MACb,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,eAAe;AAAA,MACf,cAAc;AAAA,MACd,QAAQ;AAAA;AAAA,MAER,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,qBAAqB;AAAA,MACrB,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,eAAe;AAAA,MACf,cAAc;AAAA,MACd,qBAAqB;AAAA;AAAA,MAErB,gBAAgB;AAAA,MAChB,WAAW;AAAA;AAAA,MAEX,gBAAgB;AAAA,MAChB,kBAAkB;AAAA;AAAA,MAElB,gBAAgB;AAAA,MAChB,KAAK;AAAA;AAAA,MAEL,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,eAAe,OAAO,mBAAmB;AAAA,MAC3C,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC,GAAG;AAAA,MACF,KAAK,gBAAgB;AACnB,cAAM,KAAK,IAAI,aAAa,IAAI,cAAc;AAC9C,YAAI,MAAM,GAAG,KAAM,QAAO,GAAG,KAAK;AAClC,eAAO;AAAA,MACT;AAAA,MACA,MAAM,gBAAgB;AACpB,cAAM,KAAK,IAAI,aAAa,IAAI,cAAc;AAC9C,YAAI,MAAM,GAAG,MAAO,QAAO,GAAG,MAAM;AACpC,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC3EA,IAAM,UAAN,cAAsB,cAAgB;AAAA,EACpC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,UAAU;AAChB,UAAME,WAAU,WAAW;AAC3B,UAAMC,YAAW,OAAO,CAAC,GAAG,IAAI,OAAO,OAAO;AAC9C,UAAMC,YAAW,YAAY;AAG7B,YAAQ,iBAAiBD,SAAQ;AACjC,YAAQ,SAAS,OAAOA,WAAU,MAAM;AACxC,QAAI,OAAO,OAAO,WAAW,eAAeD,SAAQ,SAAS,QAAQ,OAAO,YAAY,SAAS;AAC/F,cAAQ,OAAO,SAAS;AAAA,IAC1B;AACA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,QAAQ;AACZ,QAAI,CAAC,YAAY,CAAC,QAAQ,OAAO,UAAW,QAAO;AACnD,UAAM,YAAY,aAAE,QAAQ;AAC5B,QAAI,UAAU,WAAW,KAAK,CAAC,QAAQ,OAAO,UAAW,QAAO;AAChE,QAAI,UAAU,CAAC,KAAK,UAAU,CAAC,EAAE,aAAa,CAAC,QAAQ,OAAO,UAAW,QAAO,UAAU,CAAC,EAAE;AAC7F,QAAI,eAAe,aAAE,eAAe,IAAI,GAAG,EAAE,GAAG,CAAC;AACjD,QAAI,aAAa,WAAW,GAAG;AAC7B,qBAAe,IAAI;AAAA,IACrB;AACA,UAAM,MAAM,aAAE,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC;AACpC,WAAO,SAAS;AAAA,MACd;AAAA,MACA;AAAA,MACA,UAAU,aAAa,UAAU,CAAC;AAAA,MAClC;AAAA,MACA,aAAa,gBAAgB,aAAa,CAAC;AAAA,MAC3C;AAAA,MACA,IAAI,OAAO,IAAI,CAAC;AAAA,MAChB,MAAM,QAAQ,OAAO,QAAQ;AAAA,MAC7B,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AACD,QAAI,UAAU,CAAC,EAAG,WAAU,CAAC,EAAE,YAAY;AAC3C,UAAM,eAAe,CAAC;AACtB,QAAI;AACJ,aAAS,cAAc;AACrB,UAAI,QAAQ,OAAQ,SAAQ,KAAK;AAAA,UAAO,SAAQ,KAAK,IAAI;AAAA,IAC3D;AACA,aAAS,eAAe,GAAG;AACzB,UAAI,QAAQ,WAAW,aAAE,EAAE,MAAM,EAAE,QAAQ,SAAS,EAAE,UAAU,aAAE,EAAE,MAAM,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAS;AAC1G,cAAQ,KAAK;AAAA,IACf;AACA,aAAS,iBAAiB,GAAG;AAC3B,UAAI,UAAW;AACf,kBAAY;AACZ,mBAAa,IAAI,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACxE,mBAAa,IAAI,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACxE,cAAQ,KAAK,IAAI;AAAA,IACnB;AACA,aAAS,gBAAgB,GAAG;AAC1B,UAAI,CAAC,UAAW;AAChB,YAAM,IAAI,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AAChE,YAAM,IAAI,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AAChE,YAAM,aAAa,IAAI,aAAa,MAAM,KAAK,IAAI,aAAa,MAAM,MAAM;AAC5E,UAAI,WAAW,IAAI;AACjB,oBAAY;AACZ,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AACA,aAAS,iBAAiB;AACxB,UAAI,CAAC,UAAW;AAChB,kBAAY;AACZ,cAAQ,KAAK;AAAA,IACf;AACA,aAAS,mBAAmB;AAC1B,cAAQ,KAAK,IAAI;AAAA,IACnB;AACA,aAAS,mBAAmB;AAC1B,cAAQ,KAAK;AAAA,IACf;AACA,aAAS,sBAAsB;AAC7B,UAAI,CAAC,IAAI,SAAS,YAAY,GAAG;AAC/B,YAAI,YAAY,aAAa,EAAE,OAAO;AAAA,MACxC;AAAA,IACF;AACA,YAAQ,eAAe,SAASG,gBAAe;AAC7C,UAAI,GAAG,iBAAiB,mBAAmB;AAC3C,UAAI,QAAQ,OAAO,YAAY,SAAS;AACtC,YAAI,QAAQ,OAAO,WAAW;AAC5B,uBAAED,SAAQ,EAAE,GAAG,SAAS,QAAQ,OAAO,UAAU,WAAW;AAAA,QAC9D,OAAO;AACL,kBAAQ,UAAU,GAAG,SAAS,WAAW;AAAA,QAC3C;AACA,qBAAE,MAAM,EAAE,GAAG,SAAS,cAAc;AACpC;AAAA,MACF;AACA,UAAI,QAAQ,OAAO,YAAY,SAAU;AACzC,UAAIF,SAAQ,OAAO;AACjB,cAAM,UAAUA,SAAQ,kBAAkB;AAAA,UACxC,SAAS;AAAA,QACX,IAAI;AACJ,YAAI,QAAQ,OAAO,WAAW;AAC5B,uBAAEE,SAAQ,EAAE,GAAG,IAAI,YAAY,OAAO,QAAQ,OAAO,UAAU,kBAAkB,OAAO;AAAA,QAC1F,OAAO;AACL,kBAAQ,UAAU,GAAG,IAAI,YAAY,OAAO,kBAAkB,OAAO;AAAA,QACvE;AACA,YAAI,GAAG,aAAa,eAAe;AACnC,YAAI,GAAG,oBAAoB,cAAc;AAAA,MAC3C,OAAO;AAEL,YAAI,QAAQ,OAAO,WAAW;AAC5B,uBAAEA,SAAQ,EAAE,GAAGF,SAAQ,gBAAgB,iBAAiB,cAAc,QAAQ,OAAO,UAAU,kBAAkB,IAAI;AACrH,uBAAEE,SAAQ,EAAE,GAAGF,SAAQ,gBAAgB,iBAAiB,cAAc,QAAQ,OAAO,UAAU,kBAAkB,IAAI;AAAA,QACvH,OAAO;AACL,kBAAQ,UAAU,GAAGA,SAAQ,gBAAgB,iBAAiB,cAAc,gBAAgB;AAC5F,kBAAQ,UAAU,GAAGA,SAAQ,gBAAgB,iBAAiB,cAAc,gBAAgB;AAAA,QAC9F;AAAA,MACF;AAAA,IACF;AACA,YAAQ,eAAe,SAASI,gBAAe;AAC7C,UAAI,IAAI,iBAAiB,mBAAmB;AAC5C,UAAI,QAAQ,OAAO,YAAY,SAAS;AACtC,YAAI,QAAQ,OAAO,WAAW;AAC5B,uBAAEF,SAAQ,EAAE,GAAG,SAAS,QAAQ,OAAO,UAAU,WAAW;AAAA,QAC9D,OAAO;AACL,kBAAQ,UAAU,IAAI,SAAS,WAAW;AAAA,QAC5C;AACA,qBAAE,MAAM,EAAE,IAAI,SAAS,cAAc;AACrC;AAAA,MACF;AACA,UAAI,QAAQ,OAAO,YAAY,SAAU;AACzC,UAAIF,SAAQ,OAAO;AACjB,cAAM,UAAUA,SAAQ,kBAAkB;AAAA,UACxC,SAAS;AAAA,QACX,IAAI;AACJ,YAAI,QAAQ,OAAO,WAAW;AAC5B,uBAAEE,SAAQ,EAAE,IAAI,IAAI,YAAY,OAAO,QAAQ,OAAO,UAAU,kBAAkB,OAAO;AAAA,QAC3F,OAAO;AACL,kBAAQ,UAAU,IAAI,IAAI,YAAY,OAAO,kBAAkB,OAAO;AAAA,QACxE;AACA,YAAI,IAAI,aAAa,eAAe;AACpC,YAAI,IAAI,oBAAoB,cAAc;AAAA,MAC5C,OAAO;AAEL,YAAI,QAAQ,OAAO,WAAW;AAC5B,uBAAEA,SAAQ,EAAE,IAAIF,SAAQ,gBAAgB,iBAAiB,cAAc,QAAQ,OAAO,UAAU,kBAAkB,IAAI;AACtH,uBAAEE,SAAQ,EAAE,IAAIF,SAAQ,gBAAgB,iBAAiB,cAAc,QAAQ,OAAO,UAAU,kBAAkB,IAAI;AAAA,QACxH,OAAO;AACL,kBAAQ,UAAU,IAAIA,SAAQ,gBAAgB,iBAAiB,cAAc,gBAAgB;AAC7F,kBAAQ,UAAU,IAAIA,SAAQ,gBAAgB,iBAAiB,cAAc,gBAAgB;AAAA,QAC/F;AAAA,MACF;AAAA,IACF;AAGA,YAAQ,WAAW;AACnB,YAAQ,KAAK;AACb,WAAO;AAAA,EACT;AAAA,EACA,YAAY,UAAU;AACpB,UAAM,UAAU;AAChB,YAAQ,aAAa;AACrB,YAAQ,YAAY,aAAE,QAAQ;AAC9B,YAAQ,WAAW,QAAQ,UAAU,CAAC;AACtC,YAAQ,aAAa;AACrB,WAAO;AAAA,EACT;AAAA,EACA,SAAS,UAAU;AACjB,UAAM,UAAU;AAChB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,iBAAiB,CAAC,CAAC,QAAQ,OAAO;AACxC,UAAM,gBAAgB,QAAQ,OAAO,UAAU;AAC/C,QAAI,IAAI;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IACP,CAAC;AACD,UAAM,YAAY,aAAE,YAAY,QAAQ,QAAQ;AAChD,UAAM,CAAC,OAAO,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,OAAO,CAAC;AAClD,QAAI,IAAI;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,IACP,CAAC;AACD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,aAAa,kBAAkB,aAAa,SAAS,aAAa,CAAC,EAAE,sBAAsB,IAAI;AACrG,QAAI,aAAa,UAAU,SAAS,GAAG;AACrC,oBAAc,UAAU,WAAW;AACnC,qBAAe,UAAU,YAAY;AACrC,UAAI,OAAO,gBAAgB,eAAe,OAAO,iBAAiB,aAAa;AAC7E,cAAM,aAAa,UAAU,CAAC,EAAE,sBAAsB;AACtD,sBAAc,WAAW;AACzB,uBAAe,WAAW;AAAA,MAC5B;AACA,YAAM,eAAe,UAAU,OAAO;AACtC,yBAAmB,aAAa,OAAO,WAAW;AAClD,wBAAkB,aAAa,MAAM,WAAW;AAChD,YAAM,mBAAmB,UAAU,QAAQ,OAAO;AAClD,UAAI,iBAAiB,SAAS,GAAG;AAC/B,2BAAmB,iBAAiB,CAAC,EAAE;AAAA,MACzC;AAAA,IACF;AACA,QAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AAG1B,QAAI,WAAW;AACf,QAAI,SAAS,gBAAgB,iBAAiB;AAE5C,YAAM,kBAAkB,SAAS;AAAA,IACnC,WAAW,SAAS,WAAW,SAAS,kBAAkB,cAAc;AAEtE,iBAAW;AACX,YAAM,kBAAkB,eAAe;AAAA,IACzC,OAAO;AAEL,iBAAW;AACX,YAAM,eAAe,IAAI,kBAAkB,SAAS;AACpD,UAAI,OAAO,GAAG;AACZ,cAAM;AAAA,MACR,WAAW,MAAM,UAAU,WAAW,QAAQ;AAC5C,cAAM,WAAW,SAAS,SAAS;AAAA,MACrC;AAAA,IACF;AAGA,QAAI,aAAa,SAAS,aAAa,UAAU;AAC/C,aAAO,cAAc,IAAI,mBAAmB,QAAQ;AACpD,UAAI,OAAO,EAAG,QAAO;AACrB,UAAI,OAAO,QAAQ,WAAW,MAAO,QAAO,WAAW,QAAQ,QAAQ;AACvE,UAAI,OAAO,EAAG,QAAO;AAAA,IACvB,WAAW,aAAa,UAAU;AAChC,aAAO,mBAAmB;AAC1B,UAAI,OAAO,KAAK,OAAO,QAAQ,WAAW,OAAO;AAC/C,YAAI,OAAO,EAAG,QAAO,mBAAmB;AACxC,YAAI,OAAO,QAAQ,WAAW,MAAO,QAAO,WAAW,QAAQ,QAAQ;AAAA,MACzE;AAAA,IACF;AAGA,QAAI,IAAI;AAAA,MACN,KAAK,GAAG,GAAG;AAAA,MACX,MAAM,GAAG,IAAI;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EACA,KAAK,UAAU;AACb,UAAM,UAAU;AAChB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,aAAa,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG;AAClE,mBAAa,OAAO,GAAG;AAAA,IACzB;AACA,YAAQ,SAAS,QAAQ;AACzB,UAAM,YAAY,aAAE,QAAQ;AAC5B,YAAQ,UAAU;AAClB,YAAQ,SAAS;AACjB,cAAU,QAAQ,cAAc;AAChC,QAAI,QAAQ,cAAc;AAC1B,QAAI,UAAU,UAAU,UAAU,CAAC,MAAM,UAAU,CAAC,GAAG;AACrD,gBAAU,QAAQ,cAAc;AAAA,IAClC;AACA,YAAQ,KAAK,2BAA2B,OAAO;AAC/C,QAAI,YAAY,aAAa,EAAE,SAAS,YAAY;AACpD,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,UAAU;AAChB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,YAAQ,UAAU;AAClB,YAAQ,SAAS;AACjB,cAAU,QAAQ,cAAc;AAChC,QAAI,QAAQ,cAAc;AAC1B,YAAQ,KAAK,2BAA2B,OAAO;AAC/C,QAAI,SAAS,aAAa,EAAE,YAAY,YAAY;AACpD,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,UAAU;AAChB,QAAI,QAAQ,OAAO,OAAQ,QAAO,QAAQ,OAAO,OAAO,KAAK,SAAS,OAAO;AAC7E,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,QAAQ;AACZ,WAAO;AAAA,4BACiB,YAAY,EAAE;AAAA,uCACH,QAAQ,EAAE;AAAA;AAAA,MAE3C,KAAK;AAAA,EACT;AAAA,EACA,QAAQ,SAAS;AACf,UAAM,UAAU;AAChB,QAAI,OAAO,YAAY,aAAa;AAClC,aAAO;AAAA,IACT;AACA,YAAQ,OAAO,OAAO;AACtB,YAAQ,OAAO;AACf,QAAI,QAAQ,KAAK;AACf,cAAQ,IAAI,SAAS,kBAAkB,EAAE,KAAK,OAAO;AAAA,IACvD;AACA,QAAI,QAAQ,QAAQ;AAClB,cAAQ,SAAS;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,UAAU;AAChB,YAAQ,aAAa;AAAA,EACvB;AAAA,EACA,UAAU;AACR,UAAM,UAAU;AAChB,QAAI,CAAC,QAAQ,aAAa,QAAQ,UAAW;AAC7C,YAAQ,UAAU,QAAQ,uBAAuB;AACjD,YAAQ,KAAK,6CAA6C,OAAO;AACjE,YAAQ,IAAI,OAAO;AACnB,QAAI,QAAQ,UAAU,CAAC,EAAG,QAAO,QAAQ,UAAU,CAAC,EAAE;AACtD,YAAQ,aAAa;AACrB,gBAAY,OAAO;AACnB,YAAQ,YAAY;AAAA,EACtB;AACF;AACA,IAAO,wBAAQ;;;AC5Uf,IAAO,kBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,UAAU,mBAAmB;AAAA,MAC/B,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AACD,QAAI,QAAQ,OAAO,SAAS,KAAK,IAAI;AACnC,YAAM,MAAM,aAAE,EAAE;AAChB,UAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,YAAM,UAAU,IAAI,CAAC,EAAE;AACvB,UAAI,CAAC,QAAS,QAAO;AACrB,cAAQ,KAAK,IAAI,CAAC,CAAC;AACnB,aAAO;AAAA,IACT;AACA,QAAI,QAAQ,OAAO,SAAS,KAAK,IAAI;AACnC,YAAM,MAAM,aAAE,EAAE;AAChB,UAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,YAAM,UAAU,IAAI,CAAC,EAAE;AACvB,UAAI,CAAC,QAAS,QAAO;AACrB,cAAQ,KAAK;AACb,aAAO;AAAA,IACT;AACA,QAAI,QAAQ,UAAU,SAAS,KAAK,IAAI,SAAS;AAC/C,YAAM,MAAM,aAAE,EAAE;AAChB,UAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,YAAM,UAAU,IAAI,CAAC,EAAE;AACvB,UAAI,CAAC,QAAS,QAAO;AACrB,cAAQ,QAAQ,OAAO;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,eAAe,EAAE,KAAK,QAAM;AACxC,cAAM,OAAO,aAAE,EAAE,EAAE,KAAK,cAAc;AACtC,YAAI,CAAC,KAAM;AACX,YAAI,QAAQ,OAAO;AAAA,UACjB,UAAU;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,mBAAE,KAAK,EAAE,KAAK,eAAe,EAAE,KAAK,QAAM;AACxC,YAAI,GAAG,UAAW,IAAG,UAAU,QAAQ;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,eAAe,EAAE,KAAK,QAAM;AACxC,cAAM,OAAO,aAAE,EAAE,EAAE,KAAK,cAAc;AACtC,YAAI,CAAC,KAAM;AACX,YAAI,QAAQ,OAAO;AAAA,UACjB,UAAU;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,UAAI,IAAI,UAAU,SAAS,KAAK,QAAQ,KAAK,KAAK,OAAO,iBAAiB,KAAK,aAAa,KAAK,UAAU,SAAS,GAAG;AACrH,aAAK,UAAU,KAAK,eAAe,EAAE,KAAK,QAAM;AAC9C,gBAAM,OAAO,aAAE,EAAE,EAAE,KAAK,cAAc;AACtC,cAAI,CAAC,KAAM;AACX,cAAI,QAAQ,OAAO;AAAA,YACjB,UAAU;AAAA,YACV;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,iBAAiB,MAAM;AACrB,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,eAAe,EAAE,KAAK,QAAM;AACxC,YAAI,GAAG,UAAW,IAAG,UAAU,QAAQ;AAAA,MACzC,CAAC;AACD,UAAI,IAAI,UAAU,SAAS,KAAK,QAAQ,KAAK,KAAK,OAAO,iBAAiB,KAAK,aAAa,KAAK,UAAU,SAAS,GAAG;AACrH,aAAK,UAAU,KAAK,eAAe,EAAE,KAAK,QAAM;AAC9C,cAAI,GAAG,UAAW,IAAG,UAAU,QAAQ;AAAA,QACzC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,gBAAgB;AAAA,MACd,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,KAAK,MAAM;AACjB,cAAM,OAAO,aAAE,EAAE,EAAE,KAAK,cAAc;AACtC,YAAI,CAAC,KAAM;AACX,YAAI,QAAQ,OAAO;AAAA,UACjB,UAAU;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,OAAO;AACZ,cAAM,KAAK,MAAM;AACjB,YAAI,CAAC,GAAG,UAAW;AACnB,YAAI,SAAS,MAAM,QAAQ,MAAM,KAAK,SAAS,MAAM,KAAK,MAAM,cAAc,GAAG;AAC/E,aAAG,UAAU,QAAQ,MAAM,KAAK,MAAM,cAAc,CAAC;AAAA,QACvD;AAAA,MACF;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,KAAK,MAAM;AACjB,YAAI,GAAG,UAAW,IAAG,UAAU,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AACF;;;AChIA,IAAO,mBAAQ;AAAA,EACb,MAAM;AACR;;;ACAA,IAAO,uBAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,cAAc,GAAG,YAAK,OAAO;AAAA,MAC9B,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,IACT,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,SAAK,mBAAmB,KAAK,IAAI,MAAM,OAAO;AAAA,MAC5C,IAAI,KAAK,IAAI,KAAK,4BAA4B;AAAA,MAC9C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,gBAAM,QAAQ,KAAK,MAAM,QAAQ,GAAG,IAAI;AACxC,eAAK,SAAS;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,GAAG;AAC5B,YAAM,QAAQ,KAAK,MAAM;AACzB,UAAI,QAAQ,WAAW,EAAE,OAAO,KAAK;AACrC,UAAI,OAAO,MAAM,KAAK,GAAG;AACvB,UAAE,OAAO,QAAQ;AACjB;AAAA,MACF;AACA,cAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AACtC,WAAK,SAAS;AAAA,QACZ,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,SAAK,IAAI,GAAG,UAAU,2CAA2C,iBAAiB;AAClF,SAAK,2BAA2B,SAAS,2BAA2B;AAClE,WAAK,IAAI,IAAI,UAAU,2CAA2C,iBAAiB;AAAA,IACrF;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,SAAK,iBAAiB,QAAQ;AAC9B,SAAK,iBAAiB,OAAO;AAC7B,QAAI,eAAe,qBAAqB;AACtC,WAAK,IAAI,KAAK,gCAAgC,EAAE,IAAI,KAAK;AAAA,IAC3D,OAAO;AACL,WAAK,IAAI,KAAK,+BAA+B,EAAE,KAAK,KAAK;AAAA,IAC3D;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,oBAAoB,KAAK,iBAAiB,SAAS;AAC1D,WAAK,iBAAiB,QAAQ;AAAA,IAChC;AACA,WAAO,KAAK;AACZ,QAAI,KAAK,yBAA0B,MAAK,yBAAyB;AACjE,WAAO,KAAK;AAAA,EACd;AACF;;;ACxFA,IAAO,wBAAQ;AAAA,EACb,SAAS;AACP,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,CAAC;AAAA,EACJ;AAAA,EACA,OAAO,MAAM;AACX,SAAK,IAAI,KAAK,gEAAgE,EAAE,IAAI,oBAAoB,KAAK,MAAM,GAAG;AAAA,EACxH;AACF;;;ACXA,IAAO,cAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAY,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,YAAY,GAAG,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,mBAAmB,YAAK,SAAS;AAAA,MAClC,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,aAAS,kBAAkB,GAAG;AAC5B,YAAM,MAAM,KAAK,MAAM;AACvB,UAAI,QAAQ,EAAE,OAAO,MAAM,QAAQ,MAAM,EAAE;AAC3C,UAAI,OAAO,MAAM,KAAK,KAAK,CAAC,SAAS,MAAM,WAAW,KAAK,MAAM,WAAW,GAAG;AAC7E,UAAE,OAAO,QAAQ;AACjB;AAAA,MACF;AACA,YAAM,MAAM;AACZ,YAAM,UAAU,SAAS,OAAO,EAAE;AAClC,YAAM,MAAM,SAAS,UAAU,EAAE;AACjC,UAAI,UAAU,KAAK;AACjB,gBAAQ;AAAA,MACV;AACA,UAAI,UAAU,KAAK;AACjB,gBAAQ;AAAA,MACV;AACA,WAAK,SAAS;AAAA,QACZ,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AACA,SAAK,IAAI,GAAG,UAAU,kCAAkC,iBAAiB;AACzE,SAAK,mBAAmB,SAAS,mBAAmB;AAClD,WAAK,IAAI,IAAI,UAAU,kCAAkC,iBAAiB;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,kBAAkB;AACpB,WAAK,IAAI,KAAK,8BAA8B,EAAE,IAAI,GAAG;AAAA,IACvD,OAAO;AACL,WAAK,IAAI,KAAK,6BAA6B,EAAE,KAAK,GAAG;AAAA,IACvD;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,iBAAkB,MAAK,iBAAiB;AACjD,WAAO,KAAK;AAAA,EACd;AACF;;;AClEA,IAAO,sBAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,YAAY,GAAG,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,mBAAmB,GAAG,YAAK,OAAO;AAAA,MACnC,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,mBAAmB,GAAG,YAAK,OAAO;AAAA,MACnC,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,SAAK,iBAAiB,KAAK,IAAI,MAAM,OAAO;AAAA,MAC1C,IAAI,KAAK,IAAI,KAAK,0BAA0B;AAAA,MAC5C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK;AAAA,UACP,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,wBAAwB,KAAK,IAAI,MAAM,OAAO;AAAA,MACjD,IAAI,KAAK,IAAI,KAAK,iCAAiC;AAAA,MACnD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,gBAAM,IAAI,KAAK,MAAM,QAAQ,GAAI,IAAI;AACrC,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,wBAAwB,KAAK,IAAI,MAAM,OAAO;AAAA,MACjD,IAAI,KAAK,IAAI,KAAK,iCAAiC;AAAA,MACnD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,gBAAM,IAAI,KAAK,MAAM,QAAQ,GAAI,IAAI;AACrC,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,GAAG;AAC5B,YAAM,MAAM,CAAC,GAAG,KAAK,MAAM,GAAG;AAC9B,YAAM,QAAQ,SAAS,aAAE,EAAE,MAAM,EAAE,KAAK,kBAAkB,GAAG,EAAE;AAC/D,UAAI,QAAQ,WAAW,EAAE,OAAO,KAAK;AACrC,UAAI,OAAO,MAAM,KAAK,GAAG;AACvB,UAAE,OAAO,QAAQ,IAAI,KAAK;AAC1B;AAAA,MACF;AACA,UAAI,UAAU,GAAG;AACf,gBAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,MAC1C,OAAO;AACL,gBAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI;AAAA,MAC9C;AACA,UAAI,KAAK,IAAI;AACb,WAAK,SAAS;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AACA,SAAK,IAAI,GAAG,UAAU,0CAA0C,iBAAiB;AACjF,SAAK,0BAA0B,SAAS,0BAA0B;AAChE,WAAK,IAAI,IAAI,UAAU,0CAA0C,iBAAiB;AAAA,IACpF;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,SAAK,eAAe,QAAQ;AAC5B,SAAK,sBAAsB,QAAQ,IAAI,CAAC;AACxC,SAAK,sBAAsB,QAAQ,IAAI,CAAC;AACxC,SAAK,eAAe,OAAO;AAC3B,SAAK,sBAAsB,OAAO;AAClC,SAAK,sBAAsB,OAAO;AAClC,UAAM,aAAa,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAClD,UAAM,UAAU,cAAc,IAAI,CAAC,GAAG,GAAG,CAAC;AAC1C,UAAM,WAAW,cAAc,IAAI,CAAC,GAAG,GAAG,CAAC;AAC3C,UAAM,aAAa,IAAI,CAAC;AACxB,SAAK,eAAe,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,GAAG,cAAc;AAC9F,SAAK,sBAAsB,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,WAAW,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,GAAG,IAAI;AACtJ,SAAK,sBAAsB,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,aAAa,GAAG,KAAK,aAAa,GAAG,KAAK,aAAa,GAAG,GAAG;AACjJ,SAAK,sBAAsB,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,mBAAmB,IAAI,MAAM,YAAY,UAAU,SAAS,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,WAAW,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,GAAG,KAAK;AACnQ,QAAI,eAAe,qBAAqB;AACtC,WAAK,IAAI,KAAK,8BAA8B,EAAE,IAAI,GAAG,GAAG,EAAE;AAC1D,WAAK,IAAI,KAAK,qCAAqC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,MAAO,EAAE,EAAE;AAChF,WAAK,IAAI,KAAK,qCAAqC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,MAAO,EAAE,EAAE;AAAA,IAClF,WAAW,aAAa;AACtB,WAAK,IAAI,KAAK,6BAA6B,EAAE,KAAK,GAAG,GAAG,EAAE;AAC1D,WAAK,IAAI,KAAK,oCAAoC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,MAAO,EAAE,EAAE;AAChF,WAAK,IAAI,KAAK,oCAAoC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,MAAO,EAAE,EAAE;AAAA,IAClF;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS;AACtD,WAAK,eAAe,QAAQ;AAAA,IAC9B;AACA,QAAI,KAAK,yBAAyB,KAAK,sBAAsB,SAAS;AACpE,WAAK,sBAAsB,QAAQ;AAAA,IACrC;AACA,QAAI,KAAK,yBAAyB,KAAK,sBAAsB,SAAS;AACpE,WAAK,sBAAsB,QAAQ;AAAA,IACrC;AACA,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,QAAI,KAAK,wBAAyB,MAAK,wBAAwB;AAC/D,WAAO,KAAK;AAAA,EACd;AACF;;;AC5LA,IAAO,qBAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,YAAY,GAAG,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,IACT,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,SAAK,iBAAiB,KAAK,IAAI,MAAM,OAAO;AAAA,MAC1C,IAAI,KAAK,IAAI,KAAK,0BAA0B;AAAA,MAC5C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK;AAAA,UACP,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,SAAK,eAAe,QAAQ;AAC5B,SAAK,eAAe,OAAO;AAC3B,SAAK,eAAe,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,GAAG,cAAc;AAC9F,QAAI,eAAe,qBAAqB;AACtC,WAAK,IAAI,KAAK,8BAA8B,EAAE,IAAI,GAAG,GAAG,EAAE;AAAA,IAC5D,WAAW,aAAa;AACtB,WAAK,IAAI,KAAK,6BAA6B,EAAE,KAAK,GAAG,GAAG,EAAE;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS;AACtD,WAAK,eAAe,QAAQ;AAAA,IAC9B;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;ACrEA,IAAO,4BAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,mBAAmB,GAAG,YAAK,OAAO;AAAA,MACnC,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,IACT,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,SAAK,wBAAwB,KAAK,IAAI,MAAM,OAAO;AAAA,MACjD,IAAI,KAAK,IAAI,KAAK,iCAAiC;AAAA,MACnD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,gBAAM,IAAI,KAAK,MAAM,QAAQ,GAAI,IAAI;AACrC,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,SAAK,sBAAsB,QAAQ,IAAI,CAAC;AACxC,SAAK,sBAAsB,OAAO;AAClC,UAAM,aAAa,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACvD,UAAM,UAAU,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/C,UAAM,WAAW,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAChD,SAAK,sBAAsB,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,WAAW,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,GAAG,IAAI;AACtJ,SAAK,sBAAsB,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,mBAAmB,IAAI,MAAM,YAAY,UAAU,SAAS,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,WAAW,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,GAAG,KAAK;AACnQ,QAAI,eAAe,qBAAqB;AACtC,WAAK,IAAI,KAAK,qCAAqC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,MAAO,EAAE,EAAE;AAAA,IAClF,WAAW,aAAa;AACtB,WAAK,IAAI,KAAK,oCAAoC,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,MAAO,EAAE,EAAE;AAAA,IAClF;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,yBAAyB,KAAK,sBAAsB,SAAS;AACpE,WAAK,sBAAsB,QAAQ;AAAA,IACrC;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;AC3EA,IAAO,kBAAQ;AAAA,EACb,OAAO,MAAM;AACX,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,KAAK,OAAO,QAAQ,IAAI,OAAK;AAC9B,UAAI,MAAM,QAAQ,CAAC,GAAG;AACpB,YAAI,MAAM;AAEV,eAAO,EAAE,IAAI,OAAK;AAAA,8EACoD,CAAC,8BAA8B,CAAC;AAAA,eAC/F,EAAE,KAAK,EAAE;AAChB,eAAO;AACP,eAAO;AAAA,MACT;AACA,aAAO,YAAK,OAAO;AAAA,QACjB,OAAO;AAAA,QACP,sBAAsB;AAAA,QACtB,OAAO,qBAAqB,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM;AACT,aAAS,mBAAmB,GAAG;AAC7B,YAAM,MAAM,aAAE,EAAE,MAAM,EAAE,KAAK,oBAAoB;AACjD,WAAK,SAAS;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AACA,SAAK,IAAI,GAAG,SAAS,4DAA4D,kBAAkB;AACnG,SAAK,uBAAuB,SAAS,uBAAuB;AAC1D,WAAK,IAAI,IAAI,SAAS,kCAAkC,kBAAkB;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,sBAAsB;AAC7B,WAAK,qBAAqB;AAAA,IAC5B;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;AC3CA,IAAO,iCAAQ;AAAA,EACb,SAAS;AACP,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM;AACT,aAAS,0BAA0B;AACjC,UAAI,KAAK,cAAc;AACrB,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI,KAAK;AACT,aAAK,SAAS;AAAA,UACZ;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,SAAK,IAAI,GAAG,SAAS,+BAA+B,uBAAuB;AAC3E,SAAK,8BAA8B,SAAS,8BAA8B;AACxE,WAAK,IAAI,IAAI,SAAS,+BAA+B,uBAAuB;AAAA,IAC9E;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,SAAK,IAAI,KAAK,yEAAyE,EAAE,IAAI,oBAAoB,KAAK,aAAa,GAAG;AACtI,SAAK,IAAI,KAAK,yEAAyE,EAAE,IAAI,oBAAoB,KAAK,MAAM,GAAG;AAAA,EACjI;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,6BAA6B;AACpC,WAAK,4BAA4B;AAAA,IACnC;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;ACvCA,IAAO,mBAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAY,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,YAAY,GAAG,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,CAAC,GAAG,YAAY,YAAK,OAAO;AAAA,MAC1B,OAAO;AAAA,IACT,GAAG,mBAAmB,YAAK,SAAS;AAAA,MAClC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,YAAY,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,cAAc,GAAG,YAAK,OAAO;AAAA,MAC9B,OAAO;AAAA,IACT,CAAC,GAAG,YAAY,YAAK,OAAO;AAAA,MAC1B,OAAO;AAAA,IACT,GAAG,mBAAmB,YAAK,SAAS;AAAA,MAClC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,YAAY,YAAK,OAAO;AAAA,MACzB,OAAO;AAAA,IACT,GAAG,aAAa,GAAG,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,CAAC,GAAG,YAAY,YAAK,OAAO;AAAA,MAC1B,OAAO;AAAA,IACT,GAAG,mBAAmB,YAAK,SAAS;AAAA,MAClC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,SAAK,SAAS,KAAK,IAAI,MAAM,OAAO;AAAA,MAClC,IAAI,KAAK,IAAI,KAAK,uBAAuB;AAAA,MACzC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,WAAW,KAAK,IAAI,MAAM,OAAO;AAAA,MACpC,IAAI,KAAK,IAAI,KAAK,yBAAyB;AAAA,MAC3C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,UAAU,KAAK,IAAI,MAAM,OAAO;AAAA,MACnC,IAAI,KAAK,IAAI,KAAK,wBAAwB;AAAA,MAC1C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,GAAG;AAC5B,YAAM,MAAM,CAAC,GAAG,KAAK,MAAM,GAAG;AAC9B,YAAM,QAAQ,SAAS,aAAE,EAAE,MAAM,EAAE,KAAK,kBAAkB,GAAG,EAAE;AAC/D,UAAI,QAAQ,SAAS,EAAE,OAAO,OAAO,EAAE;AACvC,UAAI,OAAO,MAAM,KAAK,GAAG;AACvB,UAAE,OAAO,QAAQ,IAAI,KAAK;AAC1B;AAAA,MACF;AACA,cAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AACxC,UAAI,KAAK,IAAI;AACb,WAAK,SAAS;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AACA,SAAK,IAAI,GAAG,UAAU,uCAAuC,iBAAiB;AAC9E,SAAK,uBAAuB,SAAS,uBAAuB;AAC1D,WAAK,IAAI,IAAI,UAAU,uCAAuC,iBAAiB;AAAA,IACjF;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,WAAO,QAAQ,IAAI,CAAC;AACpB,aAAS,QAAQ,IAAI,CAAC;AACtB,YAAQ,QAAQ,IAAI,CAAC;AACrB,WAAO,OAAO;AACd,aAAS,OAAO;AAChB,YAAQ,OAAO;AACf,WAAO,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,kCAAkC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI;AAC7I,aAAS,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,+BAA+B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI;AAC/I,YAAQ,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,+BAA+B,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS;AAC9I,QAAI,YAAY,kBAAkB;AAChC,WAAK,IAAI,KAAK,kCAAkC,EAAE,IAAI,IAAI,CAAC,CAAC;AAC5D,WAAK,IAAI,KAAK,oCAAoC,EAAE,IAAI,IAAI,CAAC,CAAC;AAC9D,WAAK,IAAI,KAAK,mCAAmC,EAAE,IAAI,IAAI,CAAC,CAAC;AAAA,IAC/D,WAAW,UAAU;AACnB,WAAK,IAAI,KAAK,iCAAiC,EAAE,KAAK,IAAI,CAAC,CAAC;AAC5D,WAAK,IAAI,KAAK,mCAAmC,EAAE,KAAK,IAAI,CAAC,CAAC;AAC9D,WAAK,IAAI,KAAK,kCAAkC,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IAC/D;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,UAAU,KAAK,OAAO,SAAS;AACtC,WAAK,OAAO,QAAQ;AAAA,IACtB;AACA,QAAI,KAAK,YAAY,KAAK,SAAS,SAAS;AAC1C,WAAK,SAAS,QAAQ;AAAA,IACxB;AACA,QAAI,KAAK,WAAW,KAAK,QAAQ,SAAS;AACxC,WAAK,QAAQ,QAAQ;AAAA,IACvB;AACA,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,QAAI,KAAK,qBAAsB,MAAK,qBAAqB;AACzD,WAAO,KAAK;AAAA,EACd;AACF;;;ACnLA,IAAO,sBAAQ;AAAA,EACb,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,YAAY,GAAG,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,cAAc,GAAG,YAAK,OAAO;AAAA,MAC9B,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MAChB,OAAO;AAAA,IACT,GAAG,eAAe,YAAK,OAAO;AAAA,MAC5B,OAAO;AAAA,IACT,GAAG,aAAa,GAAG,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,CAAC,GAAG,eAAe,YAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,IACT,GAAG,sBAAsB,YAAK,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB;AAAA,IACtB,CAAC,IAAI,YAAK,QAAQ;AAAA,MAChB,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,SAAK,iBAAiB,KAAK,IAAI,MAAM,OAAO;AAAA,MAC1C,IAAI,KAAK,IAAI,KAAK,0BAA0B;AAAA,MAC5C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,mBAAmB,KAAK,IAAI,MAAM,OAAO;AAAA,MAC5C,IAAI,KAAK,IAAI,KAAK,4BAA4B;AAAA,MAC9C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,kBAAkB,KAAK,IAAI,MAAM,OAAO;AAAA,MAC3C,IAAI,KAAK,IAAI,KAAK,2BAA2B;AAAA,MAC7C,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,QACF,OAAO,OAAO,OAAO;AACnB,eAAK,SAAS;AAAA,YACZ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,aAAS,kBAAkB,GAAG;AAC5B,YAAM,MAAM,CAAC,GAAG,KAAK,MAAM,GAAG;AAC9B,YAAM,QAAQ,SAAS,aAAE,EAAE,MAAM,EAAE,KAAK,kBAAkB,GAAG,EAAE;AAC/D,UAAI,QAAQ,SAAS,EAAE,OAAO,OAAO,EAAE;AACvC,UAAI,OAAO,MAAM,KAAK,GAAG;AACvB,UAAE,OAAO,QAAQ,IAAI,KAAK;AAC1B;AAAA,MACF;AACA,cAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AACxC,UAAI,KAAK,IAAI;AACb,WAAK,SAAS;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AACA,SAAK,IAAI,GAAG,UAAU,0CAA0C,iBAAiB;AACjF,SAAK,0BAA0B,SAAS,0BAA0B;AAChE,WAAK,IAAI,IAAI,UAAU,0CAA0C,iBAAiB;AAAA,IACpF;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,mBAAe,QAAQ,IAAI,CAAC;AAC5B,qBAAiB,QAAQ,IAAI,CAAC;AAC9B,oBAAgB,QAAQ,IAAI,CAAC;AAC7B,mBAAe,OAAO;AACtB,qBAAiB,OAAO;AACxB,oBAAgB,OAAO;AACvB,mBAAe,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG;AACvG,qBAAiB,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG;AACzG,oBAAgB,IAAI,CAAC,EAAE,MAAM,YAAY,yBAAyB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG;AACxG,UAAM,YAAY,IAAI,MAAM,YAAY;AACxC,mBAAe,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,mBAAmB,SAAS,YAAY,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI;AAC3J,qBAAiB,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,mBAAmB,SAAS,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI;AAC7J,oBAAgB,IAAI,KAAK,YAAY,EAAE,IAAI,oBAAoB,mBAAmB,SAAS,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS;AAC5J,QAAI,eAAe,qBAAqB;AACtC,WAAK,IAAI,KAAK,8BAA8B,EAAE,IAAI,IAAI,CAAC,CAAC;AACxD,WAAK,IAAI,KAAK,gCAAgC,EAAE,IAAI,IAAI,CAAC,CAAC;AAC1D,WAAK,IAAI,KAAK,+BAA+B,EAAE,IAAI,IAAI,CAAC,CAAC;AAAA,IAC3D,WAAW,aAAa;AACtB,WAAK,IAAI,KAAK,6BAA6B,EAAE,KAAK,IAAI,CAAC,CAAC;AACxD,WAAK,IAAI,KAAK,+BAA+B,EAAE,KAAK,IAAI,CAAC,CAAC;AAC1D,WAAK,IAAI,KAAK,8BAA8B,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IAC3D;AAAA,EACF;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS;AACtD,WAAK,eAAe,QAAQ;AAAA,IAC9B;AACA,QAAI,KAAK,oBAAoB,KAAK,iBAAiB,SAAS;AAC1D,WAAK,iBAAiB,QAAQ;AAAA,IAChC;AACA,QAAI,KAAK,mBAAmB,KAAK,gBAAgB,SAAS;AACxD,WAAK,gBAAgB,QAAQ;AAAA,IAC/B;AACA,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,WAAO,KAAK;AACZ,QAAI,KAAK,wBAAyB,MAAK,wBAAwB;AAC/D,WAAO,KAAK;AAAA,EACd;AACF;;;ACpLA,IAAO,sBAAQ;AAAA,EACb,SAAS;AACP,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,aAAS,uBAAuB,GAAG,GAAG;AACpC,UAAI,KAAK,IAAI,YAAY,QAAQ,YAAY;AAC7C,UAAI,KAAK,IAAI,YAAY,OAAO,YAAY;AAC5C,UAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC9B,UAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAClC,WAAK,SAAS;AAAA,QACZ,KAAK,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH;AACA,aAAS,iBAAiB,GAAG;AAC3B,UAAI,WAAW,UAAW;AAC1B,oBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,sBAAgB;AAChB,oBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,sBAAgB;AAChB,YAAM,YAAY,aAAE,EAAE,MAAM;AAC5B,+BAAyB,UAAU,QAAQ,kCAAkC,EAAE,SAAS;AACxF,UAAI,CAAC,wBAAwB;AAC3B,2BAAmB,UAAU,QAAQ,2BAA2B,EAAE,SAAS;AAAA,MAC7E;AACA,UAAI,kBAAkB;AACpB,sBAAc,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE,sBAAsB;AAC7E,+BAAuB,aAAa,WAAW;AAAA,MACjD;AACA,UAAI,0BAA0B,kBAAkB;AAC9C,YAAI,KAAK,kCAAkC,EAAE,SAAS,yCAAyC;AAAA,MACjG;AAAA,IACF;AACA,aAAS,gBAAgB,GAAG;AAC1B,UAAI,EAAE,oBAAoB,wBAAyB;AACnD,sBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,sBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,QAAE,eAAe;AACjB,UAAI,CAAC,SAAS;AAEZ,kBAAU;AACV,YAAI,wBAAwB;AAC1B,wBAAc,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE,sBAAsB;AAAA,QAC/E;AAAA,MACF;AACA,UAAI,oBAAoB,wBAAwB;AAC9C,+BAAuB,eAAe,aAAa;AAAA,MACrD;AAAA,IACF;AACA,aAAS,iBAAiB;AACxB,gBAAU;AACV,UAAI,oBAAoB,wBAAwB;AAC9C,YAAI,KAAK,kCAAkC,EAAE,YAAY,yCAAyC;AAAA,MACpG;AACA,yBAAmB;AACnB,+BAAyB;AAAA,IAC3B;AACA,aAAS,eAAe;AACtB,WAAK,QAAQ,aAAa,EAAE,OAAO,IAAI;AAAA,IACzC;AACA,UAAM,kBAAkB,IAAI,YAAY,UAAU,gBAAgB,WAAW,EAAE,kBAAkB;AAAA,MAC/F,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,SAAK,IAAI,GAAG,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACpE,QAAI,GAAG,oBAAoB,eAAe;AAC1C,QAAI,GAAG,oBAAoB,cAAc;AACzC,QAAI,GAAG,UAAU,YAAY;AAC7B,SAAK,wBAAwB,SAAS,wBAAwB;AAC5D,WAAK,IAAI,IAAI,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACrE,UAAI,IAAI,oBAAoB,eAAe;AAC3C,UAAI,IAAI,oBAAoB,cAAc;AAC1C,UAAI,IAAI,UAAU,YAAY;AAAA,IAChC;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,eAAe,KAAK,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE;AACnE,UAAM,gBAAgB,KAAK,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE;AACpE,SAAK,IAAI,KAAK,2BAA2B,EAAE,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,cAAc;AAC9F,SAAK,IAAI,KAAK,kCAAkC,EAAE,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,UAAU,aAAa,eAAe,IAAI,CAAC,CAAC,OAAO,iBAAiB,IAAI,IAAI,CAAC,EAAE,KAAK;AAAA,EACtN;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,sBAAuB,MAAK,sBAAsB;AAC3D,WAAO,KAAK;AAAA,EACd;AACF;;;ACjHA,IAAO,sBAAQ;AAAA,EACb,SAAS;AACP,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,CAAC,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,aAAS,uBAAuB,GAAG,GAAG;AACpC,UAAI,KAAK,IAAI,YAAY,QAAQ,YAAY,QAAQ;AACrD,UAAI,KAAK,IAAI,YAAY,OAAO,YAAY;AAC5C,UAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC;AAChC,UAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAClC,WAAK,SAAS;AAAA,QACZ,KAAK,CAAC,GAAG,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH;AACA,aAAS,iBAAiB,GAAG;AAC3B,UAAI,WAAW,UAAW;AAC1B,oBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,sBAAgB;AAChB,oBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,sBAAgB;AAChB,YAAM,YAAY,aAAE,EAAE,MAAM;AAC5B,+BAAyB,UAAU,QAAQ,kCAAkC,EAAE,SAAS;AACxF,UAAI,CAAC,wBAAwB;AAC3B,2BAAmB,UAAU,QAAQ,2BAA2B,EAAE,SAAS;AAAA,MAC7E;AACA,UAAI,kBAAkB;AACpB,sBAAc,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE,sBAAsB;AAC7E,+BAAuB,aAAa,WAAW;AAAA,MACjD;AACA,UAAI,0BAA0B,kBAAkB;AAC9C,YAAI,KAAK,kCAAkC,EAAE,SAAS,yCAAyC;AAAA,MACjG;AAAA,IACF;AACA,aAAS,gBAAgB,GAAG;AAC1B,UAAI,EAAE,oBAAoB,wBAAyB;AACnD,sBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,sBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,QAAE,eAAe;AACjB,UAAI,CAAC,SAAS;AAEZ,kBAAU;AACV,YAAI,wBAAwB;AAC1B,wBAAc,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE,sBAAsB;AAAA,QAC/E;AAAA,MACF;AACA,UAAI,oBAAoB,wBAAwB;AAC9C,+BAAuB,eAAe,aAAa;AAAA,MACrD;AAAA,IACF;AACA,aAAS,iBAAiB;AACxB,gBAAU;AACV,UAAI,oBAAoB,wBAAwB;AAC9C,YAAI,KAAK,kCAAkC,EAAE,YAAY,yCAAyC;AAAA,MACpG;AACA,yBAAmB;AACnB,+BAAyB;AAAA,IAC3B;AACA,aAAS,eAAe;AACtB,WAAK,QAAQ,aAAa,EAAE,OAAO,IAAI;AAAA,IACzC;AACA,UAAM,kBAAkB,IAAI,YAAY,UAAU,gBAAgB,WAAW,EAAE,kBAAkB;AAAA,MAC/F,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,SAAK,IAAI,GAAG,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACpE,QAAI,GAAG,oBAAoB,eAAe;AAC1C,QAAI,GAAG,oBAAoB,cAAc;AACzC,QAAI,GAAG,UAAU,YAAY;AAC7B,SAAK,wBAAwB,SAAS,wBAAwB;AAC5D,WAAK,IAAI,IAAI,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACrE,UAAI,IAAI,oBAAoB,eAAe;AAC3C,UAAI,IAAI,oBAAoB,cAAc;AAC1C,UAAI,IAAI,UAAU,YAAY;AAAA,IAChC;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM,eAAe,KAAK,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE;AACnE,UAAM,gBAAgB,KAAK,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE;AACpE,UAAM,YAAY,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjD,SAAK,IAAI,KAAK,kCAAkC,EAAE,IAAI,oBAAoB,OAAO,UAAU,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,GAAG,IAAI,EAAE,UAAU,aAAa,gBAAgB,IAAI,CAAC,IAAI,IAAI,OAAO,iBAAiB,IAAI,IAAI,CAAC,EAAE,KAAK;AAAA,EAChP;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,sBAAuB,MAAK,sBAAsB;AAC3D,WAAO,KAAK;AAAA,EACd;AACF;;;ACjHA,SAAS,kBAAkB;AACzB,QAAM,QAAQ;AACd,MAAI,UAAU;AACd,WAAS,IAAI,OAAO,IAAI,GAAG,KAAK,GAAG;AACjC,UAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ;AACrC,UAAM,MAAM,MAAM,QAAQ;AAC1B,eAAW,eAAe,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,SAAS,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,sBAAsB,GAAG;AAAA,EACpH;AACA,SAAO;AACT;AACA,IAAO,gBAAQ;AAAA,EACb,SAAS;AACP,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,GAAG,gBAAgB,CAAC,GAAG,YAAK,OAAO;AAAA,MACjC,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,MACP,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EACA,KAAK,MAAM;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,aAAS,sBAAsB,GAAG,GAAG;AACnC,YAAM,eAAe,UAAU,OAAO,UAAU,QAAQ;AACxD,YAAM,eAAe,UAAU,MAAM,UAAU,SAAS;AACxD,YAAM,WAAW,KAAK,MAAM,IAAI,cAAc,IAAI,YAAY;AAC9D,UAAI,WAAW,WAAW,MAAM,KAAK,KAAK;AAC1C,UAAI,WAAW,EAAG,aAAY;AAC9B,iBAAW,MAAM;AACjB,WAAK,SAAS;AAAA,QACZ,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AACA,aAAS,uBAAuB,GAAG,GAAG;AACpC,UAAI,KAAK,IAAI,YAAY,QAAQ,YAAY;AAC7C,UAAI,KAAK,IAAI,YAAY,OAAO,YAAY;AAC5C,UAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC9B,UAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAClC,WAAK,SAAS;AAAA,QACZ,KAAK,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH;AACA,aAAS,iBAAiB,GAAG;AAC3B,UAAI,WAAW,UAAW;AAC1B,oBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,sBAAgB;AAChB,oBAAc,EAAE,SAAS,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACrE,sBAAgB;AAChB,YAAM,YAAY,aAAE,EAAE,MAAM;AAC5B,6BAAuB,UAAU,QAAQ,4BAA4B,EAAE,SAAS;AAChF,uBAAiB,UAAU,QAAQ,QAAQ,EAAE,SAAS;AACtD,+BAAyB,UAAU,QAAQ,kCAAkC,EAAE,SAAS;AACxF,UAAI,CAAC,wBAAwB;AAC3B,2BAAmB,UAAU,QAAQ,2BAA2B,EAAE,SAAS;AAAA,MAC7E;AACA,UAAI,gBAAgB;AAClB,oBAAY,IAAI,KAAK,qBAAqB,EAAE,CAAC,EAAE,sBAAsB;AACrE,8BAAsB,aAAa,WAAW;AAAA,MAChD;AACA,UAAI,kBAAkB;AACpB,sBAAc,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE,sBAAsB;AAC7E,+BAAuB,aAAa,WAAW;AAAA,MACjD;AACA,UAAI,0BAA0B,kBAAkB;AAC9C,YAAI,KAAK,kCAAkC,EAAE,SAAS,yCAAyC;AAAA,MACjG;AAAA,IACF;AACA,aAAS,gBAAgB,GAAG;AAC1B,UAAI,EAAE,kBAAkB,yBAAyB,EAAE,oBAAoB,wBAAyB;AAChG,sBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,sBAAgB,EAAE,SAAS,cAAc,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE;AACtE,QAAE,eAAe;AACjB,UAAI,CAAC,SAAS;AAEZ,kBAAU;AACV,YAAI,sBAAsB;AACxB,sBAAY,IAAI,KAAK,qBAAqB,EAAE,CAAC,EAAE,sBAAsB;AAAA,QACvE;AACA,YAAI,wBAAwB;AAC1B,wBAAc,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE,sBAAsB;AAAA,QAC/E;AAAA,MACF;AACA,UAAI,kBAAkB,sBAAsB;AAC1C,8BAAsB,eAAe,aAAa;AAAA,MACpD;AACA,UAAI,oBAAoB,wBAAwB;AAC9C,+BAAuB,eAAe,aAAa;AAAA,MACrD;AAAA,IACF;AACA,aAAS,iBAAiB;AACxB,gBAAU;AACV,UAAI,oBAAoB,wBAAwB;AAC9C,YAAI,KAAK,kCAAkC,EAAE,YAAY,yCAAyC;AAAA,MACpG;AACA,uBAAiB;AACjB,6BAAuB;AACvB,yBAAmB;AACnB,+BAAyB;AAAA,IAC3B;AACA,aAAS,eAAe;AACtB,WAAK,QAAQ,MAAM,OAAO,IAAI;AAAA,IAChC;AACA,UAAM,kBAAkB,IAAI,YAAY,UAAU,gBAAgB,WAAW,EAAE,kBAAkB;AAAA,MAC/F,SAAS;AAAA,MACT,SAAS;AAAA,IACX,IAAI;AACJ,SAAK,IAAI,GAAG,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACpE,QAAI,GAAG,oBAAoB,eAAe;AAC1C,QAAI,GAAG,oBAAoB,cAAc;AACzC,QAAI,GAAG,UAAU,YAAY;AAC7B,SAAK,qBAAqB,SAAS,qBAAqB;AACtD,WAAK,IAAI,IAAI,IAAI,YAAY,OAAO,kBAAkB,eAAe;AACrE,UAAI,IAAI,oBAAoB,eAAe;AAC3C,UAAI,IAAI,oBAAoB,cAAc;AAC1C,UAAI,IAAI,UAAU,YAAY;AAAA,IAChC;AAAA,EACF;AAAA,EACA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,eAAe,KAAK,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE;AACnE,UAAM,gBAAgB,KAAK,IAAI,KAAK,2BAA2B,EAAE,CAAC,EAAE;AACpE,UAAM,YAAY,KAAK,IAAI,KAAK,qBAAqB,EAAE,CAAC,EAAE;AAC1D,UAAM,gBAAgB,YAAY;AAClC,UAAM,WAAW,MAAM,MAAM,KAAK,KAAK;AACvC,UAAM,aAAa,YAAY;AAC/B,UAAM,iBAAiB,aAAa;AACpC,UAAM,KAAK,gBAAgB,KAAK,IAAI,QAAQ,KAAK,gBAAgB,kBAAkB;AACnF,UAAM,KAAK,gBAAgB,KAAK,IAAI,QAAQ,KAAK,gBAAgB,kBAAkB;AACnF,SAAK,IAAI,KAAK,4BAA4B,EAAE,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,aAAa,EAAE,OAAO,EAAE,KAAK;AACxI,SAAK,IAAI,KAAK,2BAA2B,EAAE,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,cAAc;AAC9F,SAAK,IAAI,KAAK,kCAAkC,EAAE,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,UAAU,aAAa,eAAe,IAAI,CAAC,CAAC,OAAO,iBAAiB,IAAI,IAAI,CAAC,EAAE,KAAK;AAAA,EACtN;AAAA,EACA,QAAQ,MAAM;AACZ,QAAI,KAAK,mBAAoB,MAAK,mBAAmB;AACrD,WAAO,KAAK;AAAA,EACd;AACF;;;ACxJA,IAAM,cAAN,cAA0B,cAAgB;AAAA,EACxC,YAAY,KAAK,QAAQ;AACvB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,OAAO;AACb,SAAK,SAAS,OAAO,CAAC,GAAG,IAAI,OAAO,aAAa,MAAM;AACvD,QAAI;AACJ,QAAI,KAAK,OAAO,aAAa;AAC3B,qBAAe,aAAE,KAAK,OAAO,WAAW;AACxC,UAAI,aAAa,WAAW,EAAG,QAAO;AAAA,IACxC;AACA,QAAI;AACJ,QAAI,KAAK,OAAO,SAAS;AACvB,iBAAW,aAAE,KAAK,OAAO,OAAO;AAAA,IAClC;AACA,QAAI;AACJ,QAAI,KAAK,OAAO,UAAU;AACxB,kBAAY,aAAE,KAAK,OAAO,QAAQ;AAAA,IACpC;AACA,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA,aAAa,gBAAgB,aAAa,CAAC;AAAA,MAC3C,QAAQ,gBAAgB,aAAa,SAAS;AAAA,MAC9C;AAAA,MACA,SAAS,YAAY,SAAS,CAAC;AAAA,MAC/B;AAAA,MACA,UAAU,aAAa,UAAU,CAAC;AAAA,MAClC,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,KAAK,KAAK,OAAO;AAAA,MACjB,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,KAAK;AAAA;AAAA,QAEL,eAAe;AAAA,QACf,cAAc;AAAA,QACd,qBAAqB;AAAA,QACrB,SAAS;AAAA;AAAA,QAET,0BAA0B;AAAA,QAC1B,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,eAAe;AAAA,QACf,eAAe;AAAA,QACf,OAAO;AAAA;AAAA,MACT;AAAA,IACF,CAAC;AAED,aAAS,eAAe;AACtB,WAAK,KAAK;AAAA,IACZ;AACA,aAAS,aAAa,GAAG;AACvB,QAAE,eAAe;AAAA,IACnB;AACA,aAAS,gBAAgB;AACvB,WAAK,KAAK;AAAA,IACZ;AACA,aAAS,YAAY,GAAG;AACtB,UAAI,KAAK,aAAa,CAAC,KAAK,OAAQ;AACpC,UAAI,KAAK,OAAO,WAAW,OAAQ;AACnC,YAAM,iBAAiB,aAAE,EAAE,MAAM;AACjC,UAAI,CAAC,KAAK,UAAU,KAAK,QAAS;AAClC,UAAI,eAAe,QAAQ,qBAAqB,EAAE,OAAQ;AAC1D,UAAI,eAAe,QAAQ,4CAA4C,EAAE,OAAQ;AACjF,UAAI,YAAY,SAAS,SAAS,GAAG;AACnC,YAAI,eAAe,CAAC,MAAM,SAAS,CAAC,KAAK,eAAe,QAAQ,cAAc,EAAE,WAAW,GAAG;AAC5F,eAAK,MAAM;AAAA,QACb;AAAA,MACF,WAAW,aAAE,EAAE,MAAM,EAAE,QAAQ,cAAc,EAAE,WAAW,GAAG;AAC3D,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAGA,WAAO,MAAM;AAAA,MACX,oBAAoB;AAClB,aAAK,SAAS,GAAG,SAAS,YAAY;AACtC,YAAI,KAAK,OAAO,eAAe;AAC7B,eAAK,SAAS,GAAG,mBAAmB,YAAY;AAChD,cAAI,KAAK,SAAS,CAAC,GAAG;AACpB,iBAAK,SAAS,CAAC,EAAE,qBAAqB;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,MACA,oBAAoB;AAClB,aAAK,SAAS,IAAI,SAAS,YAAY;AACvC,YAAI,KAAK,OAAO,eAAe;AAC7B,eAAK,SAAS,IAAI,mBAAmB,YAAY;AACjD,cAAI,KAAK,SAAS,CAAC,GAAG;AACpB,mBAAO,KAAK,SAAS,CAAC,EAAE;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,MACA,qBAAqB;AACnB,aAAK,UAAU,GAAG,SAAS,aAAa;AAAA,MAC1C;AAAA,MACA,qBAAqB;AACnB,aAAK,UAAU,IAAI,SAAS,aAAa;AAAA,MAC3C;AAAA,MACA,mBAAmB;AACjB,YAAI,GAAG,SAAS,WAAW;AAAA,MAC7B;AAAA,MACA,mBAAmB;AACjB,YAAI,IAAI,SAAS,WAAW;AAAA,MAC9B;AAAA,IACF,CAAC;AACD,SAAK,KAAK;AACV,WAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI;AACJ,QAAI,OAAO,MAAM;AACf,aAAO,OAAO;AAAA,IAChB,OAAO;AACL,UAAI,UAAU;AACZ,eAAO,SAAS,QAAQ,OAAO,EAAE,UAAU,SAAS,QAAQ,OAAO,EAAE,CAAC,EAAE;AAAA,MAC1E;AACA,UAAI,CAAC,QAAQ,WAAW;AACtB,eAAO,UAAU,QAAQ,OAAO,EAAE,UAAU,UAAU,QAAQ,OAAO,EAAE,CAAC,EAAE;AAAA,MAC5E;AAAA,IACF;AACA,QAAI,CAAC,KAAM,QAAO,IAAI,MAAM;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,QAAI,KAAK,OAAO,eAAe;AAC7B,WAAK,IAAI,GAAG,UAAU,KAAK,aAAa;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,QAAI,KAAK,OAAO,eAAe;AAC7B,WAAK,IAAI,IAAI,UAAU,KAAK,aAAa;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,OAAO,KAAK,OAAQ;AAC9C,UAAM,iBAAiB,KAAK,IAAI,KAAK,eAAe;AACpD,QAAI,CAAC,eAAe,OAAQ;AAC5B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,eAAe,CAAC;AACpB,QAAI,gBAAgB,cAAc;AAChC,qBAAe,SAAS,wBAAwB;AAAA,IAClD,OAAO;AACL,qBAAe,YAAY,wBAAwB;AAAA,IACrD;AAAA,EACF;AAAA,EACA,YAAY;AACV,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,SAAU;AACpB,QAAI,KAAK,OAAO,cAAe,MAAK,SAAS,KAAK,YAAY,IAAI;AAAA,EACpE;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,SAAS,UAAU;AACzB,QAAI,SAAS,MAAM,KAAM,QAAO,MAAM;AACtC,QAAI,WAAW,OAAQ,QAAO;AAC9B,QAAI,KAAK,OAAQ,QAAO;AACxB,QAAI,OAAO,KAAK;AACd,aAAO,OAAO,OAAO,YAAY;AAAA,IACnC;AACA,QAAI,IAAI,SAAS,KAAK;AACpB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,KAAK,OAAO,aAAa;AAC3B,aAAO,KAAK,OAAO,YAAY,KAAK,MAAM,KAAK;AAAA,IACjD;AACA,WAAO,MAAM;AAAA,EACf;AAAA;AAAA,EAGA,kBAAkB,KAAK;AACrB,WAAO,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,GAAI,IAAI,KAAM,KAAK,MAAM,IAAI,CAAC,IAAI,GAAI,IAAI,GAAI;AAAA,EAC1G;AAAA,EACA,SAAS,OAAO,eAAe;AAC7B,QAAI,UAAU,QAAQ;AACpB,cAAQ,CAAC;AAAA,IACX;AACA,QAAI,kBAAkB,QAAQ;AAC5B,sBAAgB;AAAA,IAClB;AACA,UAAM,OAAO;AACb,QAAI,OAAO,UAAU,YAAa;AAClC,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK,SAAS,CAAC;AACnB,UAAM,kBAAkB,KAAK,SAAS,CAAC,KAAK,SAAS,CAAC,KAAK,OAAO;AAClE,QAAI;AACJ,WAAO,KAAK,KAAK,EAAE,QAAQ,OAAK;AAC9B,UAAI,CAAC,KAAK,SAAS,OAAO,KAAK,MAAM,CAAC,MAAM,aAAa;AACvD,uBAAe;AACf;AAAA,MACF;AACA,YAAM,IAAI,MAAM,CAAC;AACjB,UAAI,MAAM,QAAQ,CAAC,GAAG;AACpB,UAAE,QAAQ,CAAC,MAAM,aAAa;AAC5B,cAAI,SAAS,KAAK,MAAM,CAAC,EAAE,QAAQ,GAAG;AACpC,2BAAe;AAAA,UACjB;AAAA,QACF,CAAC;AAAA,MACH,WAAW,MAAM,KAAK,MAAM,CAAC,GAAG;AAC9B,uBAAe;AAAA,MACjB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,aAAc;AACnB,QAAI,MAAM,OAAO,MAAM,MAAM;AAC3B,YAAM,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,MAAM,OAAO,MAAM;AAChD,YAAM,CAAC,GAAG,GAAG,CAAC;AACd,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,IAAI,CAAC;AACX,cAAQ;AACR,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjC,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAAA,IACnC;AACA,QAAI,MAAM,OAAO,MAAM,MAAM;AAC3B,YAAM,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,MAAM,OAAO,MAAM;AAChD,YAAM,CAAC,GAAG,GAAG,CAAC;AACd,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,IAAI,CAAC;AACX,cAAQ;AACR,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjC,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAAA,IACnC;AACA,QAAI,MAAM,KAAK;AACb,YAAM,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,MAAM;AACnC,YAAM,CAAC,GAAG,GAAG,CAAC;AACd,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,IAAI,CAAC;AACX,cAAQ;AACR,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACjC,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAAA,IACnC;AACA,QAAI,MAAM,KAAK;AACb,YAAM,cAAc,MAAM,GAAG;AAC7B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,IAAI,CAAC;AACX,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AACrC,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,IACvC;AACA,QAAI,OAAO,MAAM,UAAU,aAAa;AACtC,cAAQ,MAAM;AACd,UAAI,OAAO,QAAQ,aAAa;AAC9B,eAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,MACvC;AACA,UAAI,OAAO,QAAQ,aAAa;AAC9B,eAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,MACvC;AAAA,IACF;AACA,QAAI,OAAO,MAAM,QAAQ,aAAa;AACpC,YAAM,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,YAAM,CAAC,MAAM,KAAK,GAAG,CAAC;AACtB,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,cAAc,GAAG,GAAG;AAC1B,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,KAAK,kBAAkB,GAAG;AAChC,YAAM,IAAI,CAAC;AACX,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AACrC,aAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,IACvC;AACA,SAAK,QAAQ;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,CAAC,KAAK,aAAc,MAAK,eAAe,OAAO,CAAC,GAAG,KAAK,KAAK;AACjE,SAAK,YAAY,eAAe;AAChC,QAAI,KAAK,UAAU,eAAe;AAChC,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EACA,WAAW;AACT,UAAM,OAAO;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,YAAY,YAAY;AACtB,QAAI,eAAe,QAAQ;AACzB,mBAAa;AAAA,IACf;AACA,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,aAAa,KAAK,OAAO,4BAA4B;AACvD,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,gBAAU,IAAI,oBAAoB,QAAQ,KAAK,KAAK,IAAI,CAAC,GAAG;AAAA,IAC9D;AACA,QAAI,YAAY;AACd,WAAK,KAAK,mCAAmC,MAAM,KAAK;AAAA,IAC1D;AACA,QAAI,YAAY,SAAS,QAAQ;AAC/B,YAAM,aAAa,KAAK,YAAY,KAAK;AACzC,UAAI,YAAY,SAAS,QAAQ;AAC/B,iBAAS,IAAI,UAAU;AACvB,YAAI,YAAY;AACd,mBAAS,QAAQ,QAAQ;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,UAAM;AAAA,MACJ,SAAAK;AAAA,IACF,IAAI;AACJ,SAAK,OAAO,QAAQ,QAAQ,OAAK;AAC/B,UAAI,OAAO,MAAM,YAAYA,SAAQ,CAAC,KAAKA,SAAQ,CAAC,EAAE,QAAQ;AAC5D,QAAAA,SAAQ,CAAC,EAAE,OAAO,IAAI;AAAA,MACxB,WAAW,KAAK,EAAE,QAAQ;AACxB,UAAE,OAAO,IAAI;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAM,OAAO;AACb,SAAK,cAAc;AAAA,EACrB;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA,SAAAA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO;AACX,WAAO,QAAQ,QAAQ,OAAK;AAC1B,UAAI,OAAO,MAAM,YAAYA,SAAQ,CAAC,KAAKA,SAAQ,CAAC,EAAE,QAAQ;AAC5D,gBAAQA,SAAQ,CAAC,EAAE,OAAO,IAAI;AAAA,MAChC,WAAW,KAAK,EAAE,QAAQ;AACxB,gBAAQ,EAAE,OAAO,IAAI;AAAA,MACvB;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,QAAI,KAAK,OAAO,cAAc;AAC5B,aAAO,KAAK,OAAO,aAAa,KAAK,MAAM,IAAI;AAAA,IACjD;AACA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,WAAW,UAAU,YAAK,OAAO;AAAA,MAClC,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,QAAQ;AAAA,MACf,OAAO;AAAA,IACT,GAAG,kBAAkB,CAAC,CAAC,GAAG,YAAK,OAAO;AAAA,MACpC,OAAO;AAAA,IACT,GAAG,eAAe,GAAG,WAAW,UAAU,YAAK,OAAO;AAAA,MACpD,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,MACP,cAAc;AAAA,IAChB,GAAG,eAAe,CAAC,CAAC,CAAC;AAAA,EACvB;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,QAAI,KAAK,OAAO,eAAe;AAC7B,aAAO,KAAK,OAAO,cAAc,KAAK,MAAM,IAAI;AAAA,IAClD;AACA,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,CAAC,GAAG,YAAK,OAAO;AAAA,MACd,OAAO;AAAA,IACT,GAAG,YAAK,KAAK;AAAA,MACX,OAAO;AAAA,MACP,cAAc;AAAA,MACd,gBAAgB;AAAA,IAClB,GAAG,KAAK,OAAO,gBAAgB,CAAC,CAAC,CAAC;AAAA,EACpC;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,oCAAoC,iBAAiB,iCAAiC,EAAE,IAAI,YAAY,EAAE;AAAA,IACnH,GAAG,KAAK,aAAa,CAAC;AAAA,EACxB;AAAA,EACA,cAAc;AACZ,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,qDAAqD,iBAAiB,iCAAiC,EAAE,IAAI,YAAY,EAAE;AAAA,IACpI,GAAG,gBAAgB,KAAK,cAAc,GAAG,YAAK,OAAO;AAAA,MACnD,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC;AAAA,EAC1B;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,gCAAgC,YAAY,EAAE;AAAA,IACvD,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,YAAK,OAAO;AAAA,MACb,OAAO,gBAAgB,iBAAiB,iCAAiC,EAAE;AAAA,IAC7E,GAAG,kBAAkB,KAAK,cAAc,GAAG,YAAK,OAAO;AAAA,MACrD,OAAO;AAAA,IACT,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3B;AAAA,EACA,cAAc;AACZ,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,4BAA4B,YAAY,EAAE;AAAA,IACnD,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,eAAe,KAAK,aAAa,GAAG,YAAK,OAAO;AAAA,MACjD,OAAO,gBAAgB,iBAAiB,iCAAiC,EAAE;AAAA,IAC7E,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3B;AAAA,EACA,aAAa;AACX,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,WAAO,YAAK,OAAO;AAAA,MACjB,OAAO,0BAA0B,YAAY,EAAE;AAAA,MAC/C,aAAa;AAAA,IACf,GAAG,KAAK,aAAa,GAAG,YAAK,OAAO;AAAA,MAClC,OAAO,gBAAgB,iBAAiB,iCAAiC,EAAE;AAAA,IAC7E,GAAG,YAAK,OAAO;AAAA,MACb,OAAO;AAAA,IACT,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC;AAAA,EAC1B;AAAA;AAAA,EAGA,SAAS;AACP,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,OAAQ,QAAO,OAAO,OAAO,KAAK,IAAI;AACjD,QAAI,KAAK,OAAQ,QAAO,KAAK,aAAa;AAC1C,QAAI,OAAO,WAAW,QAAQ;AAC5B,aAAO,KAAK,WAAW;AAAA,IACzB;AACA,UAAM,YAAY,KAAK,aAAa;AACpC,QAAI,cAAc,UAAW,QAAO,KAAK,cAAc;AACvD,QAAI,cAAc,QAAS,QAAO,KAAK,YAAY;AACnD,QAAI,cAAc,QAAS,QAAO,KAAK,YAAY;AAAA,EACrD;AAAA,EACA,SAAS;AACP,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAAA;AAAA,IACF,IAAI;AACJ,SAAK,UAAU;AACf,SAAK,SAAS;AACd,SAAK,UAAU;AAGf,SAAK,aAAa;AAClB,WAAO,QAAQ,QAAQ,OAAK;AAC1B,UAAI,OAAO,MAAM,YAAYA,SAAQ,CAAC,KAAKA,SAAQ,CAAC,EAAE,MAAM;AAC1D,QAAAA,SAAQ,CAAC,EAAE,KAAK,IAAI;AAAA,MACtB,WAAW,KAAK,EAAE,MAAM;AACtB,UAAE,KAAK,IAAI;AAAA,MACb;AAAA,IACF,CAAC;AACD,UAAM,cAAc,CAAC,SAAS,OAAO;AAGrC,QAAI,CAAC,aAAa;AAChB,UAAI,MAAO,MAAK,SAAS,KAAK;AAAA,eAAW,OAAO,OAAO;AACrD,aAAK,SAAS,OAAO,OAAO,KAAK;AAAA,MACnC,WAAW,CAAC,OAAO,OAAO;AACxB,aAAK,SAAS;AAAA,UACZ,KAAK;AAAA,QACP,GAAG,KAAK;AAAA,MACV;AAAA,IACF,WAAW,OAAO;AAChB,WAAK,eAAe,OAAO,CAAC,GAAG,KAAK;AACpC,WAAK,SAAS,OAAO,KAAK;AAAA,IAC5B;AAGA,QAAI,YAAa,MAAK,YAAY;AAClC,SAAK,cAAc;AAGnB,QAAI,OAAO,eAAe;AACxB,WAAK,cAAc;AAAA,IACrB;AAGA,QAAI,CAAC,UAAU,YAAY,SAAS,UAAU,IAAI,UAAU,MAAM;AAChE,eAAS,QAAQ,OAAO;AAAA,IAC1B;AACA,SAAK,cAAc;AAGnB,QAAI,KAAK;AACP,UAAI,QAAQ,kBAAkB;AAAA,IAChC;AACA,QAAI,UAAU;AACZ,eAAS,QAAQ,kBAAkB;AAAA,IACrC;AACA,SAAK,KAAK,+BAA+B,IAAI;AAAA,EAC/C;AAAA,EACA,WAAW;AACT,UAAM,OAAO;AACb,SAAK,UAAU;AACf,QAAI,KAAK,KAAK;AACZ,WAAK,IAAI,QAAQ,oBAAoB;AAAA,IACvC;AACA,QAAI,KAAK,UAAU;AACjB,WAAK,SAAS,QAAQ,oBAAoB;AAAA,IAC5C;AACA,SAAK,KAAK,mCAAmC,IAAI;AAAA,EACnD;AAAA,EACA,UAAU;AACR,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,SAAAA;AAAA,IACF,IAAI;AACJ,SAAK,UAAU;AACf,SAAK,UAAU;AAGf,SAAK,aAAa;AAClB,QAAI,KAAK,UAAU;AACjB,UAAI,IAAI,UAAU,MAAM;AACtB,aAAK,SAAS,QAAQ,MAAM;AAAA,MAC9B,OAAO;AACL,cAAM,WAAW,KAAK,SAAS,KAAK,UAAU;AAC9C,cAAM,WAAW,KAAK,SAAS,KAAK,UAAU;AAC9C,YAAI,YAAY,UAAU;AACxB,cAAI,MAAM,SAAS,KAAK,QAAQ;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AACA,WAAO,QAAQ,QAAQ,OAAK;AAC1B,UAAI,OAAO,MAAM,YAAYA,SAAQ,CAAC,KAAKA,SAAQ,CAAC,EAAE,SAAS;AAC7D,QAAAA,SAAQ,CAAC,EAAE,QAAQ,IAAI;AAAA,MACzB,WAAW,KAAK,EAAE,SAAS;AACzB,UAAE,QAAQ,IAAI;AAAA,MAChB;AAAA,IACF,CAAC;AACD,QAAI,KAAK,KAAK;AACZ,WAAK,IAAI,QAAQ,mBAAmB;AAAA,IACtC;AACA,QAAI,KAAK,UAAU;AACjB,WAAK,SAAS,QAAQ,mBAAmB;AAAA,IAC3C;AACA,SAAK,KAAK,iCAAiC,IAAI;AAAA,EACjD;AAAA,EACA,WAAW;AACT,UAAM,OAAO;AACb,SAAK,SAAS;AACd,SAAK,UAAU;AACf,QAAI,CAAC,KAAK,QAAQ;AAChB,eAAS,MAAM;AACb,YAAI,KAAK,SAAS,KAAK,MAAM,MAAM,KAAK,MAAM,SAAS;AACrD,cAAI,CAAC,KAAK,OAAO,gBAAgB;AAC/B,iBAAK,MAAM,QAAQ;AAAA,UACrB;AAAA,QACF;AACA,eAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACH;AACA,QAAI,KAAK,KAAK;AACZ,WAAK,IAAI,QAAQ,oBAAoB;AAAA,IACvC;AACA,QAAI,KAAK,UAAU;AACjB,WAAK,SAAS,QAAQ,oBAAoB;AAAA,IAC5C;AACA,SAAK,KAAK,mCAAmC,IAAI;AAAA,EACnD;AAAA,EACA,OAAO;AACL,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAQ;AACZ,QAAI,QAAQ;AACV,WAAK,MAAM,aAAE,KAAK,OAAO,CAAC;AAC1B,WAAK,IAAI,CAAC,EAAE,gBAAgB;AAC5B,WAAK,aAAa,OAAO,KAAK,GAAG;AACjC,WAAK,OAAO;AACZ,WAAK,SAAS;AACd;AAAA,IACF;AACA,UAAM,qBAAqB,KAAK,OAAO;AACvC,QAAI,OAAO,WAAW,QAAQ;AAC5B,WAAK,KAAK,OAAO,SAAS;AAAA,QACxB,KAAK,KAAK;AAAA,QACV,OAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM,KAAK;AAAA,UACX,IAAI;AAAA,YACF,aAAa,GAAG,MAAM;AACpB,mBAAK,MAAM,KAAK,IAAI,KAAK,eAAe;AACxC,mBAAK,IAAI,CAAC,EAAE,gBAAgB;AAC5B,mBAAK,OAAO;AAAA,YACd;AAAA,YACA,cAAc;AACZ,mBAAK,SAAS;AAAA,YAChB;AAAA,YACA,gBAAgB;AACd,mBAAK,QAAQ;AAAA,YACf;AAAA,YACA,eAAe;AACb,mBAAK,SAAS;AACd,kBAAI,KAAK,OAAO,KAAK,IAAI,CAAC,GAAG;AAC3B,qBAAK,IAAI,CAAC,EAAE,gBAAgB;AAC5B,uBAAO,KAAK,IAAI,CAAC,EAAE;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,YAAM,YAAY,KAAK,aAAa;AACpC,UAAI,WAAW,OAAO;AACtB,UAAI,aAAa,QAAQ,OAAO,aAAa,aAAa;AACxD,YAAI,cAAc,aAAa,IAAI,OAAO,QAAQ,aAAa,MAAO,YAAW;AACjF,YAAI,cAAc,QAAS,YAAW;AAAA,MACxC;AACA,YAAM,cAAc;AAAA,QAClB,UAAU,aAAa;AAAA,QACvB,YAAY,OAAO,gBAAgB,aAAa,WAAW;AAAA,QAC3D,SAAS;AAAA,QACT;AAAA,QACA,sBAAsB,OAAO;AAAA,QAC7B,IAAI;AAAA,UACF,OAAO;AACL,kBAAM,QAAQ;AACd,iBAAK,QAAQ;AACb,iBAAK,MAAM,cAAc,aAAa,cAAc,UAAU,MAAM,IAAI,KAAK,eAAe,IAAI,MAAM;AACtG,iBAAK,IAAI,CAAC,EAAE,gBAAgB;AAC5B,iBAAK,OAAO;AAAA,UACd;AAAA,UACA,SAAS;AACP,iBAAK,SAAS;AAAA,UAChB;AAAA,UACA,QAAQ;AACN,iBAAK,QAAQ;AAAA,UACf;AAAA,UACA,SAAS;AACP,iBAAK,SAAS;AACd,gBAAI,KAAK,OAAO,KAAK,IAAI,CAAC,GAAG;AAC3B,mBAAK,IAAI,CAAC,EAAE,gBAAgB;AAC5B,qBAAO,KAAK,IAAI,CAAC,EAAE;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,cAAc,SAAS;AACzB,oBAAY,OAAO,OAAO;AAC1B,oBAAY,eAAe,OAAO;AAAA,MACpC;AACA,UAAI,cAAc,SAAS;AACzB,oBAAY,OAAO,OAAO;AAC1B,oBAAY,eAAe,OAAO;AAAA,MACpC;AACA,UAAI,OAAO,kBAAkB,KAAK,MAAM;AACtC,aAAK,KAAK,OAAO,SAAS;AAAA,UACxB,KAAK,KAAK;AAAA,UACV,OAAO;AAAA,YACL,MAAM,KAAK;AAAA,YACX,CAAC,SAAS,GAAG;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,aAAK,QAAQ,IAAI,SAAS,EAAE,OAAO,WAAW;AAC9C,aAAK,MAAM,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AACN,UAAM,OAAO;AACb,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAQ;AACb,QAAI,QAAQ;AACV,WAAK,QAAQ;AACb,WAAK,SAAS;AACd;AAAA,IACF;AACA,QAAI,KAAK,OAAO,kBAAkB,KAAK,QAAQ,KAAK,OAAO,WAAW,QAAQ;AAC5E,WAAK,KAAK,OAAO,KAAK;AAAA,IACxB,OAAO;AACL,WAAK,MAAM,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EACA,OAAO;AACL,UAAM,OAAO;AACb,SAAK,UAAU;AACf,QAAI,KAAK,QAAQ;AACf,WAAK,KAAK;AACV,WAAK,KAAK,+BAA+B,IAAI;AAC7C;AAAA,IACF;AACA,QAAI,CAAC,KAAK,eAAe,KAAK,OAAO,OAAO;AAC1C,WAAK,SAAS,KAAK,OAAO,KAAK;AAAA,IACjC;AAGA,QAAI,KAAK,UAAU;AACjB,WAAK,kBAAkB;AAAA,IACzB;AACA,QAAI,KAAK,WAAW;AAClB,WAAK,mBAAmB;AAAA,IAC1B;AACA,QAAI,KAAK,OAAO,qBAAqB;AACnC,WAAK,iBAAiB;AAAA,IACxB;AACA,SAAK,KAAK,+BAA+B,IAAI;AAAA,EAC/C;AAAA,EACA,UAAU;AACR,UAAM,OAAO;AACb,QAAI,KAAK,UAAW;AACpB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,SAAK,KAAK,iDAAiD,IAAI;AAC/D,QAAI,IAAK,KAAI,QAAQ,2BAA2B;AAChD,SAAK,MAAM;AAGX,SAAK,aAAa;AAClB,QAAI,KAAK,UAAU;AACjB,WAAK,kBAAkB;AAAA,IACzB;AACA,QAAI,KAAK,WAAW;AAClB,WAAK,mBAAmB;AAAA,IAC1B;AACA,QAAI,KAAK,OAAO,qBAAqB;AACnC,WAAK,iBAAiB;AAAA,IACxB;AACA,QAAI,OAAO,IAAI,OAAQ,QAAO,KAAK,IAAI,CAAC,EAAE;AAC1C,gBAAY,IAAI;AAChB,SAAK,YAAY;AAAA,EACnB;AACF;AACA,IAAO,6BAAQ;;;ACn2Bf,IAAO,uBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,cAAc,mBAAmB;AAAA,MACnC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AACD,QAAI,YAAY,QAAQ,SAASC,OAAM,IAAI;AACzC,UAAI,OAAO,QAAQ;AACjB,aAAK;AAAA,MACP;AACA,YAAM,MAAM,aAAE,EAAE;AAChB,UAAI,IAAI,WAAW,EAAG;AACtB,YAAM,cAAc,IAAI,CAAC,EAAE;AAC3B,UAAI,CAAC,eAAe,eAAe,CAAC,YAAY,OAAQ;AACxD,kBAAY,MAAM;AAAA,IACpB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,aAAa;AAAA;AAAA,MAEX,OAAO;AAAA,MACP,SAAS,CAAC,OAAO;AAAA,MACjB,SAAS,CAAC,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAAG,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,CAAC;AAAA,MACx4B,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,aAAa;AAAA,MACb,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,gBAAgB;AAAA;AAAA,MAEhB,aAAa;AAAA,MACb,QAAQ;AAAA;AAAA,MAER,aAAa;AAAA;AAAA,MAEb,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,UAAU;AAAA,MACV,4BAA4B;AAAA,MAC5B,SAAS;AAAA,MACT,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,UAAU;AAAA,MACV,sBAAsB;AAAA;AAAA,MAEtB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,EACF;AACF;;;ACzFA,IAAM,WAAW;AAAA,EACf,KAAK,QAAQ;AACX,UAAM,MAAM;AACZ,UAAM,UAAU,aAAE,MAAM,EAAE,GAAG,CAAC;AAC9B,QAAI,CAAC,QAAQ,OAAQ;AACrB,YAAQ,SAAS,sBAAsB;AACvC,YAAQ,QAAQ,eAAe;AAC/B,QAAI,KAAK,gBAAgB,QAAQ,CAAC,CAAC;AACnC,aAAS,KAAK,QAAQ;AACpB,UAAI,QAAQ;AACV,gBAAQ,YAAY,sBAAsB;AAC1C,gBAAQ,QAAQ,gBAAgB;AAChC,YAAI,KAAK,iBAAiB,QAAQ,CAAC,CAAC;AAAA,MACtC,OAAO;AACL,gBAAQ,CAAC,EAAE,2BAA2B;AAAA,MACxC;AACA,cAAQ,KAAK,kBAAkB,EAAE,YAAY,wBAAwB;AACrE,cAAQ,KAAK,qBAAqB,EAAE,OAAO;AAAA,IAC7C;AACA,QAAI,QAAQ,SAAS,wBAAwB,KAAK,CAAC,QAAQ,CAAC,EAAE,0BAA0B;AACtF,YAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AACA,cAAQ,QAAQ,yBAAyB,IAAI;AAC7C,UAAI,KAAK,wBAAwB,QAAQ,CAAC,GAAG,IAAI;AACjD,cAAQ,KAAK,kBAAkB,EAAE,SAAS,wBAAwB;AAClE,cAAQ,KAAK,qBAAqB,EAAE,QAAQ,6CAA6C,WAAW,GAAG,IAAI,KAAK,kBAAkB,CAAC,QAAQ;AAAA,IAC7I;AAAA,EACF;AAAA,EACA,MAAM,QAAQ;AACZ,UAAM,MAAM;AACZ,UAAM,UAAU,aAAE,MAAM,EAAE,GAAG,CAAC;AAC9B,QAAI,CAAC,QAAQ,OAAQ;AACrB,YAAQ,YAAY,sBAAsB;AAC1C,YAAQ,QAAQ,gBAAgB;AAChC,QAAI,KAAK,iBAAiB,QAAQ,CAAC,CAAC;AAAA,EACtC;AAAA,EACA,OAAO,QAAQ;AACb,UAAM,MAAM;AACZ,UAAM,UAAU,aAAE,MAAM,EAAE,GAAG,CAAC;AAC9B,QAAI,CAAC,QAAQ,OAAQ;AACrB,UAAM,YAAY,QAAQ,SAAS,sBAAsB;AACzD,QAAI,SAAS,YAAY,UAAU,MAAM,EAAE,OAAO;AAAA,EACpD;AACF;AACA,IAAO,mBAAQ;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACP,UAAM,MAAM;AACZ,gBAAY,KAAK;AAAA,MACf,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EACA,QAAQ;AAAA,IACN,oBAAoB,SAASC,QAAO,YAAY,aAAa,GAAG;AAC9D,YAAM,MAAM;AACZ,UAAI,WAAW,QAAQ,uBAAuB,EAAE,OAAQ;AACxD,YAAM,kBAAkB,WAAW,QAAQ,gBAAgB,EAAE,GAAG,CAAC;AACjE,UAAI,CAAC,gBAAgB,OAAQ;AAC7B,QAAE,kBAAkB;AACpB,UAAI,SAAS,OAAO,gBAAgB,CAAC,CAAC;AAAA,IACxC;AAAA,IACA,yBAAyB,SAASA,QAAO,YAAY,aAAa,GAAG;AACnE,YAAM,MAAM;AACZ,YAAM,kBAAkB,WAAW,QAAQ,gBAAgB,EAAE,GAAG,CAAC;AACjE,UAAI,CAAC,gBAAgB,OAAQ;AAC7B,QAAE,kBAAkB;AACpB,UAAI,SAAS,OAAO,gBAAgB,CAAC,CAAC;AAAA,IACxC;AAAA,EACF;AACF;;;ACpEA,IAAM,uBAAuB;AAAA;AAAA,EAE3B,MAAM,CAAC,QAAQ,eAAe,MAAM;AAAA,EACpC,QAAQ,CAAC,UAAU,iBAAiB,QAAQ;AAAA,EAC5C,WAAW,CAAC,aAAa,qBAAqB,WAAW;AAAA,EACzD,eAAe,CAAC,iBAAiB,mBAAmB,eAAe;AAAA,EACnE,aAAa,CAAC,eAAe,wBAAwB,mBAAmB;AAAA,EACxE,eAAe,CAAC,eAAe,wBAAwB,qBAAqB;AAAA,EAC5E,MAAM,CAAC,QAAQ,QAAQ,YAAY;AAAA,EACnC,OAAO,CAAC,SAAS,SAAS,aAAa;AAAA,EACvC,WAAW,CAAC,aAAa,yBAAyB,eAAe;AAAA,EACjE,IAAI,CAAC,qCAAqC,qCAAqC,gBAAgB;AAAA,EAC/F,IAAI,CAAC,qCAAqC,qCAAqC,gBAAgB;AAAA,EAC/F,IAAI,CAAC,qCAAqC,qCAAqC,gBAAgB;AAAA,EAC/F,WAAW,CAAC,kBAAkB,qBAAqB,aAAa;AAAA,EAChE,aAAa,CAAC,oBAAoB,uBAAuB,eAAe;AAAA,EACxE,YAAY,CAAC,mBAAmB,sBAAsB,cAAc;AAAA,EACpE,cAAc,CAAC,gBAAgB,wBAAwB,aAAa;AAAA,EACpE,WAAW,CAAC,wBAAwB,qCAAqC,WAAW;AAAA,EACpF,aAAa,CAAC,0BAA0B,qCAAqC,aAAa;AAAA,EAC1F,QAAQ,CAAC,mBAAmB,0BAA0B,QAAQ;AAAA,EAC9D,SAAS,CAAC,mBAAmB,0BAA0B,SAAS;AAClE;AACA,IAAM,aAAN,cAAyB,cAAgB;AAAA,EACvC,YAAY,KAAK,QAAQ;AACvB,UAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,UAAM,OAAO;AACb,UAAMC,YAAW,YAAY;AAC7B,UAAM,SAAS,UAAU;AACzB,UAAMC,YAAW,OAAO,CAAC,GAAG,IAAI,OAAO,UAAU;AAGjD,SAAK,iBAAiBA,SAAQ;AAC9B,SAAK,SAAS,OAAOA,WAAU,MAAM;AACrC,UAAM,KAAK,KAAK,OAAO;AACvB,QAAI,CAAC,GAAI,QAAO;AAChB,UAAM,MAAM,aAAE,EAAE;AAChB,QAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,QAAI,IAAI,CAAC,EAAE,aAAc,QAAO,IAAI,CAAC,EAAE;AACvC,QAAI,aAAa,IAAI,SAAS,sBAAsB;AACpD,QAAI,CAAC,WAAW,QAAQ;AACtB,UAAI,OAAO,yDAAyD;AACpE,mBAAa,IAAI,SAAS,sBAAsB;AAAA,IAClD;AACA,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA,IAAI,IAAI,CAAC;AAAA,MACT;AAAA,MACA,WAAW,WAAW,CAAC;AAAA,IACzB,CAAC;AACD,QAAI,WAAW,QAAQ;AACrB,WAAK,QAAQ,KAAK,OAAO;AAAA,IAC3B;AACA,QAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C,UAAI,EAAE,OAAO,WAAW,OAAO,cAAc,CAAC,OAAO,SAAS;AAC5D,aAAK,OAAO,OAAO;AAAA,MACrB;AAAA,IACF;AACA,QAAI,OAAO,KAAK,OAAO,YAAY,UAAU;AAC3C,UAAI;AACF,aAAK,OAAO,UAAU,KAAK,MAAM,KAAK,OAAO,OAAO;AAAA,MACtD,SAAS,KAAK;AACZ,cAAM,IAAI,MAAM,0DAA0D;AAAA,MAC5E;AAAA,IACF;AACA,QAAI,CAAC,EAAE,eAAe;AAGtB,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AACnC,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AACzD,SAAK,uBAAuB,KAAK,qBAAqB,KAAK,IAAI;AAG/D,SAAK,eAAe,SAASC,gBAAe;AAC1C,UAAI,KAAK,OAAO,SAAS,WAAW;AAClC,aAAK,IAAI,KAAK,sBAAsB,EAAE,GAAG,SAAS,UAAU,KAAK,aAAa;AAAA,MAChF;AACA,UAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C,aAAK,mBAAmB,GAAG,SAAS,UAAU,KAAK,aAAa;AAChE,aAAK,IAAI,QAAQ,OAAO,EAAE,GAAG,kBAAkB,KAAK,oBAAoB;AAAA,MAC1E;AACA,UAAI,KAAK,OAAO,SAAS,aAAa,KAAK,SAAS;AAClD,aAAK,QAAQ,IAAI,GAAG,SAAS,UAAU,KAAK,aAAa;AAAA,MAC3D;AACA,WAAK,WAAW,GAAG,SAAS,KAAK,OAAO;AACxC,WAAK,WAAW,GAAG,SAAS,KAAK,OAAO;AACxC,WAAK,WAAW,GAAG,QAAQ,KAAK,MAAM;AACtC,WAAK,WAAW,GAAG,SAAS,KAAK,SAAS,IAAI;AAC9C,mBAAEF,SAAQ,EAAE,GAAG,mBAAmB,KAAK,iBAAiB;AAAA,IAC1D;AACA,SAAK,eAAe,SAASG,gBAAe;AAC1C,UAAI,KAAK,OAAO,SAAS,WAAW;AAClC,aAAK,IAAI,KAAK,sBAAsB,EAAE,IAAI,SAAS,UAAU,KAAK,aAAa;AAAA,MACjF;AACA,UAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C,aAAK,mBAAmB,IAAI,SAAS,UAAU,KAAK,aAAa;AACjE,aAAK,IAAI,QAAQ,OAAO,EAAE,IAAI,kBAAkB,KAAK,oBAAoB;AAAA,MAC3E;AACA,UAAI,KAAK,OAAO,SAAS,aAAa,KAAK,SAAS;AAClD,aAAK,QAAQ,IAAI,IAAI,SAAS,UAAU,KAAK,aAAa;AAAA,MAC5D;AACA,WAAK,WAAW,IAAI,SAAS,KAAK,OAAO;AACzC,WAAK,WAAW,IAAI,SAAS,KAAK,OAAO;AACzC,WAAK,WAAW,IAAI,QAAQ,KAAK,MAAM;AACvC,WAAK,WAAW,IAAI,SAAS,KAAK,SAAS,IAAI;AAC/C,mBAAEH,SAAQ,EAAE,IAAI,mBAAmB,KAAK,iBAAiB;AAAA,IAC3D;AAGA,SAAK,WAAW;AAGhB,SAAK,KAAK;AACV,WAAO;AAAA,EACT;AAAA,EACA,SAAS,UAAU;AACjB,UAAM,OAAO;AACb,UAAM,eAAe,KAAK;AAC1B,QAAI,iBAAiB,SAAU,QAAO;AACtC,SAAK,QAAQ;AACb,SAAK,WAAW,KAAK,QAAQ;AAC7B,SAAK,IAAI,QAAQ,qBAAqB,KAAK,KAAK;AAChD,SAAK,KAAK,kCAAkC,MAAM,KAAK,KAAK;AAC5D,WAAO;AAAA,EACT;AAAA,EACA,WAAW;AACT,UAAM,OAAO;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,aAAa;AACX,UAAM,OAAO;AACb,SAAK,SAAS,EAAE;AAChB,QAAI,KAAK,OAAO,eAAe,CAAC,KAAK,WAAW,KAAK,GAAG;AACtD,WAAK,kBAAkB;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,UAAM,OAAO;AACb,UAAMI,UAAS,UAAU;AACzB,UAAMJ,YAAW,YAAY;AAC7B,UAAM,mBAAmBI,QAAO,aAAa;AAC7C,UAAM,gBAAgB,CAAC;AACvB,QAAI;AACJ,QAAI,oBAAoB,iBAAiB,cAAc,aAAE,iBAAiB,UAAU,EAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ;AAC9G,UAAI,aAAa,iBAAiB;AAClC,aAAO,YAAY;AACjB,sBAAc,KAAK,UAAU;AAC7B,YAAI,CAAC,WAAW,eAAe,eAAe,iBAAiB,WAAW;AACxE,uBAAa;AAAA,QACf;AACA,YAAI,YAAY;AACd,uBAAa,WAAW;AAAA,QAC1B;AAAA,MACF;AACA,YAAM,qBAAqB,CAAC;AAC5B,YAAM,iBAAiB,aAAE,aAAa;AACtC,eAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK,GAAG;AACjD,cAAM,aAAa,eAAe,CAAC,EAAE;AACrC,YAAI,YAAY;AACd,mBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAC7C,gBAAI,aAAE,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG;AAC5B,iCAAmB,KAAK,WAAW,CAAC,CAAC;AAAA,YACvC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,uBAAiB,eAAe,QAAQ,GAAG,EAAE,IAAI,aAAE,kBAAkB,CAAC;AAAA,IACxE;AACA,QAAI,kBAAkB,eAAe,QAAQ;AAC3C,qBAAe,KAAK,cAAY;AAC9B,cAAM,YAAYA,QAAO,aAAa;AACtC,cAAM,QAAQJ,UAAS,YAAY;AACnC,cAAM,mBAAmB,QAAQ;AACjC,kBAAU,gBAAgB;AAC1B,kBAAU,SAAS,KAAK;AACxB,QAAAA,UAAS,YAAY,UAAU,KAAK;AACpC,kBAAU,gBAAgB;AAAA,MAC5B,CAAC;AACD,aAAO;AAAA,IACT;AACA,UAAM,eAAe,KAAK,kBAAkB;AAC5C,QAAI,CAAC,aAAc,QAAO;AAC1B,UAAM,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI,KAAK,OAAO,aAAa,UAAQ;AACzE,UAAI,QAAQ,KAAK,KAAK,EAAE,QAAQ;AAC9B,aAAK,kBAAkB,YAAY;AACnC,QAAAA,UAAS,YAAY,cAAc,OAAO,KAAK,KAAK,CAAC;AACrD,aAAK,IAAI,QAAQ,yBAAyB;AAAA,UACxC,KAAK,KAAK,KAAK;AAAA,QACjB,CAAC;AACD,aAAK,KAAK,yCAAyC,MAAM,KAAK,KAAK,CAAC;AAAA,MACtE;AAAA,IACF,CAAC;AACD,WAAO,IAAI,KAAK,OAAO,EAAE,MAAM;AAC/B,WAAO;AAAA,EACT;AAAA,EACA,cAAc;AACZ,UAAM,OAAO;AACb,UAAMA,YAAW,YAAY;AAC7B,UAAM,eAAe,KAAK,kBAAkB;AAC5C,QAAI,CAAC,aAAc,QAAO;AAC1B,UAAM,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI,KAAK,OAAO,cAAc,cAAY;AAC9E,UAAI,YAAY,SAAS,KAAK,EAAE,QAAQ;AACtC,aAAK,kBAAkB,YAAY;AACnC,QAAAA,UAAS,YAAY,eAAe,OAAO,SAAS,KAAK,CAAC;AAC1D,aAAK,IAAI,QAAQ,0BAA0B;AAAA,UACzC,KAAK,SAAS,KAAK;AAAA,QACrB,CAAC;AACD,aAAK,KAAK,2CAA2C,MAAM,SAAS,KAAK,CAAC;AAAA,MAC5E;AAAA,IACF,CAAC;AACD,WAAO,IAAI,KAAK,OAAO,EAAE,MAAM;AAC/B,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB;AAClB,UAAM,OAAO;AACb,SAAK,WAAW,KAAK,0BAA0B,EAAE,OAAO;AAAA,EAC1D;AAAA,EACA,oBAAoB;AAClB,UAAM,OAAO;AACb,SAAK,WAAW,OAAO,wCAAwC,KAAK,OAAO,WAAW,QAAQ;AAAA,EAChG;AAAA,EACA,oBAAoB;AAClB,UAAM,OAAO;AACb,UAAMI,UAAS,UAAU;AACzB,UAAMJ,YAAW,YAAY;AAC7B,QAAI,KAAK,OAAO,SAAS,UAAW;AACpC,UAAM,YAAYI,QAAO,aAAa;AACtC,UAAM,uBAAuB,aAAE,UAAU,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,UAAU,UAAU,eAAe,KAAK;AACrH,QAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C,UAAI,CAAC,sBAAsB;AACzB,aAAK,qBAAqB;AAAA,MAC5B,OAAO;AACL,aAAK,oBAAoB;AAAA,MAC3B;AACA;AAAA,IACF;AACA,QAAI,KAAK,OAAO,SAAS,WAAW;AAClC,YAAM,uBAAuB,aAAE,UAAU,UAAU,EAAE,QAAQ,KAAK,QAAQ,EAAE,EAAE,UAAU,UAAU,eAAe,KAAK,QAAQ;AAC9H,UAAI,CAAC,wBAAwB,CAAC,sBAAsB;AAClD,aAAK,aAAa;AAClB;AAAA,MACF;AACA,UAAI,CAAC,UAAU,eAAe,UAAU,YAAY;AAClD,cAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,cAAM,OAAO,MAAM,sBAAsB;AACzC,cAAM,SAAS,KAAK,IAAI,IAAI,CAAC,KAAKJ,UAAS;AAC3C,aAAK,YAAY,KAAK,KAAKI,QAAO,WAAW,KAAK,OAAO,YAAY,KAAK,KAAKA,QAAO,WAAW,KAAK,OAAO,WAAW,KAAK,OAAO,KAAK,MAAM;AAAA,MACjJ,WAAW,UAAU,aAAa;AAChC,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ,GAAG;AACT,UAAM,OAAO;AACb,UAAMJ,YAAW,YAAY;AAC7B,QAAI,KAAK,OAAO,0BAA0B,EAAE,iBAAiB,EAAE,cAAc,SAAS;AACpF,YAAM,OAAO,EAAE,cAAc,QAAQ,YAAY;AACjD,QAAE,eAAe;AACjB,MAAAA,UAAS,YAAY,cAAc,OAAO,IAAI;AAAA,IAChD;AAAA,EACF;AAAA,EACA,UAAU;AACR,UAAM,OAAO;AACb,UAAM,QAAQ,KAAK,WAAW,KAAK;AACnC,SAAK,QAAQ;AACb,SAAK,IAAI,QAAQ,kBAAkB;AACnC,SAAK,KAAK,+BAA+B,MAAM,KAAK,KAAK;AACzD,SAAK,IAAI,QAAQ,qBAAqB,KAAK,KAAK;AAChD,SAAK,KAAK,kCAAkC,MAAM,KAAK,KAAK;AAAA,EAC9D;AAAA,EACA,UAAU;AACR,UAAM,OAAO;AACb,SAAK,kBAAkB;AACvB,SAAK,WAAW,MAAM;AACtB,SAAK,IAAI,QAAQ,kBAAkB;AACnC,SAAK,KAAK,gCAAgC,IAAI;AAAA,EAChD;AAAA,EACA,SAAS;AACP,UAAM,OAAO;AACb,UAAMI,UAAS,UAAU;AACzB,UAAMJ,YAAW,YAAY;AAC7B,QAAI,KAAK,OAAO,eAAe,KAAK,WAAW,KAAK,MAAM,IAAI;AAC5D,WAAK,kBAAkB;AAAA,IACzB;AACA,QAAI,KAAK,OAAO,SAAS,WAAW;AAClC,YAAM,YAAYI,QAAO,aAAa;AACtC,YAAM,uBAAuB,aAAE,UAAU,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,UAAU,UAAU,eAAe,KAAK;AACrH,YAAM,YAAYJ,UAAS,iBAAiB,KAAK,WAAW,aAAEA,UAAS,aAAa,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE;AAChH,UAAI,CAAC,aAAa,CAAC,sBAAsB;AACvC,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AACA,QAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C,YAAM,YAAYI,QAAO,aAAa;AACtC,YAAM,uBAAuB,aAAE,UAAU,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,UAAU,UAAU,eAAe,KAAK;AACrH,UAAI,CAAC,sBAAsB;AACzB,aAAK,qBAAqB;AAAA,MAC5B;AAAA,IACF;AACA,SAAK,IAAI,QAAQ,iBAAiB;AAClC,SAAK,KAAK,8BAA8B,IAAI;AAAA,EAC9C;AAAA,EACA,cAAc,GAAG;AACf,UAAM,OAAO;AACb,UAAMA,UAAS,UAAU;AACzB,UAAMJ,YAAW,YAAY;AAC7B,UAAM,YAAYI,QAAO,aAAa;AACtC,UAAM,uBAAuB,aAAE,UAAU,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,UAAU,UAAU,eAAe,KAAK;AACrH,QAAI,CAAC,qBAAsB;AAC3B,UAAM,YAAY,aAAE,EAAE,MAAM,EAAE,QAAQ,QAAQ;AAC9C,QAAI,UAAU,QAAQ,MAAM,EAAE,QAAQ;AACpC,QAAE,eAAe;AAAA,IACnB;AACA,UAAM,SAAS,UAAU,KAAK,aAAa;AAC3C,UAAM,aAAa,KAAK,OAAO,iBAAiB,KAAK,OAAO,cAAc,MAAM;AAChF,QAAI,CAAC,UAAU,EAAE,qBAAqB,MAAM,KAAK,YAAa;AAC9D,cAAU,QAAQ,0BAA0B,MAAM;AAClD,SAAK,KAAK,4CAA4C,MAAM,MAAM;AAClE,QAAI,YAAY;AACd,UAAI,WAAW,QAAS,YAAW,QAAQ,MAAM,UAAU,CAAC,CAAC;AAC7D;AAAA,IACF;AACA,UAAM,UAAU,qBAAqB,MAAM,EAAE,CAAC;AAC9C,QAAI,YAAY,cAAc;AAC5B,WAAK,WAAW;AAChB;AAAA,IACF;AACA,QAAI,YAAY,eAAe;AAC7B,WAAK,YAAY;AACjB;AAAA,IACF;AACA,QAAI,QAAQ,QAAQ,aAAa,MAAM,GAAG;AACxC,YAAM,UAAU,QAAQ,MAAM,GAAG,EAAE,CAAC;AACpC,YAAM,cAAc,aAAE,UAAU,UAAU;AAC1C,UAAI,YAAY,QAAQ,QAAQ,YAAY,CAAC,EAAE,UAAU,YAAY,GAAG,OAAO,GAAG;AAChF,QAAAJ,UAAS,YAAY,eAAe,OAAO,KAAK;AAAA,MAClD,OAAO;AACL,QAAAA,UAAS,YAAY,eAAe,OAAO,OAAO;AAAA,MACpD;AACA;AAAA,IACF;AACA,IAAAA,UAAS,YAAY,SAAS,KAAK;AAAA,EACrC;AAAA;AAAA,EAGA,oBAAoB;AAClB,UAAMI,UAAS,UAAU;AACzB,UAAMJ,YAAW,YAAY;AAC7B,QAAII,QAAO,cAAc;AACvB,YAAM,MAAMA,QAAO,aAAa;AAChC,UAAI,IAAI,cAAc,IAAI,YAAY;AACpC,eAAO,IAAI,WAAW,CAAC;AAAA,MACzB;AAAA,IACF,WAAWJ,UAAS,aAAaA,UAAS,UAAU,aAAa;AAC/D,aAAOA,UAAS,UAAU,YAAY;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,kBAAkB,OAAO;AACvB,UAAMI,UAAS,UAAU;AACzB,UAAMJ,YAAW,YAAY;AAC7B,QAAI,OAAO;AACT,UAAII,QAAO,cAAc;AACvB,cAAM,MAAMA,QAAO,aAAa;AAChC,YAAI,gBAAgB;AACpB,YAAI,SAAS,KAAK;AAAA,MACpB,WAAWJ,UAAS,aAAa,MAAM,QAAQ;AAC7C,cAAM,OAAO;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,QAAI,OAAO;AACX,aAAS,aAAa,QAAQ;AAC5B,YAAM,YAAY,KAAK,IAAI,UAAU,OAAO,mBAAmB;AAC/D,UAAI,KAAK,OAAO,iBAAiB,KAAK,OAAO,cAAc,MAAM,GAAG;AAClE,cAAM,aAAa,KAAK,OAAO,cAAc,MAAM;AACnD,eAAO,iEAAiE,MAAM,KAAK,WAAW,WAAW,EAAE;AAAA,MAC7G;AACA,UAAI,CAAC,qBAAqB,MAAM,EAAG,QAAO;AAC1C,YAAM,cAAc,qBAAqB,MAAM,EAAE,KAAK,IAAI,UAAU,OAAO,IAAI,CAAC;AAChF,aAAO,iEAAiE,MAAM,KAAK,YAAY,QAAQ,GAAG,KAAK,IAAI,cAAc,aAAa,SAAS,KAAK,WAAW,MAAM,YAAY,KAAK;AAAA,IAChM;AACA,SAAK,OAAO,QAAQ,QAAQ,CAAC,QAAQ,gBAAgB;AACnD,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAO,QAAQ,OAAK;AAClB,kBAAQ,aAAa,CAAC;AAAA,QACxB,CAAC;AACD,YAAI,cAAc,KAAK,OAAO,QAAQ,SAAS,KAAK,KAAK,OAAO,UAAU;AACxE,kBAAQ;AAAA,QACV;AAAA,MACF,OAAO;AACL,gBAAQ,aAAa,MAAM;AAAA,MAC7B;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,SAAK,IAAI,QAAQ,oCAAoC,KAAK,cAAc,CAAC,QAAQ;AAAA,EACnF;AAAA,EACA,wBAAwB;AACtB,UAAM,OAAO;AACb,SAAK,qBAAqB,aAAE,+FAA+F,KAAK,cAAc,CAAC,cAAc;AAAA,EAC/J;AAAA,EACA,gBAAgB;AACd,UAAM,OAAO;AACb,SAAK,UAAU,KAAK,IAAI,QAAQ,OAAO;AAAA,MACrC,SAAS;AAAA;AAAA,uCAEwB,KAAK,cAAc,CAAC;AAAA;AAAA;AAAA,MAGrD,qBAAqB;AAAA,MACrB,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB;AACpB,UAAM,OAAO;AACb,QAAI,KAAK,mBAAmB,OAAO,KAAK,IAAI,GAAG,EAAE,OAAQ;AACzD,SAAK,IAAI,QAAQ,yBAAyB;AAC1C,SAAK,KAAK,8CAA8C,IAAI;AAC5D,SAAK,IAAI,IAAI,OAAO,KAAK,kBAAkB;AAAA,EAC7C;AAAA,EACA,uBAAuB;AACrB,UAAM,OAAO;AACb,SAAK,mBAAmB,OAAO;AAC/B,SAAK,IAAI,QAAQ,0BAA0B;AAC3C,SAAK,KAAK,gDAAgD,IAAI;AAAA,EAChE;AAAA,EACA,YAAY,SAAS,SAAS,aAAa,cAAc;AACvD,UAAM,OAAO;AACb,QAAI,CAAC,KAAK,QAAS;AACnB,WAAO,OAAO,KAAK,QAAQ,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,iBAAa,KAAK,cAAc;AAChC,SAAK,iBAAiB,WAAW,MAAM;AACrC,UAAI,CAAC,KAAK,QAAS;AACnB,UAAI,KAAK,QAAQ,QAAQ;AACvB,aAAK,QAAQ,OAAO;AAAA,MACtB,OAAO;AACL,aAAK,IAAI,QAAQ,wBAAwB;AACzC,aAAK,KAAK,4CAA4C,IAAI;AAC1D,aAAK,QAAQ,KAAK;AAAA,MACpB;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAAA,EACA,eAAe;AACb,UAAM,OAAO;AACb,iBAAa,KAAK,cAAc;AAChC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ,OAAQ;AAC3C,SAAK,iBAAiB,WAAW,MAAM;AACrC,UAAI,CAAC,KAAK,QAAS;AACnB,WAAK,IAAI,QAAQ,yBAAyB;AAC1C,WAAK,KAAK,8CAA8C,IAAI;AAC5D,WAAK,QAAQ,MAAM;AAAA,IACrB,GAAG,GAAG;AAAA,EACR;AAAA,EACA,OAAO;AACL,UAAM,OAAO;AACb,QAAI,KAAK,OAAO;AACd,WAAK,WAAW,KAAK,KAAK,KAAK;AAAA,IACjC,OAAO;AACL,WAAK,QAAQ,KAAK,WAAW,KAAK;AAAA,IACpC;AACA,QAAI,KAAK,OAAO,eAAe,KAAK,UAAU,IAAI;AAChD,WAAK,kBAAkB;AAAA,IACzB;AACA,QAAI,KAAK,OAAO,SAAS,WAAW;AAClC,WAAK,cAAc;AAAA,IACrB,WAAW,KAAK,OAAO,SAAS,WAAW;AACzC,WAAK,cAAc;AAAA,IACrB,WAAW,KAAK,OAAO,SAAS,oBAAoB;AAClD,WAAK,sBAAsB;AAAA,IAC7B;AACA,SAAK,aAAa;AAClB,SAAK,IAAI,QAAQ,iBAAiB;AAClC,SAAK,KAAK,8BAA8B,IAAI;AAC5C,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AACR,QAAI,OAAO;AACX,SAAK,IAAI,QAAQ,0BAA0B;AAC3C,SAAK,KAAK,gDAAgD,IAAI;AAC9D,SAAK,aAAa;AAClB,QAAI,KAAK,OAAO,SAAS,sBAAsB,KAAK,oBAAoB;AACtE,WAAK,mBAAmB,OAAO;AAAA,IACjC;AACA,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,MAAM,KAAK;AACxB,WAAK,QAAQ,QAAQ;AAAA,IACvB;AACA,WAAO,KAAK,IAAI,CAAC,EAAE;AACnB,gBAAY,IAAI;AAChB,WAAO;AAAA,EACT;AACF;AACA,IAAO,4BAAQ;;;AC/ff,IAAO,sBAAQ;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,YAAY;AAAA,MACV,IAAI;AAAA,MACJ,MAAM;AAAA;AAAA,MAEN,OAAO;AAAA;AAAA,MAEP,eAAe;AAAA,MACf,SAAS,CAAC,CAAC,QAAQ,UAAU,aAAa,eAAe,GAAG,CAAC,eAAe,eAAe,GAAG,CAAC,QAAQ,OAAO,GAAG,CAAC,aAAa,MAAM,MAAM,IAAI,GAAG,CAAC,aAAa,eAAe,cAAc,cAAc,GAAG,CAAC,aAAa,aAAa,GAAG,CAAC,UAAU,SAAS,CAAC;AAAA,MACjQ,UAAU;AAAA,MACV,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,wBAAwB;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,MAAM;AACZ,QAAI,aAAa,OAAO,mBAAmB;AAAA,MACzC,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX,CAAC,CAAC;AAAA,EACJ;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,WAAW,OAAO;AAChB,YAAM,MAAM;AACZ,mBAAE,KAAK,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAY;AAClD,cAAM,UAAU,aAAE,QAAQ,EAAE,QAAQ;AACpC,YAAI,WAAW,OAAO,OAAO;AAAA,UAC3B,IAAI;AAAA,QACN,GAAG,WAAW,CAAC,CAAC,CAAC;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,OAAO;AACrB,mBAAE,KAAK,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAY;AAClD,YAAI,SAAS,aAAc,UAAS,aAAa,QAAQ;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAM;AACZ,WAAK,IAAI,KAAK,mBAAmB,EAAE,KAAK,cAAY;AAClD,cAAM,UAAU,aAAE,QAAQ,EAAE,QAAQ;AACpC,YAAI,WAAW,OAAO,OAAO;AAAA,UAC3B,IAAI;AAAA,QACN,GAAG,WAAW,CAAC,CAAC,CAAC;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,MAAM;AACrB,WAAK,IAAI,KAAK,mBAAmB,EAAE,KAAK,cAAY;AAClD,YAAI,SAAS,aAAc,UAAS,aAAa,QAAQ;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,oBAAoB;AAAA,MAClB,OAAO,OAAO;AACZ,cAAM,MAAM;AACZ,cAAM,WAAW,MAAM;AACvB,cAAM,UAAU,aAAE,QAAQ,EAAE,QAAQ;AACpC,YAAI,WAAW,OAAO,OAAO;AAAA,UAC3B,IAAI;AAAA,QACN,GAAG,WAAW,CAAC,CAAC,CAAC;AAAA,MACnB;AAAA,MACA,QAAQ,OAAO;AACb,cAAM,WAAW,MAAM;AACvB,YAAI,SAAS,aAAc,UAAS,aAAa,QAAQ;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AACF;;;AC/EA,IAAM,cAAc,CAAC;AACrB,IAAO,sBAAQ;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AACP,UAAM,MAAM;AACZ,gBAAY,KAAK;AAAA,MACf,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;ACVA,IAAO,qBAAQ;AAAA,EACb,MAAM;AACR;;;ACiFA,kBAAW,IAAI,CAAC,gBAAc,iBAAe,eAAa,gBAAc,eAAa,gBAAc,gBAAc,iBAAe,wBAAqB,eAAa,mBAAW,cAAM,gBAAQ,iBAAS,mBAAW,sBAAa,eAAO,gBAAQ,eAAO,sBAAa,iBAAS,iBAAS,eAAO,eAAO,mBAAW,qBAAa,kBAAU,kBAAU,mBAAW,uBAAc,sBAAa,oBAAW,kBAAU,cAAM,eAAO,cAAM,cAAM,cAAM,eAAO,kBAAU,eAAO,gBAAQ,eAAO,iBAAS,sBAAa,cAAM,kBAAU,gBAAQ,yBAAgB,yBAAe,oBAAW,aAAK,mBAAW,kBAAU,oBAAY,gBAAQ,uBAAc,sBAAc,sBAAc,iBAAS,kBAAU,sBAAa,kBAAU,qBAAY,qBAAa,kBAAU,CAAC;AAE1sB,IAAO,qCAAQ;",
  "names": ["document", "window", "document", "support", "window", "document", "window", "document", "open", "close", "window", "document", "support", "minTranslate", "maxTranslate", "isTopSheetModal", "onResize", "window", "document", "translate", "document", "translate", "document", "defaults", "attachEvents", "defaults", "attachEvents", "translate", "support", "document", "transitionEnd", "open", "close", "document", "support", "transitionEnd", "onResize", "onTouchStart", "onTouchMove", "onTouchEnd", "closeCard", "window", "document", "document", "window", "toggle", "support", "defaults", "attachEvents", "detachEvents", "support", "defaults", "attachEvents", "detachEvents", "defaults", "decimalPoint", "onTouchStart", "onTouchMove", "onTouchEnd", "attachEvents", "detachEvents", "defaults", "onClick", "attachEvents", "detachEvents", "open", "translate", "transition", "close", "window", "onResize", "close", "support", "refresh", "translate", "attachEvents", "detachEvents", "defaults", "attachEvents", "detachEvents", "open", "close", "defaults", "attachEvents", "detachEvents", "document", "enable", "enable", "disable", "toggle", "defaults", "classes", "defaults", "attachEvents", "detachEvents", "extend", "getDocument", "CustomEvent", "id", "getWindow", "deleteProps", "nextTick", "now", "getComputedStyle", "window", "getWindow", "getTranslate", "isObject", "extend", "classes", "document", "getDocument", "window", "getWindow", "document", "getDocument", "getSupport", "support", "getDevice", "observerUpdate", "events", "event", "slide", "translate", "realIndex", "getTranslate", "minTranslate", "maxTranslate", "transitionEnd", "nextTick", "slideTo", "setTranslate", "now", "increment", "breakpoints", "extend", "deleteProps", "modules", "document", "getDocument", "slide", "update", "appendSlide", "prependSlide", "removeSlide", "removeAllSlides", "document", "getDocument", "window", "getWindow", "event", "enable", "disable", "window", "getWindow", "now", "event", "nextTick", "events", "enable", "disable", "update", "disable", "enable", "classes", "loopFix", "update", "disable", "enable", "document", "getDocument", "setTranslate", "setTransition", "updateSize", "nextTick", "events", "disable", "enable", "setTranslate", "setTransition", "window", "getWindow", "onTouchStart", "event", "onTouchMove", "getTranslate", "onTouchEnd", "enable", "disable", "setTranslate", "Swiper", "translate", "setTransition", "nextTick", "id", "window", "getWindow", "slide", "document", "getDocument", "window", "getWindow", "document", "getDocument", "isObject", "update", "document", "getDocument", "onTouchStart", "translate", "onTouchMove", "now", "onTouchEnd", "slide", "onInit", "setTranslate", "setTransition", "slide", "setTranslate", "setTransition", "setTranslate", "browser", "setTransition", "setTranslate", "setTransition", "setTranslate", "translate", "setTransition", "setTranslate", "setTransition", "setTranslate", "setTransition", "isObject", "extend", "isObject", "extend", "extend", "isObject", "event", "updateSwiper", "defaults", "window", "defaults", "onResize", "attachEvents", "support", "defaults", "document", "attachEvents", "detachEvents", "modules", "close", "toggle", "document", "defaults", "attachEvents", "detachEvents", "window"]
}

Youez - 2016 - github.com/yon3zu
LinuXploit