element-plus
Version:
A Component Library for Vue 3
1 lines • 50.2 kB
Source Map (JSON)
{"version":3,"file":"picker2.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n role=\"dialog\"\n teleported\n :transition=\"`${nsDate.namespace.value}-zoom-in-top`\"\n :popper-class=\"[`${nsDate.namespace.value}-picker__popper`, popperClass]\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @before-show=\"onBeforeShow\"\n @show=\"onShow\"\n @hide=\"onHide\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n container-role=\"combobox\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n :class=\"[nsDate.b('editor'), nsDate.bm('editor', type), $attrs.class]\"\n :style=\"$attrs.style\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n :label=\"label\"\n :tabindex=\"tabindex\"\n @input=\"onUserInput\"\n @focus=\"handleFocusInput\"\n @blur=\"handleBlurInput\"\n @keydown=\"handleKeydownInput\"\n @change=\"handleChange\"\n @mousedown=\"onMouseDownInput\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @touchstart=\"onTouchStartInput\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n :class=\"nsInput.e('icon')\"\n @mousedown=\"onMouseDownInput\"\n @touchstart=\"onTouchStartInput\"\n >\n <component :is=\"triggerIcon\" />\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n :class=\"`${nsInput.e('icon')} clear-icon`\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n :class=\"[\n nsDate.b('editor'),\n nsDate.bm('editor', type),\n nsInput.e('wrapper'),\n nsDate.is('disabled', pickerDisabled),\n nsDate.is('active', pickerVisible),\n nsRange.b('editor'),\n pickerSize ? nsRange.bm('editor', pickerSize) : '',\n $attrs.class,\n ]\"\n :style=\"$attrs.style\"\n @click=\"handleFocusInput\"\n @mousedown=\"onMouseDownInput\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @touchstart=\"onTouchStartInput\"\n @keydown=\"handleKeydownInput\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n @mousedown=\"onMouseDownInput\"\n @touchstart=\"onTouchStartInput\"\n >\n <component :is=\"triggerIcon\" />\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n :class=\"nsRange.b('input')\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocusInput\"\n @blur=\"handleBlurInput\"\n />\n <slot name=\"range-separator\">\n <span :class=\"nsRange.b('separator')\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n :class=\"nsRange.b('input')\"\n @focus=\"handleFocusInput\"\n @blur=\"handleBlurInput\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsRange.e('close-icon'),\n {\n [nsRange.e('close-icon--hidden')]: !showClose,\n },\n ]\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @panel-change=\"onPanelChange\"\n @keydown=\"onKeydownPopperContent\"\n @mousedown.stop\n />\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n provide,\n ref,\n unref,\n watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport { isEqual } from 'lodash-unified'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useNamespace, useSize } from '@element-plus/hooks'\nimport { formContextKey, formItemContextKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { debugWarn, isEmpty } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { Calendar, Clock } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { FormContext, FormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydownInput: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n handleFocusPicker?: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = Array.isArray(a)\n const bIsArray = Array.isArray(b)\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: string | number | Date,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (\n date: string | number | Date,\n format: string,\n lang: string\n) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: [\n 'update:modelValue',\n 'change',\n 'focus',\n 'blur',\n 'calendar-change',\n 'panel-change',\n 'visible-change',\n 'keydown',\n ],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const nsDate = useNamespace('date')\n const nsInput = useNamespace('input')\n const nsRange = useNamespace('range')\n\n const elForm = inject(formContextKey, {} as FormContext)\n const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n let hasJustTabExitedInput = false\n let ignoreFocusEvent = false\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent &&\n elFormItem.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const emitKeydown = (e) => {\n ctx.emit('keydown', e)\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n\n const onPick = (date: any = '', visible = false) => {\n if (!visible) {\n focus(true, true)\n }\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const onBeforeShow = () => {\n pickerActualVisible.value = true\n }\n\n const onShow = () => {\n ctx.emit('visible-change', true)\n }\n\n const onKeydownPopperContent = (event: KeyboardEvent) => {\n if ((event as KeyboardEvent)?.key === EVENT_CODE.esc) {\n focus(true, true)\n }\n }\n\n const onHide = () => {\n pickerActualVisible.value = false\n ignoreFocusEvent = false\n ctx.emit('visible-change', false)\n }\n\n const focus = (focusStartInput = true, isIgnoreFocusEvent = false) => {\n ignoreFocusEvent = isIgnoreFocusEvent\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocusInput = (e) => {\n if (\n props.readonly ||\n pickerDisabled.value ||\n pickerVisible.value ||\n ignoreFocusEvent\n ) {\n return\n }\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n let currentHandleBlurDeferCallback: () => void | undefined\n\n // Check if document.activeElement is inside popper or any input before popper close\n const handleBlurInput = (e) => {\n const handleBlurDefer = async () => {\n setTimeout(() => {\n if (currentHandleBlurDeferCallback === handleBlurDefer) {\n if (\n !(\n refPopper.value?.isFocusInsideContent() &&\n !hasJustTabExitedInput\n ) &&\n refInput.value.filter((input) => {\n return input.contains(document.activeElement)\n }).length === 0\n ) {\n handleChange()\n pickerVisible.value = false\n ctx.emit('blur', e)\n props.validateEvent &&\n elFormItem.validate?.('blur').catch((err) => debugWarn(err))\n }\n hasJustTabExitedInput = false\n }\n }, 0)\n }\n currentHandleBlurDeferCallback = handleBlurDefer\n handleBlurDefer()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n focus(true, true)\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseDownInput = () => {\n pickerVisible.value = true\n }\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const onTouchStartInput = () => {\n pickerVisible.value = true\n }\n const isRangeInput = computed(() => {\n return props.type.includes('range')\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydownInput = async (event) => {\n const code = event.code\n emitKeydown(event)\n if (code === EVENT_CODE.esc) {\n if (pickerVisible.value === true) {\n pickerVisible.value = false\n event.preventDefault()\n event.stopPropagation()\n }\n return\n }\n\n if (code === EVENT_CODE.down) {\n if (pickerOptions.value.handleFocusPicker) {\n event.preventDefault()\n event.stopPropagation()\n }\n if (pickerVisible.value === false) {\n pickerVisible.value = true\n await nextTick()\n }\n if (pickerOptions.value.handleFocusPicker) {\n pickerOptions.value.handleFocusPicker()\n return\n }\n }\n\n if (code === EVENT_CODE.tab) {\n hasJustTabExitedInput = true\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n if (pickerOptions.value.handleKeydownInput) {\n pickerOptions.value.handleKeydownInput(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n const onPanelChange = (value, mode, view) => {\n ctx.emit('panel-change', value, mode, view)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n nsDate,\n nsInput,\n nsRange,\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydownInput,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseDownInput,\n onMouseLeave,\n onMouseEnter,\n onTouchStartInput,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocusInput,\n handleBlurInput,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n onPanelChange,\n focus,\n onShow,\n onBeforeShow,\n onHide,\n onKeydownPopperContent,\n }\n },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createBlock","_mergeProps","_withCtx","_normalizeClass","_normalizeStyle","_withModifiers","_resolveDynamicComponent","_createCommentVNode","_createElementBlock","_createElementVNode","_renderSlot","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8MA,MAAM,UAAA,GAAa,SAAU,CAAA,EAAe,CAAe,EAAA;AACzD,EAAA,MAAM,UAAU,CAAa,YAAA,IAAA,CAAA;AAC7B,EAAA,MAAM,UAAU,CAAa,YAAA,IAAA,CAAA;AAC7B,EAAA,IAAI,WAAW,OAAS,EAAA;AACtB,IAAA,OAAO,CAAE,CAAA,OAAA,EAAc,KAAA,CAAA,CAAE,OAAQ,EAAA,CAAA;AAAA,GACnC;AACA,EAAI,IAAA,CAAC,OAAW,IAAA,CAAC,OAAS,EAAA;AACxB,IAAA,OAAO,CAAM,KAAA,CAAA,CAAA;AAAA,GACf;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,MAAM,WAAA,GAAc,SAAU,CAAA,EAAsB,CAAsB,EAAA;AACxE,EAAM,MAAA,QAAA,GAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAChC,EAAM,MAAA,QAAA,GAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAChC,EAAA,IAAI,YAAY,QAAU,EAAA;AACxB,IAAI,IAAA,CAAA,CAAE,MAAW,KAAA,CAAA,CAAE,MAAQ,EAAA;AACzB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AACA,IAAQ,OAAA,CAAA,CAAkB,MAAM,CAAC,IAAA,EAAM,UAAU,UAAW,CAAA,IAAA,EAAM,CAAE,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAAA,GAC7E;AACA,EAAI,IAAA,CAAC,QAAY,IAAA,CAAC,QAAU,EAAA;AAC1B,IAAO,OAAA,UAAA,CAAW,GAAG,CAAC,CAAA,CAAA;AAAA,GACxB;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,MAAM,MAAS,GAAA,SACb,IACA,EAAA,MAAA,EACA,IACO,EAAA;AACP,EAAA,MAAM,MACJ,OAAQ,CAAA,MAAM,CAAK,IAAA,MAAA,KAAW,MAC1B,KAAM,CAAA,IAAI,CAAE,CAAA,MAAA,CAAO,IAAI,CACvB,GAAA,KAAA,CAAM,MAAM,MAAM,CAAA,CAAE,OAAO,IAAI,CAAA,CAAA;AACrC,EAAO,OAAA,GAAA,CAAI,OAAQ,EAAA,GAAI,GAAM,GAAA,KAAA,CAAA,CAAA;AAC/B,CAAA,CAAA;AAEA,MAAM,SAAY,GAAA,SAChB,IACA,EAAA,MAAA,EACA,IACA,EAAA;AACA,EAAA,IAAI,QAAQ,MAAM,CAAA;AAAG,IAAO,OAAA,IAAA,CAAA;AAC5B,EAAA,IAAI,MAAW,KAAA,GAAA;AAAK,IAAA,OAAO,CAAC,IAAA,CAAA;AAC5B,EAAA,OAAO,MAAM,IAAI,CAAA,CAAE,OAAO,IAAI,CAAA,CAAE,OAAO,MAAM,CAAA,CAAA;AAC/C,CAAA,CAAA;AAEA,MAAK,YAAa,eAAa,CAAA;AAAA,EAC7B,IAAM,EAAA,QAAA;AAAA,EACN,UAAY,EAAA;AAAA,IACV,OAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,GACF;AAAA,EACA,KAAO,EAAA,sBAAA;AAAA,EACP,KAAO,EAAA;AAAA,IACL,mBAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,GACF;AAAA,EACA,KAAA,CAAM,OAAO,GAAK,EAAA;AAChB,IAAM,MAAA,EAAE,SAAS,SAAU,EAAA,CAAA;AAE3B,IAAM,MAAA,MAAA,GAAS,aAAa,MAAM,CAAA,CAAA;AAClC,IAAM,MAAA,OAAA,GAAU,aAAa,OAAO,CAAA,CAAA;AACpC,IAAM,MAAA,OAAA,GAAU,aAAa,OAAO,CAAA,CAAA;AAEpC,IAAA,MAAM,MAAS,GAAA,MAAA,CAAO,cAAgB,EAAA,EAAiB,CAAA,CAAA;AACvD,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,kBAAoB,EAAA,EAAqB,CAAA,CAAA;AACnE,IAAA,MAAM,eAAkB,GAAA,MAAA,CAAO,iBAAmB,EAAA,EAAa,CAAA,CAAA;AAE/D,IAAA,MAAM,YAAY,GAAoC,EAAA,CAAA;AACtD,IAAA,MAAM,WAAW,GAA2C,EAAA,CAAA;AAC5D,IAAM,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA,CAAA;AAC/B,IAAM,MAAA,mBAAA,GAAsB,IAAI,KAAK,CAAA,CAAA;AACrC,IAAM,MAAA,WAAA,GAAc,IAAI,IAAI,CAAA,CAAA;AAE5B,IAAA,IAAI,qBAAwB,GAAA,KAAA,CAAA;AAC5B,IAAA,IAAI,gBAAmB,GAAA,KAAA,CAAA;AAEvB,IAAM,KAAA,CAAA,aAAA,EAAe,CAAC,GAAQ,KAAA;AAC5B,MAAA,IAAI,CAAC,GAAK,EAAA;AACR,QAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,QAAA,QAAA,CAAS,MAAM;AACb,UAAA,UAAA,CAAW,MAAM,UAAU,CAAA,CAAA;AAAA,SAC5B,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAA,WAAA,CAAY,QAAQ,KAAM,CAAA,UAAA,CAAA;AAAA,OAC5B;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,UAAA,GAAa,CAAC,GAAA,EAAK,OAAsB,KAAA;AAE7C,MAAA,IAAI;AACF,MAAI,IAAA,OAAK,gBAAa,CAAA,GAAA,EAAA,WAAA,CAAA,KAAA,CAAA,EAAA;AACtB,QAAM,GAAA,CAAA,IAAA,CAAA,QAAA,EAAA,GAAA,CACJ,CAAW;AAAkD,QACjE,KAAA,CAAA,aAAA,KAAA,CAAA,EAAA,GAAA,UAAA,CAAA,QAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAAA,QAAA,CAAA,CAAA,KAAA,CAAA,CAAA,GAAA,KAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,OACF;AACA,KAAM,CAAA;AACJ,IAAA,MAAI,SAAC,GAAA,CAAY,GAAM,KAAA;AACrB,MAAI,IAAA,CAAA,WAAA,CAAA,KAAA,CAAA,UAAA,EAAA,GAAA,CAAA,EAAA;AACJ,QAAI,IAAA,WAAc,CAAA;AAChB,QAAc,IAAA,KAAA,CAAA,OAAA,CAAA,GAAQ,CAAA,EAAA;AAEtB,qBACc,GAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,SAAA,CAAA,CAAA,EAAA,KAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACd,SAAA,MAAA,IAAA,GAAA,EAAc;AAA4C,UAC5D,WAAA,GAAA,SAAA,CAAA,GAAA,EAAA,KAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AACA,SAAA;AAAiE,QACnE,GAAA,CAAA,IAAA,CAAA,mBAAA,EAAA,GAAA,GAAA,WAAA,GAAA,GAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OACF;AACA,KAAM,CAAA;AACJ,IAAI,MAAA,gBAAgB,KAAC;AAAA,MACvB,GAAA,CAAA,IAAA,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;AACA,KAAM,CAAA;AACJ,IAAA,MAAI,WAAgB,QAAA,CAAA,MAAA;AAClB,MAAA,IAAA,SAAW,KAAa,EAAA;AAGxB,QAAA,MAAA,EAAa,GAAA,YAA0B,CAAA,KAAA,GAAA,cAAyB,GAAA,QAAA,CAAA,KAAA,CAAA,GAAA,CAAA;AAAA,QAClE,OAAA,KAAA,CAAA,IAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,CAAA,CAAA;AACA,OAAA;AAAQ,MACT,OAAA,EAAA,CAAA;AACD,KAAM,CAAA,CAAA;AACJ,IAAA,MAAA,aAAiB,GAAM,QAAA,CAAA,MAAA;AAAA,MACxB,OAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AACD,KAAM,CAAA,CAAA;AACJ,IAAA,MAAA,cAAuB,QAAA,CAAA,MAAA;AAAA,MACxB,OAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAED,KAAA,CAAA,CAAA;AACE,IAAA,MAAA,iBAAyB,GAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,KAAA;AACzB,MAAA,MAAa,OAAA,GAAA,QAAA,CAAA,KAAA,CAAA;AAAQ,MAAA,IAAA,CAAA,OAAA,CAAA,MAAA;AACrB,QAAI,OAAQ;AACV,MAAQ,IAAA,CAAA,GAAA,IAAA,GAAqB,KAAA,KAAA,EAAA;AAC7B,QAAA,OAAA,CAAQ,GAAG,iBAAM,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;AAAA,QACnB,OAAA,CAAA,CAAW,SAAe,CAAA;AACxB,OAAQ,MAAA,IAAA,GAAqB,KAAA,KAAA,EAAA;AAC7B,QAAA,OAAA,CAAQ,GAAG,iBAAM,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;AAAA,QACnB,OAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA;AAAA,OACF;AAEA,KAAA,CAAA;AACE,IAAA,MAAI,MAAU,GAAA,CAAA,IAAA,GAAA,EAAA,EAAA,OAAA,GAAA,KAAA,KAAA;AACZ,MAAA,IAAA,CAAA,SAAY;AAAI,QAClB,KAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AACA,OAAA;AACA,MAAI,aAAA,CAAA,KAAA,GAAA,OAAA,CAAA;AACJ,MAAI,IAAA,MAAM,CAAQ;AAChB,MAAA,IAAA,KAAA,CAAA,OAAkB,CAAA,IAAO,CAAA,EAAA;AAAU,QAC9B,MAAA,GAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AAEL,OAAS,MAAA;AAAuB,QAClC,MAAA,GAAA,IAAA,GAAA,IAAA,CAAA,MAAA,EAAA,GAAA,IAAA,CAAA;AACA,OAAA;AACA,MAAA,SAAA,CAAU,KAAM,GAAA,IAAA,CAAA;AAAA,MAClB,SAAA,CAAA,MAAA,CAAA,CAAA;AAEA,KAAA,CAAA;AACE,IAAA,MAAA,YAAA,GAAA,MAA4B;AAAA,MAC9B,mBAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAEA,KAAA,CAAA;AACE,IAAI,MAAA;AAA2B,MACjC,GAAA,CAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAEA,KAAM,CAAA;AACJ,IAAK,MAAA,sBAAiC,GAAA,CAAW,KAAK,KAAA;AACpD,MAAA,IAAA,CAAA,SAAY,IAAI,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAA,UAAA,CAAA,GAAA,EAAA;AAAA,QAClB,KAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAAA,OACF;AAEA,KAAA,CAAA;AACE,IAAA,MAAA,MAAA,GAAA,MAAA;AACA,MAAmB,mBAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AACnB,MAAI;AAA4B,MAClC,GAAA,CAAA,IAAA,CAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAEA,KAAA,CAAA;AACE,IAAmB,MAAA,KAAA,GAAA,CAAA,eAAA,GAAA,IAAA,EAAA,kBAAA,GAAA,KAAA,KAAA;AACnB,MAAA,gBAA0B,GAAA,kBAAA,CAAA;AAC1B,MAAI,IAAA,KAAoB,GAAA,aAAA,CAAA,KAAA,CAAA;AACtB,MAAA,IAAA,CAAA,eAAoB,IAAA,YAAA,CAAA,KAAA,EAAA;AAAA,QACtB,KAAA,GAAA,WAAA,CAAA,KAAA,CAAA;AACA,OAAA;AACE,MAAA,IAAA,KAAY,EAAA;AAAA,QACd,KAAA,CAAA,KAAA,EAAA,CAAA;AAAA,OACF;AAEA,KAAM,CAAA;AACJ,IAAA,MACE,gBACA,GAAA,CAAA,CAAA,KAAA;AAIA,MAAA,IAAA,KAAA,CAAA,QAAA,IAAA,cAAA,CAAA,KAAA,IAAA,aAAA,CAAA,KAAA,IAAA,gBAAA,EAAA;AAAA,QACF,OAAA;AACA,OAAA;AACA,MAAI,mBAAe,GAAA,IAAA,CAAA;AAAA,MACrB,GAAA,CAAA,IAAA,CAAA,OAAA,EAAA,CAAA,CAAA,CAAA;AAEA,KAAI,CAAA;AAGJ,IAAM,IAAA,8BAAyB,CAAA;AAC7B,IAAA,MAAA,oBAAwB,KAAY;AAClC,MAAA,MAAA,eAAiB,GAAA,YAAA;AACf,QAAA;AACE,UACE,IAAA,EAAA,EACY,EAAA,CAAA;AAIV,UAAO,IAAA,8BAAe,KAAsB,eAAA,EAAA;AAAA,YAC9C,IAAG,EAAA,CAAA,CAAA,EAAA,GAAA,SACH,CAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,oBAAA,EAAA,KAAA,CAAA,qBAAA,CAAA,IAAA,QAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,KAAA,KAAA;AACA,cAAa,OAAA,KAAA,CAAA,QAAA,CAAA,QAAA,CAAA,aAAA,CAAA,CAAA;AACb,aAAA,CAAA,CAAA,MAAA,KAAA,CAAA,EAAsB;AACtB,cAAI;AACJ,cAAM,aAAA,CAAA,KAAA,GAAA,KACO,CAAA;AAAgD,cAC/D,GAAA,CAAA,IAAA,CAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AACA,cAAwB,KAAA,CAAA,aAAA,KAAA,CAAA,EAAA,GAAA,UAAA,CAAA,QAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA,KAAA,CAAA,CAAA,GAAA,KAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,aAC1B;AAAA,YACE,qBAAA,GAAA,KAAA,CAAA;AAAA,WACN;AACA,SAAiC,EAAA,CAAA,CAAA,CAAA;AACjC,OAAgB,CAAA;AAAA,MAClB,8BAAA,GAAA,eAAA,CAAA;AAEA,MAAM,eAAA,EAAA,CAAA;AACJ,KAAO,CAAA;AAAyB,IAClC,MAAC,cAAA,GAAA,QAAA,CAAA,MAAA;AAED,MAAM,OAAA,KAAA,CAAA,kBAA6B,CAAA,QAAA,CAAA;AACjC,KAAI,CAAA,CAAA;AACJ,IAAA,MAAI,cAAoB,QAAA,CAAA,MAAA;AACtB,MAAI,IAAA,MAAA,CAAA;AACF,MAAS,IAAA,YAAA,CAAA,KAAA,EAAA;AAAoC,QAC/C,IAAA,aAAA,CAAA,KAAA,CAAA,eAAA,EAAA;AAAA,UACK,MAAA,GAAA,aAAA,CAAA,KAAA,CAAA,eAAA,EAAA,CAAA;AACL,SAAA;AACE,OAAS,MAAA;AAET,QACF,IAAO,KAAA,CAAA,OAAA,CAAA,KAAA,CAAA,UAAA,CAAA,EAAA;AACL,UAAA,MAAA,GAAS,gBAAa,CAAA,GAAA,CAAA,CAAA,CAAA,KAAkB,MAAA,CAAA,CAAA,EAAA,KAAA,CAAa,WAAU,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,SACjE,MAAA;AAAA,UACF,MAAA,GAAA,MAAA,CAAA,KAAA,CAAA,UAAA,EAAA,KAAA,CAAA,WAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAEA,SAAI;AACF,OAAA;AAEA,MAAA,IAAA,aAA8B,CAAA,KAAA,CAAA,qBAAS,EAAA;AACrC,QAAS,MAAA,eAAA,GAAA,aAAA,CAAA,KAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,CAAA;AACT,QAAA,IAAA,CAAA,OACE,CAAM,eAAc,EAAA,MAChB;AAEN,UACF,MAAA,GAAA,eAAA,CAAA;AAAA,UACF,SAAA,CAAA,KAAA,CAAA,OAAA,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,CAAA,GAAA,MAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AACA,SAAI;AACF,OAAA;AAAU,MACZ,IAAA,KAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA;AACA,QAAO,MAAA,GAAA,EAAA,CAAA;AAAA,OACR;AAED,MAAM,OAAA,MAAA,CAAA;AACJ,KAAI,CAAA,CAAA;AAAiC,IAAA,MAAA,YAAA,GAAA,QAAA,CAAA,MAAA;AACrC,MAAM,IAAA,CAAA,aAAA,CAAA,KAAqC,CAAA,UAAA;AAC3C,QAAA,OAAU;AACR,MAAO,MAAA,cAAA,GAAA,mBAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;AAAA,MAAA,IACL,KAAU,CAAA,OAAA,CAAA,SAAa,CAAA,KAAA,CAAA,EAAA;AAAwC,QAAA,OACrD;AAAqD,UACjE,SAAA,CAAA,KAAA,CAAA,CAAA,CAAA,IAAA,cAAA,IAAA,cAAA,CAAA,CAAA,CAAA,IAAA,EAAA;AAAA,UACF,SAAqB,CAAA,KAAA,CAAA,CAAA,CAAA,IAAA,cAAgB,IAAA,cAAA,CAAA,CAAA,CAAA,IAAA,EAAA;AACnC,SAAA,CAAA;AAAiB,OACnB,MAAA,IAAA,SAAA,CAAA,KAAA,KAAA,IAAA,EAAA;AACA,QAAI,OAAc,SAAA,CAAA,KAAA,CAAA;AAA6B,OAAA;AAC/C,MAAI,IAAA,CAAC,YAAc,CAAA,KAAA,IAAA,YAAsB,CAAA,KAAA;AAAO,QAAA,OAAA;AAChD,MAAA,IAAI,CAAgB,aAAA,CAAA,KAAA,IAAA,YAAA,CAAA,KAAA;AAClB,QAAA,OAAO;AAEH,MACN,IAAA,cAAA,EAAA;AACA,QAAO,OAAA,aAAA,CAAA,KAAA,GAAA,cAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,cAAA,CAAA;AAAA,OACR;AAED,MAAA;AAEA,KAAA,CAAA,CAAA;AAEA,IAAA,MAAM,gBAAgB,GAAA,QAAe,CAAA,MAAA,mBAAsB,CAAA,MAAA,CAAA,CAAA,CAAA;AAE3D,IAAM,MAAA,YAAA,WACJ,CAAM,MAAA,KAAM,gBAAgC,CAAA,MAAA,CAAA,CAAA,CAAA;AAG9C,IAAM,MAAA,gBAAgB,QAAK,CAAA,MAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,CAAA;AAE3B,IAAM,MAAA,WAAA,GAAA,QAA8B,CAAA,MAAA,KAAA,CAAA,UAAA,KAAA,gBAAA,CAAA,KAAA,GAAA,KAAA,GAAA,QAAA,CAAA,CAAA,CAAA;AAClC,IAAI,MAAA,qBAAiC,CAAA,CAAA;AAAO,IAAA,MAAA,gBAAA,GAAA,CAAA,KAAA,KAAA;AAC5C,MAAA,IAAI,cAAiB,IAAA,cAAA,CAAA,KAAA;AACnB,QAAA,OAAsB;AACtB,MAAA,IAAA,UAAY,KAAI,EAAA;AAChB,QAAA,KAAA,CAAA,eAAc,EAAA,CAAA;AACd,QAAA,KAAA,CAAA,IAAA,OAAiB,CAAI;AACrB,QAAA,SAAA,CAAU,IAAQ,CAAA,CAAA;AAClB,QAAA,UAAA,CAAA,IAAsB,EAAA,IAAA,CAAA,CAAA;AACtB,QAAA,SAAA,CAAA,KAAoB,GAAA,KAAA,CAAA;AAA+C,QACrE,aAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAA,QACF,aAAA,CAAA,KAAA,CAAA,WAAA,IAAA,aAAA,CAAA,KAAA,CAAA,WAAA,EAAA,CAAA;AACA,OAAM;AACJ,KACE,CAAA;AACsD,IAE1D,MAAC,YAAA,GAAA,QAAA,CAAA,MAAA;AACD,MAAA,wBAA+B,IAAA,KAAA,CAAA,OAAA,CAAA,KAAA,CAAA,UAAA,CAAA,IAAA,CAAA,KAAA,CAAA,UAAA,CAAA,MAAA,CAAA;AAC7B,KAAA,CAAA,CAAA;AAAsB,IACxB,MAAA,gBAAA,GAAA,MAAA;AACA,MAAA,mBAAqB,GAAM,IAAA,CAAA;AACzB,KAAI,CAAA;AAAwC,IAAA,MAAA,YAAA,GAAA,MAAA;AAC5C,MAAA,IAAI,KAAC,CAAA,QAAa,IAAS,cAAiB,CAAA,KAAA;AAC1C,QAAA,OAAA;AAAkB,MACpB,IAAA,CAAA,YAAA,CAAA,KAAA,IAAA,KAAA,CAAA,SAAA,EAAA;AAAA,QACF,SAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AACA,OAAA;AACE,KAAA,CAAA;AAAkB,IACpB,MAAA,YAAA,GAAA,MAAA;AACA,MAAA,wBAA0B;AACxB,KAAA,CAAA;AAAsB,IACxB,MAAA,iBAAA,GAAA,MAAA;AACA,MAAM,aAAA,CAAA,KAAe;AACnB,KAAO,CAAA;AAA2B,IACpC,MAAC,YAAA,GAAA,QAAA,CAAA,MAAA;AAED,MAAA,iBAAmB,CAAQ,QAAA,CAAA,OAAA,CAAA,CAAA;AAE3B,KAAM,CAAA,CAAA;AACJ,IAAO,MAAA,UAAA,GAAU,OAAO,EAAW,CAAA;AAAA,IACrC,MAAC,aAAA,GAAA,QAAA,CAAA,MAAA;AAED,MAAA,IAAM;AACN,MAAM,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,eAAgC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,CAAA;AACpC,KAAI,CAAA,CAAA;AACF,IAAA,MAAA,WAAa,QAAQ,CAAA,MAAA;AAAA,MACvB,IAAA,EAAA,EAAA,EAAA,CAAA;AAEA,MAAQ,OAAA,CAAA,EAAA,GAAM,WAAuC,CAAA,SAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,CAAA;AAAA,KACtD,CAAA,CAAA;AAED,IAAe,MAAA,cAAA,GAAA,QAAgB,CAAC,MAAoB;AAClD,MAAM,IAAA,EAAA,CAAA;AACN,MAAM,IAAA,KAAA,CAAA,YAAgB,CAAc,EAAA;AACpC,QAAA,qBAEK,CAAE,CAAA;AAKL,OAAA;AACF,MAAA,OAAA,CAAA,EAAA,GAAA,KAAsB,CAAA,QAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,CAAA;AAAA,KACvB,CAAA,CAAA;AAED,IAAM,cAAA,CAAA,cAAoB,EAAA,CAAA,CAAA,KAAA;AAE1B,MAAA,qBAA2B,GAAA,KAAA,CAAA,QAAA,CAAA,CAAA;AACzB,MAAA,gBAAqB,KAAA,CAAA,cAAA,CAAA,CAAA;AACnB,MAAM,IAAA,eAA8B,KAAA,CAAA,CAAA,MAAA,KAAA,eAAkB,IAAA,CAAA,CAAA,YAAA,EAAA,CAAA,QAAA,CAAA,eAAA,CAAA,CAAA,IAAA,CAAA,CAAA,MAAA,KAAA,OAAA,IAAA,CAAA,CAAA,YAAA,EAAA,CAAA,QAAA,CAAA,OAAA,CAAA;AACtD,QAAA,OAAW;AACT,MAAI,aAAA,CAAA,KAAA,QAAqB,CAAA;AACvB,KAAA,CAAA,CAAA;AAKA,IAAA,MAAA,SAAA,GAAU,GAAQ,CAAA,IAAA,CAAA,CAAA;AAAA,IACpB,MAAA,YAAA,GAAA,MAAA;AAAA,MACF,IAAA,SAAA,CAAA,KAAA,EAAA;AAAA,QACF,MAAA,KAAA,GAAA,qBAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AACA,QAAI,IAAA,KAAA,EAAA;AACF,UAAA,IAAA,YAAc,CAAA,KAAA,CAAA,EAAA;AACd,YAAA,SAAe,CAAA,KAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,CAAA,GAAA,KAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AACf,YAAA,SAAkB,CAAA,KAAA,GAAA,IAAA,CAAA;AAAA,WACpB;AAAA,SACF;AAEA,OAAM;AACJ,MAAA,IAAI,SAAC,CAAA,KAAA,KAAA,EAAA,EAAA;AAAO,QAAO,SAAA,CAAA,IAAA,CAAA,CAAA;AACnB,QAAO,UAAA,CAAA,IAAA,CAAA,CAAA;AAAwC,QACjD,SAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAEA,OAAM;AACJ,KAAA,CAAA;AAAY,IAAO,MAAA,qBAAA,GAAA,CAAA,KAAA,KAAA;AACnB,MAAO,IAAA,CAAA,KAAA;AAAwC,QACjD,OAAA,IAAA,CAAA;AAEA,MAAM,OAAA,aAAgB,CAAU,KAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA;AAC9B,KAAO,CAAA;AAAsC,IAC/C,MAAA,mBAAA,GAAA,CAAA,KAAA,KAAA;AAEA,MAAM,IAAA,CAAA,KAAA;AACJ,QAAA,WAAa,CAAM;AACnB,MAAA,OAAA,aAAiB,CAAA,KAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA;AACjB,KAAI,CAAA;AACF,IAAI,MAAA,YAAA,GAAA,CAAc,UAAU;AAC1B,MAAA,OAAA,aAAsB,CAAA,KAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AACA,IAAA,MAAA,kBAAsB,GAAA,OAAA,KAAA,KAAA;AAAA,MACxB,MAAA,IAAA,GAAA,KAAA,CAAA,IAAA,CAAA;AACA,MAAA,WAAA,CAAA,KAAA,CAAA,CAAA;AAAA,MACF,IAAA,IAAA,KAAA,UAAA,CAAA,GAAA,EAAA;AAEA,QAAI,IAAA,mBAA0B,KAAA,IAAA,EAAA;AAC5B,UAAI,aAAA,CAAA,QAAoB,KAAmB,CAAA;AACzC,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,UAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAAA,SACxB;AACA,QAAI,OAAA;AACF,OAAA;AACA,MAAA,IAAA,IAAA,KAAe,UAAA,CAAA,IAAA,EAAA;AAAA,QACjB,IAAA,aAAA,CAAA,KAAA,CAAA,iBAAA,EAAA;AACA,UAAI,KAAA,CAAA,gBAAoB,CAAmB;AACzC,UAAA,KAAA,CAAA,eAAsC,EAAA,CAAA;AACtC,SAAA;AAAA,QACF,IAAA,aAAA,CAAA,KAAA,KAAA,KAAA,EAAA;AAAA,UACF,aAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAEA,UAAI,MAAA;AACF,SAAwB;AACxB,QAAA,IAAA,aAAA,CAAA,KAAA,CAAA,iBAAA,EAAA;AAAA,UACF,aAAA,CAAA,KAAA,CAAA,iBAAA,EAAA,CAAA;AAEA,UAAI,OAAS;AACX,SACE;AAIA,OAAa;AACb,MAAA,IAAA,IAAA,KAAA,UAAsB,CAAA,GAAA,EAAA;AAAA,QACxB,qBAAA,GAAA,IAAA,CAAA;AACA,QAAA,OAAsB;AACtB,OAAA;AAAA,MACF,IAAA,IAAA,KAAA,UAAA,CAAA,KAAA,IAAA,IAAA,KAAA,UAAA,CAAA,WAAA,EAAA;AAGA,QAAA,aAAqB,CAAA,KAAA,KAAA,IAAA,IAAA,SAAA,CAAA,KAAA,KAAA,EAAA,IAAA,YAAA,CAAA,qBAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA,EAAA;AACnB,UAAA,YAAsB,EAAA,CAAA;AACtB,UAAA,aAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAA,SACF;AACA,QAAI,KAAA,CAAA,iBAAwC,CAAA;AAC1C,QAAc,OAAA;AAA8B,OAC9C;AAAA,MACF,IAAA,SAAA,CAAA,KAAA,EAAA;AACA,QAAM,KAAA,CAAA,eAAqB,EAAA,CAAA;AACzB,QAAA,OAAA;AAAkB,OACpB;AAEA,MAAM,IAAA,aAAA,CAAA,KAAmB,CAAC,kBAAU,EAAA;AAClC,QAAA,aAAqB,CAAA,KAAA,CAAA,kBAAA,CAAA,KAAA,CAAA,CAAA;AACnB,OAAA;AAAyD,KAAA,CAC3D;AACE,IAAA,MAAA,WAAkB,GAAA,CAAA,CAAA,KAAO;AAAkB,MAC7C,SAAA,CAAA,KAAA,GAAA,CAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,gBAAA,GAA4B,CAAA,KAAA,KAAA;AAChC,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,SAAA,CAAU,QAAQ,CAAC,KAAA,CAAA,YAAoB,EAAA,eAAkB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAA,SAAA,CAAU,KAAQ,GAAA,CAAC,KAAM,CAAA,MAAM,QAAY,IAAA,CAAA,CAAA;AAAA,OAC7C;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,uBAA0B,KAAA;AAC9B,MAAA,IAAA,UAAc,KAAsB,EAAA;AACpC,QAAI,SAAA,CAAA,KAAe,GAAA,CAAA,SAAW,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;AAC5B,OAAA,MAAA;AACA,QAAA,kBAAkB,CAAA,IAAA,EAAO,YAAY,CAAS,KAAA,CAAA,CAAA;AAC9C,OAAI;AACF,KAAA,CAAA;AACA,IAAA,MAAA,iBAAkB,GAAA,MAAA;AAAA,MACpB,MAAA,KAAA,GAAA,qBAAA,CAAA,SAAA,CAAA,KAAA,IAAA,SAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,MACF,IAAA,KAAA,IAAA,KAAA,CAAA,OAAA,EAAA,EAAA;AAAA,QACF,SAAA,CAAA,KAAA,GAAA,CAAA,mBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,QAAA,uBAA8B,EAAA,WAAA,CAAA,KAAA,IAAA,WAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,QAAA,IAAM,YAA8B,CAAA,QAAA,CAAA,EAAA;AACpC,UAAI,SAAS,CAAM,QAAA,CAAA,CAAA;AACjB,UAAA,kBAAmB,IAAA,CAAA;AACnB,SAAA;AACA,OAAI;AACF,KAAA,CAAA;AACA,IAAA,MAAA,eAAkB,GAAA,MAAA;AAAA,MACpB,MAAA,KAAA,GAAA,qBAAA,CAAA,SAAA,CAAA,KAAA,IAAA,SAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,MACF,IAAA,KAAA,IAAA,KAAA,CAAA,OAAA,EAAA,EAAA;AAAA,QACF,SAAA,CAAA,KAAA,GAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAEA,QAAM,MAAA,QAAA,GAAA,CAAgB,WAA8B,CAAA,KAAA,IAAA,WAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;AACpD,QAAM,IAAA,YAAA,CAAA,QAED,CAAA,EAAA;AACH,UAAc,SAAA,CAAA,QAAQ,CAAA,CAAA;AACtB,UAAA,SAAA,CAAc,QAAmB,IAAA,CAAA;AAAA,SACnC;AAEA,OAAM;AACJ,KAAI,CAAA;AAAyB,IAC/B,MAAA,aAAA,GAAA,GAAA,CAAA,EAAA,CAAA,CAAA;AAEA,IAAA,MAAM,iBAAiB,GAAO,CAAA,CAAA,KAAA;AAC5B,MAAA,aAAS,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,GAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AAAU,MAC5C,aAAA,CAAA,KAAA,CAAA,UAAA,GAAA,IAAA,CAAA;AAEA,KAAA,CAAA;AAA0B,IACxB,MAAA,gBAAA,GAAA,CAAA,CAAA,KAAA;AAAA,MACD,GAAA,CAAA,IAAA,CAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;AAED,KAAO,CAAA;AAAA,IACL,MAAA,aAAA,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA,IAAA,KAAA;AAAA,MACA,GAAA,CAAA,IAAA,CAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAAA,KACA,CAAA;AAAA,IAEA,OAAA,CAAA,gBAAA,EAAA;AAAA,MAEA,KAAA;AAAA,KACA,CAAA,CAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,gBAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACF,gBAAA;AAAA,MACF,aAAA;AACF,MAAC,KAAA;;;;;;;;AA9mBc,MAhKP,UAAA,GAAA,CAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,CAAA;AAAA,MACa,UAAA,GAAA,CAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,CAAA;AAAA,SAAa,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA;AAAA,EAAA,MACvB,kBAAA,GAAAA,gBAAA,CAAA,SAAA,CAAA,CAAA;AAAA,EACP,MAAA,mBAAA,GAAAA,gBAAA,CAAA,UAAA,CAAA,CAAA;AAAA,EAAA,MACQ,qBAAA,GAAAA,gBAAA,CAAA,YAAA,CAAA,CAAA;AAAA,EAAA,OACMC,SAAA,EAAA,EAAAC,WAAA,CAAA,qBAAA,EAAAC,UAAA,CAAA;AAAA,IACd,GAAK,EAAA,WAAA;AAAA,IACL,OAAA,EAAA,IAAA,CAAA,aAAA;AAAA,IACC,kBAAe,EAAA,MAAA,CAAO,EAAU,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,aAAA,GAAA,MAAA,CAAA;AAAA,IAChC,MAAY,EAAA,OAAA;AAA0D,IACtE,IAAgB,EAAA,EAAA;AAAA,IAChB,OAAqB,EAAA,OAAA;AAAA,GAAA,EACH,IAAA,CAAA,MAAA,EAAA;AAAA,IAClB,IAAyB,EAAA,QAAA;AAAA,IACzB,UAAY,EAAA,EAAA;AAAA,IACb,UAAA,EAAA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAA,SAAA,CAAA,KAAA,CAAA,YAAA,CAAA;AAAA,IACC,cAAa,EAAA,CAAA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAA,SAAA,CAAA,KAAA,CAAA,eAAA,CAAA,EAAA,IAAA,CAAA,WAAA,CAAA;AAAA,IACb,gBAAM,EAAA,IAAA,CAAA,eAAA;AAAA,IACN,qBAAM,EAAA,CAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAAA,IAAA,kBAAA,EAAA,KAAA;AAEI,IAAA,yBA8CE,EAAA,KAAA;AAAA,IAAA;AAAA,IAAA,UAAA,EAAA,EAAA;gBA3CJ,EAAA,IAAA,CAAA,YAAA;AAAA,IAAA,MACD,EAAA,IAAA,CAAA,MAAA;AAAA,IAAA,MACW,EAAA,IAAA,CAAA,MAAA;AAAA,GAAA,CAAA,EAAA;AACD,IAAA,OACP,EAAAC,OAAA,CAAA,MAAA;AAAA,MAAA,CAAA,IACA,CAAA,YAAA,IAAAH,SAAA,EAAA,EAAAC,WAAA,CAAA,mBAAA,EAAA;AAAA,QACN,GAAU,EAAA,CAAA;AAAA,QACV,EAAa,EAAA,IAAA,CAAA,EAAA;AAAA,QACb,GAAA,EAAA,UAAQ;AAA2D,QACnE,gBAAO,EAAA,UAAA;AAAY,QACnB,aAAuB,EAAA,IAAA,CAAA,YAAA;AAAiC,QACxD,IAAO,EAAA,IAAA,CAAA,IAAA;AAAA,QACP,IAAU,EAAA,IAAA,CAAA,UAAA;AAAA,QACV,QAAO,EAAA,IAAA,CAAA,cAAA;AAAA,QACP,WAAO,EAAA,IAAA,CAAA,WAAA;AAAA,QACP,KAAM,EAAAG,cAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA,QAAA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;AAAA,QACN,KAAS,EAAAC,cAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA;AAAA,QACT,QAAQ,EAAA,CAAA,IAAA,CAAA,QAAA,IAAA,IAAA,CAAA,QAAA,IAAA,IAAA,CAAA,aAAA,IAAA,IAAA,CAAA,IAAA,KAAA,MAAA;AAAA,QACR,KAAW,EAAA,IAAA,CAAA,KAAA;AAAA,QACX,QAAY,EAAA,IAAA,CAAA,QAAA;AAAA,QACZ,OAAY,EAAA,IAAA,CAAA,WAAA;AAAA,QACZ,OAAY,EAAA,IAAA,CAAA,gBAAA;AAAA,QACZ,YAAD,CAAA,eAAA;AAAA,QAAW,SAAA,EAAA,IAAA,CAAA,kBAAA;AAAA,QAAA,QAAA,EAAA,IAAA,CAAA,YAAA;AAEA,QAAA,iBACT,CAOU,gBAAA;AAAA,QAAA;AAAA,QAAA,YAAA,EAAA,IAAA,CAAA,YAAA;oBALF,EAAA,IAAA,CAAA;AAAW,QAAA,OACL,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAC,aAAA,CAAA,MAAA;AAAA,SAAA,EAAA,CACX,MAAY,CAAA,CAAA,CAAA;AAAA,OAAA,EAAA;8BAEkB;AAAA,UAA/B,IAAA,CAAA,WAAA,IAAAN,SAAA,EAA+B,gCAAJ,EAAA;AAAA,YAAA,GAAA,EAAA,CAAA;;;;AAGpB,WAAA,EAAA;AAOC,YALF,OAAA,EAAAG;AAKE,eAAAH,SAAA,EAAA,EAAAC,WAAA,CAAAM,uBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;aAJF,CAAA;AAAc,YACnB,CAAO,EAAA,CAAA;AAAA,WAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,cAAA,CAAA,CAAA,IAAAC,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;;AAEqB,QAA7B,MAAA,EAAAL,OAAA,CAAA,MAAA;AAAyB,UAAA,IAAA,CAAA,SAAA,IAAA,IAAA,CAAA,SAAA,IAAAH,SAAA,EAAA,EAAAC,WAAA,CAAA,kBAAA,EAAA;;;;;;AA6EzB,eAAAD,SAAA,EAAA,EAAAC,WAAA,CAAAM,uBAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA;aAvEA,CAAA;AAAA,YACE,CAAA,EAAA,CAAA;AAAA,wBAAsB,EAAA,SAAA,CAAA,CAAA,IAAAC,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,SAAsB,CAAA;AAAwB,QAAA,CAAA;AAAsB,OAAuB,EAAA,CAAA,EAAA,CAAA,IAAA,EAAA,aAAS,EAAA,MAA2B,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,CAAA,KAAAR,SAAA,EAAA,EAAAS,kBAAA,CAAA,KAAA,EAAA;AAAA,QAAa,GAAA,EAAA,CAAA;AAAiC,QAAA,eAAqB;AAAC,QAAA,KAAmC,EAAAL,cAAA,CAAA;AAA+B,UAAkB,IAAO,CAAA,MAAA,CAAA,CAAA,CAAA,QAAA,CAAA;AAAA,UAAA,IAAA,CAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,IAAA,CAAA,IAAA,CAAA;UAUpT,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA;AAAc,qBACZ,CAAA,EAAA,CAAA,UAAA,EAAA,IAAA,CAAA,cAAA,CAAA;AAAA,qBACE,CAAE,EAAA,CAAA,QAAA,EAAA,IAAA,CAAA,aAAA,CAAA;AAAA,sBACD,CAAE,CAAA,CAAA,QAAA,CAAA;AAAA,yBACA,GAAA,IAAA,CAAA,OAAA,CAAA,EAAA,CAAA,QAAA,EAAA,IAAA,CAAA,UAAA,CAAA,GAAA,EAAA;AAAA,sBACF,KAAE;AAAA;AACH,QAAA,KAAA,EAAAC,cAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA;AAGF,QAAA,OAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAME,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,gBAAA,IAAA,IAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,gBAAA,IAAA,IAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AALP,QAAA,YAAQ,EAAA,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAQ,GAAC,CAAA,GAAA,IAAU,sBAAS,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QAAA,YACzB,EAAA,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QAAA,YACC,EAAA,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,iBAAA,IAAA,IAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QAAA,SAAA,EAAA,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,kBAAA,IAAA,IAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;;AAEkB,QAA/B,IAAA,CAAA,WAAA,IAAAL,SAAA,EAA+B,gCAAJ,EAAA;AAAA,UAAA,GAAA,EAAA,CAAA;;;UAe3B,YAAA,EAAA,IAAA,CAAA,iBAAA;AAAA,SAZC,EAAA;AAAY,UACb,OAAa,EAAAG,OAAA,CAAA,MAAA;AAAA,aACZH,wBAAkB,CAAAO,uBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAAA,WACL,CAAA;AAAA,UACb,CAAA,EAAA,CAAA;AAAmC,SAAA,EACzB,CAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,cAAA,CAAA,CAAA,IAAAC,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,QACVE,kBAAuB,CAAA,OAAA,EAAA;AAAA,UACvB,EAAA,EAAA,IAAO,CAAA,EAAA,IAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAS,UAChB,YAAO,EAAA,KAAA;AAAA,UACP,UAAM,CAAE,IAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA;AAAA,UACR,WAAO,EAAA,IAAA,CAAA,gBAAA;AAAA,UACP,WAAM,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAAA,UAAA,QAAA,EAAA,IAAA,CAAA,cAAA;AAET,UAAA,QAAA,EAEO;AAAA,UADL,KAAiE,EAAAN,cAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA;AAAA,UAA1D,OAAA,EAAK,MAAE,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAS,IAAA,KAAA,IAAA,CAAA,gBAAA,IAAA,IAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,QAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAgC,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,iBAAA,IAAA,IAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,OAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,gBAAA,IAAA,IAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;UAevD,MAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,eAAA,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,SAZC,EAAA,oBAAY,CAAA;AAAA,QAAAO,UACA,CAAA,IAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,MAAA;AAAA,UACZD,kBAAc,CAAI,MAAA,EAAA;AAAA,YACL,KAAA,EAAAN,cAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CAAA;AAAA,WACb,EAAAQ,mCAAmC,CAAA,EAAA,CAAA,CAAA;AAAA,SAAA,CACnC;AAAU,QACVF,kBAAuB,CAAA,OAAA,EAAA;AAAA,UACvB,EAAA,EAAA,IAAO,CAAA,EAAA,IAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAS,UAChB,YAAO,EAAA,KAAA;AAAA,UACP,UAAM,CAAA,IAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA;AAAA,UACN,WAAO,EAAA,IAAA,CAAA,cAAA;AAAA,UACP,WAAQ,CAAA,YAAA,IAAA,IAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAAA,UAAA,QAAA,EAAA,IAAA,CAAA,cAAA;AAGH,UAAA,QAAA,EAAA,CAAA,IAAA,CAAA,QAAA,IAAA,IAWE,CAAA,QAAA;AAAA,UAAA,KAAA,EAAAN,cAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA;UAVP,OAAK,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,gBAAA,IAAA,IAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,eAAwB,CAAC,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,eAAA,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,eAA8B,CAAC,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,cAAA,IAAA,IAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,UAAA,QAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,eAAA,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAA6C,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAmC,CAAA;AAAA,QAAA,IAAA,CAAA,SAAA,IAAAJ,SAAA,EAAA,EAAAC,WAAA,CAAA,kBAAA,EAAA;;UAO7I,KAAO,EAAAG,cAAA,CAAA;AAAA,YAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA,MAAA,CAAA;uCAEqB,CAAA;AAAA,YAA7B;AAAyB,cAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,IAAA,CAAA,SAAA;;;;;AAIpB,UAAA,gBAgBP,CAAA,MAAA;AAAA,aAAAJ,SAAA,EAAA,EAAAC,WAAA,CAAAM,uBAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA;AAAA,WAdU,CAAA;AAAA,UACO,CAAA,EAAA,CAAA;AAAA,SACF,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,CAAA,IAAAC,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,OAAA,EACN,EAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AACO,IAAA,OACT,EAAAL,OAAA,CAAA,MAAA;AAAA,MAAAQ,UACS,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,EAAA;AAAA,QACf,SAAM,IAAA,CAAA,aAAA;AAAA,QACN,eAAY,IAAE,CAAA,mBAAA;AAAA,QACd,6BAAmB;AAAA,QACnB,mBAAiB;AAAA,QACjB,kBAAc,CAAA,YAAA;AAAA,QACd,WAAO,IAAE;AAAA,QACT,cAAD,IAAA,CAAA,YAAA;AAAA,QAAe,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAA,IAAA,CAAA,MAAA,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QAAA