{"version":3,"file":"FormItem.cjs","sources":["../../../../../../packages/components/form/src/FormItem.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { FormItemStatusContextProps } from './FormItemContext';\nimport type { Rule, RuleError, RuleObject, ValidateOptions } from './interface';\nimport { CheckCircleFilled, CloseCircleFilled, ExclamationCircleFilled, LoadingOutlined } from '@ant-design/icons-vue';\nimport { classNames, filterEmpty, toArray, warning } from '@antdv/utils';\nimport { cloneDeep, find } from 'lodash-es';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  reactive,\n  shallowRef,\n  toRaw,\n  watch,\n  watchEffect,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { Row } from '../../grid';\nimport useStyle from '../style';\nimport { useInjectForm } from './context';\nimport { FormItemInputContext, useProvideFormItemContext } from './FormItemContext';\nimport FormItemInput from './FormItemInput';\nimport FormItemLabel from './FormItemLabel';\nimport { formItemProps } from './props';\nimport useDebounce from './utils/useDebounce';\nimport { validateRules as validateRulesUtil } from './utils/validateUtil';\nimport { getNamePath } from './utils/valueUtil';\n\nconst iconMap: { [key: string]: any } = {\n  success: CheckCircleFilled,\n  warning: ExclamationCircleFilled,\n  error: CloseCircleFilled,\n  validating: LoadingOutlined,\n};\n\nfunction getPropByPath(obj: any, namePathList: any, strict?: boolean) {\n  let tempObj = obj;\n\n  const keyArr = namePathList;\n  let i = 0;\n  try {\n    for (let len = keyArr.length; i < len - 1; ++i) {\n      if (!tempObj && !strict) break;\n      const key = keyArr[i];\n      if (key in tempObj) {\n        tempObj = tempObj[key];\n      } else {\n        if (strict)\n          throw new Error('please transfer a valid name path to form item!');\n\n        break;\n      }\n    }\n    if (strict && !tempObj)\n      throw new Error('please transfer a valid name path to form item!');\n  } catch (error) {\n    console.error('please transfer a valid name path to form item!');\n  }\n\n  return {\n    o: tempObj,\n    k: keyArr[i],\n    v: tempObj ? tempObj[keyArr[i]] : undefined,\n  };\n}\n\nlet indexGuid = 0;\n\n// default form item id prefix.\nconst defaultItemNamePrefixCls = 'form_item';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFormItem',\n  inheritAttrs: false,\n  __ANT_NEW_FORM_ITEM: true,\n  props: formItemProps(),\n  slots: Object as CustomSlotsType<{\n    help: any\n    label: any\n    extra: any\n    default: any\n    tooltip: any\n  }>,\n  setup(props, { slots, attrs, expose }) {\n    warning(props.prop === undefined, '`prop` is deprecated. Please use `name` instead.');\n    const eventKey = `form-item-${++indexGuid}`;\n    const { prefixCls } = useConfigInject('form', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const itemRef = shallowRef<HTMLDivElement>();\n    const formContext = useInjectForm();\n    const fieldName = computed(() => props.name || props.prop);\n    const errors = shallowRef([]);\n    const validateDisabled = shallowRef(false);\n    const inputRef = shallowRef();\n    const namePath = computed(() => {\n      const val = fieldName.value;\n      return getNamePath(val);\n    });\n\n    const fieldId = computed(() => {\n      if (!namePath.value.length) {\n        return undefined;\n      } else {\n        const formName = formContext.name.value;\n        const mergedId = namePath.value.join('_');\n        return formName ? `${formName}_${mergedId}` : `${defaultItemNamePrefixCls}_${mergedId}`;\n      }\n    });\n    const getNewFieldValue = () => {\n      const model = formContext.model.value;\n      if (model && fieldName.value)\n        return getPropByPath(model, namePath.value, true).v;\n    };\n    const fieldValue = computed(() => getNewFieldValue());\n\n    const initialValue = shallowRef(cloneDeep(fieldValue.value));\n    const mergedValidateTrigger = computed(() => {\n      let validateTrigger\n        = props.validateTrigger !== undefined\n          ? props.validateTrigger\n          : formContext.validateTrigger.value;\n      validateTrigger = validateTrigger === undefined ? 'change' : validateTrigger;\n      return toArray(validateTrigger);\n    });\n    const rulesRef = computed<Rule[]>(() => {\n      let formRules = formContext.rules.value;\n      const selfRules = props.rules;\n      const requiredRule\n        = props.required !== undefined\n          ? { required: !!props.required, trigger: mergedValidateTrigger.value }\n          : [];\n      const prop = getPropByPath(formRules, namePath.value);\n      formRules = formRules ? (prop.o[prop.k] || prop.v) : [];\n      const rules = [].concat(selfRules || formRules || []);\n      if (find(rules, rule => rule.required))\n        return rules;\n      else\n        return rules.concat(requiredRule);\n    });\n    const getIsRequired = computed(() => {\n      const rules = rulesRef.value;\n      let isRequired = false;\n      if (rules && rules.length) {\n        rules.every((rule) => {\n          if (rule.required) {\n            isRequired = true;\n            return false;\n          }\n          return true;\n        });\n      }\n      return isRequired || props.required;\n    });\n\n    const validateState = shallowRef();\n    watchEffect(() => {\n      validateState.value = props.validateStatus;\n    });\n    const messageVariables = computed(() => {\n      let variables: Record<string, string> = {};\n      if (typeof props.label === 'string')\n        variables.label = props.label;\n      else if (props.name)\n        variables.label = String(props.name);\n\n      if (props.messageVariables)\n        variables = { ...variables, ...props.messageVariables };\n\n      return variables;\n    });\n    const validateRules = (options: ValidateOptions) => {\n      // no name, no value, so the validate result is incorrect\n      if (namePath.value.length === 0)\n        return;\n\n      const { validateFirst = false } = props;\n      const { triggerName } = options || {};\n\n      let filteredRules = rulesRef.value;\n      if (triggerName) {\n        filteredRules = filteredRules.filter((rule) => {\n          const { trigger } = rule;\n          if (!trigger && !mergedValidateTrigger.value.length)\n            return true;\n\n          const triggerList = toArray(trigger || mergedValidateTrigger.value);\n          return triggerList.includes(triggerName);\n        });\n      }\n      if (!filteredRules.length)\n        return Promise.resolve();\n\n      const promise = validateRulesUtil(\n        namePath.value,\n        fieldValue.value,\n        filteredRules as RuleObject[],\n        {\n          validateMessages: formContext.validateMessages.value,\n          ...options,\n        },\n        validateFirst,\n        messageVariables.value,\n      );\n      validateState.value = 'validating';\n      errors.value = [];\n\n      promise\n        .catch(e => e)\n        .then((results: RuleError[] = []) => {\n          if (validateState.value === 'validating') {\n            const res = results.filter(result => result && result.errors.length);\n            validateState.value = res.length ? 'error' : 'success';\n\n            errors.value = res.map(r => r.errors);\n\n            formContext.onValidate(\n              fieldName.value,\n              !errors.value.length,\n              errors.value.length ? toRaw(errors.value[0]) : null,\n            );\n          }\n        });\n\n      return promise;\n    };\n\n    const onFieldBlur = () => {\n      validateRules({ triggerName: 'blur' });\n    };\n    const onFieldChange = () => {\n      if (validateDisabled.value) {\n        validateDisabled.value = false;\n        return;\n      }\n      validateRules({ triggerName: 'change' });\n    };\n    const clearValidate = () => {\n      validateState.value = props.validateStatus;\n      validateDisabled.value = false;\n      errors.value = [];\n    };\n\n    const resetField = () => {\n      validateState.value = props.validateStatus;\n      validateDisabled.value = true;\n      errors.value = [];\n      const model = formContext.model.value || {};\n      const value = fieldValue.value;\n      const prop = getPropByPath(model, namePath.value, true);\n      if (Array.isArray(value))\n        prop.o[prop.k] = [].concat(initialValue.value ?? []);\n      else\n        prop.o[prop.k] = initialValue.value;\n\n      // reset validateDisabled after onFieldChange triggered\n      nextTick(() => {\n        validateDisabled.value = false;\n      });\n    };\n    const htmlFor = computed(() => {\n      return props.htmlFor === undefined ? fieldId.value : props.htmlFor;\n    });\n    const onLabelClick = () => {\n      const id = htmlFor.value;\n      if (!id || !inputRef.value)\n        return;\n\n      const control = inputRef.value.$el.querySelector(`[id=\"${id}\"]`);\n      if (control && control.focus)\n        control.focus();\n    };\n    expose({\n      onFieldBlur,\n      onFieldChange,\n      clearValidate,\n      resetField,\n    });\n\n    useProvideFormItemContext(\n      {\n        id: fieldId,\n        onFieldBlur: () => {\n          if (props.autoLink)\n            onFieldBlur();\n        },\n        onFieldChange: () => {\n          if (props.autoLink)\n            onFieldChange();\n        },\n        clearValidate,\n      },\n      computed(() => {\n        return !!(props.autoLink && formContext.model.value && fieldName.value);\n      }),\n    );\n    let registered = false;\n    watch(\n      fieldName,\n      (val) => {\n        if (val) {\n          if (!registered) {\n            registered = true;\n            formContext.addField(eventKey, {\n              fieldValue,\n              fieldId,\n              fieldName,\n              resetField,\n              clearValidate,\n              namePath,\n              validateRules,\n              rules: rulesRef,\n            });\n          }\n        } else {\n          registered = false;\n          formContext.removeField(eventKey);\n        }\n      },\n      { immediate: true },\n    );\n    onBeforeUnmount(() => {\n      formContext.removeField(eventKey);\n    });\n    const debounceErrors = useDebounce(errors);\n    const mergedValidateStatus = computed(() => {\n      if (props.validateStatus !== undefined)\n        return props.validateStatus;\n      else if (debounceErrors.value.length)\n        return 'error';\n\n      return validateState.value;\n    });\n    const itemClassName = computed(() => ({\n      [`${prefixCls.value}-item`]: true,\n      [hashId.value]: true,\n      // Status\n      [`${prefixCls.value}-item-has-feedback`]: mergedValidateStatus.value && props.hasFeedback,\n      [`${prefixCls.value}-item-has-success`]: mergedValidateStatus.value === 'success',\n      [`${prefixCls.value}-item-has-warning`]: mergedValidateStatus.value === 'warning',\n      [`${prefixCls.value}-item-has-error`]: mergedValidateStatus.value === 'error',\n      [`${prefixCls.value}-item-is-validating`]: mergedValidateStatus.value === 'validating',\n      [`${prefixCls.value}-item-hidden`]: props.hidden,\n    }));\n    const formItemInputContext = reactive<FormItemStatusContextProps>({});\n    FormItemInputContext.useProvide(formItemInputContext);\n    watchEffect(() => {\n      let feedbackIcon: any;\n      if (props.hasFeedback) {\n        const IconNode = mergedValidateStatus.value && iconMap[mergedValidateStatus.value];\n        feedbackIcon = IconNode\n          ? (\n              <span\n                class={classNames(\n                  `${prefixCls.value}-item-feedback-icon`,\n                  `${prefixCls.value}-item-feedback-icon-${mergedValidateStatus.value}`,\n                )}\n              >\n                <IconNode />\n              </span>\n            )\n          : null;\n      }\n      Object.assign(formItemInputContext, {\n        status: mergedValidateStatus.value,\n        hasFeedback: props.hasFeedback,\n        feedbackIcon,\n        isFormItemInput: true,\n      });\n    });\n\n    const marginBottom = shallowRef<number>(null);\n    const showMarginOffset = shallowRef(false);\n    const updateMarginBottom = () => {\n      if (itemRef.value) {\n        const itemStyle = getComputedStyle(itemRef.value);\n        marginBottom.value = Number.parseInt(itemStyle.marginBottom, 10);\n      }\n    };\n    onMounted(() => {\n      watch(\n        showMarginOffset,\n        () => {\n          if (showMarginOffset.value)\n            updateMarginBottom();\n        },\n        { flush: 'post', immediate: true },\n      );\n    });\n\n    const onErrorVisibleChanged = (nextVisible: boolean) => {\n      if (!nextVisible)\n        marginBottom.value = null;\n    };\n    return () => {\n      if (props.noStyle) return slots.default?.();\n      const help = props.help ?? (slots.help ? filterEmpty(slots.help()) : null);\n      const withHelp = !!(\n        (help !== undefined && help !== null && Array.isArray(help) && help.length)\n        || debounceErrors.value.length\n      );\n      showMarginOffset.value = withHelp;\n      return wrapSSR(\n        <div\n          class={[\n            itemClassName.value,\n            withHelp ? `${prefixCls.value}-item-with-help` : '',\n            attrs.class,\n          ]}\n          ref={itemRef}\n        >\n          <Row\n            {...attrs}\n            class={`${prefixCls.value}-item-row`}\n            key=\"row\"\n            v-slots={{\n              default: () => (\n                <>\n                  {/* Label */}\n                  <FormItemLabel\n                    {...props}\n                    htmlFor={htmlFor.value}\n                    required={getIsRequired.value}\n                    requiredMark={formContext.requiredMark.value}\n                    prefixCls={prefixCls.value}\n                    onClick={onLabelClick}\n                    label={props.label}\n                    v-slots={{ label: slots.label, tooltip: slots.tooltip }}\n                  />\n                  {/* Input Group */}\n                  <FormItemInput\n                    {...props}\n                    errors={\n                      (help !== undefined && help !== null) ? toArray(help) : debounceErrors.value\n                    }\n                    marginBottom={marginBottom.value}\n                    prefixCls={prefixCls.value}\n                    status={mergedValidateStatus.value}\n                    ref={inputRef}\n                    help={help}\n                    extra={props.extra ?? slots.extra?.()}\n                    v-slots={{ default: slots.default }}\n                    onErrorVisibleChanged={onErrorVisibleChanged}\n                  >\n                  </FormItemInput>\n                </>\n              ),\n            }}\n          >\n          </Row>\n          {!!marginBottom.value && (\n            <div\n              class={`${prefixCls.value}-margin-offset`}\n              style={{\n                marginBottom: `-${marginBottom.value}px`,\n              }}\n            />\n          )}\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["iconMap","success","CheckCircleFilled","warning","ExclamationCircleFilled","error","CloseCircleFilled","validating","LoadingOutlined","getPropByPath","obj","namePathList","strict","tempObj","keyArr","i","len","length","key","Error","console","o","k","v","undefined","indexGuid","defaultItemNamePrefixCls","defineComponent","compatConfig","MODE","name","inheritAttrs","__ANT_NEW_FORM_ITEM","props","formItemProps","slots","Object","setup","attrs","expose","prop","eventKey","prefixCls","useConfigInject","wrapSSR","hashId","useStyle","itemRef","shallowRef","formContext","useInjectForm","fieldName","computed","errors","validateDisabled","inputRef","namePath","val","value","getNamePath","fieldId","formName","mergedId","join","getNewFieldValue","model","fieldValue","initialValue","cloneDeep","mergedValidateTrigger","validateTrigger","toArray","rulesRef","formRules","rules","selfRules","requiredRule","required","trigger","concat","find","rule","getIsRequired","isRequired","every","validateState","watchEffect","validateStatus","messageVariables","variables","label","String","validateRules","options","validateFirst","triggerName","filteredRules","filter","triggerList","includes","Promise","resolve","promise","validateRulesUtil","validateMessages","catch","e","then","results","res","result","map","r","onValidate","toRaw","onFieldBlur","onFieldChange","clearValidate","resetField","Array","isArray","nextTick","htmlFor","onLabelClick","id","control","$el","querySelector","focus","useProvideFormItemContext","autoLink","registered","watch","addField","removeField","immediate","onBeforeUnmount","debounceErrors","useDebounce","mergedValidateStatus","itemClassName","hasFeedback","hidden","formItemInputContext","reactive","FormItemInputContext","useProvide","feedbackIcon","IconNode","_createVNode","classNames","assign","status","isFormItemInput","marginBottom","showMarginOffset","updateMarginBottom","itemStyle","getComputedStyle","Number","parseInt","onMounted","flush","onErrorVisibleChanged","nextVisible","noStyle","default","help","filterEmpty","withHelp","class","Row","_Fragment","FormItemLabel","requiredMark","tooltip","FormItemInput","extra"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAMA,OAAkC,GAAA;AAAA,EACtCC,OAASC,EAAAA,0BAAAA;AAAAA,EACTC,OAASC,EAAAA,gCAAAA;AAAAA,EACTC,KAAOC,EAAAA,0BAAAA;AAAAA,EACPC,UAAYC,EAAAA,wBAAAA;AACd,CAAA,CAAA;AAEA,SAASC,aAAAA,CAAcC,GAAUC,EAAAA,YAAAA,EAAmBC,MAAkB,EAAA;AACpE,EAAA,IAAIC,OAAUH,GAAAA,GAAAA,CAAAA;AAEd,EAAA,MAAMI,MAASH,GAAAA,YAAAA,CAAAA;AACf,EAAA,IAAII,CAAI,GAAA,CAAA,CAAA;AACR,EAAI,IAAA;AACF,IAAA,KAAA,IAASC,MAAMF,MAAOG,CAAAA,MAAAA,EAAQF,IAAIC,GAAM,GAAA,CAAA,EAAG,EAAED,CAAG,EAAA;AAC9C,MAAI,IAAA,CAACF,WAAW,CAACD,MAAAA;AAAQ,QAAA,MAAA;AACzB,MAAMM,MAAAA,GAAAA,GAAMJ,OAAOC,CAAC,CAAA,CAAA;AACpB,MAAA,IAAIG,OAAOL,OAAS,EAAA;AAClBA,QAAAA,OAAAA,GAAUA,QAAQK,GAAG,CAAA,CAAA;AAAA,OAChB,MAAA;AACL,QAAIN,IAAAA,MAAAA;AACF,UAAM,MAAA,IAAIO,MAAM,iDAAiD,CAAA,CAAA;AAEnE,QAAA,MAAA;AAAA,OACF;AAAA,KACF;AACA,IAAA,IAAIP,UAAU,CAACC,OAAAA;AACb,MAAM,MAAA,IAAIM,MAAM,iDAAiD,CAAA,CAAA;AAAA,WAC5Dd,KAAO,EAAA;AACde,IAAAA,OAAAA,CAAQf,MAAM,iDAAiD,CAAA,CAAA;AAAA,GACjE;AAEA,EAAO,OAAA;AAAA,IACLgB,CAAGR,EAAAA,OAAAA;AAAAA,IACHS,CAAAA,EAAGR,OAAOC,CAAC,CAAA;AAAA,IACXQ,GAAGV,OAAUA,GAAAA,OAAAA,CAAQC,MAAOC,CAAAA,CAAC,CAAC,CAAIS,GAAAA,KAAAA,CAAAA;AAAAA,GACpC,CAAA;AACF,CAAA;AAEA,IAAIC,SAAY,GAAA,CAAA,CAAA;AAGhB,MAAMC,wBAA2B,GAAA,WAAA,CAAA;AAEjC,gCAA+BC,mBAAA,CAAA;AAAA,EAC7BC,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,WAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdC,mBAAqB,EAAA,IAAA;AAAA,EACrBC,OAAOC,mBAAc,EAAA;AAAA,EACrBC,KAAOC,EAAAA,MAAAA;AAAAA,EAOPC,MAAMJ,KAAO,EAAA;AAAA,IAAEE,KAAAA;AAAAA,IAAOG,KAAAA;AAAAA,IAAOC,MAAAA;AAAAA,GAAU,EAAA;AACrCpC,IAAQ8B,WAAAA,CAAAA,KAAAA,CAAMO,IAAShB,KAAAA,KAAAA,CAAAA,EAAW,kDAAkD,CAAA,CAAA;AACpF,IAAMiB,MAAAA,QAAAA,GAAY,CAAY,UAAA,EAAA,EAAEhB,SAAU,CAAA,CAAA,CAAA;AAC1C,IAAM,MAAA;AAAA,MAAEiB,SAAAA;AAAAA,KAAU,GAAIC,uBAAgB,CAAA,MAAA,EAAQV,KAAK,CAAA,CAAA;AACnD,IAAA,MAAM,CAACW,OAAAA,EAASC,MAAM,CAAA,GAAIC,cAASJ,SAAS,CAAA,CAAA;AAC5C,IAAA,MAAMK,UAAUC,cAA2B,EAAA,CAAA;AAC3C,IAAA,MAAMC,cAAcC,qBAAc,EAAA,CAAA;AAClC,IAAA,MAAMC,YAAYC,YAAS,CAAA,MAAMnB,KAAMH,CAAAA,IAAAA,IAAQG,MAAMO,IAAI,CAAA,CAAA;AACzD,IAAMa,MAAAA,MAAAA,GAASL,cAAW,CAAA,EAAE,CAAA,CAAA;AAC5B,IAAMM,MAAAA,gBAAAA,GAAmBN,eAAW,KAAK,CAAA,CAAA;AACzC,IAAA,MAAMO,WAAWP,cAAW,EAAA,CAAA;AAC5B,IAAMQ,MAAAA,QAAAA,GAAWJ,aAAS,MAAM;AAC9B,MAAA,MAAMK,MAAMN,SAAUO,CAAAA,KAAAA,CAAAA;AACtB,MAAA,OAAOC,sBAAYF,GAAG,CAAA,CAAA;AAAA,KACvB,CAAA,CAAA;AAED,IAAMG,MAAAA,OAAAA,GAAUR,aAAS,MAAM;AAC7B,MAAI,IAAA,CAACI,QAASE,CAAAA,KAAAA,CAAMzC,MAAQ,EAAA;AAC1B,QAAOO,OAAAA,KAAAA,CAAAA,CAAAA;AAAAA,OACF,MAAA;AACL,QAAMqC,MAAAA,QAAAA,GAAWZ,YAAYnB,IAAK4B,CAAAA,KAAAA,CAAAA;AAClC,QAAA,MAAMI,QAAWN,GAAAA,QAAAA,CAASE,KAAMK,CAAAA,IAAAA,CAAK,GAAG,CAAA,CAAA;AACxC,QAAOF,OAAAA,QAAAA,GAAY,GAAEA,QAAS,CAAA,CAAA,EAAGC,QAAS,CAAK,CAAA,GAAA,CAAA,EAAEpC,wBAAyB,CAAA,CAAA,EAAGoC,QAAS,CAAA,CAAA,CAAA;AAAA,OACxF;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAME,mBAAmBA,MAAM;AAC7B,MAAMC,MAAAA,KAAAA,GAAQhB,YAAYgB,KAAMP,CAAAA,KAAAA,CAAAA;AAChC,MAAA,IAAIO,SAASd,SAAUO,CAAAA,KAAAA;AACrB,QAAA,OAAOjD,aAAcwD,CAAAA,KAAAA,EAAOT,QAASE,CAAAA,KAAAA,EAAO,IAAI,CAAEnC,CAAAA,CAAAA,CAAAA;AAAAA,KACtD,CAAA;AACA,IAAA,MAAM2C,UAAad,GAAAA,YAAAA,CAAS,MAAMY,gBAAAA,EAAkB,CAAA,CAAA;AAEpD,IAAA,MAAMG,YAAenB,GAAAA,cAAAA,CAAWoB,kBAAUF,CAAAA,UAAAA,CAAWR,KAAK,CAAC,CAAA,CAAA;AAC3D,IAAMW,MAAAA,qBAAAA,GAAwBjB,aAAS,MAAM;AAC3C,MAAA,IAAIkB,kBACArC,KAAMqC,CAAAA,eAAAA,KAAoB9C,SACxBS,KAAMqC,CAAAA,eAAAA,GACNrB,YAAYqB,eAAgBZ,CAAAA,KAAAA,CAAAA;AAClCY,MAAkBA,eAAAA,GAAAA,eAAAA,KAAoB9C,SAAY,QAAW8C,GAAAA,eAAAA,CAAAA;AAC7D,MAAA,OAAOC,cAAQD,eAAe,CAAA,CAAA;AAAA,KAC/B,CAAA,CAAA;AACD,IAAME,MAAAA,QAAAA,GAAWpB,aAAiB,MAAM;AACtC,MAAIqB,IAAAA,SAAAA,GAAYxB,YAAYyB,KAAMhB,CAAAA,KAAAA,CAAAA;AAClC,MAAA,MAAMiB,YAAY1C,KAAMyC,CAAAA,KAAAA,CAAAA;AACxB,MAAME,MAAAA,YAAAA,GACF3C,KAAM4C,CAAAA,QAAAA,KAAarD,KACjB,CAAA,GAAA;AAAA,QAAEqD,QAAAA,EAAU,CAAC,CAAC5C,KAAM4C,CAAAA,QAAAA;AAAAA,QAAUC,SAAST,qBAAsBX,CAAAA,KAAAA;AAAAA,UAC7D,EAAE,CAAA;AACR,MAAA,MAAMlB,IAAO/B,GAAAA,aAAAA,CAAcgE,SAAWjB,EAAAA,QAAAA,CAASE,KAAK,CAAA,CAAA;AACpDe,MAAYA,SAAAA,GAAAA,SAAAA,GAAajC,KAAKnB,CAAEmB,CAAAA,IAAAA,CAAKlB,CAAC,CAAKkB,IAAAA,IAAAA,CAAKjB,IAAK,EAAE,CAAA;AACvD,MAAA,MAAMmD,QAAQ,EAAA,CAAGK,OAAOJ,SAAaF,IAAAA,SAAAA,IAAa,EAAE,CAAA,CAAA;AACpD,MAAA,IAAIO,aAAKN,CAAAA,KAAAA,EAAOO,CAAQA,IAAAA,KAAAA,IAAAA,CAAKJ,QAAQ,CAAA;AACnC,QAAOH,OAAAA,KAAAA,CAAAA;AAAAA;AAEP,QAAOA,OAAAA,KAAAA,CAAMK,OAAOH,YAAY,CAAA,CAAA;AAAA,KACnC,CAAA,CAAA;AACD,IAAMM,MAAAA,aAAAA,GAAgB9B,aAAS,MAAM;AACnC,MAAA,MAAMsB,QAAQF,QAASd,CAAAA,KAAAA,CAAAA;AACvB,MAAA,IAAIyB,UAAa,GAAA,KAAA,CAAA;AACjB,MAAIT,IAAAA,KAAAA,IAASA,MAAMzD,MAAQ,EAAA;AACzByD,QAAAA,KAAAA,CAAMU,MAAOH,CAAS,IAAA,KAAA;AACpB,UAAA,IAAIA,KAAKJ,QAAU,EAAA;AACjBM,YAAa,UAAA,GAAA,IAAA,CAAA;AACb,YAAO,OAAA,KAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,IAAA,CAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACH;AACA,MAAA,OAAOA,cAAclD,KAAM4C,CAAAA,QAAAA,CAAAA;AAAAA,KAC5B,CAAA,CAAA;AAED,IAAA,MAAMQ,gBAAgBrC,cAAW,EAAA,CAAA;AACjCsC,IAAAA,eAAAA,CAAY,MAAM;AAChBD,MAAAA,aAAAA,CAAc3B,QAAQzB,KAAMsD,CAAAA,cAAAA,CAAAA;AAAAA,KAC7B,CAAA,CAAA;AACD,IAAMC,MAAAA,gBAAAA,GAAmBpC,aAAS,MAAM;AACtC,MAAA,IAAIqC,YAAoC,EAAC,CAAA;AACzC,MAAI,IAAA,OAAOxD,MAAMyD,KAAU,KAAA,QAAA;AACzBD,QAAAA,SAAAA,CAAUC,QAAQzD,KAAMyD,CAAAA,KAAAA,CAAAA;AAAAA,WAAAA,IACjBzD,KAAMH,CAAAA,IAAAA;AACb2D,QAAUC,SAAAA,CAAAA,KAAAA,GAAQC,MAAO1D,CAAAA,KAAAA,CAAMH,IAAI,CAAA,CAAA;AAErC,MAAA,IAAIG,KAAMuD,CAAAA,gBAAAA;AACRC,QAAY,SAAA,GAAA;AAAA,UAAE,GAAGA,SAAAA;AAAAA,UAAW,GAAGxD,KAAMuD,CAAAA,gBAAAA;AAAAA,SAAiB,CAAA;AAExD,MAAOC,OAAAA,SAAAA,CAAAA;AAAAA,KACR,CAAA,CAAA;AACD,IAAA,MAAMG,gBAAiBC,CAA6B,OAAA,KAAA;AAElD,MAAIrC,IAAAA,QAAAA,CAASE,MAAMzC,MAAW,KAAA,CAAA;AAC5B,QAAA,OAAA;AAEF,MAAM,MAAA;AAAA,QAAE6E,aAAgB,GAAA,KAAA;AAAA,OAAU7D,GAAAA,KAAAA,CAAAA;AAClC,MAAM,MAAA;AAAA,QAAE8D,WAAAA;AAAAA,OAAY,GAAIF,WAAW,EAAC,CAAA;AAEpC,MAAA,IAAIG,gBAAgBxB,QAASd,CAAAA,KAAAA,CAAAA;AAC7B,MAAA,IAAIqC,WAAa,EAAA;AACfC,QAAgBA,aAAAA,GAAAA,aAAAA,CAAcC,OAAQhB,CAAS,IAAA,KAAA;AAC7C,UAAM,MAAA;AAAA,YAAEH,OAAAA;AAAAA,WAAYG,GAAAA,IAAAA,CAAAA;AACpB,UAAA,IAAI,CAACH,OAAAA,IAAW,CAACT,qBAAAA,CAAsBX,KAAMzC,CAAAA,MAAAA;AAC3C,YAAO,OAAA,IAAA,CAAA;AAET,UAAA,MAAMiF,WAAc3B,GAAAA,aAAAA,CAAQO,OAAWT,IAAAA,qBAAAA,CAAsBX,KAAK,CAAA,CAAA;AAClE,UAAOwC,OAAAA,WAAAA,CAAYC,SAASJ,WAAW,CAAA,CAAA;AAAA,SACxC,CAAA,CAAA;AAAA,OACH;AACA,MAAA,IAAI,CAACC,aAAc/E,CAAAA,MAAAA;AACjB,QAAA,OAAOmF,QAAQC,OAAQ,EAAA,CAAA;AAEzB,MAAA,MAAMC,UAAUC,0BACd/C,CAAAA,QAAAA,CAASE,KACTQ,EAAAA,UAAAA,CAAWR,OACXsC,aACA,EAAA;AAAA,QACEQ,gBAAAA,EAAkBvD,YAAYuD,gBAAiB9C,CAAAA,KAAAA;AAAAA,QAC/C,GAAGmC,OAAAA;AAAAA,OACL,EACAC,aACAN,EAAAA,gBAAAA,CAAiB9B,KACnB,CAAA,CAAA;AACA2B,MAAAA,aAAAA,CAAc3B,KAAQ,GAAA,YAAA,CAAA;AACtBL,MAAAA,MAAAA,CAAOK,QAAQ,EAAE,CAAA;AAEjB4C,MACGG,OAAAA,CAAAA,KAAAA,CAAMC,OAAKA,CAAC,CAAA,CACZC,KAAK,CAACC,OAAAA,GAAuB,EAAO,KAAA;AACnC,QAAIvB,IAAAA,aAAAA,CAAc3B,UAAU,YAAc,EAAA;AACxC,UAAA,MAAMmD,MAAMD,OAAQX,CAAAA,MAAAA,CAAOa,YAAUA,MAAUA,IAAAA,MAAAA,CAAOzD,OAAOpC,MAAM,CAAA,CAAA;AACnEoE,UAAc3B,aAAAA,CAAAA,KAAAA,GAAQmD,GAAI5F,CAAAA,MAAAA,GAAS,OAAU,GAAA,SAAA,CAAA;AAE7CoC,UAAAA,MAAAA,CAAOK,KAAQmD,GAAAA,GAAAA,CAAIE,GAAIC,CAAAA,CAAAA,CAAAA,KAAKA,EAAE3D,MAAM,CAAA,CAAA;AAEpCJ,UAAAA,WAAAA,CAAYgE,WACV9D,SAAUO,CAAAA,KAAAA,EACV,CAACL,MAAAA,CAAOK,MAAMzC,MACdoC,EAAAA,MAAAA,CAAOK,KAAMzC,CAAAA,MAAAA,GAASiG,UAAM7D,MAAOK,CAAAA,KAAAA,CAAM,CAAC,CAAC,IAAI,IACjD,CAAA,CAAA;AAAA,SACF;AAAA,OACD,CAAA,CAAA;AAEH,MAAO4C,OAAAA,OAAAA,CAAAA;AAAAA,KACT,CAAA;AAEA,IAAA,MAAMa,cAAcA,MAAM;AACxBvB,MAAc,aAAA,CAAA;AAAA,QAAEG,WAAa,EAAA,MAAA;AAAA,OAAQ,CAAA,CAAA;AAAA,KACvC,CAAA;AACA,IAAA,MAAMqB,gBAAgBA,MAAM;AAC1B,MAAA,IAAI9D,iBAAiBI,KAAO,EAAA;AAC1BJ,QAAAA,gBAAAA,CAAiBI,KAAQ,GAAA,KAAA,CAAA;AACzB,QAAA,OAAA;AAAA,OACF;AACAkC,MAAc,aAAA,CAAA;AAAA,QAAEG,WAAa,EAAA,QAAA;AAAA,OAAU,CAAA,CAAA;AAAA,KACzC,CAAA;AACA,IAAA,MAAMsB,gBAAgBA,MAAM;AAC1BhC,MAAAA,aAAAA,CAAc3B,QAAQzB,KAAMsD,CAAAA,cAAAA,CAAAA;AAC5BjC,MAAAA,gBAAAA,CAAiBI,KAAQ,GAAA,KAAA,CAAA;AACzBL,MAAAA,MAAAA,CAAOK,QAAQ,EAAE,CAAA;AAAA,KACnB,CAAA;AAEA,IAAA,MAAM4D,aAAaA,MAAM;;AACvBjC,MAAAA,aAAAA,CAAc3B,QAAQzB,KAAMsD,CAAAA,cAAAA,CAAAA;AAC5BjC,MAAAA,gBAAAA,CAAiBI,KAAQ,GAAA,IAAA,CAAA;AACzBL,MAAAA,MAAAA,CAAOK,QAAQ,EAAE,CAAA;AACjB,MAAA,MAAMO,KAAQhB,GAAAA,WAAAA,CAAYgB,KAAMP,CAAAA,KAAAA,IAAS,EAAC,CAAA;AAC1C,MAAA,MAAMA,QAAQQ,UAAWR,CAAAA,KAAAA,CAAAA;AACzB,MAAA,MAAMlB,IAAO/B,GAAAA,aAAAA,CAAcwD,KAAOT,EAAAA,QAAAA,CAASE,OAAO,IAAI,CAAA,CAAA;AACtD,MAAI6D,IAAAA,KAAAA,CAAMC,QAAQ9D,KAAK,CAAA;AACrBlB,QAAKnB,IAAAA,CAAAA,CAAAA,CAAEmB,IAAKlB,CAAAA,CAAC,CAAI,GAAA,EAAGyD,CAAAA,MAAAA,CAAAA,CAAOZ,EAAaT,GAAAA,YAAAA,CAAAA,KAAAA,KAAbS,IAAsB,GAAA,EAAA,GAAA,EAAE,CAAA,CAAA;AAAA;AAEnD3B,QAAAA,IAAAA,CAAKnB,CAAEmB,CAAAA,IAAAA,CAAKlB,CAAC,CAAA,GAAI6C,YAAaT,CAAAA,KAAAA,CAAAA;AAGhC+D,MAAAA,YAAAA,CAAS,MAAM;AACbnE,QAAAA,gBAAAA,CAAiBI,KAAQ,GAAA,KAAA,CAAA;AAAA,OAC1B,CAAA,CAAA;AAAA,KACH,CAAA;AACA,IAAMgE,MAAAA,OAAAA,GAAUtE,aAAS,MAAM;AAC7B,MAAA,OAAOnB,KAAMyF,CAAAA,OAAAA,KAAYlG,KAAYoC,CAAAA,GAAAA,OAAAA,CAAQF,QAAQzB,KAAMyF,CAAAA,OAAAA,CAAAA;AAAAA,KAC5D,CAAA,CAAA;AACD,IAAA,MAAMC,eAAeA,MAAM;AACzB,MAAA,MAAMC,KAAKF,OAAQhE,CAAAA,KAAAA,CAAAA;AACnB,MAAI,IAAA,CAACkE,EAAM,IAAA,CAACrE,QAASG,CAAAA,KAAAA;AACnB,QAAA,OAAA;AAEF,MAAA,MAAMmE,UAAUtE,QAASG,CAAAA,KAAAA,CAAMoE,IAAIC,aAAe,CAAA,CAAA,KAAA,EAAOH,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC/D,MAAA,IAAIC,WAAWA,OAAQG,CAAAA,KAAAA;AACrBH,QAAAA,OAAAA,CAAQG,KAAM,EAAA,CAAA;AAAA,KAClB,CAAA;AACAzF,IAAO,MAAA,CAAA;AAAA,MACL4E,WAAAA;AAAAA,MACAC,aAAAA;AAAAA,MACAC,aAAAA;AAAAA,MACAC,UAAAA;AAAAA,KACD,CAAA,CAAA;AAEDW,IACEA,yCAAA,CAAA;AAAA,MACEL,EAAIhE,EAAAA,OAAAA;AAAAA,MACJuD,aAAaA,MAAM;AACjB,QAAA,IAAIlF,KAAMiG,CAAAA,QAAAA;AACRf,UAAY,WAAA,EAAA,CAAA;AAAA,OAChB;AAAA,MACAC,eAAeA,MAAM;AACnB,QAAA,IAAInF,KAAMiG,CAAAA,QAAAA;AACRd,UAAc,aAAA,EAAA,CAAA;AAAA,OAClB;AAAA,MACAC,aAAAA;AAAAA,KACF,EACAjE,aAAS,MAAM;AACb,MAAA,OAAO,CAAC,EAAEnB,KAAAA,CAAMiG,YAAYjF,WAAYgB,CAAAA,KAAAA,CAAMP,SAASP,SAAUO,CAAAA,KAAAA,CAAAA,CAAAA;AAAAA,KAClE,CACH,CAAA,CAAA;AACA,IAAA,IAAIyE,UAAa,GAAA,KAAA,CAAA;AACjBC,IAAAA,SAAAA,CACEjF,WACCM,CAAQ,GAAA,KAAA;AACP,MAAA,IAAIA,GAAK,EAAA;AACP,QAAA,IAAI,CAAC0E,UAAY,EAAA;AACfA,UAAa,UAAA,GAAA,IAAA,CAAA;AACblF,UAAAA,WAAAA,CAAYoF,SAAS5F,QAAU,EAAA;AAAA,YAC7ByB,UAAAA;AAAAA,YACAN,OAAAA;AAAAA,YACAT,SAAAA;AAAAA,YACAmE,UAAAA;AAAAA,YACAD,aAAAA;AAAAA,YACA7D,QAAAA;AAAAA,YACAoC,aAAAA;AAAAA,YACAlB,KAAOF,EAAAA,QAAAA;AAAAA,WACR,CAAA,CAAA;AAAA,SACH;AAAA,OACK,MAAA;AACL2D,QAAa,UAAA,GAAA,KAAA,CAAA;AACblF,QAAAA,WAAAA,CAAYqF,YAAY7F,QAAQ,CAAA,CAAA;AAAA,OAClC;AAAA,KAEF,EAAA;AAAA,MAAE8F,SAAW,EAAA,IAAA;AAAA,KACf,CAAA,CAAA;AACAC,IAAAA,mBAAAA,CAAgB,MAAM;AACpBvF,MAAAA,WAAAA,CAAYqF,YAAY7F,QAAQ,CAAA,CAAA;AAAA,KACjC,CAAA,CAAA;AACD,IAAMgG,MAAAA,cAAAA,GAAiBC,oBAAYrF,MAAM,CAAA,CAAA;AACzC,IAAMsF,MAAAA,oBAAAA,GAAuBvF,aAAS,MAAM;AAC1C,MAAA,IAAInB,MAAMsD,cAAmB/D,KAAAA,KAAAA,CAAAA;AAC3B,QAAA,OAAOS,KAAMsD,CAAAA,cAAAA,CAAAA;AAAAA,WAAAA,IACNkD,eAAe/E,KAAMzC,CAAAA,MAAAA;AAC5B,QAAO,OAAA,OAAA,CAAA;AAET,MAAA,OAAOoE,aAAc3B,CAAAA,KAAAA,CAAAA;AAAAA,KACtB,CAAA,CAAA;AACD,IAAMkF,MAAAA,aAAAA,GAAgBxF,aAAS,OAAO;AAAA,MACpC,CAAE,CAAA,EAAEV,SAAUgB,CAAAA,KAAM,OAAM,GAAG,IAAA;AAAA,MAC7B,CAACb,MAAOa,CAAAA,KAAK,GAAG,IAAA;AAAA;AAAA,MAEhB,CAAE,GAAEhB,SAAUgB,CAAAA,KAAM,oBAAmB,GAAGiF,oBAAAA,CAAqBjF,SAASzB,KAAM4G,CAAAA,WAAAA;AAAAA,MAC9E,CAAE,CAAEnG,EAAAA,SAAAA,CAAUgB,KAAM,CAAkB,iBAAA,CAAA,GAAGiF,qBAAqBjF,KAAU,KAAA,SAAA;AAAA,MACxE,CAAE,CAAEhB,EAAAA,SAAAA,CAAUgB,KAAM,CAAkB,iBAAA,CAAA,GAAGiF,qBAAqBjF,KAAU,KAAA,SAAA;AAAA,MACxE,CAAE,CAAEhB,EAAAA,SAAAA,CAAUgB,KAAM,CAAgB,eAAA,CAAA,GAAGiF,qBAAqBjF,KAAU,KAAA,OAAA;AAAA,MACtE,CAAE,CAAEhB,EAAAA,SAAAA,CAAUgB,KAAM,CAAoB,mBAAA,CAAA,GAAGiF,qBAAqBjF,KAAU,KAAA,YAAA;AAAA,MAC1E,CAAE,CAAEhB,EAAAA,SAAAA,CAAUgB,KAAM,CAAA,YAAA,CAAa,GAAGzB,KAAM6G,CAAAA,MAAAA;AAAAA,KAC1C,CAAA,CAAA,CAAA;AACF,IAAMC,MAAAA,oBAAAA,GAAuBC,YAAqC,CAAA,EAAE,CAAA,CAAA;AACpEC,IAAAA,oCAAAA,CAAqBC,WAAWH,oBAAoB,CAAA,CAAA;AACpDzD,IAAAA,eAAAA,CAAY,MAAM;AAChB,MAAI6D,IAAAA,YAAAA,CAAAA;AACJ,MAAA,IAAIlH,MAAM4G,WAAa,EAAA;AACrB,QAAA,MAAMO,QAAWT,GAAAA,oBAAAA,CAAqBjF,KAAS1D,IAAAA,OAAAA,CAAQ2I,qBAAqBjF,KAAK,CAAA,CAAA;AACjFyF,QAAeC,YAAAA,GAAAA,QAAAA,GAAQC,gBAAA,MAAA,EAAA;AAAA,UAAA,OAGRC,EAAAA,iBAAAA,CACJ,CAAE5G,EAAAA,SAAAA,CAAUgB,KAAM,CAAA,mBAAA,CAAA,EAClB,CAAEhB,EAAAA,SAAAA,CAAUgB,KAAM,CAAA,oBAAA,EAAsBiF,oBAAqBjF,CAAAA,KAAM,CACtE,CAAA,CAAA;AAAA,SAAC,EAAA,CAAA2F,eAAAD,CAAAA,QAAAA,EAAA,MAAA,IAAA,CAAA,CAAA,CAKL,GAAA,IAAA,CAAA;AAAA,OACN;AACAhH,MAAAA,MAAAA,CAAOmH,OAAOR,oBAAsB,EAAA;AAAA,QAClCS,QAAQb,oBAAqBjF,CAAAA,KAAAA;AAAAA,QAC7BmF,aAAa5G,KAAM4G,CAAAA,WAAAA;AAAAA,QACnBM,YAAAA;AAAAA,QACAM,eAAiB,EAAA,IAAA;AAAA,OAClB,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAED,IAAMC,MAAAA,YAAAA,GAAe1G,eAAmB,IAAI,CAAA,CAAA;AAC5C,IAAM2G,MAAAA,gBAAAA,GAAmB3G,eAAW,KAAK,CAAA,CAAA;AACzC,IAAA,MAAM4G,qBAAqBA,MAAM;AAC/B,MAAA,IAAI7G,QAAQW,KAAO,EAAA;AACjB,QAAMmG,MAAAA,SAAAA,GAAYC,gBAAiB/G,CAAAA,OAAAA,CAAQW,KAAK,CAAA,CAAA;AAChDgG,QAAAA,YAAAA,CAAahG,KAAQqG,GAAAA,MAAAA,CAAOC,QAASH,CAAAA,SAAAA,CAAUH,cAAc,EAAE,CAAA,CAAA;AAAA,OACjE;AAAA,KACF,CAAA;AACAO,IAAAA,aAAAA,CAAU,MAAM;AACd7B,MAAAA,SAAAA,CACEuB,kBACA,MAAM;AACJ,QAAA,IAAIA,gBAAiBjG,CAAAA,KAAAA;AACnBkG,UAAmB,kBAAA,EAAA,CAAA;AAAA,OAEvB,EAAA;AAAA,QAAEM,KAAO,EAAA,MAAA;AAAA,QAAQ3B,SAAW,EAAA,IAAA;AAAA,OAC9B,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM4B,wBAAyBC,CAAyB,WAAA,KAAA;AACtD,MAAA,IAAI,CAACA,WAAAA;AACHV,QAAAA,YAAAA,CAAahG,KAAQ,GAAA,IAAA,CAAA;AAAA,KACzB,CAAA;AACA,IAAA,OAAO,MAAM;;AACX,MAAA,IAAIzB,KAAMoI,CAAAA,OAAAA;AAAS,QAAA,OAAA,CAAOlI,WAAMmI,OAANnI,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAC1B,MAAMoI,MAAAA,IAAAA,GAAAA,CAAOtI,EAAMsI,GAAAA,KAAAA,CAAAA,IAAAA,KAANtI,IAAeE,GAAAA,EAAAA,GAAAA,KAAAA,CAAMoI,OAAOC,mBAAYrI,CAAAA,KAAAA,CAAMoI,IAAK,EAAC,CAAI,GAAA,IAAA,CAAA;AACrE,MAAA,MAAME,QAAW,GAAA,CAAC,EACfF,IAAAA,KAAS/I,UAAa+I,IAAS,KAAA,IAAA,IAAQhD,KAAMC,CAAAA,OAAAA,CAAQ+C,IAAI,CAAA,IAAKA,IAAKtJ,CAAAA,MAAAA,IACjEwH,eAAe/E,KAAMzC,CAAAA,MAAAA,CAAAA,CAAAA;AAE1B0I,MAAAA,gBAAAA,CAAiBjG,KAAQ+G,GAAAA,QAAAA,CAAAA;AACzB,MAAO7H,OAAAA,OAAAA,CAAOyG,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAEH,CACLT,aAAAA,CAAclF,KACd+G,EAAAA,QAAAA,GAAY,CAAE/H,EAAAA,SAAAA,CAAUgB,KAAM,CAAA,eAAA,CAAA,GAAmB,EACjDpB,EAAAA,KAAAA,CAAMoI,KAAK,CAAA;AAAA,QACZ,KACI3H,EAAAA,OAAAA;AAAAA,OAAO,EAAAsG,CAAAA,eAAAA,CAAAsB,WAAA,EAAA;AAAA,QAAA,GAGNrI,KAAAA;AAAAA,QAAK,OAAA,EACD,CAAEI,EAAAA,SAAAA,CAAUgB,KAAM,CAAA,SAAA,CAAA;AAAA,QAAU,KAAA,EAAA,KAAA;AAAA,OAE3B,EAAA;AAAA,QACP4G,SAASA,MAAAjB;;AAAAA,UAAAA,OAAAA,eAAAA,CAAAuB,YAAA,EAAA,IAAA,EAAA,CAAAvB,eAAAA,CAAAwB,qBAAA,EAAA;AAAA,YAAA,GAIC5I,KAAAA;AAAAA,YAAK,WACAyF,OAAQhE,CAAAA,KAAAA;AAAAA,YAAK,YACZwB,aAAcxB,CAAAA,KAAAA;AAAAA,YAAK,cAAA,EACfT,YAAY6H,YAAapH,CAAAA,KAAAA;AAAAA,YAAK,aACjChB,SAAUgB,CAAAA,KAAAA;AAAAA,YAAK,SACjBiE,EAAAA,YAAAA;AAAAA,YAAY,SACd1F,KAAMyD,CAAAA,KAAAA;AAAAA,WACJ,EAAA;AAAA,YAAEA,OAAOvD,KAAMuD,CAAAA,KAAAA;AAAAA,YAAOqF,SAAS5I,KAAM4I,CAAAA,OAAAA;AAAAA,WAAS,CAAA1B,EAAAA,eAAAA,CAAA2B,qBAAA,EAAA;AAAA,YAAA,GAInD/I,KAAAA;AAAAA,YAAK,QAAA,EAENsI,SAAS/I,KAAa+I,CAAAA,IAAAA,IAAAA,KAAS,OAAQhG,aAAQgG,CAAAA,IAAI,IAAI9B,cAAe/E,CAAAA,KAAAA;AAAAA,YAAK,gBAEhEgG,YAAahG,CAAAA,KAAAA;AAAAA,YAAK,aACrBhB,SAAUgB,CAAAA,KAAAA;AAAAA,YAAK,UAClBiF,oBAAqBjF,CAAAA,KAAAA;AAAAA,YAAK,KAC7BH,EAAAA,QAAAA;AAAAA,YAAQ,MACPgH,EAAAA,IAAAA;AAAAA,YAAI,OAAA,EAAA,CACHtI,GAAAA,GAAAA,KAAAA,CAAMgJ,KAANhJ,KAAAA,IAAAA,GAAAA,OAAeE,GAAAA,GAAAA,KAAAA,CAAM8I,KAAN9I,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,YAAe,uBAEdgI,EAAAA,qBAAAA;AAAAA,WADd,EAAA;AAAA,YAAEG,SAASnI,KAAMmI,CAAAA,OAAAA;AAAAA,WAAS,CAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAM1C,CAGF,EAAA,CAAC,CAACZ,YAAahG,CAAAA,KAAAA,IAAK2F,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAET,CAAE3G,EAAAA,SAAAA,CAAUgB,KAAM,CAAA,cAAA,CAAA;AAAA,QAAe,OAClC,EAAA;AAAA,UACLgG,YAAAA,EAAe,CAAGA,CAAAA,EAAAA,YAAAA,CAAahG,KAAM,CAAA,EAAA,CAAA;AAAA,SACvC;AAAA,OAAC,EAAA,IAAA,CAEJ,EAEL,CAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}