{"version":3,"file":"stepper.mjs","sources":["../../../../../../../packages/components/stepper/src/stepper.tsx"],"sourcesContent":["import {\n  type ExtractPropTypes,\n  type PropType,\n  computed,\n  defineComponent,\n  nextTick,\n  ref,\n  watch,\n} from 'vue'\n\nimport {\n  HAPTICS_FEEDBACK,\n  LONG_PRESS_START_TIME,\n  addNumber,\n  addUnit,\n  callInterceptor,\n  createNamespace,\n  formatNumber,\n  getSizeStyle,\n  isDef,\n  makeNumericProp,\n  numericProp,\n  preventDefault,\n  resetScroll,\n  truthProp,\n} from '@xzx-design/utils'\n\nimport { useCustomFieldValue } from '@xzx-design/hooks'\n\nimport type { Interceptor, Numeric } from '@xzx-design/utils'\n\nconst [name, bem] = createNamespace('stepper')\n\nconst LONG_PRESS_INTERVAL = 200\n\nconst isEqual = (value1?: Numeric, value2?: Numeric) =>\n  String(value1) === String(value2)\n\nexport type StepperTheme = 'default' | 'round'\n\nexport const stepperProps = {\n  min: makeNumericProp(1),\n  max: makeNumericProp(Number.POSITIVE_INFINITY),\n  name: makeNumericProp(''),\n  step: makeNumericProp(1),\n  theme: String as PropType<StepperTheme>,\n  integer: Boolean,\n  disabled: Boolean,\n  showPlus: truthProp,\n  showMinus: truthProp,\n  showInput: truthProp,\n  longPress: truthProp,\n  autoFixed: truthProp,\n  allowEmpty: Boolean,\n  modelValue: numericProp,\n  inputWidth: numericProp,\n  buttonSize: numericProp,\n  placeholder: String,\n  disablePlus: Boolean,\n  disableMinus: Boolean,\n  disableInput: Boolean,\n  beforeChange: Function as PropType<Interceptor>,\n  defaultValue: makeNumericProp(1),\n  decimalLength: numericProp,\n}\n\nexport type StepperProps = ExtractPropTypes<typeof stepperProps>\n\nexport default defineComponent({\n  name,\n\n  props: stepperProps,\n\n  emits: [\n    'plus',\n    'blur',\n    'minus',\n    'focus',\n    'change',\n    'overlimit',\n    'update:modelValue',\n  ],\n\n  setup(props, { emit }) {\n    const format = (value: Numeric, autoFixed = true) => {\n      const { min, max, allowEmpty, decimalLength } = props\n\n      if (allowEmpty && value === '') {\n        return value\n      }\n\n      value = formatNumber(String(value), !props.integer)\n      value = value === '' ? 0 : +value\n      value = Number.isNaN(value) ? +min : value\n\n      // whether to format the value entered by the user\n      value = autoFixed ? Math.max(Math.min(+max, value), +min) : value\n\n      // format decimal\n      if (isDef(decimalLength)) {\n        value = value.toFixed(+decimalLength)\n      }\n\n      return value\n    }\n\n    const getInitialValue = () => {\n      const defaultValue = props.modelValue ?? props.defaultValue\n      const value = format(defaultValue)\n\n      if (!isEqual(value, props.modelValue)) {\n        emit('update:modelValue', value)\n      }\n\n      return value\n    }\n\n    let actionType: 'plus' | 'minus'\n    const inputRef = ref<HTMLInputElement>()\n    const current = ref(getInitialValue())\n\n    const minusDisabled = computed(\n      () => props.disabled || props.disableMinus || +current.value <= +props.min\n    )\n\n    const plusDisabled = computed(\n      () => props.disabled || props.disablePlus || +current.value >= +props.max\n    )\n\n    const inputStyle = computed(() => ({\n      width: addUnit(props.inputWidth),\n      height: addUnit(props.buttonSize),\n    }))\n\n    const buttonStyle = computed(() => getSizeStyle(props.buttonSize))\n\n    const check = () => {\n      const value = format(current.value)\n      if (!isEqual(value, current.value)) {\n        current.value = value\n      }\n    }\n\n    const setValue = (value: Numeric) => {\n      if (props.beforeChange) {\n        callInterceptor(props.beforeChange, {\n          args: [value],\n          done() {\n            current.value = value\n          },\n        })\n      } else {\n        current.value = value\n      }\n    }\n\n    const onChange = () => {\n      if (\n        (actionType === 'plus' && plusDisabled.value) ||\n        (actionType === 'minus' && minusDisabled.value)\n      ) {\n        emit('overlimit', actionType)\n        return\n      }\n\n      const diff = actionType === 'minus' ? -props.step : +props.step\n      const value = format(addNumber(+current.value, diff))\n\n      setValue(value)\n      emit(actionType)\n    }\n\n    const onInput = (event: Event) => {\n      const input = event.target as HTMLInputElement\n      const { value } = input\n      const { decimalLength } = props\n\n      let formatted = formatNumber(String(value), !props.integer)\n\n      // limit max decimal length\n      if (isDef(decimalLength) && formatted.includes('.')) {\n        const pair = formatted.split('.')\n        formatted = `${pair[0]}.${pair[1].slice(0, +decimalLength)}`\n      }\n\n      if (props.beforeChange) {\n        input.value = String(current.value)\n      } else if (!isEqual(value, formatted)) {\n        input.value = formatted\n      }\n\n      // prefer number type\n      const isNumeric = formatted === String(+formatted)\n      setValue(isNumeric ? +formatted : formatted)\n    }\n\n    const onFocus = (event: Event) => {\n      // readonly not work in legacy mobile safari\n      if (props.disableInput) {\n        inputRef.value?.blur()\n      } else {\n        emit('focus', event)\n      }\n    }\n\n    const onBlur = (event: Event) => {\n      const input = event.target as HTMLInputElement\n      const value = format(input.value, props.autoFixed)\n      input.value = String(value)\n      current.value = value\n      nextTick(() => {\n        emit('blur', event)\n        resetScroll()\n      })\n    }\n\n    let isLongPress: boolean\n    let longPressTimer: ReturnType<typeof setTimeout>\n\n    const longPressStep = () => {\n      longPressTimer = setTimeout(() => {\n        onChange()\n        longPressStep()\n      }, LONG_PRESS_INTERVAL)\n    }\n\n    const onTouchStart = () => {\n      if (props.longPress) {\n        isLongPress = false\n        clearTimeout(longPressTimer)\n        longPressTimer = setTimeout(() => {\n          isLongPress = true\n          onChange()\n          longPressStep()\n        }, LONG_PRESS_START_TIME)\n      }\n    }\n\n    const onTouchEnd = (event: TouchEvent) => {\n      if (props.longPress) {\n        clearTimeout(longPressTimer)\n        if (isLongPress) {\n          preventDefault(event)\n        }\n      }\n    }\n\n    const onMousedown = (event: MouseEvent) => {\n      // fix mobile safari page scroll down issue\n      // see: https://github.com/vant-ui/vant/issues/7690\n      if (props.disableInput) {\n        preventDefault(event)\n      }\n    }\n\n    const createListeners = (type: typeof actionType) => ({\n      onClick: (event: MouseEvent) => {\n        // disable double tap scrolling on mobile safari\n        preventDefault(event)\n        actionType = type\n        onChange()\n      },\n      onTouchstartPassive: () => {\n        actionType = type\n        onTouchStart()\n      },\n      onTouchend: onTouchEnd,\n      onTouchcancel: onTouchEnd,\n    })\n\n    watch(\n      () => [props.max, props.min, props.integer, props.decimalLength],\n      check\n    )\n\n    watch(\n      () => props.modelValue,\n      (value) => {\n        if (!isEqual(value, current.value)) {\n          current.value = format(value!)\n        }\n      }\n    )\n\n    watch(current, (value) => {\n      emit('update:modelValue', value)\n      emit('change', value, { name: props.name })\n    })\n\n    useCustomFieldValue(() => props.modelValue)\n\n    return () => (\n      <div role=\"group\" class={bem([props.theme])}>\n        <button\n          v-show={props.showMinus}\n          type=\"button\"\n          style={buttonStyle.value}\n          class={[\n            bem('minus', { disabled: minusDisabled.value }),\n            { [HAPTICS_FEEDBACK]: !minusDisabled.value },\n          ]}\n          aria-disabled={minusDisabled.value || undefined}\n          {...createListeners('minus')}\n        />\n        <input\n          v-show={props.showInput}\n          ref={inputRef}\n          type={props.integer ? 'tel' : 'text'}\n          role=\"spinbutton\"\n          class={bem('input')}\n          value={current.value}\n          style={inputStyle.value}\n          disabled={props.disabled}\n          readonly={props.disableInput}\n          // set keyboard in modern browsers\n          inputmode={props.integer ? 'numeric' : 'decimal'}\n          placeholder={props.placeholder}\n          autocomplete=\"off\"\n          aria-valuemax={props.max}\n          aria-valuemin={props.min}\n          aria-valuenow={current.value}\n          onBlur={onBlur}\n          onInput={onInput}\n          onFocus={onFocus}\n          onMousedown={onMousedown}\n        />\n        <button\n          v-show={props.showPlus}\n          type=\"button\"\n          style={buttonStyle.value}\n          class={[\n            bem('plus', { disabled: plusDisabled.value }),\n            { [HAPTICS_FEEDBACK]: !plusDisabled.value },\n          ]}\n          aria-disabled={plusDisabled.value || undefined}\n          {...createListeners('plus')}\n        />\n      </div>\n    )\n  },\n})\n"],"names":["name","bem","createNamespace","LONG_PRESS_INTERVAL","isEqual","value1","value2","String","stepperProps","min","makeNumericProp","max","Number","POSITIVE_INFINITY","step","theme","integer","Boolean","disabled","showPlus","truthProp","showMinus","showInput","longPress","autoFixed","allowEmpty","modelValue","numericProp","inputWidth","buttonSize","placeholder","disablePlus","disableMinus","disableInput","beforeChange","Function","defaultValue","decimalLength","defineComponent","props","emits","setup","emit","format","value","formatNumber","isNaN","Math","isDef","toFixed","getInitialValue","actionType","inputRef","ref","current","minusDisabled","computed","plusDisabled","inputStyle","width","addUnit","height","buttonStyle","getSizeStyle","check","setValue","callInterceptor","args","done","onChange","diff","addNumber","onInput","event","input","target","formatted","includes","pair","split","slice","isNumeric","onFocus","blur","onBlur","nextTick","resetScroll","isLongPress","longPressTimer","longPressStep","setTimeout","onTouchStart","clearTimeout","LONG_PRESS_START_TIME","onTouchEnd","preventDefault","onMousedown","createListeners","type","onClick","onTouchstartPassive","onTouchend","onTouchcancel","watch","useCustomFieldValue","_createVNode","_withDirectives","_mergeProps","HAPTICS_FEEDBACK","undefined","_vShow"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAM,CAACA,IAAAA,EAAMC,GAAG,CAAA,GAAIC,gBAAgB,SAAS,CAAA,CAAA;AAE7C,MAAMC,mBAAsB,GAAA,GAAA,CAAA;AAE5B,MAAMC,OAAAA,GAAUA,CAACC,MAAkBC,EAAAA,MAAAA,KACjCC,OAAOF,MAAM,CAAA,KAAME,OAAOD,MAAM,CAAA,CAAA;AAI3B,MAAME,YAAe,GAAA;AAAA,EAC1BC,GAAAA,EAAKC,gBAAgB,CAAC,CAAA;AAAA,EACtBC,GAAAA,EAAKD,eAAgBE,CAAAA,MAAAA,CAAOC,iBAAiB,CAAA;AAAA,EAC7Cb,IAAAA,EAAMU,gBAAgB,EAAE,CAAA;AAAA,EACxBI,IAAAA,EAAMJ,gBAAgB,CAAC,CAAA;AAAA,EACvBK,KAAOR,EAAAA,MAAAA;AAAAA,EACPS,OAASC,EAAAA,OAAAA;AAAAA,EACTC,QAAUD,EAAAA,OAAAA;AAAAA,EACVE,QAAUC,EAAAA,SAAAA;AAAAA,EACVC,SAAWD,EAAAA,SAAAA;AAAAA,EACXE,SAAWF,EAAAA,SAAAA;AAAAA,EACXG,SAAWH,EAAAA,SAAAA;AAAAA,EACXI,SAAWJ,EAAAA,SAAAA;AAAAA,EACXK,UAAYR,EAAAA,OAAAA;AAAAA,EACZS,UAAYC,EAAAA,WAAAA;AAAAA,EACZC,UAAYD,EAAAA,WAAAA;AAAAA,EACZE,UAAYF,EAAAA,WAAAA;AAAAA,EACZG,WAAavB,EAAAA,MAAAA;AAAAA,EACbwB,WAAad,EAAAA,OAAAA;AAAAA,EACbe,YAAcf,EAAAA,OAAAA;AAAAA,EACdgB,YAAchB,EAAAA,OAAAA;AAAAA,EACdiB,YAAcC,EAAAA,QAAAA;AAAAA,EACdC,YAAAA,EAAc1B,gBAAgB,CAAC,CAAA;AAAA,EAC/B2B,aAAeV,EAAAA,WAAAA;AACjB,EAAA;AAIA,eAAeW,eAAgB,CAAA;AAAA,EAC7BtC,IAAAA;AAAAA,EAEAuC,KAAO/B,EAAAA,YAAAA;AAAAA,EAEPgC,KAAAA,EAAO,CACL,MACA,EAAA,MAAA,EACA,SACA,OACA,EAAA,QAAA,EACA,aACA,mBAAmB,CAAA;AAAA,EAGrBC,MAAMF,KAAO,EAAA;AAAA,IAAEG,IAAAA;AAAAA,GAAQ,EAAA;AACrB,IAAA,MAAMC,MAASA,GAAAA,CAACC,KAAgBpB,EAAAA,SAAAA,GAAY,IAAS,KAAA;AACnD,MAAM,MAAA;AAAA,QAAEf,GAAAA;AAAAA,QAAKE,GAAAA;AAAAA,QAAKc,UAAAA;AAAAA,QAAYY,aAAAA;AAAAA,OAAkBE,GAAAA,KAAAA,CAAAA;AAEhD,MAAId,IAAAA,UAAAA,IAAcmB,UAAU,EAAI,EAAA;AAC9B,QAAOA,OAAAA,KAAAA,CAAAA;AAAAA,OACT;AAEAA,MAAAA,KAAAA,GAAQC,aAAatC,MAAOqC,CAAAA,KAAK,CAAG,EAAA,CAACL,MAAMvB,OAAO,CAAA,CAAA;AAClD4B,MAAQA,KAAAA,GAAAA,KAAAA,KAAU,EAAK,GAAA,CAAA,GAAI,CAACA,KAAAA,CAAAA;AAC5BA,MAAAA,KAAAA,GAAQhC,MAAOkC,CAAAA,KAAAA,CAAMF,KAAK,CAAA,GAAI,CAACnC,GAAMmC,GAAAA,KAAAA,CAAAA;AAGrCA,MAAQpB,KAAAA,GAAAA,SAAAA,GAAYuB,IAAKpC,CAAAA,GAAAA,CAAIoC,IAAKtC,CAAAA,GAAAA,CAAI,CAACE,GAAAA,EAAKiC,KAAK,CAAA,EAAG,CAACnC,GAAG,CAAImC,GAAAA,KAAAA,CAAAA;AAG5D,MAAII,IAAAA,KAAAA,CAAMX,aAAa,CAAG,EAAA;AACxBO,QAAQA,KAAAA,GAAAA,KAAAA,CAAMK,OAAQ,CAAA,CAACZ,aAAa,CAAA,CAAA;AAAA,OACtC;AAEA,MAAOO,OAAAA,KAAAA,CAAAA;AAAAA,KACT,CAAA;AAEA,IAAA,MAAMM,kBAAkBA,MAAM;AA1GlC,MAAA,IAAA,EAAA,CAAA;AA2GM,MAAA,MAAMd,YAAeG,GAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMb,UAANa,KAAAA,IAAAA,GAAAA,EAAAA,GAAoBA,KAAMH,CAAAA,YAAAA,CAAAA;AAC/C,MAAMQ,MAAAA,KAAAA,GAAQD,OAAOP,YAAY,CAAA,CAAA;AAEjC,MAAA,IAAI,CAAChC,OAAAA,CAAQwC,KAAOL,EAAAA,KAAAA,CAAMb,UAAU,CAAG,EAAA;AACrCgB,QAAAA,IAAAA,CAAK,qBAAqBE,KAAK,CAAA,CAAA;AAAA,OACjC;AAEA,MAAOA,OAAAA,KAAAA,CAAAA;AAAAA,KACT,CAAA;AAEA,IAAIO,IAAAA,UAAAA,CAAAA;AACJ,IAAA,MAAMC,WAAWC,GAAsB,EAAA,CAAA;AACvC,IAAMC,MAAAA,OAAAA,GAAUD,GAAIH,CAAAA,eAAAA,EAAiB,CAAA,CAAA;AAErC,IAAA,MAAMK,aAAgBC,GAAAA,QAAAA,CACpB,MAAMjB,KAAAA,CAAMrB,QAAYqB,IAAAA,KAAAA,CAAMP,YAAgB,IAAA,CAACsB,OAAQV,CAAAA,KAAAA,IAAS,CAACL,KAAAA,CAAM9B,GACzE,CAAA,CAAA;AAEA,IAAA,MAAMgD,YAAeD,GAAAA,QAAAA,CACnB,MAAMjB,KAAAA,CAAMrB,QAAYqB,IAAAA,KAAAA,CAAMR,WAAe,IAAA,CAACuB,OAAQV,CAAAA,KAAAA,IAAS,CAACL,KAAAA,CAAM5B,GACxE,CAAA,CAAA;AAEA,IAAM+C,MAAAA,UAAAA,GAAaF,SAAS,OAAO;AAAA,MACjCG,KAAAA,EAAOC,OAAQrB,CAAAA,KAAAA,CAAMX,UAAU,CAAA;AAAA,MAC/BiC,MAAAA,EAAQD,OAAQrB,CAAAA,KAAAA,CAAMV,UAAU,CAAA;AAAA,KAChC,CAAA,CAAA,CAAA;AAEF,IAAA,MAAMiC,cAAcN,QAAS,CAAA,MAAMO,YAAaxB,CAAAA,KAAAA,CAAMV,UAAU,CAAC,CAAA,CAAA;AAEjE,IAAA,MAAMmC,QAAQA,MAAM;AAClB,MAAMpB,MAAAA,KAAAA,GAAQD,MAAOW,CAAAA,OAAAA,CAAQV,KAAK,CAAA,CAAA;AAClC,MAAA,IAAI,CAACxC,OAAAA,CAAQwC,KAAOU,EAAAA,OAAAA,CAAQV,KAAK,CAAG,EAAA;AAClCU,QAAAA,OAAAA,CAAQV,KAAQA,GAAAA,KAAAA,CAAAA;AAAAA,OAClB;AAAA,KACF,CAAA;AAEA,IAAA,MAAMqB,WAAYrB,CAAmB,KAAA,KAAA;AACnC,MAAA,IAAIL,MAAML,YAAc,EAAA;AACtBgC,QAAAA,eAAAA,CAAgB3B,MAAML,YAAc,EAAA;AAAA,UAClCiC,IAAAA,EAAM,CAACvB,KAAK,CAAA;AAAA,UACZwB,IAAO,GAAA;AACLd,YAAAA,OAAAA,CAAQV,KAAQA,GAAAA,KAAAA,CAAAA;AAAAA,WAClB;AAAA,SACD,CAAA,CAAA;AAAA,OACI,MAAA;AACLU,QAAAA,OAAAA,CAAQV,KAAQA,GAAAA,KAAAA,CAAAA;AAAAA,OAClB;AAAA,KACF,CAAA;AAEA,IAAA,MAAMyB,WAAWA,MAAM;AACrB,MAAA,IACGlB,eAAe,MAAUM,IAAAA,YAAAA,CAAab,SACtCO,UAAe,KAAA,OAAA,IAAWI,cAAcX,KACzC,EAAA;AACAF,QAAAA,IAAAA,CAAK,aAAaS,UAAU,CAAA,CAAA;AAC5B,QAAA,OAAA;AAAA,OACF;AAEA,MAAA,MAAMmB,OAAOnB,UAAe,KAAA,OAAA,GAAU,CAACZ,KAAMzB,CAAAA,IAAAA,GAAO,CAACyB,KAAMzB,CAAAA,IAAAA,CAAAA;AAC3D,MAAA,MAAM8B,QAAQD,MAAO4B,CAAAA,SAAAA,CAAU,CAACjB,OAAQV,CAAAA,KAAAA,EAAO0B,IAAI,CAAC,CAAA,CAAA;AAEpDL,MAAAA,QAAAA,CAASrB,KAAK,CAAA,CAAA;AACdF,MAAAA,IAAAA,CAAKS,UAAU,CAAA,CAAA;AAAA,KACjB,CAAA;AAEA,IAAA,MAAMqB,UAAWC,CAAiB,KAAA,KAAA;AAChC,MAAA,MAAMC,QAAQD,KAAME,CAAAA,MAAAA,CAAAA;AACpB,MAAM,MAAA;AAAA,QAAE/B,KAAAA;AAAAA,OAAU8B,GAAAA,KAAAA,CAAAA;AAClB,MAAM,MAAA;AAAA,QAAErC,aAAAA;AAAAA,OAAkBE,GAAAA,KAAAA,CAAAA;AAE1B,MAAA,IAAIqC,YAAY/B,YAAatC,CAAAA,MAAAA,CAAOqC,KAAK,CAAG,EAAA,CAACL,MAAMvB,OAAO,CAAA,CAAA;AAG1D,MAAA,IAAIgC,MAAMX,aAAa,CAAA,IAAKuC,SAAUC,CAAAA,QAAAA,CAAS,GAAG,CAAG,EAAA;AACnD,QAAMC,MAAAA,IAAAA,GAAOF,SAAUG,CAAAA,KAAAA,CAAM,GAAG,CAAA,CAAA;AAChCH,QAAY,SAAA,GAAA,CAAA,EAAGE,KAAK,CAAMA,CAAAA,CAAAA,CAAAA,EAAAA,IAAAA,CAAK,GAAGE,KAAM,CAAA,CAAA,EAAG,CAAC3C,aAAa,CAAA,CAAA,CAAA,CAAA;AAAA,OAC3D;AAEA,MAAA,IAAIE,MAAML,YAAc,EAAA;AACtBwC,QAAM9B,KAAAA,CAAAA,KAAAA,GAAQrC,MAAO+C,CAAAA,OAAAA,CAAQV,KAAK,CAAA,CAAA;AAAA,OACzB,MAAA,IAAA,CAACxC,OAAQwC,CAAAA,KAAAA,EAAOgC,SAAS,CAAG,EAAA;AACrCF,QAAAA,KAAAA,CAAM9B,KAAQgC,GAAAA,SAAAA,CAAAA;AAAAA,OAChB;AAGA,MAAA,MAAMK,SAAYL,GAAAA,SAAAA,KAAcrE,MAAO,CAAA,CAACqE,SAAS,CAAA,CAAA;AACjDX,MAASgB,QAAAA,CAAAA,SAAAA,GAAY,CAACL,SAAAA,GAAYA,SAAS,CAAA,CAAA;AAAA,KAC7C,CAAA;AAEA,IAAA,MAAMM,UAAWT,CAAiB,KAAA,KAAA;AApMtC,MAAA,IAAA,EAAA,CAAA;AAsMM,MAAA,IAAIlC,MAAMN,YAAc,EAAA;AACtBmB,QAAAA,CAAAA,EAAAA,GAAAA,QAAAA,CAASR,UAATQ,IAAgB+B,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,EAAAA,CAAAA;AAAAA,OACX,MAAA;AACLzC,QAAAA,IAAAA,CAAK,SAAS+B,KAAK,CAAA,CAAA;AAAA,OACrB;AAAA,KACF,CAAA;AAEA,IAAA,MAAMW,SAAUX,CAAiB,KAAA,KAAA;AAC/B,MAAA,MAAMC,QAAQD,KAAME,CAAAA,MAAAA,CAAAA;AACpB,MAAA,MAAM/B,KAAQD,GAAAA,MAAAA,CAAO+B,KAAM9B,CAAAA,KAAAA,EAAOL,MAAMf,SAAS,CAAA,CAAA;AACjDkD,MAAM9B,KAAAA,CAAAA,KAAAA,GAAQrC,OAAOqC,KAAK,CAAA,CAAA;AAC1BU,MAAAA,OAAAA,CAAQV,KAAQA,GAAAA,KAAAA,CAAAA;AAChByC,MAAAA,QAAAA,CAAS,MAAM;AACb3C,QAAAA,IAAAA,CAAK,QAAQ+B,KAAK,CAAA,CAAA;AAClBa,QAAY,WAAA,EAAA,CAAA;AAAA,OACb,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAIC,IAAAA,WAAAA,CAAAA;AACJ,IAAIC,IAAAA,cAAAA,CAAAA;AAEJ,IAAA,MAAMC,gBAAgBA,MAAM;AAC1BD,MAAAA,cAAAA,GAAiBE,WAAW,MAAM;AAChCrB,QAAS,QAAA,EAAA,CAAA;AACToB,QAAc,aAAA,EAAA,CAAA;AAAA,SACbtF,mBAAmB,CAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAA,MAAMwF,eAAeA,MAAM;AACzB,MAAA,IAAIpD,MAAMhB,SAAW,EAAA;AACnBgE,QAAc,WAAA,GAAA,KAAA,CAAA;AACdK,QAAAA,YAAAA,CAAaJ,cAAc,CAAA,CAAA;AAC3BA,QAAAA,cAAAA,GAAiBE,WAAW,MAAM;AAChCH,UAAc,WAAA,GAAA,IAAA,CAAA;AACdlB,UAAS,QAAA,EAAA,CAAA;AACToB,UAAc,aAAA,EAAA,CAAA;AAAA,WACbI,qBAAqB,CAAA,CAAA;AAAA,OAC1B;AAAA,KACF,CAAA;AAEA,IAAA,MAAMC,aAAcrB,CAAsB,KAAA,KAAA;AACxC,MAAA,IAAIlC,MAAMhB,SAAW,EAAA;AACnBqE,QAAAA,YAAAA,CAAaJ,cAAc,CAAA,CAAA;AAC3B,QAAA,IAAID,WAAa,EAAA;AACfQ,UAAAA,cAAAA,CAAetB,KAAK,CAAA,CAAA;AAAA,SACtB;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAA,MAAMuB,cAAevB,CAAsB,KAAA,KAAA;AAGzC,MAAA,IAAIlC,MAAMN,YAAc,EAAA;AACtB8D,QAAAA,cAAAA,CAAetB,KAAK,CAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAEA,IAAA,MAAMwB,kBAAmBC,CAA6B,IAAA,MAAA;AAAA,MACpDC,SAAU1B,CAAsB,KAAA,KAAA;AAE9BsB,QAAAA,cAAAA,CAAetB,KAAK,CAAA,CAAA;AACpBtB,QAAa+C,UAAAA,GAAAA,IAAAA,CAAAA;AACb7B,QAAS,QAAA,EAAA,CAAA;AAAA,OACX;AAAA,MACA+B,qBAAqBA,MAAM;AACzBjD,QAAa+C,UAAAA,GAAAA,IAAAA,CAAAA;AACbP,QAAa,YAAA,EAAA,CAAA;AAAA,OACf;AAAA,MACAU,UAAYP,EAAAA,UAAAA;AAAAA,MACZQ,aAAeR,EAAAA,UAAAA;AAAAA,KACjB,CAAA,CAAA;AAEAS,IACE,KAAA,CAAA,MAAM,CAAChE,KAAAA,CAAM5B,GAAK4B,EAAAA,KAAAA,CAAM9B,GAAK8B,EAAAA,KAAAA,CAAMvB,OAASuB,EAAAA,KAAAA,CAAMF,aAAa,CAAA,EAC/D2B,KACF,CAAA,CAAA;AAEAuC,IACE,KAAA,CAAA,MAAMhE,KAAMb,CAAAA,UAAAA,EACXkB,CAAU,KAAA,KAAA;AACT,MAAA,IAAI,CAACxC,OAAAA,CAAQwC,KAAOU,EAAAA,OAAAA,CAAQV,KAAK,CAAG,EAAA;AAClCU,QAAQV,OAAAA,CAAAA,KAAAA,GAAQD,OAAOC,KAAM,CAAA,CAAA;AAAA,OAC/B;AAAA,KAEJ,CAAA,CAAA;AAEA2D,IAAAA,KAAAA,CAAMjD,SAAUV,CAAU,KAAA,KAAA;AACxBF,MAAAA,IAAAA,CAAK,qBAAqBE,KAAK,CAAA,CAAA;AAC/BF,MAAAA,IAAAA,CAAK,UAAUE,KAAO,EAAA;AAAA,QAAE5C,MAAMuC,KAAMvC,CAAAA,IAAAA;AAAAA,OAAM,CAAA,CAAA;AAAA,KAC3C,CAAA,CAAA;AAEDwG,IAAoB,mBAAA,CAAA,MAAMjE,MAAMb,UAAU,CAAA,CAAA;AAE1C,IAAO,OAAA,MAAA+E,YAAA,KAAA,EAAA;AAAA,MAAA,MAAA,EAAA,OAAA;AAAA,MAAA,OACoBxG,EAAAA,GAAAA,CAAI,CAACsC,KAAAA,CAAMxB,KAAK,CAAC,CAAA;AAAA,KAAC,EAAA,CAAA2F,cAAAD,CAAAA,WAAAA,CAAA,UAAAE,UAAA,CAAA;AAAA,MAAA,MAAA,EAAA,QAAA;AAAA,MAAA,SAIhC7C,WAAYlB,CAAAA,KAAAA;AAAAA,MAAK,OAAA,EACjB,CACL3C,GAAAA,CAAI,OAAS,EAAA;AAAA,QAAEiB,UAAUqC,aAAcX,CAAAA,KAAAA;AAAAA,OAAO,CAC9C,EAAA;AAAA,QAAE,CAACgE,gBAAmB,GAAA,CAACrD,aAAcX,CAAAA,KAAAA;AAAAA,OAAO,CAAA;AAAA,MAC7C,eAAA,EACcW,cAAcX,KAASiE,IAAAA,KAAAA,CAAAA;AAAAA,OAClCZ,eAAgB,CAAA,OAAO,CAAC,CAAA,EAAAa,IAAAA,CAAAA,EAAAA,CAAAA,CAAAA,KAAAA,EARpBvE,MAAMlB,SAAS,CAAAqF,CAAAA,CAAAA,EAAAA,cAAAA,CAAAD,YAAA,OAAA,EAAA;AAAA,MAAA,KAYlBrD,EAAAA,QAAAA;AAAAA,MAAQ,MAAA,EACPb,KAAMvB,CAAAA,OAAAA,GAAU,KAAQ,GAAA,MAAA;AAAA,MAAM,MAAA,EAAA,YAAA;AAAA,MAAA,OAAA,EAE7Bf,IAAI,OAAO,CAAA;AAAA,MAAC,SACZqD,OAAQV,CAAAA,KAAAA;AAAAA,MAAK,SACbc,UAAWd,CAAAA,KAAAA;AAAAA,MAAK,YACbL,KAAMrB,CAAAA,QAAAA;AAAAA,MAAQ,YACdqB,KAAMN,CAAAA,YAAAA;AAAAA,MAAY,WAAA,EAEjBM,KAAMvB,CAAAA,OAAAA,GAAU,SAAY,GAAA,SAAA;AAAA,MAAS,eACnCuB,KAAMT,CAAAA,WAAAA;AAAAA,MAAW,cAAA,EAAA,KAAA;AAAA,MAAA,iBAEfS,KAAM5B,CAAAA,GAAAA;AAAAA,MAAG,iBACT4B,KAAM9B,CAAAA,GAAAA;AAAAA,MAAG,iBACT6C,OAAQV,CAAAA,KAAAA;AAAAA,MAAK,QACpBwC,EAAAA,MAAAA;AAAAA,MAAM,SACLZ,EAAAA,OAAAA;AAAAA,MAAO,SACPU,EAAAA,OAAAA;AAAAA,MAAO,aACHc,EAAAA,WAAAA;AAAAA,KAAWc,EAAAA,IAAAA,CAAAA,EAAAA,CAAAA,CAAAA,KAnBhBvE,EAAAA,KAAAA,CAAMjB,SAAS,KAAAoF,cAAAD,CAAAA,WAAAA,CAAA,UAAAE,UAAA,CAAA;AAAA,MAAA,MAAA,EAAA,QAAA;AAAA,MAAA,SAwBhB7C,WAAYlB,CAAAA,KAAAA;AAAAA,MAAK,OAAA,EACjB,CACL3C,GAAAA,CAAI,MAAQ,EAAA;AAAA,QAAEiB,UAAUuC,YAAab,CAAAA,KAAAA;AAAAA,OAAO,CAC5C,EAAA;AAAA,QAAE,CAACgE,gBAAmB,GAAA,CAACnD,YAAab,CAAAA,KAAAA;AAAAA,OAAO,CAAA;AAAA,MAC5C,eAAA,EACca,aAAab,KAASiE,IAAAA,KAAAA,CAAAA;AAAAA,KACjCZ,EAAAA,eAAAA,CAAgB,MAAM,CAAC,GAAA,IAAA,CAAA,EAAA,CAAA,CAAAa,OARnBvE,KAAMpB,CAAAA,QAAQ,CAW3B,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}