{"version":3,"file":"TimeBody.cjs","sources":["../../../../../../../../packages/vue-components/vc-picker/src/panels/TimePanel/TimeBody.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { Ref, VNode } from 'vue';\nimport type { SharedTimeProps } from '.';\nimport type { GenerateConfig } from '../../generate';\nimport type { Locale, OnSelect } from '../../interface';\nimport type { Unit } from './TimeUnitColumn';\nimport { cloneElement } from '@antdv/utils';\nimport { computed, defineComponent, onBeforeUpdate, ref, watchEffect } from 'vue';\nimport { leftPad } from '../../utils/miscUtil';\nimport { setTime as utilSetTime } from '../../utils/timeUtil';\nimport TimeUnitColumn from './TimeUnitColumn';\n\nfunction generateUnits(\n  start: number,\n  end: number,\n  step: number,\n  disabledUnits: number[] | undefined,\n) {\n  const units: Unit[] = [];\n  for (let i = start; i <= end; i += step) {\n    units.push({\n      label: leftPad(i, 2),\n      value: i,\n      disabled: (disabledUnits || []).includes(i),\n    });\n  }\n  return units;\n}\n\nexport interface BodyOperationRef {\n  onUpDown: (diff: number) => void;\n}\n\nexport type TimeBodyProps<DateType> = {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  onSelect: OnSelect<DateType>;\n  activeColumnIndex: number;\n  operationRef: Ref<BodyOperationRef | undefined>;\n} & SharedTimeProps<DateType>;\n\nconst TimeBody = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'TimeBody',\n  inheritAttrs: false,\n  props: [\n    'generateConfig',\n    'prefixCls',\n    'operationRef',\n    'activeColumnIndex',\n    'value',\n    'showHour',\n    'showMinute',\n    'showSecond',\n    'use12Hours',\n    'hourStep',\n    'minuteStep',\n    'secondStep',\n    'disabledHours',\n    'disabledMinutes',\n    'disabledSeconds',\n    'disabledTime',\n    'hideDisabledOptions',\n    'onSelect',\n  ],\n  setup(props) {\n    const originHour = computed(() =>\n      props.value ? props.generateConfig.getHour(props.value) : -1,\n    );\n    const isPM = computed(() => {\n      if (props.use12Hours)\n        return originHour.value >= 12; // -1 means should display AM\n      else\n        return false;\n    });\n    const hour = computed(() => {\n      // Should additional logic to handle 12 hours\n      if (props.use12Hours)\n        return originHour.value % 12;\n      else\n        return originHour.value;\n    });\n    const minute = computed(() => (props.value ? props.generateConfig.getMinute(props.value) : -1));\n    const second = computed(() => (props.value ? props.generateConfig.getSecond(props.value) : -1));\n\n    const now = ref(props.generateConfig.getNow());\n    const mergedDisabledHours = ref();\n    const mergedDisabledMinutes = ref();\n    const mergedDisabledSeconds = ref();\n    onBeforeUpdate(() => {\n      now.value = props.generateConfig.getNow();\n    });\n    watchEffect(() => {\n      if (props.disabledTime) {\n        const disabledConfig = props.disabledTime(now);\n        [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [\n          disabledConfig.disabledHours,\n          disabledConfig.disabledMinutes,\n          disabledConfig.disabledSeconds,\n        ];\n      } else {\n        [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [\n          props.disabledHours,\n          props.disabledMinutes,\n          props.disabledSeconds,\n        ];\n      }\n    });\n    const setTime = (\n      isNewPM: boolean | undefined,\n      newHour: number,\n      newMinute: number,\n      newSecond: number,\n    ) => {\n      let newDate = props.value || props.generateConfig.getNow();\n\n      const mergedHour = newHour < 0 ? minutes.value.find(h => !h.disabled).value : newHour;\n      const mergedMinute = newMinute < 0 ? minutes.value.find(m => !m.disabled).value : newMinute;\n      const mergedSecond = newSecond < 0 ? seconds.value.find(s => !s.disabled).value : newSecond;\n\n      newDate = utilSetTime(\n        props.generateConfig,\n        newDate,\n        !props.use12Hours || !isNewPM ? mergedHour : mergedHour + 12,\n        mergedMinute,\n        mergedSecond,\n      );\n\n      return newDate;\n    };\n\n    // ========================= Unit =========================\n    const rawHours = computed(() =>\n      generateUnits(\n        0,\n        23,\n        props.hourStep ?? 1,\n        mergedDisabledHours.value && mergedDisabledHours.value(),\n      ),\n    );\n\n    // const memorizedRawHours = useMemo(() => rawHours, rawHours, shouldUnitsUpdate);\n\n    const getAMPMDisabled = computed(() => {\n      if (!props.use12Hours)\n        return [false, false];\n\n      const AMPMDisabled = [true, true];\n      rawHours.value.forEach(({ disabled, value: hourValue }) => {\n        if (disabled) return;\n        if (hourValue >= 12)\n          AMPMDisabled[1] = false;\n        else\n          AMPMDisabled[0] = false;\n      });\n      return AMPMDisabled;\n    });\n\n    const hours = computed(() => {\n      if (!props.use12Hours) return rawHours.value;\n      return rawHours.value\n        .filter(isPM.value ? hourMeta => hourMeta.value >= 12 : hourMeta => hourMeta.value < 12)\n        .map((hourMeta) => {\n          const hourValue = hourMeta.value % 12;\n          const hourLabel = hourValue === 0 ? '12' : leftPad(hourValue, 2);\n          return {\n            ...hourMeta,\n            label: hourLabel,\n            value: hourValue,\n          };\n        });\n    });\n\n    const minutes = computed(() =>\n      generateUnits(\n        0,\n        59,\n        props.minuteStep ?? 1,\n        mergedDisabledMinutes.value\n          && mergedDisabledMinutes.value(\n            originHour.value < 0\n              ? rawHours.value.find(rawHour => !rawHour.disabled).value\n              : originHour.value,\n          ),\n      ),\n    );\n\n    const seconds = computed(() =>\n      generateUnits(\n        0,\n        59,\n        props.secondStep ?? 1,\n        mergedDisabledSeconds.value\n          && mergedDisabledSeconds.value(\n            originHour.value < 0\n              ? rawHours.value.find(rawHour => !rawHour.disabled).value\n              : originHour.value,\n            minute.value < 0\n              ? minutes.value.find(rawMinute => !rawMinute.disabled).value\n              : minute.value,\n          ),\n      ),\n    );\n\n    return () => {\n      const {\n        prefixCls,\n        operationRef,\n        activeColumnIndex,\n        showHour,\n        showMinute,\n        showSecond,\n        use12Hours,\n        hideDisabledOptions,\n        onSelect,\n      } = props;\n      const columns: Array<{\n        node: VueNode;\n        value: number;\n        units: Unit[];\n        onSelect: (diff: number) => void;\n      }> = [];\n      const contentPrefixCls = `${prefixCls}-content`;\n      const columnPrefixCls = `${prefixCls}-time-panel`;\n\n      // ====================== Operations ======================\n      operationRef.value = {\n        onUpDown: (diff: number) => {\n          const column = columns[activeColumnIndex];\n          if (column) {\n            const valueIndex = column.units.findIndex(unit => unit.value === column.value);\n\n            const unitLen = column.units.length;\n            for (let i = 1; i < unitLen; i += 1) {\n              const nextUnit = column.units[(valueIndex + diff * i + unitLen) % unitLen];\n\n              if (nextUnit.disabled !== true) {\n                column.onSelect(nextUnit.value);\n                break;\n              }\n            }\n          }\n        },\n      };\n\n      // ======================== Render ========================\n      function addColumnNode(\n        condition: boolean | undefined,\n        node: VueNode,\n        columnValue: number,\n        units: Unit[],\n        onColumnSelect: (diff: number) => void,\n      ) {\n        if (condition !== false) {\n          columns.push({\n            node: cloneElement(node as unknown as VNode, {\n              prefixCls: columnPrefixCls,\n              value: columnValue,\n              active: activeColumnIndex === columns.length,\n              onSelect: onColumnSelect,\n              units,\n              hideDisabledOptions,\n            }),\n            onSelect: onColumnSelect,\n            value: columnValue,\n            units,\n          });\n        }\n      }\n\n      // Hour\n      addColumnNode(showHour, <TimeUnitColumn key=\"hour\" />, hour.value, hours.value, (num) => {\n        onSelect(setTime(isPM.value, num, minute.value, second.value), 'mouse');\n      });\n\n      // Minute\n      addColumnNode(\n        showMinute,\n        <TimeUnitColumn key=\"minute\" />,\n        minute.value,\n        minutes.value,\n        (num) => {\n          onSelect(setTime(isPM.value, hour.value, num, second.value), 'mouse');\n        },\n      );\n\n      // Second\n      addColumnNode(\n        showSecond,\n        <TimeUnitColumn key=\"second\" />,\n        second.value,\n        seconds.value,\n        (num) => {\n          onSelect(setTime(isPM.value, hour.value, minute.value, num), 'mouse');\n        },\n      );\n\n      // 12 Hours\n      let PMIndex = -1;\n      if (typeof isPM.value === 'boolean')\n        PMIndex = isPM.value ? 1 : 0;\n\n      addColumnNode(\n        use12Hours === true,\n        <TimeUnitColumn key=\"12hours\" />,\n        PMIndex,\n        [\n          { label: 'AM', value: 0, disabled: getAMPMDisabled.value[0] },\n          { label: 'PM', value: 1, disabled: getAMPMDisabled.value[1] },\n        ],\n        (num) => {\n          onSelect(setTime(!!num, hour.value, minute.value, second.value), 'mouse');\n        },\n      );\n\n      return <div class={contentPrefixCls}>{columns.map(({ node }) => node)}</div>;\n    };\n  },\n});\n\nexport default TimeBody;\n"],"names":["generateUnits","start","end","step","disabledUnits","units","i","push","label","leftPad","value","disabled","includes","TimeBody","defineComponent","compatConfig","MODE","name","inheritAttrs","props","setup","originHour","computed","generateConfig","getHour","isPM","use12Hours","hour","minute","getMinute","second","getSecond","now","ref","getNow","mergedDisabledHours","mergedDisabledMinutes","mergedDisabledSeconds","onBeforeUpdate","watchEffect","disabledTime","disabledConfig","disabledHours","disabledMinutes","disabledSeconds","setTime","isNewPM","newHour","newMinute","newSecond","newDate","mergedHour","minutes","find","h","mergedMinute","m","mergedSecond","seconds","s","utilSetTime","rawHours","hourStep","getAMPMDisabled","AMPMDisabled","forEach","hourValue","hours","filter","hourMeta","map","hourLabel","minuteStep","rawHour","secondStep","rawMinute","prefixCls","operationRef","activeColumnIndex","showHour","showMinute","showSecond","hideDisabledOptions","onSelect","columns","contentPrefixCls","columnPrefixCls","onUpDown","diff","column","valueIndex","findIndex","unit","unitLen","length","nextUnit","addColumnNode","condition","node","columnValue","onColumnSelect","cloneElement","active","_createVNode","TimeUnitColumn","num","PMIndex"],"mappings":";;;;;;;;;;;AAYA,SAASA,aACPC,CAAAA,KAAAA,EACAC,GACAC,EAAAA,IAAAA,EACAC,aACA,EAAA;AACA,EAAA,MAAMC,QAAgB,EAAE,CAAA;AACxB,EAAA,KAAA,IAASC,CAAIL,GAAAA,KAAAA,EAAOK,CAAKJ,IAAAA,GAAAA,EAAKI,KAAKH,IAAM,EAAA;AACvCE,IAAAA,KAAAA,CAAME,IAAK,CAAA;AAAA,MACTC,KAAAA,EAAOC,gBAAQH,CAAAA,CAAAA,EAAG,CAAC,CAAA;AAAA,MACnBI,KAAOJ,EAAAA,CAAAA;AAAAA,MACPK,QAAWP,EAAAA,CAAAA,aAAAA,IAAiB,IAAIQ,SAASN,CAAC,CAAA;AAAA,KAC3C,CAAA,CAAA;AAAA,GACH;AACA,EAAOD,OAAAA,KAAAA,CAAAA;AACT,CAAA;AAgBA,MAAMQ,2BAA2BC,mBAAA,CAAA;AAAA,EAC/BC,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,UAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdC,OAAO,CACL,gBAAA,EACA,aACA,cACA,EAAA,mBAAA,EACA,SACA,UACA,EAAA,YAAA,EACA,cACA,YACA,EAAA,UAAA,EACA,cACA,YACA,EAAA,eAAA,EACA,mBACA,iBACA,EAAA,cAAA,EACA,uBACA,UAAU,CAAA;AAAA,EAEZC,MAAMD,KAAO,EAAA;AACX,IAAME,MAAAA,UAAAA,GAAaC,YAAS,CAAA,MAC1BH,KAAMT,CAAAA,KAAAA,GAAQS,KAAMI,CAAAA,cAAAA,CAAeC,OAAQL,CAAAA,KAAAA,CAAMT,KAAK,CAAA,GAAI,CAC5D,CAAA,CAAA,CAAA;AACA,IAAMe,MAAAA,IAAAA,GAAOH,aAAS,MAAM;AAC1B,MAAA,IAAIH,KAAMO,CAAAA,UAAAA;AACR,QAAA,OAAOL,WAAWX,KAAS,IAAA,EAAA,CAAA;AAAA;AAE3B,QAAO,OAAA,KAAA,CAAA;AAAA,KACV,CAAA,CAAA;AACD,IAAMiB,MAAAA,IAAAA,GAAOL,aAAS,MAAM;AAE1B,MAAA,IAAIH,KAAMO,CAAAA,UAAAA;AACR,QAAA,OAAOL,WAAWX,KAAQ,GAAA,EAAA,CAAA;AAAA;AAE1B,QAAA,OAAOW,UAAWX,CAAAA,KAAAA,CAAAA;AAAAA,KACrB,CAAA,CAAA;AACD,IAAMkB,MAAAA,MAAAA,GAASN,YAAS,CAAA,MAAOH,KAAMT,CAAAA,KAAAA,GAAQS,KAAMI,CAAAA,cAAAA,CAAeM,SAAUV,CAAAA,KAAAA,CAAMT,KAAK,CAAA,GAAI,CAAG,CAAA,CAAA,CAAA;AAC9F,IAAMoB,MAAAA,MAAAA,GAASR,YAAS,CAAA,MAAOH,KAAMT,CAAAA,KAAAA,GAAQS,KAAMI,CAAAA,cAAAA,CAAeQ,SAAUZ,CAAAA,KAAAA,CAAMT,KAAK,CAAA,GAAI,CAAG,CAAA,CAAA,CAAA;AAE9F,IAAA,MAAMsB,GAAMC,GAAAA,OAAAA,CAAId,KAAMI,CAAAA,cAAAA,CAAeW,QAAQ,CAAA,CAAA;AAC7C,IAAA,MAAMC,sBAAsBF,OAAI,EAAA,CAAA;AAChC,IAAA,MAAMG,wBAAwBH,OAAI,EAAA,CAAA;AAClC,IAAA,MAAMI,wBAAwBJ,OAAI,EAAA,CAAA;AAClCK,IAAAA,kBAAAA,CAAe,MAAM;AACnBN,MAAItB,GAAAA,CAAAA,KAAAA,GAAQS,KAAMI,CAAAA,cAAAA,CAAeW,MAAO,EAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACDK,IAAAA,eAAAA,CAAY,MAAM;AAChB,MAAA,IAAIpB,MAAMqB,YAAc,EAAA;AACtB,QAAMC,MAAAA,cAAAA,GAAiBtB,KAAMqB,CAAAA,YAAAA,CAAaR,GAAG,CAAA,CAAA;AAC7C,QAAA,CAACG,mBAAoBzB,CAAAA,KAAAA,EAAO0B,qBAAsB1B,CAAAA,KAAAA,EAAO2B,qBAAsB3B,CAAAA,KAAK,CAAI,GAAA,CACtF+B,cAAeC,CAAAA,aAAAA,EACfD,cAAeE,CAAAA,eAAAA,EACfF,eAAeG,eAAe,CAAA,CAAA;AAAA,OAE3B,MAAA;AACL,QAAA,CAACT,mBAAoBzB,CAAAA,KAAAA,EAAO0B,qBAAsB1B,CAAAA,KAAAA,EAAO2B,qBAAsB3B,CAAAA,KAAK,CAAI,GAAA,CACtFS,KAAMuB,CAAAA,aAAAA,EACNvB,KAAMwB,CAAAA,eAAAA,EACNxB,MAAMyB,eAAe,CAAA,CAAA;AAAA,OAEzB;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAMC,OAAUA,GAAAA,CACdC,OACAC,EAAAA,OAAAA,EACAC,WACAC,SACG,KAAA;AACH,MAAA,IAAIC,OAAU/B,GAAAA,KAAAA,CAAMT,KAASS,IAAAA,KAAAA,CAAMI,eAAeW,MAAO,EAAA,CAAA;AAEzD,MAAMiB,MAAAA,UAAAA,GAAaJ,OAAU,GAAA,CAAA,GAAIK,OAAQ1C,CAAAA,KAAAA,CAAM2C,IAAKC,CAAAA,CAAAA,CAAAA,KAAK,CAACA,CAAAA,CAAE3C,QAAQ,CAAA,CAAED,KAAQqC,GAAAA,OAAAA,CAAAA;AAC9E,MAAMQ,MAAAA,YAAAA,GAAeP,SAAY,GAAA,CAAA,GAAII,OAAQ1C,CAAAA,KAAAA,CAAM2C,IAAKG,CAAAA,CAAAA,CAAAA,KAAK,CAACA,CAAAA,CAAE7C,QAAQ,CAAA,CAAED,KAAQsC,GAAAA,SAAAA,CAAAA;AAClF,MAAMS,MAAAA,YAAAA,GAAeR,SAAY,GAAA,CAAA,GAAIS,OAAQhD,CAAAA,KAAAA,CAAM2C,IAAKM,CAAAA,CAAAA,CAAAA,KAAK,CAACA,CAAAA,CAAEhD,QAAQ,CAAA,CAAED,KAAQuC,GAAAA,SAAAA,CAAAA;AAElFC,MAAAA,OAAAA,GAAUU,gBACRzC,CAAAA,KAAAA,CAAMI,cACN2B,EAAAA,OAAAA,EACA,CAAC/B,KAAAA,CAAMO,UAAc,IAAA,CAACoB,OAAUK,GAAAA,UAAAA,GAAaA,UAAa,GAAA,EAAA,EAC1DI,cACAE,YACF,CAAA,CAAA;AAEA,MAAOP,OAAAA,OAAAA,CAAAA;AAAAA,KACT,CAAA;AAGA,IAAMW,MAAAA,QAAAA,GAAWvC,aAAS,MAAA;;AACxBtB,MACE,OAAA,aAAA,CAAA,CAAA,EACA,EACAmB,EAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAM2C,QAAN3C,KAAAA,IAAAA,GAAAA,EAAAA,GAAkB,GAClBgB,mBAAoBzB,CAAAA,KAAAA,IAASyB,mBAAoBzB,CAAAA,KAAAA,EACnD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAIA,IAAMqD,MAAAA,eAAAA,GAAkBzC,aAAS,MAAM;AACrC,MAAA,IAAI,CAACH,KAAMO,CAAAA,UAAAA;AACT,QAAO,OAAA,CAAC,OAAO,KAAK,CAAA,CAAA;AAEtB,MAAMsC,MAAAA,YAAAA,GAAe,CAAC,IAAA,EAAM,IAAI,CAAA,CAAA;AAChCH,MAASnD,QAAAA,CAAAA,KAAAA,CAAMuD,QAAQ,CAAC;AAAA,QAAEtD,QAAAA;AAAAA,QAAUD,KAAOwD,EAAAA,SAAAA;AAAAA,OAAgB,KAAA;AACzD,QAAIvD,IAAAA,QAAAA;AAAU,UAAA,OAAA;AACd,QAAA,IAAIuD,SAAa,IAAA,EAAA;AACfF,UAAAA,YAAAA,CAAa,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA;AAElBA,UAAAA,YAAAA,CAAa,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA,OACrB,CAAA,CAAA;AACD,MAAOA,OAAAA,YAAAA,CAAAA;AAAAA,KACR,CAAA,CAAA;AAED,IAAMG,MAAAA,KAAAA,GAAQ7C,aAAS,MAAM;AAC3B,MAAA,IAAI,CAACH,KAAMO,CAAAA,UAAAA;AAAY,QAAA,OAAOmC,QAASnD,CAAAA,KAAAA,CAAAA;AACvC,MAAA,OAAOmD,QAASnD,CAAAA,KAAAA,CACb0D,MAAO3C,CAAAA,IAAAA,CAAKf,QAAQ2D,CAAYA,QAAAA,KAAAA,QAAAA,CAAS3D,KAAS,IAAA,EAAA,GAAK2D,cAAYA,QAAS3D,CAAAA,KAAAA,GAAQ,EAAE,CAAA,CACtF4D,IAAKD,CAAa,QAAA,KAAA;AACjB,QAAMH,MAAAA,SAAAA,GAAYG,SAAS3D,KAAQ,GAAA,EAAA,CAAA;AACnC,QAAA,MAAM6D,YAAYL,SAAc,KAAA,CAAA,GAAI,IAAOzD,GAAAA,gBAAAA,CAAQyD,WAAW,CAAC,CAAA,CAAA;AAC/D,QAAO,OAAA;AAAA,UACL,GAAGG,QAAAA;AAAAA,UACH7D,KAAO+D,EAAAA,SAAAA;AAAAA,UACP7D,KAAOwD,EAAAA,SAAAA;AAAAA,SACT,CAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACJ,CAAA,CAAA;AAED,IAAMd,MAAAA,OAAAA,GAAU9B,aAAS,MAAA;;AACvBtB,MACE,OAAA,aAAA,CAAA,CAAA,EACA,EACAmB,EAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMqD,UAANrD,KAAAA,IAAAA,GAAAA,EAAAA,GAAoB,GACpBiB,qBAAsB1B,CAAAA,KAAAA,IACjB0B,qBAAsB1B,CAAAA,KAAAA,CACvBW,UAAWX,CAAAA,KAAAA,GAAQ,IACfmD,QAASnD,CAAAA,KAAAA,CAAM2C,IAAKoB,CAAAA,CAAAA,OAAAA,KAAW,CAACA,OAAAA,CAAQ9D,QAAQ,CAAED,CAAAA,KAAAA,GAClDW,UAAWX,CAAAA,KACjB,CACJ,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAEA,IAAMgD,MAAAA,OAAAA,GAAUpC,aAAS,MAAA;;AACvBtB,MAAAA,OAAAA,aAAAA,CACE,GACA,EACAmB,EAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMuD,UAANvD,KAAAA,IAAAA,GAAAA,EAAAA,GAAoB,GACpBkB,qBAAsB3B,CAAAA,KAAAA,IACjB2B,qBAAsB3B,CAAAA,KAAAA,CACvBW,WAAWX,KAAQ,GAAA,CAAA,GACfmD,SAASnD,KAAM2C,CAAAA,IAAAA,CAAKoB,aAAW,CAACA,OAAAA,CAAQ9D,QAAQ,CAAA,CAAED,QAClDW,UAAWX,CAAAA,KAAAA,EACfkB,MAAOlB,CAAAA,KAAAA,GAAQ,IACX0C,OAAQ1C,CAAAA,KAAAA,CAAM2C,IAAKsB,CAAAA,CAAAA,SAAAA,KAAa,CAACA,SAAUhE,CAAAA,QAAQ,EAAED,KACrDkB,GAAAA,MAAAA,CAAOlB,KACb,CACJ,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAEA,IAAA,OAAO,MAAM;AACX,MAAM,MAAA;AAAA,QACJkE,SAAAA;AAAAA,QACAC,YAAAA;AAAAA,QACAC,iBAAAA;AAAAA,QACAC,QAAAA;AAAAA,QACAC,UAAAA;AAAAA,QACAC,UAAAA;AAAAA,QACAvD,UAAAA;AAAAA,QACAwD,mBAAAA;AAAAA,QACAC,QAAAA;AAAAA,OACEhE,GAAAA,KAAAA,CAAAA;AACJ,MAAA,MAAMiE,UAKD,EAAE,CAAA;AACP,MAAMC,MAAAA,gBAAAA,GAAoB,GAAET,SAAU,CAAA,QAAA,CAAA,CAAA;AACtC,MAAMU,MAAAA,eAAAA,GAAmB,GAAEV,SAAU,CAAA,WAAA,CAAA,CAAA;AAGrCC,MAAAA,YAAAA,CAAanE,KAAQ,GAAA;AAAA,QACnB6E,UAAWC,CAAiB,IAAA,KAAA;AAC1B,UAAMC,MAAAA,MAAAA,GAASL,QAAQN,iBAAiB,CAAA,CAAA;AACxC,UAAA,IAAIW,MAAQ,EAAA;AACV,YAAMC,MAAAA,UAAAA,GAAaD,OAAOpF,KAAMsF,CAAAA,SAAAA,CAAUC,UAAQA,IAAKlF,CAAAA,KAAAA,KAAU+E,OAAO/E,KAAK,CAAA,CAAA;AAE7E,YAAMmF,MAAAA,OAAAA,GAAUJ,OAAOpF,KAAMyF,CAAAA,MAAAA,CAAAA;AAC7B,YAAA,KAAA,IAASxF,CAAI,GAAA,CAAA,EAAGA,CAAIuF,GAAAA,OAAAA,EAASvF,KAAK,CAAG,EAAA;AACnC,cAAA,MAAMyF,WAAWN,MAAOpF,CAAAA,KAAAA,CAAAA,CAAOqF,aAAaF,IAAOlF,GAAAA,CAAAA,GAAIuF,WAAWA,OAAO,CAAA,CAAA;AAEzE,cAAIE,IAAAA,QAAAA,CAASpF,aAAa,IAAM,EAAA;AAC9B8E,gBAAON,MAAAA,CAAAA,QAAAA,CAASY,SAASrF,KAAK,CAAA,CAAA;AAC9B,gBAAA,MAAA;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF,CAAA;AAGA,MAAA,SAASsF,aACPC,CAAAA,SAAAA,EACAC,IACAC,EAAAA,WAAAA,EACA9F,OACA+F,cACA,EAAA;AACA,QAAA,IAAIH,cAAc,KAAO,EAAA;AACvBb,UAAAA,OAAAA,CAAQ7E,IAAK,CAAA;AAAA,YACX2F,IAAAA,EAAMG,mBAAaH,IAA0B,EAAA;AAAA,cAC3CtB,SAAWU,EAAAA,eAAAA;AAAAA,cACX5E,KAAOyF,EAAAA,WAAAA;AAAAA,cACPG,MAAAA,EAAQxB,sBAAsBM,OAAQU,CAAAA,MAAAA;AAAAA,cACtCX,QAAUiB,EAAAA,cAAAA;AAAAA,cACV/F,KAAAA;AAAAA,cACA6E,mBAAAA;AAAAA,aACD,CAAA;AAAA,YACDC,QAAUiB,EAAAA,cAAAA;AAAAA,YACV1F,KAAOyF,EAAAA,WAAAA;AAAAA,YACP9F,KAAAA;AAAAA,WACD,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAGA2F,MAAcjB,aAAAA,CAAAA,QAAAA,EAAQwB,gBAAAC,sBAAA,EAAA;AAAA,QAAA,KAAA,EAAA,MAAA;AAAA,SAAiC7E,IAAAA,CAAAA,EAAAA,KAAKjB,KAAOyD,EAAAA,KAAAA,CAAMzD,OAAQ+F,CAAQ,GAAA,KAAA;AACvFtB,QAAStC,QAAAA,CAAAA,OAAAA,CAAQpB,KAAKf,KAAO+F,EAAAA,GAAAA,EAAK7E,OAAOlB,KAAOoB,EAAAA,MAAAA,CAAOpB,KAAK,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,OACvE,CAAA,CAAA;AAGDsF,MACEhB,aAAAA,CAAAA,UAAAA,EAAUuB,gBAAAC,sBAAA,EAAA;AAAA,QAAA,KAAA,EAAA,QAAA;AAAA,SAEV5E,IAAAA,CAAAA,EAAAA,OAAOlB,KACP0C,EAAAA,OAAAA,CAAQ1C,OACP+F,CAAQ,GAAA,KAAA;AACPtB,QAAStC,QAAAA,CAAAA,OAAAA,CAAQpB,KAAKf,KAAOiB,EAAAA,IAAAA,CAAKjB,OAAO+F,GAAK3E,EAAAA,MAAAA,CAAOpB,KAAK,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,OAExE,CAAA,CAAA;AAGAsF,MACEf,aAAAA,CAAAA,UAAAA,EAAUsB,gBAAAC,sBAAA,EAAA;AAAA,QAAA,KAAA,EAAA,QAAA;AAAA,SAEV1E,IAAAA,CAAAA,EAAAA,OAAOpB,KACPgD,EAAAA,OAAAA,CAAQhD,OACP+F,CAAQ,GAAA,KAAA;AACPtB,QAAStC,QAAAA,CAAAA,OAAAA,CAAQpB,KAAKf,KAAOiB,EAAAA,IAAAA,CAAKjB,OAAOkB,MAAOlB,CAAAA,KAAAA,EAAO+F,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,OAExE,CAAA,CAAA;AAGA,MAAA,IAAIC,OAAU,GAAA,CAAA,CAAA,CAAA;AACd,MAAI,IAAA,OAAOjF,KAAKf,KAAU,KAAA,SAAA;AACxBgG,QAAUjF,OAAAA,GAAAA,IAAAA,CAAKf,QAAQ,CAAI,GAAA,CAAA,CAAA;AAE7BsF,MACEtE,aAAAA,CAAAA,UAAAA,KAAe,IAAI6E,EAAAA,eAAAA,CAAAC,sBAAA,EAAA;AAAA,QAAA,KAAA,EAAA,SAAA;AAAA,OAEnBE,EAAAA,IAAAA,CAAAA,EAAAA,OAAAA,EACA,CACE;AAAA,QAAElG,KAAO,EAAA,IAAA;AAAA,QAAME,KAAO,EAAA,CAAA;AAAA,QAAGC,QAAAA,EAAUoD,eAAgBrD,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,OAC1D,EAAA;AAAA,QAAEF,KAAO,EAAA,IAAA;AAAA,QAAME,KAAO,EAAA,CAAA;AAAA,QAAGC,QAAAA,EAAUoD,eAAgBrD,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAAA,OAAG,GAE9D+F,CAAQ,GAAA,KAAA;AACPtB,QAAStC,QAAAA,CAAAA,OAAAA,CAAQ,CAAC,CAAC4D,GAAK9E,EAAAA,IAAAA,CAAKjB,KAAOkB,EAAAA,MAAAA,CAAOlB,KAAOoB,EAAAA,MAAAA,CAAOpB,KAAK,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,OAE5E,CAAA,CAAA;AAEA,MAAA,OAAA6F,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAmBlB,EAAAA,gBAAAA;AAAAA,OAAgB,EAAA,CAAGD,OAAQd,CAAAA,GAAAA,CAAI,CAAC;AAAA,QAAE4B,IAAAA;AAAAA,OAAK,KAAMA,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,KACvE,CAAA;AAAA,GACF;AACF,CAAC;;;;"}