{"version":3,"file":"useFormEvents2.mjs","sources":["../../../../../../../../packages/components/form/src/hooks/useFormEvents.ts"],"sourcesContent":["import { toRaw, unref } from 'vue'\nimport { cloneDeep, uniqBy } from 'lodash-es'\nimport { deepMerge } from '@tav-ui/utils/basic'\nimport { dateUtil } from '@tav-ui/utils/dateUtil'\nimport { isArray, isFunction, isNullOrUnDef, isObject, isString } from '@tav-ui/utils/is'\nimport { error } from '@tav-ui/utils/log'\nimport { dateItemType, handleInputNumberValue } from '../helper'\nimport type { NamePath } from 'ant-design-vue/lib/form/interface'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { FormActionType, FormEmitType, FormProps, FormSchema } from '../types/form'\n\ntype Recordable<T = any> = Record<string, T>\ninterface Fn<T = any, R = T> {\n  (...arg: T[]): R\n}\ninterface UseFormActionContext {\n  emit: FormEmitType\n  getProps: ComputedRef<FormProps>\n  getSchema: ComputedRef<FormSchema[]>\n  formModel: Recordable\n  defaultValueRef: Ref<Recordable>\n  formElRef: Ref<FormActionType>\n  schemaRef: Ref<FormSchema[]>\n  handleFormValues: Fn\n}\nexport function useFormEvents({\n  emit,\n  getProps,\n  formModel,\n  getSchema,\n  defaultValueRef,\n  formElRef,\n  schemaRef,\n  handleFormValues,\n}: UseFormActionContext) {\n  async function resetFields(): Promise<void> {\n    const { resetFunc, submitOnReset } = unref(getProps)\n    resetFunc && isFunction(resetFunc) && (await resetFunc())\n\n    const formEl = unref(formElRef)\n    if (!formEl) return\n\n    Object.keys(formModel).forEach((key) => {\n      formModel[key] = defaultValueRef.value[key]\n    })\n    clearValidate()\n    emit('reset', toRaw(formModel))\n    submitOnReset && handleSubmit()\n  }\n\n  /**\n   * @description: Set form value\n   */\n  async function setFieldsValue(values: Recordable, useValidate = true): Promise<void> {\n    const fields = unref(getSchema)\n      .map((item) => item.field)\n      .filter(Boolean)\n\n    const validKeys: string[] = []\n    Object.keys(values).forEach((key) => {\n      const schema = unref(getSchema).find((item) => item.field === key)\n      let value = values[key]\n\n      const hasKey = Reflect.has(values, key)\n\n      value = handleInputNumberValue(schema?.component, value)\n      // 0| '' is allow\n      if (hasKey && fields.includes(key)) {\n        // time type\n        if (itemIsDateType(key)) {\n          if (Array.isArray(value)) {\n            // const arr: any[] = []\n            // for (const ele of value) arr.push(ele ? dateUtil(ele) : null)\n            // formModel[key] = arr\n            formModel[key] = value\n          } else {\n            const { componentProps } = schema || {}\n            let _props = componentProps as any\n            if (typeof componentProps === 'function') _props = _props({ formModel })\n\n            formModel[key] = value ? (_props?.valueFormat ? value : dateUtil(value)) : null\n          }\n        } else {\n          formModel[key] = value\n        }\n        validKeys.push(key)\n      }\n    })\n    useValidate &&\n      validateFields(validKeys).catch((_) => {\n        // console.log(_)\n      })\n  }\n  /**\n   * @description: Delete based on field name\n   */\n  async function removeSchemaByFiled(fields: string | string[]): Promise<void> {\n    const schemaList: FormSchema[] = cloneDeep(unref(getSchema))\n    if (!fields) return\n\n    let fieldList: string[] = isString(fields) ? [fields] : fields\n    if (isString(fields)) fieldList = [fields]\n\n    for (const field of fieldList) _removeSchemaByFiled(field, schemaList)\n\n    schemaRef.value = schemaList\n  }\n\n  /**\n   * @description: Delete based on field name\n   */\n  function _removeSchemaByFiled(field: string, schemaList: FormSchema[]): void {\n    if (isString(field)) {\n      const index = schemaList.findIndex((schema) => schema.field === field)\n      if (index !== -1) {\n        delete formModel[field]\n        schemaList.splice(index, 1)\n      }\n    }\n  }\n\n  /**\n   * @description: Insert after a certain field, if not insert the last\n   */\n  async function appendSchemaByField(schema: FormSchema, prefixField?: string, first = false) {\n    const schemaList: FormSchema[] = cloneDeep(unref(getSchema))\n\n    const index = schemaList.findIndex((schema) => schema.field === prefixField)\n\n    if (!prefixField || index === -1 || first) {\n      first ? schemaList.unshift(schema) : schemaList.push(schema)\n      schemaRef.value = schemaList\n      return\n    }\n    if (index !== -1) schemaList.splice(index + 1, 0, schema)\n\n    schemaRef.value = schemaList\n  }\n\n  async function resetSchema(data: Partial<FormSchema> | Partial<FormSchema>[]) {\n    let updateData: Partial<FormSchema>[] = []\n    if (isObject(data)) updateData.push(data as FormSchema)\n\n    if (isArray(data)) updateData = [...data]\n\n    const hasField = updateData.every(\n      (item) =>\n        item.component === 'Divider' ||\n        item.component === 'FormTitle' ||\n        (Reflect.has(item, 'field') && item.field)\n    )\n\n    if (!hasField) {\n      error(\n        'All children of the form Schema array that need to be updated must contain the `field` field'\n      )\n      return\n    }\n    schemaRef.value = updateData as FormSchema[]\n  }\n\n  async function updateSchema(data: Partial<FormSchema> | Partial<FormSchema>[]) {\n    let updateData: Partial<FormSchema>[] = []\n    if (isObject(data)) {\n      updateData.push(data as FormSchema)\n    }\n    if (isArray(data)) {\n      updateData = [...data]\n    }\n\n    const hasField = updateData.every(\n      (item) =>\n        item.component === 'Divider' ||\n        item.component === 'FormTitle' ||\n        (Reflect.has(item, 'field') && item.field)\n    )\n\n    if (!hasField) {\n      error(\n        'All children of the form Schema array that need to be updated must contain the `field` field'\n      )\n      return\n    }\n    const schema: FormSchema[] = unref(getSchema)\n    updateData.forEach((item) => {\n      // debugger\n      const findResult = schema.find((val) => val.field === item.field)\n      if (findResult) {\n        const newSchema: FormSchema = deepMerge(findResult, item)\n        schema.push(newSchema)\n      } else {\n        schema.push(item as FormSchema)\n      }\n      // unref(getSchema).forEach((val) => {\n      //   if (val.field === item.field) {\n      //     const newSchema = deepMerge(val, item);\n      //     schema.push(newSchema as FormSchema);\n      //   } else {\n      //     schema.push(val);\n      //   }\n      // });\n    })\n    schemaRef.value = uniqBy(schema, 'field')\n  }\n\n  // 转换数据，由于InputNumber现在是string类型，需要转换为number\n  function transFormFieldsValue(values: Recordable): Recordable {\n    for (let i = 0; i < unref(getSchema).length; i++) {\n      const item = unref(getSchema)[i]\n      if (item.component === 'InputNumber' && !isNullOrUnDef(values[item.field])) {\n        values[item.field] = Number(values[item.field])\n      }\n    }\n    return values\n  }\n\n  function getFieldsValue(): Recordable {\n    const formEl = unref(formElRef)\n    if (!formEl) return {}\n    const res = handleFormValues(toRaw(unref(formModel)))\n    return transFormFieldsValue(res)\n  }\n\n  /**\n   * @description: Is it time\n   */\n  function itemIsDateType(key: string) {\n    return unref(getSchema).some((item) => {\n      return item.field === key ? dateItemType.includes(item.component as any) : false\n    })\n  }\n\n  async function validateFields(nameList?: NamePath[] | undefined) {\n    return unref(formElRef)?.validateFields(nameList)\n  }\n\n  async function validate(nameList?: NamePath[] | undefined) {\n    // eslint-disable-next-line no-return-await\n    try {\n      const res = await unref(formElRef)?.validate(nameList)\n      return transFormFieldsValue(res)\n    } catch (error) {\n      return Promise.reject(error)\n    }\n  }\n\n  async function clearValidate(name?: string | string[]) {\n    await unref(formElRef)?.clearValidate(name)\n  }\n\n  async function scrollToField(name: NamePath, options?: ScrollOptions | undefined) {\n    await unref(formElRef)?.scrollToField(name, options)\n  }\n\n  /**\n   * @description: Form submission\n   */\n  async function handleSubmit(e?: Event): Promise<void> {\n    e && e.preventDefault()\n    const { submitFunc } = unref(getProps)\n    if (submitFunc && isFunction(submitFunc)) {\n      await submitFunc()\n      return\n    }\n    const formEl = unref(formElRef)\n    if (!formEl) return\n    try {\n      const values = await validate()\n      const res = handleFormValues(values)\n      emit('submit', res)\n    } catch (error: any) {\n      throw new Error(error)\n    }\n  }\n\n  return {\n    handleSubmit,\n    clearValidate,\n    validate,\n    validateFields,\n    getFieldsValue,\n    updateSchema,\n    resetSchema,\n    appendSchemaByField,\n    removeSchemaByFiled,\n    resetFields,\n    setFieldsValue,\n    scrollToField,\n  }\n}\n"],"names":[],"mappings":";;;;;;;;AAOO,SAAS,aAAa,CAAC;AAC9B,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,eAAe;AACjB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,gBAAgB;AAClB,CAAC,EAAE;AACH,EAAE,eAAe,WAAW,GAAG;AAC/B,IAAI,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzD,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,SAAS,EAAE,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO;AACb,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5C,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,KAAK,CAAC,CAAC;AACP,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACpC,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;AACpC,GAAG;AACH,EAAE,eAAe,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE;AAC5D,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9E,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzC,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;AACzE,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/D,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC1C,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;AACjC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACpC,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACnC,WAAW,MAAM;AACjB,YAAY,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;AACpD,YAAY,IAAI,MAAM,GAAG,cAAc,CAAC;AACxC,YAAY,IAAI,OAAO,cAAc,KAAK,UAAU;AACpD,cAAc,MAAM,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7C,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC1F,WAAW;AACX,SAAS,MAAM;AACf,UAAU,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACjC,SAAS;AACT,QAAQ,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,WAAW,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AAC1D,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,mBAAmB,CAAC,MAAM,EAAE;AAC7C,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO;AACb,IAAI,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AACzD,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC;AACxB,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,IAAI,KAAK,MAAM,KAAK,IAAI,SAAS;AACjC,MAAM,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC9C,IAAI,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACjC,GAAG;AACH,EAAE,SAAS,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE;AACnD,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC7E,MAAM,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACxB,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,eAAe,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,GAAG,KAAK,EAAE;AACzE,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE;AAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;AACpB,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,IAAI,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACjC,GAAG;AACH,EAAE,eAAe,WAAW,CAAC,IAAI,EAAE;AACnC,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACtB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5J,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,KAAK,CAAC,8FAA8F,CAAC,CAAC;AAC5G,MAAM,OAAO;AACb,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACjC,GAAG;AACH,EAAE,eAAe,YAAY,CAAC,IAAI,EAAE;AACpC,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AACxB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5J,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,KAAK,CAAC,8FAA8F,CAAC,CAAC;AAC5G,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AACxE,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACtD,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAClF,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,SAAS,cAAc,GAAG;AAC5B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO,EAAE,CAAC;AAChB,IAAI,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,SAAS,cAAc,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AAC3C,MAAM,OAAO,IAAI,CAAC,KAAK,KAAK,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;AAChF,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,cAAc,CAAC,QAAQ,EAAE;AAC1C,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,eAAe,QAAQ,CAAC,QAAQ,EAAE;AACpC,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7D,MAAM,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACvC,KAAK,CAAC,OAAO,MAAM,EAAE;AACrB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,eAAe,aAAa,CAAC,IAAI,EAAE;AACrC,IAAI,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,eAAe,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9C,IAAI,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,eAAe,YAAY,CAAC,CAAC,EAAE;AACjC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AAC5B,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3C,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AAC9C,MAAM,MAAM,UAAU,EAAE,CAAC;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,OAAO;AACb,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;AACtC,MAAM,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC1B,KAAK,CAAC,OAAO,MAAM,EAAE;AACrB,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,OAAO;AACT,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,QAAQ;AACZ,IAAI,cAAc;AAClB,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,WAAW;AACf,IAAI,cAAc;AAClB,IAAI,aAAa;AACjB,GAAG,CAAC;AACJ;;;;"}