{"version":3,"file":"Menu.cjs","sources":["../../../../../../packages/components/menu/src/Menu.tsx"],"sourcesContent":["import type { CustomSlotsType, Key } from '@antdv/types';\nimport type { VNode } from 'vue';\nimport type { StoreMenuInfo } from './hooks/useMenuContext';\nimport type { MenuInfo, MenuMode, MenuSelectInfo } from './interface';\nimport type { MenuProps } from './props';\nimport { EllipsisOutlined } from '@ant-design/icons-vue';\nimport { cloneElement, devWarning, flattenChildren, shallowEqual } from '@antdv/utils';\nimport { collapseMotion } from '@antdv/vue-components/transition';\nimport { VcOverflow } from '@antdv/vue-components/vc-overflow';\n\nimport { uniq } from 'lodash-es';\n\nimport {\n  computed,\n  defineComponent,\n  inject,\n  onMounted,\n  ref,\n  shallowRef,\n  Teleport,\n  unref,\n  watch,\n  watchEffect,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { SiderCollapsedKey } from '../../layout/src/injectionKey';\nimport useStyle from '../style';\nimport useItems from './hooks/useItems';\nimport { OVERFLOW_KEY, PathContext } from './hooks/useKeyPath';\nimport useProvideMenu, { MenuContextProvider, useProvideFirstLevel } from './hooks/useMenuContext';\nimport MenuItem from './MenuItem';\nimport { useInjectOverride } from './OverrideContext';\nimport { menuProps } from './props';\n\nimport SubMenu from './SubMenu';\n\nconst EMPTY_LIST: string[] = [];\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMenu',\n  inheritAttrs: false,\n  props: menuProps(),\n  slots: Object as CustomSlotsType<{\n    expandIcon?: { isOpen: boolean, [key: string]: any }\n    overflowedIndicator?: any\n    default: any\n  }>,\n  setup(props, { slots, emit, attrs }) {\n    const { direction, getPrefixCls } = useConfigInject('menu', props);\n    const override = useInjectOverride();\n    const prefixCls = computed(() => {\n      return getPrefixCls('menu', props.prefixCls || override?.prefixCls?.value);\n    });\n    const [wrapSSR, hashId] = useStyle(\n      prefixCls,\n      computed(() => {\n        return !override;\n      }),\n    );\n    const store = shallowRef(new Map<string, StoreMenuInfo>());\n    const siderCollapsed = inject(SiderCollapsedKey, ref(undefined));\n    const inlineCollapsed = computed(() => {\n      if (siderCollapsed.value !== undefined)\n        return siderCollapsed.value;\n\n      return props.inlineCollapsed;\n    });\n    const { itemsNodes } = useItems(props);\n    const isMounted = shallowRef(false);\n    onMounted(() => {\n      isMounted.value = true;\n    });\n    watchEffect(() => {\n      devWarning(\n        !(props.inlineCollapsed === true && props.mode !== 'inline'),\n        'Menu',\n        '`inlineCollapsed` should only be used when `mode` is inline.',\n      );\n\n      devWarning(\n        !(siderCollapsed.value !== undefined && props.inlineCollapsed === true),\n        'Menu',\n        '`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.',\n      );\n      // warning(\n      //   !!props.items && !slots.default,\n      //   'Menu',\n      //   '`children` will be removed in next major version. Please use `items` instead.',\n      // );\n    });\n\n    const activeKeys = ref([]);\n    const mergedSelectedKeys = ref([]);\n    const keyMapStore = ref<Record<Key, StoreMenuInfo>>({});\n    watch(\n      store,\n      () => {\n        const newKeyMapStore = {};\n        for (const menuInfo of store.value.values())\n          newKeyMapStore[menuInfo.key] = menuInfo;\n\n        keyMapStore.value = newKeyMapStore;\n      },\n      { flush: 'post' },\n    );\n    watchEffect(() => {\n      if (props.activeKey !== undefined) {\n        let keys = [];\n        const menuInfo = props.activeKey ? keyMapStore.value[props.activeKey] : undefined;\n        if (menuInfo && props.activeKey !== undefined)\n          keys = uniq([].concat(unref(menuInfo.parentKeys), props.activeKey));\n        else\n          keys = [];\n\n        if (!shallowEqual(activeKeys.value, keys))\n          activeKeys.value = keys;\n      }\n    });\n\n    watch(\n      () => props.selectedKeys,\n      (selectedKeys) => {\n        if (selectedKeys)\n          mergedSelectedKeys.value = selectedKeys.slice();\n      },\n      { immediate: true, deep: true },\n    );\n\n    const selectedSubMenuKeys = ref([]);\n    watch(\n      [keyMapStore, mergedSelectedKeys],\n      () => {\n        let subMenuParentKeys = [];\n        mergedSelectedKeys.value.forEach((key) => {\n          const menuInfo = keyMapStore.value[key];\n          if (menuInfo)\n            subMenuParentKeys = subMenuParentKeys.concat(unref(menuInfo.parentKeys));\n        });\n\n        subMenuParentKeys = uniq(subMenuParentKeys);\n        if (!shallowEqual(selectedSubMenuKeys.value, subMenuParentKeys))\n          selectedSubMenuKeys.value = subMenuParentKeys;\n      },\n      { immediate: true },\n    );\n    const mergedOpenKeys = ref([]);\n    const mergedMode = ref<MenuMode>('vertical');\n    const triggerOpenKeys = (keys: string[]) => {\n      mergedOpenKeys.value = keys;\n      emit('update:openKeys', keys);\n      emit('openChange', keys);\n    };\n\n    // >>>>> Trigger select\n    const triggerSelection = (info: MenuInfo) => {\n      if (props.selectable) {\n        // Insert or Remove\n        const { key: targetKey } = info;\n        const exist = mergedSelectedKeys.value.includes(targetKey);\n        let newSelectedKeys: Key[];\n\n        if (props.multiple) {\n          if (exist)\n            newSelectedKeys = mergedSelectedKeys.value.filter(key => key !== targetKey);\n          else\n            newSelectedKeys = [...mergedSelectedKeys.value, targetKey];\n        } else {\n          newSelectedKeys = [targetKey];\n        }\n\n        // Trigger event\n        const selectInfo: MenuSelectInfo = {\n          ...info,\n          selectedKeys: newSelectedKeys,\n        };\n        if (!shallowEqual(newSelectedKeys, mergedSelectedKeys.value)) {\n          if (props.selectedKeys === undefined)\n            mergedSelectedKeys.value = newSelectedKeys;\n\n          emit('update:selectedKeys', newSelectedKeys);\n          if (exist && props.multiple)\n            emit('deselect', selectInfo);\n          else\n            emit('select', selectInfo);\n        }\n      }\n      // Whatever selectable, always close it\n      if (mergedMode.value !== 'inline' && !props.multiple && mergedOpenKeys.value.length)\n        triggerOpenKeys(EMPTY_LIST);\n    };\n\n    watch(\n      () => props.openKeys,\n      (openKeys = mergedOpenKeys.value) => {\n        if (!shallowEqual(mergedOpenKeys.value, openKeys))\n          mergedOpenKeys.value = openKeys.slice();\n      },\n      { immediate: true, deep: true },\n    );\n\n    let timeout: any;\n    const changeActiveKeys = (keys: Key[]) => {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        if (props.activeKey === undefined)\n          activeKeys.value = keys;\n\n        emit('update:activeKey', keys[keys.length - 1]);\n      });\n    };\n\n    const disabled = computed(() => !!props.disabled);\n    const isRtl = computed(() => direction.value === 'rtl');\n\n    const mergedInlineCollapsed = shallowRef(false);\n\n    watchEffect(() => {\n      if ((props.mode === 'inline' || props.mode === 'vertical') && inlineCollapsed.value) {\n        mergedMode.value = 'vertical';\n        mergedInlineCollapsed.value = inlineCollapsed.value;\n      } else {\n        mergedMode.value = props.mode;\n        mergedInlineCollapsed.value = false;\n      }\n      if (override?.mode?.value)\n        mergedMode.value = override.mode.value;\n    });\n\n    const isInlineMode = computed(() => mergedMode.value === 'inline');\n\n    // >>>>> Cache & Reset open keys when inlineCollapsed changed\n    const inlineCacheOpenKeys = ref(mergedOpenKeys.value);\n\n    const mountRef = shallowRef(false);\n\n    // Cache\n    watch(\n      mergedOpenKeys,\n      () => {\n        if (isInlineMode.value)\n          inlineCacheOpenKeys.value = mergedOpenKeys.value;\n      },\n      { immediate: true },\n    );\n\n    // Restore\n    watch(\n      isInlineMode,\n      () => {\n        if (!mountRef.value) {\n          mountRef.value = true;\n          return;\n        }\n\n        if (isInlineMode.value) {\n          mergedOpenKeys.value = inlineCacheOpenKeys.value;\n        } else {\n          // Trigger open event in case its in control\n          triggerOpenKeys(EMPTY_LIST);\n        }\n      },\n      { immediate: true },\n    );\n\n    const className = computed(() => {\n      return {\n        [`${prefixCls.value}`]: true,\n        [`${prefixCls.value}-root`]: true,\n        [`${prefixCls.value}-${mergedMode.value}`]: true,\n        [`${prefixCls.value}-inline-collapsed`]: mergedInlineCollapsed.value,\n        [`${prefixCls.value}-rtl`]: isRtl.value,\n        [`${prefixCls.value}-${props.theme}`]: true,\n      };\n    });\n    const rootPrefixCls = computed(() => getPrefixCls());\n    const defaultMotions = computed(() => ({\n      horizontal: { name: `${rootPrefixCls.value}-slide-up` },\n      inline: collapseMotion(`${rootPrefixCls.value}-motion-collapse`),\n      other: { name: `${rootPrefixCls.value}-zoom-big` },\n    }));\n\n    useProvideFirstLevel(true);\n\n    const getChildrenKeys = (eventKeys: string[] = []): Key[] => {\n      const keys = [];\n      const storeValue = store.value;\n      eventKeys.forEach((eventKey) => {\n        const { key, childrenEventKeys } = storeValue.get(eventKey);\n        keys.push(key, ...getChildrenKeys(unref(childrenEventKeys)));\n      });\n      return keys;\n    };\n\n    // ========================= Open =========================\n    /**\n     * Click for item. SubMenu do not have selection status\n     */\n    const onInternalClick = (info: MenuInfo) => {\n      emit('click', info);\n      triggerSelection(info);\n      override?.onClick?.();\n    };\n\n    const onInternalOpenChange = (key: Key, open: boolean) => {\n      const childrenEventKeys = keyMapStore.value[key]?.childrenEventKeys || [];\n      let newOpenKeys = mergedOpenKeys.value.filter(k => k !== key);\n\n      if (open) {\n        newOpenKeys.push(key);\n      } else if (mergedMode.value !== 'inline') {\n        // We need find all related popup to close\n        const subPathKeys = getChildrenKeys(unref(childrenEventKeys));\n        newOpenKeys = uniq(newOpenKeys.filter(k => !subPathKeys.includes(k)));\n      }\n\n      if (!shallowEqual(mergedOpenKeys, newOpenKeys))\n        triggerOpenKeys(newOpenKeys);\n    };\n\n    const registerMenuInfo = (key: string, info: StoreMenuInfo) => {\n      store.value.set(key, info);\n      store.value = new Map(store.value);\n    };\n    const unRegisterMenuInfo = (key: string) => {\n      store.value.delete(key);\n      store.value = new Map(store.value);\n    };\n\n    const lastVisibleIndex = ref(0);\n    const expandIcon = computed<MenuProps['expandIcon']>(() =>\n      props.expandIcon || slots.expandIcon || override?.expandIcon?.value\n        ? (opt) => {\n            let icon = props.expandIcon || slots.expandIcon;\n            icon = typeof icon === 'function' ? icon(opt) : icon;\n            return cloneElement(\n              icon as unknown as VNode,\n              {\n                class: `${prefixCls.value}-submenu-expand-icon`,\n              },\n              false,\n            );\n          }\n        : null,\n    );\n    useProvideMenu({\n      prefixCls,\n      activeKeys,\n      openKeys: mergedOpenKeys,\n      selectedKeys: mergedSelectedKeys,\n      changeActiveKeys,\n      disabled,\n      rtl: isRtl,\n      mode: mergedMode,\n      inlineIndent: computed(() => props.inlineIndent),\n      subMenuCloseDelay: computed(() => props.subMenuCloseDelay),\n      subMenuOpenDelay: computed(() => props.subMenuOpenDelay),\n      builtinPlacements: computed(() => props.builtinPlacements),\n      triggerSubMenuAction: computed(() => props.triggerSubMenuAction),\n      getPopupContainer: computed(() => props.getPopupContainer),\n      inlineCollapsed: mergedInlineCollapsed,\n      theme: computed(() => props.theme),\n      siderCollapsed,\n      defaultMotions: computed(() => (isMounted.value ? defaultMotions.value : null)),\n      motion: computed(() => (isMounted.value ? props.motion : null)),\n      overflowDisabled: shallowRef(undefined),\n      onOpenChange: onInternalOpenChange,\n      onItemClick: onInternalClick,\n      registerMenuInfo,\n      unRegisterMenuInfo,\n      selectedSubMenuKeys,\n      expandIcon,\n      forceSubMenuRender: computed(() => props.forceSubMenuRender),\n      rootClassName: hashId,\n    });\n    const getChildrenList = () => itemsNodes.value || flattenChildren(slots.default?.());\n    return () => {\n      const childList = getChildrenList();\n      const allVisible\n        = lastVisibleIndex.value >= childList.length - 1\n        || mergedMode.value !== 'horizontal'\n        || props.disabledOverflow;\n      // >>>>> Children\n      const getWrapperList = (_childList) => {\n        return mergedMode.value !== 'horizontal' || props.disabledOverflow\n          ? _childList\n          : _childList.map((child, index) => {\n              return (\n              // Always wrap provider to avoid sub node re-mount\n                <MenuContextProvider\n                  key={child.key}\n                  overflowDisabled={index > lastVisibleIndex.value}\n                  v-slots={{ default: () => child }}\n                >\n                </MenuContextProvider>\n              );\n            });\n      };\n      const overflowedIndicator = slots.overflowedIndicator?.() || <EllipsisOutlined />;\n\n      return wrapSSR(\n        <VcOverflow\n          {...attrs}\n          onMousedown={props.onMousedown}\n          prefixCls={`${prefixCls.value}-overflow`}\n          component=\"ul\"\n          itemComponent={MenuItem}\n          class={[className.value, attrs.class, hashId.value]}\n          role=\"menu\"\n          id={props.id}\n          data={getWrapperList(childList)}\n          renderRawItem={node => node}\n          renderRawRest={(omitItems) => {\n            // We use origin list since wrapped list use context to prevent open\n            const len = omitItems.length;\n\n            const originOmitItems = len ? childList.slice(-len) : null;\n\n            return (\n              <>\n                <SubMenu\n                  eventKey={OVERFLOW_KEY}\n                  key={OVERFLOW_KEY}\n                  title={overflowedIndicator}\n                  disabled={allVisible}\n                  internalPopupClose={len === 0}\n                  v-slots={{ default: () => originOmitItems }}\n                >\n                </SubMenu>\n                <PathContext>\n                  <SubMenu\n                    eventKey={OVERFLOW_KEY}\n                    key={OVERFLOW_KEY}\n                    title={overflowedIndicator}\n                    disabled={allVisible}\n                    internalPopupClose={len === 0}\n                    v-slots={{ default: () => originOmitItems }}\n                  >\n                  </SubMenu>\n                </PathContext>\n              </>\n            );\n          }}\n          maxCount={\n            mergedMode.value !== 'horizontal' || props.disabledOverflow\n              ? VcOverflow.INVALIDATE\n              : VcOverflow.RESPONSIVE\n          }\n          ssr=\"full\"\n          data-menu-list\n          onVisibleChange={(newLastIndex) => {\n            lastVisibleIndex.value = newLastIndex;\n          }}\n        >\n          <Teleport to=\"body\">\n            <div style={{ display: 'none' }} aria-hidden>\n              <PathContext>{getWrapperList(getChildrenList())}</PathContext>\n            </div>\n          </Teleport>\n        </VcOverflow>,\n      );\n    };\n  },\n});\n"],"names":["EMPTY_LIST","defineComponent","compatConfig","MODE","name","inheritAttrs","props","menuProps","slots","Object","setup","emit","attrs","direction","getPrefixCls","useConfigInject","override","useInjectOverride","prefixCls","computed","value","wrapSSR","hashId","useStyle","store","shallowRef","Map","siderCollapsed","inject","SiderCollapsedKey","ref","undefined","inlineCollapsed","itemsNodes","useItems","isMounted","onMounted","watchEffect","devWarning","mode","activeKeys","mergedSelectedKeys","keyMapStore","watch","newKeyMapStore","menuInfo","values","key","flush","activeKey","keys","uniq","concat","unref","parentKeys","shallowEqual","selectedKeys","slice","immediate","deep","selectedSubMenuKeys","subMenuParentKeys","forEach","mergedOpenKeys","mergedMode","triggerOpenKeys","triggerSelection","info","selectable","targetKey","exist","includes","newSelectedKeys","multiple","filter","selectInfo","length","openKeys","timeout","changeActiveKeys","clearTimeout","setTimeout","disabled","isRtl","mergedInlineCollapsed","isInlineMode","inlineCacheOpenKeys","mountRef","className","theme","rootPrefixCls","defaultMotions","horizontal","inline","collapseMotion","other","useProvideFirstLevel","getChildrenKeys","eventKeys","storeValue","eventKey","childrenEventKeys","get","push","onInternalClick","onClick","onInternalOpenChange","open","newOpenKeys","k","subPathKeys","registerMenuInfo","set","unRegisterMenuInfo","delete","lastVisibleIndex","expandIcon","opt","icon","cloneElement","class","useProvideMenu","rtl","inlineIndent","subMenuCloseDelay","subMenuOpenDelay","builtinPlacements","triggerSubMenuAction","getPopupContainer","motion","overflowDisabled","onOpenChange","onItemClick","forceSubMenuRender","rootClassName","getChildrenList","flattenChildren","default","childList","allVisible","disabledOverflow","getWrapperList","_childList","map","child","index","_createVNode","MenuContextProvider","overflowedIndicator","EllipsisOutlined","VcOverflow","onMousedown","MenuItem","id","node","omitItems","len","originOmitItems","_Fragment","SubMenu","OVERFLOW_KEY","PathContext","INVALIDATE","RESPONSIVE","newLastIndex","Teleport","display"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAMA,aAAuB,EAAE,CAAA;AAC/B,4BAA+BC,mBAAA,CAAA;AAAA,EAC7BC,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,OAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdC,OAAOC,eAAU,EAAA;AAAA,EACjBC,KAAOC,EAAAA,MAAAA;AAAAA,EAKPC,MAAMJ,KAAO,EAAA;AAAA,IAAEE,KAAAA;AAAAA,IAAOG,IAAAA;AAAAA,IAAMC,KAAAA;AAAAA,GAAS,EAAA;AACnC,IAAM,MAAA;AAAA,MAAEC,SAAAA;AAAAA,MAAWC,YAAAA;AAAAA,KAAa,GAAIC,uBAAgB,CAAA,MAAA,EAAQT,KAAK,CAAA,CAAA;AACjE,IAAA,MAAMU,WAAWC,iCAAkB,EAAA,CAAA;AACnC,IAAMC,MAAAA,SAAAA,GAAYC,aAAS,MAAM;;AAC/B,MAAA,OAAOL,aAAa,MAAQR,EAAAA,KAAAA,CAAMY,eAAaF,EAAUE,GAAAA,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAAA,SAAAA,KAAVF,mBAAqBI,KAAK,CAAA,CAAA,CAAA;AAAA,KAC1E,CAAA,CAAA;AACD,IAAA,MAAM,CAACC,OAASC,EAAAA,MAAM,IAAIC,aACxBL,CAAAA,SAAAA,EACAC,aAAS,MAAM;AACb,MAAA,OAAO,CAACH,QAAAA,CAAAA;AAAAA,KACT,CACH,CAAA,CAAA;AACA,IAAA,MAAMQ,KAAQC,GAAAA,cAAAA,iBAAeC,IAAAA,GAAAA,EAA4B,CAAA,CAAA;AACzD,IAAA,MAAMC,cAAiBC,GAAAA,UAAAA,CAAOC,8BAAmBC,EAAAA,OAAAA,CAAIC,MAAS,CAAC,CAAA,CAAA;AAC/D,IAAMC,MAAAA,eAAAA,GAAkBb,aAAS,MAAM;AACrC,MAAA,IAAIQ,eAAeP,KAAUW,KAAAA,KAAAA,CAAAA;AAC3B,QAAA,OAAOJ,cAAeP,CAAAA,KAAAA,CAAAA;AAExB,MAAA,OAAOd,KAAM0B,CAAAA,eAAAA,CAAAA;AAAAA,KACd,CAAA,CAAA;AACD,IAAM,MAAA;AAAA,MAAEC,UAAAA;AAAAA,KAAW,GAAIC,iBAAS5B,KAAK,CAAA,CAAA;AACrC,IAAM6B,MAAAA,SAAAA,GAAYV,eAAW,KAAK,CAAA,CAAA;AAClCW,IAAAA,aAAAA,CAAU,MAAM;AACdD,MAAAA,SAAAA,CAAUf,KAAQ,GAAA,IAAA,CAAA;AAAA,KACnB,CAAA,CAAA;AACDiB,IAAAA,eAAAA,CAAY,MAAM;AAChBC,MACEA,cAAA,CAAA,EAAEhC,MAAM0B,eAAoB,KAAA,IAAA,IAAQ1B,MAAMiC,IAAS,KAAA,QAAA,CAAA,EACnD,QACA,8DACF,CAAA,CAAA;AAEAD,MACEA,cAAA,CAAA,EAAEX,eAAeP,KAAUW,KAAAA,KAAAA,CAAAA,IAAazB,MAAM0B,eAAoB,KAAA,IAAA,CAAA,EAClE,QACA,0FACF,CAAA,CAAA;AAAA,KAMD,CAAA,CAAA;AAED,IAAMQ,MAAAA,UAAAA,GAAaV,OAAI,CAAA,EAAE,CAAA,CAAA;AACzB,IAAMW,MAAAA,kBAAAA,GAAqBX,OAAI,CAAA,EAAE,CAAA,CAAA;AACjC,IAAMY,MAAAA,WAAAA,GAAcZ,OAAgC,CAAA,EAAE,CAAA,CAAA;AACtDa,IAAAA,SAAAA,CACEnB,OACA,MAAM;AACJ,MAAA,MAAMoB,iBAAiB,EAAC,CAAA;AACxB,MAAWC,KAAAA,MAAAA,QAAAA,IAAYrB,KAAMJ,CAAAA,KAAAA,CAAM0B,MAAO,EAAA;AACxCF,QAAeC,cAAAA,CAAAA,QAAAA,CAASE,GAAG,CAAIF,GAAAA,QAAAA,CAAAA;AAEjCH,MAAAA,WAAAA,CAAYtB,KAAQwB,GAAAA,cAAAA,CAAAA;AAAAA,KAEtB,EAAA;AAAA,MAAEI,KAAO,EAAA,MAAA;AAAA,KACX,CAAA,CAAA;AACAX,IAAAA,eAAAA,CAAY,MAAM;AAChB,MAAI/B,IAAAA,KAAAA,CAAM2C,cAAclB,KAAW,CAAA,EAAA;AACjC,QAAA,IAAImB,OAAO,EAAE,CAAA;AACb,QAAA,MAAML,WAAWvC,KAAM2C,CAAAA,SAAAA,GAAYP,YAAYtB,KAAMd,CAAAA,KAAAA,CAAM2C,SAAS,CAAIlB,GAAAA,KAAAA,CAAAA,CAAAA;AACxE,QAAIc,IAAAA,QAAAA,IAAYvC,MAAM2C,SAAclB,KAAAA,KAAAA,CAAAA;AAClCmB,UAAOC,IAAAA,GAAAA,aAAAA,CAAK,EAAA,CAAGC,MAAOC,CAAAA,SAAAA,CAAMR,SAASS,UAAU,CAAA,EAAGhD,KAAM2C,CAAAA,SAAS,CAAC,CAAA,CAAA;AAAA;AAElEC,UAAAA,IAAAA,GAAO,EAAE,CAAA;AAEX,QAAA,IAAI,CAACK,yBAAAA,CAAaf,UAAWpB,CAAAA,KAAAA,EAAO8B,IAAI,CAAA;AACtCV,UAAAA,UAAAA,CAAWpB,KAAQ8B,GAAAA,IAAAA,CAAAA;AAAAA,OACvB;AAAA,KACD,CAAA,CAAA;AAEDP,IACEA,SAAA,CAAA,MAAMrC,KAAMkD,CAAAA,YAAAA,EACXA,CAAiB,YAAA,KAAA;AAChB,MAAIA,IAAAA,YAAAA;AACFf,QAAmBrB,kBAAAA,CAAAA,KAAAA,GAAQoC,aAAaC,KAAM,EAAA,CAAA;AAAA,KAElD,EAAA;AAAA,MAAEC,SAAW,EAAA,IAAA;AAAA,MAAMC,IAAM,EAAA,IAAA;AAAA,KAC3B,CAAA,CAAA;AAEA,IAAMC,MAAAA,mBAAAA,GAAsB9B,OAAI,CAAA,EAAE,CAAA,CAAA;AAClCa,IAAAA,SAAAA,CACE,CAACD,WAAAA,EAAaD,kBAAkB,CAAA,EAChC,MAAM;AACJ,MAAA,IAAIoB,oBAAoB,EAAE,CAAA;AAC1BpB,MAAmBrB,kBAAAA,CAAAA,KAAAA,CAAM0C,QAASf,CAAQ,GAAA,KAAA;AACxC,QAAMF,MAAAA,QAAAA,GAAWH,WAAYtB,CAAAA,KAAAA,CAAM2B,GAAG,CAAA,CAAA;AACtC,QAAIF,IAAAA,QAAAA;AACFgB,UAAAA,iBAAAA,GAAoBA,iBAAkBT,CAAAA,MAAAA,CAAOC,SAAMR,CAAAA,QAAAA,CAASS,UAAU,CAAC,CAAA,CAAA;AAAA,OAC1E,CAAA,CAAA;AAEDO,MAAAA,iBAAAA,GAAoBV,cAAKU,iBAAiB,CAAA,CAAA;AAC1C,MAAA,IAAI,CAACN,yBAAAA,CAAaK,mBAAoBxC,CAAAA,KAAAA,EAAOyC,iBAAiB,CAAA;AAC5DD,QAAAA,mBAAAA,CAAoBxC,KAAQyC,GAAAA,iBAAAA,CAAAA;AAAAA,KAEhC,EAAA;AAAA,MAAEH,SAAW,EAAA,IAAA;AAAA,KACf,CAAA,CAAA;AACA,IAAMK,MAAAA,cAAAA,GAAiBjC,OAAI,CAAA,EAAE,CAAA,CAAA;AAC7B,IAAMkC,MAAAA,UAAAA,GAAalC,QAAc,UAAU,CAAA,CAAA;AAC3C,IAAA,MAAMmC,kBAAmBf,CAAmB,IAAA,KAAA;AAC1Ca,MAAAA,cAAAA,CAAe3C,KAAQ8B,GAAAA,IAAAA,CAAAA;AACvBvC,MAAAA,IAAAA,CAAK,mBAAmBuC,IAAI,CAAA,CAAA;AAC5BvC,MAAAA,IAAAA,CAAK,cAAcuC,IAAI,CAAA,CAAA;AAAA,KACzB,CAAA;AAGA,IAAA,MAAMgB,mBAAoBC,CAAmB,IAAA,KAAA;AAC3C,MAAA,IAAI7D,MAAM8D,UAAY,EAAA;AAEpB,QAAM,MAAA;AAAA,UAAErB,GAAKsB,EAAAA,SAAAA;AAAAA,SAAcF,GAAAA,IAAAA,CAAAA;AAC3B,QAAA,MAAMG,KAAQ7B,GAAAA,kBAAAA,CAAmBrB,KAAMmD,CAAAA,QAAAA,CAASF,SAAS,CAAA,CAAA;AACzD,QAAIG,IAAAA,eAAAA,CAAAA;AAEJ,QAAA,IAAIlE,MAAMmE,QAAU,EAAA;AAClB,UAAIH,IAAAA,KAAAA;AACFE,YAAAA,eAAAA,GAAkB/B,kBAAmBrB,CAAAA,KAAAA,CAAMsD,MAAO3B,CAAAA,CAAAA,GAAAA,KAAOA,QAAQsB,SAAS,CAAA,CAAA;AAAA;AAE1EG,YAAAA,eAAAA,GAAkB,CAAC,GAAG/B,kBAAmBrB,CAAAA,KAAAA,EAAOiD,SAAS,CAAA,CAAA;AAAA,SACtD,MAAA;AACLG,UAAAA,eAAAA,GAAkB,CAACH,SAAS,CAAA,CAAA;AAAA,SAC9B;AAGA,QAAA,MAAMM,UAA6B,GAAA;AAAA,UACjC,GAAGR,IAAAA;AAAAA,UACHX,YAAcgB,EAAAA,eAAAA;AAAAA,SAChB,CAAA;AACA,QAAA,IAAI,CAACjB,yBAAAA,CAAaiB,eAAiB/B,EAAAA,kBAAAA,CAAmBrB,KAAK,CAAG,EAAA;AAC5D,UAAA,IAAId,MAAMkD,YAAiBzB,KAAAA,KAAAA,CAAAA;AACzBU,YAAAA,kBAAAA,CAAmBrB,KAAQoD,GAAAA,eAAAA,CAAAA;AAE7B7D,UAAAA,IAAAA,CAAK,uBAAuB6D,eAAe,CAAA,CAAA;AAC3C,UAAA,IAAIF,SAAShE,KAAMmE,CAAAA,QAAAA;AACjB9D,YAAAA,IAAAA,CAAK,YAAYgE,UAAU,CAAA,CAAA;AAAA;AAE3BhE,YAAAA,IAAAA,CAAK,UAAUgE,UAAU,CAAA,CAAA;AAAA,SAC7B;AAAA,OACF;AAEA,MAAA,IAAIX,WAAW5C,KAAU,KAAA,QAAA,IAAY,CAACd,KAAMmE,CAAAA,QAAAA,IAAYV,eAAe3C,KAAMwD,CAAAA,MAAAA;AAC3EX,QAAAA,eAAAA,CAAgBjE,UAAU,CAAA,CAAA;AAAA,KAC9B,CAAA;AAEA2C,IAAAA,SAAAA,CACE,MAAMrC,KAAMuE,CAAAA,QAAAA,EACZ,CAACA,QAAAA,GAAWd,eAAe3C,KAAU,KAAA;AACnC,MAAA,IAAI,CAACmC,yBAAAA,CAAaQ,cAAe3C,CAAAA,KAAAA,EAAOyD,QAAQ,CAAA;AAC9Cd,QAAe3C,cAAAA,CAAAA,KAAAA,GAAQyD,SAASpB,KAAM,EAAA,CAAA;AAAA,KAE1C,EAAA;AAAA,MAAEC,SAAW,EAAA,IAAA;AAAA,MAAMC,IAAM,EAAA,IAAA;AAAA,KAC3B,CAAA,CAAA;AAEA,IAAImB,IAAAA,OAAAA,CAAAA;AACJ,IAAA,MAAMC,mBAAoB7B,CAAgB,IAAA,KAAA;AACxC8B,MAAAA,YAAAA,CAAaF,OAAO,CAAA,CAAA;AACpBA,MAAAA,OAAAA,GAAUG,WAAW,MAAM;AACzB,QAAA,IAAI3E,MAAM2C,SAAclB,KAAAA,KAAAA,CAAAA;AACtBS,UAAAA,UAAAA,CAAWpB,KAAQ8B,GAAAA,IAAAA,CAAAA;AAErBvC,QAAAA,IAAAA,CAAK,kBAAoBuC,EAAAA,IAAAA,CAAKA,IAAK0B,CAAAA,MAAAA,GAAS,CAAC,CAAC,CAAA,CAAA;AAAA,OAC/C,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,MAAMM,WAAW/D,YAAS,CAAA,MAAM,CAAC,CAACb,MAAM4E,QAAQ,CAAA,CAAA;AAChD,IAAA,MAAMC,KAAQhE,GAAAA,YAAAA,CAAS,MAAMN,SAAAA,CAAUO,UAAU,KAAK,CAAA,CAAA;AAEtD,IAAMgE,MAAAA,qBAAAA,GAAwB3D,eAAW,KAAK,CAAA,CAAA;AAE9CY,IAAAA,eAAAA,CAAY,MAAM;;AAChB,MAAA,IAAA,CAAK/B,MAAMiC,IAAS,KAAA,QAAA,IAAYjC,MAAMiC,IAAS,KAAA,UAAA,KAAeP,gBAAgBZ,KAAO,EAAA;AACnF4C,QAAAA,UAAAA,CAAW5C,KAAQ,GAAA,UAAA,CAAA;AACnBgE,QAAAA,qBAAAA,CAAsBhE,QAAQY,eAAgBZ,CAAAA,KAAAA,CAAAA;AAAAA,OACzC,MAAA;AACL4C,QAAAA,UAAAA,CAAW5C,QAAQd,KAAMiC,CAAAA,IAAAA,CAAAA;AACzB6C,QAAAA,qBAAAA,CAAsBhE,KAAQ,GAAA,KAAA,CAAA;AAAA,OAChC;AACA,MAAIJ,IAAAA,CAAAA,EAAAA,GAAAA,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAUuB,SAAVvB,IAAgBI,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,KAAAA;AAClB4C,QAAW5C,UAAAA,CAAAA,KAAAA,GAAQJ,SAASuB,IAAKnB,CAAAA,KAAAA,CAAAA;AAAAA,KACpC,CAAA,CAAA;AAED,IAAA,MAAMiE,YAAelE,GAAAA,YAAAA,CAAS,MAAM6C,UAAAA,CAAW5C,UAAU,QAAQ,CAAA,CAAA;AAGjE,IAAMkE,MAAAA,mBAAAA,GAAsBxD,OAAIiC,CAAAA,cAAAA,CAAe3C,KAAK,CAAA,CAAA;AAEpD,IAAMmE,MAAAA,QAAAA,GAAW9D,eAAW,KAAK,CAAA,CAAA;AAGjCkB,IAAAA,SAAAA,CACEoB,gBACA,MAAM;AACJ,MAAA,IAAIsB,YAAajE,CAAAA,KAAAA;AACfkE,QAAAA,mBAAAA,CAAoBlE,QAAQ2C,cAAe3C,CAAAA,KAAAA,CAAAA;AAAAA,KAE/C,EAAA;AAAA,MAAEsC,SAAW,EAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAGAf,IAAAA,SAAAA,CACE0C,cACA,MAAM;AACJ,MAAI,IAAA,CAACE,SAASnE,KAAO,EAAA;AACnBmE,QAAAA,QAAAA,CAASnE,KAAQ,GAAA,IAAA,CAAA;AACjB,QAAA,OAAA;AAAA,OACF;AAEA,MAAA,IAAIiE,aAAajE,KAAO,EAAA;AACtB2C,QAAAA,cAAAA,CAAe3C,QAAQkE,mBAAoBlE,CAAAA,KAAAA,CAAAA;AAAAA,OACtC,MAAA;AAEL6C,QAAAA,eAAAA,CAAgBjE,UAAU,CAAA,CAAA;AAAA,OAC5B;AAAA,KAEF,EAAA;AAAA,MAAE0D,SAAW,EAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAEA,IAAM8B,MAAAA,SAAAA,GAAYrE,aAAS,MAAM;AAC/B,MAAO,OAAA;AAAA,QACL,CAAE,CAAA,EAAED,SAAUE,CAAAA,KAAM,EAAC,GAAG,IAAA;AAAA,QACxB,CAAE,CAAA,EAAEF,SAAUE,CAAAA,KAAM,OAAM,GAAG,IAAA;AAAA,QAC7B,CAAE,GAAEF,SAAUE,CAAAA,KAAM,IAAG4C,UAAW5C,CAAAA,KAAM,EAAC,GAAG,IAAA;AAAA,QAC5C,CAAE,CAAEF,EAAAA,SAAAA,CAAUE,KAAM,CAAA,iBAAA,CAAkB,GAAGgE,qBAAsBhE,CAAAA,KAAAA;AAAAA,QAC/D,CAAE,CAAEF,EAAAA,SAAAA,CAAUE,KAAM,CAAA,IAAA,CAAK,GAAG+D,KAAM/D,CAAAA,KAAAA;AAAAA,QAClC,CAAE,GAAEF,SAAUE,CAAAA,KAAM,IAAGd,KAAMmF,CAAAA,KAAM,EAAC,GAAG,IAAA;AAAA,OACzC,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAMC,aAAgBvE,GAAAA,YAAAA,CAAS,MAAML,YAAAA,EAAc,CAAA,CAAA;AACnD,IAAM6E,MAAAA,cAAAA,GAAiBxE,aAAS,OAAO;AAAA,MACrCyE,UAAY,EAAA;AAAA,QAAExF,IAAAA,EAAO,CAAEsF,EAAAA,aAAAA,CAActE,KAAM,CAAA,SAAA,CAAA;AAAA,OAAW;AAAA,MACtDyE,MAAQC,EAAAA,6BAAAA,CAAgB,CAAEJ,EAAAA,aAAAA,CAActE,KAAM,CAAiB,gBAAA,CAAA,CAAA;AAAA,MAC/D2E,KAAO,EAAA;AAAA,QAAE3F,IAAAA,EAAO,CAAEsF,EAAAA,aAAAA,CAActE,KAAM,CAAA,SAAA,CAAA;AAAA,OAAW;AAAA,KACjD,CAAA,CAAA,CAAA;AAEF4E,IAAAA,mCAAAA,CAAqB,IAAI,CAAA,CAAA;AAEzB,IAAA,MAAMC,eAAkBA,GAAAA,CAACC,SAAsB,GAAA,EAAc,KAAA;AAC3D,MAAA,MAAMhD,OAAO,EAAE,CAAA;AACf,MAAA,MAAMiD,aAAa3E,KAAMJ,CAAAA,KAAAA,CAAAA;AACzB8E,MAAAA,SAAAA,CAAUpC,QAASsC,CAAa,QAAA,KAAA;AAC9B,QAAM,MAAA;AAAA,UAAErD,GAAAA;AAAAA,UAAKsD,iBAAAA;AAAAA,SAAkB,GAAIF,UAAWG,CAAAA,GAAAA,CAAIF,QAAQ,CAAA,CAAA;AAC1DlD,QAAAA,IAAAA,CAAKqD,KAAKxD,GAAK,EAAA,GAAGkD,gBAAgB5C,SAAMgD,CAAAA,iBAAiB,CAAC,CAAC,CAAA,CAAA;AAAA,OAC5D,CAAA,CAAA;AACD,MAAOnD,OAAAA,IAAAA,CAAAA;AAAAA,KACT,CAAA;AAMA,IAAA,MAAMsD,kBAAmBrC,CAAmB,IAAA,KAAA;;AAC1CxD,MAAAA,IAAAA,CAAK,SAASwD,IAAI,CAAA,CAAA;AAClBD,MAAAA,gBAAAA,CAAiBC,IAAI,CAAA,CAAA;AACrBnD,MAAAA,CAAAA,EAAAA,GAAAA,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAUyF,OAAVzF,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,QAAAA,CAAAA,CAAAA;AAAAA,KACF,CAAA;AAEA,IAAM0F,MAAAA,oBAAAA,GAAuBA,CAAC3D,GAAAA,EAAU4D,IAAkB,KAAA;;AACxD,MAAA,MAAMN,sBAAoB3D,EAAYtB,GAAAA,WAAAA,CAAAA,KAAAA,CAAM2B,GAAG,CAArBL,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAwB2D,sBAAqB,EAAE,CAAA;AACzE,MAAA,IAAIO,cAAc7C,cAAe3C,CAAAA,KAAAA,CAAMsD,MAAOmC,CAAAA,CAAAA,CAAAA,KAAKA,MAAM9D,GAAG,CAAA,CAAA;AAE5D,MAAA,IAAI4D,IAAM,EAAA;AACRC,QAAAA,WAAAA,CAAYL,KAAKxD,GAAG,CAAA,CAAA;AAAA,OACtB,MAAA,IAAWiB,UAAW5C,CAAAA,KAAAA,KAAU,QAAU,EAAA;AAExC,QAAA,MAAM0F,WAAcb,GAAAA,eAAAA,CAAgB5C,SAAMgD,CAAAA,iBAAiB,CAAC,CAAA,CAAA;AAC5DO,QAAczD,WAAAA,GAAAA,aAAAA,CAAKyD,YAAYlC,MAAOmC,CAAAA,CAAAA,CAAAA,KAAK,CAACC,WAAYvC,CAAAA,QAAAA,CAASsC,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,OACtE;AAEA,MAAI,IAAA,CAACtD,yBAAaQ,CAAAA,cAAAA,EAAgB6C,WAAW,CAAA;AAC3C3C,QAAAA,eAAAA,CAAgB2C,WAAW,CAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAMG,MAAAA,gBAAAA,GAAmBA,CAAChE,GAAAA,EAAaoB,IAAwB,KAAA;AAC7D3C,MAAMJ,KAAAA,CAAAA,KAAAA,CAAM4F,GAAIjE,CAAAA,GAAAA,EAAKoB,IAAI,CAAA,CAAA;AACzB3C,MAAAA,KAAAA,CAAMJ,KAAQ,GAAA,IAAIM,GAAIF,CAAAA,KAAAA,CAAMJ,KAAK,CAAA,CAAA;AAAA,KACnC,CAAA;AACA,IAAA,MAAM6F,qBAAsBlE,CAAgB,GAAA,KAAA;AAC1CvB,MAAMJ,KAAAA,CAAAA,KAAAA,CAAM8F,OAAOnE,GAAG,CAAA,CAAA;AACtBvB,MAAAA,KAAAA,CAAMJ,KAAQ,GAAA,IAAIM,GAAIF,CAAAA,KAAAA,CAAMJ,KAAK,CAAA,CAAA;AAAA,KACnC,CAAA;AAEA,IAAM+F,MAAAA,gBAAAA,GAAmBrF,QAAI,CAAC,CAAA,CAAA;AAC9B,IAAMsF,MAAAA,UAAAA,GAAajG,aAAkC;;AACnDb,MAAAA,OAAAA,KAAAA,CAAM8G,cAAc5G,KAAM4G,CAAAA,UAAAA,KAAAA,CAAcpG,0CAAUoG,UAAVpG,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAsBI,SACzDiG,CAAQ,GAAA,KAAA;AACP,QAAIC,IAAAA,IAAAA,GAAOhH,KAAM8G,CAAAA,UAAAA,IAAc5G,KAAM4G,CAAAA,UAAAA,CAAAA;AACrCE,QAAAA,IAAAA,GAAO,OAAOA,IAAAA,KAAS,UAAaA,GAAAA,IAAAA,CAAKD,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;AAChD,QAAA,OAAOC,mBACLD,IACA,EAAA;AAAA,UACEE,KAAAA,EAAQ,CAAEtG,EAAAA,SAAAA,CAAUE,KAAM,CAAA,oBAAA,CAAA;AAAA,WAE5B,KACF,CAAA,CAAA;AAAA,OAEF,GAAA,IAAA,CAAA;AAAA,KACN,CAAA,CAAA;AACAqG,IAAeA,6BAAA,CAAA;AAAA,MACbvG,SAAAA;AAAAA,MACAsB,UAAAA;AAAAA,MACAqC,QAAUd,EAAAA,cAAAA;AAAAA,MACVP,YAAcf,EAAAA,kBAAAA;AAAAA,MACdsC,gBAAAA;AAAAA,MACAG,QAAAA;AAAAA,MACAwC,GAAKvC,EAAAA,KAAAA;AAAAA,MACL5C,IAAMyB,EAAAA,UAAAA;AAAAA,MACN2D,YAAcxG,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAMqH,YAAY,CAAA;AAAA,MAC/CC,iBAAmBzG,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAMsH,iBAAiB,CAAA;AAAA,MACzDC,gBAAkB1G,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAMuH,gBAAgB,CAAA;AAAA,MACvDC,iBAAmB3G,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAMwH,iBAAiB,CAAA;AAAA,MACzDC,oBAAsB5G,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAMyH,oBAAoB,CAAA;AAAA,MAC/DC,iBAAmB7G,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAM0H,iBAAiB,CAAA;AAAA,MACzDhG,eAAiBoD,EAAAA,qBAAAA;AAAAA,MACjBK,KAAOtE,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAMmF,KAAK,CAAA;AAAA,MACjC9D,cAAAA;AAAAA,MACAgE,gBAAgBxE,YAAS,CAAA,MAAOgB,UAAUf,KAAQuE,GAAAA,cAAAA,CAAevE,QAAQ,IAAK,CAAA;AAAA,MAC9E6G,QAAQ9G,YAAS,CAAA,MAAOgB,UAAUf,KAAQd,GAAAA,KAAAA,CAAM2H,SAAS,IAAK,CAAA;AAAA,MAC9DC,gBAAAA,EAAkBzG,eAAWM,KAAS,CAAA,CAAA;AAAA,MACtCoG,YAAczB,EAAAA,oBAAAA;AAAAA,MACd0B,WAAa5B,EAAAA,eAAAA;AAAAA,MACbO,gBAAAA;AAAAA,MACAE,kBAAAA;AAAAA,MACArD,mBAAAA;AAAAA,MACAwD,UAAAA;AAAAA,MACAiB,kBAAoBlH,EAAAA,YAAAA,CAAS,MAAMb,KAAAA,CAAM+H,kBAAkB,CAAA;AAAA,MAC3DC,aAAehH,EAAAA,MAAAA;AAAAA,KAChB,CAAA,CAAA;AACD,IAAA,MAAMiH,kBAAkBA,MAAA;;AAAMtG,MAAAA,OAAAA,UAAAA,CAAWb,KAASoH,IAAAA,uBAAAA,CAAAA,CAAgBhI,EAAMiI,GAAAA,KAAAA,CAAAA,OAAAA,KAANjI,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AACnF,IAAA,OAAO,MAAM;;AACX,MAAA,MAAMkI,YAAYH,eAAgB,EAAA,CAAA;AAClC,MAAMI,MAAAA,UAAAA,GACFxB,iBAAiB/F,KAASsH,IAAAA,SAAAA,CAAU9D,SAAS,CAC5CZ,IAAAA,UAAAA,CAAW5C,KAAU,KAAA,YAAA,IACrBd,KAAMsI,CAAAA,gBAAAA,CAAAA;AAEX,MAAA,MAAMC,iBAAkBC,CAAe,UAAA,KAAA;AACrC,QAAO9E,OAAAA,UAAAA,CAAW5C,KAAU,KAAA,YAAA,IAAgBd,KAAMsI,CAAAA,gBAAAA,GAC9CE,aACAA,UAAWC,CAAAA,GAAAA,CAAI,CAACC,KAAAA,EAAOC,KAAU,KAAA;AAC/B,UAAA;AAAA;AAAA,YACAC,gBAAAC,kCAAA,EAAA;AAAA,cAAA,OAESH,KAAMjG,CAAAA,GAAAA;AAAAA,cAAG,kBAAA,EACIkG,QAAQ9B,gBAAiB/F,CAAAA,KAAAA;AAAAA,aAClC,EAAA;AAAA,cAAEqH,SAASA,MAAMO,KAAAA;AAAAA,aAAO,CAAA;AAAA,YAAA;AAAA,SAItC,CAAA,CAAA;AAAA,OACP,CAAA;AACA,MAAA,MAAMI,wBAAsB5I,EAAM4I,GAAAA,KAAAA,CAAAA,mBAAAA,KAAN5I,mCAA6B0I,eAAAG,CAAAA,yBAAAA,EAAwB,MAAA,IAAA,CAAA,CAAA;AAEjF,MAAOhI,OAAAA,OAAAA,CAAO6H,gBAAAI,gBAAA,EAAA;AAAA,QAAA,GAEN1I,KAAAA;AAAAA,QAAK,eACIN,KAAMiJ,CAAAA,WAAAA;AAAAA,QAAW,WAAA,EAClB,CAAErI,EAAAA,SAAAA,CAAUE,KAAM,CAAA,SAAA,CAAA;AAAA,QAAU,WAAA,EAAA,IAAA;AAAA,QAAA,eAEzBoI,EAAAA,gBAAAA;AAAAA,QAAQ,SAChB,CAAChE,SAAAA,CAAUpE,OAAOR,KAAM4G,CAAAA,KAAAA,EAAOlG,OAAOF,KAAK,CAAA;AAAA,QAAC,MAAA,EAAA,MAAA;AAAA,QAAA,MAE/Cd,KAAMmJ,CAAAA,EAAAA;AAAAA,QAAE,MAAA,EACNZ,eAAeH,SAAS,CAAA;AAAA,QAAC,iBAChBgB,CAAQA,IAAAA,KAAAA,IAAAA;AAAAA,QAAI,iBACXC,CAAc,SAAA,KAAA;AAE5B,UAAA,MAAMC,MAAMD,SAAU/E,CAAAA,MAAAA,CAAAA;AAEtB,UAAA,MAAMiF,kBAAkBD,GAAMlB,GAAAA,SAAAA,CAAUjF,KAAM,CAAA,CAACmG,GAAG,CAAI,GAAA,IAAA,CAAA;AAEtD,UAAA,OAAAV,eAAAY,CAAAA,YAAAA,EAAAZ,IAAAA,EAAAA,CAAAA,gBAAAa,eAAA,EAAA;AAAA,YAAA,UAGgBC,EAAAA,uBAAAA;AAAAA,YAAY,KACjBA,EAAAA,uBAAAA;AAAAA,YAAY,OACVZ,EAAAA,mBAAAA;AAAAA,YAAmB,UAChBT,EAAAA,UAAAA;AAAAA,YAAU,sBACAiB,GAAQ,KAAA,CAAA;AAAA,WACnB,EAAA;AAAA,YAAEnB,SAASA,MAAMoB,eAAAA;AAAAA,WAAiB,CAAA,EAAAX,eAAAe,CAAAA,sBAAAA,EAAA,IAAA,EAAA;AAAA,YAAAxB,OAAAA,EAAAA,MAAAS,CAAAA,eAAAA,CAAAa,eAAA,EAAA;AAAA,cAAA,UAK/BC,EAAAA,uBAAAA;AAAAA,cAAY,KACjBA,EAAAA,uBAAAA;AAAAA,cAAY,OACVZ,EAAAA,mBAAAA;AAAAA,cAAmB,UAChBT,EAAAA,UAAAA;AAAAA,cAAU,sBACAiB,GAAQ,KAAA,CAAA;AAAA,aACnB,EAAA;AAAA,cAAEnB,SAASA,MAAMoB,eAAAA;AAAAA,aAAiB,CAAA,CAAA;AAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AAAA,SAMrD;AAAA,QAAC,UAAA,EAEC7F,WAAW5C,KAAU,KAAA,YAAA,IAAgBd,MAAMsI,gBACvCU,GAAAA,gBAAAA,CAAWY,aACXZ,gBAAWa,CAAAA,UAAAA;AAAAA,QAAU,KAAA,EAAA,MAAA;AAAA,QAAA,gBAAA,EAAA,IAAA;AAAA,QAAA,mBAITC,CAAiB,YAAA,KAAA;AACjCjD,UAAAA,gBAAAA,CAAiB/F,KAAQgJ,GAAAA,YAAAA,CAAAA;AAAAA,SAC3B;AAAA,OAAC,EAAA;AAAA,QAAA3B,OAAAA,EAAAA,MAAAS,CAAAA,eAAAA,CAAAmB,YAAA,EAAA;AAAA,UAAA,IAAA,EAAA,MAAA;AAAA,SAAA,EAAA;AAAA,UAAA5B,OAAAA,EAAAA,MAAA,CAAAS,eAAAA,CAAA,KAAA,EAAA;AAAA,YAAA,OAGa,EAAA;AAAA,cAAEoB,OAAS,EAAA,MAAA;AAAA,aAAO;AAAA,YAAC,aAAA,EAAA,IAAA;AAAA,WAAApB,EAAAA,CAAAA,eAAAe,CAAAA,sBAAAA,EAAA,IAAA,EAAA;AAAA,YAAAxB,SAAAA,MACfI,CAAAA,cAAeN,CAAAA,eAAAA,EAAiB,CAAC,CAAA;AAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAIvD,CAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}