@firecms/collection_editor 3.0.1 → 3.1.0-canary.02232f4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConfigControllerProvider.d.ts +6 -0
- package/dist/api/generateCollectionApi.d.ts +71 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.es.js +15260 -8173
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +15257 -8170
- package/dist/index.umd.js.map +1 -1
- package/dist/locales/de.d.ts +120 -0
- package/dist/locales/en.d.ts +120 -0
- package/dist/locales/es.d.ts +120 -0
- package/dist/locales/fr.d.ts +120 -0
- package/dist/locales/hi.d.ts +120 -0
- package/dist/locales/it.d.ts +120 -0
- package/dist/locales/pt.d.ts +120 -0
- package/dist/types/collection_editor_controller.d.ts +14 -0
- package/dist/types/collection_inference.d.ts +8 -2
- package/dist/types/config_controller.d.ts +23 -2
- package/dist/ui/AddKanbanColumnAction.d.ts +11 -0
- package/dist/ui/KanbanSetupAction.d.ts +10 -0
- package/dist/ui/collection_editor/AICollectionGeneratorPopover.d.ts +37 -0
- package/dist/ui/collection_editor/AIModifiedPathsContext.d.ts +20 -0
- package/dist/ui/collection_editor/CollectionDetailsForm.d.ts +2 -3
- package/dist/ui/collection_editor/CollectionEditorDialog.d.ts +24 -0
- package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +4 -1
- package/dist/ui/collection_editor/CollectionJsonImportDialog.d.ts +7 -0
- package/dist/ui/collection_editor/CollectionYupValidation.d.ts +9 -13
- package/dist/ui/collection_editor/DisplaySettingsForm.d.ts +3 -0
- package/dist/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
- package/dist/ui/collection_editor/ExtendSettingsForm.d.ts +14 -0
- package/dist/ui/collection_editor/GeneralSettingsForm.d.ts +7 -0
- package/dist/ui/collection_editor/KanbanConfigSection.d.ts +4 -0
- package/dist/ui/collection_editor/PropertyEditView.d.ts +6 -1
- package/dist/ui/collection_editor/PropertyTree.d.ts +2 -1
- package/dist/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
- package/dist/ui/collection_editor/ViewModeSwitch.d.ts +6 -0
- package/dist/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
- package/dist/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +10 -0
- package/dist/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +2 -0
- package/dist/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +6 -0
- package/dist/ui/collection_editor/properties/conditions/index.d.ts +6 -0
- package/dist/ui/collection_editor/properties/conditions/property_paths.d.ts +19 -0
- package/dist/useCollectionEditorPlugin.d.ts +7 -1
- package/dist/utils/validateCollectionJson.d.ts +22 -0
- package/package.json +15 -15
- package/src/ConfigControllerProvider.tsx +82 -47
- package/src/api/generateCollectionApi.ts +119 -0
- package/src/api/index.ts +1 -0
- package/src/index.ts +28 -1
- package/src/locales/de.ts +125 -0
- package/src/locales/en.ts +145 -0
- package/src/locales/es.ts +125 -0
- package/src/locales/fr.ts +125 -0
- package/src/locales/hi.ts +125 -0
- package/src/locales/it.ts +125 -0
- package/src/locales/pt.ts +125 -0
- package/src/types/collection_editor_controller.tsx +16 -3
- package/src/types/collection_inference.ts +15 -2
- package/src/types/config_controller.tsx +27 -2
- package/src/ui/AddKanbanColumnAction.tsx +203 -0
- package/src/ui/EditorCollectionAction.tsx +3 -3
- package/src/ui/EditorCollectionActionStart.tsx +1 -2
- package/src/ui/EditorEntityAction.tsx +3 -2
- package/src/ui/HomePageEditorCollectionAction.tsx +41 -13
- package/src/ui/KanbanSetupAction.tsx +38 -0
- package/src/ui/MissingReferenceWidget.tsx +1 -1
- package/src/ui/NewCollectionButton.tsx +4 -2
- package/src/ui/NewCollectionCard.tsx +7 -4
- package/src/ui/PropertyAddColumnComponent.tsx +4 -3
- package/src/ui/collection_editor/AICollectionGeneratorPopover.tsx +243 -0
- package/src/ui/collection_editor/AIModifiedPathsContext.tsx +88 -0
- package/src/ui/collection_editor/CollectionDetailsForm.tsx +222 -267
- package/src/ui/collection_editor/CollectionEditorDialog.tsx +270 -198
- package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +138 -71
- package/src/ui/collection_editor/CollectionJsonImportDialog.tsx +171 -0
- package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +202 -101
- package/src/ui/collection_editor/DisplaySettingsForm.tsx +335 -0
- package/src/ui/collection_editor/EntityActionsEditTab.tsx +106 -97
- package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +8 -10
- package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +5 -7
- package/src/ui/collection_editor/EnumForm.tsx +153 -102
- package/src/ui/collection_editor/ExtendSettingsForm.tsx +94 -0
- package/src/ui/collection_editor/GeneralSettingsForm.tsx +335 -0
- package/src/ui/collection_editor/GetCodeDialog.tsx +63 -41
- package/src/ui/collection_editor/KanbanConfigSection.tsx +209 -0
- package/src/ui/collection_editor/LayoutModeSwitch.tsx +27 -43
- package/src/ui/collection_editor/PropertyEditView.tsx +272 -199
- package/src/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
- package/src/ui/collection_editor/PropertyTree.tsx +130 -58
- package/src/ui/collection_editor/SubcollectionsEditTab.tsx +169 -163
- package/src/ui/collection_editor/UnsavedChangesDialog.tsx +0 -2
- package/src/ui/collection_editor/ViewModeSwitch.tsx +43 -0
- package/src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +6 -3
- package/src/ui/collection_editor/import/CollectionEditorImportMapping.tsx +5 -2
- package/src/ui/collection_editor/properties/BlockPropertyField.tsx +0 -2
- package/src/ui/collection_editor/properties/BooleanPropertyField.tsx +4 -1
- package/src/ui/collection_editor/properties/CommonPropertyFields.tsx +6 -4
- package/src/ui/collection_editor/properties/DateTimePropertyField.tsx +126 -42
- package/src/ui/collection_editor/properties/EnumPropertyField.tsx +32 -24
- package/src/ui/collection_editor/properties/MapPropertyField.tsx +8 -9
- package/src/ui/collection_editor/properties/MarkdownPropertyField.tsx +128 -53
- package/src/ui/collection_editor/properties/NumberPropertyField.tsx +3 -1
- package/src/ui/collection_editor/properties/ReferencePropertyField.tsx +5 -4
- package/src/ui/collection_editor/properties/StoragePropertyField.tsx +47 -52
- package/src/ui/collection_editor/properties/StringPropertyField.tsx +3 -1
- package/src/ui/collection_editor/properties/UrlPropertyField.tsx +12 -10
- package/src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +23 -4
- package/src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +866 -0
- package/src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +28 -0
- package/src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +599 -0
- package/src/ui/collection_editor/properties/conditions/index.ts +6 -0
- package/src/ui/collection_editor/properties/conditions/property_paths.ts +92 -0
- package/src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +5 -2
- package/src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +7 -5
- package/src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +10 -7
- package/src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +11 -9
- package/src/ui/collection_editor/properties/validation/ValidationPanel.tsx +5 -2
- package/src/useCollectionEditorPlugin.tsx +53 -22
- package/src/utils/validateCollectionJson.ts +380 -0
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/ui/EditorEntityAction.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { Card, cls, SquareIcon, Tooltip, Typography, VerticalSplitIcon } from \"@firecms/ui\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n }: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Document view</Typography>\n <div className={cls(\"flex flex-row gap-4\")}>\n\n <Tooltip title={\"Documents are open in a side panel\"}>\n <Card\n onClick={() => onChange(\"side_panel\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"side_panel\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <VerticalSplitIcon/>\n <Typography variant={\"label\"}>\n Side panel\n </Typography>\n </Card>\n </Tooltip>\n\n <Tooltip title={\"Documents are open full-screen\"}>\n <Card\n onClick={() => onChange(\"full_screen\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"full_screen\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <SquareIcon/>\n <Typography variant={\"label\"}>\n Full screen\n </Typography>\n </Card>\n </Tooltip>\n\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>Should documents be opened full screen or in an inline side dialog</Typography>\n </div>\n}\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n CloseIcon,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n SettingsIcon,\n TextField,\n Tooltip,\n Typography,\n useAutoComplete\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection,\n children\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\n children?: React.ReactNode;\n}) {\n\n const groupRef = React.useRef<HTMLInputElement>(null);\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n isSubmitting,\n submitCount\n } = useFormex<EntityCollection>();\n\n const collectionEditor = useCollectionEditorController();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n const [advancedPanelExpanded, setAdvancedPanelExpanded] = useState(false);\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n\n };\n\n useEffect(() => {\n if (errors.id) {\n setAdvancedPanelExpanded(true);\n }\n }, [errors.id]);\n\n const collectionIcon = <IconForView collectionOrView={values}/>;\n\n const groupOptions = groups?.filter((group) => !reservedGroups?.includes(group));\n\n const {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n } = useAutoComplete({\n ref: groupRef\n });\n\n const isSubcollection = !!parentCollection;\n\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n const showErrors = submitCount > 0;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div\n className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId}/>\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)}/>\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n <div className={cls(\"col-span-12 \")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n required\n error={showErrors && Boolean(errors.path)}/>\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n\n </div>\n\n {/*{!isSubcollection && <div className={\"col-span-12 sm:col-span-4 relative\"}>*/}\n\n {/* <TextField error={showErrors && Boolean(errors.group)}*/}\n {/* disabled={isSubmitting}*/}\n {/* value={values.group ?? \"\"}*/}\n {/* autoComplete=\"off\"*/}\n {/* onChange={(event) => setFieldValue(\"group\", event.target.value)}*/}\n {/* name={\"group\"}*/}\n {/* inputRef={groupRef}*/}\n {/* label=\"Group\"/>*/}\n {/* <Autocomplete*/}\n {/* open={autoCompleteOpen && (groupOptions ?? []).length > 0}*/}\n {/* setOpen={setAutoCompleteOpen}>*/}\n {/* {groupOptions?.map((group, index) => {*/}\n {/* return <AutocompleteItem*/}\n {/* key={index + \"_\" + group}*/}\n {/* className={\"pr-6 pl-14\"}*/}\n {/* onClick={() => {*/}\n {/* setAutoCompleteOpen(false);*/}\n {/* setFieldValue(\"group\", group ?? null);*/}\n {/* }}*/}\n {/* >*/}\n {/* <div className={\"flex-grow\"}>*/}\n {/* {group}*/}\n {/* </div>*/}\n {/* </AutocompleteItem>;*/}\n {/* })}*/}\n {/* </Autocomplete>*/}\n {/* <FieldCaption>*/}\n {/* {showErrors && Boolean(errors.group) ? errors.group : \"Group in the home page\"}*/}\n {/* </FieldCaption>*/}\n\n\n {/*</div>}*/}\n\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)}/>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n allowIndeterminate={true}\n label={values.history === null || values.history === undefined ? \"Document history revisions enabled if enabled globally\" : (\n values.history ? \"Document history revisions ENABLED\" : \"Document history revisions NOT enabled\"\n )}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n When enabled, each document in this collection will have a history of changes.\n This is useful for auditing purposes. The data is stored in a subcollection of the document\n in your database, called <b>__history</b>.\n </FieldCaption>\n </div>\n\n\n <div className={\"col-span-12 mt-8\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Advanced\n </Typography>\n </div>}\n initiallyExpanded={false}>\n <div className={\"grid grid-cols-12 gap-4 p-4\"}>\n\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection id\"}\n error={showErrors && Boolean(errors.id)}/>\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This id identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.sideDialogWidth)}\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n setFieldTouched(\"sideDialogWidth\", true);\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"}/>\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define the width (in pixels) of entities side dialog. Default is 768px\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n minRows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.includeJsonView === undefined || values.includeJsonView ? \"Include JSON view\" : \"Do not include JSON view\"}\n onValueChange={(v) => setFieldValue(\"includeJsonView\", v)}\n value={values.includeJsonView === undefined ? true : values.includeJsonView}\n />\n <FieldCaption>\n Include the JSON representation of the document.\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.inlineEditing === undefined || values.inlineEditing ? \"Data can be edited directly in the table view\" : \"Data can be edited only in the form view\"}\n onValueChange={(v) => setFieldValue(\"inlineEditing\", v)}\n value={values.inlineEditing === undefined ? true : values.inlineEditing}\n />\n <FieldCaption>\n Allow editing data directly in the table view, without opening the form view.\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={customIdValue === \"code_defined\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n setFieldValue(\"customId\", v);\n }}\n value={customIdValue ?? \"\"}\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return \"Code defined\";\n else if (value === \"true\")\n return \"Users must define an ID\";\n else if (value === \"optional\")\n return \"Users can define an ID, but it is not required\";\n else\n return \"Document ID is generated automatically\";\n }}\n >\n <SelectItem value={\"false\"}>\n Document ID is generated automatically\n </SelectItem>\n <SelectItem value={\"true\"}>\n Users must define an ID\n </SelectItem>\n <SelectItem value={\"optional\"}>\n Users can define an ID, but it is not required\n </SelectItem>\n </Select>\n </div>\n <div className={\"col-span-12 mt-4\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Collection group\"\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n A collection group consists of all collections with the same path. This allows\n you\n to query over multiple collections at once.\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label=\"Enable text search for this collection\"\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n Allow text search for this collection. If you have not specified a text search\n delegate, this will use the built-in local text search. This is not recommended\n for large collections, as it may incur in performance and cost issues.\n </FieldCaption>\n </div>\n\n\n </div>\n </ExpandablePanel>\n\n {children}\n\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }}/>\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={typeof values.icon === \"string\" ? values.icon : undefined}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }}/>\n </div>\n\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n }: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n AutorenewIcon,\n Badge,\n Button,\n CircularProgress,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n }: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const { values, errors } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}/>\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n }: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }:ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`}/>;\n };\n\n const inferValues = async () => {\n if (!getData)\n return;\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button loading={inferring}\n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"}/> : <AutorenewIcon/>}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n canAddElements={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{ id: \"\", label: \"\" }}/>\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)}/>\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <AutorenewIcon size={\"small\"}/>}\n error={Boolean(entryError?.label)}/>\n\n {!disabled &&\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Badge>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n }: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)}/>\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n variant=\"outlined\"\n onClick={onClose}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData\n ? () => getData()\n .then(res => res.map(entry => values.id && getIn(entry, values.id)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged}/>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled}/>}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n const includeBucketUrl = `${baseStoragePath}.includeBucketUrl`;\n\n // Image resize config paths\n const imageResize = `${baseStoragePath}.imageResize`;\n const imageResizeMaxWidth = `${imageResize}.maxWidth`;\n const imageResizeMaxHeight = `${imageResize}.maxHeight`;\n const imageResizeMode = `${imageResize}.mode`;\n const imageResizeFormat = `${imageResize}.format`;\n const imageResizeQuality = `${imageResize}.quality`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Image resize values\n const imageResizeMaxWidthValue = getIn(values, imageResizeMaxWidth);\n const imageResizeMaxHeightValue = getIn(values, imageResizeMaxHeight);\n const imageResizeModeValue = getIn(values, imageResizeMode) ?? \"cover\";\n const imageResizeFormatValue = getIn(values, imageResizeFormat) ?? \"original\";\n const imageResizeQualityValue = getIn(values, imageResizeQuality);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={includeBucketUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Include bucket URL (gs://...) in saved value\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on if you want to save a fully-qualified storage URL\n (e.g. <code>gs://my-bucket/path/to/file</code>) instead of just the storage path.\n You can only change this prop upon creation.\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-12 mt-4\"}>\n <Typography variant={\"subtitle2\"}\n color={\"secondary\"}\n className={\"mb-2 block\"}>\n Image Resize Configuration\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={\"Max width (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxWidthValue !== undefined && imageResizeMaxWidthValue !== null ? imageResizeMaxWidthValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxWidth, undefined);\n else setFieldValue(imageResizeMaxWidth, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxHeight}\n type={\"number\"}\n label={\"Max height (px)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxHeightValue !== undefined && imageResizeMaxHeightValue !== null ? imageResizeMaxHeightValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxHeight, undefined);\n else setFieldValue(imageResizeMaxHeight, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n name={imageResizeMode}\n fullWidth\n size={\"medium\"}\n value={imageResizeModeValue || \"cover\"}\n onValueChange={(value) => setFieldValue(imageResizeMode, value || \"cover\")}\n label={\"Resize mode\"}\n renderValue={(selected) => {\n if (!selected) return \"Cover\";\n return selected === \"contain\" ? \"Contain (fit within bounds)\" : \"Cover (fill bounds, may crop)\";\n }}>\n <SelectItem value=\"contain\">\n Contain (fit within bounds)\n </SelectItem>\n <SelectItem value=\"cover\">\n Cover (fill bounds, may crop)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n size={\"medium\"}\n fullWidth\n name={imageResizeFormat}\n value={imageResizeFormatValue || \"original\"}\n onValueChange={(value) => setFieldValue(imageResizeFormat, value || \"original\")}\n label={\"Output format\"}\n renderValue={(selected) => {\n if (!selected) return \"Original\";\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n Original (keep same format)\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n WebP (best compression)\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={\"Quality (0-100)\"}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeQualityValue !== undefined && imageResizeQualityValue !== null ? imageResizeQualityValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeQuality, undefined);\n else {\n const numValue = parseInt(value);\n if (numValue >= 0 && numValue <= 100) {\n setFieldValue(imageResizeQuality, numValue);\n }\n }\n }}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\n </Typography>\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property)) {\n return false;\n } else {\n if (property.dataType === \"array\" && typeof property.of === \"function\")\n return false;\n else if (property.dataType === \"array\" && Array.isArray(property.of))\n return false;\n return property.editable === undefined ? true : Boolean(property.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"label\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 flex items-center justify-center rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"small\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutorenewIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy\n} from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\n\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n const propertiesOrder = propertiesOrderProp ?? Object.keys(properties);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n // Extract property keys from the full IDs\n const activeKey = activeId.includes(\".\") ? activeId.split(\".\").pop() : activeId;\n const overKey = overId.includes(\".\") ? overId.split(\".\").pop() : overId;\n\n if (!activeKey || !overKey) return;\n\n const oldIndex = propertiesOrder.indexOf(activeKey);\n const newIndex = propertiesOrder.indexOf(overKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newPropertiesOrder = [...propertiesOrder];\n const [removed] = newPropertiesOrder.splice(oldIndex, 1);\n newPropertiesOrder.splice(newIndex, 0, removed);\n\n if (onPropertyMove) {\n onPropertyMove(newPropertiesOrder, namespace);\n }\n }\n };\n\n const items = propertiesOrder.map(key => getFullId(key, namespace));\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n <div className={className}>\n\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n\n const id = getFullId(propertyKey, namespace);\n\n return (\n <PropertyTreeEntry\n key={id}\n id={id}\n propertyKey={propertyKey}\n propertyOrBuilder={property}\n additionalField={additionalField}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n );\n }).filter(Boolean)}\n </div>\n </SortableContext>\n </DndContext>\n );\n },\n equal\n);\n\nexport function PropertyTreeEntry({\n id,\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n id: string;\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n errors: Record<string, any>;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n\n const style = {\n // Key change: use Translate instead of Transform to prevent stretching\n transform: CSS.Translate.toString(transform),\n transition,\n zIndex: isDragging ? 10 : undefined,\n position: \"relative\" as const,\n };\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = id;\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8\"\n >\n <div className=\"relative\">\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\n <div>\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError}/>\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected}/>}\n </div>\n\n <div className=\"absolute top-2 right-2 flex flex-row\">\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && !isPropertyInferred && <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n color=\"inherit\"\n onClick={() => onPropertyRemove(propertyKey, namespace)}>\n <RemoveIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n {onPropertyMove && <Tooltip title={\"Move\"}\n asChild={true}>\n <IconButton\n component={\"span\"}\n size=\"small\"\n {...attributes}\n {...listeners}\n >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n color=\"primary\"\n variant={\"outlined\"}\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, prettifyIdentifier, toSnakeCase } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? prettifyIdentifier(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\" | \"user_select\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"user_select\" &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n color=\"primary\"\n\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors,\n asString\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean,\n asString?: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = asString ? \"reference.path\" : (multiple ? \"of.path\" : \"path\") ;\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n size={\"medium\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"user_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"user_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: true\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? [],\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"reference_as_string\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"reference_as_string\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"user_select\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"reference_as_string\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getController,\n getData,\n propertyConfigs,\n collectionEditable\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) || !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n const idError = validateId(values.id, existingPropertyKeys);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n {...formexController}/>\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n }: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n color={\"primary\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button variant=\"outlined\"\n type={\"submit\"}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"user_select\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"reference_as_string\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n asString={true}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled}/>;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with the <code>editable</code> flag set to <code>false</code>.\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray}/>\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon/>\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef}/>}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled}/>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n }/>}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n user_select: \"Users\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n reference_as_string: \"Text\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n }: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig}/>\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing}/>;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n }: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2 m-1\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType}/>\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\n variant={\"label\"}\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n }: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>docs</a>.\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n color={\"primary\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: \"Copied\"\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"}/>\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({ ...a,\n...b }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n AutorenewIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference?: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n }: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n\n console.debug(\"CollectionEditor: inferring properties from data\", doCollectionInference, values);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-white dark:bg-surface-950\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)}/>\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon/>\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon/>\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={isNewCollection ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors}/>\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n color=\"primary\"\n variant={\"outlined\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <div\n className=\"sticky top-8 min-h-full w-full flex flex-col justify-center\">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon/>\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent className={\"mt-4\"}>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n color={\"primary\"}\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n color={\"primary\"}\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined. Define your custom views in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React from \"react\";\nimport { EntityCollection, prettifyIdentifier, } from \"@firecms/core\";\nimport { Card, Chip, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\n\nexport function CollectionEditorWelcomeView({\n path,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const { pathSuggestions } = useCollectionEditorController();\n\n const filteredSuggestions = (pathSuggestions ?? []).filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n {(filteredSuggestions ?? []).length > 0 && <div className={\"my-2\"}>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {filteredSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", prettifyIdentifier(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n </div>\n\n </div>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-4\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon! as string}/>}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }}/>\n </div>\n\n </div>\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)}/>\n\n </div>}\n\n\n {/*<div style={{ height: \"52px\" }}/>*/}\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n }: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle1\"}>\n {title}\n </Typography>\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, } from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>Data property mapping</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useNavigationController,\n useSelectionController\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const authController = useAuthController();\n const navigation = useNavigationController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController,\n navigation,\n d,\n importConfig.idColumn,\n importConfig.headersMapping,\n properties,\n \"TEMP_PATH\",\n importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityActionsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedActionKey?: string) => void }) {\n const {\n entityActions\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom action</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityActions?.map((action) => {\n return <Button\n key={action.key}\n onClick={() => onClose(action.key)}\n fullWidth\n variant={\"text\"}\n >\n {action.name} ({action.key})\n </Button>;\n })}\n {(entityActions ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom actions defined. Define your custom actions in the customization settings, before using this\n dialog.\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"}\n color={\"primary\"}\n onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityAction,\n EntityCollection,\n resolveEntityAction,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { useFormex } from \"@firecms/formex\";\nimport { EntityActionsSelectDialog } from \"./EntityActionsSelectDialog\";\n\nexport function EntityActionsEditTab({\n collection,\n }: {\n collection: PersistedCollection,\n}) {\n\n const { entityActions: contextEntityActions } = useCustomizationController();\n\n const [addEntityActionDialogOpen, setAddEntityActionDialogOpen] = React.useState<boolean>(false);\n const [actionToDelete, setActionToDelete] = React.useState<string | undefined>();\n\n const {\n values,\n setFieldValue\n } = useFormex<EntityCollection>();\n\n const resolvedEntityActions = values.entityActions?.filter((e): e is string => typeof e === \"string\")\n .map(e => resolveEntityAction(e, contextEntityActions))\n .filter(Boolean) as EntityAction<any>[] ?? [];\n const hardCodedEntityActions = collection.entityActions?.filter((e): e is EntityAction<any> => typeof e !== \"string\") ?? [];\n const totalEntityActions = resolvedEntityActions.length + hardCodedEntityActions.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom actions\n </Typography>\n\n {totalEntityActions === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/custom_actions\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom actions by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setActionToDelete(action.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This action is defined in code with\n key <code>{action.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityActionDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity action\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {actionToDelete &&\n <ConfirmationDialog open={Boolean(actionToDelete)}\n onAccept={() => {\n setFieldValue(\"entityActions\", values.entityActions?.filter(e => e !== actionToDelete));\n setActionToDelete(undefined);\n }}\n onCancel={() => setActionToDelete(undefined)}\n title={<>Remove this action?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the action in the CMS</>}/>}\n\n <EntityActionsSelectDialog\n open={addEntityActionDialogOpen}\n onClose={(selectedActionKey) => {\n if (selectedActionKey) {\n console.log(\"Selected action key:\", selectedActionKey);\n const value = [...(values.entityActions ?? []), selectedActionKey]\n // only actions that are defined in the registry\n .filter((e): e is string => typeof e === \"string\" && (contextEntityActions ?? []).some(action => action.key === e));\n ;\n setFieldValue(\"entityActions\", value);\n }\n setAddEntityActionDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n ConfirmationDialog,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n NavigationResult,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs,\n Typography\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { CollectionDetailsForm } from \"./CollectionDetailsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\nimport { EntityActionsEditTab } from \"./EntityActionsEditTab\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty}/>}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"}/>\n\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"details\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"subcollections\"\n | \"custom_actions\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const includeTemplates = !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: NavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter/>;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter/>;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs}/>\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities\n }: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n }\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection ? (includeTemplates ? \"welcome\" : \"details\") : \"properties\";\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"details\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"details\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"details\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"details\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? [], collection.databaseId);\n } : undefined;\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"details\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"subcollections\" || currentView === \"details\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"details\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n // TODO: getting data is only working in root collections with this code\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties: Properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n // @ts-ignore\n const isMergedCollection = collection?.merged ?? false;\n const collectionEditable = editable || isNewCollection;\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n if (!collection) return;\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n handleCancel();\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n const onWelcomeScreenContinue = (importData?: object[], propertiesOrder?: string[]) => {\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"px-4 h-14 w-full justify-end bg-surface-50 dark:bg-surface-950 border-b\")}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"details\"}>\n Details\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"subcollections\"}>\n Additional views\n </Tab>\n <Tab value={\"custom_actions\"}>\n Custom actions\n </Tab>\n </Tabs>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter/>}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path}/>}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={onWelcomeScreenContinue}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}/>}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]}/>}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"details\" &&\n <CollectionDetailsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n groups={groups}\n parentCollectionIds={parentCollectionIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection}>\n {!isNewCollection && isMergedCollection && <div className={\"flex flex-col gap-4 mt-8\"}>\n <Typography variant={\"body2\"} color={\"secondary\"}>This collection is defined in code.\n The changes done in this editor will override the properties defined in code.\n You can delete the overridden values to revert to the state defined in code.\n </Typography>\n <Button color={\"neutral\"}\n onClick={() => {\n setDeleteRequested(true);\n }}>Reset to code</Button>\n </div>}\n </CollectionDetailsForm>}\n\n {currentView === \"custom_actions\" && collection &&\n <EntityActionsEditTab collection={collection}/>}\n\n {currentView === \"subcollections\" && collection &&\n <SubcollectionsEditTab\n parentCollection={parentCollection}\n configController={configController}\n getUser={getUser}\n collectionInference={collectionInference}\n parentCollectionIds={parentCollectionIds}\n collection={collection}/>}\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>}/>\n }\n\n <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error}/>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n color={\"neutral\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {currentView === \"welcome\" &&\n <Button variant={\"text\"} onClick={() => onWelcomeScreenContinue()}>\n Continue from scratch\n </Button>}\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"details\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"details\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon/>\n : undefined}\n >\n {currentView === \"details\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>\n </form>\n </>\n\n </Formex>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete the stored config?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the stored config, and reset to the code state.</>}/>\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n propertiesResult[key] = applyPropertiesConfig(properties[key] as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n pathSuggestions?: string[];\n\n getUser?: (uid: string) => User | null;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n redirect: boolean,\n existingEntities?: Entity<any>[],\n pathSuggestions?: string[];\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[]\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities,\n pathSuggestions\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable === undefined || collection?.editable === true,\n existingEntities\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n pathSuggestions\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n pathSuggestions\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n getUser={getUser}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }}/>\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={getData && currentPropertyDialog?.editedCollectionId\n ? () => {\n console.debug(\"get data for property\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!)\n return getData(resolvedPath, []);\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={[]}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey}/>\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n size={\"small\"}\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n }: PluginHomePageActionsProps) {\n\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController.configPermissions({\n user: authController.user,\n collection\n });\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton size={\"small\"}>\n <MoreVertIcon size={\"small\"}/>\n </IconButton>}\n >\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon/>\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n size={\"small\"}\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n variant={\"outlined\"}\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"outlined\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don't have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorEntityAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n formContext\n }: PluginFormActionProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const isDirty = formContext?.formex.dirty ?? false;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? (isDirty ? \"You need to save the document before changing the schema\" : \"Edit schema for this form\") : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection || isDirty}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\nimport { EditorEntityAction } from \"./ui/EditorEntityAction\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n collectionInference?: CollectionInference;\n\n pathSuggestions?: string[];\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n includeIntroView?: boolean;\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n includeIntroView = true,\n pathSuggestions\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: includeIntroView ? <IntroWidget/> : undefined,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n allowDragAndDrop: true,\n navigationEntries: collectionConfigController.navigationEntries,\n onNavigationEntriesUpdate: collectionConfigController.saveNavigationEntries,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\n },\n form: {\n ActionsTop: EditorEntityAction,\n }\n };\n}\n\nexport function IntroWidget() {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon/>Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[] = [],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n\n backendCollections.forEach(markAsEditable);\n\n const result = joinCollectionLists(baseCollections, backendCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => {\n const indexA = baseCollections.findIndex(c => c.id === a.id);\n const indexB = baseCollections.findIndex(c => c.id === b.id);\n\n if (indexA === -1 && indexB === -1) {\n return 0; // Keep original order for items not in baseCollections\n }\n if (indexA === -1) {\n return 1; // a is not in base, so it goes to the end\n }\n if (indexB === -1) {\n return -1; // b is not in base, so it goes to the end\n }\n return indexA - indexB;\n });\n\n return result;\n}\n","import { ErrorView, prettifyIdentifier, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"} variant={\"outlined\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: prettifyIdentifier(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","useCollectionEditorController","useContext","CollectionEditorContext","LayoutModeSwitch","t0","$","_c","value","onChange","className","t1","cls","t2","t3","Symbol","for","Typography","t4","t5","t6","t7","t8","VerticalSplitIcon","jsx","t9","Tooltip","Card","t10","t11","t12","t13","t14","SquareIcon","t15","t16","jsxs","t17","t18","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","children","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","IconForView","collectionIcon","filter","group","includes","ref","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","IconButton","Chip","e","target","Boolean","t19","TextField","t20","t21","t22","FieldCaption","t23","t24","t25","t26","Field","DebouncedTextField","t27","t28","t29","t30","t31","openEntityMode","t32","t33","t34","history","t35","v","t36","t37","BooleanSwitchWithLabel","t38","t39","t40","SettingsIcon","t41","t42","t43","t44","t45","t46","t47","t48","singularName","t49","e_0","t50","t51","t52","t53","t54","t55","t56","sideDialogWidth","t57","e_1","value_0","isNaN","Number","t58","t59","t60","CloseIcon","t61","t62","t63","t64","t65","t66","t67","t68","description","t69","t70","t71","t72","t73","t74","t75","defaultSize","t76","map","_temp2","t77","Select","_temp","t78","includeJsonView","t79","v_0","t80","t81","t82","t83","t84","inlineEditing","t85","v_1","t86","t87","t88","t89","t90","t91","v_2","Error","t92","t93","t94","t95","SelectItem","t96","_temp3","t97","v_3","t98","collectionGroup","t99","t100","t101","t102","v_4","t103","textSearchEnabled","t104","t105","t106","t107","t108","ExpandablePanel","t109","t110","t111","height","t112","icon","t113","t114","SearchIconsView","t115","Dialog","t116","Container","value_3","value_2","toUpperCase","value_1","DefaultDatabaseField","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","label","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","Fragment","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","RuleIcon","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","includeBucketUrl","imageResize","imageResizeMaxWidth","imageResizeMaxHeight","imageResizeMode","imageResizeFormat","imageResizeQuality","fileNameValue","storagePathValue","T0","T1","maxSizeValue","imageResizeMaxWidthValue","imageResizeMaxHeightValue","imageResizeModeValue","imageResizeFormatValue","imageResizeQualityValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","parseInt","e_2","value_4","_temp4","value_5","_temp5","e_3","value_6","numValue","selected_1","selected","charAt","slice","selected_0","join","editableProperty","property","isPropertyBuilder","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","event","active","over","activeId","String","overId","activeKey","split","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","handleDragEnd","items","restrictToVerticalAxis","additionalField","find","warn","SortableContext","verticalListSortingStrategy","DndContext","closestCenter","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","prettifyIdentifier","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","flatMap","SelectGroup","collection_0","collection_1","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","userSelect","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","DEFAULT_FIELD_CONFIGS","config","MarkdownPropertyField","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","id_0","property_1","resetForm","validateName","validateId","isValidRegExp","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","user_select","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","group_0","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","camelCase","str","toLowerCase","parts","part","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","debug","newCollection","makePropertiesEditable","newPropertyKeys","updatedProperties","acc","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","Alert","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","content","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","s","c","filteredSuggestions","suggestion","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","authController","useAuthController","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","result","slugify","fullSlug","slugifiedResult","firstKey","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","selectedActionKey","log","action_1","action_0","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","isMergedCollection","merged","deleteRequested","setDeleteRequested","onWelcomeScreenContinue","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","CollectionActionsStart","HeaderAction","AddColumnComponent","ActionsTop","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","sort","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEO,QAAMA,YAAYC,eAAIC,OAAAA,EAASC,MAAM;AAAA,IACxCC,IAAIH,eAAII,SAASC,SAAS,UAAU;AAAA,IACpCC,MAAMN,eAAII,SAASC,SAAS,UAAU;AAAA,IACtCE,MAAMP,eAAII,OAAAA,EAASC,SAAS,UAAU;AAAA,EAC1C,CAAC;ACEM,QAAMG,gCAAgCA,MAAA;AAAA,WAAkCC,MAAAA,WAAAC,uBAAkC;AAAA,EAAC;ACN3G,WAAAC,iBAAAC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA0B,UAAA;AAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAAL;AAQhC,QAAAM;AAAA,QAAAL,SAAAI,WAAA;AAE0BC,WAAAC,GAAAA,IAAIF,SAAS;AAACJ,aAAAI;AAAAJ,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACjCH,0CAACI,iBAAoB,SAAA,SAAgB,OAAA,aAAwB,WAAA,UAAU,UAAA,gBAAA,CAAa;AACpEH,WAAAF,GAAAA,IAAI,qBAAqB;AAACN,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAD,WAAAP,EAAA,CAAA;AAAAQ,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,SAAAG,UAAA;AAIrBS,WAAAA,MAAMT,SAAS,YAAY;AAACH,aAAAG;AAAAH,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAKjC,UAAAa,KAAAX,UAAU,eAAe,uCAAuC;AAA4C,QAAAY;AAAA,QAAAd,SAAAa,IAAA;AAJrGC,WAAAR,GAAAA,IACP,oHACA,iDACA,sGACAO,EACJ;AAACb,aAAAa;AAAAb,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAC;AAAA,QAAAhB,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEDK,0CAACE,GAAAA,mBAAA,EAAiB;AAClBD,WAAAE,2BAAAA,IAACP,eAAA,EAAoB,SAAA,SAAS,UAAA,cAE9B;AAAaX,aAAAe;AAAAf,aAAAgB;AAAAA,IAAA,OAAA;AAAAD,WAAAf,EAAA,CAAA;AAAAgB,WAAAhB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAY,MAAAZ,UAAAc,IAAA;AAbrBK,WAAAD,2BAAAA,IAACE,GAAAA,WAAe,OAAA,sCACZ,0CAACC,GAAAA,MAAA,EACY,SAAAT,IACE,WAAAE,IAOXC,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,MAAAA,EAAAA,CAGJ,EAAA,CACJ;AAAUhB,cAAAY;AAAAZ,cAAAc;AAAAd,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAAG,UAAA;AAIOmB,YAAAA,MAAMnB,SAAS,aAAa;AAACH,cAAAG;AAAAH,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAKlC,UAAAuB,MAAArB,UAAU,gBAAgB,uCAAuC;AAA4C,QAAAsB;AAAA,QAAAxB,UAAAuB,KAAA;AAJtGC,YAAAlB,GAAAA,IACP,oHACA,iDACA,sGACAiB,GACJ;AAACvB,cAAAuB;AAAAvB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAC;AAAA,QAAA1B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEDe,2CAACE,GAAAA,YAAA,EAAU;AACXD,YAAAR,2BAAAA,IAACP,eAAA,EAAoB,SAAA,SAAS,UAAA,eAE9B;AAAaX,cAAAyB;AAAAzB,cAAA0B;AAAAA,IAAA,OAAA;AAAAD,YAAAzB,EAAA,EAAA;AAAA0B,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAsB,OAAAtB,UAAAwB,KAAA;AAbrBI,YAAAV,2BAAAA,IAACE,GAAAA,WAAe,OAAA,kCACZ,0CAACC,GAAAA,MAAA,EACY,SAAAC,KACE,WAAAE,KAOXC,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,MAAAA,EAAAA,CAGJ,EAAA,CACJ;AAAU1B,cAAAsB;AAAAtB,cAAAwB;AAAAxB,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAA4B,OAAA5B,UAAAmB,IAAA;AAlCdU,YAAAC,2BAAAA,KAAA,OAAA,EAAgB,WAAAtB,IAEZW,UAAAA;AAAAA,QAAAA;AAAAA,QAiBAS;AAAAA,MAAAA,GAiBJ;AAAM5B,cAAA4B;AAAA5B,cAAAmB;AAAAnB,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACNqB,2CAACpB,iBAAoB,SAAA,WAAkB,OAAA,aAAwB,WAAA,UAAU,UAAA,qEAAA,CAAkE;AAAaX,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAAK,MAAAL,UAAA6B,KAAA;AAvCrJG,qDAAgB,WAAA3B,IACnBE,UAAAA;AAAAA,QAAAA;AAAAA,QACAsB;AAAAA,QAqCAE;AAAAA,MAAAA,GACJ;AAAM/B,cAAAK;AAAAL,cAAA6B;AAAA7B,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,WAxCCgC;AAAAA,EAwCD;AC3BH,WAAAC,sBAAAlC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,GAAA;AAA+B,UAAA;AAAA,MAAAiC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAAvC;AAmBlC,UAAAwC,WAAiBC,MAAAC,WAAmC;AACpD,UAAA;AAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IASIC,iBAAAA;AAEqBtD,kCAAAA;AAEzB,UAAA,CAAAuD,gBAAAC,iBAAA,IAA4CC,MAAAA,cAAc;AAC1D,UAAA,CAAAC,uBAAAC,wBAAA,IAA0DF,MAAAA,cAAc;AAAE,QAAA/C;AAAA,QAAAL,SAAA2C,eAAA;AAEjDtC,WAAAkD,CAAAA,eAAA;AACrBZ,sBAAc,cAAcY,cAAUC,MAAa;AAAA,MAAC;AACvDxD,aAAA2C;AAAA3C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAFD,UAAAyD,mBAAyBpD;AAExB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAkC,mBAAAlC,SAAA2C,iBAAA3C,EAAA,CAAA,MAAA6C,SAAA;AAEkBtC,WAAAd,CAAAA,SAAA;AACfkD,sBAAc,QAAQlD,IAAI;AAE1B,cAAAiE,cAAoBC,OAAAA,MAAMd,SAAS,MAAM;AAAE,YACvC,CAACa,eAAexB,mBAAmBzC,MAAI;AACvCkD,wBAAc,QAAQiB,iBAAYnE,IAAI,CAAC;AAAA,QAAC;AAG5C,cAAAoE,YAAkBF,OAAAA,MAAMd,SAAS,IAAI;AAAE,YACnC,CAACgB,aAAa3B,mBAAmBzC,MAAI;AACrCkD,wBAAc,MAAMiB,iBAAYnE,IAAI,CAAC;AAAA,QAAC;AAG1C,cAAAqE,sBAA4BH,OAAAA,MAAMd,SAAS,cAAc;AAAE,YACvD,CAACiB,uBAAuB5B,mBAAmBzC,MAAI;AAC/CkD,wBAAc,gBAAgBoB,cAAStE,IAAI,CAAC;AAAA,QAAC;AAAA,MAAA;AAGpDO,aAAAkC;AAAAlC,aAAA2C;AAAA3C,aAAA6C;AAAA7C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAlBD,UAAAgE,aAAmBzD;AAkBjB,QAAAC;AAAA,QAAAI;AAAA,QAAAZ,EAAA,CAAA,MAAA8C,OAAAxD,IAAA;AAEQkB,WAAAA,MAAA;AAAA,YACFsC,OAAMxD,IAAA;AACNgE,uCAA6B;AAAA,QAAC;AAAA,MAAA;AAEnC1C,WAAA,CAACkC,OAAMxD,EAAA;AAAIU,QAAA,CAAA,IAAA8C,OAAAxD;AAAAU,aAAAQ;AAAAR,aAAAY;AAAAA,IAAA,OAAA;AAAAJ,WAAAR,EAAA,CAAA;AAAAY,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAJdiE,UAAAA,UAAUzD,IAIPI,EAAW;AAAC,QAAAC;AAAA,QAAAb,SAAA0C,QAAA;AAEQ7B,0CAACqD,KAAAA,aAAA,EAA8BxB,kBAAAA,OAAAA,CAAM;AAAG1C,aAAA0C;AAAA1C,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAA/D,UAAAmE,iBAAuBtD;AAEFuB,YAAMgC,OAAAC,CAAAA,WAAqBlC,gBAAcmC,SAAWD,KAAK,CAAA;AAAA,QAAAvD;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAM1DI,WAAA;AAAA,QAAAyD,KACXhC;AAAAA,MAAAA;AACRvC,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAFGwE,OAAAA,gBAAgB1D,EAEnB;AAED,UAAA2D,oBAA0BpC;AAEtBqC,QAAAA;AAAyE,QACzE,OAAOhC,OAAMiC,aAAc,UAAQ;AACnCD,sBAAgBA;AAAAA,IAAH,OAAA;AAAA,UACNhC,OAAMiC,aAAA,MAAkB;AAC/BD,wBAAgBA;AAAAA,MAAH,OAAA;AAAA,YACNhC,OAAMiC,aAAA,OAAmB;AAChCD,0BAAgBA;AAAAA,QAAH,OAAA;AAAA,cACNhC,OAAMiC,aAAc,YAAU;AACrCD,4BAAgBA;AAAAA,UAAH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAGjB,UAAAE,aAAmB5B,cAAW;AASW,UAAAjC,KAAA,CAACmB,kBAAkB,OAAO;AAC1C,UAAAlB,KAAAkB,kBAAkB,mBAAmB,GAAGQ,QAAMjD,IAAA;AAAmB,QAAA0B;AAAA,QAAAnB,EAAA,EAAA,MAAAe,MAAAf,UAAAgB,IAAA;AADtEG,0CAACR,GAAAA,YAAA,EAAoB,SAAAI,IAA2C,WAAA,aAC3DC,UAAAA,IACL;AAAahB,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAAyD,oBAAAzD,EAAA,EAAA,MAAA0C,OAAAa,YAAA;AACbjC,2CAAC,sBAAA,EAAiC,YAAAoB,OAAMa,YACEE,oBAAAA,kBAAgB;AAAGzD,cAAAyD;AAAAzD,QAAA,EAAA,IAAA0C,OAAAa;AAAAvD,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAM5Ca,YAAAA,MAAM4B,sBAAsB;AAACnD,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,UAAAmE,gBAAA;AAJ9C3C,YAAAN,2BAAAA,IAACE,GAAAA,SAAA,EAAe,OAAA,eACE,SAAA,MACd,UAAAF,2BAAAA,IAAC2D,GAAAA,YAAA,EACU,OAAA,UACE,SAAAtD,KACR4C,0BACL,GACJ;AAAUnE,cAAAmE;AAAAnE,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAwB,OAAAxB,EAAA,EAAA,MAAAmB,IAAA;AAfdM,qDACc,WAAA,8CACVN,UAAAA;AAAAA,QAAAA;AAAAA,QAGAG;AAAAA,QAGAE;AAAAA,MAAAA,GAQJ;AAAMxB,cAAAsB;AAAAtB,cAAAwB;AAAAxB,cAAAmB;AAAAnB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,UAAAqC,kBAAA;AAELX,YAAAW,mDAAqByC,GAAAA,MAAA,EAAkB,aAAA,cACpC,UAAAhD,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,QAAA;AAAA,QACDO,2BAAAA,IAAA,KAAA,EAAImB,UAAAA,iBAAgB5C,KAAAA,CAAM;AAAA,MAAA,EAAA,CACzD,EAAA,CACJ;AAAOO,cAAAqC;AAAArC,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAyB,OAAAzB,UAAA0B,KAAA;AAvBXE,4CAAA,OAAA,EACIH,UAAAA;AAAAA,QAAAA;AAAAA,QAkBCC;AAAAA,MAAAA,GAML;AAAM1B,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAKa,UAAA6B,MAAAa,OAAMjD,QAAS;AAAE,QAAAsC;AAAA,QAAA/B,UAAAgE,YAAA;AACdjC,YAAAgD,CAAAA,MAAYf,WAAWe,EAACC,OAAA9E,KAAa;AAACF,cAAAgE;AAAAhE,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAIzC,UAAAgC,MAAA4C,cAAcK,QAAQnC,OAAMrD,IAAK;AAAC,QAAAyF;AAAA,QAAAlF,EAAA,EAAA,MAAA6B,OAAA7B,UAAA+B,OAAA/B,EAAA,EAAA,MAAAgC,KAAA;AAN7CkD,YAAAhE,2BAAAA,IAACiE,GAAAA,WAAA,EACU,OAAAtD,KACG,UAAAE,KACH,OAAA,QACI,WAAA,MACX,UAAA,MACO,OAAAC,KAAkC;AAAGhC,cAAA6B;AAAA7B,cAAA+B;AAAA/B,cAAAgC;AAAAhC,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAC3B,UAAAoF,MAAAvC,QAAOpD,QAASwF,QAAQnC,OAAMrD,IAAK;AACnD,UAAA4F,MAAAxC,QAAOpD,QAASwF,QAAQnC,OAAMrD,IAAK,IAAIqD,OAAMrD,OAAQ;AAAgE,QAAA6F;AAAA,QAAAtF,EAAA,EAAA,MAAAoF,OAAApF,UAAAqF,KAAA;AAD1HC,YAAApE,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAH,KAChBC,UAAAA,KACL;AAAerF,cAAAoF;AAAApF,cAAAqF;AAAArF,cAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAxF,EAAA,EAAA,MAAAkF,OAAAlF,UAAAsF,KAAA;AAVnBE,YAAA1D,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZoD,UAAAA;AAAAA,QAAAA;AAAAA,QAOAI;AAAAA,MAAAA,GAGJ;AAAMtF,cAAAkF;AAAAlF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEU+E,YAAAnF,GAAAA,IAAI,cAAc;AAACN,cAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,EAAA;AAAA,IAAA;AAKjB,UAAA0F,MAAAd,cAAcK,QAAQnC,OAAMpD,IAAK;AAAC,QAAAiG;AAAA,QAAA3F,UAAA0F,KAAA;AAJhDC,YAAAzE,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY,MAAA,QACFC,IAAAA,GAAAA,oBACG,OAAA,QACP,UAAA,MACO,OAAAH,IAAAA,CAAkC;AAAG1F,cAAA0F;AAAA1F,cAAA2F;AAAAA,IAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AAE9B,UAAA8F,MAAAjD,QAAOnD,QAASuF,QAAQnC,OAAMpD,IAAK;AACnD,UAAAqG,MAAAlD,QAAOnD,QAASuF,QAAQnC,OAAMpD,IAAK,IAC9BoD,OAAMpD,OACN+E,kBAAkB,qEAAqE;AAAyD,QAAAuB;AAAA,QAAAhG,EAAA,EAAA,MAAA8F,OAAA9F,UAAA+F,KAAA;AAH1JC,YAAA9E,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAO,KAChBC,UAAAA,KAGL;AAAe/F,cAAA8F;AAAA9F,cAAA+F;AAAA/F,cAAAgG;AAAAA,IAAA,OAAA;AAAAA,YAAAhG,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiG;AAAA,QAAAjG,EAAA,EAAA,MAAA2F,OAAA3F,UAAAgG,KAAA;AAXnBC,YAAAnE,2BAAAA,KAAA,OAAA,EAAgB,WAAA2D,KACZE,UAAAA;AAAAA,QAAAA;AAAAA,QAMAK;AAAAA,MAAAA,GAMJ;AAAMhG,cAAA2F;AAAA3F,cAAAgG;AAAAhG,cAAAiG;AAAAA,IAAA,OAAA;AAAAA,YAAAjG,EAAA,EAAA;AAAA,IAAA;AAuCK,UAAAkG,MAAAxD,OAAMyD,kBAAmB;AAAY,QAAAC;AAAA,QAAApG,UAAA2C,eAAA;AAClCyD,YAAAlG,CAAAA,UAAWyC,cAAc,kBAAkBzC,KAAK;AAACF,cAAA2C;AAAA3C,cAAAoG;AAAAA,IAAA,OAAA;AAAAA,YAAApG,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqG;AAAA,QAAArG,EAAA,EAAA,MAAAkG,OAAAlG,UAAAoG,KAAA;AAH/DC,2CAAC,kBAAA,EACc,WAAA,eACJ,OAAAH,KACG,UAAAE,KAAiD;AAAGpG,cAAAkG;AAAAlG,cAAAoG;AAAApG,cAAAqG;AAAAA,IAAA,OAAA;AAAAA,YAAArG,EAAA,EAAA;AAAA,IAAA;AAOnD,UAAAsG,MAAA5D,OAAM6D,YAAA,QAAqB7D,OAAM6D,YAAA/C,SAAyB,2DAC7Dd,OAAM6D,UAAW,uCAAuC;AAC3D,QAAAC;AAAA,QAAAxG,UAAA2C,eAAA;AACc6D,YAAAC,CAAAA,MAAO9D,cAAc,WAAW8D,CAAC;AAACzG,cAAA2C;AAAA3C,cAAAwG;AAAAA,IAAA,OAAA;AAAAA,YAAAxG,EAAA,EAAA;AAAA,IAAA;AAC1C,UAAA0G,MAAAhE,OAAM6D,YAAA/C,SAAsB,OAAUd,OAAM6D;AAAQ,QAAAI;AAAA,QAAA3G,EAAA,EAAA,MAAAsG,OAAAtG,UAAAwG,OAAAxG,EAAA,EAAA,MAAA0G,KAAA;AAR/DC,YAAAzF,2BAAAA,IAAC0F,GAAAA,wBAAA,EACa,UAAA,SACJ,MAAA,SACc,0BACb,OAAAN,KAGQ,eAAAE,KACR,OAAAE,KAAoD;AAC7D1G,cAAAsG;AAAAtG,cAAAwG;AAAAxG,cAAA0G;AAAA1G,cAAA2G;AAAAA,IAAA,OAAA;AAAAA,YAAA3G,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6G;AAAA,QAAA7G,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACFmG,4CAACtB,mBAAA,EAAa,UAAA;AAAA,QAAA;AAAA,QAGerE,2BAAAA,IAAA,OAAG,UAAA,YAAA,CAAS;AAAA,QAAI;AAAA,MAAA,GAC7C;AAAelB,cAAA6G;AAAAA,IAAA,OAAA;AAAAA,YAAA7G,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8G;AAAA,QAAA9G,UAAA2G,KAAA;AAfnBG,YAAAhF,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZ6E,UAAAA;AAAAA,QAAAA;AAAAA,QAUAE;AAAAA,MAAAA,GAKJ;AAAM7G,cAAA2G;AAAA3G,cAAA8G;AAAAA,IAAA,OAAA;AAAAA,YAAA9G,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+G;AAAA,QAAA/G,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAQMqG,YAAAjF,2BAAAA,KAAA,OAAA,EAAe,WAAA,kCACX,UAAA;AAAA,QAAAZ,2BAAAA,IAAC8F,GAAAA,cAAA,EAAY;AAAA,uCACZrG,GAAAA,YAAA,EAAoB,SAAA,aACC,WAAA,QAAO,UAAA,WAAA,CAE7B;AAAA,MAAA,GACJ;AAAMX,cAAA+G;AAAAA,IAAA,OAAA;AAAAA,YAAA/G,EAAA,EAAA;AAAA,IAAA;AAOe,UAAAiH,OAAC/E;AAEJ,UAAAgF,MAAAtC,cAAcK,QAAQnC,OAAMxD,EAAG;AAAC,QAAA6H;AAAA,QAAAnH,EAAA,EAAA,MAAAiH,OAAAjH,UAAAkH,KAAA;AAJ9CC,YAAAjG,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY,MAAA,MACFC,IAAAA,GAAAA,oBACM,UAAAoB,KACH,OAAA,iBACA,OAAAC,IAAAA,CAAgC;AAAGlH,cAAAiH;AAAAjH,cAAAkH;AAAAlH,cAAAmH;AAAAA,IAAA,OAAA;AAAAA,YAAAnH,EAAA,EAAA;AAAA,IAAA;AAC5B,UAAAoH,MAAAvE,QAAOvD,MAAO2F,QAAQnC,OAAMxD,EAAG;AAC/C,UAAA+H,MAAAxE,QAAOvD,MAAO2F,QAAQnC,OAAMxD,EAAG,IAAIwD,OAAMxD,KAAM;AAAqE,QAAAgI;AAAA,QAAAtH,EAAA,EAAA,MAAAoH,OAAApH,UAAAqH,KAAA;AADzHC,YAAApG,2BAAAA,IAACqE,mBAAA,EAAoB,OAAA6B,KAChBC,UAAAA,KACL;AAAerH,cAAAoH;AAAApH,cAAAqH;AAAArH,cAAAsH;AAAAA,IAAA,OAAA;AAAAA,YAAAtH,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuH;AAAA,QAAAvH,EAAA,EAAA,MAAAmH,OAAAnH,UAAAsH,KAAA;AARnBC,YAAAzF,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZqF,UAAAA;AAAAA,QAAAA;AAAAA,QAKAG;AAAAA,MAAAA,GAGJ;AAAMtH,cAAAmH;AAAAnH,cAAAsH;AAAAtH,cAAAuH;AAAAA,IAAA,OAAA;AAAAA,YAAAvH,EAAA,EAAA;AAAA,IAAA;AAIS,UAAAwH,MAAA5C,cAAcK,QAAQnC,OAAM2E,YAAa;AAAC,QAAAC;AAAA,QAAA1H,EAAA,EAAA,MAAA4C,gBAAA5C,UAAA+C,iBAAA;AAGvC2E,YAAAC,CAAAA,QAAA;AACN5E,wBAAgB,gBAAc,IAAM;AAAC,eAC9BH,aAAamC,GAAC;AAAA,MAAC;AACzB/E,cAAA4C;AAAA5C,cAAA+C;AAAA/C,cAAA0H;AAAAA,IAAA,OAAA;AAAAA,YAAA1H,EAAA,EAAA;AAAA,IAAA;AACM,UAAA4H,MAAAlF,OAAM+E,gBAAiB;AAAE,QAAAI;AAAA,QAAA7H,EAAA,EAAA,MAAAwH,OAAAxH,UAAA0H,OAAA1H,EAAA,EAAA,MAAA4H,KAAA;AARpCC,YAAA3G,2BAAAA,IAACiE,GAAAA,WAAA,EACU,OAAAqC,KACD,MAAA,gBACY,oBAAA,uBACR,UAAAE,KAIH,OAAAE,KACA,OAAA,iBAAe;AAAG5H,cAAAwH;AAAAxH,cAAA0H;AAAA1H,cAAA4H;AAAA5H,cAAA6H;AAAAA,IAAA,OAAA;AAAAA,YAAA7H,EAAA,EAAA;AAAA,IAAA;AACR,UAAA8H,MAAAlD,cAAcK,QAAQnC,OAAM2E,YAAa;AACzD,UAAAM,MAAAnD,cAAcK,QAAQnC,OAAM2E,YAAa,IAAI3E,OAAM2E,eAAgB;AAAqD,QAAAO;AAAA,QAAAhI,EAAA,EAAA,MAAA8H,OAAA9H,UAAA+H,KAAA;AAD7HC,YAAA9G,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAuC,KAChBC,UAAAA,KACL;AAAe/H,cAAA8H;AAAA9H,cAAA+H;AAAA/H,cAAAgI;AAAAA,IAAA,OAAA;AAAAA,YAAAhI,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiI;AAAA,QAAAjI,EAAA,EAAA,MAAA6H,OAAA7H,UAAAgI,KAAA;AAbnBC,YAAAnG,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZ+F,UAAAA;AAAAA,QAAAA;AAAAA,QAUAG;AAAAA,MAAAA,GAGJ;AAAMhI,cAAA6H;AAAA7H,cAAAgI;AAAAhI,cAAAiI;AAAAA,IAAA,OAAA;AAAAA,YAAAjI,EAAA,EAAA;AAAA,IAAA;AAGS,UAAAkI,MAAAtD,cAAcK,QAAQnC,OAAMqF,eAAgB;AAAC,QAAAC;AAAA,QAAApI,EAAA,EAAA,MAAA+C,mBAAA/C,UAAA2C,eAAA;AAI1CyF,YAAAC,CAAAA,QAAA;AACNtF,wBAAgB,mBAAiB,IAAM;AACvC,cAAAuF,UAAcvD,IAACC,OAAA9E;AAAc,YAAA,CACxBA,SAAK;AACNyC,wBAAc,mBAAiB,IAAM;AAAA,QAAC,OAAA;AAAA,cAAA,CAC9B4F,MAAMC,OAAOtI,OAAK,CAAC,GAAC;AAC5ByC,0BAAc,mBAAmB6F,OAAOtI,OAAK,CAAC;AAAA,UAAC;AAAA,QAAA;AAAA,MAAA;AAEtDF,cAAA+C;AAAA/C,cAAA2C;AAAA3C,cAAAoI;AAAAA,IAAA,OAAA;AAAAA,YAAApI,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyI;AAAA,QAAAzI,UAAA2C,eAAA;AAGY8F,YAAAA,MAAA;AACL9F,sBAAc,mBAAiB,IAAM;AAAA,MAAC;AACzC3C,cAAA2C;AAAA3C,cAAAyI;AAAAA,IAAA,OAAA;AAAAA,YAAAzI,EAAA,EAAA;AAAA,IAAA;AACS,UAAA0I,MAAA,CAAChG,OAAMyF;AAAgB,QAAAQ;AAAA,QAAA3I,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACjCiI,2CAACC,GAAAA,WAAA,EAAgB,MAAA,QAAA,CAAO;AAAG5I,cAAA2I;AAAAA,IAAA,OAAA;AAAAA,YAAA3I,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6I;AAAA,QAAA7I,EAAA,EAAA,MAAAyI,OAAAzI,UAAA0I,KAAA;AANjBG,YAAA3H,2BAAAA,IAAC2D,iBACL,MAAA,SACG,SAAA4D,KAGC,UAAAC,KACVC,UAAAA,IAAAA,CACJ;AAAa3I,cAAAyI;AAAAzI,cAAA0I;AAAA1I,cAAA6I;AAAAA,IAAA,OAAA;AAAAA,YAAA7I,EAAA,EAAA;AAAA,IAAA;AACN,UAAA8I,MAAApG,OAAMyF,mBAAoB;AAAE,QAAAY;AAAA,QAAA/I,EAAA,EAAA,MAAAkI,OAAAlI,EAAA,EAAA,MAAAoI,OAAApI,EAAA,EAAA,MAAA6I,OAAA7I,WAAA8I,KAAA;AAtBvCC,2CAAC5D,GAAAA,WAAA,EACU,OAAA+C,KACD,MAAA,mBACA,MAAA,UACY,oBAAA,0BACR,UAAAE,KASI,cAAAS,KAQP,OAAAC,KACA,OAAA,qBAAmB;AAAG9I,cAAAkI;AAAAlI,cAAAoI;AAAApI,cAAA6I;AAAA7I,eAAA8I;AAAA9I,eAAA+I;AAAAA,IAAA,OAAA;AAAAA,YAAA/I,EAAA,GAAA;AAAA,IAAA;AACZ,UAAAgJ,MAAApE,cAAcK,QAAQnC,OAAM2E,YAAa;AACzD,UAAAwB,MAAArE,cAAcK,QAAQnC,OAAM2E,YAAa,IAAI3E,OAAM2E,eAAgB;AAAmF,QAAAyB;AAAA,QAAAlJ,EAAA,GAAA,MAAAgJ,OAAAhJ,WAAAiJ,KAAA;AAD3JC,YAAAhI,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAyD,KAChBC,UAAAA,KACL;AAAejJ,eAAAgJ;AAAAhJ,eAAAiJ;AAAAjJ,eAAAkJ;AAAAA,IAAA,OAAA;AAAAA,YAAAlJ,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAmJ;AAAA,QAAAnJ,EAAA,GAAA,MAAA+I,OAAA/I,WAAAkJ,KAAA;AA3BnBC,YAAArH,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZiH,UAAAA;AAAAA,QAAAA;AAAAA,QAwBAG;AAAAA,MAAAA,GAGJ;AAAMlJ,eAAA+I;AAAA/I,eAAAkJ;AAAAlJ,eAAAmJ;AAAAA,IAAA,OAAA;AAAAA,YAAAnJ,EAAA,GAAA;AAAA,IAAA;AAGS,UAAAoJ,MAAAxE,cAAcK,QAAQnC,OAAMuG,WAAY;AAExC,UAAAC,MAAA5G,OAAM2G,eAAgB;AAAE,QAAAE;AAAA,QAAAvJ,EAAA,GAAA,MAAA4C,gBAAA5C,WAAAoJ,OAAApJ,EAAA,GAAA,MAAAsJ,KAAA;AAHnCC,2CAACpE,GAAAA,WAAA,EACU,OAAAiE,KACF,MAAA,eACE,OAAAE,KACG1G,UAAAA,cACV,WAAA,MACS,SAAA,GACQ,oBAAA,2BACX,OAAA,eAAa;AACrB5C,eAAA4C;AAAA5C,eAAAoJ;AAAApJ,eAAAsJ;AAAAtJ,eAAAuJ;AAAAA,IAAA,OAAA;AAAAA,YAAAvJ,EAAA,GAAA;AAAA,IAAA;AACmB,UAAAwJ,MAAA5E,cAAcK,QAAQnC,OAAMuG,WAAY;AACxD,UAAAI,MAAA7E,cAAcK,QAAQnC,OAAMuG,WAAY,IAAIvG,OAAMuG,cAAe;AAAqD,QAAAK;AAAA,QAAA1J,EAAA,GAAA,MAAAwJ,OAAAxJ,WAAAyJ,KAAA;AAD3HC,YAAAxI,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAiE,KAChBC,UAAAA,KACL;AAAezJ,eAAAwJ;AAAAxJ,eAAAyJ;AAAAzJ,eAAA0J;AAAAA,IAAA,OAAA;AAAAA,YAAA1J,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2J;AAAA,QAAA3J,EAAA,GAAA,MAAAuJ,OAAAvJ,WAAA0J,KAAA;AAbnBC,YAAA7H,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZyH,UAAAA;AAAAA,QAAAA;AAAAA,QAUAG;AAAAA,MAAAA,GAGJ;AAAM1J,eAAAuJ;AAAAvJ,eAAA0J;AAAA1J,eAAA2J;AAAAA,IAAA,OAAA;AAAAA,YAAA3J,EAAA,GAAA;AAAA,IAAA;AAUS,UAAA4J,MAAAlH,OAAMmH,eAAgB;AAAE,QAAAC;AAAA,QAAA9J,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAG9BoJ,YAAA,CAAC,MAAM,KAAK,KAAK,KAAK,IAAI,EAAAC,IAAAC,QAM1B;AAAChK,eAAA8J;AAAAA,IAAA,OAAA;AAAAA,YAAA9J,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAiK;AAAA,QAAAjK,EAAA,GAAA,MAAA4C,gBAAA5C,WAAA4J,KAAA;AAjBVK,YAAA/I,2BAAAA,IAAA,SAAgB,WAAA,eACZ,yCAACgJ,GAAAA,QAAA,EACQ,MAAA,eACC,MAAA,SACK,WAAA,MACL,OAAA,oBACI,UAAA,gBACAtH,UAAAA,cACH,OAAAgH,KACM,aAAAO,SAEZL,UAAAA,IAAAA,CAOL,EAAA,CACJ;AAAM9J,eAAA4C;AAAA5C,eAAA4J;AAAA5J,eAAAiK;AAAAA,IAAA,OAAA;AAAAA,YAAAjK,EAAA,GAAA;AAAA,IAAA;AAMS,UAAAoK,MAAA1H,OAAM2H,oBAAA7G,UAAkCd,OAAM2H,kBAAmB,sBAAsB;AAA0B,QAAAC;AAAA,QAAAtK,WAAA2C,eAAA;AACzG2H,YAAAC,CAAAA,QAAO5H,cAAc,mBAAmB8D,GAAC;AAACzG,eAAA2C;AAAA3C,eAAAsK;AAAAA,IAAA,OAAA;AAAAA,YAAAtK,EAAA,GAAA;AAAA,IAAA;AAClD,UAAAwK,MAAA9H,OAAM2H,oBAAA7G,SAA8B,OAAUd,OAAM2H;AAAgB,QAAAI;AAAA,QAAAzK,EAAA,GAAA,MAAAoK,OAAApK,WAAAsK,OAAAtK,EAAA,GAAA,MAAAwK,KAAA;AAL/EC,YAAAvJ,2BAAAA,IAAC0F,GAAAA,wBAAA,EACa,UAAA,SACJ,MAAA,SACC,OAAAwD,KACQ,eAAAE,KACR,OAAAE,IAAAA,CAAoE;AAC7ExK,eAAAoK;AAAApK,eAAAsK;AAAAtK,eAAAwK;AAAAxK,eAAAyK;AAAAA,IAAA,OAAA;AAAAA,YAAAzK,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0K;AAAA,QAAA1K,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACFgK,2CAACnF,KAAAA,gBAAa,UAAA,mDAAA,CAEd;AAAevF,eAAA0K;AAAAA,IAAA,OAAA;AAAAA,YAAA1K,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2K;AAAA,QAAA3K,WAAAyK,KAAA;AAVnBE,YAAA7I,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZ2I,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,MAAAA,GAGJ;AAAM1K,eAAAyK;AAAAzK,eAAA2K;AAAAA,IAAA,OAAA;AAAAA,YAAA3K,EAAA,GAAA;AAAA,IAAA;AAMS,UAAA4K,MAAAlI,OAAMmI,kBAAArH,UAAgCd,OAAMmI,gBAAiB,kDAAkD;AAA2C,QAAAC;AAAA,QAAA9K,WAAA2C,eAAA;AAClJmI,YAAAC,CAAAA,QAAOpI,cAAc,iBAAiB8D,GAAC;AAACzG,eAAA2C;AAAA3C,eAAA8K;AAAAA,IAAA,OAAA;AAAAA,YAAA9K,EAAA,GAAA;AAAA,IAAA;AAChD,UAAAgL,MAAAtI,OAAMmI,kBAAArH,SAA4B,OAAUd,OAAMmI;AAAc,QAAAI;AAAA,QAAAjL,EAAA,GAAA,MAAA4K,OAAA5K,WAAA8K,OAAA9K,EAAA,GAAA,MAAAgL,KAAA;AAL3EC,YAAA/J,2BAAAA,IAAC0F,GAAAA,wBAAA,EACa,UAAA,SACJ,MAAA,SACC,OAAAgE,KACQ,eAAAE,KACR,OAAAE,IAAAA,CAAgE;AACzEhL,eAAA4K;AAAA5K,eAAA8K;AAAA9K,eAAAgL;AAAAhL,eAAAiL;AAAAA,IAAA,OAAA;AAAAA,YAAAjL,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkL;AAAA,QAAAlL,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACFwK,2CAAC3F,KAAAA,gBAAa,UAAA,gFAAA,CAEd;AAAevF,eAAAkL;AAAAA,IAAA,OAAA;AAAAA,YAAAlL,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAmL;AAAA,QAAAnL,WAAAiL,KAAA;AAVnBE,YAAArJ,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZmJ,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,MAAAA,GAGJ;AAAMlL,eAAAiL;AAAAjL,eAAAmL;AAAAA,IAAA,OAAA;AAAAA,YAAAnL,EAAA,GAAA;AAAA,IAAA;AASY,UAAAoL,MAAA1G,kBAAkB;AAAc,QAAA2G;AAAA,QAAArL,WAAA2C,eAAA;AAC3B0I,YAAAC,CAAAA,QAAA;AAAA,YACP7E,QAAM,gBAAc;AAAA,gBAAA,IAAA8E,MACJ,wBAAwB;AAAA,QAAA;AAC5C5I,sBAAc,YAAY8D,GAAC;AAAA,MAAC;AAC/BzG,eAAA2C;AAAA3C,eAAAqL;AAAAA,IAAA,OAAA;AAAAA,YAAArL,EAAA,GAAA;AAAA,IAAA;AACM,UAAAwL,MAAA9G,iBAAiB;AAAE,QAAA+G;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAA3L,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAY1B+K,YAAAvK,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,SAAS,UAAA,0CAE5B;AACAF,YAAAxK,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,QAAQ,UAAA,2BAE3B;AACAD,YAAAzK,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,YAAY,UAAA,kDAE/B;AAAa5L,eAAAyL;AAAAzL,eAAA0L;AAAA1L,eAAA2L;AAAAA,IAAA,OAAA;AAAAF,YAAAzL,EAAA,GAAA;AAAA0L,YAAA1L,EAAA,GAAA;AAAA2L,YAAA3L,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6L;AAAA,QAAA7L,EAAA,GAAA,MAAAoL,OAAApL,WAAAqL,OAAArL,EAAA,GAAA,MAAAwL,KAAA;AAjCrBK,YAAA3K,2BAAAA,IAAA,SAAgB,WAAA,eACZ,0CAACgJ,GAAAA,QAAA,EACQ,MAAA,YACC,OAAA,2BACI,UAAA,gBACJ,MAAA,SACK,WAAA,MACD,UAAAkB,KACK,eAAAC,KAKR,OAAAG,KACM,aAAAM,UAWbL,UAAAA;AAAAA,QAAAA;AAAAA,QAGAC;AAAAA,QAGAC;AAAAA,MAAAA,EAAAA,CAGJ,EAAA,CACJ;AAAM3L,eAAAoL;AAAApL,eAAAqL;AAAArL,eAAAwL;AAAAxL,eAAA6L;AAAAA,IAAA,OAAA;AAAAA,YAAA7L,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+L;AAAA,QAAA/L,WAAA2C,eAAA;AAMiBoJ,YAAAC,CAAAA,QAAOrJ,cAAc,mBAAmB8D,GAAC;AAACzG,eAAA2C;AAAA3C,eAAA+L;AAAAA,IAAA,OAAA;AAAAA,YAAA/L,EAAA,GAAA;AAAA,IAAA;AAClD,UAAAiM,MAAAvJ,OAAMwJ,mBAAA;AAAyB,QAAAC;AAAA,QAAAnM,EAAA,GAAA,MAAA+L,OAAA/L,WAAAiM,KAAA;AAL1CE,YAAAjL,2BAAAA,IAAC0F,GAAAA,wBAAA,EACa,UAAA,SACJ,MAAA,SACA,OAAA,oBACS,eAAAmF,KACR,OAAAE,IAAAA,CAA+B;AACxCjM,eAAA+L;AAAA/L,eAAAiM;AAAAjM,eAAAmM;AAAAA,IAAA,OAAA;AAAAA,YAAAnM,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAoM;AAAA,QAAApM,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACF0L,4CAAC7G,KAAAA,gBAAa,UAAA,iIAAA,CAId;AAAevF,eAAAoM;AAAAA,IAAA,OAAA;AAAAA,aAAApM,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAqM;AAAA,QAAArM,WAAAmM,KAAA;AAZnBE,aAAAvK,2BAAAA,KAAA,OAAA,EAAgB,WAAA,oBACZqK,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,MAAAA,GAKJ;AAAMpM,eAAAmM;AAAAnM,eAAAqM;AAAAA,IAAA,OAAA;AAAAA,aAAArM,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAsM;AAAA,QAAAtM,WAAA2C,eAAA;AAMiB2J,aAAAC,CAAAA,QAAO5J,cAAc,qBAAqB8D,GAAC;AAACzG,eAAA2C;AAAA3C,eAAAsM;AAAAA,IAAA,OAAA;AAAAA,aAAAtM,EAAA,GAAA;AAAA,IAAA;AACpD,UAAAwM,OAAA9J,OAAM+J,qBAAA;AAA2B,QAAAC;AAAA,QAAA1M,EAAA,GAAA,MAAAsM,QAAAtM,WAAAwM,MAAA;AAL5CE,aAAAxL,2BAAAA,IAAC0F,GAAAA,wBAAA,EACa,UAAA,SACJ,MAAA,SACA,OAAA,0CACS,eAAA0F,MACR,OAAAE,KAAAA,CAAiC;AAC1CxM,eAAAsM;AAAAtM,eAAAwM;AAAAxM,eAAA0M;AAAAA,IAAA,OAAA;AAAAA,aAAA1M,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2M;AAAA,QAAA3M,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACFiM,4CAACpH,KAAAA,gBAAa,UAAA,wOAAA,CAId;AAAevF,eAAA2M;AAAAA,IAAA,OAAA;AAAAA,aAAA3M,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA4M;AAAA,QAAA5M,WAAA0M,MAAA;AAZnBE,aAAA9K,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZ4K,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,MAAAA,GAKJ;AAAM3M,eAAA0M;AAAA1M,eAAA4M;AAAAA,IAAA,OAAA;AAAAA,aAAA5M,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6M;AAAA,QAAA7M,EAAA,GAAA,MAAAqM,QAAArM,WAAA4M,QAAA5M,EAAA,GAAA,MAAAuH,OAAAvH,WAAAiI,OAAAjI,EAAA,GAAA,MAAAmJ,OAAAnJ,WAAA2J,OAAA3J,EAAA,GAAA,MAAAiK,OAAAjK,EAAA,GAAA,MAAA2K,OAAA3K,EAAA,GAAA,MAAAmL,OAAAnL,WAAA6L,KAAA;AAvLVgB,sDAAgB,WAAA,+BAEZtF,UAAAA;AAAAA,QAAAA;AAAAA,QAWAU;AAAAA,QAeAkB;AAAAA,QA6BAQ;AAAAA,QAgBAM;AAAAA,QAqBAU;AAAAA,QAaAQ;AAAAA,QAaAU;AAAAA,QAoCAQ;AAAAA,QAcAO;AAAAA,MAAAA,GAgBJ;AAAM5M,eAAAqM;AAAArM,eAAA4M;AAAA5M,eAAAuH;AAAAvH,eAAAiI;AAAAjI,eAAAmJ;AAAAnJ,eAAA2J;AAAA3J,eAAAiK;AAAAjK,eAAA2K;AAAA3K,eAAAmL;AAAAnL,eAAA6L;AAAA7L,eAAA6M;AAAAA,IAAA,OAAA;AAAAA,aAAA7M,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8M;AAAA,QAAA9M,EAAA,GAAA,MAAAqD,yBAAArD,WAAA6M,MAAA;AAtMVC,aAAA5L,2BAAAA,IAAC6L,GAAAA,iBAAA,EACa1J,UAAAA,uBACQC,kBAAAA,0BAEd,OAAAyD,KAOe,mBAAA,OACnB8F,UAAAA,KAAAA,CA2LJ;AAAkB7M,eAAAqD;AAAArD,eAAA6M;AAAA7M,eAAA8M;AAAAA,IAAA,OAAA;AAAAA,aAAA9M,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgN;AAAA,QAAAhN,EAAA,GAAA,MAAAsC,YAAAtC,WAAA8M,MAAA;AAxMtBE,aAAAlL,2BAAAA,KAAA,OAAA,EAAgB,WAAA,oBACZgL,UAAAA;AAAAA,QAAAA;AAAAA,QAyMCxK;AAAAA,MAAAA,GAEL;AAAMtC,eAAAsC;AAAAtC,eAAA8M;AAAA9M,eAAAgN;AAAAA,IAAA,OAAA;AAAAA,aAAAhN,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAiN;AAAA,QAAAjN,EAAA,GAAA,MAAAgN,QAAAhN,EAAA,GAAA,MAAAwF,OAAAxF,EAAA,GAAA,MAAAiG,OAAAjG,EAAA,GAAA,MAAAqG,OAAArG,WAAA8G,KAAA;AArSVmG,aAAAnL,2BAAAA,KAAA,OAAA,EAAgB,WAAA,2BAEZ0D,UAAAA;AAAAA,QAAAA;AAAAA,QAaAS;AAAAA,QAkDAI;AAAAA,QAKAS;AAAAA,QAmBAkG;AAAAA,MAAAA,GA8MJ;AAAMhN,eAAAgN;AAAAhN,eAAAwF;AAAAxF,eAAAiG;AAAAjG,eAAAqG;AAAArG,eAAA8G;AAAA9G,eAAAiN;AAAAA,IAAA,OAAA;AAAAA,aAAAjN,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkN;AAAA,QAAAlN,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAENwM,aAAAhM,2BAAAA,IAAA,SAAY,OAAA;AAAA,QAAAiM,QAAU;AAAA,MAAA,GAAQ;AAAGnN,eAAAkN;AAAAA,IAAA,OAAA;AAAAA,aAAAlN,EAAA,GAAA;AAAA,IAAA;AASM,UAAAoN,OAAA,OAAO1K,OAAM2K,SAAU,WAAW3K,OAAM2K,OAAA7J;AAAiB,QAAA8J;AAAA,QAAAtN,WAAA2C,eAAA;AACvD2K,aAAAD,CAAAA,SAAA;AACZlK,+BAAuB;AACvBR,sBAAc,QAAQ0K,IAAI;AAAA,MAAC;AAC9BrN,eAAA2C;AAAA3C,eAAAsN;AAAAA,IAAA,OAAA;AAAAA,aAAAtN,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAuN;AAAA,QAAAvN,EAAA,GAAA,MAAAoN,QAAApN,WAAAsN,MAAA;AALtBC,aAAArM,2BAAAA,IAAA,OAAA,EAAgB,WAAA,mCACZ,UAAAA,2BAAAA,IAACsM,KAAAA,mBAA8B,cAAAJ,MACE,gBAAAE,KAAAA,CAGf,EAAA,CACtB;AAAMtN,eAAAoN;AAAApN,eAAAsN;AAAAtN,eAAAuN;AAAAA,IAAA,OAAA;AAAAA,aAAAvN,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAyN;AAAA,QAAAzN,EAAA,GAAA,MAAAkD,kBAAAlD,WAAAuN,MAAA;AAZVE,aAAAvM,2BAAAA,IAACwM,GAAAA,QAAA,EACSxK,MAAAA,gBACQC,cAAAA,mBACJ,UAAA,MACV,WAAA,MAEAoK,UAAAA,KAAAA,CAQJ;AAASvN,eAAAkD;AAAAlD,eAAAuN;AAAAvN,eAAAyN;AAAAA,IAAA,OAAA;AAAAA,aAAAzN,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2N;AAAA,QAAA3N,EAAA,GAAA,MAAAiN,QAAAjN,WAAAyN,QAAAzN,EAAA,GAAA,MAAA4B,KAAA;AAtVjB+L,aAAAzM,2BAAAA,IAAA,SAAgB,WAAA,yBACZ,0CAAC0M,GAAAA,WAAA,EAAoB,UAAA,OAAkB,WAAA,kCAEnChM,UAAAA;AAAAA,QAAAA;AAAAA,QA0BAqL;AAAAA,QAySAC;AAAAA,QAEAO;AAAAA,MAAAA,EAAAA,CAgBJ,EAAA,CACJ;AAAMzN,eAAAiN;AAAAjN,eAAAyN;AAAAzN,eAAA4B;AAAA5B,eAAA2N;AAAAA,IAAA,OAAA;AAAAA,aAAA3N,EAAA,GAAA;AAAA,IAAA;AAAA,WAzVN2N;AAAAA,EAyVM;AAvbP,WAAA7B,SAAA+B,SAAA;AAAA,QAwWyC3N,YAAU,gBAAc;AAAA,aACjB;AAAA,IAAc,OAAA;AAAA,UAChBA,YAAU,QAAM;AAAA,eACd;AAAA,MAAyB,OAAA;AAAA,YAC3BA,YAAU,YAAU;AAAA,iBAClB;AAAA,QAAgD,OAAA;AAAA,iBAEhD;AAAA,QAAwC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AA/WxF,WAAA8J,SAAA8D,SAAA;AAAA,WAsTqC5M,2BAAAA,IAAC0K,GAAAA,cAEU1L,OAAAA,SACNA,kBAAK6N,YAAAA,EAAa,GAFd,eAAe7N,OAAK,EAG7B;AAAA,EAAa;AA1TlD,WAAAiK,QAAA6D,SAAA;AAAA,WAmT8D9N,QAAK6N,YAAAA;AAAAA,EAAc;AAwIxF,WAAAE,qBAAAlO,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,CAAA;AAA8B,UAAA;AAAA,MAAAsD;AAAAA,MAAA2K;AAAAA,IAAAA,IAAAnO;AAWJ,UAAAM,KAAAkD,cAAc;AAAE,QAAAhD;AAAA,QAAAP,SAAAkO,oBAAA;AACb3N,WAAAwE,CAAAA,MAAYmJ,mBAAmBnJ,EAACC,OAAA9E,KAAa;AAACF,aAAAkO;AAAAlO,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAK,MAAAL,SAAAO,IAAA;AAPhEC,WAAAU,2BAAAA,IAACE,GAAAA,WAAe,OAAA,eACD,MAAA,OACC,OAAA,SACnB,UAAAF,2BAAAA,IAACiE,GAAAA,WAAA,EAAgB,MAAA,SACK,iBACK,gBAAA,YACT,OAAA9E,IACG,UAAAE,IACG,aAAA,YAAA,CAAW,EAAA,CACvC;AAAUP,aAAAK;AAAAL,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,WATHQ;AAAAA,EASG;ACleP,WAAS2N,mBAAmB7O,IAAoB;AACnD,WAAO,gBAAgBA,GAAG8O,WAAW,KAAK,cAAc;AAAA,EAC5D;AAEO,WAASC,0BAA0BC,WAA4B;AAClE,WAAOA,YACD,gBAAgBA,UAAUF,WAAW,KAAK,cAAc,IAAI,gBAC5D;AAAA,EACV;AAEO,WAASG,+BAA+BD,WAA4B;AACvE,WAAOA,YACD,gBAAgBA,UAAUF,WAAW,KAAK,cAAc,IAAI,qBAC5D;AAAA,EACV;AAEO,WAASI,UAAUC,aAAqBC,mBAAoC;AAC/E,WAAOA,oBACD,GAAGA,iBAAiB,IAAID,WAAW,KACnCA;AAAAA,EACV;AAEO,WAASE,cAAcF,aAAqBC,mBAAoC;AACnF,UAAME,mBAAmBF,oBACnB,GAAGA,iBAAiB,IAAID,WAAW,KACnCA;AACN,WAAON,mBAAmBS,gBAAgB;AAAA,EAC9C;ACMO,WAAAC,SAAA9O,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAkB,UAAA;AAAA,MAAA6O;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAArP;AAQgB,QAAAM;AAAA,QAAAL,SAAA8O,YAAA;AAKlBzO,WAAA;AAAA,QAAAyO;AAAAA,MAAAA;AAAc9O,aAAA8O;AAAA9O,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAAgP,SAAA;AAEjBzO,WAAAmC,CAAAA,WAAA;AACR,cAAAI,SAAA,CAAA;AAAuB,YACnBJ,OAAMoM,YAAA;AACNpM,iBAAMoM,WAAAO,QAAA,CAAAC,WAAAC,UAAA;AAAA,gBAAA,CACGD,WAASE,OAAA;AACV1M,qBAAMgM,aAAchM,OAAMgM,cAAA,CAAA;AAC1BhM,qBAAMgM,WAAYS,KAAK,IAAIzM,OAAMgM,WAAYS,KAAK,KAAA,CAAA;AAClDzM,qBAAMgM,WAAYS,KAAK,EAAAC,QAAU;AAAA,YAAoD;AAAA,gBAAA,CAEpFF,WAAShQ,IAAA;AACVwD,qBAAMgM,aAAchM,OAAMgM,cAAA,CAAA;AAC1BhM,qBAAMgM,WAAYS,KAAK,IAAIzM,OAAMgM,WAAYS,KAAK,KAAA,CAAA;AAClDzM,qBAAMgM,WAAYS,KAAK,EAAAjQ,KAAO;AAAA,YAAkD;AAAA,UAAA,CAEvF;AAAA,QAAC;AAEN,cAAAmQ,WAAiBxK,QAAQnC,QAAMgM,cAAgBY,OAAAC,KAAY7M,QAAMgM,UAAY,EAACc,UAAW;AACzFZ,kBAAUS,QAAQ;AAAA,eACX3M;AAAAA,MAAM;AAChB9C,aAAAgP;AAAAhP,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAK,MAAAL,SAAAO,IAAA;AAtBFC,WAAA;AAAA,QAAAqP,eACgBxP;AAAAA,QAAcyP,kBAAA;AAAA,QAAAC,YAEjBxP;AAAAA,MAAAA;AAoBfP,aAAAK;AAAAL,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAzBD,UAAAgQ,WAAeC,OAAAA,gBAEZzP,EAuBF;AAED,UAAA;AAAA,MAAAkC,QAAAwN;AAAAA,MAAApN,QAAAqN;AAAAA,IAAAA,IAA2BH;AAAO,QAAApP;AAAA,QAAAZ,SAAA+O,mBAAA/O,EAAA,CAAA,MAAAkQ,SAAApB,YAAA;AAExBlO,WAAAA,MAAA;AAAA,YACFmO,iBAAe;AACfA,0BAAgBrM,SAAMoM,UAAW;AAAA,QAAC;AAAA,MAAA;AAEzC9O,aAAA+O;AAAA/O,QAAA,CAAA,IAAAkQ,SAAApB;AAAA9O,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAAkQ,SAAApB,YAAA;AAAEjO,WAAA,CAAC6B,SAAMoM,UAAA;AAAY9O,QAAA,EAAA,IAAAkQ,SAAApB;AAAA9O,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAJtBiE,UAAAA,UAAUrD,IAIPC,EAAmB;AAAC,QAAAC;AAAA,QAAAd,UAAAmP,sBAAAnP,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAmQ,YAAAnQ,EAAA,EAAA,MAAAoP,WAAApP,UAAAiP,aAAAjP,EAAA,EAAA,MAAAkQ,UAAA;AAGnBpP,0CAAC,gBAAA,EAA+B,gBAAA,cACR4B,QAAAA,UACAI,QAAAA,UACQmM,gBAAAA,WACNC,UACUC,oBACXC,SAAO;AAAGpP,cAAAmP;AAAAnP,cAAAkP;AAAAlP,cAAAmQ;AAAAnQ,cAAAoP;AAAApP,cAAAiP;AAAAjP,cAAAkQ;AAAAlQ,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAgQ,YAAAhQ,UAAAc,IAAA;AAPhCC,WAAAG,2BAAAA,IAACkP,eAAA,EAAcJ,OAAAA,UAClBlP,UAAAA,IAOJ;AAASd,cAAAgQ;AAAAhQ,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,WARFe;AAAAA,EAQE;AAiBb,WAAAsP,eAAAtQ,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwB,UAAA;AAAA,MAAAyC;AAAAA,MAAAI;AAAAA,MAAAoM;AAAAA,MAAAoB;AAAAA,MAAAC;AAAAA,MAAApB;AAAAA,MAAAC;AAAAA,IAAAA,IAAArP;AAUpB,UAAA;AAAA,MAAA4C;AAAAA,IAAAA,IAEIM,iBAAAA;AAEJ,UAAA,CAAAuN,qBAAAC,sBAAA,IAAsDjO,MAAAY,SAAAA;AACtD,UAAA,CAAAsN,iBAAAC,kBAAA,IAA8CnO,MAAAY,SAAAA;AAC9C,UAAA,CAAAwN,WAAAC,YAAA,IAAkCrO,MAAAY,cAAoB;AAAE,QAAA/C;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEjBL,+BAAAyQ,IAAAA;AAAS9Q,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAhD,UAAA+Q,oBAA0BvO,MAAAC,OAAapC,EAAS;AAChD,UAAA2Q,iBAAuBD,kBAAiBE;AAAS,QAAA1Q;AAAA,QAAAP,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAAsQ,kBAAAtQ,EAAA,CAAA,MAAA8C,QAAAgM,cAAA9O,EAAA,CAAA,MAAAwQ,uBAAAxQ,EAAA,CAAA,MAAAuQ,kBAAAvQ,EAAA,CAAA,MAAA0C,OAAAoM,YAAA;AAE9BvO,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA+O;AAAAA,UAAA2B;AAAAA,QAAAA,IAAA1Q;AAIhB,cAAA2Q,YAAkBX,wBAAwBU;AAC1C,cAAAE,aAAmBtO,QAAMgM,cAAgBhM,QAAMgM,WAAaS,KAAK;AAAE,eAC5DrO,2BAAAA,IAAC,WAAA,EAAiBqO,OACGL,UACMoB,gBACLa,WAAAA,WACCC,YACI,gBAAAb,kBAAkBY,WACpB,cAAA,MAAMR,mBAAmBpB,KAAK,GAC7B,eAAAyB,eAAcK,IAAK3O,OAAMoM,WAAYS,KAAK,GAAAjQ,EAAe,EAAA,GACnE,GAAG4R,UAAU,EAAE;AAAA,MAAG;AAC5ClR,aAAAkP;AAAAlP,aAAAsQ;AAAAtQ,QAAA,CAAA,IAAA8C,QAAAgM;AAAA9O,aAAAwQ;AAAAxQ,aAAAuQ;AAAAvQ,QAAA,CAAA,IAAA0C,OAAAoM;AAAA9O,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAfD,UAAAsR,aAAmB/Q;AAejB,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAAsQ,kBAAAtQ,SAAAoP,WAAApP,EAAA,EAAA,MAAA2C,iBAAA3C,EAAA,EAAA,MAAA0C,OAAAoM,YAAA;AAEkBtO,uBAAA;AAAA,YAAA,CACX4O,SAAO;AAAA;AAAA,QAAA;AAEZyB,yBAAiB;AACjBzB,kBAAAA,EAAOmC,KAAAC,CAAAA,SAAA;AAAA,cAAA,CACEA,MAAI;AAAA;AAAA,UAAA;AAGT,gBAAAC,WAAiBD,KAAIE,KAAAA;AAErB,gBAAAC,YAAkBC,MAAAC,SAAAf,IAAmBW,QAAQ,CAAC;AAE9C,gBAAAK,oBAA0BpP,OAAMoM;AAChC,gBAAAiD,kBAAwBC,iBAAAA,sBAAsBL,SAAS;AAGvD,gBAAAM,gBAAsBF,gBAAe3N,OAAAkL,CAAAA,cAAA,CACzBwC,mBAAiBI,KAAAzL,CAAAA,MAAmBA,EAACnH,OAAQgQ,UAAShQ,EAAG,CACpE;AAED2S,wBAAa5C,QAAA8C,CAAAA,gBAAA;AACTnB,2BAAcoB,IAAK9C,YAAShQ,EAAG;AAAA,UAAC,CACnC;AACDqD,wBAAc2N,gBAAc,CAAA,GAAM2B,eAAa,GAAKH,iBAAiB,OAAO;AAAA,QAAC,CAAA,EAAAO,MAAAlI,OAAA,EAAAmI,QAAA,MAI9DzB,kBAAkB,CAAC;AAAA,MAAA;AACzC7Q,aAAAsQ;AAAAtQ,aAAAoP;AAAApP,cAAA2C;AAAA3C,QAAA,EAAA,IAAA0C,OAAAoM;AAAA9O,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AA5BD,UAAAuS,cAAoB/R;AA4BnB,QAAAI;AAAA,QAAAC;AAAA,QAAAb,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAKWE,0CAAC4R,GAAAA,UAAA,EAAQ;AACT3R,0CAACF,GAAAA,YAAA,EAAoB,SAAA,aACC,WAAA,aAAY,UAAA,UAElC;AAAaX,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAD,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAuS,eAAAvS,UAAA4Q,WAAA;AACZ9P,WAAAqO,sBACGrN,gCAAC2Q,GAAAA,QAAA,EAAgB7B,SAAAA,WACC,UAAA1B,YAAY0B,WACb,SAAA,QACH,MAAA,SACG2B,SAAAA,aACZ3B,UAAAA;AAAAA,QAAAA,2CAAa8B,GAAAA,kBAAA,EAAuB,MAAA,WAAA,CAAU,mCAAOC,GAAAA,eAAA;QAAgB;AAAA,MAAA,GAE1E;AAAS3S,cAAAmP;AAAAnP,cAAAkP;AAAAlP,cAAAuS;AAAAvS,cAAA4Q;AAAA5Q,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAAc,IAAA;AAdjBC,oDAAe,WAAA,qCACXH,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,QAICC;AAAAA,MAAAA,GASL;AAAMd,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAsQ,kBAAAtQ,UAAA2C,eAAA;AAY6B3B,WAAAd,CAAAA,UAAWyC,cAAc2N,gBAAgBpQ,KAAK;AAACF,cAAAsQ;AAAAtQ,cAAA2C;AAAA3C,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAC7CS,WAAA;AAAA,QAAA7B,IAAM;AAAA,QAAEkQ,OAAS;AAAA,MAAA;AAAIxP,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAAsR,cAAAtR,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAsQ,kBAAAtQ,UAAAgB,MAAAhB,EAAA,EAAA,MAAA0C,OAAAoM,YAAA;AATtDxN,YAAAJ,2BAAAA,IAAC0R,uBAA4BtC,6BACH,UAAA,kBACH,OAAA5N,OAAMoM,YACHI,UACJ,MAAA,SACMoC,YACOb,mBAAAA,wBACH,gBAAA,MACD,eAAAzP,IACE,iBAAAG,GAAAA,CAAqB;AAAGnB,cAAAsR;AAAAtR,cAAAkP;AAAAlP,cAAAsQ;AAAAtQ,cAAAgB;AAAAhB,QAAA,EAAA,IAAA0C,OAAAoM;AAAA9O,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAGlC,UAAAuB,MAAAmP,oBAAelN;AAAc,QAAAhC;AAAA,QAAAxB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAE1Bc,YAAAA,MAAMmP,mBAAkBnN,MAAU;AAACxD,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAA0Q,mBAAA1Q,UAAAsQ,kBAAAtQ,EAAA,EAAA,MAAAuB,KAAA;AAH7DE,YAAAP,2BAAAA,IAAC,mBAAuBwP,wBACD,MAAAnP,KACU+O,gBACP,SAAA9O,IAAAA,CAAmC;AAAGxB,cAAA0Q;AAAA1Q,cAAAsQ;AAAAtQ,cAAAuB;AAAAvB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAsB,OAAAtB,UAAAyB,KAAA;AAhBpEC,YAAAI,2BAAAA,KAAC+Q,GAAAA,OAAA,EAAgB,WAAA,WAEbvR,UAAAA;AAAAA,QAAAA;AAAAA,QAWAG;AAAAA,MAAAA,GAIJ;AAAQzB,cAAAsB;AAAAtB,cAAAyB;AAAAzB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAA0B,OAAA1B,UAAAe,IAAA;AAnCZa,YAAAE,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZf,UAAAA;AAAAA,QAAAA;AAAAA,QAiBAW;AAAAA,MAAAA,GAkBJ;AAAM1B,cAAA0B;AAAA1B,cAAAe;AAAAf,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,WApCN4B;AAAAA,EAoCM;AAzGd,WAAAuI,QAAApF,GAAA;AA+DY+N,YAAAC,MAAchO,CAAC;AAAA,EAAC;AAyD5B,QAAMiO,YAAYxQ,MAAMyQ,KACpB,SAAAC,kBAAAnT,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA2B,UAAA;AAAA,MAAAsP;AAAAA,MAAAgB,gBAAA4C;AAAAA,MAAA7C;AAAAA,MAAA8C;AAAAA,MAAAC;AAAAA,MAAAnE;AAAAA,MAAAoE;AAAAA,MAAAlC;AAAAA,IAAAA,IAAArR;AAWvB,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAMIM,iBAAAA;AAEJ,UAAAsQ,oBAA0B/Q,MAAAC,QAAckB,OAAAA,MAAMjB,QAAQ,GAAG4N,cAAc,IAAIf,KAAK,MAAM,CAAC;AACvF,UAAAgB,iBAAuB4C,YAAYI,kBAAiBtC;AAEtB,UAAA5Q,KAAA,GAAGiQ,cAAc,IAAIf,KAAK;AAAM,QAAAhP;AAAA,QAAAP,EAAA,CAAA,MAAAK,MAAAL,SAAA0C,QAAA;AAA9CnC,WAAAoD,OAAAA,MAAMjB,QAAQrC,EAAgC;AAACL,aAAAK;AAAAL,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA/D,UAAAwT,UAAgBjT;AACiB,UAAAC,KAAA,GAAG8P,cAAc,IAAIf,KAAK;AAAS,QAAA3O;AAAA,QAAAZ,EAAA,CAAA,MAAAQ,MAAAR,SAAA0C,QAAA;AAAjD9B,WAAA+C,OAAAA,MAAMjB,QAAQlC,EAAmC;AAACR,aAAAQ;AAAAR,aAAA0C;AAAA1C,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAArE,UAAAyT,aAAmB7S;AAEnB,UAAA8S,kBAAwBlR,MAAAC,OAAagR,UAAU;AAAE,QAAA5S;AAAA,QAAAb,SAAAsQ,kBAAAtQ,EAAA,CAAA,MAAAwT,WAAAxT,EAAA,CAAA,MAAAuP,SAAAvP,EAAA,CAAA,MAAAyT,cAAAzT,UAAA2C,iBAAA3C,EAAA,EAAA,MAAAuQ,gBAAA;AAEjC1P,WAAAA,MAAA;AAAA,aACP6S,gBAAezC,YAAauC,WAAO,CAAKA,YAAYjD,gBAAc;AACnE5N,wBAAc,GAAG2N,cAAc,IAAIf,KAAK,QAAQkE,UAAU;AAAA,QAAC;AAE/DC,wBAAezC,UAAWwC;AAAAA,MAAU;AACvCzT,aAAAsQ;AAAAtQ,aAAAwT;AAAAxT,aAAAuP;AAAAvP,aAAAyT;AAAAzT,cAAA2C;AAAA3C,cAAAuQ;AAAAvQ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,UAAAyT,YAAA;AAAE3S,YAAC2S,UAAU;AAACzT,cAAAyT;AAAAzT,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AALfwC,UAAAyB,UAAgBpD,IAKbC,EAAY;AAKU,UAAAC,KAAA,GAAGuP,cAAc,IAAIf,KAAK;AAAS,QAAAvO;AAAA,QAAAhB,UAAAsT,eAAA;AAQ3BtS,WAAAsS,iBAAiBpS,2BAAAA,IAACyR,GAAAA,eAAA,EAAoB,MAAA,SAAO;AAAG3S,cAAAsT;AAAAtT,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AACvD,UAAAmB,KAAA8D,QAAQmM,YAAU5B,KAAO;AAAC,QAAAlO;AAAA,QAAAtB,EAAA,EAAA,MAAAoT,aAAApT,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAe,MAAAf,EAAA,EAAA,MAAAgB,MAAAhB,UAAAmB,IAAA;AATxCG,2CAACsE,OAAAA,OAAA,EAAY,MAAA7E,IACF8E,IAAAA,GAAAA,oBACO,WAAA,aACX,UAAA,MACUqJ,UACL,MAAA,SACMkE,WACE,cAAA,OACC,cAAApS,IACP,OAAAG,IAA0B;AAAGnB,cAAAoT;AAAApT,cAAAkP;AAAAlP,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAoR,YAAA9R,MAAAU,EAAA,EAAA,MAAAqT,cAAA;AAE1C9R,YAAA,CAAC2N,YACEhO,2BAAAA,IAACyS,GAAAA,OAAA,EAAa,OAAA,SAAoB,YAACvC,YAAU9R,IACzC,UAAA4B,2BAAAA,IAAC2D,GAAAA,YAAA,EACQ,MAAA,SACM,cAAA,QACA,WAAA,OACF,SAAA,MAAMwO,aAAAA,GACf,UAAAnS,2BAAAA,IAAC8F,GAAAA,cAAA,EAAmB,MAAA,QAAA,CAAO,EAAA,CAC/B,GACJ;AAAQhH,cAAAkP;AAAAlP,QAAA,EAAA,IAAAoR,YAAA9R;AAAAU,cAAAqT;AAAArT,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAuB,KAAA;AArBhBC,YAAAM,2BAAAA,KAAA,OAAA,EAAgB,WAAA,2CACZR,UAAAA;AAAAA,QAAAA;AAAAA,QAWCC;AAAAA,MAAAA,GAWL;AAAMvB,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAoR,YAAA5B,OAAA;AAEL/N,YAAA2P,YAAU5B,SAAWtO,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,WACE,WAAA,yCACxCyQ,UAAAA,YAAU5B,MAAAA,CACf;AAAaxP,QAAA,EAAA,IAAAoR,YAAA5B;AAAAxP,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAoR,YAAA9R,IAAA;AAEZoC,YAAA0P,YAAU9R,MAAQ4B,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,WACE,WAAA,yCACrCyQ,UAAAA,YAAU9R,GAAAA,CACf;AAAaU,QAAA,EAAA,IAAAoR,YAAA9R;AAAAU,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAwB,OAAAxB,UAAAyB,OAAAzB,EAAA,EAAA,MAAA0B,KAAA;AAlCjBE,YAAAE,2BAAAA,KAAA8R,qBAAA,EACIpS,UAAAA;AAAAA,QAAAA;AAAAA,QAyBCC;AAAAA,QAKAC;AAAAA,MAAAA,GAGY;AAEd1B,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,WApCH4B;AAAAA,EAoCG,GAEX,SAASiS,SAASC,WAA2BC,WAA2B;AACpE,WAAOD,UAAUvE,UAAUwE,UAAUxE,SACjCuE,UAAUxD,mBAAmByD,UAAUzD,kBACvCwD,UAAUvD,mBAAmBwD,UAAUxD,kBACvCuD,UAAUR,kBAAkBS,UAAUT,iBACtCU,MAAMF,UAAU1C,YAAY2C,UAAU3C,UAAU,KAChD0C,UAAUV,cAAcW,UAAUX;AAAAA,EAC1C,CACJ;AAEA,WAAAa,gBAAAlU,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAyB,UAAA;AAAA,MAAAsP;AAAAA,MAAA2E;AAAAA,MAAAC;AAAAA,MAAA7D;AAAAA,IAAAA,IAAAvQ;AAYrB,UAAA;AAAA,MAAA+C;AAAAA,IAAAA,IAEIG,iBAAAA;AAAwB,QAAA5C;AAAA,QAAAL,EAAA,CAAA,MAAAsQ,kBAAAtQ,SAAA8C,UAAA9C,EAAA,CAAA,MAAAuP,OAAA;AAEZlP,WAAAkP,UAAK/L,SAAiBG,OAAAA,MAAMb,QAAQ,GAAGwN,cAAc,IAAIf,KAAK,MAAM,IAAC/L;AAAYxD,aAAAsQ;AAAAtQ,aAAA8C;AAAA9C,aAAAuP;AAAAvP,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAjG,UAAAoU,UAAgB/T;AAAkF,QAAAE;AAAA,QAAAP,SAAAmU,SAAA;AAKhF5T,WAAA8T,CAAAA,WAAU,CAACH,SAAOC,QAAAA,IAAS3Q;AAAYxD,aAAAmU;AAAAnU,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAErDF,WAAAU,2BAAAA,IAACoT,gBAAA,EAAY,QAAA,MAAO,UAAA,oBAAgB;AAActU,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAsQ,kBAAAtQ,SAAAoU,WAAApU,EAAA,CAAA,MAAAuP,OAAA;AAE7C3O,WAAA2O,UAAK/L,UACF1B,2BAAAA,KAAA,OAAA,EACI,UAAA;AAAA,QAAAZ,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY,MAAA,GAAG0K,cAAc,IAAIf,KAAK,QAC5B1J,IAAAA,GAAAA,oBACJ,UAAA,MACO,OAAA,MACF,MAAA,SACQ,cAAA,OACN,OAAAZ,QAAQmP,OAAO,EAAA,CAAC;AAAA,uCAE7B7O,KAAAA,cAAA,EAAoB,OAAAN,QAAQmP,OAAO,GAC/BA,qBAAW,iCAAA,CAChB;AAAA,MAAA,GACJ;AAAMpU,aAAAsQ;AAAAtQ,aAAAoU;AAAApU,aAAAuP;AAAAvP,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,UAAAY,IAAA;AAddC,WAAAK,2BAAAA,IAACqT,GAAAA,iBACI3T,UAAAA,GAAAA,CAcL;AAAgBZ,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,UAAAmU,SAAA;AAEhBrT,WAAAI,2BAAAA,IAACsT,GAAAA,eAAA,EACG,UAAAtT,2BAAAA,IAACuR,GAAAA,QAAA,EACG,WAAA,MACQ,SAAA,YACC0B,SAAAA,SACH,OAAA,WAAU,gBAEpB,GACJ;AAAgBnU,cAAAmU;AAAAnU,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAkU,QAAAlU,EAAA,EAAA,MAAAO,MAAAP,EAAA,EAAA,MAAAa,MAAAb,UAAAc,IAAA;AAhCbC,WAAAe,2BAAAA,KAAC4L,aACK,UAAA,MACO,mBAAA,oBACVwG,MACQ,cAAA3T,IAEdC,UAAAA;AAAAA,QAAAA;AAAAA,QACAK;AAAAA,QAiBAC;AAAAA,MAAAA,GAUJ;AAASd,cAAAkU;AAAAlU,cAAAO;AAAAP,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,WAlCFe;AAAAA,EAkCE;ACjWN,WAAA0T,cAAA1U,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAuB,UAAA;AAAA,MAAAyU;AAAAA,MAAAC;AAAAA,MAAAnF;AAAAA,MAAAoF;AAAAA,MAAA1F;AAAAA,MAAA2F,MAAAxU;AAAAA,MAAAyU;AAAAA,IAAAA,IAAA/U;AAMI,UAAA8U,OAAAxU,OAAcmD,SAAP,UAAPnD;AAAc,QAAAE;AAAA,QAAAP,SAAA0U,MAAAjV,QAAAO,SAAA2U,MAAA;AAiBzBpU,WAAAwU,CAAAA,YAA4BJ,KAAIhS,cAAe+R,MAAKjV,MAAOsV,OAAO;AAAC/U,QAAA,CAAA,IAAA0U,MAAAjV;AAAAO,aAAA2U;AAAA3U,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAA8U,sBAAA9U,SAAAkP,YAAAlP,EAAA,CAAA,MAAA0U,MAAAxU,SAAAF,EAAA,CAAA,MAAAwP,SAAAxP,SAAA6U,QAAA7U,EAAA,CAAA,MAAAO,IAAA;AAP7DC,0CAACoG,GAAAA,wBAAA,EACf4I,OACDqF,MACI,UAAA,SACH,OAAAH,MAAKxU,OACFgP,UACU4F,oBACL,eAAAvU,IAAmE;AAAGP,aAAA8U;AAAA9U,aAAAkP;AAAAlP,QAAA,CAAA,IAAA0U,MAAAxU;AAAAF,aAAAwP;AAAAxP,aAAA6U;AAAA7U,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAPzF,UAAAgV,mBAAyBxU;AAOiE,QAEtFoU,SAAO;AAAA,UAAAhU;AAAA,UAAAZ,EAAA,EAAA,MAAAgV,oBAAAhV,UAAA4U,SAAA;AAEHhU,aAAAM,2BAAAA,IAACE,YAAA,EACUwT,OAAAA,SACNI,UAAAA,kBACL;AAAUhV,gBAAAgV;AAAAhV,gBAAA4U;AAAA5U,gBAAAY;AAAAA,MAAA,OAAA;AAAAA,aAAAZ,EAAA,EAAA;AAAA,MAAA;AAAA,aAHVY;AAAAA,IAGU;AAAA,WAEXoU;AAAAA,EAAgB;AC/BpB,WAAAC,0BAAAlV,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAmC,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAKtC,UAAA;AAAA,MAAA2C;AAAAA,MAAAE;AAAAA,IAAAA,IAAiCK,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,SAAAkP,UAAA;AASrC7O,mDAAgB,WAAA,cACZ,UAAAa,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYsP,MARE,uBASH,MAAA,YACP3U,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAmU;AAAAA,UAAAC;AAAAA,QAAAA,IAAApU;AAAiC,eACxBW,+BAAC,iBACMgO,UACH,OAAA,YACE,SAAA,kEACHyF,MACCD,OAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,aAAAkP;AAAAlP,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAAkP,UAAA;AAEN3O,mDAAgB,WAAA,cAEZ,UAAAW,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYuP,MArBA,qBAsBD,MAAA,YACP3U,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAkU,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAA7U;AAAiC,eACxBU,2BAAAA,IAAC,eAAA,EACMgO,UACH,OAAA,UACE,SAAA,yDACHyF,MAAAA,QACCD,OAAAA,QAAAA,CAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,aAAAkP;AAAAlP,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAkP,YAAAlP,SAAA4C,gBAAA5C,EAAA,CAAA,MAAA0C,QAAA;AAELlC,WAAAmD,OAAAA,MAAMjB,QApCY,qBAoCc,KAAKxB,2BAAAA,IAAA,SAAgB,WAAA,eAClD,UAAAA,2BAAAA,IAAC2E,GAAAA,oBAAA,EACaqJ,UACH,OAAAvL,OAAAA,MAAMjB,QAtCK,4BAsC4B,GACvC,OAAA,oBACD4S,MAxCY,8BAyCb,MAAA,SACK1S,UAAAA,aAAAA,CAAY,EAAA,CAC9B;AAAM5C,aAAAkP;AAAAlP,aAAA4C;AAAA5C,aAAA0C;AAAA1C,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAK,MAAAL,SAAAO,MAAAP,EAAA,EAAA,MAAAQ,IAAA;AAtCVI,WAAAkB,2BAAAA,KAAA8R,qBAAA,EACIvT,UAAAA;AAAAA,QAAAA;AAAAA,QAcAE;AAAAA,QAeCC;AAAAA,MAAAA,GAQK;AACPR,aAAAK;AAAAL,aAAAO;AAAAP,cAAAQ;AAAAR,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,WAvCHY;AAAAA,EAuCG;AClDJ,WAAA2U,yBAAAxV,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAkC,UAAA;AAAA,MAAA2P;AAAAA,MAAA4F;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAA3G;AAAAA,IAAAA,IAAAnP;AAsBrC,UAAA;AAAA,MAAA2C;AAAAA,MAAAE;AAAAA,MAAAE;AAAAA,IAAAA,IAIIG,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,SAAA8C,QAAA;AAUKzC,WAAAsD,OAAAA,MAAMb,QAJD,oBAI0B;AAAC9C,aAAA8C;AAAA9C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAArD,UAAA8V,eAAqBzV;AAAiC,QAAAE;AAAA,QAAAP,SAAA0C,QAAA;AAEtD,YAAAqT,eAAqBpS,OAAAA,MAAMjB,QAND,oBAM0B;AACzBnC,WAAA,OAAOwV,iBAAiB,WAAWA,eAAeC,KAAAA,gBAAgBD,YAAY;AAAC/V,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA1G,UAAAiW,qBAA2B1V;AAAgF,QAAAC;AAAA,QAAAR,SAAAkP,UAAA;AAInG1O,0CAAC,6BAAoC0O,SAAAA,CAAQ;AAAGlP,aAAAkP;AAAAlP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAkP,YAAAlP,SAAAwV,WAAA;AAI3C5U,WAAA4U,aAAatU,+BAAA,OAAA,EAAgB,WAAA,cAC1B,UAAAA,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYsQ,MAfD,wBAgBA,MAAA,YACPrV,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA6T;AAAAA,UAAAC;AAAAA,QAAAA,IAAA9T;AAAiC,8CACvB,eAAA,EACG,OAAA,aACGqO,UACJyF,MACCD,OAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,aAAAkP;AAAAlP,aAAAwV;AAAAxV,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAkP,YAAAlP,UAAA6V,WAAA;AAELhV,WAAAgV,aAAa3U,+BAAA,OAAA,EAAgB,WAAA,cAC1B,UAAAA,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYuQ,MA3BD,wBA4BA,MAAA,YACPrV,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA4T,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAAvU;AAAiC,eACxBI,+BAAC,iBACG,OAAA,aACGgO,UACJyF,MAAAA,QACCD,OAAAA,SAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,aAAAkP;AAAAlP,cAAA6V;AAAA7V,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4V,MAAA;AAEL9U,WAAA8U,QAAQ1U,+BAAA,OAAA,EAAgB,WAAA,cACrB,UAAAA,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYwQ,MA3CN,mBA4CK,MAAA,YACPrV,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA2T,OAAA2B;AAAAA,UAAA1B,MAAA2B;AAAAA,QAAAA,IAAAvV;AAAiC,eACxBG,+BAAC,iBACG,OAAA,QACGgO,UACJyF,MAAAA,QACCD,OAAAA,SAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,cAAAkP;AAAAlP,cAAA4V;AAAA5V,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAY,MAAAZ,UAAAa,MAAAb,EAAA,EAAA,MAAAc,IAAA;AAvCVC,oDAAgB,WAAA,uCAEXH,UAAAA;AAAAA,QAAAA;AAAAA,QAaAC;AAAAA,QAaAC;AAAAA,MAAAA,GAaL;AAAMd,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA4C,gBAAA5C,EAAA,EAAA,MAAA4P,UAAA5P,UAAA0C,QAAA;AAGD1B,WAAA4O,yCAAU,OAAA,EAAgB,WAAA,cACvB,UAAA1O,2BAAAA,IAAC2E,GAAAA,oBAAA,EACU,OAAAlC,OAAAA,MAAMjB,QA/DR,mBA+DgC,GAC9B,OAAA,gBACD6T,MAjED,qBAkEA,MAAA,UACA,MAAA,SAEKrH,UACAtM,UAAAA,aAAAA,CAAY,EAAA,CAC9B;AAAM5C,cAAAkP;AAAAlP,cAAA4C;AAAA5C,cAAA4P;AAAA5P,cAAA0C;AAAA1C,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA4C,gBAAA5C,EAAA,EAAA,MAAA2V,OAAA3V,UAAA0C,QAAA;AAELvB,WAAAwU,sCAAO,OAAA,EAAgB,WAAA,cACpB,UAAAzU,2BAAAA,IAAC2E,GAAAA,oBAAA,EAA0B,OAAAlC,OAAAA,MAAMjB,QAzE3B,gBAyEgD,GAC3B,OAAA,cACD8T,MA3EpB,kBA4EmB,MAAA,UACA,MAAA,SAEKtH,UACAtM,UAAAA,aAAAA,CAAY,EAAA,CAC9C;AAAM5C,cAAAkP;AAAAlP,cAAA4C;AAAA5C,cAAA2V;AAAA3V,cAAA0C;AAAA1C,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA4C,gBAAA5C,EAAA,EAAA,MAAA0V,OAAA1V,UAAA0C,QAAA;AAELpB,YAAAoU,sCAAO,OAAA,EAAgB,WAAA,cACpB,UAAAxU,2BAAAA,IAAC2E,GAAAA,oBAAA,EAA0B,OAAAlC,OAAAA,MAAMjB,QAnF3B,gBAmFgD,GAC3B,OAAA,cACD+T,MArFpB,kBAsFmB,MAAA,UACA,MAAA,SAEKvH,UACAtM,UAAAA,aAAAA,CAAY,EAAA,CAC9C;AAAM5C,cAAAkP;AAAAlP,cAAA4C;AAAA5C,cAAA0V;AAAA1V,cAAA0C;AAAA1C,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAgB,MAAAhB,EAAA,EAAA,MAAAmB,IAAA;AAjCVI,qDAAgB,WAAA,uCACXP,UAAAA;AAAAA,QAAAA;AAAAA,QAYAG;AAAAA,QAWAG;AAAAA,MAAAA,GAWL;AAAMtB,cAAAsB;AAAAtB,cAAAgB;AAAAhB,cAAAmB;AAAAnB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAyV,WAAAzV,EAAA,EAAA,MAAA8V,gBAAA9V,UAAAiW,oBAAA;AAELzU,YAAAiU,WAAW3T,gCAAA,OAAA,EAAgB,WAAA,eACxB,UAAA;AAAA,QAAAZ,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY8Q,MA9FC,sBA+FH7Q,IAAAA,GAAAA,oBACG,OAAA,iBACF,MAAA,SACKqJ,UACH+G,OAAAA,oBACA,OAAAhR,QAAQ6Q,YAAY,GAAC;AAAA,QACnC5U,+BAACqE,KAAAA,gBAAoB,OAAAN,QAAQ6Q,YAAY,GACpCA,UAAAA,eAAe,uBAAuB,gCAAA,CAC3C;AAAA,MAAA,GACJ;AAAM9V,cAAAkP;AAAAlP,cAAAyV;AAAAzV,cAAA8V;AAAA9V,cAAAiW;AAAAjW,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAuB,OAAAvB,EAAA,EAAA,MAAAwB,OAAAxB,EAAA,EAAA,MAAAQ,MAAAR,UAAAe,IAAA;AA/FVU,qDAAgB,WAAA,2BAEZjB,UAAAA;AAAAA,QAAAA;AAAAA,QAEAO;AAAAA,QA2CAQ;AAAAA,QAqCCC;AAAAA,MAAAA,GAaL;AAAMxB,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAAQ;AAAAR,cAAAe;AAAAf,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,WAjGNyB;AAAAA,EAiGM;AC5IP,WAAAkV,wBAAA5W,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAiC,UAAA;AAAA,MAAAyV,KAAArV;AAAAA,MAAAsV,KAAApV;AAAAA,MAAA2O;AAAAA,IAAAA,IAAAnP;AACI,UAAA2V,MAAArV,OAAUmD,gBAAVnD;AACA,UAAAsV,MAAApV,OAAUiD,gBAAVjD;AAQxC,UAAA;AAAA,MAAAmC;AAAAA,MAAAE;AAAAA,IAAAA,IAGIK,iBAAAA;AAAY,QAAAzC;AAAA,QAAAR,SAAAkP,UAAA;AAQR1O,0CAAC,6BAAoC0O,SAAAA,CAAQ;AAAGlP,aAAAkP;AAAAlP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAA4C,gBAAA5C,EAAA,CAAA,MAAA2V,OAAA3V,SAAA0C,QAAA;AAE/C9B,WAAA+U,sCAAO,OAAA,EAAgB,WAAA,cACpB,UAAAzU,2BAAAA,IAAC2E,GAAAA,oBAAA,EAA0B,OAAAlC,OAAAA,MAAMjB,QATvB,gBAS4C,GACxBwM,UACH,OAAA,cACDsH,MAZhB,kBAae,MAAA,UACA,MAAA,SACK5T,UAAAA,aAAAA,CAAY,EAAA,CAC9C;AAAM5C,aAAAkP;AAAAlP,aAAA4C;AAAA5C,aAAA2V;AAAA3V,aAAA0C;AAAA1C,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAA4C,gBAAA5C,EAAA,CAAA,MAAA0V,OAAA1V,UAAA0C,QAAA;AACL7B,WAAA6U,sCAAO,OAAA,EAAgB,WAAA,cACpB,UAAAxU,2BAAAA,IAAC2E,GAAAA,oBAAA,EAA0B,OAAAlC,OAAAA,MAAMjB,QAjBvB,gBAiB4C,GACxBwM,UACH,OAAA,cACDuH,MApBhB,kBAqBe,MAAA,UACA,MAAA,SACK7T,UAAAA,aAAAA,CAAY,EAAA,CAC9C;AAAM5C,aAAAkP;AAAAlP,aAAA4C;AAAA5C,aAAA0V;AAAA1V,cAAA0C;AAAA1C,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAQ,MAAAR,UAAAY,MAAAZ,EAAA,EAAA,MAAAa,IAAA;AArBVC,oDAAgB,WAAA,2BAEZN,UAAAA;AAAAA,QAAAA;AAAAA,QAECI;AAAAA,QASAC;AAAAA,MAAAA,GASL;AAAMb,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,WAtBNc;AAAAA,EAsBM;AC3CP,WAAA8V,gBAAA7W,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,CAAA;AAAyB,UAAA;AAAA,MAAAqC;AAAAA,IAAAA,IAAAvC;AAEwB,QAAAM;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAQxCL,WAAAyB,2BAAAA,KAAA,OAAA,EAAe,WAAA,kCACX,UAAA;AAAA,QAAAZ,2BAAAA,IAAC2V,GAAAA,UAAA,EAAQ;AAAA,uCACRlW,GAAAA,YAAA,EAAoB,SAAA,aACC,WAAA,QAAO,UAAA,aAAA,CAE7B;AAAA,MAAA,GACJ;AAAMX,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAAsC,UAAA;AAXd/B,WAAAW,2BAAAA,IAAC6L,GAAAA,iBAAA,EACsB,mBAAA,OACV,SAAA,MACM,gBAAA,OAEX,OAAA1M,IASHiC,SAAAA,CAEL;AAAkBtC,aAAAsC;AAAAtC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,WAhBlBO;AAAAA,EAgBkB;ACfnB,WAASuW,kBAAkB;AAAA,IACIC;AAAAA,IACA9H;AAAAA,IACAC;AAAAA,IACAtK;AAAAA,IACAuK;AAAAA,IACAC;AAAAA,EAQtC,GAAG;AAEC,UAAM;AAAA,MACF1M;AAAAA,MACAsU;AAAAA,MACArU;AAAAA,IAAAA,IACAM,iBAAAA;AAEJ,UAAMgU,kBAAkBC,KAAAA,sBAAAA;AAExB,UAAM5G,iBAAiByG,cAAc,kBAAkB;AAEvD,UAAMI,eAAexT,OAAAA,MAAMjB,QAAQ,cAAc;AAEjD,UAAM0U,mBAAmBzT,OAAAA,MAAMjB,QAAQ4N,cAAc;AACrD,UAAMxB,aAAgCuI,MAAAA,QAAQ,MAAM;AAChD,UAAI,CAACD,oBAAoB,OAAOA,qBAAqB,kBAC1C,CAAA;AACX,aAAOE,KAAAA,kBAAkBF,gBAAgB,KAAK,CAAA;AAAA,IAClD,GAAG,CAACA,gBAAgB,CAAC;AAErB,UAAMrI,kBAAkBA,CAAC7O,UAA6B;AAClD,UAAI,CAACwC,OACD;AACJC,oBAAc2N,gBAAgBpQ,KAAK;AACnC,UAAI,CAAC6W,aAAa;AACd,cAAMQ,UAAUrX,MAAMkE,OAAOqC,CAAAA,MAAKxB,QAAQwB,GAAGnH,EAAE,CAAC,EAAEyK,IAAI,CAACtD,QAAWA,IAAEnH,EAAE;AACtE,YAAI6X,gBAAgB,CAACI,QAAQjT,SAAS6S,YAAY,GAAG;AACjDxU,wBAAc,gBAAgBa,MAAS;AACvCyT,0BAAgB/C,KAAK;AAAA,YACjBsD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,WACI3V,2BAAAA,KAAA8R,qBAAA,EACI,UAAA;AAAA,MAAA1S,2BAAAA,IAAC,OAAA,EAAI,WAAW,eACZ,UAAAA,2BAAAA,IAAC,UAAA,EAAS,YACA,WACA,UACA,oBACA,SAAUuO,CAAAA,aAAa;AACnBuH,sBAAc1G,gBAAgBb,WAAW,8CAA8CjM,MAAS;AAAA,MACpG,GACA,SAAS4L,UACH,MAAMA,QAAAA,EACHmC,KAAKmG,CAAAA,QAAOA,IAAI3N,IAAI4N,CAAAA,UAASjV,OAAOpD,MAAMqE,OAAAA,MAAMgU,OAAOjV,OAAOpD,EAAE,CAAC,EAAE8E,OAAOa,OAAO,CAAC,IACrFzB,QACN,gBAAA,CAAiC,EAAA,CAC/C;AAAA,MAEAtC,+BAAC,OAAA,EAAI,WAAW,eAEZ,0CAAC,iBAAA,EACI,UAAA;AAAA,QAAA,CAAC6V,eACE7V,2BAAAA,IAAC,0BAAA,EAAyB,UACA,WAAA,CAAuB;AAAA,QACpD6V,eACG7V,2BAAAA,IAAC,yBAAA,EAAwB,SAAA,CAAmB;AAAA,MAAA,EAAA,CACpD,EAAA,CAEJ;AAAA,MAEC,CAAC6V,eAAe7V,2BAAAA,IAAC,OAAA,EAAI,WAAW,eAE7B,UAAAA,2BAAAA,IAACgJ,GAAAA,QAAA,EACG,UACA,UAAU,gBACV,WAAW,MACX,eAAe,CAAChK,YAAkB;AAC9ByC,sBAAc,gBAAgBzC,OAAK;AAAA,MACvC,GACA,MAAM,SACN,OAAO,iBACP,OAAOiX,gBAAgB,IACtBrI,UAAAA,WACI1K,OAAQkL,CAAAA,cAAcrK,QAAQqK,WAAWhQ,EAAE,CAAC,EAC5CyK,IAAKuF,CAAAA,gBACFpO,2BAAAA,IAAC0K,GAAAA,YAAA,EACW,OAAO0D,YAAUhQ,IAAIsY,SAAAA,GAC5BtI,UAAAA,YAAUE,MAAAA,GAFEF,YAAUhQ,EAG3B,CACH,GACT,EAAA,CAEJ;AAAA,IAAA,GACJ;AAAA,EAER;AChGA,QAAMuY,YAAoC;AAAA,IACtC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,UAAU;AAAA,EACd;AAEO,WAAAC,qBAAA/X,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,GAAA;AAA8B,UAAA;AAAA,MAAA8X;AAAAA,MAAAC;AAAAA,MAAA9I;AAAAA,IAAAA,IAAAnP;AAUjC,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAGIM,iBAAAA;AAEJ,UAAAgV,kBAAwBF,WAAW,eAAe;AAClD,UAAAG,gBAAsB,GAAGD,eAAe;AAGxC,UAAAE,WAAiB,GAAGF,eAAe;AACnC,UAAAG,UAAgB,GAAGH,eAAe;AAClC,UAAAI,cAAoB,GAAGJ,eAAe;AACtC,UAAAK,WAAiB,GAAGL,eAAe;AACnC,UAAAM,mBAAyB,GAAGN,eAAe;AAG3C,UAAAO,cAAoB,GAAGP,eAAe;AACtC,UAAAQ,sBAA4B,GAAGD,WAAW;AAC1C,UAAAE,uBAA6B,GAAGF,WAAW;AAC3C,UAAAG,kBAAwB,GAAGH,WAAW;AACtC,UAAAI,oBAA0B,GAAGJ,WAAW;AACxC,UAAAK,qBAA2B,GAAGL,WAAW;AAAW,QAAAnY;AAAA,QAAAL,EAAA,CAAA,MAAAmY,YAAAnY,SAAA0C,QAAA;AAE9BrC,WAAAsD,OAAAA,MAAMjB,QAAQyV,QAAQ,KAAK;AAAenY,aAAAmY;AAAAnY,aAAA0C;AAAA1C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAhE,UAAA8Y,gBAAsBzY;AAA2C,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAqY,eAAArY,SAAA0C,QAAA;AACxCnC,WAAAoD,OAAAA,MAAMjB,QAAQ2V,WAAW,KAAK;AAAGrY,aAAAqY;AAAArY,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA1D,UAAA+Y,mBAAyBxY;AAAkC,QAAAyY;AAAA,QAAAC;AAAA,QAAA3X;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAE;AAAA,QAAAC;AAAA,QAAAE;AAAA,QAAAC;AAAA,QAAAkD;AAAA,QAAAE;AAAA,QAAAC;AAAA,QAAA7E;AAAA,QAAAI;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAG;AAAA,QAAAnB,EAAA,CAAA,MAAAkY,iBAAAlY,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAAgY,YAAAhY,EAAA,CAAA,MAAAmY,YAAAnY,EAAA,EAAA,MAAA8Y,iBAAA9Y,UAAA4Y,qBAAA5Y,EAAA,EAAA,MAAA0Y,wBAAA1Y,EAAA,EAAA,MAAAyY,uBAAAzY,EAAA,EAAA,MAAA2Y,mBAAA3Y,EAAA,EAAA,MAAA6Y,sBAAA7Y,EAAA,EAAA,MAAAuY,oBAAAvY,EAAA,EAAA,MAAAoY,WAAApY,EAAA,EAAA,MAAA2C,iBAAA3C,EAAA,EAAA,MAAAqY,eAAArY,EAAA,EAAA,MAAA+Y,oBAAA/Y,EAAA,EAAA,MAAAsY,YAAAtY,UAAA0C,QAAA;AAC3D,YAAAwW,eAAqBvV,OAAAA,MAAMjB,QAAQ0V,OAAO;AAG1C,YAAAe,2BAAiCxV,OAAAA,MAAMjB,QAAQ+V,mBAAmB;AAClE,YAAAW,4BAAkCzV,OAAAA,MAAMjB,QAAQgW,oBAAoB;AAAE,UAAApT;AAAA,UAAAtF,EAAA,EAAA,MAAA2Y,mBAAA3Y,UAAA0C,QAAA;AACzC4C,eAAA3B,OAAAA,MAAMjB,QAAQiW,eAAe,KAAK;AAAO3Y,gBAAA2Y;AAAA3Y,gBAAA0C;AAAA1C,gBAAAsF;AAAAA,MAAA,OAAA;AAAAA,eAAAtF,EAAA,EAAA;AAAA,MAAA;AAAtE,YAAAqZ,uBAA6B/T;AAA0C,UAAAE;AAAA,UAAAxF,EAAA,EAAA,MAAA4Y,qBAAA5Y,UAAA0C,QAAA;AACxC8C,eAAA7B,OAAAA,MAAMjB,QAAQkW,iBAAiB,KAAK;AAAU5Y,gBAAA4Y;AAAA5Y,gBAAA0C;AAAA1C,gBAAAwF;AAAAA,MAAA,OAAA;AAAAA,eAAAxF,EAAA,EAAA;AAAA,MAAA;AAA7E,YAAAsZ,yBAA+B9T;AAC/B,YAAA+T,0BAAgC5V,OAAAA,MAAMjB,QAAQmW,kBAAkB;AAAE,UAAApT;AAAA,UAAAzF,EAAA,EAAA,MAAAkY,iBAAAlY,UAAA0C,QAAA;AAE9C+C,eAAA9B,OAAAA,MAAMjB,QAAQwV,aAAa;AAAClY,gBAAAkY;AAAAlY,gBAAA0C;AAAA1C,gBAAAyF;AAAAA,MAAA,OAAA;AAAAA,eAAAzF,EAAA,EAAA;AAAA,MAAA;AAAhD,YAAAwZ,cAAoB/T;AACpB,YAAAgU,iBAA6C7H,MAAA8H,QAAcF,WAAW,IAAIA,cAAWhW;AACrF,YAAAmW,uBAA6B,CAACF,kBAAkBA,eAAc7J,WAAA;AAAc,UAAAlK;AAAA,UAAA1F,EAAA,EAAA,MAAAkY,iBAAAlY,UAAA2C,eAAA;AAElD+C,eAAAxF,CAAAA,UAAA;AAAA,cAAA,CACjBA,OAAK;AAAEyC,0BAAcuV,eAAa1U,MAAW;AAAA,UAAC,OAAA;AAC9Cb,0BAAcuV,eAAehY,KAAK;AAAA,UAAC;AAAA,QAAA;AAC3CF,gBAAAkY;AAAAlY,gBAAA2C;AAAA3C,gBAAA0F;AAAAA,MAAA,OAAA;AAAAA,eAAA1F,EAAA,EAAA;AAAA,MAAA;AAHD,YAAA4Z,oBAA0BlU;AAK1B,YAAAmU,sBAA4B,OAAOf,kBAAkB;AACrD,YAAAgB,yBAA+B,OAAOf,qBAAqB;AAKnC1T,YAAA;AAEX4T,WAAAlM,GAAAA;AAAe,UAAA/M,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAER0E,cAAAtD,2BAAAA,KAAA,OAAA,EAAe,WAAA,kCACX,UAAA;AAAA,UAAAZ,2BAAAA,IAAC6Y,GAAAA,iBAAA,EAAe;AAAA,yCACfpZ,GAAAA,YAAA,EAAoB,SAAA,aACC,WAAA,QAAO,UAAA,qBAAA,CAE7B;AAAA,QAAA,GACJ;AAAMX,gBAAAoF;AAAAA,MAAA,OAAA;AAAAA,cAAApF,EAAA,EAAA;AAAA,MAAA;AAGMsB,YAAA;AAA6B,UAAAqE;AAAA,UAAA3F,UAAAyZ,gBAAA;AAS1B9T,eAAA8T,kBAAc,CAAA;AAAMzZ,gBAAAyZ;AAAAzZ,gBAAA2F;AAAAA,MAAA,OAAA;AAAAA,eAAA3F,EAAA,EAAA;AAAA,MAAA;AAEpB,YAAA8F,OAAA6T,uBAAoBnW,SAAe;AAAoB,UAAAuC;AAAA,UAAA/F,EAAA,EAAA,MAAAkY,iBAAAlY,UAAA2C,eAAA;AAQ7DoD,eAAA2J,OAAAsK,QAAAnC,SAAwB,EAAC9N,IAAA/D,CAAAA,SAAA;AAAM,gBAAA,CAAAsC,SAAAkH,KAAA,IAAAxJ;AAAc,iBAC1ClE,2BAAAA,KAACmY,GAAAA,iBAAA,EAAmC/Z,OAAAA,SAAkB,WAAA,2BAGlD,UAAA;AAAA,YAAAgB,2BAAAA,IAAA,OAAA,EAAgB,WAAA,8BAEhB;AAAA,2CACCuR,GAAAA,QAAA,EAAa,MAAA,SACG,SAAA,QACA,SAAA1N,CAAAA,MAAA;AACLA,gBAACmV,eAAAA;AACDnV,gBAACoV,gBAAAA;AAAkB,qBACZxX,cAAcuV,eAAa,CAAGhY,OAAK,CAAC;AAAA,YAAC,GAC7C,UAAA,OAAA,CAEX;AAAA,UAAA,EAAA,GAdkBA,OAetB;AAAA,QAAkB,CACrB;AAACF,gBAAAkY;AAAAlY,gBAAA2C;AAAA3C,gBAAA+F;AAAAA,MAAA,OAAA;AAAAA,eAAA/F,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,UAAAkY,iBAAAlY,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA4Z,qBAAA5Z,EAAA,EAAA,MAAA2F,QAAA3F,UAAA8F,QAAA9F,EAAA,EAAA,MAAA+F,MAAA;AAlCVxE,cAAAL,2BAAAA,IAAA,SAAgB,WAAA,eAEZ,yCAACkZ,GAAAA,aAAA,EACc,WAAA,UACE,aAAA,0BACHlL,UACJgJ,MAAAA,eACC,OAAAvS,MACQiU,eAAAA,mBACR,OAAA9T,MACO,cAAAgG,UAOb/F,UAAAA,KAAAA,CAmBL,EAAA,CACJ;AAAM/F,gBAAAkY;AAAAlY,gBAAAkP;AAAAlP,gBAAA4Z;AAAA5Z,gBAAA2F;AAAA3F,gBAAA8F;AAAA9F,gBAAA+F;AAAA/F,gBAAAuB;AAAAA,MAAA,OAAA;AAAAA,cAAAvB,EAAA,EAAA;AAAA,MAAA;AAOe,YAAAgG,OAAA6T,uBAAuB3K;AAC1B,YAAAjJ,OAAA4T,sBAAsB,MAAMf;AAAa,UAAA9Y,EAAA,EAAA,MAAAmY,YAAAnY,UAAAgG,QAAAhG,EAAA,EAAA,MAAAiG,MAAA;AAN3DzE,sDAAgB,WAAA,eACZ,UAAAN,+BAAC0E,OAAAA,OAAA,EAAYuS,gBACFtS,IAAAA,GAAAA,oBACG,OAAA,aACD,MAAA,SACI,UAAAG,MACH,OAAAC,MAAyC,GAE3D;AAAMjG,gBAAAmY;AAAAnY,gBAAAgG;AAAAhG,gBAAAiG;AAAAjG,gBAAAwB;AAAAA,MAAA,OAAA;AAAAA,cAAAxB,EAAA,EAAA;AAAA,MAAA;AAKe,YAAAkG,OAAA4T,0BAA0B5K;AAE7B,YAAA9I,OAAA0T,yBAAyB,MAAMf;AAAgB,UAAA1S;AAAA,UAAArG,EAAA,EAAA,MAAAqY,eAAArY,UAAAkG,QAAAlG,EAAA,EAAA,MAAAoG,MAAA;AAL7DC,cAAAnF,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYyS,MAAAA,aACFxS,IAAAA,GAAAA,oBACG,OAAA,gBACG,UAAAK,MACJ,MAAA,SACC,OAAAE,MAA+C;AAC3DpG,gBAAAqY;AAAArY,gBAAAkG;AAAAlG,gBAAAoG;AAAApG,gBAAAqG;AAAAA,MAAA,OAAA;AAAAA,cAAArG,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAsG;AAAA,UAAAtG,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACF4F,cAAAxE,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBACvC,UAAA;AAAA,UAAAO,2BAAAA,IAAA,OAAG,UAAA,mFAAA,CAEyB;AAAA,0CAC5B,MAAA,EACI,UAAA;AAAA,YAAAA,2BAAAA,IAAA,QAAK,UAAA,0CAAA,CAA0C;AAAA,YAC/CA,2BAAAA,IAAA,+EAAiE;AAAA,YACjEA,2BAAAA,YAAK,UAAA,8CAAA,CAA8C;AAAA,YACnDA,2BAAAA,IAAA,mDAAqC;AAAA,YACrCA,2BAAAA,YAAK,UAAA,mCAAA,CAAmC;AAAA,YACxCA,2BAAAA,IAAA,QAAK,UAAA,+BAAA,CAA+B;AAAA,YACpCA,2BAAAA,IAAA,QAAK,UAAA,sDAAA,CAAsD;AAAA,UAAA,EAAA,CAC/D;AAAA,QAAA,GACJ;AAAalB,gBAAAsG;AAAAA,MAAA,OAAA;AAAAA,cAAAtG,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAwG;AAAA,UAAAxG,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,UAAA;AAIRxR,cAAAE,CAAAA,SAAA;AAAC,gBAAA;AAAA,YAAAgO;AAAAA,YAAAC;AAAAA,UAAAA,IAAAjO;AAGmB,iBACVxF,+BAAC,iBACG,OAAA,gDACG,UAAA8W,YAAY9I,UAChByF,MACCD,OAAK;AAAA,QAAG;AACtB1U,gBAAAkP;AAAAlP,gBAAAgY;AAAAhY,gBAAAwG;AAAAA,MAAA,OAAA;AAAAA,cAAAxG,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA0G;AAAA,UAAA1G,EAAA,EAAA,MAAAuY,oBAAAvY,UAAAwG,KAAA;AAXLE,6CAACd,OAAAA,OAAA,EAAY2S,wBACD,MAAA,YACP/R,UAAAA,KAUL;AAAQxG,gBAAAuY;AAAAvY,gBAAAwG;AAAAxG,gBAAA0G;AAAAA,MAAA,OAAA;AAAAA,cAAA1G,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA2G;AAAA,UAAA3G,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAERiG,cAAA7E,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBAAoB,UAAA;AAAA,UAAA;AAAA,UAErDO,2BAAAA,IAAA,UAAM,UAAA,8BAAA,CAA2B;AAAA,UAAO;AAAA,QAAA,GAElD;AAAalB,gBAAA2G;AAAAA,MAAA,OAAA;AAAAA,cAAA3G,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA6G;AAAA,UAAA7G,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,UAAA;AAIRnR,cAAAC,CAAAA,SAAA;AAAC,gBAAA;AAAA,YAAA4N,OAAAU;AAAAA,YAAAT,MAAAU;AAAAA,UAAAA,IAAAvO;AAGmB,iBACV5F,2BAAAA,IAAC,eAAA,EACG,OAAA,oCACG,UAAA8W,YAAY9I,UAChByF,MAAAA,QACCD,OAAAA,QAAAA,CAAK;AAAA,QAAG;AACtB1U,gBAAAkP;AAAAlP,gBAAAgY;AAAAhY,gBAAA6G;AAAAA,MAAA,OAAA;AAAAA,cAAA7G,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA8G;AAAA,UAAA9G,EAAA,EAAA,MAAAsY,YAAAtY,UAAA6G,KAAA;AAXLC,6CAAClB,OAAAA,OAAA,EAAY0S,gBACD,MAAA,YACPzR,UAAAA,KAUL;AAAQ7G,gBAAAsY;AAAAtY,gBAAA6G;AAAA7G,gBAAA8G;AAAAA,MAAA,OAAA;AAAAA,cAAA9G,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA+G;AAAA,UAAA/G,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAERqG,6CAACpG,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBAAoB,UAAA,+JAM/D;AAAaX,gBAAA+G;AAAAA,MAAA,OAAA;AAAAA,cAAA/G,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,EAAA,MAAAqG,OAAArG,UAAA0G,OAAA1G,EAAA,EAAA,MAAA8G,KAAA;AA/DjBrF,cAAAK,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZuE,UAAAA;AAAAA,UAAAA;AAAAA,UAOAC;AAAAA,UAeAI;AAAAA,UAcAC;AAAAA,UAMAG;AAAAA,UAcAC;AAAAA,QAAAA,GAOJ;AAAM/G,gBAAAqG;AAAArG,gBAAA0G;AAAA1G,gBAAA8G;AAAA9G,gBAAAyB;AAAAA,MAAA,OAAA;AAAAA,cAAAzB,EAAA,EAAA;AAAA,MAAA;AAOyB,YAAAiH,MAAAiS,iBAAY1V,UAAkB0V,iBAAY,OAAYA,aAAYtB,aAAc;AAAE,UAAA1Q;AAAA,UAAAlH,EAAA,EAAA,MAAAoY,WAAApY,UAAA2C,eAAA;AAC/EuE,cAAAS,CAAAA,QAAA;AACN,gBAAAqG,UAAcjJ,IAACC,OAAA9E;AAAc,cACzBA,YAAU,IAAE;AAAEyC,0BAAcyV,SAAO5U,MAAW;AAAA,UAAC,OAAA;AAC9Cb,0BAAcyV,SAASiC,SAASna,OAAK,CAAC;AAAA,UAAC;AAAA,QAAA;AAC/CF,gBAAAoY;AAAApY,gBAAA2C;AAAA3C,gBAAAkH;AAAAA,MAAA,OAAA;AAAAA,cAAAlH,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,EAAA,MAAAoY,WAAApY,WAAAiH,OAAAjH,EAAA,GAAA,MAAAkH,KAAA;AAVzBxF,sDAAgB,WAAA,eACZ,UAAAR,+BAAC2E,GAAAA,oBAAA,EAAyBuS,MAAAA,SACA,MAAA,UACC,OAAA,uBACD,MAAA,SACC,OAAAnR,KACG,UAAAC,KAIT,GAEzB;AAAMlH,gBAAAoY;AAAApY,iBAAAiH;AAAAjH,iBAAAkH;AAAAlH,iBAAA0B;AAAAA,MAAA,OAAA;AAAAA,cAAA1B,EAAA,GAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAENkB,uDAAgB,WAAA,oBACZ,UAAA;AAAA,UAAAV,2BAAAA,IAACP,GAAAA,cAAoB,SAAA,aACF,OAAA,aACI,WAAA,cAAc,UAAA,6BAAA,CAErC;AAAA,yCACCA,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,sBAAsB,UAAA,gFAAA,CAEjE;AAAA,QAAA,GACJ;AAAMX,iBAAA4B;AAAAA,MAAA,OAAA;AAAAA,cAAA5B,EAAA,GAAA;AAAA,MAAA;AASS,YAAAmH,MAAAgS,6BAAwB3V,UAAkB2V,6BAAwB,OAAYA,yBAAwBvB,aAAc;AAAE,UAAAxQ;AAAA,UAAApH,EAAA,GAAA,MAAAyY,uBAAAzY,WAAA2C,eAAA;AACnHyE,cAAAiB,CAAAA,QAAA;AACN,gBAAAyF,UAAc/I,IAACC,OAAA9E;AAAc,cACzBA,YAAU,IAAE;AAAEyC,0BAAc8V,qBAAmBjV,MAAW;AAAA,UAAC,OAAA;AAC1Db,0BAAc8V,qBAAqB4B,SAASna,OAAK,CAAC;AAAA,UAAC;AAAA,QAAA;AAC3DF,iBAAAyY;AAAAzY,iBAAA2C;AAAA3C,iBAAAoH;AAAAA,MAAA,OAAA;AAAAA,cAAApH,EAAA,GAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,GAAA,MAAAkP,YAAAlP,EAAA,GAAA,MAAAyY,uBAAAzY,EAAA,GAAA,MAAAmH,OAAAnH,WAAAoH,KAAA;AAZTvF,6CAAA,OAAA,EAAgB,WAAA,cACZ,UAAAX,+BAAC2E,GAAAA,oBAAA,EACS4S,MAAAA,qBACA,MAAA,UACC,OAAA,kBACD,MAAA,SACIvJ,UACH,OAAA/H,KACG,UAAAC,KAIT,EAAA,CAET;AAAMpH,iBAAAkP;AAAAlP,iBAAAyY;AAAAzY,iBAAAmH;AAAAnH,iBAAAoH;AAAApH,iBAAA6B;AAAAA,MAAA,OAAA;AAAAA,cAAA7B,EAAA,GAAA;AAAA,MAAA;AASS,YAAAqH,MAAA+R,8BAAyB5V,UAAkB4V,8BAAyB,OAAYA,0BAAyBxB,aAAc;AAAE,UAAAtQ;AAAA,UAAAtH,EAAA,GAAA,MAAA0Y,wBAAA1Y,WAAA2C,eAAA;AACtH2E,cAAAgT,CAAAA,QAAA;AACN,gBAAAzM,UAAc9I,IAACC,OAAA9E;AAAc,cACzBA,YAAU,IAAE;AAAEyC,0BAAc+V,sBAAoBlV,MAAW;AAAA,UAAC,OAAA;AAC3Db,0BAAc+V,sBAAsB2B,SAASna,OAAK,CAAC;AAAA,UAAC;AAAA,QAAA;AAC5DF,iBAAA0Y;AAAA1Y,iBAAA2C;AAAA3C,iBAAAsH;AAAAA,MAAA,OAAA;AAAAA,cAAAtH,EAAA,GAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,GAAA,MAAAkP,YAAAlP,EAAA,GAAA,MAAA0Y,wBAAA1Y,EAAA,GAAA,MAAAqH,OAAArH,WAAAsH,KAAA;AAZTvF,6CAAA,OAAA,EAAgB,WAAA,cACZ,UAAAb,+BAAC2E,GAAAA,oBAAA,EACS6S,MAAAA,sBACA,MAAA,UACC,OAAA,mBACD,MAAA,SACIxJ,UACH,OAAA7H,KACG,UAAAC,KAIT,EAAA,CAET;AAAMtH,iBAAAkP;AAAAlP,iBAAA0Y;AAAA1Y,iBAAAqH;AAAArH,iBAAAsH;AAAAtH,iBAAA+B;AAAAA,MAAA,OAAA;AAAAA,cAAA/B,EAAA,GAAA;AAAA,MAAA;AAQS,YAAAuH,MAAA8R,wBAAwB;AAAO,UAAA7R;AAAA,UAAAxH,EAAA,GAAA,MAAA2Y,mBAAA3Y,WAAA2C,eAAA;AACvB6E,cAAA+S,CAAAA,YAAW5X,cAAcgW,iBAAiBzY,WAAS,OAAO;AAACF,iBAAA2Y;AAAA3Y,iBAAA2C;AAAA3C,iBAAAwH;AAAAA,MAAA,OAAA;AAAAA,cAAAxH,EAAA,GAAA;AAAA,MAAA;AAAA,UAAA0H;AAAA,UAAAE;AAAA,UAAA5H,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAM1EgH,cAAAxG,2BAAAA,IAAC0K,eAAA,EAAiB,OAAA,WAAU,UAAA,+BAE5B;AACAhE,cAAA1G,2BAAAA,IAAC0K,eAAA,EAAiB,OAAA,SAAQ,UAAA,iCAE1B;AAAa5L,iBAAA0H;AAAA1H,iBAAA4H;AAAAA,MAAA,OAAA;AAAAF,cAAA1H,EAAA,GAAA;AAAA4H,cAAA5H,EAAA,GAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,GAAA,MAAAkP,YAAAlP,EAAA,GAAA,MAAA2Y,mBAAA3Y,EAAA,GAAA,MAAAuH,OAAAvH,WAAAwH,KAAA;AAlBrBxF,cAAAd,2BAAAA,IAAA,SAAgB,WAAA,cACZ,0CAACgJ,GAAAA,QAAA,EACagF,UACJyJ,MAAAA,iBACN,WAAA,MACM,MAAA,UACC,OAAApR,KACQ,eAAAC,KACR,OAAA,eACM,aAAAgT,UAIb9S,UAAAA;AAAAA,UAAAA;AAAAA,UAGAE;AAAAA,QAAAA,EAAAA,CAGJ,EAAA,CACJ;AAAM5H,iBAAAkP;AAAAlP,iBAAA2Y;AAAA3Y,iBAAAuH;AAAAvH,iBAAAwH;AAAAxH,iBAAAgC;AAAAA,MAAA,OAAA;AAAAA,cAAAhC,EAAA,GAAA;AAAA,MAAA;AAQS,YAAA6H,MAAAyR,0BAA0B;AAAU,UAAAxR;AAAA,UAAA9H,EAAA,GAAA,MAAA4Y,qBAAA5Y,WAAA2C,eAAA;AAC5BmF,cAAA2S,CAAAA,YAAW9X,cAAciW,mBAAmB1Y,WAAS,UAAU;AAACF,iBAAA4Y;AAAA5Y,iBAAA2C;AAAA3C,iBAAA8H;AAAAA,MAAA,OAAA;AAAAA,cAAA9H,EAAA,GAAA;AAAA,MAAA;AAAA,UAAA+H;AAAA,UAAAC;AAAA,UAAAC;AAAA,UAAAC;AAAA,UAAAlI,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAM/EqH,cAAA7G,2BAAAA,IAAC0K,eAAA,EAAiB,OAAA,YAAW,UAAA,+BAE7B;AACA5D,cAAA9G,2BAAAA,IAAC0K,eAAA,EAAiB,OAAA,QAAO,UAAA,QAEzB;AACA3D,cAAA/G,2BAAAA,IAAC0K,eAAA,EAAiB,OAAA,OAAM,UAAA,OAExB;AACA1D,cAAAhH,2BAAAA,IAAC0K,eAAA,EAAiB,OAAA,QAAO,UAAA,2BAEzB;AAAa5L,iBAAA+H;AAAA/H,iBAAAgI;AAAAhI,iBAAAiI;AAAAjI,iBAAAkI;AAAAA,MAAA,OAAA;AAAAH,cAAA/H,EAAA,GAAA;AAAAgI,cAAAhI,EAAA,GAAA;AAAAiI,cAAAjI,EAAA,GAAA;AAAAkI,cAAAlI,EAAA,GAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,GAAA,MAAAkP,YAAAlP,EAAA,GAAA,MAAA4Y,qBAAA5Y,EAAA,GAAA,MAAA6H,OAAA7H,WAAA8H,KAAA;AAxBrB5C,cAAAhE,2BAAAA,IAAA,SAAgB,WAAA,cACZ,0CAACgJ,GAAAA,QAAA,EACagF,UACJ,MAAA,UACN,WAAA,MACM0J,MAAAA,mBACC,OAAA/Q,KACQ,eAAAC,KACR,OAAA,iBACM,aAAA4S,QAIb3S,UAAAA;AAAAA,UAAAA;AAAAA,UAGAC;AAAAA,UAGAC;AAAAA,UAGAC;AAAAA,QAAAA,EAAAA,CAGJ,EAAA,CACJ;AAAMlI,iBAAAkP;AAAAlP,iBAAA4Y;AAAA5Y,iBAAA6H;AAAA7H,iBAAA8H;AAAA9H,iBAAAkF;AAAAA,MAAA,OAAA;AAAAA,cAAAlF,EAAA,GAAA;AAAA,MAAA;AAEUmB,WAAA;AACX6X,WAAAnT,GAAAA;AACSgT,WAAAA;AACAjY,WAAA;AACCC,WAAA;AACDC,WAAA;AACIoO,WAAAA;AACHlO,WAAAuY,4BAAuB/V,UAAkB+V,4BAAuB,OAAYA,wBAAuB3B,aAAc;AAAE5X,aAAAkY;AAAAlY,aAAAkP;AAAAlP,aAAAgY;AAAAhY,aAAAmY;AAAAnY,cAAA8Y;AAAA9Y,cAAA4Y;AAAA5Y,cAAA0Y;AAAA1Y,cAAAyY;AAAAzY,cAAA2Y;AAAA3Y,cAAA6Y;AAAA7Y,cAAAuY;AAAAvY,cAAAoY;AAAApY,cAAA2C;AAAA3C,cAAAqY;AAAArY,cAAA+Y;AAAA/Y,cAAAsY;AAAAtY,cAAA0C;AAAA1C,cAAAgZ;AAAAhZ,cAAAiZ;AAAAjZ,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA4B;AAAA5B,cAAA6B;AAAA7B,cAAA+B;AAAA/B,cAAAgC;AAAAhC,cAAAkF;AAAAlF,cAAAoF;AAAApF,cAAAqF;AAAArF,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAA6X,WAAAhZ,EAAA,EAAA;AAAAiZ,WAAAjZ,EAAA,EAAA;AAAAsB,YAAAtB,EAAA,EAAA;AAAAuB,YAAAvB,EAAA,EAAA;AAAAwB,YAAAxB,EAAA,EAAA;AAAAyB,YAAAzB,EAAA,EAAA;AAAA0B,YAAA1B,EAAA,EAAA;AAAA4B,YAAA5B,EAAA,EAAA;AAAA6B,YAAA7B,EAAA,EAAA;AAAA+B,YAAA/B,EAAA,EAAA;AAAAgC,YAAAhC,EAAA,EAAA;AAAAkF,YAAAlF,EAAA,EAAA;AAAAoF,YAAApF,EAAA,EAAA;AAAAqF,YAAArF,EAAA,EAAA;AAAAQ,WAAAR,EAAA,EAAA;AAAAY,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAAc,WAAAd,EAAA,EAAA;AAAAe,WAAAf,EAAA,EAAA;AAAAgB,WAAAhB,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsF;AAAA,QAAAtF,EAAA,GAAA,MAAA6Y,sBAAA7Y,WAAA2C,eAAA;AAChH2C,YAAAqV,CAAAA,QAAA;AACN,cAAAC,UAAc7V,IAACC,OAAA9E;AAAc,YACzBA,YAAU,IAAE;AAAEyC,wBAAckW,oBAAkBrV,MAAW;AAAA,QAAC,OAAA;AAE1D,gBAAAqX,WAAiBR,SAASna,OAAK;AAAE,cAC7B2a,YAAQ,KAASA,YAAQ,KAAO;AAChClY,0BAAckW,oBAAoBgC,QAAQ;AAAA,UAAC;AAAA,QAAA;AAAA,MAAA;AAGtD7a,eAAA6Y;AAAA7Y,eAAA2C;AAAA3C,eAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAxF,EAAA,GAAA,MAAAgZ,MAAAhZ,EAAA,GAAA,MAAAsF,OAAAtF,EAAA,GAAA,MAAAQ,MAAAR,EAAA,GAAA,MAAAY,MAAAZ,EAAA,GAAA,MAAAa,MAAAb,EAAA,GAAA,MAAAc,MAAAd,EAAA,GAAA,MAAAe,MAAAf,WAAAgB,IAAA;AAhBLwE,2CAAC,IAAA,EACSqT,MAAAA,IACA,MAAAjY,IACC,OAAAC,IACD,MAAAC,IACIoO,UAAAA,IACH,OAAAlO,IACG,UAAAsE,KAST;AACHtF,eAAAgZ;AAAAhZ,eAAAsF;AAAAtF,eAAAQ;AAAAR,eAAAY;AAAAZ,eAAAa;AAAAb,eAAAc;AAAAd,eAAAe;AAAAf,eAAAgB;AAAAhB,eAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,GAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACF+E,2CAAC9E,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBAAoB,UAAA,yFAE/D;AAAaX,eAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0F;AAAA,QAAA1F,EAAA,GAAA,MAAAwF,OAAAxF,WAAAmB,IAAA;AArBjBuE,YAAA5D,2BAAAA,KAAA,OAAA,EAAgB,WAAAX,IACZqE,UAAAA;AAAAA,QAAAA;AAAAA,QAkBAC;AAAAA,MAAAA,GAGJ;AAAMzF,eAAAwF;AAAAxF,eAAAmB;AAAAnB,eAAA0F;AAAAA,IAAA,OAAA;AAAAA,YAAA1F,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2F;AAAA,QAAA3F,EAAA,GAAA,MAAAsB,OAAAtB,EAAA,GAAA,MAAAuB,OAAAvB,WAAAwB,OAAAxB,EAAA,GAAA,MAAAyB,OAAAzB,EAAA,GAAA,MAAA0B,OAAA1B,EAAA,GAAA,MAAA4B,OAAA5B,EAAA,GAAA,MAAA6B,OAAA7B,WAAA+B,OAAA/B,EAAA,GAAA,MAAAgC,OAAAhC,EAAA,GAAA,MAAAkF,OAAAlF,WAAA0F,KAAA;AArPVC,qDAAgB,WAAArE,KAEZC,UAAAA;AAAAA,QAAAA;AAAAA,QAuCAC;AAAAA,QASAC;AAAAA,QAkEAC;AAAAA,QAcAE;AAAAA,QAWAC;AAAAA,QAgBAE;AAAAA,QAgBAC;AAAAA,QAsBAkD;AAAAA,QA4BAQ;AAAAA,MAAAA,GAwBJ;AAAM1F,eAAAsB;AAAAtB,eAAAuB;AAAAvB,eAAAwB;AAAAxB,eAAAyB;AAAAzB,eAAA0B;AAAA1B,eAAA4B;AAAA5B,eAAA6B;AAAA7B,eAAA+B;AAAA/B,eAAAgC;AAAAhC,eAAAkF;AAAAlF,eAAA0F;AAAA1F,eAAA2F;AAAAA,IAAA,OAAA;AAAAA,YAAA3F,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8F;AAAA,QAAA9F,EAAA,GAAA,MAAAiZ,MAAAjZ,WAAAoF,OAAApF,EAAA,GAAA,MAAA2F,KAAA;AAlQVG,YAAA5E,2BAAAA,IAAC,IAAA,EAEO,OAAAkE,KASJO,UAAAA,KAwPJ;AAAkB3F,eAAAiZ;AAAAjZ,eAAAoF;AAAApF,eAAA2F;AAAA3F,eAAA8F;AAAAA,IAAA,OAAA;AAAAA,YAAA9F,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+F;AAAA,QAAA/F,EAAA,GAAA,MAAAqF,OAAArF,WAAA8F,KAAA;AArQtBC,YAAA7E,2BAAAA,IAAA,OAAA,EAAgB,WAAAmE,KAEZS,UAAAA,KAqQJ;AAAM9F,eAAAqF;AAAArF,eAAA8F;AAAA9F,eAAA+F;AAAAA,IAAA,OAAA;AAAAA,YAAA/F,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgG;AAAA,QAAAhG,EAAA,GAAA,MAAAkP,YAAAlP,WAAA+X,UAAA;AAKG/R,aAAC+R,YAAY7W,wCAAgB,WAAA,2BAC1B,UAAAA,2BAAAA,IAAC,2BAAA,EAAoCgO,SAAAA,CAAQ,EAAA,CACjD;AAAMlP,eAAAkP;AAAAlP,eAAA+X;AAAA/X,eAAAgG;AAAAA,IAAA,OAAA;AAAAA,YAAAhG,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAiG;AAAA,QAAAjG,EAAA,GAAA,MAAAkP,YAAAlP,WAAA+X,UAAA;AACL9R,YAAA8R,oDAA4B,WAAA,eACzB,UAAA7W,2BAAAA,IAAC,yBAAA,EAAkCgO,UAAQ,EAAA,CAC/C;AAAMlP,eAAAkP;AAAAlP,eAAA+X;AAAA/X,eAAAiG;AAAAA,IAAA,OAAA;AAAAA,YAAAjG,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkG;AAAA,QAAAlG,EAAA,GAAA,MAAAgG,OAAAhG,WAAAiG,KAAA;AARdC,oDAAgB,WAAA,eAEZ,0CAAC,iBAAA,EACIF,UAAAA;AAAAA,QAAAA;AAAAA,QAGAC;AAAAA,MAAAA,EAAAA,CAGL,EAAA,CAEJ;AAAMjG,eAAAgG;AAAAhG,eAAAiG;AAAAjG,eAAAkG;AAAAA,IAAA,OAAA;AAAAA,YAAAlG,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAoG;AAAA,QAAApG,EAAA,GAAA,MAAA+F,OAAA/F,WAAAkG,KAAA;AAtRVE,mEAEIL,UAAAA;AAAAA,QAAAA;AAAAA,QAyQAG;AAAAA,MAAAA,GAWM;AACPlG,eAAA+F;AAAA/F,eAAAkG;AAAAlG,eAAAoG;AAAAA,IAAA,OAAA;AAAAA,YAAApG,EAAA,GAAA;AAAA,IAAA;AAAA,WAvRHoG;AAAAA,EAuRG;AAhVJ,WAAAsU,OAAAI,YAAA;AAAA,QAAA,CAqRkCC,YAAQ;AAAA,aAAS;AAAA,IAAU;AAAA,WACzBA,WAAQC,OAAA,CAAS,EAACjN,gBAAiBgN,WAAQE,OAAQ;AAAA,EAAC;AAtRxF,WAAAT,SAAAU,YAAA;AAAA,QAAA,CA+PkCH,YAAQ;AAAA,aAAS;AAAA,IAAO;AAAA,WACtBA,eAAa,YAAY,gCAAgC;AAAA,EAA+B;AAhQ5H,WAAAjP,SAAAiP,UAAA;AAAA,QAqFiC,CAACA,YAAYA,SAAQnL,WAAA,GAAa;AAAA,aAAS;AAAA,IAAwB;AAAA,WAChEmL,SAAQhR,IAAAI,OAAgC,EAAC/F,OAAA4F,QACX,EAACmR,KAC5B,IAAI;AAAA,EAAC;AAxF5C,WAAAnR,SAAAO,KAAA;AAAA,WAuFwDtF,QAAQwB,GAAC;AAAA,EAAC;AAvFlE,WAAA0D,QAAA1D,GAAA;AAAA,WAAAoR,UAsF0EpR,CAAC;AAAA,EAAA;AC/G3E,WAAS2U,iBAAiBC,UAAsC;AACnE,QAAIC,KAAAA,kBAAkBD,QAAQ,GAAG;AAC7B,aAAO;AAAA,IACX,OAAO;AACH,UAAIA,SAASE,aAAa,WAAW,OAAOF,SAASG,OAAO,WACxD,QAAO;AAAA,eACFH,SAASE,aAAa,WAAW3J,MAAM8H,QAAQ2B,SAASG,EAAE,EAC/D,QAAO;AACX,aAAOH,SAASI,aAAajY,SAAY,OAAOyB,QAAQoW,SAASI,QAAQ;AAAA,IAC7E;AAAA,EACJ;AAEO,WAASC,4BAA4BC,YAAmD;AAC3F,WAAOjM,OAAOsK,QAAQ2B,UAAU,EAC3BvX,OAAO,CAAC,CAACwX,GAAGP,QAAQ,MAAMD,iBAAiBC,QAAQ,CAAC,EACpDtR,IAAI,CAAC,CAAC8R,KAAKC,iBAAiB,MAAM;AAC/B,YAAMT,WAAWS;AACjB,UAAI,CAACV,iBAAiBC,QAAQ,GAAG;AAC7B,eAAO7X;AAAAA,MACX,WAAW6X,SAASE,aAAa,SAASF,SAASM,YAAY;AAC3D,eAAO;AAAA,UACH,CAACE,GAAG,GAAG;AAAA,YACH,GAAGR;AAAAA,YACHM,YAAYD,4BAA4BL,SAASM,UAAkC;AAAA,UAAA;AAAA,QACvF;AAAA,MAER,OAAO;AACH,eAAO;AAAA,UAAE,CAACE,GAAG,GAAGR;AAAAA,QAAAA;AAAAA,MACpB;AAAA,IACJ,CAAC,EACAjX,OAAQW,CAAAA,MAAME,QAAQF,CAAC,CAAC,EACxBgX,OAAO,CAACC,GAAGC,OAAO;AAAA,MAAE,GAAGD;AAAAA,MAAG,GAAGC;AAAAA,IAAAA,IAAM,CAAA,CAAE;AAAA,EAC9C;ACZO,WAAAC,qBAAAnc,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA8B,UAAA;AAAA,MAAAob;AAAAA,MAAAc;AAAAA,MAAA1M;AAAAA,MAAA2M;AAAAA,MAAAC;AAAAA,MAAAtB;AAAAA,IAAAA,IAAAhb;AAgBjC,UAAA;AAAA,MAAAuc;AAAAA,IAAAA,IAA4BC,gCAAAA;AAA6B,QAAAlc;AAAA,QAAAL,EAAA,CAAA,MAAAqb,YAAArb,SAAAsc,iBAAA;AAElCjc,WAAAmc,KAAAA,eAAenB,UAAUiB,eAAe;AAACtc,aAAAqb;AAAArb,aAAAsc;AAAAtc,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAhE,UAAAyc,iBAAuBpc;AACL+a,qBAAiBC,QAAQ;AAE3C,UAAAqB,mBAAyBjN,WACnB,qGACCsL,WAAW,mBAAmB;AAAsB,QAAAxa;AAAA,QAAAP,SAAAyc,gBAAA;AAMnDlc,0CAAA,OAAA,EAAgB,WAAA,OACZ,UAAAW,2BAAAA,IAACyb,KAAAA,qBAAA,EAAoCF,gBAAc,EAAA,CACvD;AAAMzc,aAAAyc;AAAAzc,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAOE,UAAAQ,KAAA2b,UAAOS,GAAAA,qBAAwB;AAC/B,UAAAhc,KAAAma,WAAQ8B,GAAAA,oBAAuB;AAAE,QAAAhc;AAAA,QAAAb,EAAA,CAAA,MAAA0c,oBAAA1c,SAAAQ,MAAAR,EAAA,CAAA,MAAAY,IAAA;AAN1BC,WAAAP,GAAAA,IACP,OACA,UACA,gDAA8Cwc,GAAAA,WAE9Ctc,IACAI,IACA,uDACA8b,gBACJ;AAAC1c,aAAA0c;AAAA1c,aAAAQ;AAAAR,aAAAY;AAAAZ,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAAoc,eAAApc,EAAA,EAAA,MAAAqb,SAAA5b,MAAA;AAKIqB,WAAAsb,eACGlb,2BAAAA,IAAC6b,oBAAA,EACG,UAAA7b,2BAAAA,IAACP,GAAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACA,WAAA,kBACjB0a,UAAAA,SAAQ5b,OACH4b,SAAQ5b,OACR,KAEV,GACJ;AAAgBO,aAAAoc;AAAApc,QAAA,EAAA,IAAAqb,SAAA5b;AAAAO,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAKS,UAAAe,KAAAqb,cAAc,UAAU;AAGxC,UAAApb,KAAAyb,gBAAchd;AAAM,QAAA0B;AAAA,QAAAnB,EAAA,EAAA,MAAAe,MAAAf,UAAAgB,IAAA;AAL7BG,WAAAD,2BAAAA,IAAC6b,KAAAA,eAAA,EACG,UAAA7b,2BAAAA,IAACP,GAAAA,YAAA,EAAqB,WAAA,kBACD,SAAAI,IACC,WAAA,QACJ,OAAA,aACbC,cACL,GACJ;AAAgBhB,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAqb,SAAAE,UAAA;AAChBja,YAAAJ,2BAAAA,IAAC6b,oBAAA,EACG,UAAA7b,+BAACP,GAAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YACb0a,UAAAA,SAAQE,SAAAA,CACb,GACJ;AAAgBvb,QAAA,EAAA,IAAAqb,SAAAE;AAAAvb,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAmB,IAAA;AAfpBI,YAAAO,2BAAAA,KAAA,OAAA,EAAe,WAAA,8BACXX,UAAAA;AAAAA,QAAAA;AAAAA,QAQAG;AAAAA,MAAAA,GAQJ;AAAMtB,cAAAsB;AAAAtB,cAAAmB;AAAAnB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAuB,OAAAvB,UAAAc,IAAA;AA/BVU,YAAAM,2BAAAA,KAAA,OAAA,EAAe,WAAA,wBAEVhB,UAAAA;AAAAA,QAAAA;AAAAA,QAYDS;AAAAA,MAAAA,GAkBJ;AAAMvB,cAAAuB;AAAAvB,cAAAc;AAAAd,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,UAAAqc,mBAAA;AAEL5a,YAAA4a,qBAAqBnb,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,UAAU,UAAA,QAErD;AAAaX,cAAAqc;AAAArc,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAwB,OAAAxB,UAAAyB,OAAAzB,EAAA,EAAA,MAAAa,IAAA;AAjDjBa,4CAACmR,GAAAA,OAAA,EACc,WAAAhS,IAYXW,UAAAA;AAAAA,QAAAA;AAAAA,QAkCCC;AAAAA,MAAAA,GAIL;AAAQzB,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAAa;AAAAb,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAmc,WAAAnc,UAAA0B,OAAA1B,EAAA,EAAA,MAAAO,IAAA;AA1DTqB,2CAACmb,oBAAA,EACJ,UAAAjb,2BAAAA,KAAA,OAAA,EACaqa,SACC,WAAA,uCACV5b,UAAAA;AAAAA,QAAAA;AAAAA,QAGAmB;AAAAA,MAAAA,EAAAA,CAoDJ,EAAA,CACJ;AAAgB1B,cAAAmc;AAAAnc,cAAA0B;AAAA1B,cAAAO;AAAAP,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,WA5DT4B;AAAAA,EA4DS;AAGb,WAAAob,2BAAAjd,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAoC,UAAA;AAAA,MAAAR;AAAAA,MAAAsb;AAAAA,MAAAoB;AAAAA,MAAAd;AAAAA,IAAAA,IAAAtb;AAYvC,UAAA;AAAA,MAAAuc;AAAAA,IAAAA,IAA4BC,gCAAAA;AAA6B,QAAAlc;AAAA,QAAAL,EAAA,CAAA,MAAAqb,YAAArb,SAAAsc,iBAAA;AAElCjc,WAAA,CAACib,KAAAA,kBAAkBD,QAAQ,KAAKA,WAAWmB,oBAAenB,UAAUiB,eAAe,IAAC9Y;AAAYxD,aAAAqb;AAAArb,aAAAsc;AAAAtc,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAvH,UAAAyc,iBAAuBpc;AAAiG,QAAAE;AAAA,QAAAP,SAAAyc,gBAAA;AAO3Glc,WAAAkc,kBAAkBvb,2BAAAA,IAACyb,KAAAA,qBAAA,EAAoCF,eAAAA,CAAc;AAAGzc,aAAAyc;AAAAzc,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAAyc,gBAAA;AACxEjc,WAAA,CAACic,kBAAkBvb,2BAAAA,IAAA,OAAA,EACL,WAAA,0FACX,UAAAA,2BAAAA,IAAC+b,GAAAA,eAAA,EAAqB,OAAA,WAAiB,MAAA,QAAA,CAAO,GAClD;AAAMjd,aAAAyc;AAAAzc,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACNE,0CAACsc,GAAAA,oBAAA,EAA0B,OAAA,YAAkB,MAAA,SAAoB,WAAA,4BAA0B;AAAGld,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,IAAA;AANlGK,oDAAgB,WAAA,gBACXN,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,QAIDI;AAAAA,MAAAA,GACJ;AAAMZ,aAAAO;AAAAP,aAAAQ;AAAAR,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAKE,UAAAc,KAAAqb,UAAOS,GAAAA,qBAAwB;AAC/B,UAAA7b,KAAAga,WAAQ8B,GAAAA,oBAAuB;AAE/B,UAAA7b,KAAA+Z,WAAW,mBAAmB;AAAoB,QAAA5Z;AAAA,QAAAnB,EAAA,EAAA,MAAAc,MAAAd,UAAAe,MAAAf,EAAA,EAAA,MAAAgB,IAAA;AAN3CG,WAAAb,GAAAA,IACP,gDAA8Cwc,GAAAA,WAE9Chc,IACAC,IACA,uDACAC,EAAkD;AAAChB,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAO9C,UAAAsB,MAAA+Z,UAAQ5b,OACH4b,SAAQ5b,OACRA;AAAI,QAAA8B;AAAA,QAAAvB,UAAAsB,KAAA;AALdC,YAAAL,2BAAAA,IAACP,iBAAmB,SAAA,SACE,WAAA,QACA,WAAA,kBACjBW,UAAAA,IAAAA,CAIL;AAAatB,cAAAsB;AAAAtB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,UAAAyc,gBAAA;AAGRjb,YAAAib,kBAAkBvb,2BAAAA,IAACP,GAAAA,YAAA,EAAqB,WAAA,kBACD,SAAA,SACC,WAAA,QACJ,OAAA,aAChC8b,UAAAA,gBAAchd,MACnB;AAAaO,cAAAyc;AAAAzc,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,UAAAqb,UAAA;AAEZ5Z,YAAA4Z,YAAQ,CAAKC,KAAAA,kBAAkBD,QAAQ,oCAAM0B,oBAAA,EAC1C,UAAA7b,2BAAAA,IAACP,GAAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YACb0a,UAAAA,SAAQE,UACb,GACJ;AAAgBvb,cAAAqb;AAAArb,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,UAAAqb,UAAA;AAEf3Z,YAAA2Z,YAAYC,KAAAA,kBAAkBD,QAAQ,oCAAM0B,KAAAA,eAAA,EACzC,UAAA7b,+BAACP,GAAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YAAW,oEAE7B,GACJ;AAAgBX,cAAAqb;AAAArb,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,UAAAqb,UAAA;AAEfzZ,YAAA,CAACyZ,YAAYna,2BAAAA,IAAC6b,KAAAA,eAAA,EACX,UAAA7b,2BAAAA,IAACP,eAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YAAW,kEAE7B,GACJ;AAAgBX,cAAAqb;AAAArb,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAAwB,OAAAxB,EAAA,EAAA,MAAAyB,OAAAzB,EAAA,EAAA,MAAA0B,OAAA1B,UAAA4B,KAAA;AA9BpBC,qDAAe,WAAA,8BACVL,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,QAQAC;AAAAA,QAQAE;AAAAA,MAAAA,GAQL;AAAM5B,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA4B;AAAA5B,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAAuB,OAAAvB,UAAA6B,KAAA;AA1CVE,YAAAD,2BAAAA,KAAA,OAAA,EAAe,WAAA,wBACXP,UAAAA;AAAAA,QAAAA;AAAAA,QASAM;AAAAA,MAAAA,GA0CJ;AAAM7B,cAAAuB;AAAAvB,cAAA6B;AAAA7B,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAA+B,OAAA/B,UAAAmB,IAAA;AA9DVa,YAAAd,2BAAAA,IAAC2R,UAAA,EACc,WAAA1R,IASXY,UAAAA,KAsDJ;AAAQ/B,cAAA+B;AAAA/B,cAAAmB;AAAAnB,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAAmc,WAAAnc,UAAAgC,OAAAhC,EAAA,EAAA,MAAAa,IAAA;AA3EZqE,qDACaiX,SACC,WAAA,uCACVtb,UAAAA;AAAAA,QAAAA;AAAAA,QAQAmB;AAAAA,MAAAA,GAiEJ;AAAMhC,cAAAmc;AAAAnc,cAAAgC;AAAAhC,cAAAa;AAAAb,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,WA5ENkF;AAAAA,EA4EM;AC1KP,QAAMiY,eAAe3a,MAAMyQ,KAC9B,SAAAkK,cAAApd,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAEG,UAAA;AAAA,MAAAqO;AAAAA,MAAA8O;AAAAA,MAAAC;AAAAA,MAAA1B;AAAAA,MAAA2B,iBAAAC;AAAAA,MAAAC;AAAAA,MAAA1a;AAAAA,MAAA2a;AAAAA,MAAAC;AAAAA,MAAAtd;AAAAA,MAAAud;AAAAA,MAAAC;AAAAA,IAAAA,IAAA7d;AA0BF,QAAAM;AAAA,QAAAL,EAAA,CAAA,MAAA2b,cAAA3b,SAAAud,qBAAA;AAE2Bld,WAAAkd,uBAAuB7N,OAAAC,KAAYgM,UAAU;AAAC3b,aAAA2b;AAAA3b,aAAAud;AAAAvd,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAtE,UAAAsd,kBAAwBjd;AAA+C,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAG1CH,WAAA;AAAA,QAAAsd,sBAAA;AAAA,UAAAC,UAAA;AAAA,QAAA;AAAA,MAAA;AAIxB9d,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACyBF,WAAA;AAAA,QAAAud,kBAAAC,SAAAA;AAAAA,MAAAA;AAEzBhe,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AARL,UAAAie,UAAgBC,kBACZC,OAAAA,UAAAC,OAAAA,eAAyB7d,EAIxB,GACD4d,OAAAA,UAAAE,uBAA0B7d,EAEzB,CACL;AAAE,QAAAI;AAAA,QAAAZ,EAAA,CAAA,MAAAsO,aAAAtO,SAAAyd,kBAAAzd,EAAA,CAAA,MAAAsd,iBAAA;AAEoB1c,WAAA0d,CAAAA,UAAA;AAClB,cAAA;AAAA,UAAAC;AAAAA,UAAAC;AAAAA,QAAAA,IAGIF;AAAM,YAEN,CAACE,QAAQD,OAAMjf,OAAQkf,KAAIlf,IAAG;AAAA;AAAA,QAAA;AAIlC,cAAAmf,WAAiBC,OAAOH,OAAMjf,EAAG;AACjC,cAAAqf,SAAeD,OAAOF,KAAIlf,EAAG;AAG7B,cAAAsf,YAAkBH,SAAQna,SAAU,GAAG,IAAIma,SAAQI,MAAO,GAAG,EAACC,IAAAA,IAASL;AACvE,cAAAM,UAAgBJ,OAAMra,SAAU,GAAG,IAAIqa,OAAME,MAAO,GAAG,EAACC,IAAAA,IAASH;AAAO,YAEpE,CAACC,aAAS,CAAKG,SAAO;AAAA;AAAA,QAAA;AAE1B,cAAAC,WAAiB1B,gBAAe2B,QAASL,SAAS;AAClD,cAAAM,WAAiB5B,gBAAe2B,QAASF,OAAO;AAAE,YAE9CC,aAAQ,MAAWE,aAAQ,IAAO;AAClC,gBAAAC,yBAA+B7B,eAAe;AAC9C,gBAAA,CAAA8B,OAAA,IAAkBD,mBAAkBE,OAAQL,WAAW;AACvDG,6BAAkBE,OAAQH,UAAQ,GAAKE,OAAO;AAAC,cAE3C3B,gBAAc;AACdA,2BAAe0B,oBAAoB7Q,SAAS;AAAA,UAAC;AAAA,QAAA;AAAA,MAAA;AAGxDtO,aAAAsO;AAAAtO,aAAAyd;AAAAzd,aAAAsd;AAAAtd,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AA/BD,UAAAsf,gBAAsB1e;AA+BpB,QAAAC;AAAA,QAAAb,EAAA,CAAA,MAAAsO,aAAAtO,UAAAsd,iBAAA;AAAA,UAAAxc;AAAA,UAAAd,UAAAsO,WAAA;AAEgCxN,cAAA+a,CAAAA,QAAOrN,UAAUqN,KAAKvN,SAAS;AAACtO,gBAAAsO;AAAAtO,gBAAAc;AAAAA,MAAA,OAAA;AAAAA,cAAAd,EAAA,EAAA;AAAA,MAAA;AAApDa,WAAAyc,gBAAevT,IAAKjJ,GAAgC;AAACd,aAAAsO;AAAAtO,cAAAsd;AAAAtd,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAnE,UAAAuf,QAAc1e;AAAsD,QAAAC;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAOjDI,YAAA0e,UAAAA,sBAAA;AAAwBxf,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAwd,oBAAAxd,EAAA,EAAA,MAAA4d,sBAAA5d,UAAA8C,UAAA9C,EAAA,EAAA,MAAA2d,wBAAA3d,EAAA,EAAA,MAAAsO,aAAAtO,EAAA,EAAA,MAAAqd,mBAAArd,EAAA,EAAA,MAAAyd,kBAAAzd,UAAA0d,oBAAA1d,EAAA,EAAA,MAAA2b,cAAA3b,EAAA,EAAA,MAAAsd,mBAAAtd,UAAAod,qBAAA;AAQ1Brc,WAAAuc,mBAAmBA,gBAAevT,IAAA,CAAA0E,aAAAc,UAAA;AAE3B,cAAA8L,WAAiBM,WAAWlN,WAAW;AACvC,cAAAgR,kBAAwBjC,kBAAgBkC,KAAAhL,CAAAA,UAAgBA,MAAKmH,QAASpN,WAAW;AAAE,YAE/E,CAAC4M,YAAQ,CAAKoE,iBAAe;AAC7B3M,kBAAA6M,KAAa,YAAYlR,WAAW,8CAA8C;AAAC,iBAAA;AAAA,QAAA;AAIvF,cAAAnP,KAAWkP,UAAUC,aAAaH,SAAS;AAAE,eAGzCpN,2BAAAA,IAAC,mBAAA,EAEO5B,IACSmP,aACM4M,mBAAAA,UACFoE,iBACT3c,QACGwL,WACWqP,sBACNF,gBACEC,kBACDL,iBACID,qBACDQ,sBAZfte,EAYiC;AAAA,MACxC,CAET,EAAC8E,OAAAa,OAAe;AAACjF,cAAAwd;AAAAxd,cAAA4d;AAAA5d,cAAA8C;AAAA9C,cAAA2d;AAAA3d,cAAAsO;AAAAtO,cAAAqd;AAAArd,cAAAyd;AAAAzd,cAAA0d;AAAA1d,cAAA2b;AAAA3b,cAAAsd;AAAAtd,cAAAod;AAAApd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAI,aAAAJ,UAAAe,IAAA;AA/B1BC,WAAAE,2BAAAA,IAAA,OAAA,EAAgBd,WAEXW,UAAAA,IA8BL;AAAMf,cAAAI;AAAAJ,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAuf,SAAAvf,UAAAgB,IAAA;AApCVG,0CAACye,SAAAA,iBAAA,EACUL,OACGM,UAAAA,SAAAA,6BAEV7e,UAAAA,IAiCJ;AAAkBhB,cAAAuf;AAAAvf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAsf,iBAAAtf,UAAAie,WAAAje,EAAA,EAAA,MAAAmB,IAAA;AA3CtBG,YAAAJ,2BAAAA,IAAC4e,OAAAA,cACY7B,SACW8B,oBAAAA,OAAAA,eACTT,WAAAA,eACA,WAAAxe,IAEXK,UAAAA,GAAAA,CAsCJ;AAAanB,cAAAsf;AAAAtf,cAAAie;AAAAje,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,WA5CbsB;AAAAA,EA4Ca,GAGrB0S,KACJ;AAEO,WAAAgM,kBAAAjgB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA2B,UAAA;AAAA,MAAAX;AAAAA,MAAAmP;AAAAA,MAAAH;AAAAA,MAAAwN;AAAAA,MAAA2D;AAAAA,MAAArC;AAAAA,MAAAta;AAAAA,MAAAua;AAAAA,MAAAI;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAA7d;AA0BjC,QAAAM;AAAA,QAAAL,SAAAV,IAAA;AASmBe,WAAA;AAAA,QAAAf;AAAAA,MAAAA;AAEfU,aAAAV;AAAAU,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AATD,UAAA;AAAA,MAAAigB;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAOIC,SAAAA,YAAYlgB,EAEf;AAAE,QAAAE;AAAA,QAAAP,SAAAogB,WAAA;AAIY7f,WAAAigB,UAAAA,IAAAC,UAAA7I,SAAuBwI,SAAS;AAACpgB,aAAAogB;AAAApgB,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAEpC,UAAAQ,KAAA8f,aAAU,KAAA9c;AAAiB,QAAA5C;AAAA,QAAAZ,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,MAAAR,EAAA,CAAA,MAAAqgB,YAAA;AAJzBzf,WAAA;AAAA,QAAAwf,WAEC7f;AAAAA,QAAiC8f;AAAAA,QAAAK,QAEpClgB;AAAAA,QAA2BmgB,UACzB;AAAA,MAAA;AACb3gB,aAAAO;AAAAP,aAAAQ;AAAAR,aAAAqgB;AAAArgB,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAND,UAAA4gB,QAAchgB;AAMZ,QAAAC;AAAA,QAAAb,EAAA,CAAA,MAAA2d,wBAAA3d,SAAAsO,aAAAtO,EAAA,EAAA,MAAAyO,aAAA;AAEyB5N,WAAA8c,sBAAoBrZ,SAAWgK,YAAY,GAAGA,SAAS,IAAIG,WAAW,KAAKA,WAAW;AAACzO,aAAA2d;AAAA3d,aAAAsO;AAAAtO,cAAAyO;AAAAzO,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAlH,UAAA6gB,qBAA2BhgB;AAC3B,UAAAigB,SAAexhB;AACf,UAAAyhB,aAAmBpS,cAAcF,aAAaH,SAAS;AACvD,UAAAmB,WAAiBsR,cAAcje;AAE3Bke,QAAAA;AAAO,QACP,OAAOlF,sBAAsB,UAAQ;AACrC,YAAAT,WAAiBS;AAAkB,UAC/BT,SAAQE,aAAc,SAASF,SAAQM,YAAW;AAAA,YAAA7a;AAAA,YAAAd,EAAA,EAAA,MAAA4d,sBAAA5d,UAAA8C,UAAA9C,EAAA,EAAA,MAAA8gB,UAAA9gB,UAAAqd,mBAAArd,EAAA,EAAA,MAAAyd,kBAAAzd,UAAA0d,oBAAA1d,EAAA,EAAA,MAAAqb,SAAAM,cAAA3b,UAAAqb,SAAAiC,mBAAAtd,UAAAod,qBAAA;AACxCtc,gBAAAI,2BAAAA,IAAC,cAAA,EACckc,qBACV0D,WAAAA,QACC,YAAAzF,SAAQM,YACH,iBAAAN,SAAQiC,iBACjBxa,QACSua,iBACDI,gBACEC,kBACEE,oBAAkB;AACxC5d,kBAAA4d;AAAA5d,kBAAA8C;AAAA9C,kBAAA8gB;AAAA9gB,kBAAAqd;AAAArd,kBAAAyd;AAAAzd,kBAAA0d;AAAA1d,YAAA,EAAA,IAAAqb,SAAAM;AAAA3b,YAAA,EAAA,IAAAqb,SAAAiC;AAAAtd,kBAAAod;AAAApd,kBAAAc;AAAAA,QAAA,OAAA;AAAAA,gBAAAd,EAAA,EAAA;AAAA,QAAA;AAVFghB,kBAAUA;AAAAA,MAAH;AAAA,IAAA;AAcf,UAAAjG,WAAiBqC,wBAAwB0D;AAAO,QAAAhgB;AAAA,QAAAd,EAAA,EAAA,MAAA4d,sBAAA5d,UAAA8b,mBAAA;AAC/Bhb,WAAAgb,sBAAuB8B,uBAAuBtC,KAAAA,kBAAkBQ,iBAAiB,KAAMV,iBAAiBU,iBAAiB;AAAE9b,cAAA4d;AAAA5d,cAAA8b;AAAA9b,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAA5I,UAAAyb,WAAiB3a;AAA4H,QAAAC;AAAA,QAAAf,UAAAghB,SAAA;AAShIjgB,WAAAigB,WAAW9f,2BAAAA,IAAA,OAAA,EACG,WAAA,uBAAoB+f,GAAAA,oBACxB,OAAA;AAAA,QAAAC,MACG;AAAA,QAAMC,KACP;AAAA,QAAMC,QACH;AAAA,MAAA,GACX;AAAGphB,cAAAghB;AAAAhhB,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAyf,mBAAAzf,EAAA,EAAA,MAAAyb,YAAAzb,EAAA,EAAA,MAAAyP,YAAAzP,EAAA,EAAA,MAAAsO,aAAAtO,EAAA,EAAA,MAAAqd,mBAAArd,EAAA,EAAA,MAAAyO,eAAAzO,EAAA,EAAA,MAAA8b,qBAAA9b,UAAA+a,UAAA;AAER/Z,mDACK,UAAA,CAACsa,KAAAA,kBAAkBQ,iBAAiB,KAAC,CAAK2D,mBAAmBhE,WACxDva,2BAAAA,IAAC,sBAAA,EACW4a,6BACD,SAAAuB,kBAAe,MAASA,gBAAgB5O,aAAaH,SAAS,IAAC9K,QAC3D,mBACHuX,UACAtL,UAAQ,IACpBvO,2BAAAA,IAAC,4BAAA,EAAiCuN,mBACIqN,UAAAA,mBACD,SAAAuB,kBAAe,MAASA,gBAAgB5O,aAAaH,SAAS,IAAC9K,QAC9DuX,UAAQ,GACxD;AAAM/a,cAAAyf;AAAAzf,cAAAyb;AAAAzb,cAAAyP;AAAAzP,cAAAsO;AAAAtO,cAAAqd;AAAArd,cAAAyO;AAAAzO,cAAA8b;AAAA9b,cAAA+a;AAAA/a,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,UAAA6gB,oBAAA;AAGD1f,WAAA0f,sBAAsB3f,2BAAAA,IAACE,GAAAA,SAAA,EAAe,OAAA,qBACnC,UAAAF,2BAAAA,IAACyR,GAAAA,eAAA,EAAmB,MAAA,SAAmB,WAAA,MAAA,CAAK,GAChD;AAAU3S,cAAA6gB;AAAA7gB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAA6gB,sBAAA7gB,EAAA,EAAA,MAAAsO,aAAAtO,EAAA,EAAA,MAAA0d,oBAAA1d,UAAAyO,aAAA;AAETnN,YAAAoc,oBAAgB,CAAKmD,sBAAsB3f,2BAAAA,IAACE,GAAAA,SAAA,EAAe,OAAA,UACE,SAAA,MAC1D,UAAAF,2BAAAA,IAAC2D,GAAAA,YAAA,EAAgB,MAAA,SACC,OAAA,WACG,SAAA,MAAM6Y,iBAAiBjP,aAAaH,SAAS,GAC9D,UAAApN,2BAAAA,IAACmgB,GAAAA,YAAA,EAAiB,MAAA,QAAA,CAAO,EAAA,CAC7B,EAAA,CACJ;AAAUrhB,cAAA6gB;AAAA7gB,cAAAsO;AAAAtO,cAAA0d;AAAA1d,cAAAyO;AAAAzO,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAigB,cAAAjgB,UAAAkgB,aAAAlgB,EAAA,EAAA,MAAAyd,gBAAA;AAETlc,YAAAkc,iDAAmBrc,GAAAA,SAAA,EAAe,OAAA,QACE,eACjC,UAAAF,+BAAC2D,GAAAA,YAAA,EACc,WAAA,QACN,MAAA,SAAO,GACRob,YAAU,GACVC,WAEJ,yCAACoB,GAAAA,gBAAA,EAAqB,MAAA,QAAA,CAAO,EAAA,CACjC,EAAA,CACJ;AAAUthB,cAAAigB;AAAAjgB,cAAAkgB;AAAAlgB,cAAAyd;AAAAzd,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAuB,OAAAvB,EAAA,EAAA,MAAAmB,IAAA;AAxBdK,qDAAe,WAAA,wCACVL,UAAAA;AAAAA,QAAAA;AAAAA,QAIAG;AAAAA,QASAC;AAAAA,MAAAA,GAYL;AAAMvB,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAmB;AAAAnB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,UAAAghB,SAAA;AAELvf,YAAAuf,WAAW9f,2BAAAA,IAAA,OAAA,EAAgB,WAAA,SAAU8f,UAAAA,SAAQ;AAAMhhB,cAAAghB;AAAAhhB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAwB,OAAAxB,EAAA,EAAA,MAAAyB,OAAAzB,EAAA,EAAA,MAAAe,MAAAf,UAAAgB,IAAA;AAnDxDU,qDAAe,WAAA,YACVX,UAAAA;AAAAA,QAAAA;AAAAA,QAQDC;AAAAA,QAcAQ;AAAAA,QA4BCC;AAAAA,MAAAA,GACL;AAAMzB,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAmgB,cAAAngB,UAAA4gB,SAAA5gB,EAAA,EAAA,MAAA0B,KAAA;AAzDVE,2CAAA,OAAA,EACSue,iBACES,OACG,WAAA,kBAEVlf,UAAAA,IAAAA,CAqDJ;AAAM1B,cAAAmgB;AAAAngB,cAAA4gB;AAAA5gB,cAAA0B;AAAA1B,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,WA1DN4B;AAAAA,EA0DM;AC/RP,WAAA2f,iBAAAxhB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA0B,UAAA;AAAA,MAAAmP;AAAAA,MAAAD;AAAAA,MAAAmN;AAAAA,MAAAsB;AAAAA,IAAAA,IAAA7d;AAQ7B,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAGIM,iBAAAA;AAEJ,UAAA,CAAAue,oBAAAC,qBAAA,IAAoDre,MAAAA,cAAuB;AAC3E,UAAA,CAAAga,qBAAAsE,sBAAA,IAAsDte,eAAAA;AACtD,UAAA,CAAAue,2BAAAC,4BAAA,IAAkExe,eAAAA;AAA+B,QAAA/C;AAAA,QAAAL,EAAA,CAAA,MAAA0C,OAAAiZ,cAAA3b,EAAA,CAAA,MAAA0C,OAAA4a,iBAAA;AAEzEjd,WAAAqC,OAAM4a,mBAAoB5N,OAAAC,KAAYjN,OAAMiZ,gBAAiB;AAAC3b,QAAA,CAAA,IAAA0C,OAAAiZ;AAAA3b,QAAA,CAAA,IAAA0C,OAAA4a;AAAAtd,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAtF,UAAAsd,kBAAwBjd;AAA+D,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAA2C,iBAAA3C,EAAA,CAAA,MAAA0C,OAAAiZ,cAAA3b,EAAA,CAAA,MAAA0C,OAAA4a,iBAAA;AAC7D/c,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAlB;AAAAA,UAAA+b;AAAAA,QAAAA,IAAA7a;AAGsC,YAAA,CACxDlB,IAAE;AAAA,gBACGiM,MAAAA;AAAAA,QAAO;AACjB5I,sBAAc,cAAY;AAAA,UAAA,GAClBD,OAAMiZ,cAAA,CAAA;AAAA,UAAiB,CAC1Brc,EAAE,GAAG+b;AAAAA,QAAAA,GAAQ,KACV;AAER,cAAAwG,yBAA+Bnf,OAAM4a,mBAAoB5N,OAAAC,KAAYjN,OAAMiZ,gBAAiB;AAC5F,cAAAwD,qBAA2B0C,uBAAsBvd,SAAUhF,EAAE,IAAIuiB,yBAAsB,CAAA,GAAOA,wBAAwBviB,EAAE;AACxHqD,sBAAc,mBAAmBwc,yBAAyB;AAE1DsC,mCAA2B;AAAA,MAAC;AAC/BzhB,aAAA2C;AAAA3C,QAAA,CAAA,IAAA0C,OAAAiZ;AAAA3b,QAAA,CAAA,IAAA0C,OAAA4a;AAAAtd,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAhBD,UAAA8hB,oBAA0BvhB;AAgBxB,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAA2C,iBAAA3C,SAAA0C,QAAA;AAEqBlC,WAAAA,CAAAiO,aAAAH,cAAA;AACnB,cAAAwS,SAAerS,cAAcD,UAAUC,aAAaH,SAAS,IAAC9K;AAAa,YAAA,CACtEsd,QAAM;AAAA,gBACDvV,MAAM,+BAA+B;AAAA,QAAC;AAEhD,cAAAwW,iBAAuB5T,mBAAmB2S,MAAM;AAChD,cAAAkB,sBAA4BzT,+BAA+BD,SAAS;AAEpE,cAAA2T,2BAAyCte,OAAAA,MAAMjB,QAAQsf,mBAAmB,KAAKtS,OAAAC,KAAYhM,OAAAA,MAAMjB,QAAQ2L,0BAA0BC,SAAS,CAAC,CAAC;AAE9I3L,sBAAcof,gBAAcve,aAAkB;AAC9Cb,sBAAcqf,qBAAqBH,yBAAsBzd,OAAA8d,OAAeA,MAAMzT,WAAW,QAAQ;AAEjGgT,mCAA2B;AAC3BC,+BAAsBle,MAAU;AAChCoe,qCAA4Bpe,MAAU;AAAA,MAAC;AAC1CxD,aAAA2C;AAAA3C,aAAA0C;AAAA1C,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAhBD,UAAAmiB,iBAAuB3hB;AAgBrB,QAAAI;AAAA,QAAAZ,EAAA,EAAA,MAAAod,uBAAApd,EAAA,EAAA,MAAA2hB,6BAAA3hB,EAAA,EAAA,MAAA0C,OAAAiZ,YAAA;AAEF,YAAAyG,yBAA+BhF,sBAAsB5O,UAAU4O,qBAAqBuE,yBAAyB,IAACne;AACrF5C,WAAAwhB,yBAAyBze,aAAMjB,OAAMiZ,YAAayG,uBAAsBhU,WAAY,KAAK,cAAc,CAAC,IAAC5K;AAAYxD,cAAAod;AAAApd,cAAA2hB;AAAA3hB,QAAA,EAAA,IAAA0C,OAAAiZ;AAAA3b,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAA9I,UAAAqiB,mBAAyBzhB;AAEzB,UAAA0hB,QAAc,CAAChF,mBAAmBA,gBAAe1N,SAAA;AAAY,QAAA/O;AAAA,QAAAb,UAAA2C,eAAA;AAEtC9B,WAAAA,CAAA0hB,mBAAAC,gBAAA;AACnB7f,sBAAc4L,+BAA+BD,WAAS,GAAGgP,wBAAsB;AAAA,MAAC;AACnFtd,cAAA2C;AAAA3C,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAFD,UAAAyd,iBAAuB5c;AAErB,QAAAC;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAMcI,WAAAI,2BAAAA,IAACP,eAAA,EAAoB,SAAA,aAAa,UAAA,4BAAwB;AAAaX,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAC;AAAA,QAAAhB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAI1DK,WAAAA,MAAM0gB,0BAA0B;AAC9BzgB,0CAACyhB,GAAAA,SAAA,EAAO;AAAEziB,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAD,WAAAf,EAAA,EAAA;AAAAgB,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAEJ,UAAAmB,KAAAuB,OAAMjD,QAAS;AAAY,QAAA6B;AAAA,QAAAtB,UAAAmB,IAAA;AARpDG,qDAAe,WAAA,uCACXR,UAAAA;AAAAA,QAAAA;AAAAA,QACAgB,2BAAAA,KAAC2Q,GAAAA,UACS,OAAA,WACG,SAAA,YACA,SAAA1R,IACE,WAAAC,IACd,UAAA;AAAA,UAAA;AAAA,UACoBG;AAAAA,QAAAA,EAAAA,CACrB;AAAA,MAAA,GACJ;AAAMnB,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAA0C,OAAAiZ,YAAA;AAGcpa,YAAAmB,OAAMiZ,cAAA,CAAA;AAAiB3b,QAAA,EAAA,IAAA0C,OAAAiZ;AAAA3b,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAE3Bc,YAAA,CAAA;AAAExB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEOe,YAAAA,CAAAihB,eAAAC,gBAAA;AACbjB,+BAAuBjT,aAAW;AAClCmT,qCAA6BtT,WAAS;AACtCmT,kCAA0B;AAAA,MAAC;AAC9BzhB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAyd,kBAAAzd,EAAA,EAAA,MAAAsd,mBAAAtd,UAAAuB,KAAA;AATLG,YAAAR,2BAAAA,IAAC,cAAA,EACe,YAAAK,KACK+b,iBACT,QAAA9b,KACYoc,oBACH,iBAAAnc,KAKDgc,eAAAA,CAAc;AAAGzd,cAAA4d;AAAA5d,cAAAyd;AAAAzd,cAAAsd;AAAAtd,cAAAuB;AAAAvB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,UAAAsiB,OAAA;AAEpC1gB,YAAA0gB,SACGphB,+BAACP,GAAAA,YAAA,EAAoB,SAAA,SACC,WAAA,+CAA8C,UAAA,uCAAA,CAEpE;AAAaX,cAAAsiB;AAAAtiB,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAA0B,OAAA1B,UAAA4B,KAAA;AAjBrBC,YAAAC,2BAAAA,KAAC+Q,GAAAA,OAAA,EAAgB,WAAA,YACbnR,UAAAA;AAAAA,QAAAA;AAAAA,QAYCE;AAAAA,MAAAA,GAKL;AAAQ5B,cAAA0B;AAAA1B,cAAA4B;AAAA5B,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAAsB,OAAAtB,UAAA6B,KAAA;AA9BZE,YAAAD,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZR,UAAAA;AAAAA,QAAAA;AAAAA,QAWAO;AAAAA,MAAAA,GAmBJ;AAAM7B,cAAAsB;AAAAtB,cAAA6B;AAAA7B,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,UAAA2C,eAAA;AAOiBX,YAAAyE,CAAAA,MAAO9D,cAAc,kBAAkB8D,CAAC;AAACzG,cAAA2C;AAAA3C,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AACjD,UAAAkF,MAAAxC,OAAMkgB,kBAAA;AAAwB,QAAAxd;AAAA,QAAApF,EAAA,EAAA,MAAAgC,OAAAhC,UAAAkF,KAAA;AALzCE,YAAAlE,2BAAAA,IAAC0F,GAAAA,wBAAA,EACa,UAAA,SACJ,MAAA,UACA,OAAA,8BACS,eAAA5E,KACR,OAAAkD,IAAAA,CAA8B;AACvClF,cAAAgC;AAAAhC,cAAAkF;AAAAlF,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqF;AAAA,QAAArF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACF2E,2CAACE,KAAAA,gBAAa,UAAA,2IAAA,CAGd;AAAevF,cAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsF;AAAA,QAAAtF,UAAAoF,KAAA;AAXnBE,YAAAxD,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZsD,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,MAAAA,GAIJ;AAAMrF,cAAAoF;AAAApF,cAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAC;AAAA,QAAAzF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAQQ8E,YAAAA,MAAA;AACNic,mCAA2B;AAC3BC,+BAAsBle,MAAU;AAChCoe,qCAA4Bpe,MAAU;AAAA,MAAC;AAE9BiC,YAAAA,MAAA;AACTgc,mCAA2B;AAC3BC,+BAAsBle,MAAU;AAChCoe,qCAA4Bpe,MAAU;AAAA,MAAC;AAC1CxD,cAAAwF;AAAAxF,cAAAyF;AAAAA,IAAA,OAAA;AAAAD,YAAAxF,EAAA,EAAA;AAAAyF,YAAAzF,EAAA,EAAA;AAAA,IAAA;AAMiB,UAAA0F,MAAAT,QAAQmY,mBAAmB;AAC/B,UAAAzX,OAACyX;AACK,UAAAtX,OAACsX;AAEC,UAAArX,MAAAqX,sBAAmB5Z,SAAe8Z;AAAe,QAAAtX;AAAA,QAAAhG,EAAA,EAAA,MAAAmP,sBAAAnP,UAAA4d,sBAAA5d,EAAA,EAAA,MAAAmiB,kBAAAniB,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAA8hB,qBAAA9hB,EAAA,EAAA,MAAAsc,mBAAAtc,EAAA,EAAA,MAAAwhB,sBAAAxhB,EAAA,EAAA,MAAAqiB,oBAAAriB,EAAA,EAAA,MAAAod,uBAAApd,EAAA,EAAA,MAAA2hB,6BAAA3hB,UAAA0F,OAAA1F,EAAA,EAAA,MAAA2F,OAAA3F,EAAA,EAAA,MAAA8F,OAAA9F,EAAA,EAAA,MAAA+F,KAAA;AAzB3EC,YAAA9E,2BAAAA,IAAC,oBAAA,EACY,SAAA,OACQ,wBACXsgB,MAAAA,oBACcrS,oBACAyO,oBACV,UAAApY,KAKG,aAAAC,KAKJ2J,SACC+S,UAAAA,gBACG/E,kCACMuE,mBAAAA,2BACTU,UAAAA,kBACQ,kBAAA3c,KACJ,cAAAC,KACM,oBAAAG,KACDgc,mBAAAA,mBACG,sBAAA/b,KACLuW,iBAAe;AAClCtc,cAAAmP;AAAAnP,cAAA4d;AAAA5d,cAAAmiB;AAAAniB,cAAAoP;AAAApP,cAAA8hB;AAAA9hB,cAAAsc;AAAAtc,cAAAwhB;AAAAxhB,cAAAqiB;AAAAriB,cAAAod;AAAApd,cAAA2hB;AAAA3hB,cAAA0F;AAAA1F,cAAA2F;AAAA3F,cAAA8F;AAAA9F,cAAA+F;AAAA/F,cAAAgG;AAAAA,IAAA,OAAA;AAAAA,YAAAhG,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiG;AAAA,QAAAjG,EAAA,EAAA,MAAA+B,OAAA/B,UAAAsF,OAAAtF,EAAA,EAAA,MAAAgG,KAAA;AA3ENC,YAAAnE,2BAAAA,KAAA8R,qBAAA,EACI7R,UAAAA;AAAAA,QAAAA;AAAAA,QAiCAuD;AAAAA,QAcAU;AAAAA,MAAAA,GA2BE;AAEHhG,cAAA+B;AAAA/B,cAAAsF;AAAAtF,cAAAgG;AAAAhG,cAAAiG;AAAAA,IAAA,OAAA;AAAAA,YAAAjG,EAAA,EAAA;AAAA,IAAA;AAAA,WA7EHiG;AAAAA,EA6EG;AC5IJ,WAAA4c,oBAAA9iB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA6B,UAAA;AAAA,MAAA2E;AAAAA,MAAAoT;AAAAA,MAAA9I;AAAAA,MAAAE;AAAAA,MAAAD;AAAAA,MAAAmN;AAAAA,MAAAsB;AAAAA,IAAAA,IAAA7d;AAkBhC,UAAA;AAAA,MAAA2C;AAAAA,MAAAI;AAAAA,MAAAH;AAAAA,MAAAE;AAAAA,IAAAA,IAMII,iBAAAA;AAEJ,UAAA,CAAAue,oBAAAC,qBAAA,IAAoDre,MAAAA,cAAc;AAAE,QAAA0f;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAA3iB;AAAA,QAAAL,EAAA,CAAA,MAAA8C,UAAA9C,EAAA,CAAA,MAAAsc,mBAAAtc,EAAA,CAAA,MAAA2C,iBAAA3C,EAAA,CAAA,MAAA6C,WAAA7C,SAAA0C,QAAA;AACpEogB,mBAAmBnf,OAAAA,MAAMjB,QAAQ,IAAI;AAAE,UAAAnC;AAAA,UAAAP,EAAA,CAAA,MAAA8C,UAAA9C,UAAA6C,SAAA;AACftC,cAAAoD,OAAAA,MAAMd,SAAS,IAAI,KAAKc,OAAAA,MAAMb,QAAQ,IAAI;AAAC9C,eAAA8C;AAAA9C,gBAAA6C;AAAA7C,gBAAAO;AAAAA,MAAA,OAAA;AAAAA,cAAAP,EAAA,EAAA;AAAA,MAAA;AAAnE+iB,wBAAwBxiB;AAA4C,UAAAC;AAAA,UAAAR,UAAA2C,eAAA;AAE1CnC,cAAAI,CAAAA,QAAA;AAAC,gBAAA;AAAA,YAAAya;AAAAA,UAAAA,IAAAza;AAEvB+B,wBAAc,MAAM0Y,QAAQ;AAAA,QAAC;AAChCrb,gBAAA2C;AAAA3C,gBAAAQ;AAAAA,MAAA,OAAA;AAAAA,cAAAR,EAAA,EAAA;AAAA,MAAA;AAHDgjB,0BAA0BxiB;AAKXH,WAAAyiB,cAActG,oBAAesG,YAAYxG,eAAe;AAACtc,aAAA8C;AAAA9C,aAAAsc;AAAAtc,aAAA2C;AAAA3C,aAAA6C;AAAA7C,aAAA0C;AAAA1C,aAAA8iB;AAAA9iB,aAAA+iB;AAAA/iB,aAAAgjB;AAAAhjB,aAAAK;AAAAA,IAAA,OAAA;AAAAyiB,mBAAA9iB,EAAA,CAAA;AAAA+iB,wBAAA/iB,EAAA,CAAA;AAAAgjB,0BAAAhjB,EAAA,CAAA;AAAAK,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAxE,UAAAijB,SAAe5iB;AAA0D,QAAAE;AAAA,QAAAP,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAI7DH,WAAAW,2BAAAA,IAACP,eAAA,EAAoB,SAAA,aAAa,UAAA,oBAElC;AAAaX,cAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,UAAAmP,sBAAAnP,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,YAAAhY,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAA8iB,cAAA9iB,EAAA,EAAA,MAAA+iB,mBAAA/iB,UAAAgjB,qBAAAhjB,EAAA,EAAA,MAAAsc,mBAAAtc,EAAA,EAAA,MAAAwhB,sBAAAxhB,UAAA4E,cAAA5E,EAAA,EAAA,MAAAijB,QAAA;AAQRziB,WAAAI,CAAAA,QACGkB,2BAAAA,KAAC+Q,GAAAA,OAAA,EAAgB,WAAA,YAEZiQ,UAAAA;AAAAA,QAAAA,6CAAe,sBAAA,EACFA,sBACD,SAAA5T,WAAQ1L,SAAA,MAAqBie,0BAA0B,GACnD,aAAA,OACM,mBAAA,MACT,UAAA,OACA,iBAAK;AAAA,QAElB,CAACvS,aAAa4T,cAAchhB,2BAAAA,KAAC2Q,GAAAA,QAAA,EAAgB,SAAA,QACH,MAAA,SACC,OAAAsQ,kBAAkB,UAAU,WAC1B,eAAMtB,sBAAqB,IAAK,GAAG,UAAA;AAAA,UAAA;AAAA,aACpEwB,SAASA,OAAMxjB,OAAQ,kBAAkB;AAAA,QAAA,GACtD;AAAA,QAEAyB,2BAAAA,IAAC,oBAAA,EACY,SAAA,MACHsgB,MAAAA,oBACYxJ,kBAAAA,UACT5I,SACK,cAAA,CAAC4I,UACK,oBAAA,CAACA,UACR,mBAAMyJ,sBAAqB,KAAM,GAC1BtS,oBACV2T,sBACQ,kBAAA,OACCE,mBACFpe,iBAAAA,YACA0X,iBACGsB,mBAAAA,CAAkB;AAAA,MAAA,GAE9C;AACH5d,cAAAmP;AAAAnP,cAAA4d;AAAA5d,cAAAkP;AAAAlP,cAAAgY;AAAAhY,cAAAoP;AAAApP,cAAA8iB;AAAA9iB,cAAA+iB;AAAA/iB,cAAAgjB;AAAAhjB,cAAAsc;AAAAtc,cAAAwhB;AAAAxhB,cAAA4E;AAAA5E,cAAAijB;AAAAjjB,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,EAAA,MAAA8iB,cAAA9iB,UAAAQ,IAAA;AA9CTI,WAAAkB,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZvB,UAAAA;AAAAA,QAAAA;AAAAA,uCAGCqF,OAAAA,OAAA,EACS,MAAA,MACCkd,OAAAA,YAKNtiB,UAAAA,GAAAA,CAoCL;AAAA,MAAA,GAEJ;AAAMR,cAAA8iB;AAAA9iB,cAAAQ;AAAAR,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,UAAAkP,UAAA;AAENrO,WAAAK,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,UAAAA,2BAAAA,IAAC,mBACG,UAAAA,2BAAAA,IAAC,yBAAA,EAAkCgO,SAAAA,IACvC,GAEJ;AAAMlP,cAAAkP;AAAAlP,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAY,MAAAZ,UAAAa,IAAA;AA1DVC,kEACIF,UAAAA;AAAAA,QAAAA;AAAAA,QAmDAC;AAAAA,MAAAA,GAMM;AACPb,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,WA3DHc;AAAAA,EA2DG;AC3FJ,QAAMoiB,uBAAuB1gB,MAAM2gB,WACtC,SAAAD,sBAAAnjB,IAAAwE,KAAA;AAAA,UAAAvE,IAAAC,qBAAAA,EAAA,EAAA;AAA8B,UAAA;AAAA,MAAA2E;AAAAA,MAAAwe;AAAAA,MAAAlU;AAAAA,MAAAmU;AAAAA,IAAAA,IAAAtjB;AAQ1B,UAAA;AAAA,MAAA+C;AAAAA,MAAAJ;AAAAA,MAAAC;AAAAA,MAAAI;AAAAA,MAAAF;AAAAA,IAAAA,IAOII,iBAAAA;AAA4B,QAAA5C;AAAA,QAAAL,EAAA,CAAA,MAAA8C,UAAA9C,SAAA4E,YAAA;AAGdvE,WAAAuE,cAAcjB,aAAMb,QADzB,MACqC;AAAC9C,aAAA8C;AAAA9C,aAAA4E;AAAA5E,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAnD,UAAAsjB,YAAkBjjB;AAAkC,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAA8C,UAAA9C,SAAA4E,YAAA;AAGpCrE,WAAAqE,cAAcjB,aAAMb,QADzB,IACmC;AAAC9C,aAAA8C;AAAA9C,aAAA4E;AAAA5E,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA/C,UAAAoU,UAAgB7T;AAAgC,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAA8C,UAAA9C,SAAA4E,YAAA;AAGvBpE,WAAAoE,cAAcjB,aAAMb,QADzB,aAC4C;AAAC9C,aAAA8C;AAAA9C,aAAA4E;AAAA5E,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAjE,UAAAujB,mBAAyB/iB;AAUF,UAAAI,KAAA8B,OAAMjD;AAAM,QAAAoB;AAAA,QAAAb,EAAA,CAAA,MAAAqjB,gBAAArjB,EAAA,EAAA,MAAA+C,mBAAA/C,EAAA,EAAA,MAAA2C,iBAAA3C,UAAA6C,SAAA;AACThC,WAAAkE,CAAAA,MAAA;AACN,cAAAye,eAAqBze,EAACC,OAAA9E;AACtB,cAAA2D,YAAkBF,OAAAA,MAAMd,SAjBjC,IAiB4C;AAAE,YACjC,CAACgB,aAAawf,cAAY;AAC1B1gB,wBAnBb,MAmB+B6gB,eAAe5f,KAAAA,YAAY4f,YAAY,IAAI,IAAE,KAAO;AAAA,QAAC;AAE3E7gB,sBAxBP,QAwB2B6gB,kBAAkB;AACtCzgB,wBAzBP,QAAM,IAyB2B;AAAA,MAAC;AAC9B/C,aAAAqjB;AAAArjB,cAAA+C;AAAA/C,cAAA2C;AAAA3C,cAAA6C;AAAA7C,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACMI,WAAA;AAAA,QAAA2iB,UAAA;AAAA,MAAA;AAAgBzjB,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAIhB,UAAAe,KAAAkE,QAAQqe,SAAS;AAAC,QAAAtiB;AAAA,QAAAhB,UAAAkP,YAAAlP,EAAA,EAAA,MAAAuE,OAAAvE,EAAA,EAAA,MAAAa,MAAAb,UAAAe,MAAAf,EAAA,EAAA,MAAA0C,OAAAjD,MAAA;AAlB7BuB,WAAAE,2BAAAA,IAAC0E,gBACSnG,MAdT,QAea8E,UAAAA,KACNsB,IAAAA,GAAAA,oBACG,OAAAjF,IACG,UAAAC,IASH,OAAAC,IACM,aAAA,cACb,gBACUoO,UACH,OAAAnO,GAAAA,CAAkB;AAAGf,cAAAkP;AAAAlP,cAAAuE;AAAAvE,cAAAa;AAAAb,cAAAe;AAAAf,QAAA,EAAA,IAAA0C,OAAAjD;AAAAO,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAEX,UAAAmB,KAAA8D,QAAQqe,SAAS;AAAC,QAAAhiB;AAAA,QAAAtB,EAAA,EAAA,MAAAsjB,aAAAtjB,UAAAmB,IAAA;AAAvCG,YAAAJ,2BAAAA,IAACqE,mBAAA,EAAoB,OAAApE,IAChBmiB,UAAAA,WACL;AAAetjB,cAAAsjB;AAAAtjB,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAgB,IAAA;AAvBnBO,4CAAA,OAAA,EACIP,UAAAA;AAAAA,QAAAA;AAAAA,QAoBAM;AAAAA,MAAAA,GAGJ;AAAMtB,cAAAsB;AAAAtB,cAAAgB;AAAAhB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAOS,UAAAwB,MAAAkB,OAAMpD;AAAI,QAAAmC;AAAA,QAAAzB,EAAA,EAAA,MAAAqjB,gBAAArjB,EAAA,EAAA,MAAA+C,mBAAA/C,EAAA,EAAA,MAAA2C,iBAAA3C,UAAA6C,SAAA;AACPpB,YAAAkG,CAAAA,QAAA;AACN,cAAA+b,aAAmB3e,IAACC,OAAA9E;AACpB,cAAAyjB,cAAoBhgB,OAAAA,MAAMd,SA9CjC,MA8C8C;AAAE,YACrC,CAAC8gB,eAAeN,cAAY;AAC5B1gB,wBAhDX,QAgD+B+gB,aAAaE,KAAAA,mBAAmBF,UAAU,IAAI,EAAE;AAAA,QAAC;AAEzE/gB,sBA/CT,MA+C2B+gB,gBAAgB;AAClC3gB,wBAhDT,MAAI,IAgD6B;AAAA,MAAC;AAC5B/C,cAAAqjB;AAAArjB,cAAA+C;AAAA/C,cAAA2C;AAAA3C,cAAA6C;AAAA7C,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AACS,UAAA0B,MAAA0hB,cAAclU;AAGjB,UAAAtN,MAAAqD,QAAQmP,OAAO;AAAC,QAAAvS;AAAA,QAAA7B,EAAA,EAAA,MAAAyB,OAAAzB,UAAA0B,OAAA1B,EAAA,EAAA,MAAA4B,OAAA5B,EAAA,EAAA,MAAA0C,OAAApD,IAAA;AAjB3BuC,2CAAC+D,OAAAA,OAAA,EACStG,MArCX,MAsCSuG,IAAAA,GAAAA,oBACG,OAAA,MACA,OAAArE,KACG,UAAAC,KASA,UAAAC,KACV,UAAA,MACK,MAAA,SACE,OAAAE,KAAgB;AAAG5B,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA4B;AAAA5B,QAAA,EAAA,IAAA0C,OAAApD;AAAAU,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AACT,UAAA+B,MAAAkD,QAAQmP,OAAO;AAAC,QAAApS;AAAA,QAAAhC,EAAA,EAAA,MAAAoU,WAAApU,UAAA+B,KAAA;AAArCC,YAAAd,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAxD,KAChBqS,UAAAA,SACL;AAAepU,cAAAoU;AAAApU,cAAA+B;AAAA/B,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAA6B,OAAA7B,UAAAgC,KAAA;AArBnBkD,4CAAA,OAAA,EACIrD,UAAAA;AAAAA,QAAAA;AAAAA,QAkBAG;AAAAA,MAAAA,GAGJ;AAAMhC,cAAA6B;AAAA7B,cAAAgC;AAAAhC,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAOY,UAAAoF,MAAAH,QAAQse,gBAAgB;AAAC,QAAAle;AAAA,QAAArF,EAAA,EAAA,MAAAkP,YAAAlP,UAAAoF,KAAA;AAJvCC,YAAAnE,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYyD,MAzDL,eA0DGxD,IAAAA,GAAAA,oBACG,OAAA,eACGqJ,UACH,OAAA9J,IAAAA,CAAyB;AAAGpF,cAAAkP;AAAAlP,cAAAoF;AAAApF,cAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AACrB,UAAAsF,MAAAL,QAAQse,gBAAgB;AAAC,QAAA/d;AAAA,QAAAxF,EAAA,EAAA,MAAAujB,oBAAAvjB,UAAAsF,KAAA;AAA9CE,YAAAtE,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAD,KAChBie,UAAAA,kBACL;AAAevjB,cAAAujB;AAAAvjB,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,EAAA,MAAAqF,OAAArF,UAAAwF,KAAA;AARnBC,4CAAA,OAAA,EACIJ,UAAAA;AAAAA,QAAAA;AAAAA,QAKAG;AAAAA,MAAAA,GAGJ;AAAMxF,cAAAqF;AAAArF,cAAAwF;AAAAxF,cAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0F;AAAA,QAAA1F,EAAA,EAAA,MAAAuB,OAAAvB,UAAAkF,OAAAlF,EAAA,EAAA,MAAAyF,KAAA;AA7DVC,qDAAgB,WAAA,mCAEZnE,UAAAA;AAAAA,QAAAA;AAAAA,QA0BA2D;AAAAA,QAwBAO;AAAAA,MAAAA,GAWJ;AAAMzF,cAAAuB;AAAAvB,cAAAkF;AAAAlF,cAAAyF;AAAAzF,cAAA0F;AAAAA,IAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA,WA/DN0F;AAAAA,EA+DM,CAIlB;ACtGO,WAAAme,oBAAA9jB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA6B,UAAA;AAAA,MAAA6jB;AAAAA,MAAA5U;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA7E;AAUhC,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAAkCM,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,EAAA,CAAA,MAAAkP,YAAAlP,SAAA4E,cAAA5E,EAAA,CAAA,MAAA8jB,UAAA;AAQ7BzjB,WAAAyjB,aAAa,gBACV5iB,+BAAC,4BAAmCgO,UACF,QAAA,MACG,WAAA,MACF,SAAA,MACJ,KAAA,MACA,KAAA,MACC,YACK,WAAA,MACCtK,YAAU;AAAG5E,aAAAkP;AAAAlP,aAAA4E;AAAA5E,aAAA8jB;AAAA9jB,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,EAAA,CAAA,MAAAkP,YAAAlP,SAAA4E,cAAA5E,EAAA,CAAA,MAAA8jB,UAAA;AACtDvjB,WAAAujB,aAAa,iBACV5iB,2BAAAA,IAAC,0BAAA,EAAmCgO,UACEtK,YAAU;AAAG5E,aAAAkP;AAAAlP,aAAA4E;AAAA5E,aAAA8jB;AAAA9jB,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAkP,YAAAlP,SAAA4E,cAAA5E,EAAA,EAAA,MAAA8jB,UAAA;AAEtDtjB,WAAAsjB,aAAa,eACV5iB,2BAAAA,IAAC,0BAAA,EAAmCgO,UACF,QAAA,MACG,WAAA,MACN,KAAA,MACA,KAAA,MACC,MAAA,MACK,WAAA,MACCtK,YAAU;AAAG5E,aAAAkP;AAAAlP,aAAA4E;AAAA5E,cAAA8jB;AAAA9jB,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4E,cAAA5E,EAAA,EAAA,MAAA8jB,UAAA;AAEtDljB,WAAAkjB,aAAa,WACV5iB,2BAAAA,IAAC,0BAAA,EAAmCgO,UACL,KAAA,MACA,KAAA,MACC,MAAA,MACMtK,WAAAA,CAAU;AAAG5E,cAAAkP;AAAAlP,cAAA4E;AAAA5E,cAAA8jB;AAAA9jB,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAAK,MAAAL,EAAA,EAAA,MAAAO,MAAAP,EAAA,EAAA,MAAAQ,MAAAR,UAAAY,IAAA;AAjC/DC,WAAAK,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,0CAAC,iBAAA,EAEIb,UAAAA;AAAAA,QAAAA;AAAAA,QAUAE;AAAAA,QAIAC;AAAAA,QAUAI;AAAAA,MAAAA,EAAAA,CAOL,EAAA,CAEJ;AAAMZ,cAAAK;AAAAL,cAAAO;AAAAP,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,UAAA2C,eAAA;AAMmB7B,WAAAiE,CAAAA,MAAA;AACNpC,sBAAc,gBAAgBoC,EAACC,OAAA9E,UAAkB,KAAEsD,SAAeuB,EAACC,OAAA9E,KAAa;AAAA,MAAC;AACpFF,cAAA2C;AAAA3C,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAA0C,QAAA;AAEM3B,WAAA4C,OAAAA,MAAMjB,QAAQ,cAAc,KAAK;AAAE1C,cAAA0C;AAAA1C,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAc,MAAAd,EAAA,EAAA,MAAAe,IAAA;AARzDC,WAAAE,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,yCAACiE,GAAAA,WAAA,EAAgB,MAAA,gBACI+J,UACA,UAAApO,IAGH,OAAA,iBACA,OAAAC,IAAmC,GAEzD;AAAMf,cAAAkP;AAAAlP,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAa,MAAAb,UAAAgB,IAAA;AAlDVG,kEACIN,UAAAA;AAAAA,QAAAA;AAAAA,QAuCAG;AAAAA,MAAAA,GAUM;AACPhB,cAAAa;AAAAb,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAnDHmB;AAAAA,EAmDG;AChEJ,WAAA4iB,qBAAAhkB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA8B,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAGjC,UAAA;AAAA,MAAA2C;AAAAA,IAAAA,IAAmBO,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,SAAA0C,QAAA;AACVrC,WAAAsD,OAAAA,MAAMjB,QAAQ,cAAc;AAAC1C,aAAA0C;AAAA1C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAlD,UAAAmX,eAAqB9W;AAA8B,QAAAE;AAAA,QAAAP,SAAAkP,UAAA;AAI3C3O,WAAAW,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,UAAAA,2BAAAA,IAAC,mBACG,UAAAA,2BAAAA,IAAC,2BAAA,EAAoCgO,SAAAA,IACzC,GAEJ;AAAMlP,aAAAkP;AAAAlP,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAmX,gBAAAnX,SAAAkP,UAAA;AAEN1O,WAAAU,2BAAAA,IAAA,SAAgB,WAAA,eAEZ,yCAAC0E,OAAAA,OAAA,EACS,MAAA,gBACLhF,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA8T;AAAAA,UAAAC;AAAAA,QAAAA,IAAA/T;AAAiC,8CACvB,eAAA,EACG,OAAAuW,iBAAY,QAAaA,iBAAY3T,SAAiB,0BAA2B,sBAAsB2T,aAAYS,YAChH1I,UACU,oBAAA,MAAawF,OAC3BC,MAAI;AAAA,MAAG,GAEzB,EAAA,CAEJ;AAAM3U,aAAAmX;AAAAnX,aAAAkP;AAAAlP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,IAAA;AAtBVI,kEACIL,UAAAA;AAAAA,QAAAA;AAAAA,QAQAC;AAAAA,MAAAA,GAaM;AACPR,aAAAO;AAAAP,aAAAQ;AAAAR,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,WAvBHY;AAAAA,EAuBG;ACvBJ,WAAAojB,mBAAAjkB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA4B,UAAA;AAAA,MAAAiP;AAAAA,MAAAE;AAAAA,MAAAD;AAAAA,MAAAmN;AAAAA,MAAAsB;AAAAA,IAAAA,IAAA7d;AAc/B,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAGIM,iBAAAA;AAEJ,UAAA,CAAAue,oBAAAC,qBAAA,IAAoDre,MAAAA,cAAuB;AAC3E,UAAA,CAAAga,qBAAAsE,sBAAA,IAAsDte,eAAAA;AACtD,UAAA,CAAAue,2BAAAC,4BAAA,IAAkExe,eAAAA;AAA+B,QAAA/C;AAAA,QAAAL,EAAA,CAAA,MAAA2C,iBAAA3C,EAAA,CAAA,MAAA0C,OAAAuhB,OAAAtI,cAAA3b,EAAA,CAAA,MAAA0C,OAAAuhB,OAAA3G,iBAAA;AAEvEjd,WAAAE,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAjB;AAAAA,UAAAgP;AAAAA,UAAA+M;AAAAA,QAAAA,IAAA9a;AAI0B,YAAA,CAC5CjB,IAAE;AAAA,gBACGiM,MAAAA;AAAAA,QAAO;AAEjB5I,sBAAc,WAAWgM,cAAcrP,IAAIgP,SAAS,GAAG+M,UAAQ,KAAO;AAEtE,cAAAwG,yBAA+Bnf,OAAMuhB,OAAA3G,mBAA2B5N,OAAAC,KAAYjN,OAAMuhB,OAAAtI,gBAAwB;AAC1G,cAAAwD,qBAA2B0C,uBAAsBvd,SAAUhF,EAAE,IAAIuiB,yBAAsB,CAAA,GAAOA,wBAAwBviB,EAAE;AACxHqD,sBAAc,WAAW4L,+BAA+BD,SAAS,GAAG6Q,oBAAkB,KAAO;AAC7FsC,mCAA2B;AAAA,MAAC;AAC/BzhB,aAAA2C;AAAA3C,QAAA,CAAA,IAAA0C,OAAAuhB,OAAAtI;AAAA3b,QAAA,CAAA,IAAA0C,OAAAuhB,OAAA3G;AAAAtd,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAdD,UAAAgjB,oBAA0B3iB;AAcxB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAod,uBAAApd,EAAA,CAAA,MAAA2hB,6BAAA3hB,EAAA,CAAA,MAAA0C,OAAAuhB,OAAAtI,YAAA;AAEF,YAAAyG,yBAA+BhF,sBAAsB5O,UAAU4O,qBAAqBuE,yBAAyB,IAACne;AACrFjD,WAAA6hB,yBAAyBze,aAAMjB,OAAMuhB,OAAAtI,YAAoByG,uBAAsBhU,WAAY,KAAK,cAAc,CAAC,IAAC5K;AAAYxD,aAAAod;AAAApd,aAAA2hB;AAAA3hB,QAAA,CAAA,IAAA0C,OAAAuhB,OAAAtI;AAAA3b,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAArJ,UAAAqiB,mBAAyB9hB;AAA6H,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAA2C,iBAAA3C,SAAA0C,QAAA;AAE/HlC,WAAAA,CAAAiO,aAAA+T,gBAAA;AACnB,cAAA1B,SAAerS,cAAcD,UAAUC,aAAaH,WAAS,IAAC9K;AAAa,YAAA,CACtEsd,QAAM;AAAA,gBACDvV,MAAM,+BAA+B;AAAA,QAAC;AAEhD5I,sBAAc,SAASwL,mBAAmB2S,MAAM,CAAC,IAAEtd,QAAA,KAAkB;AACrE,cAAAwe,sBAA4B,SAASzT,+BAA+BD,WAAS,CAAC;AAC9E,cAAA2T,2BAAyCte,OAAAA,MAAMjB,QAAQsf,mBAAmB,KAAKtS,OAAAC,KAAYhM,OAAAA,MAAMjB,QAAQ2L,0BAA0BC,WAAS,CAAC,CAAC;AAC9I3L,sBAAcqf,qBAAqBH,yBAAsBzd,OAAA8d,OAAeA,MAAMzT,WAAW,QAAQ;AAEjGgT,mCAA2B;AAC3BC,+BAAsBle,MAAU;AAChCoe,qCAA4Bpe,MAAU;AAAA,MAAC;AAC1CxD,aAAA2C;AAAA3C,aAAA0C;AAAA1C,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAbD,UAAAmiB,iBAAuB3hB;AAarB,QAAAI;AAAA,QAAAC;AAAA,QAAAb,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAMWE,WAAAA,MAAM6gB,0BAA0B;AAC9B5gB,0CAAC4hB,GAAAA,SAAA,EAAO;AAAEziB,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAD,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAA,IAAA;AAEJ,UAAAc,KAAA4B,OAAMjD,QAAS;AAAY,QAAAsB;AAAA,QAAAf,UAAAc,IAAA;AAPzBC,WAAAe,2BAAAA,KAAC2Q,GAAAA,UACpB,WAAA,MACM,OAAA,WAEG,SAAA7R,IACE,WAAAC,IACd,UAAA;AAAA,QAAA;AAAA,QACoBC;AAAAA,MAAAA,GACrB;AAASd,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AART,UAAAkkB,iBAAuBnjB;AAQb,QAAAC;AAAA,QAAAhB,UAAA2C,eAAA;AAEa3B,WAAAA,CAAAsc,iBAAAqF,gBAAA;AACnBhgB,sBAAc,SAAS4L,+BAA+BD,WAAS,CAAC,IAAIgP,iBAAe,KAAO;AAAA,MAAC;AAC9Ftd,cAAA2C;AAAA3C,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAFD,UAAAyd,iBAAuBzc;AAErB,QAAAG;AAAA,QAAAnB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAMcS,WAAAD,2BAAAA,IAACP,eAAA,EAAoB,SAAA,aAAa,UAAA,4BAElC;AAAaX,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAAkkB,gBAAA;AAHjB5iB,YAAAQ,2BAAAA,KAAA,OAAA,EAAgB,WAAA,4CACZX,UAAAA;AAAAA,QAAAA;AAAAA,QAGC+iB;AAAAA,MAAAA,GACL;AAAMlkB,cAAAkkB;AAAAlkB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAA0C,OAAAuhB,OAAAtI,YAAA;AAIcpa,YAAAmB,OAAMuhB,OAAAtI,cAAA,CAAA;AAAwB3b,QAAA,EAAA,IAAA0C,OAAAuhB,OAAAtI;AAAA3b,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AACzB,UAAAwB,MAAAkB,OAAMuhB,OAAA3G;AAAuB,QAAA7b;AAAA,QAAAzB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACtCe,YAAA,CAAA;AAAEzB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,UAAAkP,UAAA;AAEOxN,YAAAwN,WAAQ1L,SAAA,CAAAkf,eAAAyB,gBAAA;AAGjBzC,+BAAuBjT,aAAW;AAClCmT,qCAA6BtT,WAAS;AACtCmT,kCAA0B;AAAA,MAAC;AAC9BzhB,cAAAkP;AAAAlP,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AACW,UAAA4B,MAAAsN,WAAQ1L,SAElBia;AAAc,QAAA5b;AAAA,QAAA7B,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAuB,OAAAvB,EAAA,EAAA,MAAAwB,OAAAxB,EAAA,EAAA,MAAA0B,OAAA1B,UAAA4B,KAAA;AAdxBC,2CAAC,cAAA,EACe,YAAAN,KACK,iBAAAC,KACT,QAAAC,KACYmc,oBACH,iBAAAlc,KAOD,gBAAAE,KAEI;AAAG5B,cAAA4d;AAAA5d,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAA0B;AAAA1B,cAAA4B;AAAA5B,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA0C,OAAAuhB,OAAA3G,iBAAA1N,QAAA;AAE1B7N,YAAA,CAACmN,YAAaxM,OAAMuhB,OAAA3G,iBAAA1N,gBACjB1O,2BAAAA,IAAA,OAAA,EAAe,WAAA,+CAA8C,UAAA,uCAAA,CAE7D;AAAMlB,cAAAkP;AAAAlP,cAAA0C,OAAAuhB,OAAA3G,iBAAA1N;AAAA5P,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAA6B,OAAA7B,UAAA+B,KAAA;AArBdC,YAAAF,2BAAAA,KAAC+Q,GAAAA,OAAA,EAAgB,WAAA,YAEbhR,UAAAA;AAAAA,QAAAA;AAAAA,QAgBCE;AAAAA,MAAAA,GAKL;AAAQ/B,cAAA6B;AAAA7B,cAAA+B;AAAA/B,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAAsB,OAAAtB,UAAAgC,KAAA;AA9BZkD,YAAApD,2BAAAA,KAAA,OAAA,EAAgB,WAAA,eACZR,UAAAA;AAAAA,QAAAA;AAAAA,QAMAU;AAAAA,MAAAA,GAwBJ;AAAMhC,cAAAsB;AAAAtB,cAAAgC;AAAAhC,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,UAAAmP,sBAAAnP,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAmiB,kBAAAniB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAAgjB,qBAAAhjB,UAAAsc,mBAAAtc,EAAA,EAAA,MAAAwhB,sBAAAxhB,EAAA,EAAA,MAAAqiB,oBAAAriB,EAAA,EAAA,MAAAod,uBAAApd,EAAA,EAAA,MAAA2hB,6BAAA3hB,UAAA0C,OAAAuhB,OAAA3G,iBAAA;AAELlY,YAAA,CAAC8J,YAAYhO,2BAAAA,IAAC,oBAAA,EACF,SAAA,OACQ,wBACXsgB,MAAAA,oBACGpS,SACWD,oBACV,UAAA,MAAA;AACNsS,mCAA2B;AAC3BC,+BAAsBle,MAAU;AAChCoe,qCAA4Bpe,MAAU;AAAA,MAAC,GAE9B,aAAA,MAAA;AACTie,mCAA2B;AAC3BC,+BAAsBle,MAAU;AAChCoe,qCAA4Bpe,MAAU;AAAA,MAAC,GAEvBoa,oBACVuE,UAAAA,gBACG/E,aAAAA,qBACMuE,mBAAAA,2BACTU,UAAAA,kBACQ,kBAAApd,QAAQmY,mBAAmB,GAC/B,cAAA,CAACA,qBACK,oBAAA,CAACA,qBACF4F,mBACG,sBAAA5F,sBAAmB5Z,SAAed,OAAMuhB,OAAA3G,iBAC7ChB,gBAAAA,CAAe;AAAGtc,cAAAmP;AAAAnP,cAAA4d;AAAA5d,cAAAmiB;AAAAniB,cAAAkP;AAAAlP,cAAAoP;AAAApP,cAAAgjB;AAAAhjB,cAAAsc;AAAAtc,cAAAwhB;AAAAxhB,cAAAqiB;AAAAriB,cAAAod;AAAApd,cAAA2hB;AAAA3hB,QAAA,EAAA,IAAA0C,OAAAuhB,OAAA3G;AAAAtd,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqF;AAAA,QAAArF,EAAA,EAAA,MAAAkF,OAAAlF,UAAAoF,KAAA;AA5D3CC,mEACIH,UAAAA;AAAAA,QAAAA;AAAAA,QAiCCE;AAAAA,MAAAA,GA0BsC;AAExCpF,cAAAkF;AAAAlF,cAAAoF;AAAApF,cAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AAAA,WA9DHqF;AAAAA,EA8DG;AC7IJ,WAAA+e,yBAAArkB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAkC,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAIrC,UAAA;AAAA,MAAA2C;AAAAA,MAAAE;AAAAA,IAAAA,IAGIK,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,SAAAkP,UAAA;AAaR7O,0CAAC,6BAAoC6O,SAAAA,CAAQ;AAAGlP,aAAAkP;AAAAlP,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAA0C,QAAA;AAIjBnC,WAAAoD,OAAAA,MAAMjB,QAfvB,gBAe4C;AAAC1C,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAkP,YAAAlP,SAAA4C,gBAAA5C,EAAA,CAAA,MAAAO,IAAA;AAD3DC,mDAAgB,WAAA,cACZ,UAAAU,+BAAC2E,GAAAA,oBAAA,EAA0B,OAAAtF,IACA,OAAA,aACDiW,MAjBhB,kBAkBe,MAAA,UACA,MAAA,SACKtH,UACAtM,wBAAY,EAAA,CAC9C;AAAM5C,aAAAkP;AAAAlP,aAAA4C;AAAA5C,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,SAAA0C,QAAA;AAGyB9B,WAAA+C,OAAAA,MAAMjB,QAxBvB,gBAwB4C;AAAC1C,aAAA0C;AAAA1C,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4C,gBAAA5C,EAAA,EAAA,MAAAY,IAAA;AAD3DC,mDAAgB,WAAA,cACZ,UAAAK,+BAAC2E,GAAAA,oBAAA,EAA0B,OAAAjF,IACA,OAAA,aACD6V,MA1BhB,kBA2Be,MAAA,UACA,MAAA,SAEKvH,UACAtM,wBAAY,EAAA,CAC9C;AAAM5C,cAAAkP;AAAAlP,cAAA4C;AAAA5C,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,UAAA0C,QAAA;AAKS5B,WAAA6C,OAAAA,MAAMjB,QApCF,qBAoC4B;AAAC1C,cAAA0C;AAAA1C,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4C,gBAAA5C,EAAA,EAAA,MAAAc,IAAA;AAFhDC,mDAAgB,WAAA,cACZ,UAAAG,+BAAC2E,GAAAA,oBAAA,EACU,OAAA/E,IACA,OAAA,aACDujB,MAtCK,uBAuCN,MAAA,UACA,MAAA,SAEKnV,UACAtM,wBAAY,EAAA,CAC9B;AAAM5C,cAAAkP;AAAAlP,cAAA4C;AAAA5C,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,UAAA0C,QAAA;AAIS1B,WAAA2C,OAAAA,MAAMjB,QA/CF,qBA+C4B;AAAC1C,cAAA0C;AAAA1C,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4C,gBAAA5C,EAAA,EAAA,MAAAgB,IAAA;AAFhDG,mDAAgB,WAAA,cACZ,UAAAD,+BAAC2E,GAAAA,oBAAA,EACU,OAAA7E,IACA,OAAA,aACDsjB,MAjDK,uBAkDN,MAAA,UACA,MAAA,SAEKpV,UACAtM,wBAAY,EAAA,CAC9B;AAAM5C,cAAAkP;AAAAlP,cAAA4C;AAAA5C,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAAkP,UAAA;AAEN5N,oDAAgB,WAAA,cACZ,UAAAJ,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY2e,MAzDE,uBA0DH,MAAA,YACPhjB,UAAAA,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAmT;AAAAA,UAAAC;AAAAA,QAAAA,IAAApT;AAAiC,8CACvB,eAAA,EACG,OAAA,kBACG2N,UACJyF,MACCD,OAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,cAAAkP;AAAAlP,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,UAAAkP,UAAA;AACN3N,oDAAgB,WAAA,cACZ,UAAAL,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY4e,MApEE,uBAqEH,MAAA,YACPhjB,UAAAA,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAkT,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAA7T;AAAiC,eACxBN,+BAAC,iBACG,OAAA,kBACGgO,UACJyF,MAAAA,QACCD,OAAAA,SAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,cAAAkP;AAAAlP,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,UAAAkP,UAAA;AACN1N,oDAAgB,WAAA,cACZ,UAAAN,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY6e,MA/EC,sBAgFF,MAAA,YACPhjB,UAAAA,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAiT,OAAA2B;AAAAA,UAAA1B,MAAA2B;AAAAA,QAAAA,IAAA7U;AAAiC,eACxBP,+BAAC,iBACG,OAAA,iBACGgO,UACJyF,MAAAA,QACCD,OAAAA,SAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,cAAAkP;AAAAlP,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAK,MAAAL,EAAA,EAAA,MAAAsB,OAAAtB,EAAA,EAAA,MAAAuB,OAAAvB,EAAA,EAAA,MAAAwB,OAAAxB,EAAA,EAAA,MAAAQ,MAAAR,EAAA,EAAA,MAAAa,MAAAb,EAAA,EAAA,MAAAe,MAAAf,UAAAmB,IAAA;AArFVM,YAAAK,2BAAAA,KAAA,OAAA,EAAgB,WAAA,2BACZzB,UAAAA;AAAAA,QAAAA;AAAAA,QAGAG;AAAAA,QAUAK;AAAAA,QAYAE;AAAAA,QAYAI;AAAAA,QAYAG;AAAAA,QAYAC;AAAAA,QAYAC;AAAAA,MAAAA,GAYJ;AAAMxB,cAAAK;AAAAL,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAAQ;AAAAR,cAAAa;AAAAb,cAAAe;AAAAf,cAAAmB;AAAAnB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,WAtFNyB;AAAAA,EAsFM;AC1GP,WAAAijB,oBAAA3kB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA6B,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAIhC,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAAkCM,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,SAAAkP,UAAA;AAKtC7O,WAAAa,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,UAAAA,2BAAAA,IAAC,mBACG,UAAAA,2BAAAA,IAAC,0BAAA,EAAmCgO,SAAAA,IACxC,GAEJ;AAAMlP,aAAAkP;AAAAlP,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAA2C,eAAA;AAOmBpC,WAAAwE,CAAAA,MAAA;AACNpC,sBAAc,gBAAgBoC,EAACC,OAAA9E,UAAkB,KAAEsD,SAAemhB,WAAW5f,EAACC,OAAA9E,KAAa,CAAC;AAAA,MAAC;AAChGF,aAAA2C;AAAA3C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAA0C,QAAA;AAEMlC,WAAAmD,OAAAA,MAAMjB,QAAQ,cAAc,KAAK;AAAE1C,aAAA0C;AAAA1C,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAkP,YAAAlP,SAAAO,MAAAP,EAAA,CAAA,MAAAQ,IAAA;AATzDI,mDAAgB,WAAA,eAEZ,UAAAM,2BAAAA,IAACiE,gBAAgB,MAAA,gBACI+J,UACJ,MAAA,UACI,UAAA3O,IAGH,OAAA,iBACA,OAAAC,IAAmC,GAEzD;AAAMR,aAAAkP;AAAAlP,aAAAO;AAAAP,aAAAQ;AAAAR,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAAK,MAAAL,UAAAY,IAAA;AArBVC,kEAEIR,UAAAA;AAAAA,QAAAA;AAAAA,QAQAO;AAAAA,MAAAA,GAWM;AACPZ,cAAAK;AAAAL,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,WAtBHa;AAAAA,EAsBG;AC9BJ,WAAA+jB,uBAAA7kB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAgC,UAAA;AAAA,MAAA8X;AAAAA,MAAA7I;AAAAA,MAAAtK;AAAAA,MAAAigB;AAAAA,IAAAA,IAAA9kB;AAcnC,UAAA;AAAA,MAAA2C;AAAAA,MAAAE;AAAAA,MAAAE;AAAAA,IAAAA,IAIIG,iBAAAA;AAEJ,UAAA6hB,aAAmBC,KAAAA,wBAAAA;AAA0B,QAAA,CAExCD,YAAU;AAAA,UAAAzkB;AAAA,UAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACJL,cAAAa,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eACnB,UAAAA,+BAACwR,GAAAA,oBAAgB,GACrB;AAAM1S,eAAAK;AAAAA,MAAA,OAAA;AAAAA,cAAAL,EAAA,CAAA;AAAA,MAAA;AAAA,aAFCK;AAAAA,IAED;AAEV,UAAA2kB,WAAiBH,WAAW,mBAAoB9M,WAAW,YAAY;AAAS,QAAA1X;AAAA,QAAAL,EAAA,CAAA,MAAAglB,YAAAhlB,SAAA0C,QAAA;AAC1CrC,WAAAsD,OAAAA,MAAMjB,QAAQsiB,QAAQ;AAAChlB,aAAAglB;AAAAhlB,aAAA0C;AAAA1C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAA7D,UAAAilB,YAAsC5kB;AAAwB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAA8C,UAAA9C,SAAAglB,YAAAhlB,EAAA,CAAA,MAAA4E,YAAA;AACxBrE,WAAAqE,cAAcjB,aAAMb,QAAQkiB,QAAQ;AAAChlB,aAAA8C;AAAA9C,aAAAglB;AAAAhlB,aAAA4E;AAAA5E,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA3E,UAAAklB,YAAsC3kB;AAAsC,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAA4C,gBAAA5C,EAAA,EAAA,MAAAklB,aAAAllB,EAAA,EAAA,MAAAglB,YAAAhlB,UAAAilB,WAAA;AAGxEzkB,WAAAU,2BAAAA,IAAA0S,WAAAA,UAAA,EACI,kDAAgB,WAAA,eAEZ,UAAA1S,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYof,MAAAA,UACIA,UACL,MAAA,UACK9V,UACH+V,kBACAC,OAAAA,WACOtiB,cACVuiB,IAAAA,kBAAAA,CAAiB,EAAA,CAEhC,EAAA,CAAM;AAEPnlB,aAAAkP;AAAAlP,aAAA4C;AAAA5C,cAAAklB;AAAAllB,cAAAglB;AAAAhlB,cAAAilB;AAAAjlB,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAAA,WAdHQ;AAAAA,EAcG;AAIJ,WAAA2kB,kBAAAplB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAA,QAAAiP;AAAA,QAAA6D;AAAA,QAAAnQ;AAAA,QAAAoiB;AAAA,QAAAI;AAAA,QAAAllB;AAAA,QAAAF,SAAAD,IAAA;AAA2B,OAAA;AAAA,QAAAmP;AAAAA,QAAA8V;AAAAA,QAAA9kB;AAAAA,QAAA0C;AAAAA,QAAAmQ;AAAAA,QAAA,GAAAqS;AAAAA,MAAAA,IAAArlB;AAajCC,aAAAD;AAAAC,aAAAkP;AAAAlP,aAAA+S;AAAA/S,aAAA4C;AAAA5C,aAAAglB;AAAAhlB,aAAAolB;AAAAplB,aAAAE;AAAAA,IAAA,OAAA;AAAAgP,iBAAAlP,EAAA,CAAA;AAAA+S,cAAA/S,EAAA,CAAA;AAAA4C,qBAAA5C,EAAA,CAAA;AAAAglB,iBAAAhlB,EAAA,CAAA;AAAAolB,cAAAplB,EAAA,CAAA;AAAAE,cAAAF,EAAA,CAAA;AAAA,IAAA;AAEG,UAAA8kB,aAAmBC,KAAAA,wBAAAA;AAA0B,QAAA,CAExCD,YAAU;AAAA,UAAAzkB;AAAA,UAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACJL,cAAAa,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eACnB,UAAAA,+BAACwR,GAAAA,oBAAgB,GACrB;AAAM1S,eAAAK;AAAAA,MAAA,OAAA;AAAAA,cAAAL,EAAA,CAAA;AAAA,MAAA;AAAA,aAFCK;AAAAA,IAED;AAAA,QAAAA;AAAA,QAAAL,EAAA,CAAA,MAAA8kB,YAAAO,aAAA;AAEUhlB,WAAAykB,YAAUO,eAAA,CAAA;AAAmBrlB,QAAA,CAAA,IAAA8kB,YAAAO;AAAArlB,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAjD,UAAAqlB,cAAoBhlB;AAA8B,QAAAE;AAAA,QAAAP,UAAAqlB,aAAA;AAEzB9kB,WAAAqR,MAAAC,KAAW,IAAAf,IAChCpB,OAAAhN,OAAc2iB,WAAW,EAACtb,IAAAI,OAAiB,EAAC/F,OAAAa,OAAe,CAAa,EAAAvC,QAClE;AAAC1C,cAAAqlB;AAAArlB,cAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,EAAA;AAAA,IAAA;AAFX,UAAAoC,SAAyB7B;AAEb,QAAAC;AAAA,QAAAR,EAAA,EAAA,MAAAqlB,eAAArlB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA+S,SAAA/S,EAAA,EAAA,MAAAoC,UAAApC,EAAA,EAAA,MAAA4C,gBAAA5C,EAAA,EAAA,MAAAglB,YAAAhlB,EAAA,EAAA,MAAAolB,SAAAplB,UAAAE,OAAA;AAEZ,YAAAolB,uBAA6BD,YAAWjhB,OAAA4F,QAA2B;AAKhD,YAAApJ,KAAAqE,QAAQ8N,KAAK;AAAC,UAAAlS;AAAA,UAAAb,UAAAqlB,aAAA;AASRxkB,aAAAka,CAAAA,aAAA;AACT,gBAAAwK,qBAA2BF,YAAW3F,KAAA8F,CAAAA,eAAoBA,WAAUlmB,OAAQyb,YAAYyK,WAAU9lB,SAAUqb,QAAQ;AAAE,cAAA,CACjHwK,oBAAkB;AAAA,mBAAA;AAAA,UAAA;AAAA,iBAEnBzjB,2BAAAA,cAAe,WAAA,iBACX,UAAA;AAAA,YAAAZ,2BAAAA,IAACgD,KAAAA,aAAA,EAA8BqhB,kBAAAA,mBAAAA,CAAkB;AAAA,YACjDrkB,2BAAAA,IAACP,GAAAA,cACY,SAAA,aACC,WAAA,oBACT4kB,UAAAA,oBAAkB9lB,KAAAsO,YAAAA,EAAA,CACvB;AAAA,UAAA,GACJ;AAAA,QAAM;AACb/N,gBAAAqlB;AAAArlB,gBAAAa;AAAAA,MAAA,OAAA;AAAAA,aAAAb,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAc;AAAA,UAAAd,EAAA,EAAA,MAAAqlB,eAAArlB,UAAAoC,QAAA;AAGAtB,aAAAsB,OAAMqjB,QAAAphB,CAAAA,UACHnD,2BAAAA,IAACwkB,GAAAA,aAAA,EAAmB,OAAArhB,SAAS,SAGrBghB,UAAAA,YAAWjhB,OAAAuhB,CAAAA,iBAAsBH,aAAUnhB,UAAWA,KAAK,EAAC0F,IAAA6b,CAAAA,iBAE7C1kB,2BAAAA,IAAC0K,GAAAA,YAAA,EAEG,OAAA4Z,aAAUlmB,MAAOkmB,aAAU9lB,MAClC,UAAAoC,gCAAA,OAAA,EAAe,WAAA,iBACX,UAAA;AAAA,UAAAZ,2BAAAA,IAACgD,KAAAA,aAAA,EAA8BshB,kBAAAA,aAAAA,CAAU;AAAA,UACzCtkB,2BAAAA,IAACP,GAAAA,cACY,SAAA,aACC,WAAA,oBACT6kB,UAAAA,cAAU/lB,KAAAsO,YAAAA,EAAA,CACf;AAAA,QAAA,EAAA,CACJ,EAAA,GATK,GAAGyX,aAAUlmB,MAAOkmB,aAAU9lB,IAAK,IAAI2E,KAAK,EAUrD,CACH,EAAA,GAhBK,SAASA,KAAK,EAmBhC,CACH;AAACrE,gBAAAqlB;AAAArlB,gBAAAoC;AAAApC,gBAAAc;AAAAA,MAAA,OAAA;AAAAA,aAAAd,EAAA,EAAA;AAAA,MAAA;AAhDVQ,iEACI,UAAAsB,2BAAAA,KAACoI,GAAAA,QAAA,EACU,OAAAtJ,IACGsO,UACH,OAAAhP,SAAS,IACN,UAAA,gBACJ8kB,MAAAA,UACA,MAAA,SACK,WAAA,MACDpiB,UAAAA,cACH,OAAA,qBACM,aAAA/B,OAaTukB,OAEHtkB,UAAAA;AAAAA,QAAAA;AAAAA,QAwBAwkB,uDAAyBI,GAAAA,aAAA,EAAmB,OAAA,SACxCJ,UAAAA,qBAAoBvb,IAAA+B,QAahB,EAAA,CAGT;AAAA,MAAA,EAAA,CAEJ,EAAA,CAAS;AAEV9L,cAAAqlB;AAAArlB,cAAAkP;AAAAlP,cAAA+S;AAAA/S,cAAAoC;AAAApC,cAAA4C;AAAA5C,cAAAglB;AAAAhlB,cAAAolB;AAAAplB,cAAAE;AAAAF,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAAA,WAvEHQ;AAAAA,EAuEG;AAtGJ,WAAAsL,SAAA+Z,cAAA;AAAA,WAoF4B3kB,2BAAAA,IAAC0K,GAAAA,YAAA,EACkB,OAAA4Z,aAAUlmB,MAAOkmB,aAAU9lB,MACjD,UAAAoC,2BAAAA,KAAA,OAAA,EAAe,WAAA,iBACX,UAAA;AAAA,MAAAZ,2BAAAA,IAACgD,KAAAA,aAAA,EAA8BshB,kBAAAA,aAAAA;MAC/BtkB,2BAAAA,IAACP,GAAAA,cACY,SAAA,aACC,WAAA,oBACT6kB,UAAAA,cAAU/lB,KAAAsO,YAAAA,GACf;AAAA,IAAA,EAAA,CACJ,EAAA,GAToByX,aAAUlmB,MAAOkmB,aAAU9lB,IAUnD;AAAA,EAAa;AA9FlC,WAAAsK,SAAA8b,KAAA;AAAA,WAAA,CA4BuDA,IAAGzhB;AAAAA,EAAA;AA5B1D,WAAA8F,QAAApF,GAAA;AAAA,WAyBqCA,EAACV;AAAAA,EAAA;ACzEtC,WAAA0hB,sBAAAhmB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA+B,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAIlC,UAAA;AAAA,MAAA2C;AAAAA,MAAAI;AAAAA,MAAAD;AAAAA,MAAAF;AAAAA,IAAAA,IAKIM,iBAAAA;AAA6C,QAAA5C;AAAA,QAAAL,SAAA0C,QAAA;AAGXrC,WAAAsD,OAAAA,MAAMjB,QAD3B,MAC2C;AAAC1C,aAAA0C;AAAA1C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAA7D,UAAAgmB,YAAsC3lB;AAAwB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAA8C,UAAA9C,SAAA6C,SAAA;AACxBtC,WAAAoD,OAAAA,MAAMd,SAF3B,MAE4C,KAAKc,OAAAA,MAAMb,QAFvD,MAEuE;AAAC9C,aAAA8C;AAAA9C,aAAA6C;AAAA7C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAzF,UAAAimB,YAAsC1lB;AAAoD,QAAAC;AAAA,QAAAR,SAAA0C,QAAA;AAG/ClC,WAAAmD,OAAAA,MAAMjB,QAD3B,WACgD;AAAC1C,aAAA0C;AAAA1C,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAvE,UAAAkmB,iBAA2C1lB;AAA6B,QAAAI;AAAA,QAAAZ,EAAA,CAAA,MAAA8C,UAAA9C,SAAA6C,SAAA;AAC7BjC,WAAA+C,OAAAA,MAAMd,SAF3B,WAEiD,KAAKc,OAAAA,MAAMb,QAF5D,WAEiF;AAAC9C,aAAA8C;AAAA9C,aAAA6C;AAAA7C,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAxG,UAAAmmB,iBAA2CvlB;AAOZ,UAAAC,KAAAmlB,aAAa;AACb,UAAAllB,KAAAmE,QAAQghB,SAAS;AAAC,QAAAllB;AAAA,QAAAf,UAAA2C,eAAA;AAEV5B,WAAA0F,CAAAA,MAAO9D,cAhB7B,QAgBqD8D,CAAC;AAACzG,cAAA2C;AAAA3C,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAG;AAAA,QAAAnB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAcpDM,WAAAE,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,aAAa,UAAA,eAAW;AAC3CzK,WAAAD,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,QAAQ,UAAA,UAAM;AAAa5L,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAH,WAAAhB,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAa,MAAAb,EAAA,EAAA,MAAAc,MAAAd,UAAAe,IAAA;AAnBlDO,4CAAC4I,GAAAA,QAAA,EAAakc,MAZb,QAac,OAAAvlB,IACA,OAAAC,IACD,MAAA,SACS,eAAAC,IACR,OAAA,QACI,WAAA,MACE,aAAAoJ,SAUH+E,UACdlO,UAAAA;AAAAA,QAAAA;AAAAA,QACAG;AAAAA,MAAAA,GACJ;AAASnB,cAAAkP;AAAAlP,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AACY,UAAAuB,MAAA0D,QAAQghB,SAAS;AAAC,QAAAzkB;AAAA,QAAAxB,EAAA,EAAA,MAAAimB,aAAAjmB,UAAAuB,KAAA;AAAvCC,YAAAN,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAhE,KAChB0kB,UAAAA,WACL;AAAejmB,cAAAimB;AAAAjmB,cAAAuB;AAAAvB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAwB,KAAA;AAxBnBC,4CAAA,OAAA,EACIH,UAAAA;AAAAA,QAAAA;AAAAA,QAqBAE;AAAAA,MAAAA,GAGJ;AAAMxB,cAAAsB;AAAAtB,cAAAwB;AAAAxB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAMa,UAAA0B,MAAAwkB,kBAAkB;AAAE,QAAAtkB;AAAA,QAAA5B,UAAA2C,eAAA;AACZf,YAAAmJ,SAAOpI,cAvCxB,aAuCqD8D,QAAM,SAAM,OAAUA,GAAC;AAACzG,cAAA2C;AAAA3C,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAWpE,UAAA6B,MAAAoD,QAAQkhB,cAAc;AAAC,QAAApkB;AAAA,QAAAC;AAAA,QAAAkD;AAAA,QAAAlF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAElCqB,YAAAb,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,QAAQ,UAAA,UAAM;AACjC5J,YAAAd,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,aAAa,UAAA,eAAW;AAC3C1G,YAAAhE,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,aAAa,UAAA,mBAAe;AAAa5L,cAAA+B;AAAA/B,cAAAgC;AAAAhC,cAAAkF;AAAAA,IAAA,OAAA;AAAAnD,YAAA/B,EAAA,EAAA;AAAAgC,YAAAhC,EAAA,EAAA;AAAAkF,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAA0B,OAAA1B,EAAA,EAAA,MAAA4B,OAAA5B,UAAA6B,KAAA;AApBhEuD,4CAAC8E,GAAAA,QAAA,EAAamc,MAlCR,aAmCYnX,UACJ,MAAA,SACK,WAAA,MACJ,OAAAxN,KACQ,eAAAE,KACF,aAAAoI,UAUN,OAAAnI,KACA,OAAA,mBACXE,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,QACAkD;AAAAA,MAAAA,GACJ;AAASlF,cAAAkP;AAAAlP,cAAA0B;AAAA1B,cAAA4B;AAAA5B,cAAA6B;AAAA7B,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AACY,UAAAqF,MAAAJ,QAAQkhB,cAAc;AACtC,UAAA7gB,MAAA6gB,kBAAkB;AAAsE,QAAA3gB;AAAA,QAAAxF,EAAA,EAAA,MAAAqF,OAAArF,UAAAsF,KAAA;AAD7FE,YAAAtE,2BAAAA,IAACqE,mBAAA,EAAoB,OAAAF,KAChBC,UAAAA,KACL;AAAetF,cAAAqF;AAAArF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,EAAA,MAAAoF,OAAApF,UAAAwF,KAAA;AAzBnBC,4CAAA,OAAA,EACIL,UAAAA;AAAAA,QAAAA;AAAAA,QAsBAI;AAAAA,MAAAA,GAGJ;AAAMxF,cAAAoF;AAAApF,cAAAwF;AAAAxF,cAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0F;AAAA,QAAA1F,EAAA,EAAA,MAAAyB,OAAAzB,UAAAyF,KAAA;AArDVC,YAAA5D,2BAAAA,KAAA,OAAA,EAAgB,WAAA,mCACZL,UAAAA;AAAAA,QAAAA;AAAAA,QA0BAgE;AAAAA,MAAAA,GA4BJ;AAAMzF,cAAAyB;AAAAzB,cAAAyF;AAAAzF,cAAA0F;AAAAA,IAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2F;AAAA,QAAA3F,UAAAkP,UAAA;AAENvJ,YAAAzE,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eACZ,UAAAA,2BAAAA,IAAC,mBACG,UAAAA,2BAAAA,IAAC,2BAAA,EAAoCgO,SAAAA,IACzC,GACJ;AAAMlP,cAAAkP;AAAAlP,cAAA2F;AAAAA,IAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8F;AAAA,QAAA9F,EAAA,EAAA,MAAA0F,OAAA1F,UAAA2F,KAAA;AA9DVG,mEACIJ,UAAAA;AAAAA,QAAAA;AAAAA,QAyDAC;AAAAA,MAAAA,GAIM;AACP3F,cAAA0F;AAAA1F,cAAA2F;AAAA3F,cAAA8F;AAAAA,IAAA,OAAA;AAAAA,YAAA9F,EAAA,EAAA;AAAA,IAAA;AAAA,WA/DH8F;AAAAA,EA+DG;AAnFJ,WAAAkE,SAAAsB,KAAA;AAAA,YAwDiC7E,KAAAA;AAAAA,MAAC,KACA,aAAW;AAAA,eACL;AAAA,MAAW;AAAA,MAAA,KACjB,aAAW;AAAA,eACL;AAAA,MAAe;AAAA,MAAA,SAAA;AAAA,eAEf;AAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AA9D9C,WAAA0D,QAAAI,KAAA;AAAA,YA+BiC9D,KAAAA;AAAAA,MAAC,KACA,aAAW;AAAA,eACL;AAAA,MAAW;AAAA,MAAA,KACjB,QAAM;AAAA,eACA;AAAA,MAAM;AAAA,MAAA,SAAA;AAAA,eAEN;AAAA,MAAE;AAAA,IAAA;AAAA,EAAA;ACvC1C,WAAA6f,2BAAAvmB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,CAAA;AAAoC,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAE1C,QAAAM;AAAA,QAAAL,SAAAkP,UAAA;AASW7O,mDAAgB,WAAA,eACZ,UAAAa,2BAAAA,IAAC0E,OAAAA,OAAA,EAAW,MAAA,YAAiB2gB,MAPd,sBAQVhmB,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAmU;AAAAA,UAAAC;AAAAA,QAAAA,IAAApU;AAAiC,eACxBW,2BAAAA,IAAC,eAAA,EACG,OAAA,wBACD,MAAA,UACIgO,UACJyF,MACG,SAAA,uFACFD,MAAAA,CAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,aAAAkP;AAAAlP,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAAkP,UAAA;AAEN3O,mDAAgB,WAAA,eACZ,UAAAW,2BAAAA,IAAC0E,OAAAA,OAAA,EAAY4gB,MApBR,YAqBO,MAAA,YACPhmB,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAkU,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAA7U;AAAiC,eACxBU,2BAAAA,IAAC,eAAA,EACG,OAAA,aACD,MAAA,UACIgO,UACD,SAAA,wDACHyF,MAAAA,QACCD,OAAAA,QAAAA,CAAK;AAAA,MAAG,GAE3B,EAAA,CACJ;AAAM1U,aAAAkP;AAAAlP,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAK,MAAAL,SAAAO,IAAA;AA5BVC,WAAAsB,2BAAAA,KAAA,OAAA,EAAgB,WAAA,2BACZzB,UAAAA;AAAAA,QAAAA;AAAAA,QAcAE;AAAAA,MAAAA,GAcJ;AAAMP,aAAAK;AAAAL,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,WA7BNQ;AAAAA,EA6BM;ACxCP,WAAAimB,sBAAA1mB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,CAAA;AAA+B,UAAA;AAAA,MAAAiP;AAAAA,IAAAA,IAAAnP;AAErC,QAAAM;AAAA,QAAAL,SAAAkP,UAAA;AAGO7O,WAAAa,2BAAAA,IAAA0S,WAAAA,UAAA,EACI,UAAA1S,2BAAAA,aAAgB,WAAA,eAEZ,UAAAA,2BAAAA,IAAC,iBAAA,EACG,UAAAA,2BAAAA,IAAC,2BAAA,EAAoCgO,aACzC,EAAA,CAEJ,GAAM;AACPlP,aAAAkP;AAAAlP,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,WARHK;AAAAA,EAQG;ACLJ,WAASqmB,yBAAyBC,cACAC,kBACAtK,iBAA2D;AAEhG,QAAIuK;AACJ,QAAID,qBAAqB,cAAc;AACnCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAASvjB;AAAAA,QACTwjB,WAAWxjB;AAAAA,QACXyjB,UAAUzjB;AAAAA,QACV0jB,OAAO1jB;AAAAA,QACP2jB,KAAK3jB;AAAAA,QACLsL,YAAYtL;AAAAA,QACZ4jB,YAAY5jB;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,eAAe;AAC3CC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAASvjB;AAAAA,QACTwjB,WAAWxjB;AAAAA,QACXyjB,UAAUzjB;AAAAA,QACV0jB,OAAO1jB;AAAAA,QACP2jB,KAAK3jB;AAAAA,QACLsL,YAAYtL;AAAAA,QACZ4jB,YAAY;AAAA,MAAA,CAEpB;AAAA,IACJ,WAAWR,qBAAqB,aAAa;AACzCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEuL,WAAW;AAAA,QACXD,SAASvjB;AAAAA,QACTyjB,UAAUzjB;AAAAA,QACV0jB,OAAO1jB;AAAAA,QACP2jB,KAAK3jB;AAAAA,QACLsL,YAAYtL;AAAAA,QACZ4jB,YAAY5jB;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,YAAY;AACxCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAASvjB;AAAAA,QACTwjB,WAAWxjB;AAAAA,QACXyjB,UAAU;AAAA,QACVC,OAAO1jB;AAAAA,QACP2jB,KAAK3jB;AAAAA,QACL4jB,YAAY5jB;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,OAAO;AACnCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAASvjB;AAAAA,QACTwjB,WAAWxjB;AAAAA,QACXyjB,UAAUzjB;AAAAA,QACV0jB,OAAO1jB;AAAAA,QACP2jB,KAAK;AAAA,QACLrY,YAAYtL;AAAAA,QACZ4jB,YAAY5jB;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,SAAS;AACrCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAASvjB;AAAAA,QACTwjB,WAAWxjB;AAAAA,QACXyjB,UAAUzjB;AAAAA,QACV0jB,OAAO;AAAA,QACPC,KAAK3jB;AAAAA,QACLsL,YAAYtL;AAAAA,QACZ4jB,YAAY5jB;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,UAAU;AACtCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAASvjB;AAAAA,QACTwjB,WAAWxjB;AAAAA,QACXyjB,UAAUzjB;AAAAA,QACV0jB,OAAO1jB;AAAAA,QACP2jB,KAAK3jB;AAAAA,QACLsL,YAAY6X,aAAa7X,cAAc,CAAA;AAAA,QACvCsY,YAAY5jB;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,gBAAgB;AAC5CC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,UACVzM,YAAY6X,aAAanL,IAAI1M,cAAc,CAAA;AAAA,QAAA;AAAA,MAC/C,CAER;AAAA,IACJ,WAAW8X,qBAAqB,gBAAgB;AAC5CC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxE3M,YAAYtL;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,iBAAiB;AAC7CC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxE3M,YAAY6X,aAAa7X,cAAc,CAAA;AAAA,MAAA,CAE/C;AAAA,IACJ,WAAW8X,qBAAqB,uBAAuB;AACnDC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,UACVzM,YAAY6X,aAAanL,IAAI1M,cAAc,CAAA;AAAA,QAAA;AAAA,MAC/C,CAER;AAAA,IACJ,WAAW8X,qBAAqB,eAAe;AAC3CC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEsL,SAAS;AAAA,UACL1O,aAAa;AAAA,QAAA;AAAA,MACjB,CAER;AAAA,IACJ,WAAWuO,qBAAqB,qBAAqB;AACjDC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,UACVwL,SAASJ,aAAanL,IAAIuL,WAAW;AAAA,YACjC1O,aAAa;AAAA,UAAA;AAAA,QACjB;AAAA,MACJ,CAER;AAAA,IACJ,WAAWuO,qBAAqB,SAAS;AACrCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxE4L,UAAU;AAAA,QACV1L,YAAYgL,aAAahL,cAAc,CAAA;AAAA,MAAC,CAEhD;AAAA,IACJ,WAAWiL,qBAAqB,aAAa;AACzCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxE4L,UAAU;AAAA,QACV1L,YAAYnY;AAAAA,MAAAA,CAEpB;AAAA,IACJ,WAAWojB,qBAAqB,aAAa;AACzCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,MAAA,CAEhF;AAAA,IACJ,WAAWmL,qBAAqB,uBAAuB;AACnDC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,MAAA,CAEhF;AAAA,IACJ,WAAWmL,qBAAqB,oBAAoB;AAChDC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,QAAA;AAAA,MACd,CAER;AAAA,IACJ,WAAWqL,qBAAqB,UAAU;AACtCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,MAAA,CAEhF;AAAA,IACJ,WAAWmL,qBAAqB,aAAa;AACzCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxE6L,MAAM;AAAA,MAAA,CAEd;AAAA,IACJ,WAAWV,qBAAqB,UAAU;AACtCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,MAAA,CAEhF;AAAA,IACJ,WAAWmL,qBAAqB,SAAS;AACrCC,wBAAkBC,KAAAA,UACdH,cACA;AAAA,QACIpL,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUkL,aAAalL,aAAajY,SAAYmjB,aAAalL,WAAW;AAAA,QACxEwI,OAAO;AAAA,UACHtI,YAAY,CAAA;AAAA,QAAC;AAAA,MACjB,CAER;AAAA,IACJ,WAAWiL,oBAAoBtK,gBAAgBsK,gBAAgB,GAAG;AAC9DC,wBAAkB;AAAA,QACd,GAAGvK,gBAAgBsK,gBAAgB,EAAEvL;AAAAA,QACrCoB,gBAAgBmK;AAAAA,MAAAA;AAAAA,IAExB;AAEA,WAAOC;AAAAA,EACX;ACtSO,WAAAU,iBAAAxnB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA0B,UAAA;AAAA,MAAAiP;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA7E;AAQ7B,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAAkCM,iBAAAA;AAAY,QAAA5C;AAAA,QAAAL,SAAA0C,QAAA;AAE7BrC,WAAAsD,OAAAA,MAAMjB,QAAQ,KAAK;AAAC1C,aAAA0C;AAAA1C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAArC,UAAAwnB,WAAiBnnB;AAAqB,QAAAE;AAAA,QAAAP,SAAA2C,eAAA;AAUPpC,WAAAL,CAAAA,UAAA;AAAA,YACPA,UAAU,UAAQ;AAClByC,wBAAc,OAAK,IAAM;AAAA,QAAC,OAAA;AAE1BA,wBAAc,OAAOzC,KAAK;AAAA,QAAC;AAAA,MAAA;AAClCF,aAAA2C;AAAA3C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAcM,UAAAQ,KAAAgnB,YAAY;AAAQ,QAAA5mB;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAf,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAC3BE,WAAAM,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,UAAU,UAAA,eAE7B;AACA/K,WAAAK,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,SAAS,UAAA,SAE5B;AACA9K,WAAAI,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,SAAS,UAAA,SAE5B;AACA7K,WAAAG,2BAAAA,IAAC0K,eAAA,EAAkB,OAAA,SAAS,UAAA,SAE5B;AAAa5L,aAAAY;AAAAZ,aAAAa;AAAAb,aAAAc;AAAAd,aAAAe;AAAAA,IAAA,OAAA;AAAAH,WAAAZ,EAAA,CAAA;AAAAa,WAAAb,EAAA,CAAA;AAAAc,WAAAd,EAAA,CAAA;AAAAe,WAAAf,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,CAAA,MAAAkP,YAAAlP,SAAAO,MAAAP,EAAA,EAAA,MAAAQ,IAAA;AArCrBQ,0CAAA,OAAA,EAAgB,WAAA,eAEZ,UAAAc,gCAACoI,GAAAA,QAAA,EACagF,UACA,UAAA,gBACC,WAAA,MACI,eAAA3O,IAMR,OAAA,gBACM,aAAA4J,SAYN,OAAA3J,IACPI,UAAAA;AAAAA,QAAAA;AAAAA,QAGAC;AAAAA,QAGAC;AAAAA,QAGAC;AAAAA,MAAAA,EAAAA,CAGJ,EAAA,CACJ;AAAMf,aAAAkP;AAAAlP,aAAAO;AAAAP,cAAAQ;AAAAR,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4E,YAAA;AAENzD,mDAAgB,WAAA,eAEZ,UAAAD,+BAAC,mBAEG,UAAAA,2BAAAA,IAAC,0BAAA,EAAmCgO,UACL,KAAA,MACA,KAAA,MACC,MAAA,MACMtK,YAAU,GAEpD,EAAA,CAEJ;AAAM5E,cAAAkP;AAAAlP,cAAA4E;AAAA5E,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAA2C,eAAA;AAMmBrB,YAAAyD,CAAAA,MAAA;AACNpC,sBAAc,gBAAgBoC,EAACC,OAAA9E,UAAkB,KAAEsD,SAAeuB,EAACC,OAAA9E,KAAa;AAAA,MAAC;AACpFF,cAAA2C;AAAA3C,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,UAAA0C,QAAA;AAEMnB,YAAAoC,OAAAA,MAAMjB,QAAQ,cAAc,KAAK;AAAE1C,cAAA0C;AAAA1C,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAsB,OAAAtB,EAAA,EAAA,MAAAuB,KAAA;AARzDC,YAAAN,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,yCAACiE,GAAAA,WAAA,EAAgB,MAAA,gBACI+J,UACA,UAAA5N,KAGH,OAAA,iBACA,OAAAC,KAAmC,GAEzD;AAAMvB,cAAAkP;AAAAlP,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAwB,OAAAxB,UAAAgB,MAAAhB,EAAA,EAAA,MAAAmB,IAAA;AAlEVM,YAAAK,2BAAAA,KAAA8R,qBAAA,EACI5S,UAAAA;AAAAA,QAAAA;AAAAA,QAyCAG;AAAAA,QAcAK;AAAAA,MAAAA,GAUM;AACPxB,cAAAwB;AAAAxB,cAAAgB;AAAAhB,cAAAmB;AAAAnB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,WAnEHyB;AAAAA,EAmEG;AAhFJ,WAAA0I,QAAA7B,SAAA;AAAA,YA4ByBpI,SAAAA;AAAAA,MAAK,KACJ,SAAO;AAAA,eACD;AAAA,MAAO;AAAA,MAAA,KACb,SAAO;AAAA,eACD;AAAA,MAAO;AAAA,MAAA,KACb,SAAO;AAAA,eACD;AAAA,MAAO;AAAA,MAAA,SAAA;AAAA,eAEP;AAAA,MAAa;AAAA,IAAA;AAAA,EAAA;ACzC7C,QAAMunB,qBAAyC,CAClD,cACA,aACA,YACA,OACA,SACA,eACA,UACA,gBACA,gBACA,iBACA,uBACA,eACA,qBACA,aACA,uBACA,oBACA,UACA,aACA,SACA,aACA,UACA,OAAO;AAGJ,QAAMC,kBAAkDhY,OAAOsK,QAAQ2N,KAAAA,qBAAqB,EAC9FvjB,OAAO,CAAC,CAAC9E,EAAE,MAAMmoB,mBAAmBnjB,SAAShF,EAAsB,CAAC,EACpEyK,IAAI,CAAC,CAACzK,IAAIsoB,MAAM,OAAO;AAAA,IAAE,CAACtoB,EAAE,GAAGsoB;AAAAA,EAAO,EAAE,EACxC7L,OAAO,CAACC,GAAGC,OAAO;AAAA,IAAE,GAAGD;AAAAA,IAAG,GAAGC;AAAAA,EAAE,IAAI,CAAA,CAAE;ACvBnC,WAAA4L,sBAAA9nB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA+B,UAAA;AAAA,MAAAiP;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA7E;AAQlC,UAAA;AAAA,MAAA2C;AAAAA,MAAAC;AAAAA,IAAAA,IAGIM,iBAAAA;AAKJ,UAAAkV,WAAiB,GAHO,SAAS;AAIjC,UAAAC,UAAgB,GAJQ,SAAS;AAKjC,UAAAC,cAAoB,GALI,SAAS;AAKoB,QAAAhY;AAAA,QAAAL,SAAA0C,QAAA;AAE/BrC,WAAAsD,OAAAA,MAAMjB,QAAQyV,QAAQ,KAAK;AAAenY,aAAA0C;AAAA1C,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAhE,UAAA8Y,gBAAsBzY;AAA2C,QAAAE;AAAA,QAAAP,SAAA0C,QAAA;AACxCnC,WAAAoD,OAAAA,MAAMjB,QAAQ2V,WAAW,KAAK;AAAGrY,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA1D,UAAA+Y,mBAAyBxY;AAAkC,QAAAyY;AAAA,QAAAC;AAAA,QAAA3X;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAlB;AAAA,QAAAI;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAG;AAAA,QAAAnB,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAA8Y,iBAAA9Y,EAAA,CAAA,MAAA4E,cAAA5E,EAAA,CAAA,MAAA+Y,oBAAA/Y,SAAA0C,QAAA;AAC3D,YAAAwW,eAAqBvV,OAAAA,MAAMjB,QAAQ0V,OAAO;AAE1C,YAAAyB,sBAA4B,OAAOf,kBAAkB;AACrD,YAAAgB,yBAA+B,OAAOf,qBAAqB;AAAW,UAAA/Y,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4E,YAAA;AAI9DlD,cAAAR,2BAAAA,IAAA,SAAgB,WAAA,eAEZ,yCAAC,iBAAA,EAEG,UAAAA,2BAAAA,IAAC,0BAAA,EAAmCgO,UACF,QAAA,MACG,WAAA,MACN,KAAA,MACA,KAAA,MACC,MAAA,MACK,WAAA,MACCtK,WAAAA,CAAU,EAAA,CAEpD,EAAA,CAEJ;AAAM5E,gBAAAkP;AAAAlP,gBAAA4E;AAAA5E,gBAAA0B;AAAAA,MAAA,OAAA;AAAAA,cAAA1B,EAAA,EAAA;AAAA,MAAA;AAEUyB,YAAA;AACXwX,WAAAlM,GAAAA;AAAe,UAAA/M,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAERc,cAAAM,2BAAAA,KAAA,OAAA,EAAe,WAAA,kCACX,UAAA;AAAA,UAAAZ,2BAAAA,IAAC6Y,GAAAA,iBAAA,EAAe;AAAA,yCACfpZ,GAAAA,YAAA,EAAoB,SAAA,aACC,WAAA,QAAO,UAAA,qBAAA,CAE7B;AAAA,QAAA,GACJ;AAAMX,gBAAAwB;AAAAA,MAAA,OAAA;AAAAA,cAAAxB,EAAA,EAAA;AAAA,MAAA;AAGMmB,WAAA;AAQS,YAAAS,OAAAiY,uBAAuB3K;AAC1B,YAAArN,OAAAgY,sBAAsB,MAAMf;AAAa,UAAA9Y,EAAA,EAAA,MAAA4B,QAAA5B,UAAA6B,MAAA;AAN3DP,sDAAgB,WAAA,eACZ,UAAAJ,+BAAC0E,OAAAA,OAAA,EAAYuS,gBACFtS,IAAAA,GAAAA,oBACG,OAAA,aACD,MAAA,SACI,UAAAjE,MACH,OAAAC,MAAyC,GAE3D;AAAM7B,gBAAA4B;AAAA5B,gBAAA6B;AAAA7B,gBAAAsB;AAAAA,MAAA,OAAA;AAAAA,cAAAtB,EAAA,EAAA;AAAA,MAAA;AAKe,YAAA+B,OAAA+X,0BAA0B5K;AAE7B,YAAAlN,OAAA8X,yBAAyB,MAAMf;AAAgB,UAAA7T;AAAA,UAAAlF,EAAA,EAAA,MAAA+B,QAAA/B,UAAAgC,MAAA;AAL7DkD,eAAAhE,2BAAAA,IAAC0E,OAAAA,OAAA,EAAYyS,MAAAA,aACFxS,IAAAA,GAAAA,oBACG,OAAA,gBACG,UAAA9D,MACJ,MAAA,SACC,OAAAC,MAA+C;AAC3DhC,gBAAA+B;AAAA/B,gBAAAgC;AAAAhC,gBAAAkF;AAAAA,MAAA,OAAA;AAAAA,eAAAlF,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAoF;AAAA,UAAAC;AAAA,UAAArF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACF0E,eAAAtD,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBACvC,UAAA;AAAA,UAAAO,2BAAAA,IAAA,OAAG,UAAA,mFAAA,CAEyB;AAAA,0CAC5B,MAAA,EACI,UAAA;AAAA,YAAAA,2BAAAA,IAAA,QAAK,UAAA,0CAAA,CAA0C;AAAA,YAC/CA,2BAAAA,IAAA,+EAAiE;AAAA,YACjEA,2BAAAA,YAAK,UAAA,8CAAA,CAA8C;AAAA,YACnDA,2BAAAA,IAAA,mDAAqC;AAAA,YACrCA,2BAAAA,YAAK,UAAA,mCAAA,CAAmC;AAAA,YACxCA,2BAAAA,IAAA,QAAK,UAAA,+BAAA,CAA+B;AAAA,YACpCA,2BAAAA,IAAA,QAAK,UAAA,sDAAA,CAAsD;AAAA,UAAA,EAAA,CAC/D;AAAA,QAAA,GACJ;AAEAmE,eAAAnE,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBAAoB,UAAA,yGAI/D;AAAaX,gBAAAoF;AAAApF,gBAAAqF;AAAAA,MAAA,OAAA;AAAAD,eAAApF,EAAA,EAAA;AAAAqF,eAAArF,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,UAAAkF,MAAA;AA3BjB3D,uDAAgB,WAAA,eACZ2D,UAAAA;AAAAA,UAAAA;AAAAA,UAOAE;AAAAA,UAeAC;AAAAA,QAAAA,GAKJ;AAAMrF,gBAAAkF;AAAAlF,gBAAAuB;AAAAA,MAAA,OAAA;AAAAA,cAAAvB,EAAA,EAAA;AAAA,MAAA;AAEUgB,WAAA;AACXgY,WAAAnT,GAAAA;AAAyBuS,WAAAA;AACAxX,WAAA;AACCC,WAAA;AACDC,WAAA;AACCC,WAAAmY,iBAAY1V,UAAkB0V,iBAAY,OAAYA,aAAYtB,aAAc;AAAE5X,aAAAkP;AAAAlP,aAAA8Y;AAAA9Y,aAAA4E;AAAA5E,aAAA+Y;AAAA/Y,aAAA0C;AAAA1C,aAAAgZ;AAAAhZ,cAAAiZ;AAAAjZ,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAA6X,WAAAhZ,EAAA,CAAA;AAAAiZ,WAAAjZ,EAAA,EAAA;AAAAsB,YAAAtB,EAAA,EAAA;AAAAuB,YAAAvB,EAAA,EAAA;AAAAwB,YAAAxB,EAAA,EAAA;AAAAyB,YAAAzB,EAAA,EAAA;AAAA0B,YAAA1B,EAAA,EAAA;AAAAQ,WAAAR,EAAA,EAAA;AAAAY,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAAc,WAAAd,EAAA,EAAA;AAAAe,WAAAf,EAAA,EAAA;AAAAgB,WAAAhB,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,UAAA2C,eAAA;AAC/Ef,YAAAmD,CAAAA,MAAA;AACN,cAAA7E,QAAc6E,EAACC,OAAA9E;AAAc,YACzBA,UAAU,IAAE;AAAEyC,wBAAcyV,SAAO5U,MAAW;AAAA,QAAC,OAAA;AAC9Cb,wBAAcyV,SAASiC,SAASna,KAAK,CAAC;AAAA,QAAC;AAAA,MAAA;AAC/CF,cAAA2C;AAAA3C,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAAgZ,MAAAhZ,EAAA,EAAA,MAAA4B,OAAA5B,EAAA,EAAA,MAAAQ,MAAAR,UAAAY,MAAAZ,EAAA,EAAA,MAAAa,MAAAb,EAAA,EAAA,MAAAc,MAAAd,EAAA,EAAA,MAAAe,IAAA;AATrBc,2CAAC,IAAA,EAAyBuW,UACA,MAAAxX,IACC,OAAAC,IACD,MAAAC,IACC,OAAAC,IACG,UAAAa,KAIT;AACnB5B,cAAAgZ;AAAAhZ,cAAA4B;AAAA5B,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAA6B,OAAA7B,UAAAgB,IAAA;AAXNe,YAAAb,2BAAAA,IAAA,OAAA,EAAgB,WAAAF,IACZa,UAAAA,KAWJ;AAAM7B,cAAA6B;AAAA7B,cAAAgB;AAAAhB,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAAsB,OAAAtB,EAAA,EAAA,MAAAuB,OAAAvB,EAAA,EAAA,MAAA+B,OAAA/B,UAAAmB,IAAA;AAtDVa,qDAAgB,WAAAb,IAGZG,UAAAA;AAAAA,QAAAA;AAAAA,QASAC;AAAAA,QA8BAQ;AAAAA,MAAAA,GAcJ;AAAM/B,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAA+B;AAAA/B,cAAAmB;AAAAnB,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAAiZ,MAAAjZ,UAAAwB,OAAAxB,EAAA,EAAA,MAAAgC,KAAA;AAnEVkD,YAAAhE,2BAAAA,IAAC,IAAA,EAEO,OAAAM,KASJQ,UAAAA,KAyDJ;AAAkBhC,cAAAiZ;AAAAjZ,cAAAwB;AAAAxB,cAAAgC;AAAAhC,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,EAAA,EAAA,MAAAyB,OAAAzB,UAAAkF,KAAA;AArEtBE,YAAAlE,2BAAAA,IAAA,OAAA,EAAgB,WAAAO,KACZyD,UAAAA,KAqEJ;AAAMlF,cAAAyB;AAAAzB,cAAAkF;AAAAlF,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqF;AAAA,QAAArF,UAAA2C,eAAA;AAMmB0C,YAAAsC,CAAAA,QAAA;AACNhF,sBAAc,gBAAgBoC,IAACC,OAAA9E,UAAkB,KAAEsD,SAAeuB,IAACC,OAAA9E,KAAa;AAAA,MAAC;AACpFF,cAAA2C;AAAA3C,cAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsF;AAAA,QAAAtF,UAAA0C,QAAA;AAEM4C,YAAA3B,OAAAA,MAAMjB,QAAQ,cAAc,KAAK;AAAE1C,cAAA0C;AAAA1C,cAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAxF,EAAA,EAAA,MAAAkP,YAAAlP,UAAAqF,OAAArF,EAAA,EAAA,MAAAsF,KAAA;AARzDE,YAAAtE,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,yCAACiE,GAAAA,WAAA,EAAgB,MAAA,gBACI+J,UACA,UAAA7J,KAGH,OAAA,iBACA,OAAAC,KAAmC,GAEzD;AAAMtF,cAAAkP;AAAAlP,cAAAqF;AAAArF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,EAAA,MAAA0B,OAAA1B,UAAAoF,OAAApF,EAAA,EAAA,MAAAwF,KAAA;AApGVC,YAAA3D,2BAAAA,KAAA8R,qBAAA,EACIlS,UAAAA;AAAAA,QAAAA;AAAAA,QAiBA0D;AAAAA,QAwEAI;AAAAA,MAAAA,GAUM;AACPxF,cAAA0B;AAAA1B,cAAAoF;AAAApF,cAAAwF;AAAAxF,cAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,EAAA;AAAA,IAAA;AAAA,WArGHyF;AAAAA,EAqGG;AC/CJ,QAAMqiB,eAAetlB,MAAMyQ,KAC9B,SAAA6U,cAAA1C,OAAA;AAAA,UAAAplB,IAAAC,qBAAAA,EAAA,EAAA;AAEI,UAAA;AAAA,MAAA8nB,kBAAAhoB;AAAAA,MAAAioB;AAAAA,MAAAC;AAAAA,MAAA5E;AAAAA,MAAA6E;AAAAA,MAAAzZ;AAAAA,MAAA0Z;AAAAA,MAAAzZ;AAAAA,MAAA2M;AAAAA,MAAA2H;AAAAA,MAAAoF,4BAAA/nB;AAAAA,MAAAgoB;AAAAA,MAAAC;AAAAA,MAAAtZ;AAAAA,MAAAuZ;AAAAA,MAAAC;AAAAA,MAAArZ;AAAAA,MAAAsZ;AAAAA,MAAArZ;AAAAA,MAAAkN;AAAAA,MAAAsB;AAAAA,IAAAA,IAsBIwH;AArBA,UAAA2C,mBAAAhoB,OAAuByD,gBAAvBzD;AAUA,UAAAqoB,6BAAA/nB,OAAiCmD,gBAAjCnD;AAAiC,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAaAH,WAAA;AAAA,QAAAjB,IAC7B;AAAA,QAAEG,MACA;AAAA,MAAA;AACTO,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAHD,UAAA0oB,eAAqCnoB;AAGjB,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAA4d,sBAAA5d,SAAAqb,UAAA;AAEF7a,WAAAyE,QAAQoW,YAAQ,CAAKD,iBAAiBC,QAAQ,CAAC,KAAC,CAAKuC;AAAkB5d,aAAA4d;AAAA5d,aAAAqb;AAAArb,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAzF,UAAAkP,WAAkB1O;AAAyE,QAAAI;AAAA,QAAAZ,EAAA,CAAA,MAAAqb,YAAArb,SAAAyO,aAAA;AAEjB7N,WAAAya,WAAQ;AAAA,QAAA/b,IAC1EmP;AAAAA,QAAWka,YACHla;AAAAA,QAAW4M;AAAAA,MAAAA,IAAA7X;AAEdxD,aAAAqb;AAAArb,aAAAyO;AAAAzO,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAJb,UAAA4oB,wBAA8BnmB,MAAAA,OAA4C7B,EAI7D;AAAE,QAAAC;AAAA,QAAAb,EAAA,CAAA,MAAAgjB,qBAAAhjB,SAAA0O,mBAAA;AAEa7N,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAxB;AAAAA,UAAA+b,UAAAwN;AAAAA,QAAAA,IAAA/nB;AAIzB,cAAAgoB,SAAA;AAAA,UAAAxpB;AAAAA,UAAAqpB,YAEgBC,sBAAqB3X,SAAA3R;AAAAA,UAAA+b,UACjCA;AAAAA,UAAQ/M,WACGI;AAAAA,QAAAA;AAEfka,8BAAqB3X,UAAW6X;AAChC9F,4BAAoB8F,MAAM;AAAA,MAAA;AAC7B9oB,aAAAgjB;AAAAhjB,aAAA0O;AAAA1O,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAZD,UAAA+oB,sBAA4BloB;AAY1B,QAAAC;AAAA,QAAAd,EAAA,EAAA,MAAAqb,YAAArb,UAAAyO,aAAA;AAIiB3N,WAAAua,WAAQ;AAAA,QAAA/b,IACXmP;AAAAA,QAAW,GAAK4M;AAAAA,MAAAA,IACtBqN;AAAY1oB,cAAAqb;AAAArb,cAAAyO;AAAAzO,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAA+oB,uBAAA/oB,UAAAioB,kBAAA;AAIRlnB,WAAAA,CAAAioB,mBAAAC,eAAA;AACN,cAAA;AAAA,UAAA3pB,IAAA4pB;AAAAA,UAAA,GAAAC;AAAAA,QAAAA,IAGIH;AACJD,4BAAmB;AAAA,UAAAzpB,IACfA;AAAAA,UAAE+b,UAAA;AAAA,YAAA,GAEKA;AAAAA,YAAQI,UACDJ,WAAQI,YAAA;AAAA,UAAA;AAAA,QAAiB,CAE1C;AAAC,YAAA,CACGwM,kBAAgB;AACjBgB,qBAAUG,UAAA;AAAA,YAAA1mB,QAAqBgmB;AAAAA,UAAAA,CAAc;AAAA,QAAC;AAAA,MAAA;AACrD1oB,cAAA+oB;AAAA/oB,cAAAioB;AAAAjoB,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAmoB,wBAAAnoB,UAAA+nB,kBAAA;AACW/mB,WAAA0B,CAAAA,WAAA;AACR,cAAAI,SAAA,CAAA;AAAuC,YACnCilB,kBAAgB;AAAA,cAAA,CACXrlB,OAAMjD,MAAA;AACPqD,mBAAMrD,OAAQ;AAAA,UAAU,OAAA;AAExB,kBAAA6jB,YAAkB+F,aAAa3mB,OAAMjD,IAAK;AAAE,gBACxC6jB,WAAS;AACTxgB,qBAAMrD,OAAQ6jB;AAAAA,YAAS;AAAA,UAAA;AAAA,cAAA,CAE1B5gB,OAAMpD,IAAA;AACPwD,mBAAMxD,KAAM;AAAA,UAAU,OAAA;AAEtB,kBAAA8U,UAAgBkV,aAAW5mB,OAAMpD,IAAK6oB,oBAAoB;AAAE,gBACxD/T,SAAO;AACPtR,qBAAMxD,KAAM8U;AAAAA,YAAO;AAAA,UAAA;AAAA,QAAA;AAAA,YAI3B1R,OAAM6Y,aAAc,UAAQ;AAAA,cACxB7Y,OAAMqN,YAAA0F,YAAyB8T,KAAAA,cAAc7mB,OAAMqN,YAAA0F,QAAAmC,SAAAA,CAA+B,GAAC;AACnF9U,mBAAMiN,aAAA;AAAA,cAAA0F,SACO;AAAA,YAAA;AAAA,UAA4B;AAAA,QAAA;AAAA,YAI7C/S,OAAM6Y,aAAc,eAAW,CAAK7Y,OAAMhD,MAAK;AAC/CoD,iBAAMpD,OAAQ;AAAA,QAAoD;AAAA,YAElEgD,OAAM+Z,mBAAoB,UAAQ;AAAA,cAAA,CAC5B/Z,OAAa8Y,IAAA;AACf1Y,mBAAM0Y,KAAM;AAAA,UAAoC;AAAA,QAAA;AAAA,YAGpD9Y,OAAM+Z,mBAAoB,SAAO;AAAA,cAAA,CAC3B/Z,OAAauhB,OAAA;AACfnhB,mBAAMmhB,QAAS;AAAA,UAAkD;AAAA,QAAA;AAAA,eAGlEnhB;AAAAA,MAAM;AAChB9C,cAAAmoB;AAAAnoB,cAAA+nB;AAAA/nB,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAuoB,iBAAAvoB,EAAA,EAAA,MAAAc,MAAAd,EAAA,EAAA,MAAAe,MAAAf,UAAAgB,IAAA;AA/DoDG,WAAA;AAAA,QAAAqoB,SAC5C;AAAA,QAAe3Z,eACT/O;AAAAA,QAEGynB;AAAAA,QAAAzY,kBAAA;AAAA,QAAA2Z,yBAAA;AAAA,QAAAC,UAIR3oB;AAAAA,QAcTgP,YACW/O;AAAAA,MAAAA;AAyCfhB,cAAAuoB;AAAAvoB,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAhED,UAAA2pB,mBAAyB1Z,OAAAA,gBAAgC9O,EAgExD;AAAE,QAAAG;AAAA,QAAAC;AAAA,QAAAvB,EAAA,EAAA,MAAA2pB,oBAAA3pB,UAAAyoB,eAAA;AAEOnnB,YAAAA,MAAA;AACNmnB,wBAAgBkB,gBAAgB;AAAA,MAAA;AACjCpoB,YAAA,CAACooB,kBAAkBlB,aAAa;AAACzoB,cAAA2pB;AAAA3pB,cAAAyoB;AAAAzoB,cAAAsB;AAAAtB,cAAAuB;AAAAA,IAAA,OAAA;AAAAD,YAAAtB,EAAA,EAAA;AAAAuB,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAFpCiE,UAAAA,UAAU3C,KAEPC,GAAiC;AAIT,UAAAC,MAAA4mB,6BACbW,sBAAmBvlB;AAOb,UAAA/B,MAAA+mB,mBAAmBmB,iBAAgB3mB,cAAA;AAAgB,QAAAtB;AAAA,QAAA1B,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAAgoB,sBAAAhoB,EAAA,EAAA,MAAAqjB,gBAAArjB,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAkP,YAAAlP,UAAAioB,oBAAAjoB,EAAA,EAAA,MAAA2pB,oBAAA3pB,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAAkoB,WAAAloB,EAAA,EAAA,MAAA+nB,oBAAA/nB,EAAA,EAAA,MAAAsoB,YAAAtoB,EAAA,EAAA,MAAAqoB,aAAAroB,EAAA,EAAA,MAAAgP,WAAAhP,EAAA,EAAA,MAAAsc,mBAAAtc,EAAA,EAAA,MAAA0O,qBAAA1O,EAAA,EAAA,MAAAwB,OAAAxB,UAAAyB,KAAA;AATnEC,2CAAC,0BACsB,mBAAAF,KAGT8mB,UACSP,mBAAAA,kBACArZ,mBACVM,SACEqZ,WACC,YAAA5mB,KACFwmB,UAAAA,kBACI5E,cACL6E,SACWF,oBACV9Y,UACDE,SACWD,oBACHmN,iBACGsB,oBAAkB,GAClC+L,iBAAAA,CAAgB;AAAG3pB,cAAAmP;AAAAnP,cAAAgoB;AAAAhoB,cAAAqjB;AAAArjB,cAAA4d;AAAA5d,cAAAkP;AAAAlP,cAAAioB;AAAAjoB,cAAA2pB;AAAA3pB,cAAAoP;AAAApP,cAAAkoB;AAAAloB,cAAA+nB;AAAA/nB,cAAAsoB;AAAAtoB,cAAAqoB;AAAAroB,cAAAgP;AAAAhP,cAAAsc;AAAAtc,cAAA0O;AAAA1O,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAA2pB,oBAAA3pB,UAAA0B,KAAA;AApBxBE,YAAAV,2BAAAA,IAACkP,eAAA,EAAcuZ,OAAAA,kBAClBjoB,UAAAA,KAoBJ;AAAS1B,cAAA2pB;AAAA3pB,cAAA0B;AAAA1B,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,WArBF4B;AAAAA,EAqBE,GACV,CAACoa,GAAGC,MACHD,EAAE5M,YAAY6M,EAAE7M,WAChB4M,EAAEvN,gBAAgBwN,EAAExN,eACpBuN,EAAEtN,sBAAsBuN,EAAEvN,qBAC1BsN,EAAE+L,qBAAqB9L,EAAE8L,oBACzB/L,EAAEgM,uBAAuB/L,EAAE+L,sBAC3BhM,EAAEqH,iBAAiBpH,EAAEoH,gBACrBrH,EAAEmM,yBAAyBlM,EAAEkM,wBAC7BnM,EAAEiM,qBAAqBhM,EAAEgM,gBACjC;AAEO,WAAA2B,mBAAA7pB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAA,QAAA2d;AAAA,QAAAiM;AAAA,QAAAza;AAAA,QAAA0a;AAAA,QAAAC;AAAA,QAAA/G;AAAA,QAAA9O;AAAA,QAAAlU,SAAAD,IAAA;AAA4B,OAAA;AAAA,QAAAmU;AAAAA,QAAA4V;AAAAA,QAAAC;AAAAA,QAAA/G;AAAAA,QAAA5T;AAAAA,QAAAwO;AAAAA,QAAA,GAAAiM;AAAAA,MAAAA,IAAA9pB;AAYlCC,aAAAD;AAAAC,aAAA4d;AAAA5d,aAAA6pB;AAAA7pB,aAAAoP;AAAApP,aAAA8pB;AAAA9pB,aAAA+pB;AAAA/pB,aAAAgjB;AAAAhjB,aAAAkU;AAAAA,IAAA,OAAA;AAAA0J,2BAAA5d,EAAA,CAAA;AAAA6pB,kBAAA7pB,EAAA,CAAA;AAAAoP,gBAAApP,EAAA,CAAA;AAAA8pB,iBAAA9pB,EAAA,CAAA;AAAA+pB,oBAAA/pB,EAAA,CAAA;AAAAgjB,0BAAAhjB,EAAA,CAAA;AAAAkU,aAAAlU,EAAA,CAAA;AAAA,IAAA;AACG,UAAAgqB,YAAkBvnB,MAAAA,OAAAA;AAA2C,QAAApC;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACvCL,WAAA4pB,CAAAA,YAAA;AAClBD,kBAAS/Y,UAAWgZ;AAAAA,MAAO;AAC9BjqB,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAFD,UAAAyoB,gBAAsBpoB;AAKZ,UAAAE,KAAA2T,QAAI;AAAS,QAAA1T;AAAA,QAAAI;AAAA,QAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAMHF,WAAAuE,CAAAA,MAAA;AACNA,UAACmV,eAAAA;AACDnV,UAACoV,gBAAAA;AACD6P,kBAAS/Y,SAAAiZ,aAAuBnlB,CAAC;AAAA,MAAA;AAEvCnE,WAAAM,2BAAAA,IAACoT,gBAAA,EAAY,QAAA,MAAO,UAAA,sBAAkB;AAActU,aAAAQ;AAAAR,cAAAY;AAAAA,IAAA,OAAA;AAAAJ,WAAAR,EAAA,CAAA;AAAAY,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAA+pB,eAAA/pB,UAAAgjB,mBAAA;AAKfniB,WAAAioB,CAAAA,WAAA;AACf9F,4BAAoB8F,MAAM;AAC1BiB,sBAAAA;AAAAA,MAAW;AACd/pB,cAAA+pB;AAAA/pB,cAAAgjB;AAAAhjB,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAA6pB,aAAA7pB,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAA8pB,YAAA9pB,UAAAa,IAAA;AAPnBC,0CAACyT,GAAAA,eAAA,EAEG,UAAArT,2BAAAA,IAAC,cAAA,EAAY,GAAK2oB,WACOC,WAAAA,UACQ,mBAAAjpB,IAIC+c,oBACQ,4BAAA,OACb6K,eACNrZ,SAAO,GAElC;AAAgBpP,cAAA4d;AAAA5d,cAAA6pB;AAAA7pB,cAAAoP;AAAApP,cAAA8pB;AAAA9pB,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAA8pB,UAAA;AAIX/oB,WAAA+oB,2CAAarX,WAAA,EACD,SAAA,QACF,OAAA,WACE,SAAA,MAAA;AACLqX,iBAAAA;AACAE,kBAAS/Y,SAAAmY,UAAAA;AAAAA,MAAA,GACV,UAAA,UAEP;AAASppB,cAAA8pB;AAAA9pB,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAETM,0CAACyR,aAAe,SAAA,YACF,MAAA,UACA,OAAA,WAAU,UAAA,KAAA,CAExB;AAASzS,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,UAAAe,IAAA;AAhBbI,2CAACqT,kBAAA,EAEIzT,UAAAA;AAAAA,QAAAA;AAAAA,QAUDC;AAAAA,MAAAA,GAKJ;AAAgBhB,cAAAe;AAAAf,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAc,MAAAd,UAAAmB,IAAA;AAxCpBG,4CAAA,QAAA,EAAkB,YAAA,MACE,cAAA,OACJ,UAAAd,IAKZI,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,QAeAK;AAAAA,MAAAA,GAkBJ;AAAOnB,cAAAc;AAAAd,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAO,IAAA;AA9CJgB,YAAAL,2BAAAA,IAACwM,aACE,MAAAnN,IACI,UAAA,MACC,WAAA,MAEXe,UAAAA,IAAAA,CA0CJ;AAAStB,cAAAsB;AAAAtB,cAAAO;AAAAP,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,WA/CFuB;AAAAA,EA+CE;AAIb,WAAA4oB,uBAAApqB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,GAAA;AAAgC,UAAA;AAAA,MAAAyC;AAAAA,MAAAI;AAAAA,MAAAsnB;AAAAA,MAAApS;AAAAA,MAAAqL,cAAAhjB;AAAAA,MAAA2nB;AAAAA,MAAAqC;AAAAA,MAAArH;AAAAA,MAAAsF;AAAAA,MAAA5Z;AAAAA,MAAA2Z;AAAAA,MAAArZ;AAAAA,MAAApK;AAAAA,MAAAsK;AAAAA,MAAAgZ;AAAAA,MAAA9Y;AAAAA,MAAAD;AAAAA,MAAAmN;AAAAA,MAAAsB;AAAAA,IAAAA,IAAA7d;AAKI,UAAAsjB,eAAAhjB,OAAoBmD,iBAApBnD;AAkChC,UAAA,CAAAiqB,YAAAC,aAAA,IAAoCnnB,MAAAA,SAAS4kB,kBAAkB;AAC/D,UAAA,CAAAwC,kBAAAC,mBAAA,IAAgDrnB,MAAAA,cAAc;AAAE,QAAA7C;AAAA,QAAAP,SAAA0C,QAAA;AACuBnC,WAAAmC,QAAM6Y,WAAamP,KAAAA,WAAWhoB,MAAM,IAACc;AAAYxD,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAxI,UAAA,CAAA2qB,uBAAAC,wBAAA,IAA0DxnB,MAAAA,SAA6B7C,EAAiD;AAExI,UAAAsqB,iBAAuBC,MAAAA,iBAAiBpoB,MAAM;AAC9C,UAAAqoB,eAAqBtoB,MAAAA,OAAA,IAA6B;AAElD,UAAAmmB,wBAA8BnmB,MAAAA,OAAeC,MAAM;AAAE,QAAAlC;AAAA,QAAAR,EAAA,CAAA,MAAA8C,UAAA9C,SAAA4E,YAAA;AAEzBpE,WAAAoE,cAAcjB,aAAMb,QAAQ,gBAAgB;AAAC9C,aAAA8C;AAAA9C,aAAA4E;AAAA5E,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAzE,UAAAgrB,sBAA4BxqB;AAA8C,QAAAI;AAAA,QAAAZ,EAAA,CAAA,MAAA6qB,kBAAA7qB,EAAA,CAAA,MAAAqqB,qBAAArqB,EAAA,CAAA,MAAAgjB,qBAAAhjB,SAAA0O,mBAAA;AAEhE9N,WAAAA,MAAA;AAAA,YACFoiB,mBAAiB;AAAA,cACZ,CAACqH,qBAAqBQ,eAAcvrB,IAAG;AACxC,kBAAA;AAAA,cAAAA;AAAAA,cAAA,GAAA+b;AAAAA,YAAAA,IAGIwP;AAAe,gBAAA,CACd7W,MAAM6W,gBAAgBjC,sBAAqB3X,OAAQ,GAAC;AACrD+R,gCAAiB;AAAA,gBAAA1jB;AAAAA,gBAAA+b;AAAAA,gBAAA/M,WAGFI;AAAAA,cAAAA,CACd;AACDka,oCAAqB3X,UAAW4Z;AAAAA,YAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAI7D7qB,aAAA6qB;AAAA7qB,aAAAqqB;AAAArqB,aAAAgjB;AAAAhjB,aAAA0O;AAAA1O,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAA6qB,kBAAA7qB,UAAAqqB,qBAAArqB,EAAA,EAAA,MAAA0O,mBAAA;AAAE7N,WAAA,CAACgqB,gBAAgBR,mBAAmB3b,iBAAiB;AAAC1O,cAAA6qB;AAAA7qB,cAAAqqB;AAAArqB,cAAA0O;AAAA1O,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAjBzDiE,UAAAA,UAAUrD,IAiBPC,EAAsD;AAAC,QAAAC;AAAA,QAAAd,EAAA,EAAA,MAAA8C,UAAA9C,UAAAgP,WAAAhP,EAAA,EAAA,MAAA0O,qBAAA1O,EAAA,EAAA,MAAA0C,QAAApD,IAAA;AAEhDwB,WAAAA,MAAA;AAAA,YACF4B,QAAMpD,MAAQ0P,SAAO;AACrBA,kBAAQtM,QAAMpD,IAAMoP,mBAAmB5L,MAAM;AAAA,QAAC;AAAA,MAAA;AAErD9C,cAAA8C;AAAA9C,cAAAgP;AAAAhP,cAAA0O;AAAA1O,QAAA,EAAA,IAAA0C,QAAApD;AAAAU,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAA8B,UAAAe,KAAA2B,QAAMpD;AAAI,QAAA0B;AAAA,QAAAhB,EAAA,EAAA,MAAA8C,UAAA9C,UAAA0O,qBAAA1O,EAAA,EAAA,MAAAe,IAAA;AAAtCC,WAAA,CAAC8B,QAAQ4L,mBAAmB3N,EAAU;AAACf,cAAA8C;AAAA9C,cAAA0O;AAAA1O,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAJ1CiE,UAAAA,UAAUnD,IAIPE,EAAuC;AAAC,QAAAG;AAAA,QAAAnB,EAAA,EAAA,MAAAsc,mBAAAtc,UAAAoqB,aAAApqB,EAAA,EAAA,MAAA0C,QAAA;AAEbvB,WAAA8pB,CAAAA,wBAAA;AAC1BL,iCAAyBK,mBAAmB;AAC5Cb,kBAAU1D,yBAAyBhkB,QAAQuoB,qBAAqB3O,eAAe,CAAC;AAEhF4O,mBAAA,MAAA;AACIH,uBAAY9Z,SAAAka,MAAAA;AAAAA,QAAA,GAAA,CACZ;AAAA,MAAC;AACRnrB,cAAAsc;AAAAtc,cAAAoqB;AAAApqB,cAAA0C;AAAA1C,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAPD,UAAAorB,wBAA8BjqB;AAS1BkqB,QAAAA;AAAc,QACdV,0BAA0B,gBAC1BA,0BAA0B,eAC1BA,0BAA0B,iBAC1BA,0BAA0B,SAAO;AAAA,UAAArpB;AAAA,UAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAA2qB,yBAAA3qB,EAAA,EAAA,MAAA4E,YAAA;AAE7BtD,8CAAC,qBAAA,EAA8BqpB,iCACAzb,UACEtK,YAAU;AAAG5E,gBAAAkP;AAAAlP,gBAAA2qB;AAAA3qB,gBAAA4E;AAAA5E,gBAAAsB;AAAAA,MAAA,OAAA;AAAAA,eAAAtB,EAAA,EAAA;AAAA,MAAA;AAHlDqrB,uBACIA;AAAAA,IADU,OAAA;AAAA,UAIPV,0BAA0B,OAAK;AAAA,YAAArpB;AAAA,YAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4E,YAAA;AAElCtD,iBAAAJ,2BAAAA,IAAC,kBAAA,EAA2BgO,UACEtK,WAAAA,CAAU;AAAG5E,kBAAAkP;AAAAlP,kBAAA4E;AAAA5E,kBAAAsB;AAAAA,QAAA,OAAA;AAAAA,iBAAAtB,EAAA,EAAA;AAAA,QAAA;AAF/CqrB,yBACIA;AAAAA,MADU,OAAA;AAAA,YAGPV,0BAA0B,YAAU;AAAA,cAAArpB;AAAA,cAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAA4E,YAAA;AAEvCtD,mBAAAJ,2BAAAA,IAAC,uBAAA,EAAgCgO,UACEtK,WAAAA,CAAU;AAAG5E,oBAAAkP;AAAAlP,oBAAA4E;AAAA5E,oBAAAsB;AAAAA,UAAA,OAAA;AAAAA,mBAAAtB,EAAA,EAAA;AAAA,UAAA;AAFpDqrB,2BACIA;AAAAA,QADU,OAAA;AAAA,cAGPV,0BAA0B,YACjCA,0BAA0B,iBAAe;AAI1B,kBAAArpB,QAAC0W;AAAQ,gBAAAzW;AAAA,gBAAAvB,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAA4E,cAAA5E,UAAAsB,MAAA;AAHPC,qBAAAL,2BAAAA,IAAC,mBAAA,EACD,aAAA,OACOiO,oBACT,WAAA7N,MACD4N,UACDE,SACGxK,WAAAA,CAAU;AAAG5E,sBAAAmP;AAAAnP,sBAAAkP;AAAAlP,sBAAAoP;AAAApP,sBAAA4E;AAAA5E,sBAAAsB;AAAAtB,sBAAAuB;AAAAA,YAAA,OAAA;AAAAA,qBAAAvB,EAAA,EAAA;AAAA,YAAA;AAN7BqrB,6BAAiBA;AAAAA,UAAH,OAAA;AAAA,gBAOPV,0BAA0B,kBACjCA,0BAA0B,uBAAqB;AAGhC,oBAAArpB,QAAC0W;AAAQ,kBAAAzW;AAAA,kBAAAvB,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAA4E,cAAA5E,UAAAsB,MAAA;AAFPC,uBAAAL,2BAAAA,IAAC,mBAAA,EACD,aAAA,MACF,WAAAI,MACD4N,UACUC,oBACXC,SACGxK,WAAAA,CAAU;AAAG5E,wBAAAmP;AAAAnP,wBAAAkP;AAAAlP,wBAAAoP;AAAApP,wBAAA4E;AAAA5E,wBAAAsB;AAAAtB,wBAAAuB;AAAAA,cAAA,OAAA;AAAAA,uBAAAvB,EAAA,EAAA;AAAA,cAAA;AAN7BqrB,+BAAiBA;AAAAA,YAAH,OAAA;AAAA,kBAOPV,0BAA0B,eAAa;AAAA,oBAAArpB;AAAA,oBAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,UAAA;AAE1C1W,wDAAC,sBAAA,EAA+B0W,UACA,iBACA9I,UAAQ;AAAGlP,0BAAAkP;AAAAlP,0BAAAgY;AAAAhY,0BAAAsB;AAAAA,gBAAA,OAAA;AAAAA,yBAAAtB,EAAA,EAAA;AAAA,gBAAA;AAH/CqrB,iCACIA;AAAAA,cADU,OAAA;AAAA,oBAIPV,0BAA0B,qBAAmB;AAAA,sBAAArpB;AAAA,sBAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,UAAA;AAEhD1W,0DAAC,sBAAA,EAA+B0W,UACA,gBACA9I,UAAQ;AAAGlP,4BAAAkP;AAAAlP,4BAAAgY;AAAAhY,4BAAAsB;AAAAA,kBAAA,OAAA;AAAAA,2BAAAtB,EAAA,EAAA;AAAA,kBAAA;AAH/CqrB,mCACIA;AAAAA,gBADU,OAAA;AAAA,sBAIPV,0BAA0B,UAAQ;AAAA,wBAAArpB;AAAA,wBAAAtB,UAAAkP,UAAA;AACxB5N,4DAAC,sBAAA,EAA+B4N,SAAAA,CAAQ;AAAGlP,8BAAAkP;AAAAlP,8BAAAsB;AAAAA,oBAAA,OAAA;AAAAA,6BAAAtB,EAAA,EAAA;AAAA,oBAAA;AAA5DqrB,qCAAiBA;AAAAA,kBAAH,OAAA;AAAA,wBACPV,0BAA0B,gBAAc;AAAA,0BAAArpB;AAAA,0BAAAtB,UAAAkP,UAAA;AAC9B5N,8DAAC,qBAAA,EAA8B4N,SAAAA,CAAQ;AAAGlP,gCAAAkP;AAAAlP,gCAAAsB;AAAAA,sBAAA,OAAA;AAAAA,+BAAAtB,EAAA,EAAA;AAAA,sBAAA;AAA3DqrB,uCAAiBA;AAAAA,oBAAH,OAAA;AAAA,0BACPV,0BAA0B,SAAO;AAAA,4BAAArpB;AAAA,4BAAAtB,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAoP,WAAApP,UAAAsc,iBAAA;AAEpChb,iCAAAJ,2BAAAA,IAAC,kBAAA,EAA2BgO,UAAmBE,SAA6BD,oBACtCyO,oBACHtB,iBAAe;AAAGtc,kCAAAmP;AAAAnP,kCAAA4d;AAAA5d,kCAAAkP;AAAAlP,kCAAAoP;AAAApP,kCAAAsc;AAAAtc,kCAAAsB;AAAAA,wBAAA,OAAA;AAAAA,iCAAAtB,EAAA,EAAA;AAAA,wBAAA;AAHzDqrB,yCACIA;AAAAA,sBADU,OAAA;AAAA,4BAIPV,0BAA0B,SAAO;AAAA,8BAAArpB;AAAA,8BAAAtB,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAoP,WAAApP,UAAAsc,iBAAA;AAEpChb,mCAAAJ,2BAAAA,IAAC,oBAAA,EAA6BgO,UAAmBE,SAA6BD,oBACtCyO,oBACHtB,iBAAe;AAAGtc,oCAAAmP;AAAAnP,oCAAA4d;AAAA5d,oCAAAkP;AAAAlP,oCAAAoP;AAAApP,oCAAAsc;AAAAtc,oCAAAsB;AAAAA,0BAAA,OAAA;AAAAA,mCAAAtB,EAAA,EAAA;AAAA,0BAAA;AAH3DqrB,2CACIA;AAAAA,wBADU,OAAA;AAAA,8BAIPV,0BAA0B,aAAW;AAAA,gCAAArpB;AAAA,gCAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,YAAAhY,EAAA,EAAA,MAAA4E,YAAA;AAExCtD,qCAAAJ,2BAAAA,IAAC,wBAAA,EAAmC0D,YACFoT,UACA,UAAA,OACA9I,UAAQ;AAAGlP,sCAAAkP;AAAAlP,sCAAAgY;AAAAhY,sCAAA4E;AAAA5E,sCAAAsB;AAAAA,4BAAA,OAAA;AAAAA,qCAAAtB,EAAA,EAAA;AAAA,4BAAA;AAJjDqrB,6CACIA;AAAAA,0BADU,OAAA;AAAA,gCAKPV,0BAA0B,uBAAqB;AAAA,kCAAArpB;AAAA,kCAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,YAAAhY,EAAA,EAAA,MAAA4E,YAAA;AAElDtD,sEAAC,wBAAA,EAAmCsD,YACFoT,UACA,UAAA,MACA,UAAA,OACA9I,SAAAA,CAAQ;AAAGlP,wCAAAkP;AAAAlP,wCAAAgY;AAAAhY,wCAAA4E;AAAA5E,wCAAAsB;AAAAA,8BAAA,OAAA;AAAAA,uCAAAtB,EAAA,EAAA;AAAA,8BAAA;AALjDqrB,+CACIA;AAAAA,4BADU,OAAA;AAAA,kCAMPV,0BAA0B,aAAW;AAAA,oCAAArpB;AAAA,oCAAAtB,UAAAkP,UAAA;AAC3B5N,wEAAC,uBAAA,EAAgC4N,SAAAA,CAAQ;AAAGlP,0CAAAkP;AAAAlP,0CAAAsB;AAAAA,gCAAA,OAAA;AAAAA,yCAAAtB,EAAA,EAAA;AAAA,gCAAA;AAA7DqrB,iDAAiBA;AAAAA,8BAAH,OAAA;AAAA,oCACPV,0BAA0B,oBAAkB;AAAA,sCAAArpB;AAAA,sCAAAtB,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,YAAAhY,EAAA,EAAA,MAAA4E,YAAA;AAE/CtD,2CAAAJ,2BAAAA,IAAC,wBAAA,EAAmC0D,YACFoT,UACA,UAAA,MACA9I,UAAQ;AAAGlP,4CAAAkP;AAAAlP,4CAAAgY;AAAAhY,4CAAA4E;AAAA5E,4CAAAsB;AAAAA,kCAAA,OAAA;AAAAA,2CAAAtB,EAAA,EAAA;AAAA,kCAAA;AAJjDqrB,mDACIA;AAAAA,gCADU,OAAA;AAAA,sCAKPV,0BAA0B,UAAQ;AAAA,wCAAArpB;AAAA,wCAAAtB,EAAA,EAAA,MAAAmP,sBAAAnP,EAAA,EAAA,MAAA4d,sBAAA5d,EAAA,EAAA,MAAAkP,YAAAlP,UAAAgY,YAAAhY,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAAsc,mBAAAtc,EAAA,EAAA,MAAA4E,YAAA;AAErCtD,4EAAC,qBAAA,EAAgCsD,YACFoT,UACD5I,SACWD,oBACVD,UACU0O,oBACHtB,gBAAAA,CAAe;AAAGtc,8CAAAmP;AAAAnP,8CAAA4d;AAAA5d,8CAAAkP;AAAAlP,8CAAAgY;AAAAhY,8CAAAoP;AAAApP,8CAAAsc;AAAAtc,8CAAA4E;AAAA5E,8CAAAsB;AAAAA,oCAAA,OAAA;AAAAA,6CAAAtB,EAAA,EAAA;AAAA,oCAAA;AAP5DqrB,qDACIA;AAAAA,kCADU,OAAA;AAAA,wCAQPV,0BAA0B,aAAW;AAAA,0CAAArpB;AAAA,0CAAAtB,UAAAkP,UAAA;AAExC5N,8EAAC,uBAAA,EAAgC4N,SAAAA,CAAQ;AAAGlP,gDAAAkP;AAAAlP,gDAAAsB;AAAAA,sCAAA,OAAA;AAAAA,+CAAAtB,EAAA,EAAA;AAAA,sCAAA;AADhDqrB,uDACIA;AAAAA,oCADU,OAAA;AAGdA,uDAAAA;AAAAA,oCAAc;AAAA,kCAAA;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,QAAA/pB;AAAA,QAAAtB,UAAAkP,UAAA;AAKT5N,YAAA4N,YAAYpN,gCAACwpB,GAAAA,WAAA,EAAgB,MAAA,QAC1B,UAAA;AAAA,QAAApqB,2BAAAA,IAACP,GAAAA,cAAW,UAAA,gCAAA,CAAkC;AAAA,QAC9CmB,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,UAAA;AAAA,UAEcO,2BAAAA,IAAA,UAAM,UAAA,WAAA,CAAQ;AAAA,UAAO;AAAA,UAAaA,2BAAAA,IAAA,UAAM,UAAA,QAAA,CAAK;AAAA,UAAO;AAAA,QAAA,EAAA,CAClG;AAAA,MAAA,GACJ;AAAYlB,cAAAkP;AAAAlP,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAMO,UAAAuB,MAAAopB;AAAyC,QAAAnpB;AAAA,QAAAxB,UAAAorB,uBAAA;AACjC5pB,YAAAtB,CAAAA,UAAWkrB,sBAAsBlrB,KAAyB;AAACF,cAAAorB;AAAAprB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,UAAAqoB,WAAA;AAE5D5mB,YAAAA,CAAAyS,MAAAqX,aAAA;AAAA,YAAA,CACLA,UAAQ;AACTlD,sBAAAA;AAAAA,QAAS;AAEbkC,sBAAcrW,IAAI;AAAA,MAAC;AACtBlU,cAAAqoB;AAAAroB,eAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,GAAA;AAAA,IAAA;AAEU,UAAA0B,MAAAuD,QAAQ+lB,mBAAmB;AAAC,QAAAppB;AAAA,QAAA5B,EAAA,GAAA,MAAAkP,YAAAlP,WAAAgY,YAAAhY,EAAA,GAAA,MAAAkoB,WAAAloB,WAAAsc,mBAAAtc,EAAA,GAAA,MAAAsqB,cAAAtqB,WAAAuB,OAAAvB,EAAA,GAAA,MAAAwB,OAAAxB,EAAA,GAAA,MAAAyB,OAAAzB,EAAA,GAAA,MAAA0B,OAAA1B,WAAA0C,QAAA;AAZ3Cd,2CAAC,kBAAA,EACoBc,iBAAAA,QACV,OAAAnB,KACQ,eAAAC,KACT8oB,MAAAA,YACQ,cAAA7oB,KAMJyN,UACC,WAAAxN,KACDsW,UACOsE,iBACR4L,SAAO;AAAGloB,eAAAkP;AAAAlP,eAAAgY;AAAAhY,eAAAkoB;AAAAloB,eAAAsc;AAAAtc,eAAAsqB;AAAAtqB,eAAAuB;AAAAvB,eAAAwB;AAAAxB,eAAAyB;AAAAzB,eAAA0B;AAAA1B,eAAA0C;AAAA1C,eAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,WAAAgrB,qBAAA;AAEtBnpB,YAAAmpB,sDACIrqB,GAAAA,YAAA,EAAmB,SAAA,WACG,WAAA,UACJ,OAAA,SAAS,UAAA,WAAA,CAAQ;AAAaX,eAAAgrB;AAAAhrB,eAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,GAAA,MAAA4B,OAAA5B,WAAA6B,KAAA;AArBzDE,YAAAD,2BAAAA,KAAA,OAAA,EAAgB,WAAA,8BACZF,UAAAA;AAAAA,QAAAA;AAAAA,QAiBCC;AAAAA,MAAAA,GAQL;AAAM7B,eAAA4B;AAAA5B,eAAA6B;AAAA7B,eAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,GAAA,MAAAkP,YAAAlP,EAAA,GAAA,MAAAsoB,YAAAtoB,EAAA,GAAA,MAAA0C,QAAApD,IAAA;AAEL0C,YAAAsmB,YAAY5lB,QAAMpD,MACf4B,2BAAAA,IAAC2D,GAAAA,YAAA,EACY,SAAA,SACC,WAAA,OACAqK,UACD,SAAA,MAAMub,oBAAmB,IAAK,GACvC,UAAAvpB,+BAACsqB,GAAAA,cAAU,GACf;AAAaxrB,eAAAkP;AAAAlP,eAAAsoB;AAAAtoB,QAAA,GAAA,IAAA0C,QAAApD;AAAAU,eAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,GAAA,MAAA+B,OAAA/B,WAAAgC,KAAA;AApCrBkD,YAAApD,2BAAAA,KAAA,OAAA,EAAe,WAAA,6BACXC,UAAAA;AAAAA,QAAAA;AAAAA,QA4BCC;AAAAA,MAAAA,GAQL;AAAMhC,eAAA+B;AAAA/B,eAAAgC;AAAAhC,eAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,EAAA,GAAA,MAAAqjB,gBAAArjB,EAAA,GAAA,MAAAkP,YAAAlP,EAAA,GAAA,MAAAgY,YAAAhY,EAAA,GAAA,MAAAqqB,qBAAArqB,WAAA4E,YAAA;AAGDQ,YAAAilB,qBACGnpB,2BAAAA,IAAC,sBAAA,EAAiC0D,YACAoT,YAAAA,UACG,eAAA,CAACA,UACN9I,UACImU,cACT0H,KAAAA,aAAAA,CAAY;AAAG/qB,eAAAqjB;AAAArjB,eAAAkP;AAAAlP,eAAAgY;AAAAhY,eAAAqqB;AAAArqB,eAAA4E;AAAA5E,eAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAqF;AAAA,QAAArF,WAAAkP,UAAA;AAI9C7J,2CAAA,OAAA,EAAgB,WAAA,eACZ,UAAAnE,2BAAAA,IAAC,4BAAA,EAAqCgO,UAAQ,EAAA,CAClD;AAAMlP,eAAAkP;AAAAlP,eAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAsF;AAAA,QAAAtF,EAAA,GAAA,MAAAqrB,kBAAArrB,WAAAoF,OAAApF,EAAA,GAAA,MAAAqF,KAAA;AAbVC,YAAAxD,2BAAAA,KAAA,OAAA,EAAgB,WAAA,wCACXsD,UAAAA;AAAAA,QAAAA;AAAAA;QAUDC;AAAAA,MAAAA,GAGJ;AAAMrF,eAAAqrB;AAAArrB,eAAAoF;AAAApF,eAAAqF;AAAArF,eAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAxF,EAAA,GAAA,MAAAwqB,oBAAAxqB,WAAAsoB,YAAAtoB,EAAA,GAAA,MAAA0O,qBAAA1O,EAAA,GAAA,MAAA0C,QAAApD,IAAA;AAELkG,YAAA8iB,YACGpnB,2BAAAA,IAACuqB,KAAAA,oBAAA,EAAyBjB,MAAAA,kBACI,UAAA,MAAMlC,SAAS5lB,QAAMpD,IAAMoP,iBAAiB,GAC5C,UAAA,MAAM+b,yBAAyB,GAClC,OAAAvpB,2BAAAA,IAAA,SAAK,UAAA,wBAAA,CAAqB,GAE7B,+CAAK,UAAA;AAAA,QAAA;AAAA,QAAWA,2BAAAA,IAAA,OAAG,UAAA,sBAAA,CACX;AAAA,QAAI;AAAA,MAAA,EAAA,CACG,EAAA,CAAM;AACtBlB,eAAAwqB;AAAAxqB,eAAAsoB;AAAAtoB,eAAA0O;AAAA1O,QAAA,GAAA,IAAA0C,QAAApD;AAAAU,eAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,GAAA,MAAAsB,OAAAtB,EAAA,GAAA,MAAAkF,OAAAlF,EAAA,GAAA,MAAAsF,OAAAtF,WAAAwF,KAAA;AAzE/BC,YAAA3D,2BAAAA,KAAA8R,qBAAA,EACKtS,UAAAA;AAAAA,QAAAA;AAAAA,QAQD4D;AAAAA,QAuCAI;AAAAA,QAgBCE;AAAAA,MAAAA,GAS0B;AAE5BxF,eAAAsB;AAAAtB,eAAAkF;AAAAlF,eAAAsF;AAAAtF,eAAAwF;AAAAxF,eAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,GAAA;AAAA,IAAA;AAAA,WA3EHyF;AAAAA,EA2EG;AAIX,QAAMimB,UAAU;AAEhB,WAASpC,aAAWppB,OAAgBioB,sBAAiC;AAEjE,QAAIpV;AACJ,QAAI,CAAC7S,OAAO;AACR6S,cAAQ;AAAA,IACZ;AACA,QAAI7S,SAAS,CAACA,MAAMyrB,MAAMD,OAAO,GAAG;AAChC3Y,cAAQ;AAAA,IACZ;AACA,QAAI7S,SAASioB,wBAAwBA,qBAAqB7jB,SAASpE,KAAK,GAAG;AACvE6S,cAAQ;AAAA,IACZ;AACA,WAAOA;AAAAA,EACX;AAEA,WAASsW,aAAanpB,OAAe;AACjC,QAAI6S;AACJ,QAAI,CAAC7S,OAAO;AACR6S,cAAQ;AAAA,IACZ;AACA,WAAOA;AAAAA,EACX;AAEA,QAAM6Y,kBAAoD;AAAA,IACtDC,YAAY;AAAA,IACZ7E,WAAW;AAAA,IACXC,UAAU;AAAA,IACVE,KAAK;AAAA,IACLD,OAAO;AAAA,IACP4E,QAAQ;AAAA,IACRC,aAAa;AAAA,IACbC,QAAQ;AAAA,IACRC,cAAc;AAAA,IACdC,cAAc;AAAA,IACdC,eAAe;AAAA,IACfC,qBAAqB;AAAA,IACrBC,aAAa;AAAA,IACbC,mBAAmB;AAAA,IACnBC,WAAW;AAAA,IACXC,qBAAqB;AAAA,IACrBC,kBAAkB;AAAA,IAClBC,WAAW;AAAA,IACXroB,OAAO;AAAA,IACPsoB,WAAW;AAAA,IACXC,QAAQ;AAAA,IACRC,cAAc;AAAA,IACdC,OAAO;AAAA,EACX;AAEA,WAAAC,iBAAAhtB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA0B,UAAA;AAAA,MAAA+sB;AAAAA,MAAA9sB;AAAAA,MAAA+sB;AAAAA,MAAA/Y;AAAAA,MAAAgZ;AAAAA,MAAAhe;AAAAA,MAAA8I;AAAAA,MAAAsE;AAAAA,MAAA4L;AAAAA,IAAAA,IAAAnoB;AAsBzB,QAAAiZ;AAAA,QAAAC;AAAA,QAAA5Y;AAAA,QAAAE;AAAA,QAAAC;AAAA,QAAAI;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAd,EAAA,CAAA,MAAAkP,YAAAlP,EAAA,CAAA,MAAAgY,YAAAhY,SAAAkoB,WAAAloB,EAAA,CAAA,MAAAgtB,mBAAAhtB,EAAA,CAAA,MAAAktB,gBAAAltB,EAAA,CAAA,MAAAitB,iBAAAjtB,EAAA,CAAA,MAAAkU,QAAAlU,EAAA,CAAA,MAAAsc,mBAAAtc,SAAAE,OAAA;AAEG,YAAAitB,qBAA2Bzd,OAAAsK,QAAA0N,eAA8B,EAAC0F,OAAQ1d,OAAAsK,QAAesC,eAAe,CAAC;AAEjG,YAAA+Q,oBAA0BnF,UACpBiF,mBAAkB/oB,OAAA+F,OAA6H,IAC/IgjB,oBAAkBpjB,IAAAC,QAGlB,EAAC+R,OAAAjQ,UAAA,CAAA,CAME;AAET,YAAAwhB,QAAYptB;AACZ,YAAAqtB,mBAAuB1R,QAAO8L,KAAAA,sBAAsB9L,KAAG,KAAKS,gBAAgBT,KAAG,IAACrY;AAChF,YAAAgqB,eAAqB/Q,kBAAcpB;AAAW,UAAAta;AAAA,UAAAf,EAAA,EAAA,MAAAwtB,gBAAAxtB,UAAAutB,oBAAAvtB,EAAA,EAAA,MAAAsc,iBAAA;AAC9C,cAAAmR,kBAAwBD,gBAAY,CAAKlS,uBAAkBkS,YAAY,IAAIhR,oBAAegR,cAAclR,eAAe,IAAC9Y;AAC5FzC,cAAA0sB,mBAAmBhR,mBAAiBqK,KAAAA,UAAU2G,iBAAiBhR,gBAAc,IAAIA;AAAczc,gBAAAwtB;AAAAxtB,gBAAAutB;AAAAvtB,gBAAAsc;AAAAtc,gBAAAe;AAAAA,MAAA,OAAA;AAAAA,cAAAf,EAAA,EAAA;AAAA,MAAA;AAA3H,YAAA0tB,sBAA4B3sB;AAE5B,YAAAqB,SAAA,CAAA,GAAA,IAAA0O,IAAqCpB,OAAAC,KAAY0d,gBAAgB,EAACtjB,IAAAyQ,QAMjE,CAAC,CAAA;AAAG,UAAAxZ;AAAA,UAAAhB,EAAA,EAAA,MAAAkP,YAAAlP,EAAA,EAAA,MAAAktB,gBAAAltB,EAAA,EAAA,MAAAkU,QAAAlU,UAAAE,OAAA;AAIYc,cAAAA,MAAA;AAAA,cAAA,CACAkO,UAAQ;AACTge,0BAAchZ,MAAMjP,QAAQ/E,KAAK,CAAC;AAAA,UAAC;AAAA,QAAA;AAE1CF,gBAAAkP;AAAAlP,gBAAAktB;AAAAltB,gBAAAkU;AAAAlU,gBAAAE;AAAAF,gBAAAgB;AAAAA,MAAA,OAAA;AAAAA,cAAAhB,EAAA,EAAA;AAAA,MAAA;AAIG,YAAAmB,MAAA+N,WAAQye,GAAAA,+BAAAC,GAAAA;AAA2D,UAAAtsB;AAAA,UAAAtB,UAAAmB,KAAA;AAH5DG,cAAAhB,GAAAA,IACP,sCAAoCutB,GAAAA,sBAEpC1sB,KACA,4BACJ;AAACnB,gBAAAmB;AAAAnB,gBAAAsB;AAAAA,MAAA,OAAA;AAAAA,cAAAtB,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAuB;AAAA,UAAAvB,UAAAE,OAAA;AACAqB,eAACrB,SAASgB,2BAAAA,YAAI,UAAA,4BAAwB;AAAKlB,gBAAAE;AAAAF,gBAAAuB;AAAAA,MAAA,OAAA;AAAAA,cAAAvB,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAwB;AAAA,UAAAxB,EAAA,EAAA,MAAA0tB,uBAAA1tB,UAAAE,OAAA;AAC3CsB,cAAAtB,SAASwtB,uBAAuB5rB,gCAAA,SAClB,WAAAxB,GAAAA,IACP,mBAAmB,GACvB,UAAA;AAAA,UAAAY,2BAAAA,IAAA,SAAgB,WAAA,QACZ,yCAACyb,KAAAA,qBAAA,EAAoC+Q,gBAAAA,qBAAmB,EAAA,CAC5D;AAAA,UACA5rB,2BAAAA,cAAgB,WAAA,iDACZ,UAAA;AAAA,YAAAZ,2BAAAA,IAAA,OAAA,EAAMwsB,8BAAmBjuB,KAAAA,CAAM;AAAA,2CAC9BkB,GAAAA,YAAA,EAAoB,SAAA,WACF,OAAA,aACd+sB,8BAAmBrkB,YAAAA,CACxB;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,GACJ;AAAMrJ,gBAAA0tB;AAAA1tB,gBAAAE;AAAAF,gBAAAwB;AAAAA,MAAA,OAAA;AAAAA,cAAAxB,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,EAAA,MAAAsB,OAAAtB,EAAA,EAAA,MAAAuB,OAAAvB,EAAA,EAAA,MAAAwB,OAAAxB,UAAAgB,KAAA;AA1BVH,aAAAiB,2BAAAA,KAAA,OAAA,EACa,SAAAd,KAKE,WAAAM,KAMVC,UAAAA;AAAAA,UAAAA;AAAAA,UACAC;AAAAA,QAAAA,GAcL;AAAMxB,gBAAAsB;AAAAtB,gBAAAuB;AAAAvB,gBAAAwB;AAAAxB,gBAAAgB;AAAAhB,gBAAAa;AAAAA,MAAA,OAAA;AAAAA,aAAAb,EAAA,EAAA;AAAA,MAAA;AACLiZ,WAAAvL,GAAAA;AAAawG,WAAAA;AAAI,UAAAlU,EAAA,EAAA,MAAAktB,gBAAAltB,UAAAE,OAAA;AACIK,aAAA8T,CAAAA,WAAU6Y,aAAahZ,QAAMjP,QAAQ/E,KAAK,CAAC;AAACF,gBAAAktB;AAAAltB,gBAAAE;AAAAF,gBAAAO;AAAAA,MAAA,OAAA;AAAAA,aAAAP,EAAA,EAAA;AAAA,MAAA;AAChDQ,WAAA;AAAK,UAAAR,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACnBE,4CAAC0T,GAAAA,eAAY,UAAA,2BAAA,CAEb;AAActU,gBAAAY;AAAAA,MAAA,OAAA;AAAAA,aAAAZ,EAAA,EAAA;AAAA,MAAA;AACbgZ,WAAAzE,GAAAA;AACGzT,WAAAI,2BAAAA,IAAA,SACKkB,UAAAA,OAAM2H,IAAA+jB,aACIhsB,2BAAAA,KAAA,OAAA,EAA4B,WAAA,QAC/B,UAAA;AAAA,QAAAZ,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,4BAAgB;AAAA,QACrCO,2BAAAA,IAAA,SAAgB,WAAA,wDACXwO,iBAAAsK,QAAeqT,gBAAgB,EAACtjB,IAAAtI,CAAAA,QAAA;AAAM,gBAAA,CAAAssB,OAAAC,gBAAA,IAAAvsB;AACnC,gBAAAwsB,WAAArC,gBAAiC/P,KAAuB;AAAE,cACtDoS,aAAa5pB,SAAK;AAAA,mBACXnD,2BAAAA,IAAC,sBAAA,EAEa8rB,iBACR,SAAA,MAAA;AACLC,4BAAcpR,KAAG;AACjBqR,sCAAwB;AAAA,YAAC,GAEbzQ,gBAAAA,kBACNzE,SAAAA,GAPL6D,KAOa;AAAA,UAAG;AAAA,iBAAA;AAAA,QAAA,CAGhC,EAAA,CACL;AAAA,MAAA,KAlBaxX,OAmBjB,CACH,GAYL;AAAMrE,aAAAkP;AAAAlP,aAAAgY;AAAAhY,aAAAkoB;AAAAloB,aAAAgtB;AAAAhtB,aAAAktB;AAAAltB,aAAAitB;AAAAjtB,aAAAkU;AAAAlU,aAAAsc;AAAAtc,aAAAE;AAAAF,aAAAgZ;AAAAhZ,cAAAiZ;AAAAjZ,cAAAK;AAAAL,cAAAO;AAAAP,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAkY,WAAAhZ,EAAA,CAAA;AAAAiZ,WAAAjZ,EAAA,EAAA;AAAAK,WAAAL,EAAA,EAAA;AAAAO,WAAAP,EAAA,EAAA;AAAAQ,WAAAR,EAAA,EAAA;AAAAY,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAAc,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAgZ,MAAAhZ,UAAAc,IAAA;AAnCVC,WAAAG,2BAAAA,IAAC,MACGJ,UAAAA,GAAAA,CAmCJ;AAAgBd,cAAAgZ;AAAAhZ,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,UAAAiZ,MAAAjZ,EAAA,EAAA,MAAAK,MAAAL,EAAA,EAAA,MAAAO,MAAAP,EAAA,EAAA,MAAAQ,MAAAR,UAAAY,MAAAZ,EAAA,EAAA,MAAAe,IAAA;AA1CpBC,2CAAC,IAAA,EAAakT,MAAAA,IACQ,cAAA3T,IACJ,UAAAC,IACdI,UAAAA;AAAAA,QAAAA;AAAAA,QAGAG;AAAAA,MAAAA,GAqCJ;AAASf,cAAAiZ;AAAAjZ,cAAAK;AAAAL,cAAAO;AAAAP,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAa,MAAAb,UAAAgB,IAAA;AAxENG,kEACHN,UAAAA;AAAAA,QAAAA;AAAAA,QA4BAG;AAAAA,MAAAA,GA2CS;AACVhB,cAAAa;AAAAb,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAzEImB;AAAAA,EAyEJ;AA9HP,WAAAqZ,SAAA0T,OAAA;AA8CQ,UAAA7pB,QAAAunB,gBAA8B/P,KAAuB;AAAE,QACnDxX,OAAK;AAAA,aACEA;AAAAA,IAAK;AAAA,WAET;AAAA,EAAc;AAlD7B,WAAAyH,SAAAkQ,GAAAC,GAAA;AAAA,WAAA;AAAA,MAAA,GAkCmBD;AAAAA,MAAC,GACDC;AAAAA,IAAAA;AAAAA,EAAC;AAnCpB,WAAAjS,SAAAjK,IAAA;AA6Bc,UAAA,CAAA8b,KAAAsS,gBAAA,IAAApuB;AAAqB,WAAA;AAAA,MAAA,CACtB8b,GAAG,GAAGY;AAAAA,IAAAA;AAAAA,EAAc;AA9BjC,WAAAtS,QAAApK,IAAA;AA2BqC,UAAA,CAAA,EAAA0c,cAAA,IAAA1c;AAAmB,WAAK,CAACub,KAAAA,kBAAkBmB,eAAcpB,QAAS,KAAKoB,eAAcpB,UAAAE,aAAwB;AAAA,EAAO;AA6GlJ,WAAA6S,qBAAAruB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA8B,UAAA;AAAA,MAAAkc;AAAAA,MAAA6Q;AAAAA,MAAAvQ;AAAAA,MAAAzE;AAAAA,IAAAA,IAAAjY;AAOjC,UAAAytB,eAAqB/Q,eAAcpB;AACnC,UAAAgT,6BAAmCrW,YAAQ,CAAKsD,KAAAA,kBAAkBkS,YAAY,KAAKA,aAAYjS,aAAcyR,iBAAezR;AAAW,QAAAlb;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAMpHL,WAAAC,GAAAA,IACP,mDACJ;AAACN,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,EAAA,CAAA,MAAAyc,kBAAAzc,SAAAquB,4BAAA;AACD9tB,WAAAW,2BAAAA,IAAA,SAAgB,WAAA,QACZ,yCAACyb,KAAAA,qBAAA,EAAoCF,gBAA0B4R,sCAA0B,EAAA,CAC7F;AAAMruB,aAAAyc;AAAAzc,aAAAquB;AAAAruB,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAAquB,4BAAA;AAGG7tB,WAAA6tB,8BAA8BntB,2BAAAA,IAACE,GAAAA,SAAA,EACrB,OAAA,wHACP,UAAAF,2BAAAA,IAACotB,GAAAA,aAAA,EAAiB,MAAA,YAAsB,WAAA,MAAA,CAAK,GACjD;AAAUtuB,aAAAquB;AAAAruB,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAGC,UAAAY,KAAAytB,6BAA6B,cAAW7qB;AAAY,QAAA3C;AAAA,QAAAb,SAAAyc,eAAAhd,QAAAO,SAAAY,IAAA;AAF/DC,0CAACF,eAAA,EACY,SAAA,SACF,OAAAC,IAAuD6b,yBAAchd,KAAAA,CAAM;AAAaO,QAAA,CAAA,IAAAyc,eAAAhd;AAAAO,aAAAY;AAAAZ,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,CAAA,MAAAQ,MAAAR,UAAAa,IAAA;AAPvGC,WAAAgB,2BAAAA,KAAA,OAAA,EAAgB,WAAA,oCACXtB,UAAAA;AAAAA,QAAAA;AAAAA,QAIDK;AAAAA,MAAAA,GAGJ;AAAMb,aAAAQ;AAAAR,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAyc,eAAApT,aAAA;AAENtI,WAAAG,2BAAAA,IAACP,GAAAA,cAAoB,SAAA,WACF,OAAA,aACI,WAAA,YAClB8b,UAAAA,eAAcpT,YAAAA,CACnB;AAAarJ,QAAA,EAAA,IAAAyc,eAAApT;AAAArJ,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAc,MAAAd,UAAAe,IAAA;AAfjBC,2CAAA,OAAA,EACIF,UAAAA;AAAAA,QAAAA;AAAAA,QAUAC;AAAAA,MAAAA,GAMJ;AAAMf,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAO,MAAAP,UAAAgB,IAAA;AAxBVG,WAAAW,2BAAAA,KAAA,OAAA,EACe,WAAAzB,IAGXE,UAAAA;AAAAA,QAAAA;AAAAA,QAGAS;AAAAA,MAAAA,GAkBJ;AAAMhB,cAAAO;AAAAP,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAmc,WAAAnc,UAAAmB,IAAA;AA5BHG,2CAACD,GAAAA,MAAA,EACK8a,SACE,WAAA,4CACXhb,UAAAA,IA0BJ;AAAOnB,cAAAmc;AAAAnc,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,WA7BAsB;AAAAA,EA6BA;ACjyBJ,WAASitB,UAAUC,KAAqB;AAC3C,QAAI,CAACA,IAAK,QAAO;AACjB,QAAIA,IAAI5e,WAAW,EAAG,QAAO4e,IAAIC,YAAAA;AAGjC,UAAMC,QAAQF,IAAI3P,MAAM,QAAQ,EAAEza,OAAOa,OAAO;AAEhD,QAAIypB,MAAM9e,WAAW,EAAG,QAAO;AAG/B,WAAO8e,MAAM,CAAC,EAAED,YAAAA;AAAAA,IAEZC,MAAMzT,MAAM,CAAC,EACRlR,IAAI4kB,CAAAA,SAAQA,KAAK3T,OAAO,CAAC,EAAEjN,gBAAgB4gB,KAAKC,UAAU,CAAC,EAAEH,aAAa,EAC1EtT,KAAK,EAAE;AAAA,EACpB;ACPO,WAAA0T,cAAA9uB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAuB,UAAA;AAAA,MAAAulB;AAAAA,MAAA0H;AAAAA,MAAAhZ;AAAAA,IAAAA,IAAAnU;AAM1B,UAAA+uB,qBAA2B5X,KAAAA,sBAAAA;AAE3B,UAAA6X,OAAavJ,aACP,iEAAmEA,YAAU/lB,OAAS8uB,UAAU/I,WAAU/lB,IAAK,IAAI,QAAQ,mCAAmCuvB,MAAAC,UAAgBC,iBAAA;AAAA,MAAA,GAAsB1J;AAAAA,IAAAA,CAAY,GAAC,MAAQ,GAAI,IAC7N;AAAyB,QAAAnlB;AAAA,QAAAL,EAAA,CAAA,MAAAwlB,WAAA/lB,MAAA;AAI3BY,WAAAyB,2BAAAA,KAACwS,GAAAA,aAAA,EAAqB,SAAA,MAAM,UAAA;AAAA,QAAA;AAAA,QAAUkR,WAAU/lB;AAAAA,MAAAA,GAAM;AAAcO,QAAA,CAAA,IAAAwlB,WAAA/lB;AAAAO,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGhEH,WAAAuB,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,SAAoB,WAAA,aAAa,UAAA;AAAA,QAAA;AAAA,uCAGjC,KAAA,EACb,KAAA,uBACE,MAAA,4CAA4C,UAAA,QAAI;AAAA,QAAI;AAAA,MAAA,GAC9D;AAAaX,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAA+uB,MAAA;AARjBvuB,2CAAC+T,kBAAA,EAEGhU,UAAAA;AAAAA,QAAAA;AAAAA,QAOAW,2BAAAA,IAACiuB,mBAAAA,aACU,OAAAC,0BAAAC,QACDN,MACG,UAAA,cAER5kB,UAAAA,QAAAA,CAiBL;AAAA,MAAA,GAEJ;AAAgBnK,aAAA+uB;AAAA/uB,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAA+uB,QAAA/uB,SAAA8uB,oBAAA;AAMCluB,WAAAmE,CAAAA,MAAA;AACLA,UAACoV,gBAAAA;AACDpV,UAACmV,eAAAA;AACD4U,2BAAkB5a,KAAA;AAAA,UAAAsD,MACR;AAAA,UAASC,SACN;AAAA,QAAA,CACZ;AAAC,eACK6X,UAAAC,UAAAC,UAA8BT,IAAI;AAAA,MAAC;AAC7C/uB,aAAA+uB;AAAA/uB,aAAA8uB;AAAA9uB,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACDG,0CAAC4uB,GAAAA,iBAAA,EAAsB,MAAA,QAAA,CAAO;AAAGzvB,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAAY,IAAA;AAbrCE,WAAAgB,2BAAAA,KAAC2Q,GAAAA,UACY,SAAA,QACH,MAAA,SACC,OAAA,WACE,SAAA7R,IASTC,UAAAA;AAAAA,QAAAA;AAAAA,QAAiC;AAAA,MAAA,GAErC;AAASb,aAAAY;AAAAZ,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAAktB,cAAA;AACTnsB,0CAAC0R,GAAAA,QAAA,EAAgB,SAAA,MAAMya,aAAY,KAAM,GAAG,UAAA,SAAK;AAASltB,cAAAktB;AAAAltB,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAc,MAAAd,UAAAe,IAAA;AAjB9DC,2CAACwT,kBAAA,EACG1T,UAAAA;AAAAA,QAAAA;AAAAA,QAgBAC;AAAAA,MAAAA,GACJ;AAAgBf,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAktB,gBAAAltB,EAAA,EAAA,MAAAkU,QAAAlU,EAAA,EAAA,MAAAK,MAAAL,EAAA,EAAA,MAAAQ,MAAAR,UAAAgB,IAAA;AAxDbG,WAAAW,2BAAAA,KAAC4L,GAAAA,QAAA,EAAawG,MACQgZ,cACJ,UAAA,OACrB7sB,UAAAA;AAAAA,QAAAA;AAAAA,QACAG;AAAAA,QAkCAQ;AAAAA,MAAAA,GAmBJ;AAAShB,cAAAktB;AAAAltB,cAAAkU;AAAAlU,cAAAK;AAAAL,cAAAQ;AAAAR,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAzDFmB;AAAAA,EAyDE;AApEN,WAAAgJ,QAAApK,IAAA;AA6BW,UAAA;AAAA,MAAA6gB;AAAAA,MAAA8O;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAA7vB;AAMC,WACCmB,2BAAAA,IAAA,OAAA,EAAY0f,OAAkB,WAAA,uBACzC8O,UAAAA,OAAM3lB,IAAA,CAAA8lB,MAAAC,MACH5uB,2BAAAA,IAAA,OAAA,EAAW,GAAMyuB,aAAY;AAAA,MAAAE;AAAAA,IAAAA,CAAS,GACjCA,UAAAA,KAAI9lB,KAAAgmB,OAAAlU,QACD3a,4CAAoB0uB,cAAa;AAAA,MAAAG;AAAAA,IAAAA,CAAU,EAAA,GAAhClU,IACd,EAAA,GAHKiU,CAIV,CACH,EAAA,CACH;AAAA,EAAM;AA2BZ,WAASZ,iBAAiB1J,YAAsC;AAE5D,UAAMwK,kBAAkBA,CAAC9vB,UAAoB;AACzC,UAAIA,UAAUsD,UAAatD,UAAU,MAAM;AACvC,eAAOA;AAAAA,MACX;AACA,YAAM+vB,YAAYC,OAAAA,MAAMhwB,KAAK;AAC7B,UAAI,OAAO+vB,cAAc,YAAY;AACjC,eAAOA;AAAAA,MACX;AACA,UAAIre,MAAM8H,QAAQuW,SAAS,GAAG;AAC1B,eAAOA,UAAUlmB,IAAI,CAACtD,MAAWupB,gBAAgBvpB,CAAC,CAAC;AAAA,MACvD;AACA,UAAI,OAAOwpB,cAAc,UAAU;AAC/B,YAAIA,cAAc,KACd,QAAOA;AACXvgB,eAAOC,KAAKsgB,SAAS,EAAE5gB,QAASwM,CAAAA,QAAQ;AACpC,cAAI,CAACsU,KAAAA,cAAcF,SAAS,GAAG;AAC3B,kBAAMG,WAAWJ,gBAAgBC,UAAUpU,GAAG,CAAC;AAC/C,gBAAIuU,aAAa,QAAQA,aAAa5sB,UAAa4sB,aAAa,SAAS,CAACD,mBAAcC,QAAQ,GAAG;AAC/FH,wBAAUpU,GAAG,IAAIuU;AAAAA,YACrB,OAAO;AACH,qBAAOH,UAAUpU,GAAG;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ,CAAC;AACD,eAAOoU,UAAUI;AACjB,eAAOJ,UAAUK;AACjB,eAAOL,UAAU3S;AACjB,eAAO2S,UAAUxT;AACjB,eAAOwT,UAAUM;AACjB,eAAON,UAAUxU;AAAAA,MAErB;AAEA,aAAOwU;AAAAA,IACX;AAEA,WAAO;AAAA,MACH3wB,IAAIkmB,WAAWlmB;AAAAA,MACfG,MAAM+lB,WAAW/lB;AAAAA,MACjBgI,cAAc+d,WAAW/d;AAAAA,MACzB/H,MAAM8lB,WAAW9lB;AAAAA,MACjB2J,aAAamc,WAAWnc;AAAAA,MACxBoS,UAAU;AAAA,MACVvP,iBAAiBsZ,WAAWtZ;AAAAA,MAC5BmB,MAAMmY,WAAWnY;AAAAA,MACjBhJ,OAAOmhB,WAAWnhB;AAAAA,MAClBM,UAAU6gB,WAAW7gB;AAAAA,MACrB6rB,eAAehL,WAAWgL;AAAAA,MAC1BC,aAAajL,WAAWiL;AAAAA,MACxB9U,YAAYjM,OAAOsK,QAAQ;AAAA,QACvB,GAAIwL,WAAW7J,cAAc,CAAA;AAAA,MAAC,CACjC,EACI5R,IAAI,CAAC,CAAC8R,KAAK3b,KAAK,OAAO;AAAA,QACpB,CAAC2b,GAAG,GAAGmU,gBAAgB9vB,KAAK;AAAA,MAAA,EAC9B,EACD6b,OAAO,CAACC,GAAGC,OAAO;AAAA,QAAE,GAAGD;AAAAA,QACpC,GAAGC;AAAAA,MAAAA,IAAM,CAAA,CAAE;AAAA,MACHyU,iBAAiBlL,WAAWkL,kBAAkB,CAAA,GAAI3mB,IAAImlB,gBAAgB;AAAA,IAAA;AAAA,EAG9E;AC1FO,WAASyB,+BAA+B;AAAA,IACI/rB;AAAAA,IACA1C;AAAAA,IACA0uB;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA3uB;AAAAA,IACA4uB;AAAAA,IACAC;AAAAA,IACA5hB;AAAAA,IACA6hB;AAAAA,IACA3U;AAAAA,IACAsB;AAAAA,EACuB,GAAG;AAEzE,UAAM;AAAA,MACFlb;AAAAA,MACAC;AAAAA,MACAqU;AAAAA,MACAjU;AAAAA,MACAD;AAAAA,MACAouB;AAAAA,IAAAA,IACAjuB,iBAAAA;AAEJ,UAAM6rB,qBAAqB5X,KAAAA,sBAAAA;AAE3B,UAAMia,cAAcC,KAAAA,eAAAA;AACpB,UAAMC,WAAW,CAACF;AAGlB,UAAM,CAACG,uBAAuBC,wBAAwB,IAAInuB,eAAAA;AAC1D,UAAM,CAACga,qBAAqBsE,sBAAsB,IAAIte,eAAAA;AACtD,UAAM,CAACue,2BAA2BC,4BAA4B,IAAIxe,eAAAA;AAElE,UAAMgf,yBAAyBhF,sBAAsB5O,UAAU4O,qBAAqBuE,yBAAyB,IAAIne;AACjH,UAAM6e,mBAAmBD,yBAAyBze,OAAAA,MAAMjB,OAAOiZ,YAAYyG,uBAAuBhU,WAAW,KAAK,cAAc,CAAC,IAAI5K;AACrI,UAAM,CAACguB,gBAAgBC,iBAAiB,IAAIruB,MAAAA,SAAkB,KAAK;AAEnE,UAAM,CAACsuB,qBAAqBC,sBAAsB,IAAIvuB,MAAAA,SAAkB,KAAK;AAE7E,UAAM,CAACwuB,uBAAuBC,wBAAwB,IAAIzuB,MAAAA,SAAkB,KAAK;AACjF,UAAM,CAACua,sBAAsBmU,uBAAuB,IAAI1uB,MAAAA,SAAmB,CAAA,CAAE;AAE7E,UAAM2uB,4BAA4BvvB,MAAMC,OAErCC,OAAO4a,kBAAkB;AAAA,MAAE,IAAI5a,OAAO4a;AAAAA,IAAAA,IAAoB,EAAE;AAE/DrZ,UAAAA,UAAU,MAAM;AACZ,UAAI6sB,mBACSI,KAAK;AAAA,IACtB,GAAG,CAACA,KAAK,CAAC;AAEV,UAAMc,0BAA0Bf,wBAC1B,MAAY;AACV,UAAI,CAACA,sBACD;AAEJU,6BAAuB,IAAI;AAE3B7e,cAAQmf,MAAM,oDAAoDhB,uBAAuBvuB,MAAM;AAE/FuuB,4BAAsBvuB,MAAM,EACvB6O,KAAM2gB,CAAAA,kBAAkB;AAErB,YAAIA,cACAC,MAAAA,uBAAuBD,cAAcvW,UAAwB;AAEjE,YAAI,CAACuW,eAAe;AAChBpD,6BAAmB5a,KAAK;AAAA,YACpBsD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AACD;AAAA,QACJ;AAEA,cAAM2a,mBAAmBF,cAAcvW,aAAajM,OAAOC,KAAKuiB,cAAcvW,UAAU,IAAI,CAAA,GACvFvX,OAAQqK,CAAAA,gBAAgB,CAAC/L,OAAOiZ,WAAWlN,WAAW,CAAC;AAC5D,YAAI2jB,gBAAgBxiB,WAAW,GAAG;AAC9Bkf,6BAAmB5a,KAAK;AAAA,YACpBsD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AACD;AAAA,QACJ;AAEA,cAAM4a,oBAAoB;AAAA,UACtB,GAAGD,gBAAgBrW,OAAO,CAACuW,KAAK7jB,kBAAgB;AAC5C6jB,gBAAI7jB,aAAW,KAAKyjB,cAAcvW,cAAc,CAAA,GAAIlN,aAAW;AAC/D,mBAAO6jB;AAAAA,UACX,GAAG,CAAA,CAEF;AAAA,UACD,GAAG5vB,OAAOiZ;AAAAA,QAAAA;AAEd,cAAM4W,yBAAyB,CAC3B,GAAGH,iBACH,GAAI1vB,OAAO4a,mBAAmB,EAAG;AAErC3a,sBAAc,cAAc0vB,mBAAmB,KAAK;AAEpDG,8BAAsBD,sBAAsB;AAE5CT,gCAAwBM,eAAe;AAAA,MAC3C,CAAC,EACA9f,QAAQ,MAAM;AACXqf,+BAAuB,KAAK;AAAA,MAChC,CAAC;AAAA,IACT,IACEnuB;AAEN,UAAMivB,4BAA4BA,CAACnkB,cAAuB;AACtD,UAAI,CAACA,UAAW,QAAOyjB,0BAA0B9gB,QAAQ,EAAE,KAAKtN,OAAAA,MAAMjB,QAAQ6L,gCAAgC;AAC9G,aAAOwjB,0BAA0B9gB,QAAQ3C,SAAS,KAAK3K,OAAAA,MAAMjB,QAAQ6L,+BAA+BD,SAAS,CAAC;AAAA,IAClH;AAEA,UAAMkkB,wBAAwBA,CAACrT,oBAA8B7Q,gBAAuB;AAChF,YAAM0T,sBAAsBzT,+BAA+BD,WAAS;AAEpE3L,oBAAcqf,qBAAqB7C,oBAAoB,KAAK;AAC5D4S,gCAA0B9gB,QAAQ3C,eAAa,EAAE,IAAI6Q;AAAAA,IAEzD;AAEA,UAAMgD,iBAAiBA,CAAC1T,eAAsBH,gBAAuB;AACjE,YAAMwS,SAASrS,gBAAcD,UAAUC,eAAaH,WAAS,IAAI9K;AACjE,UAAI,CAACsd,OACD,OAAMvV,MAAM,+BAA+B;AAE/C5I,oBAAcwL,mBAAmB2S,MAAM,GAAGtd,QAAW,KAAK;AAE1D,YAAMqe,yBAAyB4Q,0BAA0BnkB,WAAS;AAClE,UAAIuT,wBAAwB;AACxB,cAAM1C,uBAAqB0C,uBAAuBzd,OAAQ8d,CAAAA,MAAMA,MAAMzT,aAAW;AACjF+jB,8BAAsBrT,sBAAoB7Q,WAAS;AAAA,MACvD;AAEAujB,+BAAyB,KAAK;AAE9BN,+BAAyB/tB,MAAS;AAClCke,6BAAuBle,MAAS;AAChCoe,mCAA6Bpe,MAAS;AAAA,IAC1C;AAEA,UAAMia,iBAAiBA,CAACH,iBAA2BhP,gBAAuB;AACtE3L,oBAAc4L,+BAA+BD,WAAS,GAAGgP,iBAAiB,KAAK;AAAA,IACnF;AAEA,UAAMwE,oBAAoBA,CAAC;AAAA,MACIxiB;AAAAA,MACA+b;AAAAA,IAAAA,MAIzB;AACF,UAAI,CAAC/b,IAAI;AACL,cAAMiM,MAAM,oDAAoD;AAAA,MACpE;AACA5I,oBAAc,cAAc;AAAA,QACxB,GAAID,OAAOiZ,cAAc,CAAA;AAAA,QACzB,CAACrc,EAAE,GAAG+b;AAAAA,MAAAA,GACP,KAAK;AAER,YAAM8D,uBAAqB,CAAC,GAAIzc,OAAO4a,mBAAmB5N,OAAOC,KAAKjN,OAAOiZ,UAAU,GAAIrc,EAAE;AAC7FkzB,4BAAsBrT,oBAAkB;AAExC0S,+BAAyB,KAAK;AAC9B,UAAIV,aAAa;AACbI,iCAAyBpS,qBAAmBF,QAAQ3f,EAAE,CAAC;AACvDoiB,+BAAuBpiB,EAAE;AAAA,MAC7B;AACAsiB,mCAA6Bpe,MAAS;AAAA,IAC1C;AAEA,UAAMwf,oBAAoBA,CAAC;AAAA,MACI1jB,IAAAA;AAAAA,MACA+b,UAAAA;AAAAA,MACAsN;AAAAA,MACAra,WAAAA;AAAAA,IAAAA,MAC2B;AAEtD,YAAMwS,WAASxhB,OAAKkP,UAAUlP,MAAIgP,WAAS,IAAI9K;AAC/C,YAAMkvB,eAAe5R,WAAS3S,mBAAmB2S,QAAM,IAAItd;AAG3D,UAAImlB,cAAcA,eAAerpB,MAAI;AAEjC,cAAMqzB,iBAAiBnkB,UAAUma,YAAYra,WAAS;AACtD,cAAMskB,uBAAuBzkB,mBAAmBwkB,cAAc;AAE9D,cAAM9Q,2BAAyB4Q,0BAA0BnkB,WAAS;AAGlE,cAAM6Q,uBAAqB0C,yBACtB9X,IAAKmY,CAAAA,QAAMA,QAAMyG,aAAarpB,OAAK4iB,GAAC,EACpC9d,OAAQ8d,CAAAA,QAAMA,QAAM1e,MAAS;AAElCgvB,8BAAsBrT,sBAAoB7Q,WAAS;AAEnD,YAAIhP,MAAI;AACJiyB,mCAAyBpS,qBAAmBF,QAAQ3f,IAAE,CAAC;AACvDoiB,iCAAuBpiB,IAAE;AAAA,QAC7B;AACAqD,sBAAciwB,sBAAsBpvB,QAAW,KAAK;AACpDT,wBAAgB6vB,sBAAsB,OAAO,KAAK;AAAA,MACtD;AAEA,UAAIF,cAAc;AACd/vB,sBAAc+vB,cAAcrX,YAAU,KAAK;AAC3CtY,wBAAgB2vB,cAAc,MAAM,KAAK;AAAA,MAC7C;AAAA,IAEJ;AAEA,UAAMG,0BAA0BA,CAACvzB,MAAYgP,aAAoByE,UAAgC;AAC7F,YAAM2f,iBAAepzB,OAAKkP,UAAUlP,MAAIgP,WAAS,IAAI9K;AACrDsP,cAAQmf,MAAM,2BAA2B;AAAA,QACrC3yB,IAAAA;AAAAA,QACAgP,WAAAA;AAAAA,QACAyE;AAAAA,QACA2f,cAAAA;AAAAA,MAAAA,CACH;AACD,UAAIA,gBAAc;AACd,cAAMjjB,WAAWsD,SAASrD,OAAOC,KAAKoD,KAAK,EAAEnD,SAAS;AACtDihB,wBAAgBvxB,MAAIgP,aAAWmB,WAAWsD,QAAQvP,MAAS;AAC3DwT,sBAAc7I,mBAAmBukB,cAAY,GAAGjjB,WAAW,mBAAmBjM,MAAS;AAAA,MAC3F;AAAA,IACJ;AAEA,UAAMsvB,sBAAsBA,MAAM;AAC9BvB,+BAAyB/tB,MAAS;AAClCke,6BAAuBle,MAAS;AAAA,IACpC;AAEA,UAAM+kB,gBAAgBnL,uBAAuBwT,mBAAmB3f,SAAS0K,aAAaiV,kBAAkB3f,QAAQ0K,WAAWyB,mBAAmB,IAAI5Z;AAElJ,UAAMuvB,kBAAkBrwB,QAAQ4a,oBAAoB9Z,UAAad,OAAO4a,gBAAgB1N,WAAW;AAEnG,UAAMojB,sBAAuBtwB,OAAO4a,kBAC9B5a,OAAO4a,kBACP5N,OAAOC,KAAKjN,OAAOiZ,UAAU;AAEnC,UAAMsX,QAAQ5b,MAAAA,QAAQ,MAAM3U,OAAOwwB,WAAWlC,UAAUA,QAAQtuB,OAAOwwB,OAAO,IAAI,MAAM,CAAClC,SAAStuB,OAAOwwB,OAAO,CAAC;AAEjH,UAAM7V,kBAAkBA,CAAC5O,eAAqBH,gBAAuB;AACjEwE,cAAQmf,MAAM,qCAAqC;AAAA,QAC/CxjB,aAAAA;AAAAA,QACAH,WAAAA;AAAAA,MAAAA,CACH;AACDijB,+BAAyByB,oBAAoB/T,QAAQxQ,aAAW,CAAC;AACjEiT,6BAAuBjT,aAAW;AAClCmT,mCAA6BtT,WAAS;AAAA,IAC1C;AAEA,UAAM6kB,OACFrxB,2BAAAA,KAAC,OAAA,EAAI,WAAW,+DACZ,UAAA;AAAA,MAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWxB,GAAAA,IACZ,qCACA,6BACA,kDACA,CAAC+wB,YAAY,cAAcpQ,GAAAA,kBAC/B,GAEI,UAAA;AAAA,QAAAnf,2BAAAA,KAAC,OAAA,EAAI,WAAU,aAEX,UAAA;AAAA,UAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBAEX,UAAA;AAAA,YAAAZ,2BAAAA,IAAC0E,OAAAA,OAAA,EACG,MAAM,QACN,IAAIC,GAAAA,oBACJ,WAAW,MACX,WAAU,SACV,gBAAe,yBACf,aAAa,mBACb,MAAM,SACN,UAAQ,MACR,OAAOZ,QAAQnC,QAAQrD,IAAI,EAAA,CAAE;AAAA,YAEhCwzB,yCACItyB,eAAA,EAAW,SAAS,SACT,WAAW,QACX,OAAO,aAAY,UAAA;AAAA,cAAA;AAAA,cACfsyB,MAAMG;AAAAA,YAAAA,EAAAA,CACtB;AAAA,UAAA,GACR;AAAA,UAECrC,aAAa7vB,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACxB6vB,UAAAA,WACL;AAAA,UAEAjvB,2BAAAA,KAAC,OAAA,EAAI,WAAU,iCACX,UAAA;AAAA,YAAAZ,2BAAAA,IAACE,GAAAA,WAAQ,OAAO,oCACP,SAAS,MACd,UAAAF,2BAAAA,IAAC2D,GAAAA,cACG,SAAS,UACT,UAAU6sB,qBACV,SAAS,MAAMD,kBAAkB,IAAI,GACrC,UAAAvwB,2BAAAA,IAACmyB,GAAAA,UAAA,EAAQ,GACb,EAAA,CACJ;AAAA,YACCrB,2BAA2B9wB,2BAAAA,IAACE,GAAAA,SAAA,EAAQ,OAAO,oCACP,SAAS,MAC1C,UAAAF,2BAAAA,IAAC2D,GAAAA,YAAA,EACG,SAAS,UACT,UAAU6sB,qBACV,SAASM,yBACRN,UAAAA,sBAAsBxwB,2BAAAA,IAACwR,GAAAA,kBAAA,EAAiB,MAAM,SAAQ,IAAKxR,2BAAAA,IAACyR,GAAAA,eAAA,CAAA,CAAa,EAAA,CAC9E,EAAA,CACJ;AAAA,YACAzR,2BAAAA,IAACE,GAAAA,WAAQ,OAAO,oBACP,SAAS,MACd,UAAAF,2BAAAA,IAACuR,GAAAA,UACG,SAAS,YACT,OAAO,WACP,SAAS,MAAMof,yBAAyB,IAAI,GAC5C,UAAA3wB,+BAACuhB,GAAAA,SAAA,CAAA,CAAO,GACZ,EAAA,CACJ;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,GACJ;AAAA,QAEAvhB,2BAAAA,IAAC6b,KAAAA,eAAA,EACG,UAAA7b,2BAAAA,IAAC,cAAA,EACG,WAAW,QACX,sBACA,qBAAqBkc,sBAAsB5O,UAAU4O,qBAAqBuE,yBAAyB,IAAIne,QACvG,YAAYd,OAAOiZ,YACnB,kBAAkBjZ,OAAO8a,kBACzB,iBAAiBwV,qBACjB,iBACA,gBACA,kBAAkB9wB,kBAAkBigB,iBAAiB3e,QACrD,oBACA,QAAe,GACvB;AAAA,uCAECiP,GAAAA,QAAA,EAAO,WAAW,eACX,OAAM,WACN,SAAS,YACT,MAAM,SACN,SAAS,MAAMof,yBAAyB,IAAI,GAC5C,WAAW3wB,+BAACuhB,GAAAA,SAAA,CAAA,IAAU,UAAA,mBAAA,CAE9B;AAAA,MAAA,GACJ;AAAA,MAEC,CAAC4O,YACEnwB,2BAAAA,IAAC,OAAA,EAAI,WAAW,qFACZ,UAAAY,2BAAAA,KAAC,OAAA,EACG,WAAU,+DAETsgB,UAAAA;AAAAA,QAAAA,0BACGC,oBACA,CAAC/G,uBAAkB+G,gBAAgB,oCAClC,cAAA,EACG,SAAS,OAET,kBAAkB,CAACngB,iBACnB,cAAc,OACd,oBAAoB,CAACA,iBACrB,oBAAoB,OACpB,aAAakb,qBACb,mBAAmBuE,2BACnB,UAAUU,kBACV,mBACA,UAAUF,gBACV,SAAS0Q,yBACT,iBAAiBjuB,YACjB,eACA,SACA,iBACA,mBAAA,GAfK,aAAa0sB,qBAAqB,EAeA;AAAA,QAG9C,CAACjP,oBACEvgB,2BAAAA,KAAC,OAAA,EAAI,WAAW,iEACZ,UAAA;AAAA,UAAAZ,2BAAAA,IAACP,GAAAA,cAAW,SAAS,SAAS,WAAU,IACnCoyB,UAAAA,kBACK,wCACA,+BAAA,CACV;AAAA,UACAjxB,2BAAAA,KAAC2Q,GAAAA,QAAA,EAAO,SAAS,YACT,OAAO,WACP,SAAS,MAAMof,yBAAyB,IAAI,GAEhD,UAAA;AAAA,YAAA3wB,2BAAAA,IAACuhB,GAAAA,SAAA,EAAO;AAAA,YAAA;AAAA,UAAA,EAAA,CAEZ;AAAA,QAAA,GACJ;AAAA,QAEHJ,oBAAoB/G,KAAAA,kBAAkB+G,gBAAgB,KACnDnhB,2BAAAA,IAACP,GAAAA,cAAW,SAAS,SAAS,WAAU,oCACnC,UAAA,yDAAA,CACL;AAAA,MAAA,EAAA,CACR,EAAA,CACJ;AAAA,MAEH0wB,YAAYnwB,2BAAAA,IAAC,oBAAA,EACV,SAAS,OACT,MAAMowB,0BAA0B9tB,QAEhC,cAAc,CAAC6e,kBACf,oBAAoB,CAACngB,iBACrB,kBAAkB,MAClB,oBAAoB,OACpB,aAAakb,qBACb,mBAAmBuE,2BACnB,UAAUU,kBACV,mBACA,UAAUF,gBACV,SAAS0Q,yBACT,iBAAiBjuB,YACjB,eACA,SACA,iBACA,oBACA,UAAUkuB,qBACV,aAAazB,WACPyB,sBACAtvB,UAnBD,aAAa8tB,qBAAqB,EAoBtC;AAAA,IAAA,GAET;AAEJ,WAAQxvB,2BAAAA,KAAA8R,qBAAA,EAECuf,UAAAA;AAAAA,MAAAA;AAAAA,MAGDjyB,2BAAAA,IAAC,oBAAA,EACG,SAAS,OACT,kBAAkB,OAClB,oBAAoB,MACpB,cAAc,MACd,iBAAiB0D,YACjB,MAAMgtB,uBACN,UAAU,MAAMC,yBAAyB,KAAK,GAC9C,mBAAmB/P,mBACnB,SACA,oBAAoB,CAAC5f,iBACrB,iBACA,oBACA,sBAAsBQ,OAAO4a,gBAAAA,CAA4B;AAAA,MAE7Dpc,2BAAAA,IAAC6b,KAAAA,eAAA,EACG,UAAA7b,2BAAAA,IAAC,eAAA,EACG,YAAYwB,QACZ,MAAM8uB,gBACN,cAAcC,kBAAAA,CAAkB,EAAA,CACxC;AAAA,IAAA,GACJ;AAAA,EAER;AC3eO,WAAA6B,qBAAAvzB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA8B,UAAA;AAAA,MAAAiU;AAAAA,MAAAqf;AAAAA,MAAAC;AAAAA,MAAAL;AAAAA,MAAAM;AAAAA,IAAAA,IAAA1zB;AAM4B,QAAAM;AAAA,QAAAL,EAAA,CAAA,MAAAwzB,gBAAAxzB,SAAAuzB,UAAA;AAKvClzB,WAAAgU,CAAAA,WAAUH,SAAOsf,aAAAA,IAAiBD,SAAAA;AAAUvzB,aAAAwzB;AAAAxzB,aAAAuzB;AAAAvzB,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAK5C,UAAAO,KAAAkzB,SAAS;AAAiB,QAAAjzB;AAAA,QAAAR,SAAAO,IAAA;AAAxCC,WAAAU,2BAAAA,IAACoT,GAAAA,eAAa/T,UAAAA,GAAAA,CAA2B;AAAcP,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,SAAAmzB,MAAA;AAElDvyB,WAAAuyB,QAAQjyB,2BAAAA,IAACP,GAAAA,YAAA,EACLwyB,UAAAA,MACL;AAAanzB,aAAAmzB;AAAAnzB,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACbG,0CAACF,GAAAA,cAAW,UAAA,gBAAA,CAEZ;AAAaX,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAAY,IAAA;AANjBE,WAAAgB,2BAAAA,KAACyS,GAAAA,eAAA,EAAyB,WAAA,QACrB3T,UAAAA;AAAAA,QAAAA;AAAAA,QAGDC;AAAAA,MAAAA,GAIJ;AAAgBb,aAAAY;AAAAZ,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAAwzB,cAAA;AAGZzyB,WAAAG,2BAAAA,IAACuR,GAAAA,QAAA,EAAe,SAAA,QACD,OAAA,WACE+gB,SAAAA,cAAc,WAAA,MAAU,UAAA,WAAA,CAAQ;AAASxzB,cAAAwzB;AAAAxzB,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,UAAAuzB,UAAA;AAC1DvyB,0CAACyR,GAAAA,QAAA,EACU,OAAA,WACE8gB,mBAAU,UAAA,QAAI;AAASvzB,cAAAuzB;AAAAvzB,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAe,MAAAf,UAAAgB,IAAA;AANxCG,2CAACqT,kBAAA,EACGzT,UAAAA;AAAAA,QAAAA;AAAAA,QAGAC;AAAAA,MAAAA,GAGJ;AAAgBhB,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAkU,QAAAlU,EAAA,EAAA,MAAAK,MAAAL,EAAA,EAAA,MAAAQ,MAAAR,EAAA,EAAA,MAAAc,MAAAd,UAAAmB,IAAA;AAzBpBG,YAAAQ,2BAAAA,KAAC4L,aACSwG,MACQ,cAAA7T,IACE,mBAAA,sBACC,oBAAA,4BAGjBG,UAAAA;AAAAA,QAAAA;AAAAA,QACAM;AAAAA,QAUAK;AAAAA,MAAAA,GAQJ;AAASnB,cAAAkU;AAAAlU,cAAAK;AAAAL,cAAAQ;AAAAR,cAAAc;AAAAd,cAAAmB;AAAAnB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,WA1BTsB;AAAAA,EA0BS;AC1CV,WAAAoyB,8BAAA3zB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAuC,UAAA;AAAA,MAAAiU;AAAAA,MAAAC;AAAAA,IAAAA,IAAApU;AAI1C,UAAA;AAAA,MAAA4zB;AAAAA,IAAAA,IAEIpX,gCAAAA;AAA6B,QAAAlc;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAK7BL,0CAACiU,GAAAA,eAAY,UAAA,qBAAA,CAAkB;AAActU,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,EAAA,CAAA,MAAA2zB,eAAA3zB,SAAAmU,SAAA;AAExC5T,WAAAozB,aAAW5pB,IAAA6pB,CAAAA,SACD9xB,2BAAAA,KAAC2Q,GAAAA,UAEK,SAAA,MAAM0B,QAAQyf,KAAI/X,GAAI,GAC/B,WAAA,MACS,SAAA,QAER+X,UAAAA;AAAAA,QAAAA,KAAIn0B;AAAAA,QAAM;AAAA,QAAGm0B,KAAI/X;AAAAA,QAAK;AAAA,MAAA,KALlB+X,KAAI/X,GAMb,CAAS;AACX7b,aAAA2zB;AAAA3zB,aAAAmU;AAAAnU,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAA2zB,aAAA;AACDnzB,YAACmzB,eAAW,IAAM/jB,gBACf1O,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,SAAS,UAAA,6GAAA,CAG9B;AAAaX,aAAA2zB;AAAA3zB,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,IAAA;AAfrBI,WAAAkB,2BAAAA,KAACyS,GAAAA,eAAA,EAAyB,WAAA,uBACrBhU,UAAAA;AAAAA,QAAAA;AAAAA,QAUAC;AAAAA,MAAAA,GAML;AAAgBR,aAAAO;AAAAP,aAAAQ;AAAAR,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,SAAAmU,SAAA;AAChBtT,WAAAK,2BAAAA,IAACsT,kBAAA,EACG,UAAAtT,+BAACuR,GAAAA,QAAA,EAAgB,SAAA,YACF,OAAA,WACE,SAAA,MAAM0B,QAAAA,GAAW,oBAAM,GAC5C;AAAgBnU,aAAAmU;AAAAnU,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAkU,QAAAlU,UAAAY,MAAAZ,EAAA,EAAA,MAAAa,IAAA;AA1BbC,WAAAgB,2BAAAA,KAAC4L,WAAA,EACM,UAAA,MACJwG,MACN7T,UAAAA;AAAAA,QAAAA;AAAAA,QACAO;AAAAA,QAkBAC;AAAAA,MAAAA,GAKJ;AAASb,cAAAkU;AAAAlU,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,WA3BFc;AAAAA,EA2BE;ACRN,WAAA+yB,sBAAA9zB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,GAAA;AAA+B,UAAA;AAAA,MAAAulB;AAAAA,MAAAsO;AAAAA,MAAAC;AAAAA,MAAA/C;AAAAA,MAAAgD;AAAAA,IAAAA,IAAAj0B;AAgBlC,UAAA;AAAA,MAAA4zB,aAAAM;AAAAA,IAAAA,IAA4C1X,gCAAAA;AAE5C,UAAA,CAAA2X,uBAAAC,wBAAA,IAA0D3xB,MAAAY,SAAAA;AAC1D,UAAA,CAAAgxB,yBAAAC,0BAAA,IAA8D7xB,MAAAY,cAA6B;AAC3F,UAAA,CAAAkxB,cAAAC,eAAA,IAAwC/xB,MAAAY,SAAAA;AAExC,UAAA,CAAAoxB,eAAAC,gBAAA,IAA0CjyB,MAAAY,SAAAA;AAK1C,UAAA;AAAA,MAAAV;AAAAA,MAAAC;AAAAA,IAAAA,IAGIM,iBAAAA;AAA8B,QAAA5C;AAAA,QAAAL,EAAA,CAAA,MAAAwlB,WAAAkL,gBAAA;AAE6CrwB,WAAAmlB,WAAUkL,kBAAA,CAAA;AAAqB1wB,QAAA,CAAA,IAAAwlB,WAAAkL;AAAA1wB,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAA9G,UAAA,CAAA0wB,gBAAAgE,iBAAA,IAA4ClyB,MAAAY,SAAmC/C,EAA+B;AAAE,QAAA2Y;AAAA,QAAAC;AAAA,QAAA0b;AAAA,QAAAC;AAAA,QAAAtzB;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAjB;AAAA,QAAAC;AAAA,QAAAI;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAG;AAAA,QAAAnB,EAAA,CAAA,MAAAwlB,WAAAmO,eAAA3zB,EAAA,CAAA,MAAAi0B,sBAAAj0B,EAAA,CAAA,MAAA0wB,kBAAA1wB,EAAA,CAAA,MAAA0C,OAAAixB,eAAA3zB,EAAA,CAAA,MAAA0C,OAAAjD,MAAA;AAChH,YAAAo1B,sBAA4BnyB,OAAMixB,aAAAvvB,OAAA+F,OAAA,EAAAJ,IAAApC,CAAAA,QACpBmtB,KAAAA,kBAAkB/vB,KAAGkvB,kBAAkB,CAAC,EAAA7vB,OAAAa,OAAA,KACZ,CAAA;AAC1C,YAAA8vB,uBAA6BvP,WAAUmO,aAAAvvB,OAAA4F,QAAA,KAAsE,CAAA;AAC7G,YAAAgrB,mBAAyBH,oBAAmBjlB,SAAUmlB,qBAAoBnlB;AAGtDpO,YAAA;AACXozB,WAAAhnB,GAAAA;AAAoBtM,YAAA;AAAkBC,YAAA;AACnBP,WAAA;AAAuB,UAAAS;AAAA,UAAAzB,EAAA,EAAA,MAAA0C,OAAAjD,MAAA;AAG/BgC,eAAAK,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,MAAM,UAAA;AAAA,UAAA;AAAA,UACJ+B,OAAMjD;AAAAA,QAAAA,GAC7B;AAAaO,UAAA,EAAA,IAAA0C,OAAAjD;AAAAO,gBAAAyB;AAAAA,MAAA,OAAA;AAAAA,eAAAzB,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA0B;AAAA,UAAA1B,UAAA0wB,gBAAA;AAGRhvB,eAAAgvB,kBAAkBA,eAAc9gB,SAAA,oCAAgBqlB,GAAAA,OAAA,EAC7C,UAAA/zB,+BAACg0B,GAAAA,WAAA,EACIxE,UAAAA,eAAc3mB,IAAAorB,CAAAA,kBACXrzB,2BAAAA,KAACszB,aAAA,EACkB,eAAMX,iBAAgB;AAAA,UAAAvyB,iBAAA;AAAA,UAAAmzB,oBAEPF,cAAa71B;AAAAA,QAAAA,CACpC,GACP,UAAA;AAAA,UAAA4B,2BAAAA,IAACo0B,GAAAA,WAAA,EACS,OAAA,QACN,UAAAp0B,2BAAAA,IAACP,eAAA,EAAoB,SAAA,aAAwB,WAAA,aACxCw0B,UAAAA,cAAa11B,KAAAA,CAClB,GACJ;AAAA,UACAyB,+BAACo0B,GAAAA,WAAA,EACS,OAAA,SACN,yCAACl0B,YAAA,EAAe,OAAA,UACE,SAAA,MACd,UAAAF,2BAAAA,IAAC2D,GAAAA,YAAA,EAAgB,MAAA,SACI,SAAAyV,CAAAA,QAAA;AACLvV,gBAACmV,eAAAA;AACDnV,gBAACoV,gBAAAA;AACDga,qCAAyBgB,cAAa71B,EAAG;AAAA,UAAC,GAExC,OAAA,WACd,UAAA4B,2BAAAA,IAACsqB,GAAAA,cAAiB,MAAA,QAAA,IACtB,EAAA,CACJ,EAAA,CACJ;AAAA,QAAA,EAAA,GAzBW2J,cAAaz1B,IA0B5B,CACH,EAAA,CACL,EAAA,CACJ;AAAQM,gBAAA0wB;AAAA1wB,gBAAA0B;AAAAA,MAAA,OAAA;AAAAA,eAAA1B,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA4B;AAAA,UAAA5B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGKkB,eAAAA,MAAA;AACL6yB,2BAAgB;AAAA,YAAAvyB,iBAAA;AAAA,UAAA,CAEf;AAAA,QAAC;AACLlC,gBAAA4B;AAAAA,MAAA,OAAA;AAAAA,eAAA5B,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA6B;AAAA,UAAA7B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AALLmB,eAAAX,2BAAAA,IAACuR,GAAAA,QAAA,EACY,SAAA7Q,MAKA,SAAA,QACE,WAAAV,2BAAAA,IAACuhB,GAAAA,SAAA,CAAA,CAAO,GAAI,UAAA,oBAAA,CAE3B;AAASziB,gBAAA6B;AAAAA,MAAA,OAAA;AAAAA,eAAA7B,EAAA,EAAA;AAAA,MAAA;AAAA,UAAA+B;AAAA,UAAA/B,UAAA0B,MAAA;AA5CbK,eAAAD,2BAAAA,KAAC+Q,GAAAA,OAAA,EAAiB,WAAA,kCACbnR,UAAAA;AAAAA,UAAAA;AAAAA,UAkCDG;AAAAA,QAAAA,GAWJ;AAAQ7B,gBAAA0B;AAAA1B,gBAAA+B;AAAAA,MAAA,OAAA;AAAAA,eAAA/B,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,EAAA,MAAAyB,QAAAzB,UAAA+B,MAAA;AAnDZZ,aAAAW,2BAAAA,KAAA,OAAA,EAAgB,WAAA,6CACZL,UAAAA;AAAAA,UAAAA;AAAAA,UAIAM;AAAAA,QAAAA,GAgDJ;AAAM/B,gBAAAyB;AAAAzB,gBAAA+B;AAAA/B,gBAAAmB;AAAAA,MAAA,OAAA;AAAAA,aAAAnB,EAAA,EAAA;AAAA,MAAA;AAEUa,WAAA;AAA4C,UAAAb,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACxDI,aAAAI,2BAAAA,IAACP,eAAA,EAAoB,SAAA,MAAM,UAAA,gBAE3B;AAAaX,gBAAAc;AAAAA,MAAA,OAAA;AAAAA,aAAAd,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,UAAAg1B,kBAAA;AAEZj0B,aAAAi0B,qBAAgB,KACb9zB,2BAAAA,IAACq0B,GAAAA,OAAA,EAAc,QAAAr0B,2BAAAA,IAACuR,GAAAA,QAAA,EAAe,SAAA,QACF,MAAA,SACA,MAAA,4CACK,WAAA,KACP,KAAA,uBACG,QAAA,UAAS,UAAA,YAAA,CAAS,GAAW,UAAA,+DAAA,CAE3D;AAAQzS,gBAAAg1B;AAAAh1B,gBAAAe;AAAAA,MAAA,OAAA;AAAAA,aAAAf,EAAA,EAAA;AAAA,MAAA;AAIP20B,WAAA9hB,GAAAA;AAAiBjS,WAAA;AACbqY,WAAAgc,GAAAA;AACIjc,WAAAkc,GAAAA;AAAS,UAAAlzB;AAAA,UAAAhC,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACmBsB,eAAA4xB,CAAAA,SACrB9xB,2BAAAA,KAACszB,GAAAA,UAAA,EACG,UAAA;AAAA,UAAAl0B,2BAAAA,IAACo0B,GAAAA,WAAA,EACS,OAAA,QACN,UAAAp0B,2BAAAA,IAACP,eAAA,EAAoB,SAAA,aAAwB,WAAA,aACxCizB,UAAAA,KAAIn0B,KAAAA,CACT,GACJ;AAAA,UACAyB,+BAACo0B,GAAAA,WAAA,EACS,OAAA,SACN,yCAACl0B,YAAA,EAAe,OAAA,UACE,SAAA,MACd,UAAAF,2BAAAA,IAAC2D,GAAAA,YAAA,EAAgB,MAAA,SACI,SAAA8V,CAAAA,QAAA;AACL5V,gBAACmV,eAAAA;AACDnV,gBAACoV,gBAAAA;AACDoa,4BAAgBX,KAAI/X,GAAI;AAAA,UAAC,GAEvB,OAAA,WACd,UAAA3a,2BAAAA,IAACsqB,GAAAA,cAAiB,MAAA,QAAA,IACtB,EAAA,CACJ,EAAA,CACJ;AAAA,QAAA,EAAA,GArBWoI,KAAI/X,GAsBnB;AACH7b,gBAAAgC;AAAAA,MAAA,OAAA;AAAAA,eAAAhC,EAAA,EAAA;AAAA,MAAA;AAxBAO,WAAAs0B,oBAAmB9qB,IAAK/H,IAwBxB;AACAxB,WAAAu0B,qBAAoBhrB,IAAA+B,QAapB;AAAC9L,QAAA,CAAA,IAAAwlB,WAAAmO;AAAA3zB,aAAAi0B;AAAAj0B,aAAA0wB;AAAA1wB,QAAA,CAAA,IAAA0C,OAAAixB;AAAA3zB,QAAA,CAAA,IAAA0C,OAAAjD;AAAAO,aAAAgZ;AAAAhZ,aAAAiZ;AAAAjZ,aAAA20B;AAAA30B,cAAA40B;AAAA50B,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAAO;AAAAP,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAA6X,WAAAhZ,EAAA,CAAA;AAAAiZ,WAAAjZ,EAAA,CAAA;AAAA20B,WAAA30B,EAAA,CAAA;AAAA40B,WAAA50B,EAAA,EAAA;AAAAsB,YAAAtB,EAAA,EAAA;AAAAuB,YAAAvB,EAAA,EAAA;AAAAwB,YAAAxB,EAAA,EAAA;AAAAO,WAAAP,EAAA,EAAA;AAAAQ,WAAAR,EAAA,EAAA;AAAAY,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAAc,WAAAd,EAAA,EAAA;AAAAe,WAAAf,EAAA,EAAA;AAAAgB,WAAAhB,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAgZ,MAAAhZ,UAAAO,MAAAP,EAAA,EAAA,MAAAQ,IAAA;AAvCNiB,4CAAC,IAAA,EACIlB,UAAAA;AAAAA,QAAAA;AAAAA,QAyBAC;AAAAA,MAAAA,GAcL;AAAYR,cAAAgZ;AAAAhZ,cAAAO;AAAAP,cAAAQ;AAAAR,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAiZ,MAAAjZ,UAAAyB,KAAA;AAzChBC,YAAAR,2BAAAA,IAAC,MACGO,UAAAA,IAAAA,CAyCJ;AAAQzB,cAAAiZ;AAAAjZ,cAAAyB;AAAAzB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGKkB,YAAAA,MAAA;AACLyyB,uCAA+B;AAAA,MAAC;AACnCr0B,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAHLmB,YAAAX,2BAAAA,IAACuR,GAAAA,QAAA,EACY,SAAA7Q,KAGA,SAAA,QACE,WAAAV,2BAAAA,IAACuhB,GAAAA,SAAA,CAAA,CAAO,GAAI,UAAA,yBAAA,CAE3B;AAASziB,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAA20B,MAAA30B,UAAA0B,OAAA1B,EAAA,EAAA,MAAAY,IAAA;AArDhBmB,kEACG,UAAAD,gCAAC,IAAA,EAAiB,WAAAlB,IACdc,UAAAA;AAAAA,QAAAA;AAAAA,QA4CAG;AAAAA,MAAAA,EAAAA,CAQJ,EAAA,CAAQ;AAET7B,cAAA20B;AAAA30B,cAAA0B;AAAA1B,cAAAY;AAAAZ,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAA+B,OAAA/B,EAAA,EAAA,MAAAa,MAAAb,EAAA,EAAA,MAAAc,MAAAd,UAAAe,IAAA;AAxEPiB,qDAAgB,WAAAnB,IACZC,UAAAA;AAAAA,QAAAA;AAAAA,QAICC;AAAAA,QAWAgB;AAAAA,MAAAA,GA2DL;AAAM/B,cAAA+B;AAAA/B,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAAgC,OAAAhC,UAAAgB,MAAAhB,EAAA,EAAA,MAAAmB,IAAA;AApIV+D,YAAApD,2BAAAA,KAAA,OAAA,EAAgB,WAAAd,IAEZG,UAAAA;AAAAA,QAAAA;AAAAA,QAuDAa;AAAAA,MAAAA,GA6EJ;AAAMhC,cAAAgC;AAAAhC,cAAAgB;AAAAhB,cAAAmB;AAAAnB,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,EAAA,EAAA,MAAA40B,MAAA50B,EAAA,EAAA,MAAAsB,OAAAtB,EAAA,EAAA,MAAAuB,OAAAvB,UAAAkF,KAAA;AAvIVE,2CAAC,IAAA,EAAoB,UAAA9D,KAAkB,WAAAC,KACnC2D,UAAAA,KAuIJ;AAAYlF,cAAA40B;AAAA50B,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAkF;AAAAlF,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqF;AAAA,QAAArF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEZ2E,YAAAnE,2BAAAA,IAAA,SAAY,OAAA;AAAA,QAAAiM,QAAU;AAAA,MAAA,GAAQ;AAAGnN,cAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsF;AAAA,QAAAtF,UAAAwlB,WAAAlmB,MAAAU,UAAA8zB,oBAAA9zB,EAAA,EAAA,MAAAg0B,uBAAAh0B,EAAA,EAAA,MAAAk0B,yBAAAl0B,UAAA0wB,gBAAA;AAEhCprB,YAAA4uB,wDACIzI,yBAAA,EAAyB,MAAAxmB,QAAQivB,qBAAqB,GACzB,UAAA,MAAA;AACA,cAAA9O,QAAA;AAAA,UAAA9lB,IACQ40B;AAAAA,UAAqBF,yBACCA,uBAAmB,CAAA,GAASxO,WAAUlmB,EAAA;AAAA,QAAA;AAEpEwT,gBAAAmf,MAAc,0BAA0B7M,KAAK;AAC7C0O,yBAAgB0B,iBAAkBpQ,KAAK,EAAC7T,KAAA,MAAA;AACpC4iB,mCAAwB3wB,MAAU;AAClCkxB,4BAAkBhE,gBAActsB,OAAAqxB,CAAAA,QAAc1wB,IAACzF,OAAQ40B,qBAAqB,CAAC;AAAA,QAAC,CACjF;AAAA,MAAC,GAEF,UAAA,MAAMC,yBAAwB3wB,MAAU,GAC3C,OAAAtC,+BAAA0S,WAAAA,UAAA,EAAE,UAAA,6BAAA,CAA0B,GAC7B,MAAA9R,2BAAAA,KAAA8R,WAAAA,UAAA,EAAE,UAAA;AAAA,QAAA;AAAA,QAAW1S,2BAAAA,IAAA,OAAG,UAAA,sBAAA,CACG;AAAA,QAAI;AAAA,MAAA,EAAA,CACM,EAAA,CAAG;AAAGlB,QAAA,EAAA,IAAAwlB,WAAAlmB;AAAAU,cAAA8zB;AAAA9zB,cAAAg0B;AAAAh0B,cAAAk0B;AAAAl0B,cAAA0wB;AAAA1wB,cAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAxF,EAAA,EAAA,MAAA2C,iBAAA3C,EAAA,EAAA,MAAA0C,OAAAixB,eAAA3zB,EAAA,EAAA,MAAAs0B,cAAA;AAChE9uB,YAAA8uB,+CACI7I,yBAAA,EAAyB,MAAAxmB,QAAQqvB,YAAY,GAChB,UAAA,MAAA;AACA3xB,sBAAc,eAAeD,OAAMixB,aAAAvvB,OAAAsxB,CAAAA,QAA0B3wB,QAAMuvB,YAAY,CAAC;AAChFC,wBAAe/wB,MAAU;AAAA,MAAC,GAE1B,UAAA,MAAM+wB,gBAAe/wB,MAAU,GAClC,OAAAtC,+BAAA0S,WAAAA,UAAA,EAAE,UAAA,oBAAA,CAAiB,GACpB,MAAA9R,2BAAAA,KAAA8R,WAAAA,UAAA,EAAE,UAAA;AAAA,QAAA;AAAA,QAAU1S,2BAAAA,IAAA,OAAG,UAAA,sBAAA,CACI;AAAA,QAAI;AAAA,MAAA,EAAA,CACA,EAAA,CAAG;AAAGlB,cAAA2C;AAAA3C,QAAA,EAAA,IAAA0C,OAAAixB;AAAA3zB,cAAAs0B;AAAAt0B,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAGjD,UAAAyF,MAAAR,QAAQuvB,aAAa;AAAC,QAAA9uB;AAAA,QAAA1F,UAAAg0B,qBAAA;AAIHtuB,YAAAsuB,uBAAmB,CAAA;AAAMh0B,cAAAg0B;AAAAh0B,cAAA0F;AAAAA,IAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2F;AAAA,QAAA3F,UAAA0F,OAAA1F,EAAA,EAAA,MAAA0C,OAAApD,IAAA;AAA7BqG,YAAA,CAAA,GAAID,KAA2BhD,OAAMpD,EAAA;AAAIU,cAAA0F;AAAA1F,QAAA,EAAA,IAAA0C,OAAApD;AAAAU,cAAA2F;AAAAA,IAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8F;AAAA,QAAA9F,UAAA0wB,gBAAA;AAIjD5qB,YAAA6vB,CAAAA,sBAAA;AAAA,YACLA,qBAAiB,CAAKjF,eAAc3mB,IAAAyQ,MAAc,EAAClW,SAAUqxB,kBAAiBr2B,EAAG,GAAC;AAClFo1B,4BAAiB,CAAA,GAAKhE,gBAAgBiF,iBAAiB,CAAC;AAAA,QAAC;AAE7DlB,yBAAgBjxB,MAAU;AAAA,MAAC;AAC9BxD,cAAA0wB;AAAA1wB,cAAA8F;AAAAA,IAAA,OAAA;AAAAA,YAAA9F,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+F;AAAA,QAAA/F,EAAA,EAAA,MAAAwlB,cAAAxlB,EAAA,EAAA,MAAA+zB,uBAAA/zB,EAAA,EAAA,MAAA8zB,oBAAA9zB,EAAA,EAAA,MAAAw0B,iBAAAx0B,EAAA,EAAA,MAAAgxB,WAAAhxB,EAAA,EAAA,MAAAyF,OAAAzF,EAAA,EAAA,MAAA2F,OAAA3F,UAAA8F,KAAA;AAdLC,2CAAC,wBAAA,EACS,MAAAN,KACYquB,kBACAtO,8BACGuO,qBACA,qBAAApuB,KACJ,iBAAA,OAAK,GAClB6uB,eACKxD,SACI,aAAAlrB,KAKZ;AAAG9F,cAAAwlB;AAAAxlB,cAAA+zB;AAAA/zB,cAAA8zB;AAAA9zB,cAAAw0B;AAAAx0B,cAAAgxB;AAAAhxB,cAAAyF;AAAAzF,cAAA2F;AAAA3F,cAAA8F;AAAA9F,cAAA+F;AAAAA,IAAA,OAAA;AAAAA,YAAA/F,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgG;AAAA,QAAAhG,UAAA2C,iBAAA3C,EAAA,EAAA,MAAA0C,OAAAixB,aAAA;AAIK3tB,YAAA4vB,CAAAA,oBAAA;AAAA,YACDA,iBAAe;AACfjzB,wBAAc,eAAa,CAAA,GAAOD,OAAMixB,eAAA,CAAA,GAAqBiC,eAAe,CAAC;AAAA,QAAC;AAElFvB,wCAAgC;AAAA,MAAC;AACpCr0B,cAAA2C;AAAA3C,QAAA,EAAA,IAAA0C,OAAAixB;AAAA3zB,cAAAgG;AAAAA,IAAA,OAAA;AAAAA,YAAAhG,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiG;AAAA,QAAAjG,EAAA,EAAA,MAAAo0B,2BAAAp0B,UAAAgG,KAAA;AAPLC,YAAA/E,2BAAAA,IAAC,+BAAA,EACSkzB,MAAAA,yBACG,SAAApuB,KAKR;AAAGhG,cAAAo0B;AAAAp0B,cAAAgG;AAAAhG,cAAAiG;AAAAA,IAAA,OAAA;AAAAA,YAAAjG,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkG;AAAA,QAAAlG,UAAAwB,OAAAxB,EAAA,EAAA,MAAAoF,OAAApF,EAAA,EAAA,MAAAsF,OAAAtF,EAAA,GAAA,MAAAwF,OAAAxF,WAAA+F,OAAA/F,EAAA,GAAA,MAAAiG,KAAA;AAlMZC,YAAApE,2BAAAA,KAAA,OAAA,EAAgB,WAAAN,KACZ4D,UAAAA;AAAAA,QAAAA;AAAAA,QA0IAC;AAAAA,QAECC;AAAAA,QAkBAE;AAAAA,QAYDO;AAAAA,QAgBAE;AAAAA,MAAAA,GAQJ;AAAMjG,cAAAwB;AAAAxB,cAAAoF;AAAApF,cAAAsF;AAAAtF,eAAAwF;AAAAxF,eAAA+F;AAAA/F,eAAAiG;AAAAjG,eAAAkG;AAAAA,IAAA,OAAA;AAAAA,YAAAlG,EAAA,GAAA;AAAA,IAAA;AAAA,WAnMNkG;AAAAA,EAmMM;AA3OP,WAAAsU,OAAAqb,KAAA;AAAA,WA6N+D9wB,IAACzF;AAAAA,EAAA;AA7NhE,WAAAwM,SAAAgqB,QAAA;AAAA,WAiJqC50B,2BAAAA,IAACk0B,aAAA,EACG,UAAAtzB,2BAAAA,KAACwzB,GAAAA,WAAA,EACS,OAAA,QACN,UAAA;AAAA,MAAAp0B,+BAACP,GAAAA,cAAoB,SAAA,aAAwB,WAAA,aACxCizB,iBAAIn0B,MACT;AAAA,MACAqC,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,aAAa,UAAA;AAAA,QAAA;AAAA,QAEhDO,2BAAAA,IAAA,QAAA,EAAO0yB,UAAAA,OAAI/X,IAAAA,CAAK;AAAA,MAAA,EAAA,CACxB;AAAA,IAAA,GACJ,EAAA,GAVW+X,OAAI/X,GAWnB;AAAA,EAAW;AA5JhD,WAAA7R,SAAA3B,KAAA;AAAA,WAoC8D,OAAOtD,QAAM;AAAA,EAAQ;AApCnF,WAAAoF,QAAApF,GAAA;AAAA,WAiCyD,OAAOA,MAAM;AAAA,EAAQ;AC9D9E,QAAMgxB,6BAA+C;AAAA,IACxDz2B,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNgI,cAAc;AAAA,IACd4F,MAAM;AAAA,IACNhE,aAAa;AAAA,IACbsS,YAAYwW,KAAAA,uBAAuB;AAAA,MAC/B1yB,MAAM;AAAA,QACF8b,UAAU;AAAA,QACV9b,MAAM;AAAA,QACN4J,aAAa;AAAA,QACb0G,YAAY;AAAA,UACRvQ,UAAU;AAAA,QAAA;AAAA,MACd;AAAA,MAEJw2B,OAAO;AAAA,QACHza,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNsQ,YAAY;AAAA,UACRvQ,UAAU;AAAA,QAAA;AAAA,MACd;AAAA,MAEJ6J,aAAa;AAAA,QACTkS,UAAU;AAAA,QACV9b,MAAM;AAAA,QACN4J,aAAa;AAAA,QACb4d,UAAU;AAAA,MAAA;AAAA,MAEdgP,YAAY;AAAA,QACR1a,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNsnB,SAAS;AAAA,UACL1O,aAAa;AAAA,UACbH,eAAe,CAAC,SAAS;AAAA,QAAA;AAAA,QAE7B7O,aAAa;AAAA,MAAA;AAAA,MAEjB6sB,WAAW;AAAA,QACP3a,UAAU;AAAA,QACV9b,MAAM;AAAA,QACN02B,aAAa;AAAA,QACb9sB,aAAa;AAAA,MAAA;AAAA,MAEjB+sB,OAAO;AAAA,QACH7a,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNsQ,YAAY;AAAA,UACRsmB,iBAAiB;AAAA,UACjB1gB,KAAK;AAAA,QAAA;AAAA,MACT;AAAA,MAEJ2gB,QAAQ;AAAA,QACJ/a,UAAU;AAAA,QACV9b,MAAM;AAAA,QACN8mB,oBAAoB;AAAA,QACpB/K,IAAI;AAAA,UACAD,UAAU;AAAA,UACVwL,SAAS;AAAA,YACL1O,aAAa;AAAA,YACbH,eAAe,CAAC,SAAS;AAAA,UAAA;AAAA,QAC7B;AAAA,MACJ;AAAA,MAEJqe,kBAAkB;AAAA,QACdhb,UAAU;AAAA,QACV9b,MAAM;AAAA,QACN4J,aAAa;AAAA,QACbmS,IAAI;AAAA,UACAD,UAAU;AAAA,UACV7b,MAAM;AAAA,QAAA;AAAA,MACV;AAAA,MAEJ82B,UAAU;AAAA,QACN/2B,MAAM;AAAA,QACN4J,aAAa;AAAA,QACbkS,UAAU;AAAA,QACV8L,UAAU;AAAA,MAAA;AAAA,MAEdoP,UAAU;AAAA,QACNlb,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNi3B,WAAW;AAAA,MAAA;AAAA,IACf,CACH;AAAA,EACL;ACrFO,QAAMC,yBAA0C;AAAA,IACnDr3B,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNgI,cAAc;AAAA,IACd4F,MAAM;AAAA,IACNhE,aAAa;AAAA,IACbQ,aAAa;AAAA,IACb8R,YAAYwW,KAAAA,uBAAuB;AAAA,MAC/B1yB,MAAM;AAAA,QACFA,MAAM;AAAA,QACNsQ,YAAY;AAAA,UAAEvQ,UAAU;AAAA,QAAA;AAAA,QACxB+b,UAAU;AAAA,MAAA;AAAA,MAEdqb,cAAc;AAAA,QACVn3B,MAAM;AAAA,QACN8b,UAAU;AAAA,QACVwL,SAAS;AAAA,UACL1O,aAAa;AAAA,UACbH,eAAe,CAAC,SAAS;AAAA,UACzBse,UAAU;AAAA,YACNK,cAAc;AAAA,UAAA;AAAA,QAClB;AAAA,MACJ;AAAA,MAEJC,SAAS;AAAA,QACLr3B,MAAM;AAAA,QACN4J,aAAa;AAAA,QACb0G,YAAY;AAAA,UAAEvQ,UAAU;AAAA,QAAA;AAAA,QACxB+b,UAAU;AAAA,QACV0I,OAAO;AAAA,UACH8S,WAAW;AAAA,UACXC,YAAY;AAAA,UACZrb,YAAY;AAAA,YACRsb,MAAM;AAAA,cACF1b,UAAU;AAAA,cACV9b,MAAM;AAAA,cACNwnB,UAAU;AAAA,YAAA;AAAA,YAEdiQ,OAAO;AAAA,cACH3b,UAAU;AAAA,cACV9b,MAAM;AAAA,cACNunB,WAAW;AAAA,YAAA;AAAA,YAEfsP,QAAQ;AAAA,cACJ72B,MAAM;AAAA,cACN8b,UAAU;AAAA,cACVC,IAAI;AAAA,gBACAD,UAAU;AAAA,gBACVwL,SAAS;AAAA,kBACL1O,aAAa;AAAA,kBACbH,eAAe,CAAC,SAAS;AAAA,kBACzBse,UAAU;AAAA,oBACNK,cAAc;AAAA,kBAAA;AAAA,gBAClB;AAAA,cACJ;AAAA,cAEJxtB,aAAa;AAAA,YAAA;AAAA,YAEjB8tB,UAAU;AAAA,cACN13B,MAAM;AAAA,cACN8b,UAAU;AAAA,cACVC,IAAI;AAAA,gBACAD,UAAU;AAAA,gBACV7b,MAAM;AAAA,gBACN03B,mBAAmB,CAAC,QAAQ,YAAY;AAAA,cAAA;AAAA,YAC5C;AAAA,UACJ;AAAA,UAEJ9Z,iBAAiB,CAAC,QAAQ,SAAS,UAAU,UAAU;AAAA,QAAA;AAAA,MAC3D;AAAA,MAEJ+Z,YAAY;AAAA,QACR53B,MAAM;AAAA,QACN8b,UAAU;AAAA,QACVmb,WAAW;AAAA,MAAA;AAAA,MAEfY,QAAQ;AAAA,QACJ73B,MAAM;AAAA,QACNsQ,YAAY;AAAA,UAAEvQ,UAAU;AAAA,QAAA;AAAA,QACxB+b,UAAU;AAAA,QACVzM,YAAY;AAAA,UACRyoB,WAAW;AAAA,YACPj4B,IAAI;AAAA,YACJkQ,OAAO;AAAA,UAAA;AAAA,UAEXgoB,OAAO;AAAA,QAAA;AAAA,QAEXrgB,cAAc;AAAA,MAAA;AAAA,MAElBsgB,cAAc;AAAA,QACVh4B,MAAM;AAAA,QACN8b,UAAU;AAAA,QACVmc,WAAW;AAAA,MAAA;AAAA,MAEfC,UAAU;AAAA,QACNl4B,MAAM;AAAA,QACN8b,UAAU;AAAA,MAAA;AAAA,MAEdqc,MAAM;AAAA,QACFn4B,MAAM;AAAA,QACN4J,aAAa;AAAA,QACbkS,UAAU;AAAA,QACVC,IAAI;AAAA,UACAD,UAAU;AAAA,UACVsc,cAAc;AAAA,QAAA;AAAA,MAClB;AAAA,IACJ,CACH;AAAA,EACL;AC7GO,QAAMC,0BAA4C;AAAA,IACrDx4B,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNgI,cAAc;AAAA,IACd4B,aAAa;AAAA,IACbgE,MAAM;AAAA,IACNsO,YAAYwW,KAAAA,uBAAuB;AAAA,MAC/BiB,aAAa;AAAA,QACT3zB,MAAM;AAAA,QACN8b,UAAU;AAAA,MAAA;AAAA,MAEd2L,OAAO;AAAA,QACHznB,MAAM;AAAA,QACN8b,UAAU;AAAA,QACV2L,OAAO;AAAA,MAAA;AAAA,MAEX6Q,eAAe;AAAA,QACXt4B,MAAM;AAAA,QACN8b,UAAU;AAAA,MAAA;AAAA,MAEdyc,OAAO;AAAA,QACHv4B,MAAM;AAAA,QACN8b,UAAU;AAAA,MAAA;AAAA,MAEd0c,oBAAoB;AAAA,QAChBx4B,MAAM;AAAA,QACN8b,UAAU;AAAA,QACVC,IAAI;AAAA,UACAD,UAAU;AAAA,UACV7b,MAAM;AAAA,QAAA;AAAA,MACV;AAAA,MAEJw4B,UAAU;AAAA,QACNz4B,MAAM;AAAA,QACN8b,UAAU;AAAA,QACV4L,KAAK;AAAA,MAAA;AAAA,IACT,CACH;AAAA,EACL;ACvCO,QAAMgR,0BAA4C;AAAA,IACrD74B,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNgI,cAAc;AAAA,IACd4F,MAAM;AAAA,IACNhE,aAAa;AAAA,IACbsS,YAAY;AAAA,MACR8X,OAAO;AAAA,QACHlY,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNsQ,YAAY;AAAA,UAAEvQ,UAAU;AAAA,QAAA;AAAA,MAAK;AAAA,MAEjC44B,MAAM;AAAA,QACF7c,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNsQ,YAAY;AAAA,UACRvQ,UAAU;AAAA,UACV64B,QAAQ;AAAA,UACR5iB,SAAS;AAAA,UACT6iB,gBAAgB;AAAA,QAAA;AAAA,MACpB;AAAA,MAEJC,cAAc;AAAA,QACVhd,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNkc,YAAY;AAAA,UACR6c,UAAU;AAAA,YACNjd,UAAU;AAAA,YACV9b,MAAM;AAAA,YACNsQ,YAAY;AAAA,cAAEvQ,UAAU;AAAA,YAAA;AAAA,UAAK;AAAA,UAEjCi5B,SAAS;AAAA,YACLld,UAAU;AAAA,YACV9b,MAAM;AAAA,UAAA;AAAA,UAEVi5B,kBAAkB;AAAA,YACdnd,UAAU;AAAA,YACV9b,MAAM;AAAA,YACNsnB,SAAS;AAAA,cACL1O,aAAa;AAAA,cACbH,eAAe,CAAC,SAAS;AAAA,YAAA;AAAA,UAC7B;AAAA,UAEJygB,gBAAgB;AAAA,YACZpd,UAAU;AAAA,YACV9b,MAAM;AAAA,UAAA;AAAA,UAEVm5B,qBAAqB;AAAA,YACjBrd,UAAU;AAAA,YACV9b,MAAM;AAAA,YACN0nB,KAAK;AAAA,UAAA;AAAA,QACT;AAAA,MACJ;AAAA,MAEJ2P,SAAS;AAAA,QACLvb,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNwkB,OAAO;AAAA,UACHtI,YAAY;AAAA,YACRkd,SAAS;AAAA,cACLtd,UAAU;AAAA,cACV9b,MAAM;AAAA,cACNkc,YAAY;AAAA,gBACR8X,OAAO;AAAA,kBACHlY,UAAU;AAAA,kBACV9b,MAAM;AAAA,kBACNsQ,YAAY;AAAA,oBAAEvQ,UAAU;AAAA,kBAAA;AAAA,gBAAK;AAAA,gBAEjCs3B,SAAS;AAAA,kBACLvb,UAAU;AAAA,kBACV9b,MAAM;AAAA,kBACNwnB,UAAU;AAAA,gBAAA;AAAA,gBAEd6R,OAAO;AAAA,kBACHvd,UAAU;AAAA,kBACV9b,MAAM;AAAA,kBACNsnB,SAAS;AAAA,oBACL1O,aAAa;AAAA,oBACbH,eAAe,CAAC,SAAS;AAAA,kBAAA;AAAA,gBAC7B;AAAA,gBAEJ6gB,MAAM;AAAA,kBACFxd,UAAU;AAAA,kBACV9b,MAAM;AAAA,kBACN0nB,KAAK;AAAA,gBAAA;AAAA,cACT;AAAA,YACJ;AAAA,YAEJ2R,OAAO;AAAA,cACHvd,UAAU;AAAA,cACV9b,MAAM;AAAA,cACNsnB,SAAS;AAAA,gBACL1O,aAAa;AAAA,gBACbH,eAAe,CAAC,SAAS;AAAA,cAAA;AAAA,YAC7B;AAAA,YAEJ8gB,QAAQ;AAAA,cACJzd,UAAU;AAAA,cACV9b,MAAM;AAAA,cACN+b,IAAI;AAAA,gBACAD,UAAU;AAAA,gBACVI,YAAY;AAAA,kBACR8X,OAAO;AAAA,oBACHlY,UAAU;AAAA,oBACV9b,MAAM;AAAA,oBACNsQ,YAAY;AAAA,sBAAEvQ,UAAU;AAAA,oBAAA;AAAA,kBAAK;AAAA,kBAEjCs5B,OAAO;AAAA,oBACHvd,UAAU;AAAA,oBACVwL,SAAS;AAAA,sBACL1O,aAAa;AAAA,sBACbH,eAAe,CAAC,SAAS;AAAA,oBAAA;AAAA,kBAC7B;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,MAEJ+gB,SAAS;AAAA,QACL1d,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNkc,YAAY;AAAA,UACR8X,OAAO;AAAA,YACHlY,UAAU;AAAA,YACV9b,MAAM;AAAA,YACNsQ,YAAY;AAAA,cAAEvQ,UAAU;AAAA,YAAA;AAAA,UAAM;AAAA,UAElCs3B,SAAS;AAAA,YACLvb,UAAU;AAAA,YACV9b,MAAM;AAAA,YACNwnB,UAAU;AAAA,UAAA;AAAA,QACd;AAAA,MACJ;AAAA,MAEJiS,cAAc;AAAA,QACV3d,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNkc,YAAY;AAAA,UACRwd,YAAY;AAAA,YACR5d,UAAU;AAAA,YACV9b,MAAM;AAAA,UAAA;AAAA,UAEV25B,kBAAkB;AAAA,YACd7d,UAAU;AAAA,YACV9b,MAAM;AAAA,UAAA;AAAA,UAEV45B,gBAAgB;AAAA,YACZ9d,UAAU;AAAA,YACV9b,MAAM;AAAA,YACN+b,IAAI;AAAA,cACAD,UAAU;AAAA,YAAA;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,MAEJ+d,iBAAiB;AAAA,QACb/d,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNwnB,UAAU;AAAA,MAAA;AAAA,MAEdwQ,cAAc;AAAA,QACVlc,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNsQ,YAAY;AAAA,UAAEvQ,UAAU;AAAA,QAAA;AAAA,MAAK;AAAA,MAEjC+5B,cAAc;AAAA,QACVhe,UAAU;AAAA,QACV9b,MAAM;AAAA,QACNi3B,WAAW;AAAA,MAAA;AAAA,MAEf8C,cAAc;AAAA,QACVje,UAAU;AAAA,QACV9b,MAAM;AAAA,QACN02B,aAAa;AAAA,QACb9sB,aAAa;AAAA,MAAA;AAAA,IACjB;AAAA,EAER;AC1KO,WAAAowB,4BAAA15B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAqC,UAAA;AAAA,MAAAoC;AAAAA,MAAAq3B;AAAAA,MAAAC;AAAAA,IAAAA,IAAA55B;AAYxC,UAAA;AAAA,MAAA65B;AAAAA,IAAAA,IAA4Bj6B,8BAAAA;AAAgC,QAAAU;AAAA,QAAAL,SAAA45B,iBAAA;AAE/Bv5B,WAAAu5B,mBAAe,CAAA;AAAM55B,aAAA45B;AAAA55B,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAA25B,yBAAA;AAASp5B,WAAAs5B,OAAA,EAAOF,2BAAuB,CAAA,GAAMja,KAAAoa,CAAAA,MAAYA,EAAClkB,KAAAA,EAAO6Y,kBAAmBoL,EAACjkB,KAAAA,EAAO6Y,aAAc;AAACzuB,aAAA25B;AAAA35B,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA7J,UAAA+5B,sBAA6B15B,GAAqB+D,OAAS7D,EAAkG;AAE7J,UAAA;AAAA,MAAAoC;AAAAA,MAAAynB;AAAAA,IAAAA,IAKInnB,iBAAAA;AAGgB,UAAAzC,KAAA;AACX,UAAAwY,KAAApL,GAAAA;AAAoB,UAAAhN,KAAA;AAAkB,UAAAC,KAAA;AAAgC,QAAAC;AAAA,QAAAd,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEnEI,WAAAI,2BAAAA,IAAA,OAAA,EACc,WAAA,wCACV,UAAAA,+BAACP,GAAAA,YAAA,EAAoB,SAAA,MAAiB,WAAA,aAAa,UAAA,iBAAA,CAEnD,GACJ;AAAMX,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,SAAAqC,kBAAA;AAELtB,WAAAsB,mDAAqByC,GAAAA,MAAA,EAAkB,aAAA,cACpC,UAAAhD,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,QAAA;AAAA,QACDO,2BAAAA,IAAA,KAAA,EAAImB,UAAAA,iBAAgB5C,KAAAA,CAAM;AAAA,MAAA,EAAA,CACzD,EAAA,CACJ;AAAOO,aAAAqC;AAAArC,aAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,CAAA;AAAA,IAAA;AAEN,UAAAgB,MAAC+4B,uBAAmB,CAAA,GAAMnqB,SAAA,KAAgB9N,2BAAAA,KAAA,OAAA,EAAgB,WAAA,QAEvD,UAAA;AAAA,MAAAZ,+BAACP,GAAAA,YAAA,EAAoB,SAAA,WACF,OAAA,aAAa,UAAA,qDAEhC;AAAA,MACAO,2BAAAA,IAAA,OAAA,EAAgB,WAAA,4DAEX64B,+BAAmBhwB,IAAA,CAAAiwB,YAAAzqB,UAChBrO,2BAAAA,IAAC4D,GAAAA,MAAA,EACkB,aAAA,eACJ,SAAA,MAAA;AACLnC,sBAAc,QAAQihB,wBAAmBoW,UAAU,CAAC;AACpDr3B,sBAAc,MAAMq3B,UAAU;AAC9Br3B,sBAAc,QAAQq3B,UAAU;AAChCr3B,sBAAc,cAAYa,MAAW;AACrCk2B,mBAAAA;AAAAA,MAAY,GAEX,MAAA,SACNM,UAAAA,WAAAA,GAVMA,UAWX,CAAO,EAAA,CAGf;AAAA,IAAA,GAEJ;AAAM,QAAA74B;AAAA,QAAAnB,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGFS,0CAACR,GAAAA,YAAA,EAAoB,SAAA,WACF,OAAA,aAAa,UAAA,wBAEhC;AAAaX,aAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAKaY,2CAAC24B,GAAAA,MAAA,EAAW,MAAA,SACG,SAAAlE,2BAAA1oB,MAA0C;AAAGrN,aAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,CAAA,MAAA05B,cAAA15B,UAAAoqB,WAAA;AAHlF7oB,2CAAC,kBAAsB,OAAA,YACG,UAAA,0DACJ,MAAAD,KAEG,SAAA,MAAA;AACL8oB,kBAAS2L,0BAA2B;AACpC2D,mBAAAA;AAAAA,MAAY,GACf;AAAG15B,aAAA05B;AAAA15B,cAAAoqB;AAAApqB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGEc,2CAACy4B,GAAAA,MAAA,EAAW,MAAA,SAAkB,SAAAnC,wBAAAzqB,MAAuC;AAAGrN,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAA05B,cAAA15B,UAAAoqB,WAAA;AAF9F3oB,2CAAC,kBAAsB,OAAA,SACG,UAAA,sDACJ,MAAAD,KACG,SAAA,MAAA;AACL4oB,kBAAS0N,uBAAwB;AACjC4B,mBAAAA;AAAAA,MAAY,GACf;AAAG15B,cAAA05B;AAAA15B,cAAAoqB;AAAApqB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGEgB,2CAACu4B,GAAAA,MAAA,EAAW,MAAA,SAAkB,SAAAtD,uBAAAtpB,MAAsC;AAAGrN,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAA05B,cAAA15B,UAAAoqB,WAAA;AAF7FxoB,2CAAC,kBAAsB,OAAA,cACG,UAAA,uEACJ,MAAAF,KACG,SAAA,MAAA;AACL0oB,kBAASuM,sBAAuB;AAChC+C,mBAAAA;AAAAA,MAAY,GACf;AAAG15B,cAAA05B;AAAA15B,cAAAoqB;AAAApqB,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGEmB,2CAACo4B,GAAAA,MAAA,EAAW,MAAA,SAAkB,SAAA9B,wBAAA9qB,MAAuC;AAAGrN,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAA05B,cAAA15B,UAAAoqB,WAAA;AAF9FroB,2CAAC,kBAAsB,OAAA,SACG,UAAA,kEACJ,MAAAF,KACG,SAAA,MAAA;AACLuoB,kBAAS+N,uBAAwB;AACjCuB,mBAAAA;AAAAA,MAAY,GACf;AAAG15B,cAAA05B;AAAA15B,cAAAoqB;AAAApqB,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAAuB,OAAAvB,EAAA,EAAA,MAAAyB,OAAAzB,EAAA,EAAA,MAAA4B,OAAA5B,UAAA+B,KAAA;AAnC5BC,YAAAF,2BAAAA,KAAA,OAAA,EAAgB,WAAA,QACZX,UAAAA;AAAAA,QAAAA;AAAAA,QAKAW,2BAAAA,KAAA,OAAA,EAAgB,WAAA,cACZP,UAAAA;AAAAA,UAAAA;AAAAA,UAQAE;AAAAA,UAOAG;AAAAA,UAOAG;AAAAA,QAAAA,EAAAA,CAOJ;AAAA,MAAA,GAEJ;AAAM/B,cAAAuB;AAAAvB,cAAAyB;AAAAzB,cAAA4B;AAAA5B,cAAA+B;AAAA/B,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAA05B,cAAA15B,UAAAqC,kBAAA;AAEL6C,aAAC7C,oBAAoBP,2BAAAA,cAElB,UAAA;AAAA,QAAAZ,2BAAAA,IAACP,GAAAA,cAAoB,SAAA,WACF,OAAA,aACI,WAAA,QAAQ,UAAA,8DAAA,CAE/B;AAAA,QAEAO,+BAACg5B,YAAAA,oBAA8B,cAAA1oB,MAAA8L,oBAA2Boc,WAAWloB,MAAM8L,eAAe,EAAA,CAAC;AAAA,MAAA,GAE/F;AAAMtd,cAAA05B;AAAA15B,cAAAqC;AAAArC,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,UAAAgZ,MAAAhZ,EAAA,EAAA,MAAAgC,OAAAhC,EAAA,EAAA,MAAAkF,OAAAlF,EAAA,EAAA,MAAAc,MAAAd,UAAAe,MAAAf,EAAA,EAAA,MAAAgB,IAAA;AA7FdoE,oDAAgB,WAAA5E,IACZ,0CAAC,IAAA,EAAoB,UAAAI,IAAkB,WAAAC,IAEnCC,UAAAA;AAAAA,QAAAA;AAAAA,QAOCC;AAAAA,QAMAC;AAAAA,QA2BDgB;AAAAA,QAwCCkD;AAAAA,MAAAA,EAAAA,CAeL,EAAA,CACJ;AAAMlF,cAAAgZ;AAAAhZ,cAAAgC;AAAAhC,cAAAkF;AAAAlF,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAA,WAnGNoF;AAAAA,EAmGM;AAIP,WAAA+0B,eAAAp6B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwB,UAAA;AAAA,MAAAwzB;AAAAA,MAAA2G;AAAAA,MAAA/sB;AAAAA,MAAA8O;AAAAA,IAAAA,IAAApc;AAU9B,QAAAM;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAO0BL,WAAAC,GAAAA,IACP,gIACA,iDACA,gIACA,6CACJ;AAACN,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAAyzB,OAAA;AAGDlzB,mDAAgB,WAAA,6BAEZ,yCAACI,GAAAA,YAAA,EAAoB,SAAA,aAChB8yB,UAAAA,MAAAA,CACL,EAAA,CAEJ;AAAMzzB,aAAAyzB;AAAAzzB,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAqN,QAAArN,SAAAmc,WAAAnc,EAAA,CAAA,MAAAO,IAAA;AAhBVC,WAAAsB,2BAAAA,KAACT,SAAA,EACY8a,SACE,WAAA9b,IAOVgN,UAAAA;AAAAA,QAAAA;AAAAA,QACD9M;AAAAA,MAAAA,GAOJ;AAAOP,aAAAqN;AAAArN,aAAAmc;AAAAnc,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAo6B,YAAAp6B,SAAAQ,IAAA;AAnBXI,0CAACQ,GAAAA,SAAA,EAAeg5B,OAAAA,UACE,SAAA,MACd55B,UAAAA,IAkBJ;AAAUR,aAAAo6B;AAAAp6B,aAAAQ;AAAAR,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,WApBVY;AAAAA,EAoBU;AC1JX,WAAAy5B,8BAAAt6B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAuC,UAAA;AAAA,MAAAq6B;AAAAA,MAAAhe;AAAAA,MAAAsB;AAAAA,IAAAA,IAAA7d;AAmB1C,UAAA;AAAA,MAAA4C;AAAAA,MAAAI;AAAAA,MAAAL;AAAAA,IAAAA,IAIIO,iBAAAA;AACJ,UAAA,CAAAof,kBAAAkY,mBAAA,IAAgDn3B,MAAAA,SAAAI,MAA8C;AAAE,QAAAnD;AAAA,QAAAL,EAAA,CAAA,MAAA0C,OAAA4a,iBAAA;AAI7Fjd,WAAAqC,OAAM4a,kBAAA;AAAA,QAAA,IAAyB5a,OAAM4a;AAAAA,MAAAA,IAAA,CAAA;AAAuBtd,QAAA,CAAA,IAAA0C,OAAA4a;AAAAtd,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAF/D,UAAA+xB,4BAAkCvvB,MAAAC,OAE/BpC,EAA4D;AAE/D,UAAAoO,cAAoB4T,mBAAmBA,iBAAgB/iB,KAAAkE;AACvD,UAAA6X,WAAiBgH,oBAAgB7e;AAAc,QAAAjD;AAAA,QAAAP,EAAA,CAAA,MAAAs6B,gBAAAt6B,EAAA,CAAA,MAAA+C,mBAAA/C,EAAA,CAAA,MAAA2C,iBAAA3C,SAAA0C,QAAA;AAErBnC,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAlB;AAAAA,UAAA+b,UAAAwN;AAAAA,UAAAF;AAAAA,UAAAra;AAAAA,QAAAA,IAAA9N;AAOvB,cAAAsgB,SAAexhB,KAAKkP,UAAUlP,IAAIgP,SAAS,IAAC9K;AAC5C,cAAAkvB,eAAqB5R,SAAS3S,mBAAmB2S,MAAM,IAACtd;AAGxD,cAAAivB,4BAAAjQ,CAAAA,gBAAA;AAAA,cAAA,CACSlU,aAAS;AAAA,mBAASyjB,0BAAyB9gB,QAAS,EAAE;AAAA,UAAA;AAAA,iBACpD8gB,0BAAyB9gB,QAAS3C,WAAS,KAAK3K,OAAAA,MAAMjB,QAAQ6L,+BAA+BD,WAAS,CAAC;AAAA,QAAC;AAGnH,cAAAkkB,wBAAAA,CAAArT,oBAAAwD,gBAAA;AACI,gBAAAX,sBAA4BzT,+BAA+BD,WAAS;AAEpE3L,wBAAcqf,qBAAqB7C,yBAAyB;AAC5D4S,oCAAyB9gB,QAAS3C,eAAa,EAAE,IAAI6Q;AAAAA,QAAkB;AAEzE,YAGEwJ,cAAcA,eAAerpB,IAAE;AAC/B,gBAAAqzB,iBAAuBnkB,UAAUma,YAAYra,SAAS;AACtD,gBAAAskB,uBAA6BzkB,mBAAmBwkB,cAAc;AAE9D,gBAAA9Q,yBAA+B4Q,0BAA0BnkB,SAAS;AAGlE,gBAAAksB,uBAA2B3Y,uBAAsB9X,IAAAmY,CAAAA,MACjCA,MAAMyG,aAAarpB,KAAK4iB,CAAC,EAAC9d,OAAA+F,OACR;AAClCqoB,gCAAsBrT,sBAAoB7Q,SAAS;AAGnD,gBAAAmsB,oBAAA;AAAA,YAAA,GAA+BH,aAAYI;AAAAA,UAAAA;AAC3ChrB,iBAAAC,KAAY8qB,iBAAiB,EAACprB,QAAAwM,CAAAA,QAAA;AAAA,gBACtB4e,kBAAkB5e,GAAG,MAAM8M,YAAU;AACrC8R,gCAAkB5e,GAAG,IAAIvc,MAAM;AAAA,YAAE;AAAA,UAAA,CAExC;AACDg7B,uBAAYK,kBAAmBF,iBAAiB;AAMhD93B,wBAAciwB,sBAAoBpvB,aAAkB;AACpDT,0BAAgB6vB,sBAAoB,OAAA,KAAc;AAAA,QAAC;AAAA,YAGnDF,cAAY;AACZ/vB,wBAAc+vB,cAAcrX,iBAAe;AAC3CtY,0BAAgB2vB,cAAY,MAAA,KAAa;AAAA,QAAC;AAAA,MAAA;AAEjD1yB,aAAAs6B;AAAAt6B,aAAA+C;AAAA/C,aAAA2C;AAAA3C,aAAA0C;AAAA1C,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AA1DD,UAAAgjB,oBAA0BziB;AA0DxB,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAAs6B,aAAAM,cAAA56B,EAAA,CAAA,MAAA+C,mBAAA/C,EAAA,CAAA,MAAA2C,eAAA;AAC4BnC,kBAAAI,QAAA;AAAO,cAAA;AAAA,UAAAtB,IAAA4pB;AAAAA,UAAA2R;AAAAA,UAAAxf,UAAA8N;AAAAA,UAAA7a,WAAA6V;AAAAA,QAAAA,IAAAvjB;AASjC,cAAAk6B,WAAex7B,OAAKkP,UAAUlP,MAAIgP,WAAS,IAAC9K;AAC5C,cAAAu3B,iBAAqBja,WAAS3S,mBAAmB2S,QAAM,IAACtd;AAGxD,cAAAmjB,eAAqB2T,aAAYM,WAAA7wB,IAAAixB,OAAuBr3B,OAAAA,MAAMq3B,GAAGH,SAAS,CAAC;AAC3E,cAAAI,sBAAA;AAAA,UAAA,GACOC,uCAAsBvU,cAActL,YAAQ8f,4BAAkB;AAAA,UAAC1f,UAAA;AAAA,QAAA;AAEpE,YAEEiX,gBAAY;AAAA,cACRuI,qBAAmB;AACnBt4B,0BAAc+vB,gBAAcuI,0BAA0B;AAAA,UAAC,OAAA;AAEvDt4B,0BAAc+vB,gBAAcrX,iBAAe;AAAA,UAAC;AAEhDtY,0BAAgB2vB,gBAAY,MAAA,KAAa;AAAA,QAAC;AAAA,MAAA;AAEjD1yB,QAAA,CAAA,IAAAs6B,aAAAM;AAAA56B,aAAA+C;AAAA/C,aAAA2C;AAAA3C,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AA3BD,UAAAo7B,wBAA8B56B;AA2B5B,QAAAI;AAAA,QAAAZ,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAOUE,0CAACD,GAAAA,YAAA,EAAmB,SAAA,MAAgB,WAAA,eAAe,UAAA,yBAAqB;AAAaX,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAGpC,UAAAa,KAAA6B,OAAMiZ;AAAyB,QAAA7a;AAAA,QAAAd,EAAA,EAAA,MAAAo7B,yBAAAp7B,UAAAsc,mBAAAtc,EAAA,EAAA,MAAA2C,eAAA;AACnC7B,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAsa,UAAAggB;AAAAA,UAAA5sB,aAAAiU;AAAAA,UAAAmY,WAAAS;AAAAA,UAAAC;AAAAA,QAAAA,IAAAx6B;AAKC,YACbw6B,YAAU;AAAA,iBACHr6B,2BAAAA,IAACP,GAAAA,cAAW,UAAA,kCAAA,CAA+B;AAAA,QAAa;AAAA,8CAG3D66B,YAAAA,+BAAA,EACMngB,UAAAA,YACG5M,aAAAA,eACU,uBAAA,CAAAgtB,eAAAv7B,UAAwCyC,cAAc,cAAc8L,aAAW,SAASvO,OAAK,KAAO,GAC9G,aAAA,MAAA;AAAA,cACL,CAACuO,iBAAW,CAAK4M,YAAQ;AAAA;AAAA,UAAA;AAC7Bkf,8BAAmB;AAAA,YAAA,GACZlf;AAAAA,YAAQ/b,IACPmP;AAAAA,YAAWgN,UAAA;AAAA,UAAA,CAElB;AAAA,QAAC,GAEY,iDAAC,gBAAA,EAAyBJ,UAAAA,YACA,iBACS,mBAAA+J,CAAAA,UAAWgW,sBAAqB;AAAA,UAAA,GAC5ChW;AAAAA,UAAKyV,WACRA;AAAAA,QAAAA,CACH,GACYpsB,aAAAA,eACI6N,iBAAe,EAAA,CAAG;AAAA,MACvE;AACLtc,cAAAo7B;AAAAp7B,cAAAsc;AAAAtc,cAAA2C;AAAA3C,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAs6B,gBAAAt6B,UAAAa,MAAAb,EAAA,EAAA,MAAAc,IAAA;AArC/BC,2CAAC6M,GAAAA,WAAA,EAAoB,UAAA,OAAkB,WAAA,kCAEnChN,UAAAA;AAAAA,QAAAA;AAAAA,uCAEC86B,YAAAA,0BAAA,EAAuCpB,cACS,uBAAAz5B,IACJ,mBAAAC,GAAAA,CA+BlB;AAAA,MAAA,GAC/B;AAAYd,cAAAs6B;AAAAt6B,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAGF,UAAAgB,KAAAqhB,qBAAgB7e;AAAc,QAAAlC;AAAA,QAAAH;AAAA,QAAAnB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAQvBS,WAAAA,MAAA;AACTo5B,4BAAmB/2B,MAAU;AAAA,MAAC;AAExBlC,YAAAA,MAAA;AACNi5B,4BAAmB/2B,MAAU;AAAA,MAAC;AACjCxD,cAAAsB;AAAAtB,cAAAmB;AAAAA,IAAA,OAAA;AAAAG,YAAAtB,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,UAAA4d,sBAAA5d,EAAA,EAAA,MAAAgjB,qBAAAhjB,EAAA,EAAA,MAAAqb,YAAArb,EAAA,EAAA,MAAAsc,mBAAAtc,UAAAyO,eAAAzO,EAAA,EAAA,MAAAgB,IAAA;AAdLO,YAAAL,2BAAAA,IAAC,sBACS,MAAAF,IACOyN,aACH4M,UACD,SAAA,OACK,cAAA,OACK2H,mBACC,oBAAA,OACApF,oBACP,aAAAzc,IAGH,UAAAG,KAGU,oBAAA,OACF,kBAAA,OACDgb,gBAAAA,CAAe;AAAGtc,cAAA4d;AAAA5d,cAAAgjB;AAAAhjB,cAAAqb;AAAArb,cAAAsc;AAAAtc,cAAAyO;AAAAzO,cAAAgB;AAAAhB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEvCc,YAAAN,2BAAAA,IAAA,SAAY,OAAA;AAAA,QAAAiM,QAAU;AAAA,MAAA,GAAQ;AAAGnN,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAuB,OAAAvB,UAAAe,IAAA;AA5DrCU,qDAAgB,WAAA,yBACZV,UAAAA;AAAAA,QAAAA;AAAAA,QAwCAQ;AAAAA,QAmBAC;AAAAA,MAAAA,GACJ;AAAMxB,cAAAuB;AAAAvB,cAAAe;AAAAf,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,WA7DNyB;AAAAA,EA6DM;AAxLP,WAAA0I,QAAAwxB,KAAA;AAAA,WAmEwBzZ,QAAC1e;AAAAA,EAAc;AA0H9C,WAAAo4B,eAAA77B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwB,UAAA;AAAA,MAAAob;AAAAA,MAAA2H;AAAAA,MAAAvU;AAAAA,MAAA6N;AAAAA,MAAApN;AAAAA,IAAAA,IAAAnP;AAiBvB,QAAAM;AAAA,QAAAL,SAAAqb,UAAA;AAEmBhb,WAAAgb,WAAWqP,gBAAWrP,QAAQ,IAAC;AAAOrb,aAAAqb;AAAArb,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAtD,UAAA67B,UAAgBx7B;AAAuC,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAqb,YAAArb,SAAAsc,iBAAA;AACxC/b,WAAA8a,WAAWmB,KAAAA,eAAenB,UAAUiB,eAAe,IAAC;AAAOtc,aAAAqb;AAAArb,aAAAsc;AAAAtc,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAA1E,UAAAijB,SAAe1iB;AAEf,UAAA,CAAA+pB,YAAAC,aAAA,IAAoCnnB,MAAAA,cAAc;AAE3B,UAAA5C,KAAA6a,YAAY4H,SAAS,GAAGA,QAAMxjB,IAAA,MAAY4b,SAAQE,QAAA,KAAW/X;AAC9D,UAAA5C,KAAA0pB,aAAU,QAAA9mB;AAQjB,UAAA3C,MAACoiB;AAED,UAAAniB,KAAA+6B,WAAW;AAAE,QAAA96B;AAAA,QAAAf,SAAAijB,QAAA;AAGPliB,WAAAb,CAAAA,UAAA;AAAA,YAAA,CACJ+iB,QAAM;AAAA,iBAAA;AAAA,QAAA;AAAA,eACJ/hB,2BAAAA,IAACyb,KAAAA,qBAAA,EAAoCsG,gBAAAA,OAAAA,CAAM;AAAA,MAAG;AACxDjjB,aAAAijB;AAAAjjB,aAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,CAAA,MAAAgjB,qBAAAhjB,EAAA,CAAA,MAAAqb,YAAArb,EAAA,CAAA,MAAAsc,mBAAAtc,UAAAyO,aAAA;AACczN,WAAAiqB,CAAAA,wBAAA;AACX,cAAA6Q,cAAoBpV,yBAAyBrL,UAAU4P,qBAAqB3O,eAAe;AAAC,YAAA,CACvF7N,aAAW;AAAA;AAAA,QAAA;AAChBuU,0BAAiB;AAAA,UAAA1jB,IACTmP;AAAAA,UAAW4M,UACLygB;AAAAA,UAAWnT,YACTla;AAAAA,UAAWH,WAAA9K;AAAAA,QAAAA,CAE1B;AAAA,MAAC;AACLxD,aAAAgjB;AAAAhjB,aAAAqb;AAAArb,aAAAsc;AAAAtc,cAAAyO;AAAAzO,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACAS,WAAAuO,OAAAsK,QAAA0N,eAA8B,EAAC3d,IAAAC,QAO/B;AAAChK,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAAkP,YAAAlP,EAAA,EAAA,MAAAsqB,cAAAtqB,EAAA,EAAA,MAAAa,MAAAb,EAAA,EAAA,MAAAc,MAAAd,UAAAe,MAAAf,EAAA,EAAA,MAAAgB,IAAA;AAjCNM,YAAAJ,2BAAAA,IAACgJ,GAAAA,QAAA,EACSogB,MAAAA,YACQC,cAAAA,eACH,WAAA,MACL,MAAA,SACK,WAAA,UACDrb,UACH,OAAArO,IACI,WAAA,MACJ,OAAAC,IACM,aAAA,4BACH,UAAA,gBACG,aAAAC,IAIE,eAAAC,IAUdG,UAAAA,IASL;AAASnB,cAAAkP;AAAAlP,cAAAsqB;AAAAtqB,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAQ,MAAAR,EAAA,EAAA,MAAAY,IAAA;AArCNW,2CAACH,GAAAA,SAAA,EAAe,OAAAZ,IACD,MAAAI,IAClBU,UAAAA,KAoCJ;AAAUtB,cAAAsB;AAAAtB,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,WAtCHuB;AAAAA,EAsCG;AA9Dd,WAAAyI,SAAAjK,IAAA;AAoDkD,UAAA,CAAA8b,KAAAkgB,QAAA,IAAAh8B;AAAa,WACxCmB,2BAAAA,IAAC,oBAAA,EAEG2a,OAAAA,KACS,gBAAA,OACAoH,gBAAAA,UACN,UAAA,MAAA,GAJLpH,GAIU;AAAA,EAAG;AAc/B,WAAAmgB,mBAAAj8B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA4B,UAAA;AAAA,MAAAC;AAAAA,MAAA+7B;AAAAA,MAAAxf;AAAAA,MAAAzE;AAAAA,IAAAA,IAAAjY;AAOnB,UAAAM,KAAA47B,iBAAiB,WAAW;AAAE,QAAA17B;AAAA,QAAAP,SAAAK,IAAA;AAFvBE,WAAAD,GAAAA,IACP,qDACAD,EAA8B;AAACL,aAAAK;AAAAL,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAAyc,gBAAA;AACnCjc,0CAAA,OAAA,EAAgB,WAAA,QACZ,UAAAU,2BAAAA,IAACyb,KAAAA,qBAAA,EAAoCF,gBAAc,EAAA,CACvD;AAAMzc,aAAAyc;AAAAzc,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAyc,eAAAhd,MAAA;AAEFmB,WAAAM,2BAAAA,IAAA,OAAA,EAAMub,UAAAA,eAAchd,MAAM;AAAMO,QAAA,CAAA,IAAAyc,eAAAhd;AAAAO,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAI3B,UAAAa,KAAAmX,YAAYikB,iBAAiB,+DAA+Dxf,eAAcpT;AAAY,QAAAvI;AAAA,QAAAd,SAAAa,IAAA;AAH3HC,WAAAI,2BAAAA,IAACP,iBAAoB,SAAA,WACF,OAAA,YACI,WAAA,YAClBE,UAAAA,GAAAA,CACL;AAAab,aAAAa;AAAAb,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,CAAA,MAAAY,MAAAZ,SAAAc,IAAA;AANjBC,2CAAA,OAAA,EACIH,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,MAAAA,GAKJ;AAAMd,aAAAY;AAAAZ,aAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAO,MAAAP,UAAAQ,MAAAR,EAAA,EAAA,MAAAe,IAAA;AAdVC,WAAAc,2BAAAA,KAAA,OAAA,EACe,WAAAvB,IAGXC,UAAAA;AAAAA,QAAAA;AAAAA,QAGAO;AAAAA,MAAAA,GAQJ;AAAMf,cAAAO;AAAAP,cAAAQ;AAAAR,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAi8B,kBAAAj8B,UAAAgB,MAAAhB,EAAA,EAAA,MAAAE,OAAA;AAlBHiB,0CAACyK,eAAA,EAAkB1L,OACG+7B,UAAAA,gBACC,WAAA,8BAC1Bj7B,UAAAA,GAAAA,CAgBJ;AAAahB,cAAAi8B;AAAAj8B,cAAAgB;AAAAhB,cAAAE;AAAAF,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAnBNmB;AAAAA,EAmBM;AC/RV,WAAA+6B,kCAAAn8B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA2C,UAAA;AAAA,MAAAq6B;AAAAA,MAAA3e;AAAAA,MAAA2B;AAAAA,IAAAA,IAAAvd;AAU9C,UAAAo8B,iBAAuBC,KAAAA,kBAAAA;AACvB,UAAAtX,aAAmBC,KAAAA,wBAAAA;AACnB,UAAA,CAAAsX,SAAAC,UAAA,IAA8Bl5B,MAAAA,cAAuB;AAAE,QAAA/C;AAAA,QAAAL,EAAA,CAAA,MAAAm8B,kBAAAn8B,EAAA,CAAA,MAAAs6B,gBAAAt6B,EAAA,CAAA,MAAA8kB,cAAA9kB,SAAA2b,YAAA;AAEvDtb,0BAAAk8B,gBAAA;AACI,cAAAC,aAAmBlC,aAAYM,WAAA7wB,IAAAixB,CAAAA,MAAqByB,YAAAA,oBAAoBN,gBACpErX,YACAkW,GACAV,aAAYoC,UACZpC,aAAYI,gBACZ/e,YACA,aACA2e,aAAYqC,aAAc,CAAC;AAC/BrC,qBAAYsC,YAAaJ,UAAU;AAAA,MAAC;AACvCx8B,aAAAm8B;AAAAn8B,aAAAs6B;AAAAt6B,aAAA8kB;AAAA9kB,aAAA2b;AAAA3b,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAVD,UAAAu8B,eAAAl8B;AAUC,QAAAE;AAAA,QAAAP,SAAAu8B,cAAA;AAESh8B,WAAAA,MAAA;AACNg8B,qBAAAA,EAAcjqB,cAAegqB,WAAU,KAAM,CAAC;AAAA,MAAC;AAClDt8B,aAAAu8B;AAAAv8B,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAAEF,WAAA,CAAA;AAAER,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAFLiE,UAAAA,UAAU1D,IAEPC,EAAE;AAEL,UAAAq8B,sBAA4BC,KAAAA,uBAAAA;AAAyB,QACjDT,SAAO;AAAA,UAAAz7B;AAAA,UAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACAE,6CAACm8B,KAAAA,wBAAA,EAAsB;AAAE/8B,eAAAY;AAAAA,MAAA,OAAA;AAAAA,cAAAZ,EAAA,CAAA;AAAA,MAAA;AAAA,aAAzBY;AAAAA,IAAyB;AAAA,QAAAA;AAAA,QAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGzBE,2CAAA,OAAA,EACH,UAAA;AAAA,QAAAM,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,aAAa,UAAA,yBAAqB;AAAA,QACvDO,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,WAAW,UAAA,gDAAA,CAA6C;AAAA,MAAA,GACjF;AAAMX,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAAs6B,aAAA0C,UAAA;AACWn8B,WAAA;AAAA,QAAA2Q,MACP8oB,aAAY0C;AAAAA,QAAAC,aAAA;AAAA,QAAAC,cAAA;AAAA,MAAA;AAGrBl9B,QAAA,EAAA,IAAAs6B,aAAA0C;AAAAh9B,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACaI,WAAAI,2BAAAA,IAAA,OAAA,EAAgB,WAAA,OAAA,CAAM;AAAGlB,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAAsd,iBAAA;AAInBvc,WAAAuc,gBAAevT,IAAAI,OAGjC;AAACnK,cAAAsd;AAAAtd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAA2b,cAAA3b,EAAA,EAAA,MAAA68B,uBAAA78B,EAAA,EAAA,MAAAa,MAAAb,UAAAe,IAAA;AAjBAC,0CAACm8B,KAAAA,uBAAA,EACG,OAAAv8B,IAIU,iBAAAC,IAKH,cAAAC,IACF,YAAA,OACF,UAAA,OACW+7B,qBACD,oBAAA97B,IAIJ,gBAAA,cACJ4a,YACK,iBAAA,OAAK;AAAG3b,cAAA2b;AAAA3b,cAAA68B;AAAA78B,cAAAa;AAAAb,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,WApBtBgB;AAAAA,EAoBsB;AAtD1B,WAAAmJ,QAAA+X,GAAA;AAAA,WAAA;AAAA,MAAArG,KAiDUqG;AAAAA,MAAChT,UAAA;AAAA,IAAA;AAAA,EAAA;AC1DX,WAASkuB,0BAA0BzhB,YAAwB0hB,aAAa,IAI7E;AAEE,UAAMC,SAAS5tB,OAAOC,KAAKgM,UAAU,EAAEI,OAAO,CAACuW,KAAKzW,QAAQ;AACxD,YAAMR,WAAWM,WAAWE,GAAG;AAC/B,YAAMuc,OAAOmF,KAAAA,QAAQ1hB,GAAG;AACxB,YAAM2hB,WAAWH,aAAa,GAAGA,UAAU,IAAIjF,IAAI,KAAKA;AAExD,UAAI/c,SAASE,aAAa,SAASF,SAASM,YAAY;AACpD,cAAM8hB,kBAAkBL,0BAA0B/hB,SAASM,YAA0B6hB,QAAQ;AAC7F,eAAO;AAAA,UACH9C,gBAAgB;AAAA,YAAE,GAAGpI,IAAIoI;AAAAA,YAAgB,CAAC7e,GAAG,GAAG2hB;AAAAA,UAAAA;AAAAA,UAChD7hB,YAAY;AAAA,YACR,GAAG2W,IAAI3W;AAAAA,YACP,CAACyc,IAAI,GAAG;AAAA,cACJ,GAAG/c;AAAAA,cACHM,YAAY8hB,gBAAgB9hB;AAAAA,cAC5B2B,iBAAiB5N,OAAOC,KAAK8tB,gBAAgB9hB,UAAU;AAAA,YAAA;AAAA,UAC3D;AAAA,QACJ;AAAA,MAER;AAEA,YAAM0W,oBAAoB;AAAA,QACtB,GAAGC,IAAI3W;AAAAA,QACP,CAACyc,IAAI,GAAG/c;AAAAA,MAAAA;AAGZ,YAAMqf,iBAAiB;AAAA,QAAE,GAAGpI,IAAIoI;AAAAA,QAAgB,CAAC7e,GAAG,GAAG2hB;AAAAA,MAAAA;AAEvD,aAAO;AAAA,QACH9C;AAAAA,QACA/e,YAAY0W;AAAAA,MAAAA;AAAAA,IAEpB,GAAG;AAAA,MAAEqI,gBAAgB,CAAA;AAAA,MAAI/e,YAAY,CAAA;AAAA,IAAC,CAAG;AAEzC,UAAM+hB,WAAWhuB,OAAOC,KAAK2tB,OAAO5C,cAAc,IAAI,CAAC;AACvD,QAAIgC;AACJ,QAAIgB,UAAUp5B,SAAS,IAAI,KAAKo5B,UAAUp5B,SAAS,KAAK,GAAG;AACvDo4B,iBAAWgB;AAAAA,IACf;AAEA,WAAO;AAAA,MACH,GAAGJ;AAAAA,MACHZ;AAAAA,IAAAA;AAAAA,EAER;AChDO,WAAAiB,0BAAA59B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAmC,UAAA;AAAA,MAAAiU;AAAAA,MAAAC;AAAAA,IAAAA,IAAApU;AAItC,UAAA;AAAA,MAAA69B;AAAAA,IAAAA,IAEIrhB,gCAAAA;AAA6B,QAAAlc;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAK7BL,0CAACiU,GAAAA,eAAY,UAAA,uBAAA,CAAoB;AAActU,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,EAAA,CAAA,MAAA49B,iBAAA59B,SAAAmU,SAAA;AAE1C5T,WAAAq9B,eAAa7zB,IAAA8zB,CAAAA,WACH/7B,2BAAAA,KAAC2Q,GAAAA,UAEK,SAAA,MAAM0B,QAAQ0pB,OAAMhiB,GAAI,GACjC,WAAA,MACS,SAAA,QAERgiB,UAAAA;AAAAA,QAAAA,OAAMp+B;AAAAA,QAAM;AAAA,QAAGo+B,OAAMhiB;AAAAA,QAAK;AAAA,MAAA,KALtBgiB,OAAMhiB,GAMf,CAAS;AACX7b,aAAA49B;AAAA59B,aAAAmU;AAAAnU,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,SAAA49B,eAAA;AACDp9B,YAACo9B,iBAAa,IAAMhuB,gBACjB1O,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,SAAS,UAAA,iHAAA,CAG9B;AAAaX,aAAA49B;AAAA59B,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,IAAA;AAfrBI,WAAAkB,2BAAAA,KAACyS,GAAAA,eAAA,EAAyB,WAAA,uBACrBhU,UAAAA;AAAAA,QAAAA;AAAAA,QAUAC;AAAAA,MAAAA,GAML;AAAgBR,aAAAO;AAAAP,aAAAQ;AAAAR,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,SAAAmU,SAAA;AAChBtT,WAAAK,2BAAAA,IAACsT,kBAAA,EACG,UAAAtT,+BAACuR,GAAAA,QAAA,EAAgB,SAAA,YACF,OAAA,WACE,SAAA,MAAM0B,QAAAA,GAAW,oBAAM,GAC5C;AAAgBnU,aAAAmU;AAAAnU,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAkU,QAAAlU,UAAAY,MAAAZ,EAAA,EAAA,MAAAa,IAAA;AA1BbC,WAAAgB,2BAAAA,KAAC4L,WAAA,EACM,UAAA,MACJwG,MACN7T,UAAAA;AAAAA,QAAAA;AAAAA,QACAO;AAAAA,QAkBAC;AAAAA,MAAAA,GAKJ;AAASb,cAAAkU;AAAAlU,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,WA3BFc;AAAAA,EA2BE;ACZN,WAAAg9B,qBAAA/9B,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA8B,UAAA;AAAA,MAAAulB;AAAAA,IAAAA,IAAAzlB;AAMjC,UAAA;AAAA,MAAA69B,eAAAG;AAAAA,IAAAA,IAAgDxhB,gCAAAA;AAEhD,UAAA,CAAAyhB,2BAAAC,4BAAA,IAAkEz7B,MAAAY,cAA6B;AAC/F,UAAA,CAAA86B,gBAAAC,iBAAA,IAA4C37B,MAAAY,SAAAA;AAE5C,UAAA;AAAA,MAAAV;AAAAA,MAAAC;AAAAA,IAAAA,IAGIM,iBAAAA;AAA8B,QAAA+V;AAAA,QAAAC;AAAA,QAAA0b;AAAA,QAAAC;AAAA,QAAAv0B;AAAA,QAAAiB;AAAA,QAAAf;AAAA,QAAAC;AAAA,QAAAI;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAG;AAAA,QAAAnB,EAAA,CAAA,MAAAwlB,WAAAoY,iBAAA59B,EAAA,CAAA,MAAA+9B,wBAAA/9B,EAAA,CAAA,MAAA0C,OAAAk7B,eAAA;AAElC,YAAAQ,wBAA8B17B,OAAMk7B,eAAAx5B,OAAA+F,OAAA,EAAAJ,IAAApC,CAAAA,QACtB02B,KAAAA,oBAAoBt5B,KAAGg5B,oBAAoB,CAAC,EAAA35B,OAAAa,OAAA,KACf,CAAA;AAC3C,YAAAq5B,yBAA+B9Y,WAAUoY,eAAAx5B,OAAA4F,QAAA,KAAA,CAAA;AACzC,YAAAu0B,qBAA2BH,sBAAqBxuB,SAAU0uB,uBAAsB1uB;AAG5DtO,YAAA;AACXszB,WAAAhnB,GAAAA;AAAoB5M,WAAA;AAAkBG,WAAA;AACnBJ,WAAA;AACIH,WAAA;AAA4C,UAAAZ,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACxDG,aAAAK,2BAAAA,IAACP,eAAA,EAAoB,SAAA,MAAM,UAAA,kBAE3B;AAAaX,gBAAAa;AAAAA,MAAA,OAAA;AAAAA,aAAAb,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,UAAAu+B,oBAAA;AAEZz9B,aAAAy9B,uBAAkB,KACfr9B,2BAAAA,IAACq0B,GAAAA,OAAA,EAAc,QAAAr0B,2BAAAA,IAACuR,GAAAA,QAAA,EAAe,SAAA,QACF,MAAA,SACA,MAAA,0CACK,WAAA,KACP,KAAA,uBACG,QAAA,UAAS,UAAA,YAAA,CAAS,GAAW,UAAA,iEAAA,CAE3D;AAAQzS,gBAAAu+B;AAAAv+B,gBAAAc;AAAAA,MAAA,OAAA;AAAAA,aAAAd,EAAA,EAAA;AAAA,MAAA;AAIP20B,WAAA9hB,GAAAA;AAAiBrS,WAAA;AACbyY,WAAAgc,GAAAA;AACIjc,WAAAkc,GAAAA;AAAS,UAAA3zB;AAAA,UAAAvB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACqBa,eAAAs8B,CAAAA,WACvB/7B,2BAAAA,KAACszB,GAAAA,UAAA,EACG,UAAA;AAAA,UAAAl0B,2BAAAA,IAACo0B,GAAAA,WAAA,EACS,OAAA,QACN,UAAAp0B,2BAAAA,IAACP,eAAA,EAAoB,SAAA,aAAwB,WAAA,aACxCk9B,UAAAA,OAAMp+B,KAAAA,CACX,GACJ;AAAA,UACAyB,+BAACo0B,GAAAA,WAAA,EACS,OAAA,SACN,yCAACl0B,YAAA,EAAe,OAAA,UACE,SAAA,MACd,UAAAF,2BAAAA,IAAC2D,GAAAA,YAAA,EAAgB,MAAA,SACI,SAAAyV,CAAAA,QAAA;AACLvV,gBAACmV,eAAAA;AACDnV,gBAACoV,gBAAAA;AACDgkB,8BAAkBN,OAAMhiB,GAAI;AAAA,UAAC,GAE3B,OAAA,WACd,UAAA3a,2BAAAA,IAACsqB,GAAAA,cAAiB,MAAA,QAAA,IACtB,EAAA,CACJ,EAAA,CACJ;AAAA,QAAA,EAAA,GArBWqS,OAAMhiB,GAsBrB;AACH7b,gBAAAuB;AAAAA,MAAA,OAAA;AAAAA,eAAAvB,EAAA,EAAA;AAAA,MAAA;AAxBAK,WAAA+9B,sBAAqBr0B,IAAKxI,IAwB1B;AACAhB,WAAA+9B,uBAAsBv0B,IAAA+B,MAatB;AAAC9L,QAAA,CAAA,IAAAwlB,WAAAoY;AAAA59B,aAAA+9B;AAAA/9B,QAAA,CAAA,IAAA0C,OAAAk7B;AAAA59B,aAAAgZ;AAAAhZ,aAAAiZ;AAAAjZ,aAAA20B;AAAA30B,aAAA40B;AAAA50B,aAAAK;AAAAL,aAAAsB;AAAAtB,aAAAO;AAAAP,cAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAA6X,WAAAhZ,EAAA,CAAA;AAAAiZ,WAAAjZ,EAAA,CAAA;AAAA20B,WAAA30B,EAAA,CAAA;AAAA40B,WAAA50B,EAAA,CAAA;AAAAK,WAAAL,EAAA,CAAA;AAAAsB,YAAAtB,EAAA,CAAA;AAAAO,WAAAP,EAAA,CAAA;AAAAQ,WAAAR,EAAA,EAAA;AAAAY,WAAAZ,EAAA,EAAA;AAAAa,WAAAb,EAAA,EAAA;AAAAc,WAAAd,EAAA,EAAA;AAAAe,WAAAf,EAAA,EAAA;AAAAgB,WAAAhB,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAgZ,MAAAhZ,UAAAK,MAAAL,EAAA,EAAA,MAAAO,IAAA;AAvCNgB,4CAAC,IAAA,EACIlB,UAAAA;AAAAA,QAAAA;AAAAA,QAyBAE;AAAAA,MAAAA,GAcL;AAAYP,cAAAgZ;AAAAhZ,cAAAK;AAAAL,cAAAO;AAAAP,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwB;AAAA,QAAAxB,EAAA,EAAA,MAAAiZ,MAAAjZ,UAAAuB,KAAA;AAzChBC,YAAAN,2BAAAA,IAAC,MACGK,UAAAA,IAAAA,CAyCJ;AAAQvB,cAAAiZ;AAAAjZ,cAAAuB;AAAAvB,cAAAwB;AAAAA,IAAA,OAAA;AAAAA,YAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGKe,YAAAA,MAAA;AACLw8B,yCAAiC;AAAA,MAAC;AACrCj+B,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAHLgB,YAAAR,2BAAAA,IAACuR,GAAAA,QAAA,EACY,SAAAhR,KAGA,SAAA,QACE,WAAAP,2BAAAA,IAACuhB,GAAAA,SAAA,CAAA,CAAO,GAAI,UAAA,2BAAA,CAE3B;AAASziB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAA20B,MAAA30B,UAAAwB,OAAAxB,EAAA,EAAA,MAAAQ,IAAA;AArDhBoB,kEACG,UAAAE,gCAAC,IAAA,EAAiB,WAAAtB,IACdgB,UAAAA;AAAAA,QAAAA;AAAAA,QA4CAE;AAAAA,MAAAA,EAAAA,CAQJ,EAAA,CAAQ;AAET1B,cAAA20B;AAAA30B,cAAAwB;AAAAxB,cAAAQ;AAAAR,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAA4B,OAAA5B,EAAA,EAAA,MAAAY,MAAAZ,EAAA,EAAA,MAAAa,MAAAb,UAAAc,IAAA;AAxEPe,qDAAgB,WAAAjB,IACZC,UAAAA;AAAAA,QAAAA;AAAAA,QAICC;AAAAA,QAWAc;AAAAA,MAAAA,GA2DL;AAAM5B,cAAA4B;AAAA5B,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAd,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAA6B,OAAA7B,UAAAe,IAAA;AA5EVgB,YAAAb,2BAAAA,IAAA,OAAA,EAAgB,WAAAH,IACZc,UAAAA,KA6EJ;AAAM7B,cAAA6B;AAAA7B,cAAAe;AAAAf,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,EAAA,EAAA,MAAA40B,MAAA50B,EAAA,EAAA,MAAA+B,OAAA/B,EAAA,EAAA,MAAAgB,MAAAhB,UAAAmB,IAAA;AA/EVa,2CAAC,IAAA,EAAoB,UAAAhB,IAAkB,WAAAG,IACnCY,UAAAA,KA+EJ;AAAY/B,cAAA40B;AAAA50B,cAAA+B;AAAA/B,cAAAgB;AAAAhB,cAAAmB;AAAAnB,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkF;AAAA,QAAAlF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEZwE,YAAAhE,2BAAAA,IAAA,SAAY,OAAA;AAAA,QAAAiM,QAAU;AAAA,MAAA,GAAQ;AAAGnN,cAAAkF;AAAAA,IAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,EAAA,EAAA,MAAAk+B,kBAAAl+B,EAAA,EAAA,MAAA2C,iBAAA3C,EAAA,EAAA,MAAA0C,OAAAk7B,eAAA;AAEhCx4B,YAAA84B,iDACIzS,yBAAA,EAAyB,MAAAxmB,QAAQi5B,cAAc,GAClB,UAAA,MAAA;AACNv7B,sBAAc,iBAAiBD,OAAMk7B,eAAAx5B,OAAAuW,CAAAA,QAA4B5V,QAAMm5B,cAAc,CAAC;AACtFC,0BAAiB36B,MAAU;AAAA,MAAC,GAEtB,UAAA,MAAM26B,kBAAiB36B,MAAU,GACpC,OAAAtC,+BAAA0S,WAAAA,UAAA,EAAE,UAAA,sBAAA,CAAmB,GACtB,MAAA9R,2BAAAA,KAAA8R,WAAAA,UAAA,EAAE,UAAA;AAAA,QAAA;AAAA,QAAU1S,2BAAAA,IAAA,OAAG,UAAA,sBAAA,CACF;AAAA,QAAI;AAAA,MAAA,EAAA,CACE,EAAA,CAAG;AAAGlB,cAAAk+B;AAAAl+B,cAAA2C;AAAA3C,QAAA,EAAA,IAAA0C,OAAAk7B;AAAA59B,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqF;AAAA,QAAArF,EAAA,EAAA,MAAA+9B,wBAAA/9B,EAAA,EAAA,MAAA2C,iBAAA3C,EAAA,EAAA,MAAA0C,OAAAk7B,eAAA;AAI1Cv4B,YAAAm5B,CAAAA,sBAAA;AAAA,YACDA,mBAAiB;AACjB1rB,kBAAA2rB,IAAY,wBAAwBD,iBAAiB;AACrD,gBAAAt+B,QAAc,CAAA,GAAKwC,OAAMk7B,iBAAA,CAAA,GAAuBY,iBAAiB,EAAAp6B,OAAAqxB,CAAAA,QAEjC,OAAO1wB,QAAM,aAAag5B,wBAAoB,CAAA,GAAM7rB,KAAAwsB,CAAAA,aAAiBb,SAAMhiB,QAAS9W,GAAC,CAAC;AAEtHpC,wBAAc,iBAAiBzC,KAAK;AAAA,QAAC;AAEzC+9B,0CAAkC;AAAA,MAAC;AACtCj+B,cAAA+9B;AAAA/9B,cAAA2C;AAAA3C,QAAA,EAAA,IAAA0C,OAAAk7B;AAAA59B,cAAAqF;AAAAA,IAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsF;AAAA,QAAAtF,EAAA,EAAA,MAAAg+B,6BAAAh+B,UAAAqF,KAAA;AAZLC,YAAApE,2BAAAA,IAAC,2BAAA,EACS88B,MAAAA,2BACG,SAAA34B,KAUR;AAAGrF,cAAAg+B;AAAAh+B,cAAAqF;AAAArF,cAAAsF;AAAAA,IAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwF;AAAA,QAAAxF,EAAA,EAAA,MAAAsB,OAAAtB,EAAA,EAAA,MAAAgC,OAAAhC,EAAA,EAAA,MAAAoF,OAAApF,UAAAsF,KAAA;AA7GZE,YAAA1D,2BAAAA,KAAA,OAAA,EAAgB,WAAAR,KACZU,UAAAA;AAAAA,QAAAA;AAAAA,QAkFAkD;AAAAA,QAECE;AAAAA,QAYDE;AAAAA,MAAAA,GAaJ;AAAMtF,cAAAsB;AAAAtB,cAAAgC;AAAAhC,cAAAoF;AAAApF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA,WA9GNwF;AAAAA,EA8GM;AArIP,WAAAsG,OAAA6yB,UAAA;AAAA,WAwEqCz9B,2BAAAA,IAACk0B,aAAA,EACG,UAAAtzB,2BAAAA,KAACwzB,GAAAA,WAAA,EACS,OAAA,QACN,UAAA;AAAA,MAAAp0B,+BAACP,GAAAA,cAAoB,SAAA,aAAwB,WAAA,aACxCk9B,mBAAMp+B,MACX;AAAA,MACAqC,2BAAAA,KAACnB,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,aAAa,UAAA;AAAA,QAAA;AAAA,QAEhDO,2BAAAA,IAAA,QAAA,EAAO28B,UAAAA,SAAMhiB,IAAAA,CAAK;AAAA,MAAA,EAAA,CAC1B;AAAA,IAAA,GACJ,EAAA,GAVWgiB,SAAMhiB,GAWrB;AAAA,EAAW;AAnFhD,WAAA7R,SAAA3B,KAAA;AAAA,WAmB4F,OAAOtD,QAAM;AAAA,EAAQ;AAnBjH,WAAAoF,QAAApF,GAAA;AAAA,WAgB4E,OAAOA,MAAM;AAAA,EAAQ;AC6CjG,WAAA65B,uBAAAxZ,OAAA;AAAA,UAAAplB,IAAAC,qBAAAA,EAAA,EAAA;AAEH,UAAAiU,OAAakR,MAAKlR;AAElB,UAAA,CAAA2qB,WAAAC,YAAA,IAAkCt8B,iBAAAY,cAA6B;AAC/D,UAAA,CAAA27B,0BAAAC,2BAAA,IAAgEx8B,iBAAAY,cAA6B;AAAE,QAAArD;AAAA,QAAAC,EAAA,CAAA,MAAA6+B,aAAA7+B,SAAAolB,OAAA;AAE1ErlB,WAAAA,MAAA;AAAA,YAAA,CACZ8+B,WAAS;AACVzZ,gBAAK6Z,YAAAz7B,MAAsB;AAAA,QAAC,OAAA;AAE5Bw7B,0CAAgC;AAAA,QAAC;AAAA,MAAA;AAExCh/B,aAAA6+B;AAAA7+B,aAAAolB;AAAAplB,aAAAD;AAAAA,IAAA,OAAA;AAAAA,WAAAC,EAAA,CAAA;AAAA,IAAA;AAND,UAAAwzB,eAAqBzzB;AAMnB,QAAAM;AAAA,QAAAE;AAAA,QAAAP,SAAAkU,MAAA;AAEQ7T,WAAAA,MAAA;AAAA,YAAA,CACD6T,MAAI;AACL4qB,4BAAkB;AAClBE,2CAAiC;AAAA,QAAC;AAAA,MAAA;AAEvCz+B,YAAC2T,IAAI;AAAClU,aAAAkU;AAAAlU,aAAAK;AAAAL,aAAAO;AAAAA,IAAA,OAAA;AAAAF,WAAAL,EAAA,CAAA;AAAAO,WAAAP,EAAA,CAAA;AAAA,IAAA;AALTiE,UAAAA,UAAU5D,IAKPE,EAAM;AAAC,QAAAC;AAAA,QAAAR,SAAAwzB,cAAA;AASYhzB,WAAA6T,CAAAA,WAAU,CAACH,SAAOsf,aAAAA,IAAchwB;AAAYxD,aAAAwzB;AAAAxzB,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAE1DE,WAAAM,2BAAAA,IAACoT,gBAAA,EAAY,QAAA,MAAO,UAAA,qBAAiB;AAActU,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAwzB,gBAAAxzB,UAAAkU,QAAAlU,EAAA,EAAA,MAAAolB,OAAA;AAClDvkB,WAAAqT,QAAQhT,2BAAAA,IAAC,kBAAA,KAAqBkkB,OACUoO,cACAsL,cAAY;AAAG9+B,aAAAwzB;AAAAxzB,cAAAkU;AAAAlU,cAAAolB;AAAAplB,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,UAAAolB,OAAA;AAI1CtkB,WAAAA,MAAMskB,MAAK6Z,YAAAz7B,MAAsB;AAACxD,cAAAolB;AAAAplB,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAC9BK,WAAAA,MAAMi+B,iCAAiC;AAACh/B,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAc,MAAAd,UAAA++B,0BAAA;AAH1D/9B,WAAAE,2BAAAA,IAAC,wBACS69B,MAAAA,0BACI,UAAAj+B,IACI,cAAAC,IACR,MAAA,+CAAA,CAA8C;AAAGf,cAAAc;AAAAd,cAAA++B;AAAA/+B,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAkU,QAAAlU,EAAA,EAAA,MAAAQ,MAAAR,EAAA,EAAA,MAAAa,MAAAb,UAAAgB,IAAA;AAjB/DG,WAAAW,2BAAAA,KAAC4L,GAAAA,QAAA,EACSwG,MACK,iBACC,YAAA,MACA,YAAA,OACF,UAAA,OACI,cAAA1T,IAEdI,UAAAA;AAAAA,QAAAA;AAAAA,QACCC;AAAAA,QAIDG;AAAAA,MAAAA,GAMJ;AAAShB,cAAAkU;AAAAlU,cAAAQ;AAAAR,cAAAa;AAAAb,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAnBTmB;AAAAA,EAmBS;AAeV,WAAS+9B,iBAAiB9Z,OAG9B;AACC,UAAM;AAAA,MAAE9I;AAAAA,IAAAA,IAAoBC,gCAAAA;AAC5B,UAAMuI,aAAaC,KAAAA,wBAAAA;AACnB,UAAMoX,iBAAiBC,KAAAA,kBAAAA;AAEvB,UAAM;AAAA,MACF+C;AAAAA,MACA9Z;AAAAA,IAAAA,IACAP;AAEJ,UAAMsa,oBAAoBha,MAAMvV;AAChC,UAAMwvB,mBAAmB,CAACD,mBAAmB1/B,SAAS0lB,MAAM4O,uBAAuB,IAAIpkB,WAAW;AAClG,UAAM0vB,0BAA0Bla,MAAM/iB,mBAAmB+iB,MAAM/iB,iBAAiBquB,iBAAiBrL,gBAAgB,CAAA;AACjH,UAAMka,gBAAgBD,uBAAuBv1B,IAAI+b,CAAAA,QAAOA,IAAIpmB,KAAKkW,OAAO6Y,aAAa;AACrF,UAAM+Q,cAAcF,uBAAuBv1B,IAAI+b,CAAAA,UAAOA,MAAIxmB,IAAIsW,KAAAA,EAAO6Y,YAAAA,CAAa,EAAErqB,OAAOa,OAAO;AAClG,UAAM,CAACugB,YAAYia,aAAa,IAAIj9B,iBAAMY,SAAAA;AAC1C,UAAM,CAACs8B,yBAAyBC,0BAA0B,IAAIn9B,iBAAMY,SAAS,KAAK;AAElFa,UAAAA,UAAU,MAAM;AACZ,UAAI;AACA,YAAI6gB,WAAW8a,aAAa;AACxB,cAAIxa,MAAMiQ,oBAAoB;AAC1BoK,0BAAc3a,WAAW+a,uBAAuB,CAAC,GAAIza,MAAM4O,uBAAuB,IAAK5O,MAAMiQ,kBAAkB,CAAC,CAAC;AAAA,UACrH,OAAO;AACHoK,0BAAcj8B,MAAS;AAAA,UAC3B;AACAm8B,qCAA2B,IAAI;AAAA,QACnC;AAAA,MACJ,SAAS56B,GAAG;AACR+N,gBAAQC,MAAMhO,CAAC;AAAA,MACnB;AAAA,IACJ,GAAG,CAACqgB,MAAMiQ,oBAAoBjQ,MAAM4O,qBAAqBlP,WAAW8a,aAAa9a,WAAW+a,sBAAsB,CAAC;AAEnH,QAAI,CAACV,oBAAoB;AACrB,YAAM5zB,MAAM,qDAAqD;AAAA,IACrE;AAEA,UAAM;AAAA,MACFnJ;AAAAA,IAAAA,IACkB+8B;AAEtB,UAAMW,oBAAoBta,aACpB;AAAA,MACE,GAAGA;AAAAA,MACHlmB,IAAIkmB,WAAWlmB,MAAMkmB,WAAW9lB,QAAQqgC,KAAAA,aAAa,EAAE;AAAA,IAAA,IAEzDv8B;AAEN,UAAMqM,gBAA0CiwB,oBAC1CE,qBAAqBF,mBAAmBxjB,eAAe,IACvD;AAAA,MACEhd,IAAI8/B,mBAAmB1/B,QAAQqgC,KAAAA,aAAa,EAAE;AAAA,MAC9CrgC,MAAM0/B,mBAAmB1/B,QAAQ;AAAA,MACjCD,MAAM2/B,mBAAmB3/B,QAAQ;AAAA,MACjC4E,OAAO+6B,mBAAmB/6B,SAAS;AAAA,MACnCsX,YAAY,CAAA;AAAA,MACZ2B,iBAAiB,CAAA;AAAA,MACjBjQ,MAAM4yB,GAAAA,aAAaC,KAAKC,MAAMD,KAAKE,OAAAA,IAAWH,gBAAarwB,MAAM,CAAC;AAAA,MAClEsjB,SAASiJ,eAAekE,MAAMC,OAAO;AAAA,IAAA;AAG7C,QAAI,CAACZ,yBAAyB;AAC1B,4CAAQ3C,KAAAA,wBAAA,EAAsB;AAAA,IAClC;AAEA,QAAI,CAAC3X,MAAMljB,oBAAoB,CAAC4iB,WAAW8a,eAAe,CAACF,0BAA0B;AACjF,4CAAQ3C,KAAAA,wBAAA,EAAsB;AAAA,IAClC;AAEA,WAAO77B,2BAAAA,IAAC,0BAAA,EACJ,GAAIkkB,OACJ,eACA,eACA,aACA,kBACA,YACA,eACA,QACA,gBAAA,CAAiC;AAAA,EAEzC;AAEA,WAASmb,yBAAwD;AAAA,IACIr+B;AAAAA,IACA4xB;AAAAA,IACAuB;AAAAA,IACArB;AAAAA,IACAwM;AAAAA,IACAzM;AAAAA,IACAkL;AAAAA,IACA98B;AAAAA,IACAs+B;AAAAA,IACAjN;AAAAA,IACAsL;AAAAA,IACA9N;AAAAA,IACA3uB;AAAAA,IACA+M;AAAAA,IACAmwB;AAAAA,IACAC;AAAAA,IACAH;AAAAA,IACA7Z;AAAAA,IACAia;AAAAA,IACA5vB;AAAAA,IACAyM;AAAAA,IACAla;AAAAA,IACAs+B;AAAAA,EAYJ,GAC/D;AAEE,UAAMpG,eAAeqG,YAAAA,gBAAAA;AACrB,UAAM7b,aAAaC,KAAAA,wBAAAA;AACnB,UAAM+J,qBAAqB5X,KAAAA,sBAAAA;AAG3B,UAAM0Z,oBAAoBnuB,MAAAA,OAAO,EAAE;AAEnC,UAAMm+B,cAAc1+B,kBAAmBm9B,mBAAmB,YAAY,YAAa;AACnF,UAAM,CAACwB,aAAaC,cAAc,IAAI19B,MAAAA,SAAqBw9B,WAAW;AAEtE,UAAM,CAAC7tB,OAAOguB,QAAQ,IAAIv+B,iBAAMY,SAAAA;AAEhC,UAAM49B,iBAAiBA,CAACrL,sBAAgE;AACpF,YAAMr2B,KAAKq2B,kBAAkBr2B,MAAMq2B,kBAAkBj2B;AAErD,aAAOo0B,iBAAiBkN,eAAe;AAAA,QACnC1hC;AAAAA,QACA2hC,gBAAgBtL;AAAAA,QAChBhN,YAAY0M;AAAAA,QACZrB;AAAAA,MAAAA,CACH,EACIziB,KAAK,MAAM;AACRwvB,iBAASv9B,MAAS;AAClB,eAAO;AAAA,MACX,CAAC,EACA6O,MAAOtN,CAAAA,MAAM;AACVg8B,iBAASh8B,CAAC;AACV+N,gBAAQC,MAAMhO,CAAC;AACf+pB,2BAAmB5a,KAAK;AAAA,UACpBsD,MAAM;AAAA,UACNC,SAAS,mCAAmC1S,EAAE0S,WAAW;AAAA,QAAA,CAC5D;AACD,eAAO;AAAA,MACX,CAAC;AAAA,IACT;AAEA,UAAMypB,cAAcA,MAAM;AACtB,UAAIL,gBAAgB,WAAW;AAC3B,YAAIvG,aAAa6G,OAAO;AACpBL,yBAAe,oBAAoB;AAAA,QACvC,WAAWL,WAAW;AAClBK,yBAAe,YAAY;AAAA,QAC/B,OAAO;AACHA,yBAAe,YAAY;AAAA,QAC/B;AAAA,MACJ,WAAWD,gBAAgB,WAAW;AAClCC,uBAAe,SAAS;AAAA,MAC5B,WAAWD,gBAAgB,uBAAuB;AAC9CC,uBAAe,qBAAqB;AAAA,MACxC,WAAWD,gBAAgB,uBAAuB;AAC9CC,uBAAe,SAAS;AAAA,MAC5B,WAAWD,gBAAgB,cAAc;AACrCC,uBAAe,YAAY;AAAA,MAC/B,OAAO;AACHA,uBAAe,SAAS;AAAA,MAC5B;AAAA,IAEJ;AAEA,UAAM7P,wBAAwB8C,sBAAsB,CAACvO,iBAAyC;AAC1F,UAAI,CAACuO,oBAAqB,QAAOvwB;AACjC,aAAOuwB,sBAAsBvO,aAAW9lB,MAAM8lB,aAAWtZ,mBAAmB,OAAOk1B,eAAe,CAAA,GAAI5b,aAAWjiB,UAAU;AAAA,IAC/H,IAAIC;AAEJ,UAAM69B,0BAA0B,OAAOnP,kBAA0C;AAE7E,UAAI;AACA,YAAI,CAACjB,uBAAuB;AACxBwO,wBAAcvN,aAAa;AAC3B,iBAAOoP,QAAQC,QAAQrP,aAAa;AAAA,QACxC;AAEA4O,uBAAe,SAAS;AAExB,cAAMU,qBAAqB,MAAMvQ,wBAAwBiB,aAAa;AAEtE,YAAI,CAACsP,oBAAoB;AACrB/B,wBAAcvN,aAAa;AAC3B,iBAAOoP,QAAQC,QAAQrP,aAAa;AAAA,QACxC;AACA,cAAMxvB,SAAS;AAAA,UACX,GAAIwvB,iBAAiB,CAAA;AAAA,QAAC;AAG1B,YAAIxiB,OAAOC,KAAK6xB,mBAAmB7lB,cAAc,EAAE,EAAE/L,SAAS,GAAG;AAC7DlN,iBAAOiZ,aAAa6lB,mBAAmB7lB;AACvCjZ,iBAAO4a,kBAAkBkkB,mBAAmBlkB;AAAAA,QAChD;AAEA,YAAI,CAAC5a,OAAO4a,iBAAiB;AACzB5a,iBAAO4a,kBAAkB5N,OAAOC,KAAKjN,OAAOiZ,UAAU;AACtD,iBAAOjZ;AAAAA,QACX;AAEA+8B,sBAAc/8B,MAAM;AACpBoQ,gBAAQmf,MAAM,uBAAuB;AAAA,UACjCC,eAAeA,iBAAiB,CAAA;AAAA,UAChCxvB;AAAAA,QAAAA,CACH;AACD,eAAOA;AAAAA,MACX,SAASqC,KAAQ;AACb+N,gBAAQC,MAAMhO,GAAC;AACf+pB,2BAAmB5a,KAAK;AAAA,UACpBsD,MAAM;AAAA,UACNC,SAAS,kCAAkC1S,IAAE0S,WAAW;AAAA,QAAA,CAC3D;AACD,eAAOya;AAAAA,MACX;AAAA,IACJ;AAEA,UAAMxI,WAAWA,CAAC+X,oBAA4C9X,qBAA+D;AACzH7W,cAAQmf,MAAM,yBAAyBwP,kBAAkB;AACzD,UAAI;AAEA,YAAI,CAACv/B,iBAAiB;AAClB8+B,yBAAeS,kBAAkB,EAAElwB,KAAK,MAAM;AAC1CoY,6BAAiBP,UAAAA;AACjB6V,wBAAYwC,kBAAkB;AAAA,UAClC,CAAC;AACD;AAAA,QACJ;AAEA,YAAIZ,gBAAgB,WAAW;AAC3BK,sBAAAA;AACAvX,2BAAiBP,UAAU;AAAA,YAAE1mB,QAAQ++B;AAAAA,UAAAA,CAAoB;AAAA,QAC7D,WAAWZ,gBAAgB,WAAW;AAClC,cAAIJ,aAAanG,aAAa6G,OAAO;AACjCxX,6BAAiBP,UAAU;AAAA,cAAE1mB,QAAQ++B;AAAAA,YAAAA,CAAoB;AACzDP,wBAAAA;AAAAA,UACJ,WAAWh/B,iBAAiB;AACxBm/B,oCAAwBI,kBAAkB,EACrClwB,KAAM7O,CAAAA,aAAW;AACdinB,+BAAiBP,UAAU;AAAA,gBACvB1mB,QAAQA,YAAU++B;AAAAA,gBAClB5+B,SAAS;AAAA,kBACLnD,MAAM;AAAA,kBACND,MAAM;AAAA,gBAAA;AAAA,cACV,CACH;AAAA,YACL,CAAC,EAAE6S,QAAQ,MAAM;AACjB4uB,0BAAAA;AAAAA,YACJ,CAAC;AAAA,UACL,OAAO;AACHvX,6BAAiBP,UAAU;AAAA,cAAE1mB,QAAQ++B;AAAAA,YAAAA,CAAoB;AACzDP,wBAAAA;AAAAA,UACJ;AAAA,QACJ,WAAWL,gBAAgB,cAAc;AACrCK,sBAAAA;AACAvX,2BAAiBP,UAAU;AAAA,YAAE1mB,QAAQ++B;AAAAA,UAAAA,CAAoB;AAAA,QAC7D,WAAWZ,gBAAgB,uBAAuB;AAC9CK,sBAAAA;AAAAA,QACJ,WAAWL,gBAAgB,uBAAuB;AAC9CK,sBAAAA;AAAAA,QACJ,WAAWL,gBAAgB,cAAc;AACrCG,yBAAeS,kBAAkB,EAAElwB,KAAK,MAAM;AAC1CoY,6BAAiBP,UAAU;AAAA,cAAE1mB,QAAQmN;AAAAA,YAAAA,CAAe;AACpDqxB,wBAAAA;AACAjC,wBAAYwC,kBAAkB;AAAA,UAClC,CAAC;AAAA,QACL,OAAO;AACHP,sBAAAA;AACAvX,2BAAiBP,UAAU;AAAA,YAAE1mB,QAAQ++B;AAAAA,UAAAA,CAAoB;AAAA,QAC7D;AAAA,MACJ,SAAS18B,KAAQ;AACb+pB,2BAAmB5a,KAAK;AAAA,UACpBsD,MAAM;AAAA,UACNC,SAAS,mCAAmC1S,IAAE0S,WAAW;AAAA,QAAA,CAC5D;AACD3E,gBAAQC,MAAMhO,GAAC;AACf4kB,yBAAiBP,UAAU;AAAA,UAAE1mB,QAAQ++B;AAAAA,QAAAA,CAAoB;AAAA,MAC7D;AAAA,IACJ;AAEA,UAAM1xB,aAAaA,CAAC+V,QAA6B;AAE7C,UAAIhjB,SAA8B,CAAA;AAClC,YAAM4+B,UAAUb,gBAAgB,gBAAgBA,gBAAgB,oBAAoBA,gBAAgB,cAAc3hC;AAClH,UAAIwiC,QAAQ;AACR,YAAI;AACAA,iBAAOC,aAAa7b,KAAK;AAAA,YAAE8b,YAAY;AAAA,UAAA,CAAO;AAAA,QAClD,SAAS78B,KAAQ;AACbA,cAAE88B,MAAMxyB,QAAQ,CAACyyB,QAAa;AAC1Bh/B,mBAAOg/B,IAAIpiC,IAAI,IAAIoiC,IAAIrqB;AAAAA,UAC3B,CAAC;AAAA,QACL;AAAA,MACJ;AACA,UAAIopB,gBAAgB,cAAc;AAC9B/9B,iBAAS;AAAA,UAAE,GAAGA;AAAAA,UAAQ,GAAG8tB,kBAAkB3f;AAAAA,QAAAA;AAAAA,MAC/C;AACA,UAAI4vB,gBAAgB,WAAW;AAC3B,cAAM3b,YAAY6c,aAAajc,IAAIpmB,MAAMwC,iBAAiBq9B,eAAezZ,IAAIxmB,EAAE;AAC/E,YAAI4lB,WAAW;AACXpiB,iBAAOpD,OAAOwlB;AAAAA,QAClB;AACA,cAAM9Q,UAAUkV,WAAWxD,IAAIxmB,IAAI4C,iBAAiBq9B,eAAeC,WAAW;AAC9E,YAAIprB,SAAS;AACTtR,iBAAOxD,KAAK8U;AAAAA,QAChB;AAAA,MACJ;AACA,aAAOtR;AAAAA,IACX;AAEA,UAAMk/B,iBAAiB/xB,OAAAA,gBAAwC;AAAA,MAC3DJ;AAAAA,MACA6Z;AAAAA,MACA3Z;AAAAA,MACAyZ,SAAS;AAAA,IAAA,CACZ;AAED,UAAM;AAAA,MACF9mB,QAAAA;AAAAA,MACAC;AAAAA,MACAs/B;AAAAA,MACA/Q;AAAAA,MACAluB;AAAAA,IAAAA,IACAg/B;AAGJ,UAAMtiC,OAAOgD,SAAOhD;AACpB,UAAMwiC,kBAAkB1B,UAAUl8B,SAAS,GAAG,IAAIk8B,UAAU3hB,MAAM,GAAG,EAAE5D,MAAM,GAAG,EAAE,EAAEE,KAAK,GAAG,IAAI,MAAMzb,OAAOA;AAC7G,UAAMwlB,cAAY6c,aAAariC,MAAMwC,iBAAiBq9B,eAAe78B,SAAOpD,EAAE;AAE9E,UAAM8hC,cAAc,CAAClc,eAAa8O,sBAAsBlP,WAAWqd,kBAAkBnO,mBAAmB,IAAIxwB;AAC5G,UAAM4+B,eAAe,CAACld,cAAYJ,WAAWud,eAAeH,eAAe,IAAI1+B;AAC/E,UAAM8+B,kBAAkBF,gBAAgBhzB,UAAU,YAAY;AAC1D,YAAMoC,OAAO,MAAMpC,QAAQgzB,cAAchB,eAAe,CAAA,CAAE;AAC1D,UAAIV,kBAAkB;AAClB,cAAM6B,eAAe7B,iBAAiB32B,IAAIhF,CAAAA,QAAKA,IAAErC,MAAM;AACvD8O,aAAKgxB,KAAK,GAAGD,YAAY;AAAA,MAC7B;AACA,aAAO/wB;AAAAA,IACX,IAAIhO;AAEJS,UAAAA,UAAU,MAAM;AACZ66B,mBAAa5N,KAAK;AAAA,IACtB,GAAG,CAACA,KAAK,CAAC;AAEV,aAASuR,gBAAgBjxB,QAAgB8L,iBAA4B;AACjEgd,mBAAaoI,SAAS,IAAI;AAC1BC,uBAAAA,8BAA8BnxB,QAAM2pB,YAAAA,gBAAgB,EAC/C5pB,KAAK,CAACoK,eAA2B;AAC9B,cAAMjE,MAAM0lB,0BAA0BzhB,UAAU;AAEhD2e,qBAAasI,YAAYlrB,IAAIglB,QAAQ;AACrCpC,qBAAauI,cAAcrxB,MAAI;AAC/B8oB,qBAAaK,kBAAkBjjB,IAAIgjB,cAAc;AACjD,cAAMoI,yBAA0BxlB,mBAAmB,CAAA,GAC9ClZ,OAAQyX,CAAAA,QAAQnE,IAAIgjB,eAAe7e,GAAG,CAAC,KAAkBnM,OAAOC,KAAK+H,IAAIiE,UAAU;AACxF2e,qBAAayI,iBAAiBD,qBAAqB;AACnDxI,qBAAa0I,oBAAoBtrB,IAAIiE,UAAU;AAE/C,cAAMsnB,kBAAkB3lB,mBAAmB,CAAA,GAAIvT,IAAK8R,WAAQnE,IAAIgjB,eAAe7e,KAAG,CAAC,EAAEzX,OAAOa,OAAO,KAAiByK,OAAOC,KAAK+H,IAAIiE,UAAU;AAC9IhZ,sBAAc,cAAc+U,IAAIiE,UAAU;AAC1ChZ,sBAAc,mBAAmBsgC,cAAc;AAAA,MACnD,CAAC;AAAA,IACT;AAEA,UAAMC,cAAcj+B,QAAQvC,SAAOjD,IAAI,KAAKwF,QAAQvC,SAAOpD,EAAE;AAE7D,UAAM6jC,0BAA0BA,MAAM;AAClC,YAAM9Q,oBAAoB;AAAA,QAAE,GAAG3vB,SAAOiZ;AAAAA,MAAAA;AACtC,UAAI2e,aAAaoC,SACb,QAAOrK,kBAAkBiI,aAAaoC,QAAQ;AAClD/5B,oBAAc,cAAc0vB,iBAAiB;AAE7C6O,kBAAAA;AAAAA,IACJ;AAEA,UAAMzlB,WAAW+J,YAAY/J,aAAajY,UAAagiB,YAAY/J,aAAa;AAEhF,UAAM2nB,qBAAqB5d,YAAY6d,UAAU;AACjD,UAAMzlB,qBAAqBnC,YAAYvZ;AAEvC,UAAM,CAACohC,iBAAiBC,kBAAkB,IAAIngC,MAAAA,SAAS,KAAK;AAE5D,UAAMoyB,mBAAmBA,MAAM;AAC3B,UAAI,CAAChQ,WAAY;AACjBsO,wBAAkB0B,iBAAiB;AAAA,QAAEl2B,IAAIkmB,WAAWlmB;AAAAA,MAAAA,CAAI,EAAEiS,KAAK,MAAM;AACjEgyB,2BAAmB,KAAK;AACxB/P,qBAAAA;AACA1E,2BAAmB5a,KAAK;AAAA,UACpBuD,SAAS;AAAA,UACTD,MAAM;AAAA,QAAA,CACT;AAAA,MACL,CAAC;AAAA,IACL;AAEA,UAAMgsB,0BAA0BA,CAAC5I,YAAuBtd,sBAA+B;AACnF,UAAIsd,YAAY;AACZ6H,wBAAgB7H,YAAYtd,iBAAe;AAC3CwjB,uBAAe,qBAAqB;AAAA,MACxC,OAAO;AACHA,uBAAe,SAAS;AAAA,MAC5B;AAAA,IACJ;AAEA,WAAOh/B,2BAAAA,KAACyS,GAAAA,eAAA,EAAc,YAAY,MAC9B,UAAA;AAAA,MAAArT,+BAACkP,OAAAA,QAAA,EAAO,OAAO4xB,gBAEX,UAAAlgC,2BAAAA,KAAA8R,qBAAA,EACK,UAAA;AAAA,QAAA,CAAC1R,mBAAmBJ,2BAAAA,KAAC2hC,GAAAA,MAAA,EAAK,OAAO5C,aACP,gBAAgBvgC,GAAAA,IAAI2gB,GAAAA,oBAAoB,yEAAyE,GACjH,eAAgBxa,CAAAA,MAAMq6B,eAAer6B,CAAe,GAC3E,UAAA;AAAA,UAAAvF,2BAAAA,IAACwiC,GAAAA,KAAA,EAAI,OAAO,WAAU,UAAA,WAEtB;AAAA,UACAxiC,2BAAAA,IAACwiC,GAAAA,KAAA,EAAI,OAAO,cAAa,UAAA,cAEzB;AAAA,UACAxiC,2BAAAA,IAACwiC,GAAAA,KAAA,EAAI,OAAO,kBAAiB,UAAA,oBAE7B;AAAA,UACAxiC,2BAAAA,IAACwiC,GAAAA,KAAA,EAAI,OAAO,kBAAiB,UAAA,iBAAA,CAE7B;AAAA,QAAA,GACJ;AAAA,QAEA5hC,2BAAAA,KAAC,QAAA,EAAK,YAAU,MACV,UAAUkgC,eAAe9X,cACzB,WAAW5pB,GAAAA,IACP4B,kBAAkB,WAAW,uBAC7B,kCAAkC,GAEvC2+B,UAAAA;AAAAA,UAAAA,gBAAgB,4CACZ9D,KAAAA,wBAAA,CAAA,CAAsB;AAAA,UAE1B8D,gBAAgB,gBACbnhC,QACA+gC,WAAWkD,QACXziC,2BAAAA,IAAC,UAAU,MAAV,EAAe,MAAW;AAAA,UAE9B2/B,gBAAgB,aACb3/B,+BAAC,6BAAA,EACG,MACA,YAAYsiC,yBACZ,yBAAyBjE,eACzB,iBAAA,CAAmC;AAAA,UAE1CsB,gBAAgB,yBAAyBvG,+CACrC,+BAAA,EAA8B,cACA,oBACA,iBAAiC;AAAA,UAEnEuG,gBAAgB,yBAAyBvG,gBACtCp5B,2BAAAA,IAAC,mCAAA,EAAkC,cACA,YAAYwB,SAAOiZ,YACnB,iBAAiBjZ,SAAO4a,gBAAAA,CAA4B;AAAA,UAE1FujB,gBAAgB,wBAAwBvG,gBACrCp5B,2BAAAA,IAAC0iC,YAAAA,sBAAA,EAAqB,cACA,YAAYlhC,UACZ,MACA,iBAAiB,OAAOmhC,uBAAuB;AAC3C/U,+BAAmB5a,KAAK;AAAA,cACpBsD,MAAM;AAAA,cACNC,SAAS;AAAA,YAAA,CACZ;AACD,kBAAMupB,eAAet+B,QAAM;AAC3Bu8B,wBAAY4E,kBAAkB;AAAA,UAClC,GAAE;AAAA,UAG3BhD,gBAAgB,aACb3/B,2BAAAA,IAAC,uBAAA,EACG,eACA,aACA,QACA,qBACA,kBACA,iBACC,WAACgB,mBAAmBkhC,sBAAsBthC,2BAAAA,KAAC,OAAA,EAAI,WAAW,4BACvD,UAAA;AAAA,YAAAZ,+BAACP,GAAAA,YAAA,EAAW,SAAS,SAAS,OAAO,aAAa,UAAA,kMAGlD;AAAA,YACAO,2BAAAA,IAACuR,GAAAA,QAAA,EAAO,OAAO,WACP,SAAS,MAAM;AACX8wB,iCAAmB,IAAI;AAAA,YAC3B,GAAG,UAAA,gBAAA,CAAa;AAAA,UAAA,EAAA,CAC5B,EAAA,CACJ;AAAA,UAEH1C,gBAAgB,oBAAoBrb,cACjCtkB,2BAAAA,IAAC,wBAAqB,YAAuB;AAAA,UAEhD2/B,gBAAgB,oBAAoBrb,cACjCtkB,2BAAAA,IAAC,uBAAA,EACG,kBACA,kBACA,SACA,qBACA,qBACA,WAAA,CAAuB;AAAA,UAE9B2/B,gBAAgB,gBACb3/B,2BAAAA,IAAC,gCAAA,EACG,YAAY8B,cAAc,GAC1B,iBACA,gBACA,iBAAiB,CAACyL,aAAaH,WAAWyE,YAAU;AAChD,kBAAM9B,UAAU6yB,KAAAA,gBAAgB;AAAA,cAC5B,GAAGlT,kBAAkB3f;AAAAA,cACrB,CAACtC,cAAcF,aAAaH,SAAS,CAAC,GAAGw1B,KAAAA,gBAAgB/wB,SAAO,IAAI;AAAA,YAAA,GACrE,IAAI;AACP6d,8BAAkB3f,UAAUA;AAC5B+wB,2BAAe+B,SAAAA;AAAAA,UACnB,GACA,SACA,SAASzB,iBACT,uBACA,iBACA,oBACA,WAAW7B,WAAWpzB,uCACjBxI,eAAA,EACG,OAAO,WACP,SAAS,MAAMi8B,eAAe,YAAY,GACzCL,UAAAA,UAAUpzB,KAAAA,CACf,EAAA,CAAc;AAAA,UAG1BvL,2BAAAA,KAAC0S,GAAAA,eAAA,EACG,UAAU,YACTzB,UAAAA;AAAAA,YAAAA,SAAS7R,2BAAAA,IAAC8iC,kBAAU,MAAA,CAAa;AAAA,YAEjC9hC,mBAAmBm9B,oBAAoBwB,gBAAgB,yBACpD3/B,2BAAAA,IAACuR,GAAAA,QAAA,EAAO,SAAS,QACT,MAAK,UACL,SAAS,MAAM;AACX6nB,2BAAaoI,SAAS,KAAK;AAC3B,qBAAO5B,eAAe,SAAS;AAAA,YACnC,GAAE,UAAA,QAEV;AAAA,YAEH5+B,mBAAmBm9B,oBAAoBwB,gBAAgB,yBACpD3/B,2BAAAA,IAACuR,GAAAA,QAAA,EAAO,SAAS,QACT,MAAK,UACL,SAAS,MAAM;AACXquB,6BAAe,qBAAqB;AAAA,YACxC,GAAE,UAAA,QAEV;AAAA,YAEH5+B,mBAAmBm9B,oBAAoBwB,gBAAgB,4CACnDpuB,GAAAA,QAAA,EAAO,SAAS,QACT,MAAK,UACL,SAAS,MAAMquB,eAAe,SAAS,GAAE,UAAA,QAEjD;AAAA,YAEH5+B,mBAAmB2+B,gBAAgB,gBAAgB/+B,2BAAAA,KAAC2Q,GAAAA,UAAO,SAAS,QACT,MAAK,UACL,OAAO,WACP,SAAS,MAAMquB,eAAe,SAAS,GAC/F,UAAA;AAAA,cAAA5/B,2BAAAA,IAAC+iC,GAAAA,eAAA,EAAa;AAAA,cAAA;AAAA,YAAA,GAElB;AAAA,2CAECxxB,GAAAA,QAAA,EAAO,SAAS,QACT,OAAO,WACP,SAAS,MAAM;AACX+gB,2BAAAA;AAAAA,YACJ,GAAE,UAAA,UAEV;AAAA,YAECqN,gBAAgB,aACb3/B,+BAACuR,GAAAA,QAAA,EAAO,SAAS,QAAQ,SAAS,MAAM+wB,wBAAAA,GAA0B,UAAA,wBAAA,CAElE;AAAA,YAEHthC,mBAAmB2+B,gBAAgB,yBAChC3/B,2BAAAA,IAACuR,GAAAA,QAAA,EACG,SAAS,UACT,OAAM,WACN,SAAS0wB,yBAAwB,UAAA,OAAA,CAGrC;AAAA,YAEHjhC,mBAAmB2+B,gBAAgB,yBAChC3/B,2BAAAA,IAACuR,GAAAA,QAAA,EACG,SAAS,UACT,OAAM,WACN,SAAS,MAAM;AACXyuB,0BAAAA;AAAAA,YACJ,GAAE,UAAA,QAGN;AAAA,YAEHh/B,oBAAoB2+B,gBAAgB,aAAaA,gBAAgB,iBAC9D/+B,2BAAAA,KAACoiC,GAAAA,eAAA,EACG,SAAS,UACT,OAAM,WACN,MAAK,UACL,SAASjC,cACT,UAAUA,gBAAiBpB,gBAAgB,aAAa,CAACqC,aACzD,WAAWrC,gBAAgB,eACrB3/B,2BAAAA,IAACijC,GAAAA,WAAA,CAAA,CAAS,IACV3gC,QAELq9B,UAAAA;AAAAA,cAAAA,gBAAgB,aAAa;AAAA,cAC7BA,gBAAgB,gBAAgB;AAAA,YAAA,GACrC;AAAA,YAEH,CAAC3+B,mBAAmBhB,2BAAAA,IAACgjC,GAAAA,eAAA,EAClB,SAAQ,UACR,OAAM,WACN,MAAK,UACL,SAASjC,cAAa,UAAA,oBAAA,CAG1B;AAAA,UAAA,EAAA,CAEJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CACJ,EAAA,CAEJ;AAAA,qCAECxW,KAAAA,oBAAA,EACG,MAAM6X,iBACN,UAAU9N,kBACV,UAAU,MAAM+N,mBAAmB,KAAK,GACxC,OAAOriC,+BAAA0S,WAAAA,UAAA,EAAE,UAAA,4BAAA,CAAyB,GAClC,MAAM9R,2BAAAA,KAAA8R,qBAAA,EAAE,UAAA;AAAA,QAAA;AAAA,QAAW1S,2BAAAA,IAAC,OAAE,UAAA,sBAAA,CACH;AAAA,QAAI;AAAA,MAAA,EAAA,CAC4B,EAAA,CAAI;AAAA,IAAA,GAE/D;AAAA,EAEJ;AAEA,WAAS8+B,qBAA0Dxa,YAAoClJ,iBAA8E;AACjL,UAAM;AAAA,MACFX;AAAAA,MACA,GAAGyoB;AAAAA,IAAAA,IACH5e;AACJ,UAAM6e,mBAA8C,CAAA;AACpD,QAAI1oB,YAAY;AACZjM,aAAOC,KAAKgM,UAAU,EAAEtM,QAASwM,CAAAA,QAAQ;AACrCwoB,yBAAiBxoB,GAAG,IAAIyoB,sBAAsB3oB,WAAWE,GAAG,GAAwBS,eAAe;AAAA,MACvG,CAAC;AAAA,IACL;AAEA,WAAO;AAAA,MACH,GAAG8nB;AAAAA,MACHzoB,YAAY0oB;AAAAA,IAAAA;AAAAA,EAEpB;AAEA,WAASC,sBAAsBjpB,UAA6BiB,iBAAsD;AAC9G,QAAIioB,mBAAmBlpB;AACvB,QAAIiB,mBAAmB,OAAOioB,qBAAqB,YAAYA,iBAAiB9nB,gBAAgB;AAC5F,YAAMA,iBAAiBH,gBAAgBioB,iBAAiB9nB,cAAc;AACtE,UAAIA,kBAAkBnB,KAAAA,kBAAkBmB,eAAepB,QAAQ,GAAG;AAC9DkpB,2BAAmB9nB,eAAepB;AAAAA,MACtC,OAAO;AAEH,YAAIoB,gBAAgB;AAChB8nB,6BAAmBzd,KAAAA,UAAUrK,eAAepB,UAAUkpB,gBAAgB;AAAA,QAC1E;AAEA,YAAI,CAACjpB,KAAAA,kBAAkBipB,gBAAgB,KAAKA,iBAAiBhpB,aAAa,SAASgpB,iBAAiB5oB,YAAY;AAC5G,gBAAMA,aAAgD,CAAA;AACtDjM,iBAAOC,KAAK40B,iBAAiB5oB,UAAU,EAAEtM,QAASwM,CAAAA,QAAQ;AACtDF,uBAAWE,GAAG,IAAIyoB,sBAAwBC,iBAAiC5oB,WAA0BE,GAAG,GAAeS,eAAe;AAAA,UAC1I,CAAC;AACDioB,6BAAmB;AAAA,YACf,GAAGA;AAAAA,YACH5oB;AAAAA,UAAAA;AAAAA,QAER;AAAA,MAEJ;AAAA,IACJ;AACA,WAAO4oB;AAAAA,EAEX;AAEA,QAAMxC,eAAeA,CAAC7hC,OAAegC,iBAA0Bq9B,eAAyB/rB,YAAqB;AACzG,QAAIT;AACJ,QAAI,CAAC7S,OAAO;AACR6S,cAAQ;AAAA,IACZ;AAGA,QAAI7Q,mBAAmBq9B,eAAej7B,SAASpE,MAAM0V,OAAO6Y,aAAa,KAAK,CAACjb,QAC3ET,SAAQ;AAEZ,UAAMyxB,WAAWC,KAAAA,gCAAgCvkC,KAAK,EAAE2e,MAAM,GAAG;AACjE,QAAI2lB,SAAS50B,SAAS,MAAM,GAAG;AAC3BmD,cAAQ,yDAAyD7S,KAAK;AAAA,IAC1E;AACA,WAAO6S;AAAAA,EACX;AAEA,QAAMuW,aAAaA,CAACppB,OAAegC,iBAA0Bq9B,eAAyBC,gBAA0B;AAC5G,QAAI,CAACt/B,MAAO,QAAOsD;AACnB,QAAIuP;AACJ,QAAI7Q,mBAAmBq9B,eAAej7B,SAASpE,MAAM0V,OAAO6Y,YAAAA,CAAa,EACrE1b,SAAQ;AACZ,QAAI7Q,mBAAmBs9B,aAAal7B,SAASpE,MAAM0V,OAAO6Y,YAAAA,CAAa,EACnE1b,SAAQ;AAIZ,WAAOA;AAAAA,EACX;ACz1BO,QAAM2xB,0BAA0BliC,MAAMmiC,cAA2C,EAAS;AAC1F,QAAM9kC,0BAA0B2C,MAAMmiC,cAA0C,EAAS;AAwCzF,QAAMC,2BAA2BpiC,MAAMyQ,KAC1C,SAAA2xB,0BAAA7kC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAkC,UAAA;AAAA,MAAAqC;AAAAA,MAAAuiC;AAAAA,MAAAC;AAAAA,MAAA3iC;AAAAA,MAAA4xB;AAAAA,MAAA0M;AAAAA,MAAAzP;AAAAA,MAAA5hB;AAAAA,MAAA21B;AAAAA,MAAAnL;AAAAA,IAAAA,IAAA75B;AAa9B,UAAA+kB,aAAmBC,KAAAA,wBAAAA;AACnB,UAAAigB,WAAiBC,YAAAA,YAAAA;AACjB,UAAAnW,qBAA2B5X,KAAAA,sBAAAA;AAC3B,UAAA;AAAA,MAAAoF;AAAAA,IAAAA,IAA4BC,gCAAAA;AAE5B,UAAA,CAAAiY,eAAAC,gBAAA,IAA0CjyB,MAAAY,SAAAA;AAgB1C,UAAA,CAAA8hC,uBAAAC,wBAAA,IAA0D3iC,MAAAY,SAAAA;AAa1D,UAAAgiC,2BAAAj7B;AAIQ,QAAA9J;AAAA,QAAAL,EAAA,CAAA,MAAA+kC,oBAAA/kC,SAAA45B,iBAAA;AAEev5B,WAAAE,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAjB;AAAAA,UAAAkhC;AAAAA,UAAAxM;AAAAA,UAAA3xB;AAAAA,UAAAq+B;AAAAA,QAAAA,IAAAngC;AAapBuS,gBAAAmf,MAAc,mBAAmB3yB,IAAIkhC,UAAUxM,qBAAqB3xB,gBAAgB;AACpF0iC,2BAAmB,mBAAiB;AAAA,UAAAzlC;AAAAA,UAAAkhC;AAAAA,QAAAA,CAAA;AAIpC/L,yBAAgB;AAAA,UAAAY,oBACQ/1B;AAAAA,UAAEkhC;AAAAA,UAAAxM;AAAAA,UAAA9xB,iBAAA;AAAA,UAAAG;AAAAA,UAAAgjC,UAAA;AAAA,UAAA3E;AAAAA,UAAA9G;AAAAA,QAAAA,CAQzB;AAAA,MAAC;AACL55B,aAAA+kC;AAAA/kC,aAAA45B;AAAA55B,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AA5BD,UAAAslC,iBAAuBjlC;AA4BrB,QAAAE;AAAA,QAAAP,SAAA+kC,kBAAA;AAEmBxkC,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAiO;AAAAA,UAAA4M;AAAAA,UAAAga;AAAAA,UAAAxT;AAAAA,UAAAmS,qBAAAuR;AAAAA,UAAA/f;AAAAA,UAAAkb,kBAAA8E;AAAAA,QAAAA,IAAAhlC;AAiBlBsS,gBAAAmf,MAAc,iBAAiBxjB,aAAa4M,UAAUga,oBAAoBxT,wBAAwBmS,uBAAqBxO,UAAU;AACjIuf,2BAAmB,iBAAe;AAAA,UAAAt2B;AAAAA,UAAA4mB;AAAAA,QAAAA,CAAA;AAKlC,cAAA/mB,YAAkBG,eAAeA,YAAWnK,SAAU,GAAG,IACnDmK,YAAWmgB,UAAA,GAAcngB,YAAWg3B,YAAa,GAAG,CAAC,IAACjiC;AAE5D,cAAAkiC,8BAAoCj3B,eAAeA,YAAWnK,SAAU,GAAG,IACrEmK,YAAWmgB,UAAWngB,YAAWg3B,YAAa,GAAG,IAAC,CAAI,IACtDh3B;AACN02B,iCAAwB;AAAA,UAAA12B,aACPi3B;AAAAA,UAA2BrqB;AAAAA,UAAA/M;AAAAA,UAAAuT;AAAAA,UAAAwT;AAAAA,UAAArB,qBAKxCA;AAAAA,UAAmBpW,oBACC4H,YAAU/J,aAAAjY,UAA4BgiB,YAAU/J,aAAA;AAAA,UAAmBilB,kBACvFA;AAAAA,QAAAA,CACH;AAAA,MAAC;AACL1gC,aAAA+kC;AAAA/kC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAvCD,UAAA2lC,eAAqBplC;AAuCnB,QAAAC;AAAA,QAAAR,EAAA,CAAA,MAAA+kC,oBAAA/kC,SAAA45B,iBAAA;AAEuBp5B,WAAAI,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAozB,qBAAA4R;AAAAA,UAAAvjC,kBAAAwjC;AAAAA,UAAAh2B;AAAAA,UAAAw1B;AAAAA,UAAAS;AAAAA,QAAAA,IAAAllC;AAiBtBkS,gBAAAmf,MAAc,qBAAmB;AAAA,UAAA+B,qBAC7BA;AAAAA,UAAmB3xB,kBACnBA;AAAAA,UAAgBwN;AAAAA,UAAAw1B;AAAAA,UAAAS;AAAAA,QAAAA,CAInB;AACDf,2BAAmB,qBAAmB;AAAA,UAAA/Q,qBAClCA;AAAAA,UAAmB3xB,kBACnBA;AAAAA,UAAgBwN;AAAAA,UAAAw1B;AAAAA,UAAAS;AAAAA,QAAAA,CAAA;AAKpBrR,yBAAgB;AAAA,UAAAvyB,iBAAA;AAAA,UAAA8xB,qBAEZA;AAAAA,UAAmB3xB,kBACnBA;AAAAA,UAAgBwN;AAAAA,UAAAw1B;AAAAA,UAAAzL;AAAAA,QAAAA,CAInB;AAAA,MAAC;AACL55B,aAAA+kC;AAAA/kC,aAAA45B;AAAA55B,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAvCD,UAAA+lC,mBAAyBvlC;AAgDU,UAAAI,KAAAkkC,qBAAqBM;AAAwB,QAAAvkC;AAAA,QAAAb,EAAA,CAAA,MAAA+lC,oBAAA/lC,EAAA,CAAA,MAAAslC,kBAAAtlC,EAAA,EAAA,MAAA2lC,gBAAA3lC,EAAA,EAAA,MAAA45B,mBAAA55B,UAAAY,IAAA;AAJ7DC,WAAA;AAAA,QAAAykC;AAAAA,QAAAS;AAAAA,QAAAJ;AAAAA,QAAAb,mBAIgBlkC;AAAAA,QAA6Cg5B;AAAAA,MAAAA;AAEnE55B,aAAA+lC;AAAA/lC,aAAAslC;AAAAtlC,cAAA2lC;AAAA3lC,cAAA45B;AAAA55B,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAKS,UAAAc,KAAAmE,QAAQuvB,aAAa;AAAC,QAAAzzB;AAAA,QAAAf,EAAA,EAAA,MAAAw0B,iBAAAx0B,UAAAglC,YAAAhlC,EAAA,EAAA,MAAA8kB,YAAA;AASf/jB,WAAA4kB,CAAAA,iBAAA;AAAA,YACL6O,eAAa6Q,UAAA;AAAA,cACT7f,gBAAcgP,eAAatyB,oBAAsBsyB,cAAaR,oBAAApkB,QAA2B;AACzF,kBAAAuX,MAAYrC,WAAUkhB,uBAAwBxgB,aAAUlmB,MAAOkmB,aAAU9lB,IAAK;AAC9EslC,qBAAS7d,GAAG;AAAA,UAAC;AAAA,QAAA;AAGrBsN,yBAAgBjxB,MAAU;AAAA,MAAC;AAC9BxD,cAAAw0B;AAAAx0B,cAAAglC;AAAAhlC,cAAA8kB;AAAA9kB,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAA6kC,8BAAA7kC,EAAA,EAAA,MAAA+zB,uBAAA/zB,UAAAw0B,iBAAAx0B,EAAA,EAAA,MAAAygC,aAAAzgC,EAAA,EAAA,MAAAoP,WAAApP,EAAA,EAAA,MAAAgxB,WAAAhxB,EAAA,EAAA,MAAAmC,kBAAAnC,EAAA,EAAA,MAAAc,MAAAd,UAAAe,IAAA;AAlBLC,0CAAC,wBAAA,EACS,MAAAF,IACY+jC,8CACD,iBAAA,OACI9Q,qBAAmB,GACpCS,eACKplB,SACOjN,gBACLs+B,WACFzP,SACI,aAAAjwB,IAQZ;AAAGf,cAAA6kC;AAAA7kC,cAAA+zB;AAAA/zB,cAAAw0B;AAAAx0B,cAAAygC;AAAAzgC,cAAAoP;AAAApP,cAAAgxB;AAAAhxB,cAAAmC;AAAAnC,cAAAc;AAAAd,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAIE,UAAAmB,KAAA8D,QAAQigC,qBAAqB;AAEjB,UAAA5jC,MAAA2D,QAAQigC,uBAAqBz2B,WAAa;AAC9C,UAAAlN,MAAA,CAAC2jC,wBAAqB,QAAA,CAAYA,uBAAqBz2B;AACjD,UAAAjN,MAAA,CAAC0jC,wBAAqB,QAAA,CAAYA,uBAAqBz2B;AAEvD,UAAAhN,MAAAyjC,uBAAqBtnB,sBAAA;AAA6B,QAAAlc;AAAA,QAAA1B,EAAA,EAAA,MAAAklC,yBAAAllC,UAAAoP,WAAApP,EAAA,EAAA,MAAA8kB,YAAA;AAC7DpjB,YAAA0N,WAAW81B,uBAAqB7P,qBAAoB,MAAA;AAErDviB,gBAAAmf,MAAc,yBAAyBiT,uBAAqB7P,kBAAoB;AAChF,cAAA+M,eAAqBtd,WAAUud,eAAgB6C,sBAAqB7P,kBAAoB;AAAC,eAClFjmB,QAAQgzB,cAAY,EAAI;AAAA,MAAC,IAAA5+B;AAEzBxD,cAAAklC;AAAAllC,cAAAoP;AAAApP,cAAA8kB;AAAA9kB,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAA6kC,8BAAA7kC,UAAAklC,yBAAAllC,EAAA,EAAA,MAAA8uB,oBAAA;AACIltB,YAAAC,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAvC,IAAA4pB;AAAAA,UAAA7N,UAAAwN;AAAAA,QAAAA,IAAAhnB;AAGC,YAAA,CACZqjC,uBAAqB;AAAA;AAAA,QAAA;AAAA,YAAA,CACrB5lC,MAAE;AAAA;AAAA,QAAA;AACP,cAAAw8B,cAAA,CAAsBoJ,sBAAqBz2B;AAAc,eAClDo2B,2BAA0BoB,aAAA;AAAA,UAAAvmC,MACvBwlC,uBAAqB7P;AAAAA,UAAAha,UAC3BA;AAAAA,UAAQ5M,aACKnP;AAAAA,UAAE6f,oBACK2c,eAAeoJ,sBAAqBrjB,yBAAuB,CAAA,GAAOqjB,sBAAqBrjB,wBAAyBviB,IAAE,IAAAkE;AAAAA,UAAa8K,WACxI42B,sBAAqB52B;AAAAA,UAAA0lB,qBACXkR,sBAAqBlR;AAAAA,QAAAA,CAC7C,EAAC3hB,MAAAtN,CAAAA,MAAA;AAEM+N,kBAAAC,MAAchO,CAAC;AACf+pB,6BAAkB5a,KAAA;AAAA,YAAAsD,MACR;AAAA,YAAOC,SACJ,iCAAiC1S,EAAC0S,WAAY;AAAA,UAAA,CAC1D;AAAC,iBAAA;AAAA,QAAA,CAEL;AAAA,MAAC;AACTzX,cAAA6kC;AAAA7kC,cAAAklC;AAAAllC,cAAA8uB;AAAA9uB,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6B;AAAA,QAAA7B,EAAA,EAAA,MAAA6kC,8BAAA7kC,UAAAklC,uBAAArjB,0BAAA7hB,EAAA,EAAA,MAAAklC,uBAAA7P,sBAAAr1B,EAAA,EAAA,MAAAklC,uBAAA52B,aAAAtO,EAAA,EAAA,MAAAklC,uBAAAlR,uBAAAh0B,EAAA,EAAA,MAAAklC,uBAAAz2B,eAAAzO,UAAA8uB,oBAAA;AAESjtB,YAAAA,MAAA;AAAA,YAAA,CACDqjC,uBAAqBz2B,aAAA;AAAA;AAAA,QAAA;AAC1B,cAAA0Q,qBAA2B+lB,uBAAqBrjB,wBAAAzd,OAAA8d,CAAAA,MAAsCA,MAAMgjB,uBAAqBz2B,WAAa;AAAE,eACzHo2B,2BAA0B1iB,eAAA;AAAA,UAAAziB,MACvBwlC,uBAAqB7P;AAAAA,UAAA5mB,aACdy2B,uBAAqBz2B;AAAAA,UAAAH,WACvB42B,uBAAqB52B;AAAAA,UAAA6Q;AAAAA,UAAA6U,qBAEXkR,uBAAqBlR;AAAAA,QAAAA,CAC7C,EAACziB,KAAA,MAAA;AAEM4zB,mCAAwB3hC,MAAU;AAAA,QAAC,CACtC,EAAC6O,MAAA1K,CAAAA,QAAA;AACEmL,kBAAAC,MAAchO,GAAC;AACf+pB,6BAAkB5a,KAAA;AAAA,YAAAsD,MACR;AAAA,YAAOC,SACJ,+BAA+B1S,IAAC0S,WAAY;AAAA,UAAA,CACxD;AAAC,iBAAA;AAAA,QAAA,CAEL;AAAA,MAAC;AACTzX,cAAA6kC;AAAA7kC,QAAA,EAAA,IAAAklC,uBAAArjB;AAAA7hB,QAAA,EAAA,IAAAklC,uBAAA7P;AAAAr1B,QAAA,EAAA,IAAAklC,uBAAA52B;AAAAtO,QAAA,EAAA,IAAAklC,uBAAAlR;AAAAh0B,QAAA,EAAA,IAAAklC,uBAAAz2B;AAAAzO,cAAA8uB;AAAA9uB,cAAA6B;AAAAA,IAAA,OAAA;AAAAA,YAAA7B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAAC;AAAA,QAAAkD;AAAA,QAAAlF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGYqB,YAAAA,MAAA;AACTojC,iCAAwB3hC,MAAU;AAAA,MAAC;AAE7BxB,YAAAA,MAAA;AACNmjC,iCAAwB3hC,MAAU;AAAA,MAAC;AAExB0B,YAAA,CAAA;AAAElF,cAAA+B;AAAA/B,cAAAgC;AAAAhC,cAAAkF;AAAAA,IAAA,OAAA;AAAAnD,YAAA/B,EAAA,EAAA;AAAAgC,YAAAhC,EAAA,EAAA;AAAAkF,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoF;AAAA,QAAApF,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEK0E,YAAA,CAAA;AAAEpF,cAAAoF;AAAAA,IAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAGd,UAAAqF,MAAA6/B,uBAAqB7pB;AAClB,UAAA/V,MAAA4/B,uBAAqBz2B;AAAa,QAAAjJ;AAAA,QAAAxF,EAAA,EAAA,MAAAsc,mBAAAtc,EAAA,EAAA,MAAAsB,OAAAtB,UAAAuB,OAAAvB,EAAA,EAAA,MAAAwB,OAAAxB,EAAA,EAAA,MAAAyB,OAAAzB,EAAA,EAAA,MAAA0B,OAAA1B,EAAA,EAAA,MAAA4B,OAAA5B,UAAA6B,OAAA7B,EAAA,EAAA,MAAAqF,OAAArF,EAAA,EAAA,MAAAsF,OAAAtF,UAAAmB,IAAA;AA3EnDqE,2CAAC,oBAAA,EACS,MAAArE,IACY,kBAAA,MACA,kBAAAG,KACJ,cAAAC,KACM,oBAAAC,KACX,SAAA,OACW,oBAAAC,KACX,SAAAC,KAOU,mBAAAE,KAwBS,4BAAA,OAClB,UAAAC,KAqBD,SAAAmI,QAEI,aAAAjI,KAGH,UAAAC,KAGK,eAAAkD,KACE,iBAAA,OACK,sBAAAE,KACF,oBAAA,MACHkX,iBACP,UAAAjX,KACG,aAAAC,KAAkC;AAAGtF,cAAAsc;AAAAtc,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAwB;AAAAxB,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA4B;AAAA5B,cAAA6B;AAAA7B,cAAAqF;AAAArF,cAAAsF;AAAAtF,cAAAmB;AAAAnB,cAAAwF;AAAAA,IAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyF;AAAA,QAAAzF,EAAA,EAAA,MAAAsC,YAAAtC,EAAA,EAAA,MAAAwF,OAAAxF,EAAA,EAAA,MAAAa,MAAAb,UAAAgB,IAAA;AA3G1DyE,YAAA3D,2BAAAA,KAAA,wBAAA,UAAA,EACW,OAAAjB,IAQNyB,UAAAA;AAAAA,QAAAA;AAAAA,QAEDtB;AAAAA,QAqBAwE;AAAAA,MAAAA,GA6EJ;AAAmCxF,cAAAsC;AAAAtC,cAAAwF;AAAAxF,cAAAa;AAAAb,cAAAgB;AAAAhB,cAAAyF;AAAAA,IAAA,OAAA;AAAAA,YAAAzF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0F;AAAA,QAAA1F,EAAA,EAAA,MAAA6kC,8BAAA7kC,UAAAyF,KAAA;AA9GvCC,2CAAA,wBAAA,UAAA,EAAyCm/B,OAAAA,4BACrCp/B,UAAAA,KA+GJ;AAAmCzF,cAAA6kC;AAAA7kC,cAAAyF;AAAAzF,cAAA0F;AAAAA,IAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA,WAhHnC0F;AAAAA,EAgHmC,GAExCsO,KAAK;AAxRR,WAAA7J,QAAA;AAAA,WAAA;AAAA,MAAA+7B,mBAAA;AAAA,MAAAC,iBAAA;AAAA,MAAAC,mBAAA;AAAA,IAAA;AAAA,EAAA;AAAA,WAAAp8B,SAAA;AAAA,EAAA;ACxDG,WAAAq8B,uBAAAtmC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAgC,UAAA;AAAA,MAAAP,MAAA8gC;AAAAA,MAAAxM;AAAAA,MAAAxO;AAAAA,MAAA8gB;AAAAA,IAAAA,IAAAvmC;AAOnC,UAAAo8B,iBAAuBC,KAAAA,kBAAAA;AACvB,UAAAmK,uBAA6BxhB,KAAAA,wBAAAA;AAC7B,UAAAyhB,6BAAmC7mC,8BAAAA;AAAgC,QAAAU;AAAA,QAAAL,EAAA,CAAA,MAAAumC,wBAAAvmC,SAAAg0B,qBAAA;AAE1C3zB,WAAAkmC,qBAAoBE,qBAAsBzS,mBAAmB;AAACh0B,aAAAumC;AAAAvmC,aAAAg0B;AAAAh0B,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAvF,UAAAqC,mBAAyBhC;AAA+D,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAm8B,kBAAAn8B,SAAAwlB,cAAAxlB,EAAA,CAAA,MAAAwmC,4BAAA;AAE9DjmC,WAAAimC,2BAA0B1B,oBAC9C0B,2BAA0B1B,kBAAA;AAAA,QAAAzE,MAClBlE,eAAckE;AAAAA,QAAA7a;AAAAA,MAAAA,CAEvB,EAAC2gB,kBAAA;AACInmC,aAAAm8B;AAAAn8B,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AALV,UAAA0mC,oBAA0BnmC;AASf,UAAAC,KAAAkmC,oBAAoB,oBAAoB;AAIjC,UAAA9lC,MAAC8lC;AAAiB,QAAA7lC;AAAA,QAAAb,EAAA,CAAA,MAAA0mC,qBAAA1mC,EAAA,CAAA,MAAAwlB,cAAAxlB,EAAA,CAAA,MAAAwmC,8BAAAxmC,EAAA,EAAA,MAAAwgC,YAAAxgC,EAAA,EAAA,MAAAqC,oBAAArC,EAAA,EAAA,MAAAg0B,uBAAAh0B,EAAA,EAAA,MAAAsmC,iBAAA90B,MAAA;AACnB3Q,WAAA6lC,oBAAiB,MACdF,4BAA0BlB,eAAA;AAAA,QAAAhmC,IAC1BkmB,WAAUlmB;AAAAA,QAAAkhC;AAAAA,QAAAxM;AAAAA,QAAA3xB;AAAAA,QAG2Cq+B,kBACvC4F,iBAAe90B,QAAA,CAAA;AAAA,MAAA,CAAY,IAAAhO;AAEtCxD,aAAA0mC;AAAA1mC,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,cAAAwgC;AAAAxgC,cAAAqC;AAAArC,cAAAg0B;AAAAh0B,QAAA,EAAA,IAAAsmC,iBAAA90B;AAAAxR,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACfI,0CAACkG,GAAAA,cAAA,EAAmB,MAAA,QAAA,CAAO;AAAGhH,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAY,MAAAZ,UAAAa,IAAA;AAblCE,WAAAG,2BAAAA,IAAC2D,GAAAA,YAAA,EACS,MAAA,SACC,OAAA,WACG,UAAAjE,IACD,SAAAC,IASTC,UAAAA,GAAAA,CACJ;AAAad,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAQ,MAAAR,UAAAe,IAAA;AAjBIC,0CAACI,GAAAA,SAAA,EACT,SAAA,MACF,OAAAZ,IACPO,UAAAA,IAeJ;AAAUf,cAAAQ;AAAAR,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAlBV,UAAA2mC,eAAqB3lC;AAkBV,QAAAG;AAAA,QAAAnB,UAAA2mC,cAAA;AAEJxlC,yFACU;AACdnB,cAAA2mC;AAAA3mC,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAFImB;AAAAA,EAEJ;ACxCA,QAAMylC,iCAAiCA,MAAA;AAAA,WAAmChnC,MAAAA,WAAA8kC,uBAAkC;AAAA,EAAC;ACG7G,WAAAmC,+BAAA9mC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwC,UAAA;AAAA,MAAAulB;AAAAA,IAAAA,IAAAzlB;AAM3C,UAAA+uB,qBAA2B5X,KAAAA,sBAAAA;AAC3B,UAAAilB,iBAAuBC,KAAAA,kBAAAA;AACvB,UAAAtI,mBAAyB8S,+BAAAA;AACzB,UAAAJ,6BAAmC7mC,8BAAAA;AAAgC,QAAAU;AAAA,QAAAL,EAAA,CAAA,MAAAm8B,eAAAkE,QAAArgC,EAAA,CAAA,MAAAwlB,cAAAxlB,EAAA,CAAA,MAAAwmC,4BAAA;AAE/CnmC,WAAAmmC,2BAA0B1B,kBAAA;AAAA,QAAAzE,MACpClE,eAAckE;AAAAA,QAAA7a;AAAAA,MAAAA,CAEvB;AAACxlB,QAAA,CAAA,IAAAm8B,eAAAkE;AAAArgC,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAHF,UAAA8mC,cAAoBzmC;AAGjB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAwlB,cAAAxlB,SAAAwmC,4BAAA;AAE6BjmC,WAAAA,MAAA;AAC5BimC,oCAA0BlB,eAAA;AAAA,UAAAhmC,IAClBkmB,WAAUlmB;AAAAA,UAAA00B,qBAAA,CAAA;AAAA,QAAA,CAAA;AAAA,MAAA;AAGrBh0B,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AALD,UAAA+mC,0BAAgCxmC;AAOhC,UAAA,CAAA+iC,iBAAAC,kBAAA,IAA8CngC,MAAAA,cAAc;AAAE,QAAA5C;AAAA,QAAAR,EAAA,CAAA,MAAAwlB,cAAAxlB,SAAA8zB,oBAAA9zB,EAAA,CAAA,MAAA8uB,oBAAA;AAErCtuB,WAAAA,MAAA;AACrBszB,0BAAgB0B,iBAAA;AAAA,UAAAl2B,IAAyBkmB,WAAUlmB;AAAAA,QAAAA,CAAA,EAAAiS,KAAA,MAAA;AAC/CgyB,kCAAwB;AACxBzU,6BAAkB5a,KAAA;AAAA,YAAAuD,SACL;AAAA,YAAoBD,MACvB;AAAA,UAAA,CACT;AAAA,QAAC,CAAA;AAAA,MAAA;AAETxX,aAAAwlB;AAAAxlB,aAAA8zB;AAAA9zB,aAAA8uB;AAAA9uB,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AARD,UAAAw1B,mBAAyBh1B;AAQvB,QAAAI;AAAA,QAAAZ,EAAA,EAAA,MAAA8mC,YAAAV,mBAAA;AAKOxlC,WAAAkmC,YAAWV,qBACRllC,2BAAAA,IAAC8lC,GAAAA,MAAA,EACY,SAAA9lC,2BAAAA,IAAC2D,GAAAA,YAAA,EAAiB,MAAA,SACvB,UAAA3D,2BAAAA,IAAC+lC,mBAAmB,MAAA,QAAA,CAAO,GAC/B,GAEA,UAAAnlC,2BAAAA,KAAColC,GAAAA,YACU,OAAA,MACE,SAAA5oB,CAAAA,UAAA;AACLA,cAAKpE,eAAAA;AACLoE,cAAKnE,gBAAAA;AACLopB,+BAAuB;AAAA,MAAC,GAE5B,UAAA;AAAA,QAAAriC,2BAAAA,IAACsqB,GAAAA,YAAA,EAAU;AAAA,QAAE;AAAA,MAAA,EAAA,CAEjB,EAAA,CAEJ;AAAOxrB,QAAA,EAAA,IAAA8mC,YAAAV;AAAApmC,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,UAAA+mC,2BAAA/mC,EAAA,EAAA,MAAA8mC,YAAAX,iBAAA;AAIVtlC,WAAAimC,YAAWX,mBACRjlC,+BAAC2D,GAAAA,cACS,MAAA,SACG,SAAAsiC,CAAAA,YAAA;AACLJ,gCAAAA;AAAAA,MAAyB,GAE7B,UAAA7lC,+BAAC8F,GAAAA,cAAA,EAAmB,MAAA,SAAO,GAC/B;AAAahH,cAAA+mC;AAAA/mC,QAAA,EAAA,IAAA8mC,YAAAX;AAAAnmC,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAY,MAAAZ,UAAAa,IAAA;AA7BrBC,2CAAA,OAAA,EACKF,UAAAA;AAAAA,QAAAA;AAAAA,QAqBAC;AAAAA,MAAAA,GAQL;AAAMb,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAC;AAAA,QAAAhB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAKQK,WAAAA,MAAMwiC,wBAAwB;AACjCviC,iEAAE,UAAA,0BAAA,CAAuB;AAAGhB,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAD,WAAAf,EAAA,EAAA;AAAAgB,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAC7BS,kEAAE,UAAA;AAAA,QAAA;AAAA,QAAWD,2BAAAA,IAAA,OAAG,UAAA,sBAAA,CACH;AAAA,QAAI;AAAA,MAAA,GACM;AAAGlB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAw1B,oBAAAx1B,UAAAsjC,iBAAA;AAPpChiC,YAAAJ,2BAAAA,IAACuqB,KAAAA,oBAAA,EACS6X,MAAAA,iBACI9N,UAAAA,kBACA,UAAAz0B,IACH,OAAAC,IACD,MAAAG,GAAAA,CAE0B;AAAGnB,cAAAw1B;AAAAx1B,cAAAsjC;AAAAtjC,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAc,IAAA;AAzCpCS,mEAEHT,UAAAA;AAAAA,QAAAA;AAAAA,QAgCAQ;AAAAA,MAAAA,GAOuC;AACxCtB,cAAAsB;AAAAtB,cAAAc;AAAAd,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,WA1CIuB;AAAAA,EA0CJ;AClFA,WAAA6lC,2BAAArnC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAoC,UAAA;AAAA,MAAAwO;AAAAA,MAAA44B;AAAAA,MAAAhsB;AAAAA,MAAA2Y;AAAAA,MAAAxO;AAAAA,MAAA8gB;AAAAA,IAAAA,IAAAvmC;AAkBvC,UAAAymC,6BAAmC7mC,8BAAAA;AAOZ,UAAAU,KAAAgnC,UAAU,iCAAiC;AAAQ,QAAA9mC;AAAA,QAAAP,EAAA,CAAA,MAAAwlB,cAAAxlB,SAAAwmC,8BAAAxmC,EAAA,CAAA,MAAAg0B,uBAAAh0B,EAAA,CAAA,MAAAqb,YAAArb,EAAA,CAAA,MAAAyO,eAAAzO,EAAA,CAAA,MAAAsmC,gBAAA90B,MAAA;AACrDjR,WAAAA,MAAA;AACLimC,mCAA0Bb,aAAA;AAAA,UAAAl3B;AAAAA,UAAA4M;AAAAA,UAAAga,oBAGF7P,WAAUlmB;AAAAA,UAAA00B;AAAAA,UAAAxO;AAAAA,UAAAkb,kBAGZ4F,gBAAe90B,QAAA,CAAA;AAAA,QAAA,CACpC;AAAA,MAAC;AACLxR,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAg0B;AAAAh0B,aAAAqb;AAAArb,aAAAyO;AAAAzO,QAAA,CAAA,IAAAsmC,gBAAA90B;AAAAxR,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEDF,0CAACwG,GAAAA,cAAA,EAAmB,MAAA,QAAA,CAAO;AAAGhH,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAK,MAAAL,SAAAO,IAAA;AAhBtCK,0CAACQ,GAAAA,SAAA,EACY,eACF,OAAA,QACP,UAAAF,+BAAC2D,GAAAA,YAAA,EACc,WAAAxE,IACF,SAAAE,IAUH,MAAA,SACNC,cACJ,GACJ;AAAUR,aAAAK;AAAAL,aAAAO;AAAAP,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,WAlBVY;AAAAA,EAkBU;ACxCX,WAAA0mC,2BAAAvnC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAoC,UAAA;AAAA,MAAA+zB;AAAAA,MAAAxO;AAAAA,MAAA8gB;AAAAA,IAAAA,IAAAvmC;AAYvC,UAAAo8B,iBAAuBC,KAAAA,kBAAAA;AACvB,UAAAoK,6BAAmC7mC,8BAAAA;AACnC,UAAA+mC,oBAA0BF,2BAA0B1B,oBAC9C0B,2BAA0B1B,kBAAA;AAAA,MAAAzE,MAClBlE,eAAckE;AAAAA,MAAA7a;AAAAA,IAAAA,CAEvB,EAAC2gB,kBAAA;AAMS,UAAA9lC,KAAAqmC,oBAAoB,qBAAqB;AAAiD,QAAAnmC;AAAA,QAAAP,EAAA,CAAA,MAAAwlB,cAAAxlB,SAAAwmC,8BAAAxmC,EAAA,CAAA,MAAAg0B,uBAAAh0B,EAAA,CAAA,MAAAsmC,gBAAA90B,MAAA;AAIpFjR,WAAAA,MAAA;AACLimC,mCAA0Bb,aAAA;AAAA,UAAAtQ,oBACF7P,WAAUlmB;AAAAA,UAAA00B;AAAAA,UAAAnS,wBAEN0lB,KAAAA,0BAA0B/hB,UAAU;AAAA,UAACA;AAAAA,UAAAkb,kBAE3C4F,gBAAe90B;AAAAA,QAAAA,CACpC;AAAA,MAAC;AACLxR,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAg0B;AAAAh0B,QAAA,CAAA,IAAAsmC,gBAAA90B;AAAAxR,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACDF,0CAACiiB,GAAAA,SAAA,EAAe,OAAA,UAAA,CAAS;AAAGziB,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,SAAAO,IAAA;AAZhCK,mDACe,WAAA,wLAEF,SAAAL,IASTC,UAAAA,IACJ;AAAMR,aAAAO;AAAAP,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAK,MAAAL,SAAAY,IAAA;AAhBVC,0CAACO,GAAAA,SAAA,EACY,SAAA,MACF,OAAAf,IACPO,UAAAA,IAcJ;AAAUZ,aAAAK;AAAAL,aAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,WAjBVa;AAAAA,EAiBU;ACzCX,WAAA2mC,sBAAA;AAAA,UAAAxnC,IAAAC,qBAAAA,EAAA,CAAA;AACH,UAAAumC,6BAAmC7mC,8BAAAA;AAAgC,QAAAI;AAAA,QAAAC,SAAAwmC,4BAAA;AAI9CzmC,WAAAA,MAAMymC,2BAA0BT,iBAAA;AAAA,QAAA/R,qBAAA,CAAA;AAAA,QAAAqR,UAAA;AAAA,QAAAS,aAGxB;AAAA,MAAA,CAChB;AAAC9lC,aAAAwmC;AAAAxmC,aAAAD;AAAAA,IAAA,OAAA;AAAAA,WAAAC,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAK;AAAA,QAAAL,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACNL,0CAACoiB,GAAAA,SAAA,EAAO;AAAEziB,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAO;AAAA,QAAAP,SAAAD,IAAA;AARXQ,WAAAW,2BAAAA,IAAA,OAAA,EAAgB,WAAA,uDACnB,UAAAY,2BAAAA,KAAC2Q,GAAAA,QAAA,EAAkB,WAAA,aACF,SAAA,YACA,SAAA1S,IAKbM,UAAAA;AAAAA,QAAAA;AAAAA,QAAU;AAAA,MAAA,EAAA,CAEd,EAAA,CACJ;AAAML,aAAAD;AAAAC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,WAXCO;AAAAA,EAWD;ACPH,WAAAknC,4BAAA1nC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAqC,UAAA;AAAA,MAAA+zB;AAAAA,MAAAxO;AAAAA,MAAA8gB;AAAAA,IAAAA,IAAAvmC;AAOxC,UAAAo8B,iBAAuBC,KAAAA,kBAAAA;AACvB,UAAAoK,6BAAmC7mC,8BAAAA;AACnC,UAAAm0B,mBAAyB8S,+BAAAA;AACzB,UAAA9X,qBAA2B5X,KAAAA,sBAAAA;AAAwB,QAAA7W;AAAA,QAAAL,EAAA,CAAA,MAAAm8B,kBAAAn8B,SAAAwlB,cAAAxlB,EAAA,CAAA,MAAAwmC,4BAAA;AAEzBnmC,WAAAmmC,2BAA0B1B,oBAC9C0B,2BAA0B1B,kBAAA;AAAA,QAAAzE,MAClBlE,eAAckE;AAAAA,QAAA7a;AAAAA,MAAAA,CAEvB,EAAC2gB,kBAAA;AACInmC,aAAAm8B;AAAAn8B,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AALV,UAAA0mC,oBAA0BrmC;AAO1B,QAAAqnC,0BAAA;AAAmC,QAC/B,CAAC1zB,MAAM2zB,gBAAgBrB,gBAAesB,YAAa,GAAGD,gBAAgBniB,WAAUgL,aAAc,CAAC,KAAC,CAC/Fxc,MAAM2zB,gBAAgBrB,gBAAeuB,MAAO,GAAGF,gBAAgBniB,WAAUiL,WAAY,CAAC,GAAC;AAIzE,YAAAlwB,MAAA+lC,gBAAeuB,UAAWvB,gBAAesB,eAAgB,iCAAiC;AAA+B,UAAApnC;AAAA,UAAAR,EAAA,CAAA,MAAAwlB,cAAAxlB,EAAA,CAAA,MAAA8zB,oBAAA9zB,EAAA,CAAA,MAAAg0B,uBAAAh0B,SAAA8uB,sBAAA9uB,EAAA,CAAA,MAAAsmC,gBAAAsB,gBAAA5nC,EAAA,CAAA,MAAAsmC,gBAAAuB,QAAA;AAInHrnC,cAAAA,MAAMszB,kBAAgBkN,eAAA;AAAA,UAAA1hC,IAEnBkmB,WAAUlmB;AAAAA,UAAA00B;AAAAA,UAAAiN,gBAEEna,KAAAA,UAAUtB,YAAiC;AAAA,YAAAgL,eAEpC8V,gBAAesB,gBAAA;AAAA,YAAqBnX,aACtC6V,gBAAeuB,UAAA;AAAA,UAAA,CAC/B;AAAA,QAAA,CAAC,EAAAt2B,KAAA,MAAA;AAENud,6BAAkB5a,KAAA;AAAA,YAAAsD,MACR;AAAA,YAASC,SACN;AAAA,UAAA,CACZ;AAAA,QAAC,CAAA;AACJzX,eAAAwlB;AAAAxlB,eAAA8zB;AAAA9zB,eAAAg0B;AAAAh0B,eAAA8uB;AAAA9uB,UAAA,CAAA,IAAAsmC,gBAAAsB;AAAA5nC,UAAA,CAAA,IAAAsmC,gBAAAuB;AAAA7nC,gBAAAQ;AAAAA,MAAA,OAAA;AAAAA,cAAAR,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAY;AAAA,UAAAZ,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACNE,4CAACknC,GAAAA,UAAA,EAAQ;AAAE9nC,gBAAAY;AAAAA,MAAA,OAAA;AAAAA,aAAAZ,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAa;AAAA,UAAAb,UAAAQ,KAAA;AAlBfK,aAAAK,2BAAAA,IAACuR,aACS,MAAA,SACG,SAAA,YACA,SAAAjS,KAeTI,UAAAA,GAAAA,CACJ;AAASZ,gBAAAQ;AAAAR,gBAAAa;AAAAA,MAAA,OAAA;AAAAA,aAAAb,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAc;AAAA,UAAAd,EAAA,EAAA,MAAAO,OAAAP,UAAAa,IAAA;AAtBbC,4CAACM,GAAAA,SAAA,EACY,SAAA,MACF,OAAAb,KACPM,UAAAA,IAoBJ;AAAUb,gBAAAO;AAAAP,gBAAAa;AAAAb,gBAAAc;AAAAA,MAAA,OAAA;AAAAA,aAAAd,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAe;AAAA,UAAAf,EAAA,EAAA,MAAAwlB,WAAAgL,iBAAAxwB,EAAA,EAAA,MAAAwlB,WAAAiL,eAAAzwB,UAAAsmC,iBAAA;AAETvlC,cAACykB,WAAUgL,iBAAkBhL,WAAUiL,gBAAiBvvB,+BAACE,GAAAA,WAC/C,OAAA,oCACP,UAAAF,+BAACuR,GAAAA,QAAA,EACU,OAAA,WACD,MAAA,SACG,SAAA,QACA,SAAA,MAAA;AACL6zB,0BAAeyB,cAAAA;AAAA,cACXviB,YAAUgL,eAAA;AACV8V,4BAAe0B,kBAAmBxiB,YAAUgL,aAAA;AAAA,UAAA;AAAA,cAC5ChL,YAAUiL,aAAA;AACV6V,4BAAe2B,YAAaziB,YAAUiL,WAAA;AAAA,UAAA;AAAA,QAAA,GAE9C,UAAAvvB,2BAAAA,IAACgnC,GAAAA,UAAA,CAAA,CAAQ,EAAA,CACb,GACJ;AAAUloC,UAAA,EAAA,IAAAwlB,WAAAgL;AAAAxwB,UAAA,EAAA,IAAAwlB,WAAAiL;AAAAzwB,gBAAAsmC;AAAAtmC,gBAAAe;AAAAA,MAAA,OAAA;AAAAA,aAAAf,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAgB;AAAA,UAAAhB,EAAA,EAAA,MAAAc,MAAAd,UAAAe,IAAA;AAzCYC,oEACtBF,UAAAA;AAAAA,UAAAA;AAAAA,UAyBCC;AAAAA,QAAAA,GAeS;AACXf,gBAAAc;AAAAd,gBAAAe;AAAAf,gBAAAgB;AAAAA,MAAA,OAAA;AAAAA,aAAAhB,EAAA,EAAA;AAAA,MAAA;AA1CH0nC,gCAA0BA;AAAAA,IAAH;AA8CtB,UAAAnnC,KAAAmmC,qBAAqBgB;AAAuB,QAAAlnC;AAAA,QAAAR,UAAAO,IAAA;AAD1CC,iEACFD,UAAAA,GAAAA,CAA4C;AAC9CP,cAAAO;AAAAP,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAAA,WAFIQ;AAAAA,EAEJ;AAIP,WAASmnC,gBAAgBQ,GAA2B;AAChD,QAAIA,KAAKz4B,OAAOC,KAAKw4B,CAAC,EAAEv4B,WAAW,EAC/B,QAAOu4B;AACX,WAAOA,KAAK;AAAA,EAChB;AClFO,WAAAC,kBAAAroC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA2B,UAAA;AAAA,MAAAoE;AAAAA,MAAAgkC;AAAAA,IAAAA,IAAAtoC;AAGqC,QAAA,CAE9DsoC,QAAOvjB,WAAAqa,oBAAA;AAAA,YACF5zB,MAAM,yCAAyC;AAAA,IAAC;AAE1D,UAAA4wB,iBAAuBC,KAAAA,kBAAAA;AAEvB,UAAAoK,6BAAmC7mC,8BAAAA;AAAgC,QAAAU;AAAA,QAAAL,EAAA,CAAA,MAAAm8B,kBAAAn8B,SAAAwmC,4BAAA;AACtCnmC,WAAAmmC,2BAA0B1B,oBACjD0B,2BAA0B1B,kBAAA;AAAA,QAAAzE,MAClBlE,eAAckE;AAAAA,MAAAA,CACvB,EAAC6F,oBAAA;AACIlmC,aAAAm8B;AAAAn8B,aAAAwmC;AAAAxmC,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAJV,UAAAsoC,uBAA6BjoC;AAIlB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAGUH,WAAAD,GAAAA,IAAI,0BAA0B;AAACN,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAsoC,wBAAAtoC,SAAAwmC,8BAAAxmC,EAAA,CAAA,MAAAqE,OAAA;AACjC7D,WAAAgmC,8BAA8B8B,uBAAoB,MAC/C9B,2BAA0BT,iBAAA;AAAA,QAAAl2B,eACfxL,QAAK;AAAA,UAAAA;AAAAA,QAAAA,IAAAb;AAAAA,QAAwBwwB,qBAAA,CAAA;AAAA,QAAAqR,UAAA;AAAA,QAAAS,aAG/B;AAAA,MAAA,CAChB,IAACtiC;AACSxD,aAAAsoC;AAAAtoC,aAAAwmC;AAAAxmC,aAAAqE;AAAArE,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAIbE,WAAAM,2BAAAA,IAACuhB,YAAA,EAAc,OAAA,WAAgB,MAAA,SAAO;AAAGziB,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACzCG,WAAAK,2BAAAA,IAACP,GAAAA,YAAA,EAAiB,OAAA,WACG,SAAA,WACE,WAAA,eAAgB,UAAA,qBAAoBoN,YAAAA,EAAa,CAAE;AAAa/N,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,UAAAsoC,sBAAA;AAEtFxnC,WAAA,CAACwnC,wBACEpnC,2BAAAA,IAACP,GAAAA,YAAA,EAAoB,SAAA,WAAW,UAAA,oDACjB;AAAaX,cAAAsoC;AAAAtoC,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAAc,IAAA;AATpCC,oDACc,WAAA,qEACVH,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,QAICC;AAAAA,MAAAA,GAIL;AAAMd,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAQ,MAAAR,UAAAe,IAAA;AArBVC,0CAACK,GAAAA,MAAA,EAAgB,WAAAd,IACF,SAAAC,IASXO,UAAAA,IAaJ;AAAOf,cAAAQ;AAAAR,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,WAvBPgB;AAAAA,EAuBO;ACvCR,WAAAunC,mBAAAxoC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA4B,UAAA;AAAA,MAAAP,MAAA8gC;AAAAA,MAAAxM;AAAAA,MAAAxO;AAAAA,MAAAgjB;AAAAA,IAAAA,IAAAzoC;AAO/B,UAAAo8B,iBAAuBC,KAAAA,kBAAAA;AACvB,UAAAmK,uBAA6BxhB,KAAAA,wBAAAA;AAC7B,UAAAyhB,6BAAmC7mC,8BAAAA;AAAgC,QAAAU;AAAA,QAAAL,EAAA,CAAA,MAAAumC,wBAAAvmC,SAAAg0B,qBAAA;AAE1C3zB,WAAAkmC,qBAAoBE,qBAAsBzS,mBAAmB;AAACh0B,aAAAumC;AAAAvmC,aAAAg0B;AAAAh0B,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAvF,UAAAqC,mBAAyBhC;AAA+D,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAm8B,kBAAAn8B,SAAAwlB,cAAAxlB,EAAA,CAAA,MAAAwmC,4BAAA;AAE9DjmC,WAAAimC,2BAA0B1B,oBAC9C0B,2BAA0B1B,kBAAA;AAAA,QAAAzE,MAClBlE,eAAckE;AAAAA,QAAA7a;AAAAA,MAAAA,CAEvB,EAAC2gB,kBAAA;AACInmC,aAAAm8B;AAAAn8B,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AALV,UAAA0mC,oBAA0BnmC;AAO1B,UAAAkoC,UAAgBD,aAAWx4B,OAAAkhB,SAAA;AAIhB,UAAA1wB,KAAAkmC,oBAAqB+B,UAAU,6DAA6D,8BAA+B;AAGpH,UAAA7nC,KAAA,CAAC8lC,qBAAqB+B;AAAO,QAAA5nC;AAAA,QAAAb,SAAA0mC,qBAAA1mC,EAAA,CAAA,MAAAwlB,cAAAxlB,EAAA,CAAA,MAAAwmC,8BAAAxmC,EAAA,EAAA,MAAAwgC,YAAAxgC,UAAAqC,oBAAArC,EAAA,EAAA,MAAAg0B,qBAAA;AAC9BnzB,WAAA6lC,oBAAiB,MACdF,4BAA0BlB,eAAA;AAAA,QAAAhmC,IAC1BkmB,WAAUlmB;AAAAA,QAAAkhC;AAAAA,QAAAxM;AAAAA,QAAA3xB;AAAAA,MAAAA,CAG2C,IAAAmB;AAElDxD,aAAA0mC;AAAA1mC,aAAAwlB;AAAAxlB,aAAAwmC;AAAAxmC,cAAAwgC;AAAAxgC,cAAAqC;AAAArC,cAAAg0B;AAAAh0B,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACfI,0CAACkG,GAAAA,cAAA,EAAmB,MAAA,QAAA,CAAO;AAAGhH,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAY,MAAAZ,UAAAa,IAAA;AAXlCE,WAAAG,2BAAAA,IAAC2D,iBACU,OAAA,WACG,UAAAjE,IACD,SAAAC,IAQTC,UAAAA,GAAAA,CACJ;AAAad,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAQ,MAAAR,UAAAe,IAAA;AAfIC,0CAACI,GAAAA,SAAA,EACT,SAAA,MACF,OAAAZ,IACPO,UAAAA,IAaJ;AAAUf,cAAAQ;AAAAR,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAhBV,UAAA2mC,eAAqB3lC;AAgBV,QAAAG;AAAA,QAAAnB,UAAA2mC,cAAA;AAEJxlC,yFACU;AACdnB,cAAA2mC;AAAA3mC,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WAFImB;AAAAA,EAEJ;ACqBA,WAAAunC,0BAAA3oC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AACN,UAAA;AAAA,MAAA4kC;AAAAA,MAAAC;AAAAA,MAAA3iC;AAAAA,MAAAs+B;AAAAA,MAAAzP;AAAAA,MAAA+C;AAAAA,MAAA3kB;AAAAA,MAAA21B;AAAAA,MAAA4D,kBAAAtoC;AAAAA,MAAAu5B;AAAAA,IAAAA,IAAA75B;AASI,UAAA4oC,mBAAAtoC,OAAuBmD,gBAAvBnD;AAAuB,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAA6kC,8BAAA7kC,EAAA,CAAA,MAAA+zB,uBAAA/zB,SAAA8kC,qBAAA9kC,EAAA,CAAA,MAAAygC,aAAAzgC,EAAA,CAAA,MAAAoP,WAAApP,EAAA,CAAA,MAAAgxB,WAAAhxB,EAAA,CAAA,MAAA+kC,oBAAA/kC,EAAA,CAAA,MAAA45B,mBAAA55B,SAAAmC,gBAAA;AAOV5B,WAAA;AAAA,QAAAqoC,WAAAhE;AAAAA,QAAAxf,OAAA;AAAA,UAAAyf;AAAAA,UAAAC;AAAAA,UAAA/Q;AAAAA,UAAA5xB;AAAAA,UAAAs+B;AAAAA,UAAAzP;AAAAA,UAAA5hB;AAAAA,UAAA21B;AAAAA,UAAAnL;AAAAA,QAAAA;AAAAA,MAAA;AAaT55B,aAAA6kC;AAAA7kC,aAAA+zB;AAAA/zB,aAAA8kC;AAAA9kC,aAAAygC;AAAAzgC,aAAAoP;AAAApP,aAAAgxB;AAAAhxB,aAAA+kC;AAAA/kC,aAAA45B;AAAA55B,aAAAmC;AAAAnC,aAAAO;AAAAA,IAAA,OAAA;AAAAA,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAEsBF,0CAAC,qBAAA,EAAmB;AAAER,cAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,UAAA2oC,kBAAA;AAChB/nC,WAAA+nC,mBAAmBznC,2BAAAA,IAAC,aAAA,CAAA,CAAW,IAAEsC;AAAYxD,cAAA2oC;AAAA3oC,cAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,EAAA,MAAA6kC,2BAAAgE,qBAAA7oC,EAAA,EAAA,MAAA6kC,2BAAAiE,yBAAA9oC,UAAAY,IAAA;AAFhEC,WAAA;AAAA,QAAAkoC,mBACavoC;AAAAA,QAAsBwoC,yBAChBpoC;AAAAA,QAA6CqoC,mBAAApC;AAAAA,QAAAqC,iBAAAd;AAAAA,QAAAe,kBAAA;AAAA,QAAAN,mBAInDhE,2BAA0BgE;AAAAA,QAAAO,2BAClBvE,2BAA0BiE;AAAAA,MAAAA;AACxD9oC,QAAA,EAAA,IAAA6kC,2BAAAgE;AAAA7oC,QAAA,EAAA,IAAA6kC,2BAAAiE;AAAA9oC,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAC;AAAA,QAAAf,EAAA,EAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACeI,WAAA;AAAA,QAAAuoC,wBAAA5B;AAAAA,QAAAwB,mBAAA5C;AAAAA,QAAAiD,cAAAlC;AAAAA,QAAAmC,oBAAAjC;AAAAA,MAAAA;AAMVvmC,WAAA;AAAA,QAAAyoC,YAAAjB;AAAAA,MAAAA;AAELvoC,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAD,WAAAd,EAAA,EAAA;AAAAe,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAA6kC,2BAAAxI,WAAAr8B,EAAA,EAAA,MAAAO,MAAAP,EAAA,EAAA,MAAAa,IAAA;AAlCEG,WAAA;AAAA,QAAA6a,KACE;AAAA,QAAmBwgB,SACfwI,2BAA0BxI;AAAAA,QAAAoN,UACzBlpC;AAAAA,QAaTmpC,UACS7oC;AAAAA,QAQT8oC,gBACe7oC;AAAAA,QAKf6T,MACK5T;AAAAA,MAAAA;AAGTf,QAAA,EAAA,IAAA6kC,2BAAAxI;AAAAr8B,cAAAO;AAAAP,cAAAa;AAAAb,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,WAnCMgB;AAAAA,EAmCN;AAGE,WAAA4oC,cAAA;AAAA,UAAA5pC,IAAAC,qBAAAA,EAAA,EAAA;AAEH,UAAA6kB,aAAmBC,KAAAA,wBAAAA;AAA0B,QAAA,CACxCD,WAAUqa,oBAAA;AAAA,YACL5zB,MAAM,yCAAyC;AAAA,IAAC;AAE1D,UAAA4wB,iBAAuBC,KAAAA,kBAAAA;AAEvB,UAAAoK,6BAAmC7mC,8BAAAA;AAAgC,QAAAI;AAAA,QAAAC,EAAA,CAAA,MAAAm8B,kBAAAn8B,SAAAwmC,4BAAA;AACtCzmC,WAAAymC,2BAA0B1B,oBACjD0B,2BAA0B1B,kBAAA;AAAA,QAAAzE,MAClBlE,eAAckE;AAAAA,MAAAA,CACvB,EAAC6F,oBAAA;AACIlmC,aAAAm8B;AAAAn8B,aAAAwmC;AAAAxmC,aAAAD;AAAAA,IAAA,OAAA;AAAAA,WAAAC,EAAA,CAAA;AAAA,IAAA;AAJV,UAAAsoC,uBAA6BvoC;AAIlB,QAEP,CAAC+kB,WAAU8a,gBAAiB9a,WAAUO,eAAA,CAAA,GAAkBzV,SAAA,GAAY;AAAA,aAAA;AAAA,IAAA;AAAA,QAAAvP;AAAA,QAAAE;AAAA,QAAAP,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AAOhEL,0CAACM,GAAAA,YAAA,EAAoB,SAAA,aAAwB,WAAA,aAAa,UAAA,wBAAoB;AAC9EJ,0CAACI,GAAAA,cAAW,UAAA,kIAAA,CAGZ;AAAaX,aAAAK;AAAAL,aAAAO;AAAAA,IAAA,OAAA;AAAAF,WAAAL,EAAA,CAAA;AAAAO,WAAAP,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAQ;AAAA,QAAAR,EAAA,CAAA,MAAAsoC,wBAAAtoC,SAAAwmC,4BAAA;AACZhmC,WAAA8nC,wDAAyB71B,WAAA,EACb,SAAA+zB,8BAA8B8B,uBAAoB,MAC/C9B,2BAA0BT,iBAAA;AAAA,QAAA/R,qBAAA,CAAA;AAAA,QAAAqR,UAAA;AAAA,QAAAS,aAGjB;AAAA,MAAA,CAChB,IAACtiC,QAEN,UAAA;AAAA,QAAAtC,2BAAAA,IAACuhB,GAAAA,SAAA,EAAO;AAAA,QAAE;AAAA,MAAA,GACd;AAASziB,aAAAsoC;AAAAtoC,aAAAwmC;AAAAxmC,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAS,uBAAAC,IAAA,2BAAA,GAAA;AACTE,WAAAM,2BAAAA,IAACP,eAAA,EAAkB,OAAA,aAAa,UAAA,qDAEhC;AAAaX,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,SAAAQ,IAAA;AAnBjBK,WAAAiB,2BAAAA,KAAC+Q,GAAAA,OAAA,EACc,WAAA,2EACXxS,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,QAICC;AAAAA,QAUDI;AAAAA,MAAAA,GAGJ;AAAQZ,aAAAQ;AAAAR,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,WApBRa;AAAAA,EAoBQ;ACrJT,QAAMgpC,mBAAmBA,CAACC,iBACAC,qBAA4C,CAAA,GAC5CC,qBAC5B;AAED,UAAMC,iBAAiBA,CAACnQ,MAA2B;AAC/C3H,WAAAA,uBAAuB2H,EAAEne,UAAwB;AACjDme,QAAEpJ,gBAAgBrhB,QAAQ46B,cAAc;AAAA,IAC5C;AAEAF,uBAAmB16B,QAAQ46B,cAAc;AAEzC,UAAM3M,SAAS4M,KAAAA,oBAAoBJ,iBAAiBC,oBAAoB,CAAA,GAAIC,gBAAgB;AAG5F1M,WAAO6M,KAAK,CAACnuB,GAAGC,MAAM;AAClB,YAAMmuB,SAASN,gBAAgBO,UAAUvQ,OAAKA,EAAEx6B,OAAO0c,EAAE1c,EAAE;AAC3D,YAAMgrC,SAASR,gBAAgBO,UAAUvQ,OAAKA,EAAEx6B,OAAO2c,EAAE3c,EAAE;AAE3D,UAAI8qC,WAAW,MAAME,WAAW,IAAI;AAChC,eAAO;AAAA,MACX;AACA,UAAIF,WAAW,IAAI;AACf,eAAO;AAAA,MACX;AACA,UAAIE,WAAW,IAAI;AACf,eAAO;AAAA,MACX;AACA,aAAOF,SAASE;AAAAA,IACpB,CAAC;AAED,WAAOhN;AAAAA,EACX;ACxCO,WAAAiN,uBAAAxqC,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAgC,UAAA;AAAA,MAAAP,MAAA8qC;AAAAA,IAAAA,IAAAzqC;AAGnC,UAAA+kB,aAAmBC,KAAAA,wBAAAA;AACnB,UAAArlB,OAAa+qC,eAAeD,QAAQ;AAAE,QAAAnqC;AAAA,QAAAL,EAAA,CAAA,MAAA8kB,cAAA9kB,SAAAwqC,UAAA;AACVnqC,WAAAykB,WAAU4lB,uBAAwBF,QAAQ;AAACxqC,aAAA8kB;AAAA9kB,aAAAwqC;AAAAxqC,aAAAK;AAAAA,IAAA,OAAA;AAAAA,WAAAL,EAAA,CAAA;AAAA,IAAA;AAAvE,UAAAg0B,sBAA4B3zB;AAC5B,UAAAsqC,mBAAyBhrC,8BAAAA;AAEH,UAAAY,KAAA,6BAA6Bb;AAAI,QAAAc;AAAA,QAAAR,SAAAO,IAAA;AAAnDC,WAAAU,2BAAAA,IAAC8iC,KAAAA,WAAA,EAAiB,OAAAzjC,GAAAA,CAAiC;AAAGP,aAAAO;AAAAP,aAAAQ;AAAAA,IAAA,OAAA;AAAAA,WAAAR,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAA2qC,oBAAA3qC,SAAAg0B,uBAAAh0B,EAAA,CAAA,MAAAN,MAAA;AACtDkB,0CAAC6R,aAAkB,WAAA,QAAiB,SAAA,YACtB,MAAA,SACG,SAAA,MAAA;AACLk4B,yBAAgB5E,iBAAA;AAAA,UAAAl2B,eAAA;AAAA,YAAAnQ;AAAAA,YAAAD,MACiBmkB,KAAAA,mBAAmBlkB,IAAI;AAAA,UAAA;AAAA,UAACs0B;AAAAA,UAAAqR,UAAA;AAAA,UAAAS,aAGxC;AAAA,QAAA,CAChB;AAAA,MAAC,GACH,UAAA,UAEX;AAAS9lC,aAAA2qC;AAAA3qC,aAAAg0B;AAAAh0B,aAAAN;AAAAM,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAQ,MAAAR,UAAAY,IAAA;AAbNC,WAAAiB,2BAAAA,KAAA,OAAA,EAAgB,WAAA,kCACnBtB,UAAAA;AAAAA,QAAAA;AAAAA,QACAI;AAAAA,MAAAA,GAYJ;AAAMZ,aAAAQ;AAAAR,cAAAY;AAAAZ,cAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,EAAA;AAAA,IAAA;AAAA,WAdCa;AAAAA,EAcD;AAQV,WAAS4pC,eAAe/qC,MAAsB;AAC1C,UAAMkrC,WAAWlrC,KAAKmf,MAAM,GAAG;AAC/B,WAAO+rB,SAASA,SAASh7B,SAAS,CAAC;AAAA,EACvC;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/ui/collection_editor/GeneralSettingsForm.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/ViewModeSwitch.tsx","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/AIModifiedPathsContext.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx","../src/ui/collection_editor/properties/conditions/property_paths.ts","../src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx","../src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/KanbanConfigSection.tsx","../src/ui/collection_editor/DisplaySettingsForm.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/EntityActionsSelectDialog.tsx","../src/ui/collection_editor/EntityActionsEditTab.tsx","../src/ui/collection_editor/ExtendSettingsForm.tsx","../src/utils/validateCollectionJson.ts","../src/ui/collection_editor/CollectionJsonImportDialog.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/useCollectionEditorController.tsx","../src/api/generateCollectionApi.ts","../src/ui/collection_editor/AICollectionGeneratorPopover.tsx","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/ui/EditorEntityAction.tsx","../src/ui/KanbanSetupAction.tsx","../src/ui/AddKanbanColumnAction.tsx","../src/locales/en.ts","../src/locales/es.ts","../src/locales/de.ts","../src/locales/fr.ts","../src/locales/it.ts","../src/locales/hi.ts","../src/locales/pt.ts","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import React, { useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n IconForView,\n SearchIconsView,\n singular,\n toSnakeCase,\n useAuthController,\n useCustomizationController,\n useTranslation\n} from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n Chip,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n HistoryIcon,\n IconButton,\n SearchIcon,\n Select,\n SelectItem,\n TextField,\n Tooltip,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nexport function GeneralSettingsForm({\n isNewCollection,\n existingPaths,\n existingIds,\n parentCollection\n}: {\n isNewCollection: boolean;\n existingPaths?: string[];\n existingIds?: string[];\n parentCollection?: EntityCollection;\n}) {\n\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n const { t } = useTranslation();\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n };\n\n const collectionIcon = <IconForView collectionOrView={values} />;\n const isSubcollection = !!parentCollection;\n const showErrors = submitCount > 0;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? t(\"new_collection\") : t(\"collection_with_name\", { name: values?.name })}\n </Typography>\n <DefaultDatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId} />\n\n <Tooltip title={t(\"change_icon\")}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n {t(\"is_subcollection_of\")} <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {/* Name */}\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={t(\"name\")}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)} />\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : t(\"collection_name_description\")}\n </FieldCaption>\n </div>\n\n {/* Path */}\n <div className={cls(\"col-span-12\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={t(\"path\")}\n required\n error={showErrors && Boolean(errors.path)} />\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? t(\"relative_path_to_parent\") : t(\"path_in_database\")}\n </FieldCaption>\n </div>\n\n {/* Singular Name */}\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={t(\"singular_name\")} />\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : t(\"singular_name_description\")}\n </FieldCaption>\n </div>\n\n {/* Description */}\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n minRows={2}\n aria-describedby=\"description-helper-text\"\n label={t(\"description\")}\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : t(\"description_of_collection\")}\n </FieldCaption>\n </div>\n\n {/* Collection ID */}\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={t(\"collection_id\")}\n error={showErrors && Boolean(errors.id)} />\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : t(\"collection_id_description\")}\n </FieldCaption>\n </div>\n\n {/* Collection Group */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={t(\"collection_group\")}\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n {t(\"collection_group_description\")}\n </FieldCaption>\n </div>\n\n </div>\n\n {/* Advanced Settings */}\n <ExpandablePanel\n title={<Typography variant=\"subtitle2\">{t(\"advanced_settings\")}</Typography>}\n initiallyExpanded={false}\n className=\"mt-4\"\n innerClassName=\"p-4 flex flex-col gap-4\"\n >\n {/* History revisions */}\n <div>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n allowIndeterminate={true}\n label={<span className=\"flex items-center gap-2\"><HistoryIcon size={\"smallest\"} />{values.history === null || values.history === undefined ? t(\"doc_history_global\") : (\n values.history ? t(\"doc_history_enabled\") : t(\"doc_history_not_enabled\")\n )}</span>}\n onValueChange={(v) => setFieldValue(\"history\", v)}\n value={values.history === undefined ? null : values.history}\n />\n <FieldCaption>\n {t(\"doc_history_description\")}\n </FieldCaption>\n </div>\n\n {/* Document ID generation */}\n <div>\n <Select\n name=\"customId\"\n label={t(\"document_id_generation\")}\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={typeof values.customId === \"object\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n if (v === \"false\") setFieldValue(\"customId\", false);\n else if (v === \"true\") setFieldValue(\"customId\", true);\n else if (v === \"optional\") setFieldValue(\"customId\", \"optional\");\n }}\n value={\n typeof values.customId === \"object\" ? \"code_defined\" :\n values.customId === true ? \"true\" :\n values.customId === \"optional\" ? \"optional\" : \"false\"\n }\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return t(\"code_defined\");\n else if (value === \"true\")\n return t(\"users_must_define_id\");\n else if (value === \"optional\")\n return t(\"users_can_define_id\");\n else\n return t(\"doc_id_auto_generated\");\n }}\n >\n <SelectItem value={\"false\"}>\n {t(\"doc_id_auto_generated\")}\n </SelectItem>\n <SelectItem value={\"true\"}>\n {t(\"users_must_define_id\")}\n </SelectItem>\n <SelectItem value={\"optional\"}>\n {t(\"users_can_define_id\")}\n </SelectItem>\n </Select>\n <FieldCaption>\n {t(\"config_doc_id_generation\")}\n </FieldCaption>\n </div>\n\n {/* Text search */}\n <div>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={<span className=\"flex items-center gap-2\"><SearchIcon size={\"smallest\"} />{t(\"enable_text_search\")}</span>}\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n {t(\"text_search_description\")}\n </FieldCaption>\n </div>\n </ExpandablePanel>\n\n <div style={{ height: \"52px\" }} />\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={typeof values.icon === \"string\" ? values.icon : undefined}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }} />\n </div>\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n}: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n const { t } = useTranslation();\n\n return <Tooltip title={t(\"database_id\")}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={t(\"default_text\")}></TextField>\n </Tooltip>\n}\n","import { cls, SquareIcon, ToggleButtonGroup, Typography, VerticalSplitIcon } from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n}: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n const { t } = useTranslation();\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"document_view\")}</Typography>\n <div className={\"my-2\"}>\n <ToggleButtonGroup\n value={value}\n onValueChange={onChange}\n options={[\n {\n value: \"side_panel\",\n label: t(\"side_panel\"),\n icon: <VerticalSplitIcon />\n },\n {\n value: \"full_screen\",\n label: t(\"full_screen\"),\n icon: <SquareIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"should_documents_opened_full_screen\")}</Typography>\n </div>\n}\n","import { ViewMode, useTranslation } from \"@firecms/core\";\nimport { AppsIcon, cls, ListIcon, ToggleButtonGroup, Typography, ViewKanbanIcon } from \"@firecms/ui\";\n\nexport function ViewModeSwitch({\n value,\n onChange,\n className\n}: {\n value: ViewMode;\n onChange: (value: ViewMode) => void;\n className?: string;\n}) {\n\n const { t } = useTranslation();\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"default_collection_view\")}</Typography>\n <div className={\"my-2\"}>\n <ToggleButtonGroup\n value={value}\n onValueChange={onChange}\n options={[\n {\n value: \"table\",\n label: t(\"table_view\"),\n icon: <ListIcon />\n },\n {\n value: \"cards\",\n label: t(\"cards_view\"),\n icon: <AppsIcon />\n },\n {\n value: \"kanban\",\n label: t(\"kanban_view\"),\n icon: <ViewKanbanIcon />\n }\n ]}\n />\n </div>\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"choose_how_entities_displayed_default\")}</Typography>\n </div>\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, useTranslation\n} from \"@firecms/core\";\nimport {\n FindInPageIcon,\n Badge,\n Button,\n ChipColorKey,\n CircularProgress,\n ColorPicker,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n getColorSchemeForKey,\n getColorSchemeForSeed,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n}: EnumFormProps) {\n const { t } = useTranslation();\n\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const {\n values,\n errors\n } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData} />\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n}: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }: ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`} />;\n };\n\n const inferValues = async () => {\n if (!getData) {\n console.warn(\"INTERNAL: No getData function provided for data inference\");\n return;\n }\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button \n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"} /> : <FindInPageIcon />}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n canAddElements={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{\n id: \"\",\n label: \"\"\n }} />\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)} />\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n const colorValue = getIn(values, `${enumValuesPath}[${index}].color`) as ChipColorKey | undefined;\n const colorScheme = colorValue\n ? getColorSchemeForKey(colorValue)\n : idValue\n ? getColorSchemeForSeed(String(idValue))\n : undefined;\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <FindInPageIcon size={\"small\"} />}\n error={Boolean(entryError?.label)} />\n\n {!disabled && <>\n {/* Color indicator - clickable to open settings */}\n <button\n type=\"button\"\n onClick={() => onDialogOpen()}\n className=\"w-5 h-5 rounded-full flex-shrink-0 self-center border border-surface-accent-200 dark:border-surface-accent-700 hover:scale-110 transition-transform cursor-pointer ml-3\"\n style={{\n backgroundColor: colorScheme?.color ?? \"#ccc\"\n }}\n title={colorValue ? `Color: ${colorValue}` : \"Auto color - Click to change\"}\n aria-label=\"Edit enum color\"\n />\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"} />\n </IconButton>\n </Badge>\n </>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n}: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n const { t } = useTranslation();\n\n const {\n errors,\n values,\n setFieldValue\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n const colorValue = index !== undefined ? getIn(values, `${enumValuesPath}[${index}].color`) as ChipColorKey | undefined : undefined;\n\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>{t(\"enum_form_dialog\")}</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div className=\"flex flex-col gap-4\">\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)} />\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>\n\n <div>\n <Typography variant=\"body2\" className=\"font-medium mb-2\">\n Chip color\n </Typography>\n <ColorPicker\n value={colorValue}\n onChange={(color) => setFieldValue(`${enumValuesPath}[${index}].color`, color)}\n size=\"small\"\n allowClear={true}\n />\n </div>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n onClick={onClose}>\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n const { t } = useTranslation();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={t(\"required\")}\n tooltip={t(\"required_tooltip\")}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={t(\"unique\")}\n tooltip={t(\"unique_tooltip\")}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={t(\"required_message\")}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp, useTranslation } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const { t } = useTranslation();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"lowercase\")}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"uppercase\")}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"trim\")}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={t(\"exact_length\")}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={t(\"min_length\")}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={t(\"max_length\")}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={t(\"matches_regex\")}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? t(\"not_valid_regexp\") : t(\"regex_helper\")}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const { t } = useTranslation();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={t(\"min_length\")}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={t(\"max_length\")}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n const { t } = useTranslation();\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n {t(\"validation\")}\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController, useTranslation } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData,\n propertyNamespace\n}: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n propertyNamespace?: string;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const { t } = useTranslation();\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: t(\"default_value_was_cleared\")\n })\n }\n }\n };\n\n // Build full path including namespace for nested properties (e.g., \"address.status\")\n const fullPropertyPath = values.id\n ? (propertyNamespace ? `${propertyNamespace}.${values.id}` : values.id)\n : undefined;\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? t(\"enum_missing_values\") : undefined);\n }}\n getData={getData && fullPropertyPath\n ? () => getData()\n .then(res => res.map(entry => getIn(entry, fullPropertyPath)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged} />\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors} />}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled} />}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={t(\"default_value\")}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const { t } = useTranslation();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n const includeBucketUrl = `${baseStoragePath}.includeBucketUrl`;\n\n // Image resize config paths\n const imageResize = `${baseStoragePath}.imageResize`;\n const imageResizeMaxWidth = `${imageResize}.maxWidth`;\n const imageResizeMaxHeight = `${imageResize}.maxHeight`;\n const imageResizeMode = `${imageResize}.mode`;\n const imageResizeFormat = `${imageResize}.format`;\n const imageResizeQuality = `${imageResize}.quality`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Image resize values\n const imageResizeMaxWidthValue = getIn(values, imageResizeMaxWidth);\n const imageResizeMaxHeightValue = getIn(values, imageResizeMaxHeight);\n const imageResizeModeValue = getIn(values, imageResizeMode) ?? \"cover\";\n const imageResizeFormatValue = getIn(values, imageResizeFormat) ?? \"original\";\n const imageResizeQualityValue = getIn(values, imageResizeQuality);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const fileTypes: Record<string, string> = {\n \"image/*\": t(\"file_type_images\"),\n \"video/*\": t(\"file_type_videos\"),\n \"audio/*\": t(\"file_type_audio\"),\n \"application/*\": t(\"file_type_applications\"),\n \"text/*\": t(\"file_type_text\")\n };\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n {t(\"file_upload_config\")}\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={t(\"all_file_types_allowed\")}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : t(\"allowed_file_types\")}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return t(\"all_file_types_allowed\");\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n {t(\"only\")}\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={t(\"file_name_label\")}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={t(\"storage_path_label\")}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>{t(\"storage_placeholders_description\")}</p>\n <ul>\n <li>{t(\"storage_placeholder_file\")}</li>\n <li>{t(\"storage_placeholder_file_name\")}</li>\n <li>{t(\"storage_placeholder_file_ext\")}</li>\n <li>{t(\"storage_placeholder_entity_id\")}</li>\n <li>{t(\"storage_placeholder_property_key\")}</li>\n <li>{t(\"storage_placeholder_path\")}</li>\n <li>{t(\"storage_placeholder_rand\")}</li>\n </ul>\n </Typography>\n\n <Field name={includeBucketUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"include_bucket_url\")}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"include_bucket_url_description\")}\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"save_url_instead_of_path\")}\n disabled={existing || disabled}\n form={form}\n field={field}/>;\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"save_url_description\")}\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={t(\"max_size_bytes\")}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-12 mt-4\"}>\n <Typography variant={\"subtitle2\"}\n color={\"secondary\"}\n className={\"mb-2 block\"}>\n {t(\"image_resize_configuration\")}\n </Typography>\n <Typography variant={\"caption\"} className={\"mb-2 block text-xs\"}>\n {t(\"image_resize_description\")}\n </Typography>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxWidth}\n type={\"number\"}\n label={t(\"max_width_px\")}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxWidthValue !== undefined && imageResizeMaxWidthValue !== null ? imageResizeMaxWidthValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxWidth, undefined);\n else setFieldValue(imageResizeMaxWidth, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n name={imageResizeMaxHeight}\n type={\"number\"}\n label={t(\"max_height_px\")}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeMaxHeightValue !== undefined && imageResizeMaxHeightValue !== null ? imageResizeMaxHeightValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeMaxHeight, undefined);\n else setFieldValue(imageResizeMaxHeight, parseInt(value));\n }}\n />\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n name={imageResizeMode}\n fullWidth\n size={\"medium\"}\n value={imageResizeModeValue || \"cover\"}\n onValueChange={(value) => setFieldValue(imageResizeMode, value || \"cover\")}\n label={t(\"resize_mode\")}\n renderValue={(selected) => {\n if (!selected) return t(\"resize_cover\");\n return selected === \"contain\" ? t(\"resize_contain_description\") : t(\"resize_cover_description\");\n }}>\n <SelectItem value=\"contain\">\n {t(\"resize_contain_description\")}\n </SelectItem>\n <SelectItem value=\"cover\">\n {t(\"resize_cover_description\")}\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-6\"}>\n <Select\n disabled={disabled}\n size={\"medium\"}\n fullWidth\n name={imageResizeFormat}\n value={imageResizeFormatValue || \"original\"}\n onValueChange={(value) => setFieldValue(imageResizeFormat, value || \"original\")}\n label={t(\"output_format\")}\n renderValue={(selected) => {\n if (!selected) return t(\"format_original\");\n return selected.charAt(0).toUpperCase() + selected.slice(1);\n }}>\n <SelectItem value=\"original\">\n {t(\"format_original_description\")}\n </SelectItem>\n <SelectItem value=\"jpeg\">\n JPEG\n </SelectItem>\n <SelectItem value=\"png\">\n PNG\n </SelectItem>\n <SelectItem value=\"webp\">\n {t(\"format_webp_description\")}\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField\n name={imageResizeQuality}\n type={\"number\"}\n label={t(\"quality_label\")}\n size={\"small\"}\n disabled={disabled}\n value={imageResizeQualityValue !== undefined && imageResizeQualityValue !== null ? imageResizeQualityValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(imageResizeQuality, undefined);\n else {\n const numValue = parseInt(value);\n if (numValue >= 0 && numValue <= 100) {\n setFieldValue(imageResizeQuality, numValue);\n }\n }\n }}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"quality_hint\")}\n </Typography>\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property)) {\n return false;\n } else {\n if (property.dataType === \"array\" && typeof property.of === \"function\")\n return false;\n else if (property.dataType === \"array\" && Array.isArray(property.of))\n return false;\n return property.editable === undefined ? true : Boolean(property.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 border-red-500/100 dark:border-red-500/100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"m-1\",\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"label\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 flex items-center justify-center rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"small\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"label\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { createContext, useCallback, useContext, useState } from \"react\";\nimport { CollectionOperation } from \"../../api/generateCollectionApi\";\n\nexport interface AIModifiedPathsContextType {\n /** Set of paths that were modified by AI */\n modifiedPaths: Set<string>;\n /** Counter that increments each time AI modifies the collection - use in keys to force remount */\n generationCounter: number;\n /** Add paths from operations */\n addModifiedPaths: (operations: CollectionOperation[]) => void;\n /** Clear a specific path (when user edits that field) */\n clearPath: (path: string) => void;\n /** Clear all paths (on save or cancel) */\n clearAllPaths: () => void;\n /** Check if a path is modified */\n isPathModified: (path: string) => boolean;\n}\n\nconst AIModifiedPathsContext = createContext<AIModifiedPathsContextType | null>(null);\n\nexport function AIModifiedPathsProvider({ children }: { children: React.ReactNode }) {\n const [modifiedPaths, setModifiedPaths] = useState<Set<string>>(new Set());\n const [generationCounter, setGenerationCounter] = useState(0);\n\n const addModifiedPaths = useCallback((operations: CollectionOperation[]) => {\n setModifiedPaths(prev => {\n const newSet = new Set(prev);\n operations.forEach(op => {\n // Add the path and all parent paths for nested modifications\n newSet.add(op.path);\n // For properties modifications, also mark the property itself\n // e.g., \"properties.email.description\" -> also adds \"properties.email\"\n const parts = op.path.split(\".\");\n if (parts[0] === \"properties\" && parts.length >= 2) {\n newSet.add(`properties.${parts[1]}`);\n }\n });\n return newSet;\n });\n // Increment counter to force property form remount\n setGenerationCounter(prev => prev + 1);\n }, []);\n\n const clearPath = useCallback((path: string) => {\n setModifiedPaths(prev => {\n const newSet = new Set(prev);\n // Remove exact path and any child paths\n for (const p of newSet) {\n if (p === path || p.startsWith(path + \".\")) {\n newSet.delete(p);\n }\n }\n return newSet;\n });\n }, []);\n\n const clearAllPaths = useCallback(() => {\n setModifiedPaths(new Set());\n }, []);\n\n const isPathModified = useCallback((path: string): boolean => {\n // Check if this exact path or any parent path is modified\n if (modifiedPaths.has(path)) return true;\n // Check if any child paths are modified\n for (const p of modifiedPaths) {\n if (p.startsWith(path + \".\")) return true;\n }\n return false;\n }, [modifiedPaths]);\n\n return (\n <AIModifiedPathsContext.Provider value={{\n modifiedPaths,\n generationCounter,\n addModifiedPaths,\n clearPath,\n clearAllPaths,\n isPathModified\n }}>\n {children}\n </AIModifiedPathsContext.Provider>\n );\n}\n\nexport function useAIModifiedPaths(): AIModifiedPathsContextType | null {\n return useContext(AIModifiedPathsContext);\n}\n\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n AIModifiedIndicator,\n CMSType,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport {\n FindInPageIcon,\n defaultBorderMixin,\n DeleteIcon,\n IconButton,\n Menu,\n MenuItem,\n MoreVertIcon,\n Tooltip,\n VerticalAlignBottomIcon,\n VerticalAlignTopIcon\n} from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy\n} from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\n\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { useAIModifiedPaths } from \"./AIModifiedPathsContext\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n // Filter propertiesOrder to only include top-level keys (no dots) that exist in properties\n // Nested keys like \"data.mode\" are for column ordering in the table, not for the property editor\n const propertyKeys = Object.keys(properties);\n const filteredOrder = (propertiesOrderProp ?? propertyKeys)\n .filter(key => !key.includes(\".\") && properties[key as keyof typeof properties]);\n\n // Ensure all properties are included (append any missing ones)\n const missingKeys = propertyKeys.filter(key => !filteredOrder.includes(key));\n const propertiesOrder = [...filteredOrder, ...missingKeys];\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n }\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n // Extract property keys from the full IDs\n const activeKey = activeId.includes(\".\") ? activeId.split(\".\").pop() : activeId;\n const overKey = overId.includes(\".\") ? overId.split(\".\").pop() : overId;\n\n if (!activeKey || !overKey) return;\n\n const oldIndex = propertiesOrder.indexOf(activeKey);\n const newIndex = propertiesOrder.indexOf(overKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newPropertiesOrder = [...propertiesOrder];\n const [removed] = newPropertiesOrder.splice(oldIndex, 1);\n newPropertiesOrder.splice(newIndex, 0, removed);\n\n if (onPropertyMove) {\n onPropertyMove(newPropertiesOrder, namespace);\n }\n }\n };\n\n const items = propertiesOrder.map(key => getFullId(key, namespace));\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis]}\n >\n <SortableContext\n items={items}\n strategy={verticalListSortingStrategy}\n >\n <div className={className}>\n\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n\n const id = getFullId(propertyKey, namespace);\n\n return (\n <PropertyTreeEntry\n key={id}\n id={id}\n propertyKey={propertyKey}\n propertyOrBuilder={property}\n additionalField={additionalField}\n errors={errors}\n namespace={namespace}\n propertiesOrder={propertiesOrder}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n );\n }).filter(Boolean)}\n </div>\n </SortableContext>\n </DndContext>\n );\n },\n equal\n);\n\nexport function PropertyTreeEntry({\n id,\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n selectedPropertyKey,\n errors,\n propertiesOrder,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n}: {\n id: string;\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n errors: Record<string, any>;\n propertiesOrder: string[];\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n });\n\n const style = {\n // Key change: use Translate instead of Transform to prevent stretching\n transform: CSS.Translate.toString(transform),\n transition,\n zIndex: isDragging ? 10 : undefined,\n position: \"relative\" as const,\n };\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = id;\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n inferredPropertyKeys={inferredPropertyKeys}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n // Check if this property was AI-modified\n const aiModifiedPaths = useAIModifiedPaths();\n const isAIModified = aiModifiedPaths?.isPathModified(`properties.${propertyKey}`) ?? false;\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"relative -ml-8 cursor-grab\"\n {...attributes}\n {...listeners}\n >\n <div className=\"relative\">\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }} />}\n\n <div>\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError} />\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected} />}\n </div>\n\n <div className=\"absolute top-3 right-3 flex flex-row items-center gap-1\">\n {isAIModified && <AIModifiedIndicator />}\n {isPropertyInferred && <>\n <Tooltip title={\"Inferred property\"} asChild={true}>\n <IconButton size=\"smallest\" disabled>\n <FindInPageIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n {onPropertyRemove && <Tooltip title={\"Remove inferred property\"}\n asChild={true}>\n <IconButton size=\"smallest\"\n color=\"inherit\"\n onClick={(e) => {\n e.stopPropagation();\n onPropertyRemove(propertyKey, namespace);\n }}>\n <DeleteIcon size={\"smallest\"} />\n </IconButton>\n </Tooltip>}\n </>}\n\n <Menu\n trigger={\n <IconButton\n size=\"smallest\"\n >\n <MoreVertIcon size={\"smallest\"} />\n </IconButton>\n }\n >\n <MenuItem\n dense\n onClick={() => {\n const currentIndex = propertiesOrder.indexOf(propertyKey);\n if (currentIndex > 0) {\n const newOrder = propertiesOrder.filter(k => k !== propertyKey);\n newOrder.unshift(propertyKey);\n onPropertyMove?.(newOrder, namespace);\n }\n }}\n >\n <VerticalAlignTopIcon size=\"smallest\" />\n Move to top\n </MenuItem>\n <MenuItem\n dense\n onClick={() => {\n const currentIndex = propertiesOrder.indexOf(propertyKey);\n if (currentIndex < propertiesOrder.length - 1) {\n const newOrder = propertiesOrder.filter(k => k !== propertyKey);\n newOrder.push(propertyKey);\n onPropertyMove?.(newOrder, namespace);\n }\n }}\n >\n <VerticalAlignBottomIcon size=\"smallest\" />\n Move to bottom\n </MenuItem>\n <MenuItem\n dense\n onClick={() => onPropertyRemove?.(propertyKey, namespace)}\n >\n <DeleteIcon size=\"smallest\" />\n Delete\n </MenuItem>\n </Menu>\n\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, useTranslation\n} from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n const { t } = useTranslation();\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>{t(\"properties_in_this_group\")}</Typography>\n <Button\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n {t(\"add_property_to\", { name: values.name ?? t(\"properties_in_this_group\") })}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n {t(\"add_first_property_to_group\")}\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"medium\"}\n label={t(\"spread_children_as_columns\")}\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n {t(\"spread_children_description\")}\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, prettifyIdentifier, toSnakeCase, useTranslation } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const { t } = useTranslation();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={t(\"field_name\")}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={t(\"id\")}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? prettifyIdentifier(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={t(\"description\")}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\" | \"user_select\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n const { t } = useTranslation();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"user_select\" &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={t(\"default_value\")}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const { t } = useTranslation();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n size={\"medium\"}\n label={defaultValue === null || defaultValue === undefined ? t(\"default_value_not_set\") : t(\"default_value_is\", { value: defaultValue.toString() })}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const { t } = useTranslation();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={t(\"min_value\")}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={t(\"max_value\")}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={t(\"less_than\")}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={t(\"more_than\")}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"positive_value\")}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"negative_value\")}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"integer_value\")}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n const { t } = useTranslation();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={t(\"default_value\")}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController, useTranslation } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors,\n asString\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean,\n asString?: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = asString ? \"reference.path\" : (multiple ? \"of.path\" : \"path\") ;\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n const { t } = useTranslation();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={t(\"target_collection\")}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || t(\"views_group\")}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={t(\"views_group\")}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty, useTranslation } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\n// Common IANA timezones with human-readable labels\nconst TIMEZONES = [\n // UTC\n { value: \"UTC\", label: \"UTC (Coordinated Universal Time)\" },\n // Americas\n { value: \"America/New_York\", label: \"New York (US Eastern)\" },\n { value: \"America/Chicago\", label: \"Chicago (US Central)\" },\n { value: \"America/Denver\", label: \"Denver (US Mountain)\" },\n { value: \"America/Los_Angeles\", label: \"Los Angeles (US Pacific)\" },\n { value: \"America/Anchorage\", label: \"Anchorage (Alaska)\" },\n { value: \"America/Toronto\", label: \"Toronto (Canada Eastern)\" },\n { value: \"America/Vancouver\", label: \"Vancouver (Canada Pacific)\" },\n { value: \"America/Mexico_City\", label: \"Mexico City\" },\n { value: \"America/Sao_Paulo\", label: \"São Paulo (Brazil)\" },\n { value: \"America/Buenos_Aires\", label: \"Buenos Aires (Argentina)\" },\n // Europe\n { value: \"Europe/London\", label: \"London (UK)\" },\n { value: \"Europe/Paris\", label: \"Paris (France)\" },\n { value: \"Europe/Berlin\", label: \"Berlin (Germany)\" },\n { value: \"Europe/Madrid\", label: \"Madrid (Spain)\" },\n { value: \"Europe/Rome\", label: \"Rome (Italy)\" },\n { value: \"Europe/Amsterdam\", label: \"Amsterdam (Netherlands)\" },\n { value: \"Europe/Brussels\", label: \"Brussels (Belgium)\" },\n { value: \"Europe/Zurich\", label: \"Zurich (Switzerland)\" },\n { value: \"Europe/Stockholm\", label: \"Stockholm (Sweden)\" },\n { value: \"Europe/Vienna\", label: \"Vienna (Austria)\" },\n { value: \"Europe/Warsaw\", label: \"Warsaw (Poland)\" },\n { value: \"Europe/Prague\", label: \"Prague (Czech Republic)\" },\n { value: \"Europe/Athens\", label: \"Athens (Greece)\" },\n { value: \"Europe/Moscow\", label: \"Moscow (Russia)\" },\n { value: \"Europe/Istanbul\", label: \"Istanbul (Turkey)\" },\n // Asia\n { value: \"Asia/Dubai\", label: \"Dubai (UAE)\" },\n { value: \"Asia/Kolkata\", label: \"Mumbai / Delhi (India)\" },\n { value: \"Asia/Bangkok\", label: \"Bangkok (Thailand)\" },\n { value: \"Asia/Singapore\", label: \"Singapore\" },\n { value: \"Asia/Hong_Kong\", label: \"Hong Kong\" },\n { value: \"Asia/Shanghai\", label: \"Shanghai (China)\" },\n { value: \"Asia/Tokyo\", label: \"Tokyo (Japan)\" },\n { value: \"Asia/Seoul\", label: \"Seoul (South Korea)\" },\n { value: \"Asia/Jakarta\", label: \"Jakarta (Indonesia)\" },\n // Oceania\n { value: \"Australia/Sydney\", label: \"Sydney (Australia Eastern)\" },\n { value: \"Australia/Melbourne\", label: \"Melbourne (Australia)\" },\n { value: \"Australia/Brisbane\", label: \"Brisbane (Australia)\" },\n { value: \"Australia/Perth\", label: \"Perth (Australia Western)\" },\n { value: \"Pacific/Auckland\", label: \"Auckland (New Zealand)\" },\n // Africa\n { value: \"Africa/Cairo\", label: \"Cairo (Egypt)\" },\n { value: \"Africa/Johannesburg\", label: \"Johannesburg (South Africa)\" },\n { value: \"Africa/Lagos\", label: \"Lagos (Nigeria)\" },\n];\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const { t } = useTranslation();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n const timezonePath = \"timezone\";\n const timezoneValue: string | undefined = getIn(values, timezonePath);\n const timezoneError: string | undefined = getIn(touched, timezonePath) && getIn(errors, timezonePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={t(\"mode_label\")}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return t(\"date_time_mode\");\n case \"date\":\n return t(\"date_mode\");\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> {t(\"date_time_mode\")} </SelectItem>\n <SelectItem value={\"date\"}> {t(\"date_mode\")} </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return t(\"auto_on_create\");\n case \"on_update\":\n return t(\"auto_on_update\");\n default:\n return t(\"auto_none\");\n }\n }}\n error={Boolean(autoValueError)}\n label={t(\"automatic_value\")}>\n <SelectItem value={\"none\"}> {t(\"auto_none\")} </SelectItem>\n <SelectItem value={\"on_create\"}> {t(\"auto_on_create\")} </SelectItem>\n <SelectItem value={\"on_update\"}> {t(\"auto_on_update\")} </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? t(\"auto_value_description\")}\n </FieldCaption>\n </div>\n <div>\n <Select name={timezonePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={timezoneValue ?? \"__local__\"}\n onValueChange={(v) => setFieldValue(timezonePath, v === \"__local__\" ? undefined : v)}\n renderValue={(v) => {\n if (!v || v === \"__local__\") return t(\"local_timezone\");\n const tz = TIMEZONES.find(t => t.value === v);\n return tz?.label ?? v;\n }}\n error={Boolean(timezoneError)}\n label={t(\"timezone_label\")}>\n <SelectItem value={\"__local__\"}> {t(\"local_timezone\")} </SelectItem>\n {TIMEZONES.map((tz) => (\n <SelectItem key={tz.value} value={tz.value}>\n {tz.label}\n </SelectItem>\n ))}\n </Select>\n <FieldCaption error={Boolean(timezoneError)}>\n {timezoneError ?? t(\"timezone_description\")}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled} />\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const { t } = useTranslation();\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n const nullable = \"nullable\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"hide_from_collection\")}\n size={\"medium\"}\n disabled={disabled}\n form={form}\n tooltip={t(\"hide_from_collection_tooltip\")}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"read_only\")}\n size={\"medium\"}\n disabled={disabled}\n tooltip={t(\"read_only_tooltip\")}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={nullable}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={t(\"nullable\")}\n size={\"medium\"}\n disabled={disabled}\n tooltip={t(\"nullable_tooltip\")}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, SettingsIcon, Typography } from \"@firecms/ui\";\n\nexport function ConditionsPanel({\n children\n}: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={true}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500 text-text-secondary dark:text-text-secondary-dark\">\n <SettingsIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n Conditions\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import { Properties, Property, PropertyOrBuilder, isPropertyBuilder } from \"@firecms/core\";\n\n/**\n * Recursively extract all property paths from a Properties object.\n * For nested map properties, creates dot-notation paths like \"address.city\".\n * Skips PropertyBuilder functions (callbacks) as they cannot be statically analyzed.\n * \n * @param properties - The properties object to extract paths from\n * @param prefix - Optional prefix for nested paths (used in recursion)\n * @returns Array of property path strings\n */\nexport function getPropertyPaths(\n properties: Properties | undefined,\n prefix: string = \"\"\n): string[] {\n if (!properties) return [];\n\n const paths: string[] = [];\n\n for (const [key, propertyOrBuilder] of Object.entries(properties)) {\n if (!propertyOrBuilder) continue;\n\n // Skip PropertyBuilder functions - they require runtime values to resolve\n if (isPropertyBuilder(propertyOrBuilder)) continue;\n\n const property = propertyOrBuilder as Property;\n const fullPath = prefix ? `${prefix}.${key}` : key;\n paths.push(fullPath);\n\n // Recursively add nested map properties\n if (property.dataType === \"map\" && property.properties) {\n const nestedPaths = getPropertyPaths(\n property.properties as Properties,\n fullPath\n );\n paths.push(...nestedPaths);\n }\n\n // For arrays with object items, add the nested paths too\n if (property.dataType === \"array\" && property.of) {\n const ofPropertyOrBuilder = property.of as PropertyOrBuilder;\n // Skip if the array's 'of' is a PropertyBuilder\n if (!isPropertyBuilder(ofPropertyOrBuilder)) {\n const ofProperty = ofPropertyOrBuilder as Property;\n if (ofProperty.dataType === \"map\" && ofProperty.properties) {\n const nestedPaths = getPropertyPaths(\n ofProperty.properties as Properties,\n `${fullPath}[]`\n );\n paths.push(...nestedPaths);\n }\n }\n }\n }\n\n return paths;\n}\n\n/**\n * Get property paths grouped by top-level property for UI display.\n * Skips PropertyBuilder functions.\n * \n * @param properties - The properties object\n * @returns Object with top-level keys mapping to their nested paths\n */\nexport function getGroupedPropertyPaths(\n properties: Properties | undefined\n): Record<string, string[]> {\n if (!properties) return {};\n\n const grouped: Record<string, string[]> = {};\n\n for (const [key, propertyOrBuilder] of Object.entries(properties)) {\n if (!propertyOrBuilder) continue;\n\n // Skip PropertyBuilder functions\n if (isPropertyBuilder(propertyOrBuilder)) continue;\n\n const property = propertyOrBuilder as Property;\n grouped[key] = [key];\n\n if (property.dataType === \"map\" && property.properties) {\n const nestedPaths = getPropertyPaths(\n property.properties as Properties,\n key\n );\n grouped[key].push(...nestedPaths);\n }\n }\n\n return grouped;\n}\n","import React from \"react\";\nimport { useFormex } from \"@firecms/formex\";\nimport {\n DeleteIcon,\n IconButton,\n Select,\n SelectItem,\n DebouncedTextField,\n Typography,\n Chip,\n BooleanSwitchWithLabel,\n TextField,\n cls,\n defaultBorderMixin\n} from \"@firecms/ui\";\nimport {\n Properties,\n Property,\n PropertyOrBuilder,\n getFieldConfig,\n DEFAULT_FIELD_CONFIGS,\n getIconForWidget,\n EnumValueConfig,\n isPropertyBuilder,\n useTranslation\n} from \"@firecms/core\";\nimport { PropertyWithId } from \"../../PropertyEditView\";\nimport { getPropertyPaths } from \"./property_paths\";\n\n/**\n * Condition types that can be configured\n */\nconst CONDITION_TYPES = [\n { id: \"disabled\", label: \"Disabled\", description: \"Disable this field when condition is true\" },\n { id: \"hidden\", label: \"Hidden\", description: \"Hide this field when condition is true\" },\n { id: \"required\", label: \"Required\", description: \"Make this field required when condition is true\" },\n { id: \"readOnly\", label: \"Read Only\", description: \"Make this field read-only when condition is true\" }\n] as const;\n\ntype ConditionType = typeof CONDITION_TYPES[number][\"id\"];\n\n/**\n * Operators for building conditions with their applicable data types\n */\nconst OPERATORS = [\n { id: \"==\", label: \"equals\", valueType: \"any\", applicableTo: [\"string\", \"number\", \"boolean\", \"date\"] },\n { id: \"!=\", label: \"not equals\", valueType: \"any\", applicableTo: [\"string\", \"number\", \"boolean\", \"date\"] },\n { id: \">\", label: \"greater than\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"<\", label: \"less than\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \">=\", label: \"greater or equal\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"<=\", label: \"less or equal\", valueType: \"number\", applicableTo: [\"number\", \"date\"] },\n { id: \"in\", label: \"contains\", valueType: \"any\", applicableTo: [\"array\"] },\n { id: \"!in\", label: \"not contains\", valueType: \"any\", applicableTo: [\"array\"] },\n { id: \"!!\", label: \"has a value\", valueType: \"none\", applicableTo: [\"string\", \"number\", \"boolean\", \"array\", \"map\", \"date\"] },\n { id: \"!\", label: \"is empty\", valueType: \"none\", applicableTo: [\"string\", \"number\", \"boolean\", \"array\", \"map\", \"date\"] },\n { id: \"isPast\", label: \"is in the past\", valueType: \"none\", applicableTo: [\"date\"] },\n { id: \"isFuture\", label: \"is in the future\", valueType: \"none\", applicableTo: [\"date\"] }\n] as const;\n\ntype OperatorId = typeof OPERATORS[number][\"id\"];\n\n// Context fields with their types\nconst CONTEXT_FIELDS = [\n { id: \"isNew\", label: \"Is New Entity\", dataType: \"boolean\", color: \"#9c27b0\" },\n { id: \"entityId\", label: \"Entity ID\", dataType: \"string\", color: \"#2196f3\" },\n { id: \"user.roles\", label: \"User Roles\", dataType: \"array\", color: \"#ff9800\" }\n] as const;\n\ninterface SimpleRule {\n field: string;\n operator: OperatorId;\n value: string;\n}\n\ntype LogicOperator = \"and\" | \"or\";\n\n/**\n * A condition group can contain rules and/or nested groups\n */\ninterface ConditionGroup {\n logic: LogicOperator;\n rules: SimpleRule[];\n groups?: ConditionGroup[]; // Nested groups for complex logic\n}\n\n/**\n * Get the property at a given path.\n * Returns undefined if the path contains a PropertyBuilder (callback).\n */\nfunction getPropertyAtPath(\n fieldPath: string,\n collectionProperties?: Properties\n): Property | undefined {\n if (!collectionProperties) return undefined;\n\n const parts = fieldPath.split(\".\");\n let current: Properties | undefined = collectionProperties;\n let property: Property | undefined;\n\n for (const part of parts) {\n if (!current) return undefined;\n const propertyOrBuilder = current[part] as PropertyOrBuilder | undefined;\n if (!propertyOrBuilder) return undefined;\n\n // Skip PropertyBuilder functions - they require runtime values\n if (isPropertyBuilder(propertyOrBuilder)) return undefined;\n\n property = propertyOrBuilder as Property;\n\n if (property.dataType === \"map\" && property.properties) {\n current = property.properties as Properties;\n } else {\n current = undefined;\n }\n }\n\n return property;\n}\n\n/**\n * Get the data type for a field path\n */\nfunction getFieldDataType(\n fieldPath: string,\n collectionProperties?: Properties\n): string {\n // Check context fields first\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.dataType;\n\n const property = getPropertyAtPath(fieldPath, collectionProperties);\n return property?.dataType ?? \"string\";\n}\n\n/**\n * Get enum values for a property if it has them\n */\nfunction getEnumValues(property: Property | undefined): EnumValueConfig[] | undefined {\n if (!property) return undefined;\n if (property.dataType === \"string\" && property.enumValues) {\n // Normalize to array format\n if (Array.isArray(property.enumValues)) {\n return property.enumValues;\n }\n // Handle object format { key: label }\n return Object.entries(property.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return undefined;\n}\n\n/**\n * Get operators applicable for a given data type\n */\nfunction getOperatorsForDataType(dataType: string) {\n return OPERATORS.filter(op => {\n const applicable = op.applicableTo as readonly string[];\n return applicable.includes(dataType) ||\n (applicable.includes(\"string\") && ![\"number\", \"date\", \"array\"].includes(dataType));\n });\n}\n\n/**\n * Props for a single rule row (used inside a group)\n */\ninterface RuleRowProps {\n rule: SimpleRule;\n onRuleChange: (rule: SimpleRule) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n showErrors: boolean;\n showRemoveButton: boolean;\n}\n\n/**\n * Props for a condition group (with AND/OR logic)\n */\ninterface ConditionGroupRowProps {\n conditionType: ConditionType;\n group: ConditionGroup;\n onGroupChange: (group: ConditionGroup) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n showErrors: boolean;\n}\n\n/**\n * Dynamic value input based on field data type and enum values\n */\nfunction ConditionValueInput({\n value,\n onChange,\n dataType,\n enumValues,\n disabled,\n operator\n}: {\n value: string;\n onChange: (value: string) => void;\n dataType: string;\n enumValues?: EnumValueConfig[];\n disabled: boolean;\n operator: OperatorId;\n}) {\n // For truthy/falsy operators, no value needed\n if (operator === \"!!\" || operator === \"!\") {\n return null;\n }\n\n // Boolean - use switch\n if (dataType === \"boolean\") {\n return (\n <BooleanSwitchWithLabel\n value={value === \"true\"}\n size=\"small\"\n position=\"start\"\n disabled={disabled}\n onValueChange={(newValue) => onChange(newValue ? \"true\" : \"false\")}\n />\n );\n }\n\n // Enum/string with enumValues - use select\n if (enumValues && enumValues.length > 0) {\n return (\n <Select\n value={value}\n onValueChange={onChange}\n disabled={disabled}\n size=\"small\"\n className=\"min-w-[120px]\"\n placeholder=\"Select value\">\n {enumValues.map(ev => (\n <SelectItem key={ev.id} value={String(ev.id)}>\n {ev.label}\n </SelectItem>\n ))}\n </Select>\n );\n }\n\n // Number - use number input\n if (dataType === \"number\") {\n return (\n <TextField\n value={value}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n placeholder=\"Value\"\n className=\"flex-1 min-w-[80px]\"\n onChange={(e) => onChange(e.target.value)}\n />\n );\n }\n\n // Array - comma separated values\n if (dataType === \"array\") {\n return (\n <DebouncedTextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"value1, value2\"\n className=\"flex-1 min-w-[120px]\"\n />\n );\n }\n\n // Default - text input\n return (\n <DebouncedTextField\n value={value}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Value\"\n className=\"flex-1 min-w-[100px]\"\n inputClassName=\"min-w-[100px]\"\n />\n );\n}\n\nfunction ConditionRow({\n rule,\n onRuleChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n showErrors,\n showRemoveButton = true\n}: RuleRowProps & { showRemoveButton?: boolean }) {\n const fieldDataType = getFieldDataType(rule.field, collectionProperties);\n const applicableOperators = getOperatorsForDataType(fieldDataType);\n const property = getPropertyAtPath(rule.field, collectionProperties);\n const enumValues = getEnumValues(property);\n const operator = OPERATORS.find(op => op.id === rule.operator);\n const showValueField = operator?.valueType !== \"none\";\n\n // Validation: check for incomplete condition (only show after submission attempt)\n const isFieldMissing = !rule.field;\n const isValueMissing = showValueField && !rule.value && rule.value !== \"0\";\n const hasError = showErrors && (isFieldMissing || isValueMissing);\n\n // Get color for the field\n const getFieldColor = (fieldPath: string): string => {\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.color;\n\n if (!collectionProperties) return \"#888\";\n\n const prop = getPropertyAtPath(fieldPath, collectionProperties);\n if (!prop) return \"#888\";\n const config = getFieldConfig(prop, DEFAULT_FIELD_CONFIGS);\n return config?.color ?? \"#888\";\n };\n\n return (\n <div className={cls(\n \"flex items-center gap-2 p-2 rounded-md\",\n hasError ? \"bg-red-50 dark:bg-red-900/20\" : \"bg-surface-100 dark:bg-surface-800\"\n )}>\n {/* Field selector with colored badge */}\n <Select\n value={rule.field}\n onValueChange={(value) => {\n const newDataType = getFieldDataType(value, collectionProperties);\n const newApplicableOps = getOperatorsForDataType(newDataType);\n // Reset operator if current one isn't applicable\n const newOperator = newApplicableOps.find(op => op.id === rule.operator)\n ? rule.operator\n : newApplicableOps[0]?.id ?? \"==\";\n // Reset value when changing field\n onRuleChange({ ...rule, field: value, operator: newOperator as OperatorId, value: \"\" });\n }}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[180px]\"\n renderValue={(value) => (\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full shrink-0\"\n style={{ backgroundColor: getFieldColor(value) }}\n />\n <span className=\"truncate\">{value}</span>\n </div>\n )}\n placeholder=\"Select field\">\n {/* Context fields */}\n {CONTEXT_FIELDS.map(field => (\n <SelectItem key={field.id} value={field.id}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full shrink-0\"\n style={{ backgroundColor: field.color }}\n />\n <span>{field.label}</span>\n <Chip size=\"small\" colorScheme=\"grayLight\" className=\"ml-auto\">\n {field.dataType}\n </Chip>\n </div>\n </SelectItem>\n ))}\n\n {/* Separator */}\n {availableFields.length > 0 && (\n <SelectItem value=\"_divider\" disabled>\n <span className=\"text-xs text-surface-500\">─ Entity Fields ─</span>\n </SelectItem>\n )}\n\n {/* Property fields */}\n {availableFields.map(field => {\n const color = getFieldColor(field);\n const dataType = getFieldDataType(field, collectionProperties);\n const prop = getPropertyAtPath(field, collectionProperties);\n const hasEnum = !!getEnumValues(prop);\n return (\n <SelectItem key={field} value={field}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full shrink-0\"\n style={{ backgroundColor: color }}\n />\n <span>{field}</span>\n <Chip size=\"small\" colorScheme=\"grayLight\" className=\"ml-auto\">\n {hasEnum ? \"enum\" : dataType}\n </Chip>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n\n {/* Operator - filtered by field type */}\n <Select\n value={rule.operator}\n onValueChange={(value) => onRuleChange({ ...rule, operator: value as OperatorId })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[120px]\">\n {applicableOperators.map(op => (\n <SelectItem key={op.id} value={op.id}>\n {op.label}\n </SelectItem>\n ))}\n </Select>\n\n {/* Dynamic Value input */}\n {showValueField && (\n <ConditionValueInput\n value={rule.value}\n onChange={(newValue) => onRuleChange({ ...rule, value: newValue })}\n dataType={fieldDataType}\n enumValues={enumValues}\n disabled={disabled}\n operator={rule.operator}\n />\n )}\n\n {/* Remove button */}\n {showRemoveButton && (\n <IconButton onClick={onRemove} disabled={disabled} size=\"small\" variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n )}\n </div>\n );\n}\n\n/**\n * A condition group row with AND/OR logic selector and multiple rules\n */\nfunction ConditionGroupRow({\n conditionType,\n group,\n onGroupChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n showErrors\n}: ConditionGroupRowProps) {\n const { t } = useTranslation();\n\n const handleLogicChange = (logic: LogicOperator) => {\n onGroupChange({ ...group, logic });\n };\n\n const handleRuleChange = (index: number, rule: SimpleRule) => {\n const newRules = [...group.rules];\n newRules[index] = rule;\n onGroupChange({ ...group, rules: newRules });\n };\n\n const handleRemoveRule = (index: number) => {\n const newRules = group.rules.filter((_, i) => i !== index);\n if (newRules.length === 0) {\n onRemove();\n } else {\n onGroupChange({ ...group, rules: newRules });\n }\n };\n\n const handleAddRule = () => {\n const defaultRule: SimpleRule = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\"\n };\n onGroupChange({ ...group, rules: [...group.rules, defaultRule] });\n };\n\n return (\n <div className={cls(\"p-3 bg-surface-50 dark:bg-surface-900 rounded-lg border\", defaultBorderMixin)}>\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"label\" className=\"font-medium text-primary\">\n {CONDITION_TYPES.find(ct => ct.id === conditionType)?.label} when\n </Typography>\n {group.rules.length > 1 && (\n <Select\n value={group.logic}\n onValueChange={(value) => handleLogicChange(value as LogicOperator)}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[100px]\">\n <SelectItem value=\"and\">{t(\"all_of_these\")}</SelectItem>\n <SelectItem value=\"or\">{t(\"any_of_these\")}</SelectItem>\n </Select>\n )}\n </div>\n <IconButton onClick={onRemove} disabled={disabled} size=\"small\" variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n {group.rules.map((rule, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <Typography variant=\"caption\" className=\"text-center text-secondary font-medium uppercase\">\n {group.logic === \"and\" ? \"AND\" : \"OR\"}\n </Typography>\n )}\n <ConditionRow\n rule={rule}\n onRuleChange={(newRule: SimpleRule) => handleRuleChange(index, newRule)}\n onRemove={() => handleRemoveRule(index)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n showErrors={showErrors}\n showRemoveButton={group.rules.length > 1}\n />\n </React.Fragment>\n ))}\n </div>\n\n <button\n onClick={handleAddRule}\n disabled={disabled}\n type=\"button\"\n className={cls(\n \"mt-3 w-full py-2 px-3 rounded-md text-sm\",\n \"border border-dashed text-secondary\",\n \"hover:bg-surface-100 dark:hover:bg-surface-800\",\n \"transition-colors\",\n defaultBorderMixin\n )}\n >\n + Add condition\n </button>\n </div>\n );\n}\n\n/**\n * Convert a simple rule to JSON-Logic format\n */\nfunction simpleRuleToJsonLogic(rule: SimpleRule): Record<string, any> {\n // Guard against empty field or operator which creates invalid Firestore keys\n if (!rule.field || !rule.operator) {\n // Return a valid default rule instead of creating invalid data\n return { \"!!\": { var: \"values._placeholder\" } };\n }\n\n const varRef = { var: `values.${rule.field}` };\n\n // Handle special fields that don't need the \"values.\" prefix\n const fieldVar = rule.field.startsWith(\"user.\") || rule.field === \"isNew\" || rule.field === \"entityId\"\n ? { var: rule.field }\n : varRef;\n\n if (rule.operator === \"!!\") {\n return { \"!!\": fieldVar };\n }\n if (rule.operator === \"!\") {\n return { \"!\": fieldVar };\n }\n if (rule.operator === \"isPast\") {\n return { \"isPast\": fieldVar };\n }\n if (rule.operator === \"isFuture\") {\n return { \"isFuture\": fieldVar };\n }\n\n // Parse value - try to convert to appropriate type\n let parsedValue: any = rule.value;\n if (rule.value === \"true\") parsedValue = true;\n else if (rule.value === \"false\") parsedValue = false;\n else if (rule.value === \"null\") parsedValue = null;\n else if (!isNaN(Number(rule.value)) && rule.value !== \"\") parsedValue = Number(rule.value);\n\n // Handle array values for \"in\" and \"!in\" operators\n if ((rule.operator === \"in\" || rule.operator === \"!in\") && typeof parsedValue === \"string\") {\n parsedValue = parsedValue.split(\",\").map(s => s.trim());\n }\n\n // Handle \"!in\" (not contains) - wrap \"in\" with negation\n if (rule.operator === \"!in\") {\n return { \"!\": { \"in\": [fieldVar, parsedValue] } };\n }\n\n return { [rule.operator]: [fieldVar, parsedValue] };\n}\n\n/**\n * Try to parse JSON-Logic back to a simple rule\n */\nfunction jsonLogicToSimpleRule(jsonLogic: Record<string, any>): SimpleRule | null {\n try {\n const operator = Object.keys(jsonLogic)[0] as OperatorId;\n const args = jsonLogic[operator];\n\n // Handle \"!\" operator - could be negation of a value or negation of \"in\" (not contains)\n if (operator === \"!\") {\n // Check if it's a negated \"in\" operation: {\"!\": {\"in\": [...]}}\n if (typeof args === \"object\" && args !== null && \"in\" in args) {\n const inArgs = args.in;\n if (Array.isArray(inArgs) && inArgs.length === 2) {\n const [left, right] = inArgs;\n if (left?.var) {\n const field = left.var.replace(/^values\\./, \"\");\n const value = Array.isArray(right)\n ? right.join(\", \")\n : String(right ?? \"\");\n return { field, operator: \"!in\", value };\n }\n }\n }\n // Otherwise it's a simple negation (is falsy)\n if (args?.var) {\n const field = args.var.replace(/^values\\./, \"\");\n return { field, operator: \"!\", value: \"\" };\n }\n }\n\n if (operator === \"!!\") {\n const varObj = args;\n if (varObj?.var) {\n const field = varObj.var.replace(/^values\\./, \"\");\n return { field, operator, value: \"\" };\n }\n }\n\n // Handle isPast and isFuture operators\n if (operator === \"isPast\" || operator === \"isFuture\") {\n const varObj = args;\n if (varObj?.var) {\n const field = varObj.var.replace(/^values\\./, \"\");\n return { field, operator, value: \"\" };\n }\n }\n\n if (Array.isArray(args) && args.length === 2) {\n const [left, right] = args;\n if (left?.var) {\n const field = left.var.replace(/^values\\./, \"\");\n const value = Array.isArray(right)\n ? right.join(\", \")\n : String(right ?? \"\");\n return { field, operator, value };\n }\n }\n } catch {\n // Fall through\n }\n return null;\n}\n\n/**\n * Convert a condition group to JSON-Logic format\n */\nfunction groupToJsonLogic(group: ConditionGroup): Record<string, any> {\n const ruleLogics = group.rules\n .filter(rule => rule.field && rule.operator) // Filter out incomplete rules\n .map(rule => simpleRuleToJsonLogic(rule));\n\n const groupLogics = (group.groups || [])\n .map(g => groupToJsonLogic(g));\n\n const allLogics = [...ruleLogics, ...groupLogics];\n\n // If only one condition, don't wrap in and/or\n if (allLogics.length === 1) {\n return allLogics[0];\n }\n\n // If no conditions, return a default true condition\n if (allLogics.length === 0) {\n return { \"!!\": { var: \"values._placeholder\" } };\n }\n\n return { [group.logic]: allLogics };\n}\n\n/**\n * Try to parse JSON-Logic back to a condition group\n */\nfunction jsonLogicToGroup(jsonLogic: Record<string, any>): ConditionGroup | null {\n try {\n const operator = Object.keys(jsonLogic)[0];\n\n // Check if it's an AND or OR group\n if (operator === \"and\" || operator === \"or\") {\n const args = jsonLogic[operator];\n if (Array.isArray(args)) {\n const rules: SimpleRule[] = [];\n const groups: ConditionGroup[] = [];\n\n for (const arg of args) {\n // Check if this is a nested group\n const nestedOperator = Object.keys(arg)[0];\n if (nestedOperator === \"and\" || nestedOperator === \"or\") {\n const nestedGroup = jsonLogicToGroup(arg);\n if (nestedGroup) {\n groups.push(nestedGroup);\n }\n } else {\n // It's a simple rule\n const rule = jsonLogicToSimpleRule(arg);\n if (rule) {\n rules.push(rule);\n }\n }\n }\n\n return {\n logic: operator,\n rules,\n groups: groups.length > 0 ? groups : undefined\n };\n }\n }\n\n // It's a single rule - wrap in an AND group\n const rule = jsonLogicToSimpleRule(jsonLogic);\n if (rule) {\n return {\n logic: \"and\",\n rules: [rule]\n };\n }\n } catch {\n // Fall through\n }\n return null;\n}\n\nexport interface ConditionsEditorProps {\n disabled: boolean;\n /**\n * Optional collection properties for populating the field selector.\n * If not provided, a basic set of common fields is used.\n */\n collectionProperties?: Properties;\n}\n\nexport function ConditionsEditor({ disabled, collectionProperties }: ConditionsEditorProps) {\n const { t } = useTranslation();\n\n const { values, setFieldValue, submitCount } = useFormex<PropertyWithId>();\n\n // Get property paths from collection properties (includes nested maps)\n const availableFields: string[] = collectionProperties\n ? getPropertyPaths(collectionProperties)\n : [];\n\n // Get current conditions from form values\n const conditions = (values as any).conditions ?? {};\n\n // DEBUG: Log conditions to see what's being loaded\n console.log(\"[ConditionsEditor] Loaded conditions:\", conditions);\n\n const activeConditions: { type: ConditionType; group: ConditionGroup }[] = [];\n\n for (const type of CONDITION_TYPES) {\n const jsonLogic = conditions[type.id as keyof typeof conditions];\n if (jsonLogic) {\n console.log(`[ConditionsEditor] Parsing ${type.id}:`, jsonLogic);\n const group = jsonLogicToGroup(jsonLogic as Record<string, any>);\n console.log(`[ConditionsEditor] Parsed group:`, group);\n if (group) {\n activeConditions.push({ type: type.id, group });\n }\n }\n }\n\n const handleAddCondition = (conditionType: ConditionType) => {\n const defaultRule: SimpleRule = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\"\n };\n\n const defaultGroup: ConditionGroup = {\n logic: \"and\",\n rules: [defaultRule]\n };\n\n const jsonLogic = groupToJsonLogic(defaultGroup);\n setFieldValue(`conditions.${conditionType}`, jsonLogic);\n };\n\n const handleGroupChange = (type: ConditionType, group: ConditionGroup) => {\n const jsonLogic = groupToJsonLogic(group);\n setFieldValue(`conditions.${type}`, jsonLogic);\n };\n\n const handleRemoveCondition = (type: ConditionType) => {\n const newConditions = { ...conditions };\n delete (newConditions as any)[type];\n if (Object.keys(newConditions).length === 0) {\n setFieldValue(\"conditions\", undefined);\n } else {\n setFieldValue(\"conditions\", newConditions);\n }\n };\n\n // Condition types that aren't already used\n const availableConditionTypes = CONDITION_TYPES.filter(\n ct => !conditions[ct.id as keyof typeof conditions]\n );\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Typography variant=\"caption\" color=\"secondary\">\n Add conditions to dynamically control this field based on other field values or user context.\n </Typography>\n\n {/* Active conditions */}\n {activeConditions.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {activeConditions.map(({ type, group }) => (\n <ConditionGroupRow\n key={type}\n conditionType={type}\n group={group}\n onGroupChange={(newGroup) => handleGroupChange(type, newGroup)}\n onRemove={() => handleRemoveCondition(type)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n showErrors={submitCount > 0}\n />\n ))}\n </div>\n )}\n\n {/* Add new condition - click to add directly */}\n {availableConditionTypes.length > 0 && (\n <Select\n value=\"\"\n onValueChange={(value) => handleAddCondition(value as ConditionType)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"+ Add condition...\"\n className=\"w-full max-w-xs\">\n {availableConditionTypes.map(ct => (\n <SelectItem key={ct.id} value={ct.id}>\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{ct.label}</span>\n <span className=\"text-xs text-surface-500\">{ct.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n )}\n\n {activeConditions.length === 0 && availableConditionTypes.length === 0 && (\n <Typography variant=\"caption\" color=\"disabled\" className=\"text-center py-4\">\n All condition types are configured.\n </Typography>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { useFormex } from \"@firecms/formex\";\nimport {\n DeleteIcon,\n IconButton,\n Select,\n SelectItem,\n Typography,\n MultiSelect,\n MultiSelectItem,\n cls,\n defaultBorderMixin,\n DebouncedTextField,\n BooleanSwitchWithLabel\n} from \"@firecms/ui\";\nimport {\n Properties,\n Property,\n PropertyOrBuilder,\n getFieldConfig,\n DEFAULT_FIELD_CONFIGS,\n EnumValueConfig,\n isPropertyBuilder\n} from \"@firecms/core\";\nimport { PropertyWithId } from \"../../PropertyEditView\";\nimport { getPropertyPaths } from \"./property_paths\";\n\n/**\n * Enum condition types - maps to PropertyConditions structure:\n * - \"filter\" → conditions.allowedEnumValues (JSON Logic returning allowed IDs)\n * - \"exclude\" → conditions.excludedEnumValues (JSON Logic returning excluded IDs)\n */\nconst ENUM_CONDITION_TYPES = [\n { id: \"allowedEnumValues\", label: \"Filter Options\", description: \"Only show selected enum values when condition is true\" },\n { id: \"excludedEnumValues\", label: \"Exclude Options\", description: \"Hide selected enum values when condition is true\" }\n] as const;\n\ntype EnumConditionType = typeof ENUM_CONDITION_TYPES[number][\"id\"];\n\n/**\n * Operators for conditions\n */\nconst OPERATORS = [\n { id: \"==\", label: \"equals\", valueType: \"any\" },\n { id: \"!=\", label: \"not equals\", valueType: \"any\" },\n { id: \"in\", label: \"contains\", valueType: \"array\" },\n { id: \"!!\", label: \"has a value\", valueType: \"none\" },\n { id: \"!\", label: \"is empty\", valueType: \"none\" }\n] as const;\n\ntype OperatorId = typeof OPERATORS[number][\"id\"];\n\n// Context fields\nconst CONTEXT_FIELDS = [\n { id: \"isNew\", label: \"Is New Entity\", dataType: \"boolean\", color: \"#9c27b0\" },\n { id: \"entityId\", label: \"Entity ID\", dataType: \"string\", color: \"#2196f3\" },\n { id: \"user.roles\", label: \"User Roles\", dataType: \"array\", color: \"#ff9800\" }\n] as const;\n\ninterface EnumConditionConfig {\n field: string;\n operator: OperatorId;\n value: string;\n selectedEnumIds: string[];\n}\n\n/**\n * Get the property at a given path.\n * Returns undefined if the path contains a PropertyBuilder (callback).\n */\nfunction getPropertyAtPath(\n fieldPath: string,\n collectionProperties?: Properties\n): Property | undefined {\n if (!collectionProperties) return undefined;\n\n const parts = fieldPath.split(\".\");\n let current: Properties | undefined = collectionProperties;\n let property: Property | undefined;\n\n for (const part of parts) {\n if (!current) return undefined;\n const propertyOrBuilder = current[part] as PropertyOrBuilder | undefined;\n if (!propertyOrBuilder) return undefined;\n\n if (isPropertyBuilder(propertyOrBuilder)) return undefined;\n\n property = propertyOrBuilder as Property;\n\n if (property.dataType === \"map\" && property.properties) {\n current = property.properties as Properties;\n } else {\n current = undefined;\n }\n }\n\n return property;\n}\n\n/**\n * Get enum values from the current property being edited\n */\nfunction getCurrentPropertyEnumValues(values: PropertyWithId): EnumValueConfig[] {\n if (values.dataType === \"string\" && values.enumValues) {\n if (Array.isArray(values.enumValues)) {\n return values.enumValues;\n }\n return Object.entries(values.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return [];\n}\n\n/**\n * Get color for a field\n */\nfunction getFieldColor(fieldPath: string, collectionProperties?: Properties): string {\n const contextField = CONTEXT_FIELDS.find(f => f.id === fieldPath);\n if (contextField) return contextField.color;\n\n if (!collectionProperties) return \"#888\";\n\n const prop = getPropertyAtPath(fieldPath, collectionProperties);\n if (!prop) return \"#888\";\n const config = getFieldConfig(prop, DEFAULT_FIELD_CONFIGS);\n return config?.color ?? \"#888\";\n}\n\n/**\n * Get enum values from a property (for the selected condition field)\n */\nfunction getFieldEnumValues(property: Property | undefined): EnumValueConfig[] {\n if (!property) return [];\n if (property.dataType === \"string\" && property.enumValues) {\n if (Array.isArray(property.enumValues)) {\n return property.enumValues;\n }\n return Object.entries(property.enumValues).map(([id, label]) => ({\n id,\n label: typeof label === \"string\" ? label : (label as EnumValueConfig).label\n }));\n }\n return [];\n}\n\n/**\n * Convert an array to an object with numeric keys for Firestore storage.\n * Firestore doesn't allow nested arrays, so we store as {\"0\": \"a\", \"1\": \"b\"}\n * The runtime will convert back via objectToArray().\n */\nfunction arrayToObject(arr: string[]): Record<string, string> {\n const result: Record<string, string> = {};\n arr.forEach((v, i) => {\n result[String(i)] = v;\n });\n return result;\n}\n\n/**\n * Build JSON Logic rule: { \"if\": [ condition, thenValue, elseValue ] }\n * When condition is true, return the selected enum IDs.\n * When false, return all enum IDs or empty (depending on type).\n * \n * IMPORTANT: We store arrays as objects with numeric keys to avoid\n * Firestore's \"Nested arrays are not supported\" error.\n */\nfunction buildEnumFilterRule(\n config: EnumConditionConfig,\n conditionType: EnumConditionType,\n allEnumIds: string[]\n): Record<string, unknown> {\n // Guard against empty field or operator which creates invalid Firestore keys\n if (!config.field || !config.operator) {\n // Return a valid default rule\n return {\n \"if\": [\n { \"!!\": { var: \"values._placeholder\" } },\n {},\n arrayToObject(allEnumIds)\n ]\n };\n }\n\n const fieldVar = config.field.startsWith(\"user.\") || config.field === \"isNew\" || config.field === \"entityId\"\n ? { var: config.field }\n : { var: `values.${config.field}` };\n\n // Build the condition\n let condition: Record<string, unknown>;\n if (config.operator === \"!!\") {\n condition = { \"!!\": fieldVar };\n } else if (config.operator === \"!\") {\n condition = { \"!\": fieldVar };\n } else {\n let parsedValue: unknown = config.value;\n if (config.value === \"true\") parsedValue = true;\n else if (config.value === \"false\") parsedValue = false;\n else if (!isNaN(Number(config.value)) && config.value !== \"\") parsedValue = Number(config.value);\n\n if (config.operator === \"in\" && typeof parsedValue === \"string\") {\n parsedValue = parsedValue.split(\",\").map(s => s.trim());\n }\n\n condition = { [config.operator]: [fieldVar, parsedValue] };\n }\n\n // For allowedEnumValues: when condition true, show selected; when false, show all\n // For excludedEnumValues: when condition true, exclude selected; when false, exclude nothing\n // Convert arrays to objects to avoid Firestore nested array error\n if (conditionType === \"allowedEnumValues\") {\n return {\n \"if\": [\n condition,\n arrayToObject(config.selectedEnumIds), // When true: only these\n arrayToObject(allEnumIds) // When false: all\n ]\n };\n } else {\n // excludedEnumValues\n return {\n \"if\": [\n condition,\n arrayToObject(config.selectedEnumIds), // When true: exclude these\n {} // When false: exclude nothing\n ]\n };\n }\n}\n\n/**\n * Convert an object with numeric keys (Firestore serialization) back to an array.\n * {\"0\": \"a\", \"1\": \"b\"} -> [\"a\", \"b\"]\n */\nfunction objectToArray(obj: unknown): string[] {\n if (Array.isArray(obj)) return obj.map(String);\n if (obj && typeof obj === \"object\") {\n const keys = Object.keys(obj);\n // Check if all keys are numeric\n if (keys.length > 0 && keys.every(k => !isNaN(Number(k)))) {\n return keys\n .sort((a, b) => Number(a) - Number(b))\n .map(k => String((obj as Record<string, unknown>)[k]));\n }\n }\n return [];\n}\n\n/**\n * Parse JSON Logic back to EnumConditionConfig\n */\nfunction parseEnumFilterRule(rule: Record<string, unknown>): EnumConditionConfig | null {\n try {\n // Expected: { \"if\": [ condition, selectedIds, fallbackIds ] }\n const ifRule = rule[\"if\"];\n if (!Array.isArray(ifRule) || ifRule.length < 2) return null;\n\n const [condition, selectedEnumIdsRaw] = ifRule;\n\n // Handle both array format and Firestore's object-with-numeric-keys format\n const selectedEnumIds = objectToArray(selectedEnumIdsRaw);\n if (selectedEnumIds.length === 0 && selectedEnumIdsRaw) {\n // If it was truthy but we got no values, parsing failed\n console.log(\"[EnumConditionsEditor] Warning: Could not parse selectedEnumIds:\", selectedEnumIdsRaw);\n }\n\n // Parse the condition\n const conditionObj = condition as Record<string, unknown>;\n const operator = Object.keys(conditionObj)[0] as OperatorId;\n const args = conditionObj[operator] as unknown;\n\n let field = \"\";\n let value = \"\";\n\n if (operator === \"!!\" || operator === \"!\") {\n const varObj = args as Record<string, string> | null;\n if (varObj?.var) {\n field = varObj.var.replace(/^values\\./, \"\");\n }\n } else if (Array.isArray(args) && args.length === 2) {\n const [left, right] = args as [Record<string, string>, unknown];\n if (left?.var) {\n field = left.var.replace(/^values\\./, \"\");\n value = Array.isArray(right) ? right.join(\", \") : String(right ?? \"\");\n }\n }\n\n return {\n field,\n operator,\n value,\n selectedEnumIds\n };\n } catch (e) {\n console.error(\"[EnumConditionsEditor] Error parsing rule:\", e);\n return null;\n }\n}\n\ninterface EnumConditionRowProps {\n conditionType: EnumConditionType;\n config: EnumConditionConfig;\n onConfigChange: (config: EnumConditionConfig) => void;\n onRemove: () => void;\n disabled: boolean;\n availableFields: string[];\n collectionProperties?: Properties;\n propertyEnumValues: EnumValueConfig[];\n showErrors: boolean;\n}\n\nfunction EnumConditionRow({\n conditionType,\n config,\n onConfigChange,\n onRemove,\n disabled,\n availableFields,\n collectionProperties,\n propertyEnumValues,\n showErrors\n}: EnumConditionRowProps) {\n const operator = OPERATORS.find(op => op.id === config.operator);\n const showValueField = operator?.valueType !== \"none\";\n\n // Get the property for the selected field\n const selectedFieldProperty = getPropertyAtPath(config.field, collectionProperties);\n const isBoolean = config.field === \"isNew\" || selectedFieldProperty?.dataType === \"boolean\";\n\n // Check if the selected field has enum values\n const fieldEnumValues = getFieldEnumValues(selectedFieldProperty);\n\n // Validation: check for incomplete condition (only show after submission attempt)\n const isFieldMissing = !config.field;\n const isValueMissing = showValueField && !config.value && config.value !== \"0\";\n const isEnumSelectionMissing = config.selectedEnumIds.length === 0;\n const hasError = showErrors && (isFieldMissing || isValueMissing || isEnumSelectionMissing);\n\n return (\n <div className={cls(\n \"p-3 bg-surface-50 dark:bg-surface-900 rounded-lg border\",\n hasError ? \"border-red-300 dark:border-red-700\" : defaultBorderMixin\n )}>\n {/* Title line */}\n <div className=\"flex items-center justify-between mb-2\">\n <Typography variant=\"label\" className=\"font-medium text-primary\">\n {ENUM_CONDITION_TYPES.find(ct => ct.id === conditionType)?.label} when\n </Typography>\n <IconButton\n onClick={onRemove}\n disabled={disabled}\n size=\"small\"\n variant=\"ghost\">\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n\n {/* Condition row: Field, Operator, Value */}\n <div className=\"flex items-center gap-2 mb-3\">\n {/* Field selector */}\n <Select\n value={config.field}\n onValueChange={(value) => onConfigChange({ ...config, field: value, value: \"\" })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[140px]\"\n placeholder=\"Field\">\n {CONTEXT_FIELDS.map(field => (\n <SelectItem key={field.id} value={field.id}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: field.color }}\n />\n <span>{field.label}</span>\n </div>\n </SelectItem>\n ))}\n {availableFields.length > 0 && (\n <SelectItem value=\"_divider\" disabled>\n <span className=\"text-xs text-surface-500\">─ Fields ─</span>\n </SelectItem>\n )}\n {availableFields.map(field => (\n <SelectItem key={field} value={field}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: getFieldColor(field, collectionProperties) }}\n />\n <span>{field}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n\n {/* Operator */}\n <Select\n value={config.operator}\n onValueChange={(value) => onConfigChange({ ...config, operator: value as OperatorId })}\n disabled={disabled}\n size=\"small\"\n inputClassName=\"min-w-[100px]\">\n {OPERATORS.map(op => (\n <SelectItem key={op.id} value={op.id}>{op.label}</SelectItem>\n ))}\n </Select>\n\n {/* Value - dynamic based on field type */}\n {showValueField && (\n isBoolean ? (\n <BooleanSwitchWithLabel\n value={config.value === \"true\"}\n size=\"small\"\n position=\"start\"\n disabled={disabled}\n onValueChange={(v) => onConfigChange({ ...config, value: v ? \"true\" : \"false\" })}\n />\n ) : fieldEnumValues.length > 0 ? (\n // Show Select for enum fields\n <Select\n value={config.value}\n onValueChange={(value) => onConfigChange({ ...config, value })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Select value...\"\n className=\"min-w-[120px]\">\n {fieldEnumValues.map(ev => (\n <SelectItem key={String(ev.id)} value={String(ev.id)}>\n {ev.label}\n </SelectItem>\n ))}\n </Select>\n ) : (\n <DebouncedTextField\n value={config.value}\n onChange={(e) => onConfigChange({ ...config, value: e.target.value })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Value\"\n className=\"flex-1 min-w-[80px]\"\n />\n )\n )}\n </div>\n\n {/* Enum selection */}\n <div>\n <Typography variant=\"caption\" color=\"secondary\" className=\"block mb-2\">\n {conditionType === \"allowedEnumValues\" ? \"Show only:\" : \"Hide:\"}\n </Typography>\n <MultiSelect\n value={config.selectedEnumIds}\n onValueChange={(values) => onConfigChange({ ...config, selectedEnumIds: values })}\n disabled={disabled}\n size=\"small\"\n placeholder=\"Select values...\"\n useChips={true}>\n {propertyEnumValues.map(ev => (\n <MultiSelectItem key={String(ev.id)} value={String(ev.id)}>\n {ev.label}\n </MultiSelectItem>\n ))}\n </MultiSelect>\n </div>\n\n {/* Validation error message */}\n {hasError && (\n <Typography variant=\"caption\" className=\"mt-2 text-red-500 dark:text-red-400\">\n {isFieldMissing\n ? \"Please select a field for this condition\"\n : isValueMissing\n ? \"Please enter a value for this condition\"\n : \"Please select at least one value to filter\"\n }\n </Typography>\n )}\n </div>\n );\n}\n\nexport interface EnumConditionsEditorProps {\n disabled: boolean;\n collectionProperties?: Properties;\n}\n\nexport function EnumConditionsEditor({ disabled, collectionProperties }: EnumConditionsEditorProps) {\n const { values, setFieldValue, submitCount } = useFormex<PropertyWithId>();\n\n const availableFields: string[] = collectionProperties\n ? getPropertyPaths(collectionProperties)\n : [];\n\n const propertyEnumValues = getCurrentPropertyEnumValues(values);\n\n // Only show for enum properties\n if (propertyEnumValues.length === 0) {\n return null;\n }\n\n const allEnumIds = propertyEnumValues.map(ev => String(ev.id));\n\n // Get conditions from the correct path: values.conditions\n const conditions = (values as PropertyWithId & { conditions?: Record<string, unknown> }).conditions ?? {};\n\n // Parse existing enum conditions\n const activeConditions: { type: EnumConditionType; config: EnumConditionConfig }[] = [];\n\n for (const type of ENUM_CONDITION_TYPES) {\n const rule = conditions[type.id] as Record<string, unknown> | undefined;\n if (rule) {\n const config = parseEnumFilterRule(rule);\n if (config) {\n activeConditions.push({ type: type.id, config });\n }\n }\n }\n\n const handleAddCondition = (conditionType: EnumConditionType) => {\n const defaultConfig: EnumConditionConfig = {\n field: availableFields[0] ?? \"isNew\",\n operator: \"==\",\n value: \"\",\n selectedEnumIds: []\n };\n\n const rule = buildEnumFilterRule(defaultConfig, conditionType, allEnumIds);\n setFieldValue(`conditions.${conditionType}`, rule);\n };\n\n const handleConfigChange = (type: EnumConditionType, config: EnumConditionConfig) => {\n const rule = buildEnumFilterRule(config, type, allEnumIds);\n setFieldValue(`conditions.${type}`, rule);\n };\n\n const handleRemoveCondition = (type: EnumConditionType) => {\n const newConditions = { ...conditions };\n delete newConditions[type];\n if (Object.keys(newConditions).length === 0) {\n setFieldValue(\"conditions\", undefined);\n } else {\n setFieldValue(\"conditions\", newConditions);\n }\n };\n\n const availableConditionTypes = ENUM_CONDITION_TYPES.filter(\n ct => !conditions[ct.id]\n );\n\n return (\n <div className={cls(\"flex flex-col gap-4 mt-4 pt-4 border-t\", defaultBorderMixin)}>\n <Typography variant=\"label\" className=\"font-medium\">\n Enum Value Conditions\n </Typography>\n <Typography variant=\"caption\" color=\"secondary\">\n Dynamically filter which options are available.\n </Typography>\n\n {activeConditions.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {activeConditions.map(({ type, config }) => (\n <EnumConditionRow\n key={type}\n conditionType={type}\n config={config}\n onConfigChange={(newConfig) => handleConfigChange(type, newConfig)}\n onRemove={() => handleRemoveCondition(type)}\n disabled={disabled}\n availableFields={availableFields}\n collectionProperties={collectionProperties}\n propertyEnumValues={propertyEnumValues}\n showErrors={submitCount > 0}\n />\n ))}\n </div>\n )}\n\n {availableConditionTypes.length > 0 && (\n <Select\n value=\"\"\n onValueChange={(value) => handleAddCondition(value as EnumConditionType)}\n disabled={disabled}\n size=\"small\"\n placeholder=\"+ Add enum condition...\"\n className=\"w-full max-w-xs\">\n {availableConditionTypes.map(ct => (\n <SelectItem key={ct.id} value={ct.id}>\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{ct.label}</span>\n <span className=\"text-xs text-surface-500\">{ct.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"user_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"user_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: true\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined,\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? [],\n userSelect: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"reference_as_string\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"reference_as_string\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n const { t } = useTranslation();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={t(\"preview_type\")}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return t(\"preview_image\");\n case \"video\":\n return t(\"preview_video\");\n case \"audio\":\n return t(\"preview_audio\");\n default:\n return t(\"display_url\");\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n {t(\"display_url\")}\n </SelectItem>\n <SelectItem value={\"image\"}>\n {t(\"preview_image\")}\n </SelectItem>\n <SelectItem value={\"video\"}>\n {t(\"preview_video\")}\n </SelectItem>\n <SelectItem value={\"audio\"}>\n {t(\"preview_audio\")}\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={t(\"default_value\")}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"user_select\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"reference_as_string\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React, { useCallback } from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport {\n BooleanSwitchWithLabel,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n SettingsIcon,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n}: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const { t } = useTranslation();\n\n const baseStoragePath = \"storage\";\n const baseMarkdownPath = \"markdown\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n // Markdown config paths\n const htmlPath = `${baseMarkdownPath}.html`;\n const transformPastedTextPath = `${baseMarkdownPath}.transformPastedText`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n // Markdown config values - check if markdown is an object or boolean\n const markdownValue = getIn(values, \"markdown\");\n const isMarkdownObject = typeof markdownValue === \"object\" && markdownValue !== null;\n const htmlValue = isMarkdownObject ? (markdownValue.html ?? true) : true;\n const transformPastedTextValue = isMarkdownObject ? (markdownValue.transformPastedText ?? false) : false;\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n // Handler to update markdown config - converts from boolean to object if needed\n const updateMarkdownConfig = useCallback((key: \"html\" | \"transformPastedText\", value: boolean) => {\n const currentMarkdown = getIn(values, \"markdown\");\n if (typeof currentMarkdown === \"object\" && currentMarkdown !== null) {\n // Already an object, update the key\n setFieldValue(`markdown.${key}`, value);\n } else {\n // Convert from boolean to object\n const defaultConfig = {\n html: true,\n transformPastedText: false\n };\n setFieldValue(\"markdown\", {\n ...defaultConfig,\n [key]: value\n });\n }\n }, [values, setFieldValue]);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors} />\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n {t(\"paste_behavior\")}\n </Typography>\n </div>\n }>\n\n <div className={\"flex flex-col gap-2 p-4\"}>\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={!htmlValue}\n onValueChange={(value) => updateMarkdownConfig(\"html\", !value)}\n label={t(\"strip_html_on_paste\")}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"strip_html_description\")}\n </Typography>\n\n <BooleanSwitchWithLabel\n size={\"small\"}\n disabled={disabled}\n value={transformPastedTextValue}\n onValueChange={(value) => updateMarkdownConfig(\"transformPastedText\", value)}\n label={t(\"convert_pasted_to_markdown\")}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"convert_pasted_description\")}\n </Typography>\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon />\n <Typography variant={\"subtitle2\"}\n className=\"ml-4\">\n {t(\"file_upload_config\")}\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={t(\"file_name_label\")}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={t(\"storage_path_label\")}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>{t(\"storage_placeholders_description\")}</p>\n <ul>\n <li>{t(\"storage_placeholder_file\")}</li>\n <li>{t(\"storage_placeholder_file_name\")}</li>\n <li>{t(\"storage_placeholder_file_ext\")}</li>\n <li>{t(\"storage_placeholder_entity_id\")}</li>\n <li>{t(\"storage_placeholder_property_key\")}</li>\n <li>{t(\"storage_placeholder_path\")}</li>\n <li>{t(\"storage_placeholder_rand\")}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n {t(\"markdown_url_note\")}\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={t(\"max_size_bytes\")}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={t(\"default_value\")}\n value={getIn(values, \"defaultValue\") ?? \"\"} />\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Properties,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n useTranslation,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { ConditionsPanel, ConditionsEditor, EnumConditionsEditor } from \"./properties/conditions\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n /**\n * Collection properties for populating the conditions field selector.\n * Includes nested map properties.\n */\n collectionProperties?: Properties;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getData,\n getController,\n propertyConfigs,\n collectionEditable,\n collectionProperties\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const { t } = useTranslation();\n\n const disabled = (Boolean(property && !editableProperty(property)) || !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = t(\"required\");\n } else {\n const nameError = validateName(values.name, t);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = t(\"required\");\n } else {\n // Exclude the current property key when editing to avoid false duplicate error\n const keysToCheck = existingPropertyKeys?.filter(key => key !== propertyKey);\n const idError = validateId(values.id, keysToCheck, t);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: t(\"invalid_regular_expression\")\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = t(\"must_specify_target_collection\");\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = t(\"need_specify_repeat_field\");\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = t(\"need_specify_block_properties\");\n }\n }\n\n // Validate conditions - check for incomplete condition rules\n const conditions = (values as any).conditions;\n if (conditions) {\n const conditionErrors: Record<string, string> = {};\n const conditionTypes = [\"disabled\", \"hidden\", \"required\", \"readOnly\"];\n\n // Helper to check if a JSON Logic rule is incomplete (placeholder or empty keys)\n const isIncompleteRule = (rule: any): boolean => {\n if (!rule || typeof rule !== \"object\") return false;\n const ruleStr = JSON.stringify(rule);\n // Check for placeholder pattern used when field is not selected\n if (ruleStr.includes(\"values._placeholder\")) return true;\n // Check for empty string keys (invalid operators)\n if (Object.keys(rule).some(k => k === \"\")) return true;\n // Recursively check nested objects\n for (const key of Object.keys(rule)) {\n if (typeof rule[key] === \"object\" && isIncompleteRule(rule[key])) return true;\n }\n return false;\n };\n\n for (const type of conditionTypes) {\n const rule = conditions[type];\n if (rule && isIncompleteRule(rule)) {\n conditionErrors[type] = t(\"incomplete_condition\");\n }\n }\n\n // Validate enum conditions (allowedEnumValues, excludedEnumValues)\n for (const enumType of [\"allowedEnumValues\", \"excludedEnumValues\"]) {\n const rule = conditions[enumType];\n if (rule && typeof rule === \"object\" && rule.if) {\n if (isIncompleteRule(rule)) {\n conditionErrors[enumType] = t(\"incomplete_condition\");\n }\n }\n }\n\n if (Object.keys(conditionErrors).length > 0) {\n errors.conditions = conditionErrors;\n }\n }\n\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={collectionProperties}\n {...formexController} />\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty &&\n equal(a.property, b.property)\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n}: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const { t } = useTranslation();\n\n const formexRef = useRef<FormexController<PropertyWithId>>(undefined);\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>{t(\"property_edit_view\")}</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button type={\"submit\"}>\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable,\n collectionProperties\n}: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n collectionProperties?: Properties;\n} & FormexController<PropertyWithId>) {\n\n const { t } = useTranslation();\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"user_select\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n propertyNamespace={propertyNamespace}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n propertyNamespace={propertyNamespace}\n showErrors={showErrors} />;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"reference_as_string\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n asString={true}\n multiple={false}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled} />;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled} />;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled} />;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can't be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with the <code>editable</code> flag set to <code>false</code>.\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray} />\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>{t(\"required\")}</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && existing && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon />\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef} />}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled} />\n </div>\n\n <div className={\"col-span-12\"}>\n <ConditionsPanel>\n <ConditionsEditor disabled={disabled} collectionProperties={collectionProperties} />\n <EnumConditionsEditor disabled={disabled} collectionProperties={collectionProperties} />\n </ConditionsPanel>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>{t(\"delete_this_property\")}</div>}\n body={\n <div>{t(\"delete_property_warning\")}</div>\n } />}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value: string | undefined, existingPropertyKeys: string[] | undefined, t: any) {\n\n let error;\n if (!value) {\n error = t(\"error_must_specify_id\");\n }\n if (value && !value.match(idRegEx)) {\n error = t(\"error_id_format\");\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = t(\"error_id_already_exists\");\n }\n return error;\n}\n\nfunction validateName(value: string, t: any) {\n let error;\n if (!value) {\n error = t(\"error_must_specify_title\");\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"widget_group_text\",\n multiline: \"widget_group_text\",\n markdown: \"widget_group_text\",\n url: \"widget_group_text\",\n email: \"widget_group_text\",\n switch: \"widget_group_boolean\",\n user_select: \"widget_group_users\",\n select: \"widget_group_select\",\n multi_select: \"widget_group_select\",\n number_input: \"widget_group_number\",\n number_select: \"widget_group_select\",\n multi_number_select: \"widget_group_select\",\n file_upload: \"widget_group_file\",\n multi_file_upload: \"widget_group_file\",\n reference: \"widget_group_reference\",\n reference_as_string: \"widget_group_text\",\n multi_references: \"widget_group_reference\",\n date_time: \"widget_group_date\",\n group: \"widget_group_group\",\n key_value: \"widget_group_group\",\n repeat: \"widget_group_array\",\n custom_array: \"widget_group_array\",\n block: \"widget_group_group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n}: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const { t } = useTranslation();\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey) {\n return t(groupKey as any);\n }\n return t(\"custom_or_other\")\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>{t(\"select_property_widget\")}</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig} />\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n {t(\"select_property_widget\")}\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n const translatedGroup = groupKey ? t(groupKey as any) : t(\"custom_or_other\");\n if (translatedGroup === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing} />;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n}: PropertySelectItemProps) {\n const { t } = useTranslation();\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2 m-1\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType} />\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={t(\"error_changing_data_type\")}>\n <WarningIcon size=\"smallest\" className={\"w-4\"} />\n </Tooltip>}\n <Typography\n variant={\"label\"}\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","import React, { useMemo, useRef, useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n getFieldConfig,\n Property,\n PropertyConfigBadge,\n resolveCollection,\n unslugify,\n useAuthController,\n useCustomizationController,\n useTranslation\n} from \"@firecms/core\";\nimport {\n CloseIcon,\n IconButton,\n Select,\n SelectItem,\n Typography\n} from \"@firecms/ui\";\nimport { useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"./PropertyEditView\";\n\nexport function KanbanConfigSection({\n className,\n forceExpanded\n}: {\n className?: string;\n forceExpanded?: boolean;\n}) {\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n const { values, setFieldValue } = useFormex<EntityCollection>();\n const { t } = useTranslation();\n const panelRef = useRef<HTMLDivElement>(null);\n const [columnPropertyDialogOpen, setColumnPropertyDialogOpen] = useState(false);\n\n // Resolve collection to get properties\n const resolvedCollection = useMemo(() => resolveCollection({\n collection: values,\n path: values.path,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [values, customizationController.propertyConfigs, authController]);\n\n // Get enum string properties (for columnProperty)\n const enumStringProperties = useMemo(() => {\n const result: { key: string; label: string; property: Property }[] = [];\n if (!resolvedCollection.properties) return result;\n\n Object.entries(resolvedCollection.properties).forEach(([key, prop]) => {\n if (prop && 'dataType' in prop && prop.dataType === 'string' && prop.enumValues) {\n result.push({\n key,\n label: (prop as Property).name || key,\n property: prop as Property\n });\n }\n });\n return result;\n }, [resolvedCollection.properties]);\n\n const kanbanConfig = values.kanban;\n\n // Check if columnProperty references a non-existent property\n const columnPropertyMissing = Boolean(kanbanConfig?.columnProperty) &&\n !enumStringProperties.some(p => p.key === kanbanConfig?.columnProperty);\n\n // Scroll to section when forceExpanded\n React.useEffect(() => {\n if (forceExpanded && panelRef.current) {\n setTimeout(() => {\n panelRef.current?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }, 100);\n }\n }, [forceExpanded]);\n\n const showCreateButton = !kanbanConfig?.columnProperty || columnPropertyMissing;\n const dialogPropertyKey = columnPropertyMissing && kanbanConfig?.columnProperty\n ? kanbanConfig.columnProperty\n : \"status\";\n const dialogPropertyName = columnPropertyMissing && kanbanConfig?.columnProperty\n ? unslugify(kanbanConfig.columnProperty)\n : \"Status\";\n\n return (\n <div className={className} ref={panelRef}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"kanban_column_property\")}</Typography>\n <Select\n key={`column-select-${enumStringProperties.length}`}\n name=\"kanban.columnProperty\"\n size={\"large\"}\n fullWidth={true}\n position={\"item-aligned\"}\n disabled={enumStringProperties.length === 0}\n error={columnPropertyMissing}\n value={kanbanConfig?.columnProperty ?? \"\"}\n onValueChange={(v) => {\n if (v) {\n setFieldValue(\"kanban\", {\n ...kanbanConfig,\n columnProperty: v\n });\n } else {\n setFieldValue(\"kanban\", undefined);\n }\n }}\n renderValue={(value) => {\n if (columnPropertyMissing) {\n return <span className=\"text-red-500\">{value} ({t(\"not_found_suffix\")})</span>;\n }\n const prop = enumStringProperties.find(p => p.key === value);\n if (!prop) return t(\"select_a_property\");\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <div className=\"flex items-center gap-2\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <span>{prop.label}</span>\n </div>\n );\n }}\n endAdornment={kanbanConfig?.columnProperty ? (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setFieldValue(\"kanban\", undefined);\n }}\n >\n <CloseIcon size=\"small\" />\n </IconButton>\n ) : undefined}\n >\n {enumStringProperties.map((prop) => {\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <SelectItem key={prop.key} value={prop.key}>\n <div className=\"flex items-center gap-3\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <div>\n <div>{prop.label}</div>\n <Typography variant=\"caption\" color=\"secondary\">\n {fieldConfig?.name || \"enum\"}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={columnPropertyMissing}>\n {columnPropertyMissing\n ? t(\"kanban_property_not_found\", { property: kanbanConfig?.columnProperty ?? \"\" })\n : enumStringProperties.length === 0\n ? t(\"no_enum_string_properties\")\n : t(\"kanban_column_description\")\n }\n </FieldCaption>\n\n {showCreateButton && (\n <>\n <button\n type=\"button\"\n className=\"ml-3.5 text-sm text-primary hover:text-primary-dark mt-2\"\n onClick={() => setColumnPropertyDialogOpen(true)}\n >\n {t(\"create_property\", { property: dialogPropertyKey })}\n </button>\n <PropertyFormDialog\n open={columnPropertyDialogOpen}\n onCancel={() => setColumnPropertyDialogOpen(false)}\n property={{\n dataType: \"string\",\n name: dialogPropertyName,\n enumValues: [\n { id: \"todo\", label: \"To Do\" },\n { id: \"in_progress\", label: \"In Progress\" },\n { id: \"done\", label: \"Done\" }\n ]\n }}\n propertyKey={dialogPropertyKey}\n existingProperty={false}\n autoOpenTypeSelect={false}\n autoUpdateId={false}\n inArray={false}\n allowDataInference={false}\n propertyConfigs={customizationController.propertyConfigs}\n collectionEditable={true}\n existingPropertyKeys={Object.keys(values.properties ?? {})}\n onPropertyChanged={({ id, property }) => {\n const newProperties = {\n ...values.properties,\n [id!]: property\n };\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties ?? {})), id];\n setFieldValue(\"properties\", newProperties);\n setFieldValue(\"propertiesOrder\", newPropertiesOrder);\n setFieldValue(\"kanban\", {\n ...kanbanConfig,\n columnProperty: id\n });\n setColumnPropertyDialogOpen(false);\n }}\n />\n </>\n )}\n </div>\n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport {\n EntityCollection,\n FieldCaption,\n getFieldConfig,\n Property,\n PropertyConfigBadge,\n resolveCollection,\n unslugify,\n useAuthController,\n useCustomizationController,\n useTranslation\n} from \"@firecms/core\";\nimport {\n BooleanSwitchWithLabel,\n CloseIcon,\n Container,\n IconButton,\n Select,\n SelectItem,\n TextField,\n Typography\n} from \"@firecms/ui\";\n\nimport { useFormex } from \"@firecms/formex\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\nimport { ViewModeSwitch } from \"./ViewModeSwitch\";\nimport { KanbanConfigSection } from \"./KanbanConfigSection\";\nimport { PropertyFormDialog } from \"./PropertyEditView\";\n\nexport function DisplaySettingsForm({\n expandKanban\n}: {\n expandKanban?: boolean;\n}) {\n\n const {\n values,\n setFieldValue,\n handleChange,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [orderPropertyDialogOpen, setOrderPropertyDialogOpen] = useState(false);\n\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n const { t } = useTranslation();\n\n // Resolve collection to get properties for order property select\n const resolvedCollection = useMemo(() => resolveCollection({\n collection: values,\n path: values.path,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [values, customizationController.propertyConfigs, authController]);\n\n // Get number properties (for orderProperty)\n const numberProperties = useMemo(() => {\n const result: { key: string; label: string; property: Property; }[] = [];\n if (!resolvedCollection.properties) return result;\n\n Object.entries(resolvedCollection.properties).forEach(([key, prop]) => {\n if (prop && 'dataType' in prop && prop.dataType === 'number') {\n result.push({\n key,\n label: (prop as Property).name || key,\n property: prop as Property\n });\n }\n });\n return result;\n }, [resolvedCollection.properties]);\n\n const showErrors = submitCount > 0;\n\n // Document ID generation value\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <Typography variant={\"h5\"} className={\"flex-grow\"}>\n {t(\"display_settings\")}\n </Typography>\n </div>\n\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n {/* Layout Mode (Side dialog vs Full screen) */}\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)} />\n\n {/* View Mode (Table/Cards/Kanban) */}\n <ViewModeSwitch\n className={\"col-span-12\"}\n value={values.defaultViewMode ?? \"table\"}\n onChange={(value) => setFieldValue(\"defaultViewMode\", value)} />\n\n {/* Kanban Column Property */}\n <KanbanConfigSection className={\"col-span-12\"} forceExpanded={expandKanban} />\n\n {/* Order Property */}\n <div className={\"col-span-12 mt-4\"}>\n {(() => {\n const orderPropertyMissing = Boolean(values.orderProperty) &&\n !numberProperties.some(p => p.key === values.orderProperty);\n\n return (\n <>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>{t(\"order_property\")}</Typography>\n <Select\n key={`order-select-${numberProperties.length}`}\n name=\"orderProperty\"\n size={\"large\"}\n fullWidth={true}\n position={\"item-aligned\"}\n disabled={numberProperties.length === 0}\n error={orderPropertyMissing}\n value={values.orderProperty ?? \"\"}\n onValueChange={(v) => {\n setFieldValue(\"orderProperty\", v || undefined);\n }}\n renderValue={(value) => {\n if (orderPropertyMissing) {\n return <span className=\"text-red-500\">{value} ({t(\"not_found_suffix\")})</span>;\n }\n const prop = numberProperties.find(p => p.key === value);\n if (!prop) return t(\"select_a_property\");\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <div className=\"flex items-center gap-2\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <span>{prop.label}</span>\n </div>\n );\n }}\n endAdornment={values.orderProperty ? (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setFieldValue(\"orderProperty\", undefined);\n }}\n >\n <CloseIcon size=\"small\" />\n </IconButton>\n ) : undefined}\n >\n {numberProperties.map((prop) => {\n const fieldConfig = getFieldConfig(prop.property, customizationController.propertyConfigs);\n return (\n <SelectItem key={prop.key} value={prop.key}>\n <div className=\"flex items-center gap-3\">\n <PropertyConfigBadge propertyConfig={fieldConfig} />\n <div>\n <div>{prop.label}</div>\n <Typography variant=\"caption\" color=\"secondary\">\n {fieldConfig?.name || t(\"number\")}\n </Typography>\n </div>\n </div>\n </SelectItem>\n );\n })}\n </Select>\n <FieldCaption error={orderPropertyMissing}>\n {orderPropertyMissing\n ? t(\"order_property_not_found\", { property: values.orderProperty ?? \"\" })\n : numberProperties.length === 0\n ? t(\"no_number_properties\")\n : t(\"order_property_description\")\n }\n </FieldCaption>\n </>\n );\n })()}\n {(() => {\n const orderPropertyMissing = Boolean(values.orderProperty) &&\n !numberProperties.some(p => p.key === values.orderProperty);\n const showCreateButton = !values.orderProperty || orderPropertyMissing;\n\n const dialogPropertyKey = orderPropertyMissing && values.orderProperty\n ? values.orderProperty\n : \"__order\";\n const dialogPropertyName = orderPropertyMissing && values.orderProperty\n ? unslugify(values.orderProperty)\n : \"Order\";\n\n if (!showCreateButton) return null;\n\n return (\n <>\n <button\n type=\"button\"\n className=\"ml-3.5 text-sm text-primary hover:text-primary-dark mt-2\"\n onClick={() => setOrderPropertyDialogOpen(true)}\n >\n {t(\"create_property\", { property: dialogPropertyKey })}\n </button>\n <PropertyFormDialog\n open={orderPropertyDialogOpen}\n onCancel={() => setOrderPropertyDialogOpen(false)}\n property={{\n dataType: \"number\",\n name: dialogPropertyName,\n disabled: true,\n hideFromCollection: true\n }}\n propertyKey={dialogPropertyKey}\n existingProperty={false}\n autoOpenTypeSelect={false}\n autoUpdateId={false}\n inArray={false}\n allowDataInference={false}\n propertyConfigs={customizationController.propertyConfigs}\n collectionEditable={true}\n existingPropertyKeys={Object.keys(values.properties ?? {})}\n onPropertyChanged={({ id, property }) => {\n const newProperties = {\n ...values.properties,\n [id!]: property\n };\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties ?? {})), id];\n setFieldValue(\"properties\", newProperties);\n setFieldValue(\"propertiesOrder\", newPropertiesOrder);\n setFieldValue(\"orderProperty\", id);\n setOrderPropertyDialogOpen(false);\n }}\n />\n </>\n );\n })()}\n </div>\n\n {/* Default row size */}\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label={t(\"default_row_size\")}\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n {/* Side dialog width */}\n <div className={\"col-span-12\"}>\n <TextField\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"} />\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={t(\"side_dialog_width\")} />\n <FieldCaption>\n {t(\"side_dialog_width_description\")}\n </FieldCaption>\n </div>\n\n {/* Inline editing */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.inlineEditing === undefined || values.inlineEditing ? t(\"inline_editing_enabled\") : t(\"inline_editing_disabled\")}\n onValueChange={(v) => setFieldValue(\"inlineEditing\", v)}\n value={values.inlineEditing === undefined ? true : values.inlineEditing}\n />\n <FieldCaption>\n {t(\"inline_editing_description\")}\n </FieldCaption>\n </div>\n\n {/* Include JSON view */}\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"large\"}\n label={values.includeJsonView === undefined || values.includeJsonView ? t(\"include_json_view\") : t(\"no_json_view\")}\n onValueChange={(v) => setFieldValue(\"includeJsonView\", v)}\n value={values.includeJsonView === undefined ? true : values.includeJsonView}\n />\n <FieldCaption>\n {t(\"json_view_description\")}\n </FieldCaption>\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }} />\n\n </Container>\n </div>\n );\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n if (str.length === 1) return str.toLowerCase();\n\n // Split by hyphens, underscores, or spaces and filter out empty strings\n const parts = str.split(/[-_ ]+/).filter(Boolean);\n\n if (parts.length === 0) return \"\";\n\n // Start with first part in lowercase\n return parts[0].toLowerCase() +\n // Transform remaining parts to have first letter uppercase\n parts.slice(1)\n .map(part => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())\n .join('');\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController, useTranslation } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Tab, Tabs, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n}: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n const { t } = useTranslation();\n const [format, setFormat] = useState<\"ts\" | \"json\">(\"json\");\n\n const collectionData = collectionToCode({ ...collection });\n\n const tsCode = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionData, null, \"\\t\")\n : t(\"no_collection_selected\");\n\n const jsonCode = collection\n ? JSON.stringify(collectionData, null, 2)\n : t(\"no_collection_selected\");\n\n const code = format === \"ts\" ? tsCode : jsonCode;\n\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <div className=\"flex items-center justify-between pr-6\">\n <DialogTitle variant={\"h6\"}>{t(\"code_for_collection\")} {collection.name}</DialogTitle>\n <Tabs value={format} onValueChange={(v) => setFormat(v as \"ts\" | \"json\")}>\n <Tab value=\"ts\">TypeScript</Tab>\n <Tab value=\"json\">JSON</Tab>\n </Tabs>\n </div>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"mb-4\"}>\n {format === \"json\"\n ? t(\"use_config_define_json\")\n : <>\n {t(\"customise_collection_code\")}\n <br/>\n <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/cloud/quickstart\"}>{t(\"more_info\")}</a>\n </>}\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language={format === \"ts\" ? \"typescript\" : \"json\"}\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: t(\"copied\")\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"} />\n {t(\"copy\")}\n </Button>\n <Button onClick={() => onOpenChange(false)}>{t(\"cancel\")}</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({\n ...a,\n ...b\n }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n MapProperty,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController,\n useTranslation\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n FindInPageIcon,\n IconButton,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\nimport { useAIModifiedPaths } from \"./AIModifiedPathsContext\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference?: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n}: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n const { t } = useTranslation();\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n\n console.debug(\"CollectionEditor: inferring properties from data\", values);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n\n // Helper function to find all new property keys including nested ones\n const findNewPropertyKeys = (\n existingProps: Record<string, PropertyOrBuilder> | undefined,\n newProps: Record<string, PropertyOrBuilder> | undefined,\n namespace?: string\n ): string[] => {\n if (!newProps) return [];\n const keys: string[] = [];\n\n for (const key of Object.keys(newProps)) {\n const fullKey = namespace ? `${namespace}.${key}` : key;\n const existingProp = existingProps?.[key];\n const newProp = newProps[key];\n\n if (!existingProp) {\n // This is a completely new property\n keys.push(fullKey);\n } else if (\n typeof newProp === \"object\" &&\n \"dataType\" in newProp &&\n newProp.dataType === \"map\" &&\n newProp.properties\n ) {\n // This is a map property, check for new nested properties\n const existingMapProps = typeof existingProp === \"object\" &&\n \"dataType\" in existingProp &&\n existingProp.dataType === \"map\"\n ? (existingProp as any).properties\n : undefined;\n keys.push(...findNewPropertyKeys(existingMapProps, newProp.properties as Record<string, PropertyOrBuilder>, fullKey));\n }\n }\n return keys;\n };\n\n // Helper function to add only new properties without overwriting existing ones\n // This preserves existing property configurations while adding missing nested properties\n const addNewPropertiesOnly = (\n existingProps: Record<string, PropertyOrBuilder> | undefined,\n newProps: Record<string, PropertyOrBuilder> | undefined\n ): Record<string, PropertyOrBuilder> => {\n if (!newProps) return existingProps ?? {};\n if (!existingProps) return newProps;\n\n const result = { ...existingProps };\n\n for (const key of Object.keys(newProps)) {\n const existingProp = existingProps[key];\n const newProp = newProps[key];\n\n if (!existingProp) {\n // This property doesn't exist, add it\n result[key] = newProp;\n } else if (\n typeof existingProp === \"object\" &&\n \"dataType\" in existingProp &&\n existingProp.dataType === \"map\" &&\n typeof newProp === \"object\" &&\n \"dataType\" in newProp &&\n newProp.dataType === \"map\" &&\n newProp.properties\n ) {\n // Both are map properties, recursively add new nested properties\n // Only if the existing map has properties, merge them; otherwise keep existing as-is\n const existingMapProps = (existingProp as MapProperty).properties as Record<string, PropertyOrBuilder> | undefined;\n if (existingMapProps) {\n result[key] = {\n ...existingProp,\n properties: addNewPropertiesOnly(\n existingMapProps,\n newProp.properties as Record<string, PropertyOrBuilder>\n )\n };\n }\n // If existingProp doesn't have properties, keep it as-is (don't overwrite with inferred)\n }\n // Otherwise, keep the existing property as-is (don't overwrite)\n }\n\n return result;\n };\n\n // Add only new properties from inferred collection without replacing existing ones\n const updatedProperties = addNewPropertiesOnly(\n values.properties ?? {},\n newCollection.properties as Record<string, PropertyOrBuilder>\n ) as { [key: string]: PropertyOrBuilder };\n\n // Find all new property keys including nested ones\n const allNewPropertyKeys = findNewPropertyKeys(\n values.properties,\n newCollection.properties as Record<string, PropertyOrBuilder>\n );\n\n // Find new top-level property keys for the properties order\n const newTopLevelPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n\n // Check if there are any changes (new properties or modified nested properties)\n if (allNewPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n\n // Update properties order: keep existing order and append new keys at the beginning\n // Use Object.keys from updatedProperties to ensure all properties are included\n const allExistingKeys = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const updatedPropertiesOrder = [\n ...newTopLevelPropertyKeys,\n ...allExistingKeys.filter(key => !newTopLevelPropertyKeys.includes(key))\n ];\n\n setFieldValue(\"properties\", updatedProperties, false);\n updatePropertiesOrder(updatedPropertiesOrder);\n setInferredPropertyKeys(allNewPropertyKeys);\n\n snackbarController.open({\n type: \"success\",\n message: `Added ${allNewPropertyKeys.length} new ${allNewPropertyKeys.length === 1 ? \"property\" : \"properties\"}`\n });\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n // Get AI generation counter for key to force remount on AI changes\n const aiModifiedPaths = useAIModifiedPaths();\n const generationCounter = aiModifiedPaths?.generationCounter ?? 0;\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface dark:bg-surface-dark\"}>\n <div className={cls(\n \"bg-surface-50 dark:bg-surface-900\",\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)} />\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n {t(\"created_by\", { name: owner.displayName ?? \"\" })}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={t(\"get_code_for_collection\")}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon />\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={t(\"add_properties_from_data\")}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"} /> : <FindInPageIcon />}\n </IconButton>\n </Tooltip>}\n <Tooltip title={t(\"add_new_property\")}\n asChild={true}>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon />\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={(isNewCollection || (inferredPropertyKeys && inferredPropertyKeys.length > 0)) ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors} />\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon />}>\n {t(\"add_new_property\")}\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <div\n className=\"sticky top-8 min-h-full w-full flex flex-col justify-center\">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}_${generationCounter}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? t(\"add_first_property\")\n : t(\"select_property_to_edit\")}\n </Typography>\n <Button\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon />\n {t(\"add_new_property\")}\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {t(\"property_defined_as_builder\")}\n </Typography>}\n </div>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}_${generationCounter}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n } />}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n collectionProperties={values.properties as Properties}\n existingPropertyKeys={values.propertiesOrder as string[]} />\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen} />\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent className={\"mt-4\"}>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\"\n onClick={handleCancel} autoFocus> Cancel </Button>\n <Button\n onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController, useTranslation } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n const { t } = useTranslation();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>{t(\"select_custom_view\")}</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n {t(\"no_custom_views_defined\")}\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>{t(\"cancel\")}</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User,\n useTranslation\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds,\n embedded = false\n}: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n embedded?: boolean;\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n const { t } = useTranslation();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n const content = (\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n {t(\"subcollections_of\")} {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={t(\"remove\")}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n startIcon={<AddIcon />}>\n {t(\"add_subcollection\")}\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n {t(\"custom_views\")}\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">{t(\"more_info\")}</Button>}>\n {t(\"define_custom_views_cli\")}\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={t(\"remove\")}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n {t(\"view_defined_in_code\")} <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n startIcon={<AddIcon />}>\n {t(\"add_custom_entity_view\")}\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n );\n\n return (\n <>\n {embedded ? (\n content\n ) : (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n {content}\n </Container>\n <div style={{ height: \"52px\" }} />\n </div>\n )}\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>{t(\"delete_this_subcollection\")}</>}\n body={<>{t(\"remove_collection_warning\")}</>} />}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>{t(\"remove_this_view\")}</>}\n body={<>{t(\"remove_view_warning\")}</>} />}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }} />\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }} />\n </>\n );\n}\n","import { useCustomizationController, useTranslation } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityActionsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedActionKey?: string) => void }) {\n const {\n entityActions\n } = useCustomizationController();\n const { t } = useTranslation();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>{t(\"select_custom_action\")}</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityActions?.map((action) => {\n return <Button\n key={action.key}\n onClick={() => onClose(action.key)}\n fullWidth\n variant={\"text\"}\n >\n {action.name} ({action.key})\n </Button>;\n })}\n {(entityActions ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n {t(\"no_custom_actions_defined\")}\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onClose()}>{t(\"cancel\")}</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityAction,\n EntityCollection,\n resolveEntityAction,\n useCustomizationController,\n useTranslation\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { useFormex } from \"@firecms/formex\";\nimport { EntityActionsSelectDialog } from \"./EntityActionsSelectDialog\";\n\nexport function EntityActionsEditTab({\n collection,\n embedded = false\n}: {\n collection: PersistedCollection,\n embedded?: boolean;\n}) {\n\n const { entityActions: contextEntityActions } = useCustomizationController();\n const { t } = useTranslation();\n\n const [addEntityActionDialogOpen, setAddEntityActionDialogOpen] = React.useState<boolean>(false);\n const [actionToDelete, setActionToDelete] = React.useState<string | undefined>();\n\n const {\n values,\n setFieldValue\n } = useFormex<EntityCollection>();\n\n const resolvedEntityActions = values.entityActions?.filter((e): e is string => typeof e === \"string\")\n .map(e => resolveEntityAction(e, contextEntityActions))\n .filter(Boolean) as EntityAction<any>[] ?? [];\n const hardCodedEntityActions = collection.entityActions?.filter((e): e is EntityAction<any> => typeof e !== \"string\") ?? [];\n const totalEntityActions = resolvedEntityActions.length + hardCodedEntityActions.length;\n\n const content = (\n <div className={\"flex flex-col gap-16\"}>\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h6\"}>\n {t(\"custom_actions\")}\n </Typography>\n\n {totalEntityActions === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/custom_actions\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">{t(\"more_info\")}</Button>}>\n {t(\"define_custom_actions_cli\")}\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={t(\"remove\")}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setActionToDelete(action.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityActions.map((action) => (\n <TableRow key={action.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {action.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n {t(\"action_defined_in_code\")} <code>{action.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityActionDialogOpen(true);\n }}\n startIcon={<AddIcon />}>\n {t(\"add_custom_entity_action\")}\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n );\n\n return (\n <>\n {embedded ? (\n content\n ) : (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n {content}\n </Container>\n <div style={{ height: \"52px\" }} />\n </div>\n )}\n\n {actionToDelete &&\n <ConfirmationDialog open={Boolean(actionToDelete)}\n onAccept={() => {\n setFieldValue(\"entityActions\", values.entityActions?.filter(e => e !== actionToDelete));\n setActionToDelete(undefined);\n }}\n onCancel={() => setActionToDelete(undefined)}\n title={<>{t(\"remove_this_action\")}</>}\n body={<>{t(\"remove_action_warning\")}</>} />}\n\n <EntityActionsSelectDialog\n open={addEntityActionDialogOpen}\n onClose={(selectedActionKey) => {\n if (selectedActionKey) {\n console.log(\"Selected action key:\", selectedActionKey);\n const value = [...(values.entityActions ?? []), selectedActionKey]\n // only actions that are defined in the registry\n .filter((e): e is string => typeof e === \"string\" && (contextEntityActions ?? []).some(action => action.key === e));\n ;\n setFieldValue(\"entityActions\", value);\n }\n setAddEntityActionDialogOpen(false);\n }} />\n </>\n );\n}\n","import React from \"react\";\nimport {\n EntityCollection,\n User,\n useTranslation\n} from \"@firecms/core\";\nimport {\n Button,\n cls,\n Container,\n defaultBorderMixin,\n Typography\n} from \"@firecms/ui\";\n\nimport { useFormex } from \"@firecms/formex\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { EntityActionsEditTab } from \"./EntityActionsEditTab\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\n\nexport function ExtendSettingsForm({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds,\n isMergedCollection,\n onResetToCode\n}: {\n collection: PersistedCollection;\n parentCollection?: EntityCollection;\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n isMergedCollection?: boolean;\n onResetToCode?: () => void;\n}) {\n\n const {\n values,\n setFieldValue,\n submitCount\n } = useFormex<EntityCollection>();\n\n const { t } = useTranslation();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-8 p-8 m-auto\"}>\n\n <div>\n <Typography variant={\"h5\"} className={\"flex-grow\"}>\n {t(\"extend_title\")}\n </Typography>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n {t(\"extend_description\")}\n </Typography>\n </div>\n\n {/* Subcollections Section */}\n <SubcollectionsEditTab\n collection={collection}\n parentCollection={parentCollection}\n configController={configController}\n collectionInference={collectionInference}\n getUser={getUser}\n parentCollectionIds={parentCollectionIds}\n embedded={true}\n />\n\n {/* Entity Actions Section */}\n <EntityActionsEditTab collection={collection} embedded={true} />\n\n {/* Reset to code (for merged collections) */}\n {isMergedCollection && onResetToCode && (\n <div className={cls(\"flex flex-col gap-4 mt-8 border-t pt-8\", defaultBorderMixin)}>\n <Typography variant={\"body2\"} color={\"secondary\"}>\n {t(\"collection_defined_in_code\")}\n </Typography>\n <Button color={\"neutral\"} onClick={onResetToCode}>\n {t(\"reset_to_code\")}\n </Button>\n </div>\n )}\n\n <div style={{ height: \"52px\" }} />\n\n </Container>\n </div>\n );\n}\n","import { EntityCollection } from \"@firecms/core\";\n\n/**\n * Valid dataType values for properties\n */\nconst VALID_DATA_TYPES = [\n \"string\",\n \"number\",\n \"boolean\",\n \"date\",\n \"geopoint\",\n \"reference\",\n \"array\",\n \"map\"\n] as const;\n\ntype DataType = typeof VALID_DATA_TYPES[number];\n\n/**\n * Validation error with path and message\n */\nexport interface CollectionValidationError {\n path: string;\n message: string;\n}\n\n/**\n * Result of collection JSON validation\n */\nexport interface CollectionValidationResult {\n valid: boolean;\n errors: CollectionValidationError[];\n collection?: EntityCollection;\n}\n\n/**\n * Validates a property object recursively\n */\nfunction validateProperty(\n property: any,\n path: string,\n errors: CollectionValidationError[]\n): void {\n if (typeof property !== \"object\" || property === null) {\n errors.push({\n path,\n message: \"Property must be an object\"\n });\n return;\n }\n\n // Check dataType\n if (!property.dataType) {\n errors.push({\n path: `${path}.dataType`,\n message: \"Required field is missing\"\n });\n } else if (!VALID_DATA_TYPES.includes(property.dataType)) {\n errors.push({\n path: `${path}.dataType`,\n message: `Invalid value \"${property.dataType}\", expected one of: ${VALID_DATA_TYPES.join(\", \")}`\n });\n }\n\n // Validate name if present\n if (property.name !== undefined && typeof property.name !== \"string\") {\n errors.push({\n path: `${path}.name`,\n message: \"Must be a string\"\n });\n }\n\n // Validate array \"of\" property\n if (property.dataType === \"array\") {\n if (property.of) {\n if (Array.isArray(property.of)) {\n property.of.forEach((ofProp: any, index: number) => {\n validateProperty(ofProp, `${path}.of[${index}]`, errors);\n });\n } else {\n validateProperty(property.of, `${path}.of`, errors);\n }\n }\n // oneOf validation\n if (property.oneOf) {\n if (typeof property.oneOf !== \"object\") {\n errors.push({\n path: `${path}.oneOf`,\n message: \"Must be an object\"\n });\n } else if (property.oneOf.properties) {\n validateProperties(property.oneOf.properties, `${path}.oneOf.properties`, errors);\n }\n }\n }\n\n // Validate map properties\n if (property.dataType === \"map\" && property.properties) {\n validateProperties(property.properties, `${path}.properties`, errors);\n }\n\n // Validate reference path\n if (property.dataType === \"reference\") {\n if (property.path !== undefined && typeof property.path !== \"string\") {\n errors.push({\n path: `${path}.path`,\n message: \"Must be a string\"\n });\n }\n }\n\n // Validate storage config for string\n if (property.dataType === \"string\" && property.storage) {\n if (typeof property.storage !== \"object\") {\n errors.push({\n path: `${path}.storage`,\n message: \"Must be an object\"\n });\n }\n }\n\n // Validate enumValues if present\n if (property.enumValues !== undefined) {\n if (!Array.isArray(property.enumValues) && typeof property.enumValues !== \"object\") {\n errors.push({\n path: `${path}.enumValues`,\n message: \"Must be an array or object\"\n });\n }\n }\n}\n\n/**\n * Validates a properties object (collection of property definitions)\n */\nfunction validateProperties(\n properties: any,\n path: string,\n errors: CollectionValidationError[]\n): void {\n if (typeof properties !== \"object\" || properties === null) {\n errors.push({\n path,\n message: \"Must be an object\"\n });\n return;\n }\n\n for (const [key, property] of Object.entries(properties)) {\n validateProperty(property, `${path}.${key}`, errors);\n }\n}\n\n/**\n * Validates optional collection fields\n */\nfunction validateOptionalFields(\n collection: any,\n errors: CollectionValidationError[]\n): void {\n // String fields\n const stringFields = [\n \"singularName\",\n \"description\",\n \"group\",\n \"databaseId\"\n ];\n for (const field of stringFields) {\n if (collection[field] !== undefined && typeof collection[field] !== \"string\") {\n errors.push({\n path: field,\n message: \"Must be a string\"\n });\n }\n }\n\n // Boolean fields\n const booleanFields = [\n \"collectionGroup\",\n \"textSearchEnabled\",\n \"selectionEnabled\",\n \"inlineEditing\",\n \"hideFromNavigation\",\n \"hideIdFromForm\",\n \"hideIdFromCollection\",\n \"formAutoSave\",\n \"editable\",\n \"alwaysApplyDefaultValues\",\n \"includeJsonView\",\n \"history\"\n ];\n for (const field of booleanFields) {\n if (collection[field] !== undefined && typeof collection[field] !== \"boolean\") {\n errors.push({\n path: field,\n message: \"Must be a boolean\"\n });\n }\n }\n\n // Icon can be string or object (React node)\n if (collection.icon !== undefined &&\n typeof collection.icon !== \"string\" &&\n typeof collection.icon !== \"object\") {\n errors.push({\n path: \"icon\",\n message: \"Must be a string (icon key) or object\"\n });\n }\n\n // propertiesOrder must be array of strings\n if (collection.propertiesOrder !== undefined) {\n if (!Array.isArray(collection.propertiesOrder)) {\n errors.push({\n path: \"propertiesOrder\",\n message: \"Must be an array of strings\"\n });\n } else if (!collection.propertiesOrder.every((item: any) => typeof item === \"string\")) {\n errors.push({\n path: \"propertiesOrder\",\n message: \"All items must be strings\"\n });\n }\n }\n\n // subcollections must be array\n if (collection.subcollections !== undefined) {\n if (!Array.isArray(collection.subcollections)) {\n errors.push({\n path: \"subcollections\",\n message: \"Must be an array\"\n });\n } else {\n collection.subcollections.forEach((sub: any, index: number) => {\n const subErrors: CollectionValidationError[] = [];\n validateCollectionObject(sub, subErrors);\n subErrors.forEach(err => {\n errors.push({\n path: `subcollections[${index}].${err.path}`,\n message: err.message\n });\n });\n });\n }\n }\n\n // defaultViewMode validation\n const validViewModes = [\"table\", \"cards\", \"kanban\"];\n if (collection.defaultViewMode !== undefined) {\n if (!validViewModes.includes(collection.defaultViewMode)) {\n errors.push({\n path: \"defaultViewMode\",\n message: `Invalid value, expected one of: ${validViewModes.join(\", \")}`\n });\n }\n }\n\n // kanban config validation\n if (collection.kanban !== undefined) {\n if (typeof collection.kanban !== \"object\" || collection.kanban === null) {\n errors.push({\n path: \"kanban\",\n message: \"Must be an object\"\n });\n } else if (collection.kanban.columnProperty !== undefined &&\n typeof collection.kanban.columnProperty !== \"string\") {\n errors.push({\n path: \"kanban.columnProperty\",\n message: \"Must be a string\"\n });\n }\n }\n}\n\n/**\n * Validates a collection object\n */\nfunction validateCollectionObject(\n collection: any,\n errors: CollectionValidationError[]\n): void {\n // Required fields\n if (!collection.id) {\n errors.push({\n path: \"id\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.id !== \"string\") {\n errors.push({\n path: \"id\",\n message: \"Must be a string\"\n });\n }\n\n if (!collection.name) {\n errors.push({\n path: \"name\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.name !== \"string\") {\n errors.push({\n path: \"name\",\n message: \"Must be a string\"\n });\n }\n\n if (!collection.path) {\n errors.push({\n path: \"path\",\n message: \"Required field is missing\"\n });\n } else if (typeof collection.path !== \"string\") {\n errors.push({\n path: \"path\",\n message: \"Must be a string\"\n });\n }\n\n // Properties validation\n if (collection.properties !== undefined) {\n validateProperties(collection.properties, \"properties\", errors);\n }\n\n // Optional fields\n validateOptionalFields(collection, errors);\n}\n\n/**\n * Validates a JSON string representing a collection configuration.\n * Returns detailed validation errors if the JSON is invalid or doesn't match\n * the expected collection schema.\n */\nexport function validateCollectionJson(jsonString: string): CollectionValidationResult {\n const errors: CollectionValidationError[] = [];\n\n // Try to parse JSON\n let parsed: any;\n try {\n parsed = JSON.parse(jsonString);\n } catch (e: any) {\n // Try to extract line/column info from the error\n const match = e.message.match(/position (\\d+)/);\n let message = \"Invalid JSON syntax\";\n if (match) {\n const position = parseInt(match[1], 10);\n const lines = jsonString.substring(0, position).split(\"\\n\");\n const line = lines.length;\n const column = lines[lines.length - 1].length + 1;\n message = `Invalid JSON syntax at line ${line}, column ${column}: ${e.message}`;\n } else {\n message = `Invalid JSON syntax: ${e.message}`;\n }\n return {\n valid: false,\n errors: [{\n path: \"\",\n message\n }]\n };\n }\n\n // Validate collection structure\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return {\n valid: false,\n errors: [{\n path: \"\",\n message: \"Collection must be an object\"\n }]\n };\n }\n\n validateCollectionObject(parsed, errors);\n\n return {\n valid: errors.length === 0,\n errors,\n collection: errors.length === 0 ? parsed as EntityCollection : undefined\n };\n}\n","import React, { useCallback, useState } from \"react\";\nimport {\n Button,\n cls,\n CodeIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Typography\n} from \"@firecms/ui\";\nimport { EntityCollection } from \"@firecms/core\";\nimport { validateCollectionJson, CollectionValidationError } from \"../../utils/validateCollectionJson\";\n\nconst EXAMPLE_JSON = `{\n \"id\": \"products\",\n \"name\": \"Products\",\n \"path\": \"products\",\n \"icon\": \"shopping_cart\",\n \"properties\": {\n \"name\": {\n \"dataType\": \"string\",\n \"name\": \"Name\",\n \"validation\": { \"required\": true }\n },\n \"price\": {\n \"dataType\": \"number\",\n \"name\": \"Price\"\n },\n \"available\": {\n \"dataType\": \"boolean\",\n \"name\": \"Available\"\n }\n }\n}`;\n\nexport interface CollectionJsonImportDialogProps {\n open: boolean;\n onClose: () => void;\n onImport: (collection: EntityCollection) => void;\n}\n\nexport function CollectionJsonImportDialog({\n open,\n onClose,\n onImport\n}: CollectionJsonImportDialogProps) {\n const [jsonValue, setJsonValue] = useState<string>(\"\");\n const [errors, setErrors] = useState<CollectionValidationError[]>([]);\n const [touched, setTouched] = useState(false);\n\n const handleJsonChange = useCallback((e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n setJsonValue(value);\n setTouched(true);\n\n if (!value.trim()) {\n setErrors([]);\n return;\n }\n\n const result = validateCollectionJson(value);\n setErrors(result.errors);\n }, []);\n\n const handleImport = useCallback(() => {\n const result = validateCollectionJson(jsonValue);\n if (result.valid && result.collection) {\n onImport(result.collection);\n setJsonValue(\"\");\n setErrors([]);\n setTouched(false);\n onClose();\n }\n }, [jsonValue, onImport, onClose]);\n\n const handleClose = useCallback(() => {\n setJsonValue(\"\");\n setErrors([]);\n setTouched(false);\n onClose();\n }, [onClose]);\n\n const isValid = touched && jsonValue.trim() && errors.length === 0;\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => !open && handleClose()}\n maxWidth=\"2xl\"\n >\n <DialogTitle className=\"flex items-center gap-2\">\n <CodeIcon size=\"small\" />\n Import Collection from JSON\n </DialogTitle>\n <DialogContent className=\"flex flex-col gap-4\">\n <Typography variant=\"body2\" color=\"secondary\">\n Paste a JSON object representing your collection configuration.\n The JSON must include <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">id</code>,\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">name</code>,\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">path</code>, and\n <code className=\"bg-surface-200 dark:bg-surface-700 px-1 rounded\">properties</code>.\n </Typography>\n\n <textarea\n value={jsonValue}\n onChange={handleJsonChange}\n placeholder={EXAMPLE_JSON}\n rows={12}\n className={cls(\n \"w-full p-3 font-mono text-sm rounded-md border resize-none overflow-y-auto\",\n \"bg-surface-50 dark:bg-surface-900\",\n \"focus:outline-none focus:ring-2 focus:ring-primary\",\n \"h-[300px]\",\n errors.length > 0 && touched\n ? \"border-red-500 dark:border-red-400\"\n : \"border-surface-300 dark:border-surface-600\"\n )}\n />\n\n {errors.length > 0 && touched && (\n <div className=\"p-3 bg-red-50 dark:bg-red-900/20 rounded-md border border-red-200 dark:border-red-800\">\n <Typography variant=\"body2\" className=\"font-medium text-red-700 dark:text-red-400 mb-2\">\n Validation errors:\n </Typography>\n <ul className=\"list-disc list-inside space-y-1\">\n {errors.map((error, index) => (\n <li key={index} className=\"text-sm text-red-600 dark:text-red-400\">\n {error.path ? (\n <>\n <code className=\"bg-red-100 dark:bg-red-900/40 px-1 rounded\">\n {error.path}\n </code>\n : {error.message}\n </>\n ) : (\n error.message\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {isValid && (\n <div className=\"p-3 bg-green-50 dark:bg-green-900/20 rounded-md border border-green-200 dark:border-green-800\">\n <Typography variant=\"body2\" className=\"text-green-700 dark:text-green-400\">\n ✓ JSON is valid and ready to import\n </Typography>\n </div>\n )}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"text\"\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n color=\"primary\"\n onClick={handleImport}\n disabled={!isValid}\n >\n Import Collection\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { EntityCollection } from \"@firecms/core\";\n\nexport interface GenerateCollectionRequest {\n /** User's natural language description of what they want */\n prompt: string;\n\n /** Other collections in the project (for context/relationships). Limit to 30. */\n existingCollections: Partial<EntityCollection>[];\n\n /** Optional for generate, required for modifications. If provided, modifies this collection */\n existingCollection?: Partial<EntityCollection>;\n}\n\n/** Operation types for modifying a collection */\nexport type CollectionOperationType = \"add\" | \"modify\" | \"delete\";\n\n/** A single operation describing what changed */\nexport interface CollectionOperation {\n op: CollectionOperationType;\n path: string;\n value?: any;\n}\n\n/** Result from collection generation, including optional delta operations */\nexport interface GenerateCollectionResult {\n collection: EntityCollection;\n operations?: CollectionOperation[];\n}\n\n/**\n * Callback type for generating or modifying a collection.\n * The plugin is API-agnostic - consumers implement the actual API call.\n */\nexport type CollectionGenerationCallback = (\n request: GenerateCollectionRequest\n) => Promise<GenerateCollectionResult>;\n\nexport class CollectionGenerationApiError extends Error {\n public code?: string;\n\n constructor(message: string, code?: string) {\n super(message);\n this.code = code;\n this.name = \"CollectionGenerationApiError\";\n }\n}\n\n/**\n * Default endpoint for AI collection generation\n */\nexport const DEFAULT_COLLECTION_GENERATION_ENDPOINT = \"https://api.firecms.co/collections/generate\";\n\n/**\n * Props for building a collection generation callback\n */\nexport interface BuildCollectionGenerationCallbackProps {\n /**\n * Function to get the auth token (e.g., from Firebase Auth)\n * This is typically `authController.getAuthToken` from `@firecms/firebase`\n */\n getAuthToken: () => Promise<string>;\n\n /**\n * Optional custom API endpoint for collection generation.\n * Defaults to the FireCMS SaaS API endpoint.\n */\n apiEndpoint?: string;\n}\n\n/**\n * Build a callback for AI collection generation.\n * This helper allows self-hosted FireCMS users to enable the AI collection\n * generation feature.\n *\n * @example\n * ```typescript\n * import { useCollectionEditorPlugin, buildCollectionGenerationCallback } from \"@firecms/collection_editor\";\n * import { useFirebaseAuthController } from \"@firecms/firebase\";\n *\n * const authController = useFirebaseAuthController({ firebaseApp });\n *\n * const collectionEditorPlugin = useCollectionEditorPlugin({\n * // ... other props\n * generateCollection: buildCollectionGenerationCallback({\n * getAuthToken: authController.getAuthToken\n * })\n * });\n * ```\n */\nexport function buildCollectionGenerationCallback({\n getAuthToken,\n apiEndpoint = DEFAULT_COLLECTION_GENERATION_ENDPOINT\n}: BuildCollectionGenerationCallbackProps): CollectionGenerationCallback {\n return async (request) => {\n const token = await getAuthToken();\n const response = await fetch(apiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify(request)\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new CollectionGenerationApiError(\n errorData.error || \"Failed to generate collection\",\n errorData.code\n );\n }\n\n const data = await response.json();\n return {\n collection: data.data.collection,\n operations: data.data.operations\n };\n };\n}\n","import React, { useState } from \"react\";\nimport { EntityCollection, useNavigationController, useSnackbarController, AIIcon, useTranslation } from \"@firecms/core\";\nimport {\n Button,\n CircularProgress,\n IconButton,\n Menu,\n SendIcon,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport {\n CollectionGenerationCallback,\n CollectionGenerationApiError,\n CollectionOperation\n} from \"../../api/generateCollectionApi\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\n\nexport interface AICollectionGeneratorPopoverProps {\n /**\n * Current collection being edited (if modifying an existing collection)\n */\n existingCollection?: PersistedCollection;\n\n /**\n * Callback when a collection is generated or modified.\n * Includes the collection and optionally the operations that were applied.\n */\n onGenerated: (collection: EntityCollection, operations?: CollectionOperation[]) => void;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection: CollectionGenerationCallback;\n\n /**\n * Optional custom trigger button. If not provided, a default AI button is used.\n */\n trigger?: React.ReactNode;\n\n /**\n * Size of the button\n */\n size?: \"small\" | \"medium\" | \"large\";\n\n /**\n * Whether to show the label text\n */\n showLabel?: boolean;\n\n /**\n * Optional analytics callback\n */\n onAnalyticsEvent?: (event: string, params?: object) => void;\n}\n\nexport function AICollectionGeneratorPopover({\n existingCollection,\n onGenerated,\n generateCollection,\n trigger,\n size = \"small\",\n showLabel = true,\n onAnalyticsEvent\n}: AICollectionGeneratorPopoverProps) {\n const [menuOpen, setMenuOpen] = useState(false);\n const [prompt, setPrompt] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const { t } = useTranslation();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n const existingCollections = navigation.collections ?? [];\n\n const handleGenerate = async () => {\n if (!prompt.trim()) return;\n\n setLoading(true);\n setError(null);\n\n const mode = existingCollection ? \"modify\" : \"create\";\n onAnalyticsEvent?.(\"ai_collection_generate_start\", { mode });\n\n try {\n const collectionsContext = existingCollections.map(c => ({\n path: c.path,\n id: c.id,\n name: c.name,\n properties: c.properties,\n propertiesOrder: c.propertiesOrder\n }));\n\n const result = await generateCollection({\n prompt: prompt.trim(),\n existingCollections: collectionsContext.slice(0, 30),\n ...(existingCollection && {\n existingCollection: {\n path: existingCollection.path,\n id: existingCollection.id,\n name: existingCollection.name,\n properties: existingCollection.properties,\n propertiesOrder: existingCollection.propertiesOrder\n }\n })\n });\n\n onGenerated(result.collection, result.operations);\n setMenuOpen(false);\n setPrompt(\"\");\n onAnalyticsEvent?.(\"ai_collection_generate_success\", {\n mode,\n operationsCount: result.operations?.length\n });\n snackbarController.open({\n type: \"success\",\n message: existingCollection\n ? \"Collection updated with AI suggestions\"\n : \"Collection generated successfully\"\n });\n } catch (e) {\n console.error(\"Error generating collection:\", e);\n const errorMessage = e instanceof CollectionGenerationApiError\n ? e.message\n : \"Failed to generate collection. Please try again.\";\n setError(errorMessage);\n onAnalyticsEvent?.(\"ai_collection_generate_error\", {\n mode,\n error: errorMessage\n });\n snackbarController.open({\n type: \"error\",\n message: errorMessage\n });\n } finally {\n setLoading(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleGenerate();\n }\n };\n\n const defaultTrigger = showLabel ? (\n <Button\n variant=\"text\"\n size={size}\n disabled={loading}\n startIcon={loading\n ? <CircularProgress size=\"smallest\" />\n : <AIIcon size=\"small\" />\n }\n >\n {t(\"ai_assist\")}\n </Button>\n ) : (\n <IconButton\n size={size}\n disabled={loading}\n aria-label={t(\"ai_assist\")}\n >\n {loading\n ? <CircularProgress size=\"smallest\" />\n : <AIIcon size=\"small\" />\n }\n </IconButton>\n );\n\n return (\n <Menu\n open={menuOpen}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (!open) {\n setError(null);\n }\n }}\n trigger={trigger ?? defaultTrigger}\n >\n <div className=\"p-4 flex flex-col gap-3 min-w-[360px] max-w-[480px]\">\n <div className=\"flex items-center gap-2\">\n <AIIcon size=\"small\" />\n <Typography variant=\"subtitle2\">\n {existingCollection ? t(\"modify_collection_with_ai\") : t(\"generate_collection_with_ai\")}\n </Typography>\n </div>\n\n <Typography variant=\"caption\" color=\"secondary\">\n {existingCollection\n ? t(\"describe_changes_to_make\")\n : t(\"describe_collection_to_create\")\n }\n </Typography>\n\n <TextField\n size=\"small\"\n multiline\n autoFocus\n className=\"w-full text-text-primary dark:text-text-primary-dark\"\n value={prompt}\n onChange={(e) => setPrompt(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={existingCollection\n ? t(\"ai_placeholder_modify\")\n : t(\"ai_placeholder_create\")\n }\n disabled={loading}\n />\n\n {error && (\n <Typography variant=\"caption\" className=\"text-red-500\">\n {error}\n </Typography>\n )}\n\n <div className=\"flex justify-end gap-2\">\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={() => setMenuOpen(false)}\n disabled={loading}\n >\n {t(\"cancel\")}\n </Button>\n <Button\n variant=\"filled\"\n size=\"small\"\n onClick={handleGenerate}\n disabled={!prompt.trim() || loading}\n startIcon={loading ? <CircularProgress size=\"smallest\" /> : undefined}\n >\n {loading ? t(\"generating\") : t(\"generate_with_ai\")}\n </Button>\n </div>\n </div>\n </Menu>\n );\n}\n","import React, { useState } from \"react\";\nimport { AIIcon, EntityCollection, prettifyIdentifier, useTranslation } from \"@firecms/core\";\nimport { Button, Card, Chip, cls, CodeIcon, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\nimport { CollectionJsonImportDialog } from \"./CollectionJsonImportDialog\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { AICollectionGeneratorPopover } from \"./AICollectionGeneratorPopover\";\nimport { CollectionGenerationCallback } from \"../../api/generateCollectionApi\";\n\nexport function CollectionEditorWelcomeView({\n path,\n parentCollection,\n onContinue,\n existingCollectionPaths,\n generateCollection,\n onAnalyticsEvent\n}: {\n path: string;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n generateCollection?: CollectionGenerationCallback;\n onAnalyticsEvent?: (event: string, params?: object) => void;\n}) {\n\n const { pathSuggestions } = useCollectionEditorController();\n const { t } = useTranslation();\n\n const filteredSuggestions = (pathSuggestions ?? []).filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n const [jsonImportOpen, setJsonImportOpen] = useState(false);\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n {t(\"new_collection\")}\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n {t(\"this_is_subcollection_of\")} <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n {(filteredSuggestions ?? []).length > 0 && <div className={\"my-2\"}>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● {t(\"use_existing_paths_database\")}\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {filteredSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", prettifyIdentifier(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n </div>\n\n </div>}\n <div className=\"flex flex-row gap-8\">\n\n {generateCollection && (\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● {t(\"describe_collection_ai\")}\n </Typography>\n\n <AICollectionGeneratorPopover\n onGenerated={(generatedCollection) => {\n setValues(generatedCollection);\n onContinue();\n }}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent}\n trigger={\n <Button\n variant=\"outlined\"\n startIcon={<AIIcon size=\"small\" />}\n >\n {t(\"generate_with_ai\")}\n </Button>\n }\n />\n </div>\n )}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● {t(\"create_from_json_config\")}\n </Typography>\n\n <Button\n variant={\"outlined\"}\n onClick={() => setJsonImportOpen(true)}\n startIcon={<CodeIcon size=\"small\" />}\n >\n {t(\"paste_json_config\")}\n </Button>\n\n <CollectionJsonImportDialog\n open={jsonImportOpen}\n onClose={() => setJsonImportOpen(false)}\n onImport={(collection) => {\n setValues(collection);\n onContinue();\n }}\n />\n </div>\n\n\n\n </div>\n\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● {t(\"create_collection_from_file_formats\")}\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)} />\n\n </div>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● {t(\"select_template\")}\n </Typography>\n\n <div className={\"flex gap-2\"}>\n <TemplateButton title={t(\"products\")}\n subtitle={t(\"collection_products_subtitle\")}\n icon={<Icon size={\"small\"}\n iconKey={productsCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={t(\"users\")}\n subtitle={t(\"collection_users_subtitle\")}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={t(\"blog_posts\")}\n subtitle={t(\"collection_blog_posts_subtitle\")}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }} />\n <TemplateButton title={t(\"pages\")}\n subtitle={t(\"collection_pages_subtitle\")}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon! as string} />}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }} />\n </div>\n\n </div>\n\n\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n}: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border px-4 py-3 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-text-secondary dark:text-text-secondary-dark\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle2\"}>\n {title}\n </Typography>\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, useTranslation\n} from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n const { t } = useTranslation();\n\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>{t(\"data_property_mapping\")}</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import\";\nimport {\n CircularProgressCenter,\n EntityCollectionTable,\n Properties,\n useAuthController,\n useNavigationController,\n useSelectionController,\n useTranslation\n} from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n const { t } = useTranslation();\n\n\n const authController = useAuthController();\n const navigation = useNavigationController();\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n const mappedData = importConfig.importData.map(d => convertDataToEntity(authController,\n navigation,\n d,\n importConfig.idColumn,\n importConfig.headersMapping,\n properties,\n \"TEMP_PATH\",\n importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>{t(\"imported_data_preview\")}</Typography>\n <Typography variant={\"caption\"}>{t(\"entities_with_same_id_overwritten\")}</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n ConfirmationDialog,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n NavigationResult,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController,\n useTranslation,\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs,\n Typography\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { GeneralSettingsForm } from \"./GeneralSettingsForm\";\nimport { DisplaySettingsForm } from \"./DisplaySettingsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { ExtendSettingsForm } from \"./ExtendSettingsForm\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\nimport { AICollectionGeneratorPopover } from \"./AICollectionGeneratorPopover\";\nimport { AIModifiedPathsProvider, useAIModifiedPaths } from \"./AIModifiedPathsContext\";\nimport { CollectionOperation, CollectionGenerationCallback } from \"../../api/generateCollectionApi\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n /**\n * A collection to duplicate from. If provided, the new collection will be\n * pre-populated with the same properties (but with empty name, path, and id).\n */\n copyFrom?: PersistedCollection;\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n /**\n * Initial view to open when editing: \"general\", \"display\", or \"properties\".\n * For new collections, this is ignored.\n */\n initialView?: \"general\" | \"display\" | \"properties\";\n /**\n * If true, auto-expand the Kanban configuration section.\n */\n expandKanban?: boolean;\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n /**\n * Optional analytics callback\n */\n onAnalyticsEvent?: (event: string, params?: object) => void;\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n const { t } = useTranslation();\n\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>{t(\"collection_editor\")}</DialogTitle>\n <AIModifiedPathsProvider>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty} />}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={t(\"unsaved_changes_in_collection\")} />\n </AIModifiedPathsProvider>\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"general\"\n | \"display\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"extend\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const copyFromProp = props.copyFrom;\n // Skip templates when duplicating (copyFrom is provided)\n const includeTemplates = !copyFromProp && !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: NavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n // Build initial values - handle copyFrom for duplication\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : copyFromProp\n ? {\n // When duplicating, copy all properties but clear identifiers\n ...copyFromProp,\n id: randomString(16),\n path: \"\",\n name: \"\",\n subcollections: undefined, // Don't copy subcollections\n ownerId: authController.user?.uid ?? \"\"\n }\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter />;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter />;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs} />\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities,\n initialView: initialViewProp,\n expandKanban,\n generateCollection,\n onAnalyticsEvent\n}: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: (string | null)[],\n}\n) {\n\n const { t } = useTranslation();\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection\n ? (includeTemplates ? \"welcome\" : \"general\")\n : (initialViewProp ?? \"properties\");\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: t(\"error_persisting_collection\", { error: e.message ?? t(\"details_in_console\") })\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"general\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"general\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"general\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"general\");\n }\n\n };\n\n const doCollectionInference = collectionInference ? (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(\n collection.path,\n collection.collectionGroup ?? false,\n parentPaths ?? [],\n collection.databaseId,\n collection.initialFilter,\n collection.initialSort\n );\n } : undefined;\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: t(\"error_inferring_collection\", { error: e.message ?? t(\"details_in_console\") })\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n aiModifiedPaths?.clearAllPaths();\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"general\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: t(\"error_persisting_collection\", { error: e.message ?? t(\"details_in_console\") })\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"extend\" || currentView === \"general\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"general\") {\n const pathError = validatePath(t, col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(t, col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(t, path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData!(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties: Properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n // @ts-ignore\n const isMergedCollection = collection?.merged ?? false;\n const collectionEditable = editable || isNewCollection;\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n if (!collection) return;\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n handleCancel();\n snackbarController.open({\n message: t(\"collection_deleted\"),\n type: \"success\"\n });\n });\n };\n\n const onWelcomeScreenContinue = (importData?: object[], propertiesOrder?: string[]) => {\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"general\");\n }\n };\n\n const aiModifiedPaths = useAIModifiedPaths();\n\n const handleAIGenerated = (generatedCollection: EntityCollection, operations?: CollectionOperation[]) => {\n formController.setValues(generatedCollection as PersistedCollection<M>);\n if (operations && aiModifiedPaths) {\n aiModifiedPaths.addModifiedPaths(operations);\n }\n };\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <div className={cls(\"px-4 py-2 w-full flex items-center justify-end gap-2 bg-surface-50 dark:bg-surface-950 border-b\", defaultBorderMixin)}>\n {generateCollection && (\n <AICollectionGeneratorPopover\n existingCollection={values}\n onGenerated={handleAIGenerated}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent}\n />\n )}\n <Tabs value={currentView}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"general\"}>\n {t(\"tab_general\")}\n </Tab>\n <Tab value={\"display\"}>\n {t(\"tab_display\")}\n </Tab>\n <Tab value={\"properties\"}>\n {t(\"tab_properties\")}\n </Tab>\n <Tab value={\"extend\"}>\n {t(\"tab_extend\")}\n </Tab>\n </Tabs>\n </div>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter />}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path} />}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={onWelcomeScreenContinue}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent} />}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs} />}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]} />}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: t(\"data_imported_successfully_msg\")\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"general\" &&\n <GeneralSettingsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection} />\n }\n\n {currentView === \"display\" &&\n <DisplaySettingsForm expandKanban={expandKanban} />\n }\n\n {currentView === \"extend\" && collection &&\n <ExtendSettingsForm\n collection={collection}\n parentCollection={parentCollection}\n configController={configController}\n collectionInference={collectionInference}\n getUser={getUser}\n parentCollectionIds={parentCollectionIds}\n isMergedCollection={!isNewCollection && isMergedCollection}\n onResetToCode={() => setDeleteRequested(true)} />\n }\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>} />\n }\n\n <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error} />}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n {t(\"back\")}\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n {t(\"back\")}\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"general\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n {t(\"back\")}\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n color={\"neutral\"}\n onClick={() => setCurrentView(\"general\")}>\n <ArrowBackIcon />\n {t(\"back\")}\n </Button>}\n\n <Button variant={\"text\"}\n color={\"neutral\"}\n onClick={() => {\n handleCancel();\n }}>\n {t(\"cancel\")}\n </Button>\n\n {currentView === \"welcome\" &&\n <Button variant={\"text\"} onClick={() => onWelcomeScreenContinue()}>\n {t(\"continue_from_scratch\")}\n </Button>}\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n {t(\"next\")}\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n {t(\"next\")}\n </Button>}\n\n {isNewCollection && (currentView === \"general\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"general\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon />\n : undefined}\n >\n {currentView === \"general\" && t(\"next\")}\n {currentView === \"properties\" && t(\"create_collection\")}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n {t(\"update_collection\")}\n </LoadingButton>}\n\n </DialogActions>\n </form>\n </>\n\n </Formex>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>{t(\"delete_stored_config\")}</>}\n body={<>{t(\"delete_stored_config_body\")}</>} />\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n const prop = properties[key];\n if (prop == null) return;\n propertiesResult[key] = applyPropertiesConfig(prop as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && internalProperty && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\ntype TranslateFn = (key: string, params?: Record<string, string>) => string;\n\nconst validatePath = (t: TranslateFn, value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = t(\"must_specify_path\");\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = t(\"collection_path_already_exists\");\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = t(\"collection_path_odd_segments\", { path: value });\n }\n return error;\n};\n\nconst validateId = (t: TranslateFn, value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = t(\"collection_uses_path_as_id\");\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = t(\"collection_uses_this_id\");\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionGenerationCallback } from \"./api/generateCollectionApi\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n pathSuggestions?: string[];\n\n getUser?: (uid: string) => User | null;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions,\n generateCollection\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n copyFrom?: PersistedCollection,\n redirect: boolean,\n existingEntities?: Entity<any>[],\n pathSuggestions?: string[];\n initialView?: \"general\" | \"display\" | \"properties\";\n expandKanban?: boolean;\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[];\n collection?: PersistedCollection;\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities,\n initialView,\n expandKanban\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[],\n initialView?: \"general\" | \"display\" | \"properties\",\n expandKanban?: boolean\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities,\n pathSuggestions,\n initialView,\n expandKanban\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable === undefined || collection?.editable === true,\n existingEntities,\n collection\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n copyFrom?: PersistedCollection,\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(copyFrom ? \"duplicate_collection\" : \"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n copyFrom,\n redirect,\n pathSuggestions\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n pathSuggestions\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n getUser={getUser}\n generateCollection={generateCollection}\n onAnalyticsEvent={onAnalyticsEvent}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }} />\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={currentPropertyDialog?.existingEntities || (getData && currentPropertyDialog?.editedCollectionId)\n ? async () => {\n let data: object[] = [];\n // First, use existing entities if available (already loaded in table)\n if (currentPropertyDialog?.existingEntities) {\n data = currentPropertyDialog.existingEntities.map(e => e.values);\n }\n // If getData is available and we have a path, also fetch from database\n if (getData && currentPropertyDialog?.editedCollectionId) {\n console.debug(\"Get data for property, path:\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!);\n const fetchedData = await getData(resolvedPath, []);\n data.push(...fetchedData);\n }\n return data;\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={currentPropertyDialog?.collection?.properties ? Object.keys(currentPropertyDialog.collection.properties) : []}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey} />\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController, useTranslation } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n const { t } = useTranslation();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? t(\"edit_collection\") : t(\"no_permissions_edit_collection\")}>\n <IconButton\n size={\"small\"}\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { ContentCopyIcon, DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n}: PluginHomePageActionsProps) {\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController?.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n })\n : {\n createCollections: false,\n editCollections: false,\n deleteCollections: false\n };\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const onDuplicateCollectionClicked = () => {\n // Use copyFrom to duplicate the collection with all properties\n // The editor will handle clearing name, path, and id\n collectionEditorController?.createCollection({\n copyFrom: collection,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"home_page_duplicate\"\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton size={\"small\"}>\n <MoreVertIcon size={\"small\"} />\n </IconButton>}\n >\n {permissions.createCollections &&\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onDuplicateCollectionClicked();\n }}>\n <ContentCopyIcon />\n Duplicate\n </MenuItem>\n }\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon />\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n size={\"small\"}\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"} />\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>} />\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController, useTranslation } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const { t } = useTranslation();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? t(\"add_new_property\") : t(\"no_permission_add_properties\")}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 bg-surface-100/40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:bg-surface-950/40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useTranslation } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const { t } = useTranslation();\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n {t(\"new_collection\")}\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"text\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController, useTranslation } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const { t } = useTranslation();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{t(\"add_new_collection\").toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>\n {t(\"no_permissions_create_collection\")}\n </Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import { PluginFormActionProps, useAuthController, useNavigationController, useTranslation } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorEntityAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n formContext\n }: PluginFormActionProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n const { t } = useTranslation();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const isDirty = formContext?.formex.dirty ?? false;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? (isDirty ? t(\"save_before_changing_schema\") : t(\"edit_schema_for_this_form\")) : t(\"no_permissions_to_edit_collection\")}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection || isDirty}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n })\n : undefined}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n","import React from \"react\";\nimport { EntityCollection, useNavigationController } from \"@firecms/core\";\nimport { Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\n/**\n * Component rendered when Kanban view is missing orderProperty configuration.\n * Provides a CTA button to open the collection editor to configure Kanban.\n */\nexport function KanbanSetupAction({\n collection,\n fullPath,\n parentCollectionIds\n}: {\n collection: EntityCollection;\n fullPath: string;\n parentCollectionIds: string[];\n}) {\n const collectionEditorController = useCollectionEditorController();\n\n const handleConfigureClick = () => {\n collectionEditorController.editCollection({\n id: collection.id,\n parentCollectionIds,\n initialView: \"display\",\n expandKanban: true\n });\n };\n\n return (\n <Button\n variant=\"outlined\"\n onClick={handleConfigureClick}\n >\n Configure Kanban\n </Button>\n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport {\n EntityCollection,\n getPropertyInPath,\n ResolvedStringProperty,\n resolveCollection,\n resolveEnumValues,\n toSnakeCase,\n useAuthController,\n useCustomizationController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Button,\n cls,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n IconButton,\n TextField,\n Typography\n} from \"@firecms/ui\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\n/**\n * Component rendered at the end of the Kanban board to add new columns (enum values).\n * Opens a dialog to input a new enum value for the column property.\n */\nexport function AddKanbanColumnAction({\n collection,\n fullPath,\n parentCollectionIds,\n columnProperty\n}: {\n collection: EntityCollection;\n fullPath: string;\n parentCollectionIds: string[];\n columnProperty: string;\n}) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [newValueLabel, setNewValueLabel] = useState(\"\");\n const [saving, setSaving] = useState(false);\n\n const configController = useCollectionsConfigController();\n const authController = useAuthController();\n const customizationController = useCustomizationController();\n\n const resolvedCollection = useMemo(() => resolveCollection({\n collection,\n path: fullPath,\n propertyConfigs: customizationController.propertyConfigs,\n authController\n }), [collection, fullPath, customizationController.propertyConfigs, authController]);\n\n // Get current enum values\n const currentEnumValues = useMemo(() => {\n const property = getPropertyInPath(resolvedCollection.properties, columnProperty);\n if (!property || !('dataType' in property) || property.dataType !== \"string\") {\n return [];\n }\n const stringProperty = property as ResolvedStringProperty;\n if (!stringProperty.enumValues) {\n return [];\n }\n return resolveEnumValues(stringProperty.enumValues) ?? [];\n }, [resolvedCollection, columnProperty]);\n\n const handleAddColumn = useCallback(async () => {\n if (!newValueLabel.trim() || !configController) return;\n\n setSaving(true);\n try {\n // Check for property in persisted collection first, then resolved collection\n // This handles code-defined properties that aren't in the persisted config\n let property = collection?.properties?.[columnProperty];\n let isCodeDefinedProperty = false;\n\n if (!property || typeof property === 'function') {\n // Property not in persisted config - check resolved collection\n property = resolvedCollection.properties?.[columnProperty];\n isCodeDefinedProperty = true;\n }\n\n // Type guard: property must be an object with dataType === \"string\"\n if (!property || typeof property === 'function' || !('dataType' in property) || property.dataType !== \"string\") {\n console.error(\"Column property not found or not a string. Property:\", property);\n setSaving(false);\n return;\n }\n\n // Now we know property is a StringProperty\n const stringProperty = property as { dataType: \"string\"; enumValues?: any; name?: string };\n\n // Create new enum value\n const newId = toSnakeCase(newValueLabel.trim());\n const newEnumValue = {\n id: newId,\n label: newValueLabel.trim()\n };\n\n // Get existing enum values from the resolved property (current runtime values)\n // Use currentEnumValues which is already computed from resolvedCollection\n const existingEnumValues = currentEnumValues.map(ev => ({\n id: ev.id,\n label: ev.label\n }));\n\n // Add new enum value\n const updatedEnumValues = [...existingEnumValues, newEnumValue];\n\n // Build the property to save\n // If it's code-defined, we create a minimal override with just enumValues\n const updatedProperty = isCodeDefinedProperty\n ? {\n dataType: \"string\" as const,\n name: stringProperty.name || columnProperty,\n enumValues: updatedEnumValues\n }\n : {\n ...property,\n enumValues: updatedEnumValues\n };\n\n // Save the updated property\n await configController.saveProperty({\n path: fullPath,\n propertyKey: columnProperty,\n property: updatedProperty as any,\n parentCollectionIds\n });\n\n setNewValueLabel(\"\");\n setDialogOpen(false);\n } catch (error) {\n console.error(\"Error adding new column:\", error);\n } finally {\n setSaving(false);\n }\n }, [newValueLabel, configController, collection, columnProperty, fullPath, parentCollectionIds]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && newValueLabel.trim()) {\n handleAddColumn();\n }\n };\n\n return (\n <>\n <div\n className={cls(\n \"border h-full w-80 min-w-80 mx-2 flex flex-col items-center justify-center rounded-md\",\n \"bg-surface-50 dark:bg-surface-950 hover:bg-surface-100 dark:hover:bg-surface-900\",\n \"cursor-pointer transition-colors duration-200 ease-in-out\",\n defaultBorderMixin\n )}\n onClick={() => setDialogOpen(true)}\n >\n <IconButton size=\"large\" className=\"opacity-60 hover:opacity-100\">\n <AddIcon size=\"large\" />\n </IconButton>\n <Typography variant=\"caption\" color=\"secondary\" className=\"mt-2\">\n Add Column\n </Typography>\n </div>\n\n <Dialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <DialogContent className=\"max-w-md\">\n <Typography variant=\"h6\" className=\"mb-4\">\n Add New Column\n </Typography>\n <Typography variant=\"body2\" color=\"secondary\" className=\"mb-4\">\n Add a new option to the \"{columnProperty}\" property.\n This will create a new column in the Kanban board.\n </Typography>\n <TextField\n label=\"Column Name\"\n value={newValueLabel}\n onChange={(e) => setNewValueLabel(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n disabled={saving}\n />\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"text\"\n onClick={() => setDialogOpen(false)}\n disabled={saving}\n >\n Cancel\n </Button>\n <Button\n onClick={handleAddColumn}\n disabled={saving || !newValueLabel.trim()}\n >\n {saving ? \"Adding...\" : \"Add Column\"}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n","export const collectionEditorTranslationsEn = {\n // Storage & File Upload\n file_upload_config: \"File upload config\",\n file_type_images: \"Images\",\n file_type_videos: \"Videos\",\n file_type_audio: \"Audio files\",\n file_type_applications: \"Files (pdf, zip, csv, excel...)\",\n file_type_text: \"Text files\",\n only: \"Only\",\n all_file_types_allowed: \"All file types allowed\",\n allowed_file_types: \"Allowed file types\",\n file_name_label: \"File name\",\n storage_path_label: \"Storage path\",\n storage_placeholders_description: \"You can use the following placeholders in the file name and storage path values:\",\n storage_placeholder_file: \"{file} - Full name of the uploaded file\",\n storage_placeholder_file_name: \"{file.name} - Name of the uploaded file without extension\",\n storage_placeholder_file_ext: \"{file.ext} - Extension of the uploaded file\",\n storage_placeholder_entity_id: \"{entityId} - ID of the entity\",\n storage_placeholder_property_key: \"{propertyKey} - ID of this field\",\n storage_placeholder_path: \"{path} - Path of this entity\",\n storage_placeholder_rand: \"{rand} - Random value used to avoid name collisions\",\n include_bucket_url: \"Include bucket URL (gs://...) in saved value\",\n include_bucket_url_description: \"Turn this setting on if you want to save a fully-qualified storage URL (e.g. gs://my-bucket/path/to/file) instead of just the storage path. You can only change this prop upon creation.\",\n save_url_instead_of_path: \"Save URL instead of storage path\",\n save_url_description: \"Turn this setting on, if you prefer to save the download URL of the uploaded file instead of the storage path. You can only change this prop upon creation.\",\n max_size_bytes: \"Max size (in bytes)\",\n image_resize_configuration: \"Image Resize Configuration\",\n image_resize_description: \"Automatically resize and optimize images before upload (JPEG, PNG, WebP only)\",\n max_width_px: \"Max width (px)\",\n max_height_px: \"Max height (px)\",\n resize_mode: \"Resize mode\",\n resize_contain: \"Contain\",\n resize_contain_description: \"Contain (fit within bounds)\",\n resize_cover: \"Cover\",\n resize_cover_description: \"Cover (fill bounds, may crop)\",\n output_format: \"Output format\",\n format_original: \"Original\",\n format_original_description: \"Original (keep same format)\",\n format_webp_description: \"WebP (best compression)\",\n quality_label: \"Quality (0-100)\",\n quality_hint: \"Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics\",\n\n // URL Property\n preview_type: \"Preview type\",\n preview_image: \"Image\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"Display URL\",\n\n // Boolean Property\n default_value_not_set: \"Default value not set\",\n default_value_is: \"Default value is {{value}}\",\n\n // Enum Property\n default_value_was_cleared: \"Default value was cleared\",\n enum_missing_values: \"This enum property is missing some values\",\n\n // DateTime Property\n mode_label: \"Mode\",\n date_time_mode: \"Date/Time\",\n date_mode: \"Date\",\n automatic_value: \"Automatic value\",\n auto_on_create: \"On create\",\n auto_on_update: \"On any update\",\n auto_none: \"None\",\n auto_value_description: \"Update this field automatically when creating or updating the entity\",\n timezone_label: \"Timezone\",\n local_timezone: \"Local timezone\",\n timezone_description: \"Timezone for displaying and inputting dates. Values are always stored in UTC.\",\n\n // Reference Property\n target_collection: \"Target collection\",\n views_group: \"Views\",\n\n // Map Property\n add_property_to: \"Add property to {{name}}\",\n add_first_property_to_group: \"Add the first property to this group\",\n spread_children_as_columns: \"Spread children as columns\",\n spread_children_description: \"Set this flag to true if you want to display the children of this group as individual columns. This will only work for top level groups.\",\n\n // Markdown Property\n paste_behavior: \"Paste behavior\",\n strip_html_on_paste: \"Strip HTML on paste\",\n strip_html_description: \"Remove HTML tags and inline styles when pasting content from external sources\",\n convert_pasted_to_markdown: \"Convert pasted text to markdown\",\n convert_pasted_description: \"Convert rich text (from Google Docs, Word, etc.) to clean markdown format\",\n markdown_url_note: \"When using Markdown, the URL of the uploaded files are always saved in the text value (not the path).\",\n\n // Advanced Property\n hide_from_collection: \"Hide from collection\",\n hide_from_collection_tooltip: \"Hide this field from the collection view. It will still be visible in the form view\",\n read_only: \"Read only\",\n read_only_tooltip: \"Is this a read only field. Display only as a preview\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Allow this field to be explicitly set to null. A clear button will be shown to the user\",\n\n // Dialog & Tabs\n tab_general: \"General\",\n tab_display: \"Display\",\n tab_properties: \"Properties\",\n tab_extend: \"Extend\",\n unsaved_changes_in_collection: \"There are unsaved changes in this collection\",\n error_persisting_collection: \"Error persisting collection: {{error}}\",\n details_in_console: \"Details in the console\",\n error_inferring_collection: \"Error inferring collection: {{error}}\",\n collection_deleted: \"Collection deleted\",\n data_imported_successfully_msg: \"Data imported successfully\",\n must_specify_path: \"You must specify a path in the database for this collection\",\n collection_path_already_exists: \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure they have different ids\",\n collection_path_odd_segments: \"Collection paths must have an odd number of segments: {{path}}\",\n collection_uses_path_as_id: \"There is already a collection that uses this value as a path\",\n collection_uses_this_id: \"There is already a collection which uses this id\",\n delete_stored_config: \"Delete the stored config?\",\n delete_stored_config_body: \"This will not delete any data, only the stored config, and reset to the code state.\",\n order_label: \"Order\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Select a property to edit it\",\n add_first_property: \"Now you can add your first property\",\n add_new_property: \"Add new property\",\n no_permission_add_properties: \"You don't have permission to add new properties\",\n get_code_for_collection: \"Get the code for this collection\",\n add_properties_from_data: \"Add new properties based on data\",\n collection_name_placeholder: \"Collection name\",\n created_by: \"Created by {{name}}\",\n property_defined_as_builder: \"This property is defined as a property builder in code\",\n\n // Extend Settings\n extend_title: \"Extend\",\n extend_description: \"Add subcollections, custom views, and entity actions to this collection.\",\n collection_defined_in_code: \"This collection is defined in code. The changes done in this editor will override the properties defined in code. You can delete the overridden values to revert to the state defined in code.\",\n reset_to_code: \"Reset to code\",\n\n // Widget Type Groups\n widget_group_text: \"Text\",\n widget_group_boolean: \"Boolean\",\n widget_group_users: \"Users\",\n widget_group_select: \"Select\",\n widget_group_number: \"Number\",\n widget_group_file: \"File\",\n widget_group_reference: \"Reference\",\n widget_group_date: \"Date\",\n widget_group_group: \"Group\",\n widget_group_array: \"Array\"\n};\n","export const collectionEditorTranslationsEs = {\n file_upload_config: \"Configuración de subida de archivos\",\n file_type_images: \"Imágenes\",\n file_type_videos: \"Videos\",\n file_type_audio: \"Archivos de audio\",\n file_type_applications: \"Archivos (pdf, zip, csv, excel...)\",\n file_type_text: \"Archivos de texto\",\n only: \"Solo\",\n all_file_types_allowed: \"Todos los tipos de archivo permitidos\",\n allowed_file_types: \"Tipos de archivo permitidos\",\n file_name_label: \"Nombre del archivo\",\n storage_path_label: \"Ruta de almacenamiento\",\n storage_placeholders_description: \"Puedes usar los siguientes marcadores en los valores del nombre de archivo y la ruta de almacenamiento:\",\n storage_placeholder_file: \"{file} - Nombre completo del archivo subido\",\n storage_placeholder_file_name: \"{file.name} - Nombre del archivo subido sin extensión\",\n storage_placeholder_file_ext: \"{file.ext} - Extensión del archivo subido\",\n storage_placeholder_entity_id: \"{entityId} - ID de la entidad\",\n storage_placeholder_property_key: \"{propertyKey} - ID de este campo\",\n storage_placeholder_path: \"{path} - Ruta de esta entidad\",\n storage_placeholder_rand: \"{rand} - Valor aleatorio para evitar colisiones de nombres\",\n include_bucket_url: \"Incluir URL del bucket (gs://...) en el valor guardado\",\n include_bucket_url_description: \"Activa esta opción si deseas guardar una URL de almacenamiento completa (ej. gs://mi-bucket/ruta/al/archivo) en lugar de solo la ruta de almacenamiento. Solo puedes cambiar esta opción al crear.\",\n save_url_instead_of_path: \"Guardar URL en lugar de ruta de almacenamiento\",\n save_url_description: \"Activa esta opción si prefieres guardar la URL de descarga del archivo subido en lugar de la ruta de almacenamiento. Solo puedes cambiar esta opción al crear.\",\n max_size_bytes: \"Tamaño máximo (en bytes)\",\n image_resize_configuration: \"Configuración de redimensionamiento de imagen\",\n image_resize_description: \"Redimensionar y optimizar imágenes automáticamente antes de subirlas (solo JPEG, PNG, WebP)\",\n max_width_px: \"Ancho máximo (px)\",\n max_height_px: \"Alto máximo (px)\",\n resize_mode: \"Modo de redimensionamiento\",\n resize_contain: \"Contener\",\n resize_contain_description: \"Contener (ajustar dentro de los límites)\",\n resize_cover: \"Cubrir\",\n resize_cover_description: \"Cubrir (rellenar límites, puede recortar)\",\n output_format: \"Formato de salida\",\n format_original: \"Original\",\n format_original_description: \"Original (mantener mismo formato)\",\n format_webp_description: \"WebP (mejor compresión)\",\n quality_label: \"Calidad (0–100)\",\n quality_hint: \"Mayor calidad = archivo más grande. Recomendado: 80–90 para fotos, 90–100 para gráficos\",\n preview_type: \"Tipo de vista previa\",\n preview_image: \"Imagen\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"Mostrar URL\",\n default_value_not_set: \"Valor predeterminado no establecido\",\n default_value_is: \"El valor predeterminado es {{value}}\",\n default_value_was_cleared: \"El valor predeterminado fue eliminado\",\n enum_missing_values: \"A esta propiedad enum le faltan algunos valores\",\n mode_label: \"Modo\",\n date_time_mode: \"Fecha/Hora\",\n date_mode: \"Fecha\",\n automatic_value: \"Valor automático\",\n auto_on_create: \"Al crear\",\n auto_on_update: \"En cada actualización\",\n auto_none: \"Ninguno\",\n auto_value_description: \"Actualizar este campo automáticamente al crear o actualizar la entidad\",\n timezone_label: \"Zona horaria\",\n local_timezone: \"Zona horaria local\",\n timezone_description: \"Zona horaria para mostrar e ingresar fechas. Los valores se almacenan siempre en UTC.\",\n target_collection: \"Colección de destino\",\n views_group: \"Vistas\",\n add_property_to: \"Añadir propiedad a {{name}}\",\n add_first_property_to_group: \"Añade la primera propiedad a este grupo\",\n spread_children_as_columns: \"Distribuir hijos como columnas\",\n spread_children_description: \"Activa esta opción si deseas mostrar los hijos de este grupo como columnas individuales. Solo funciona para grupos de nivel superior.\",\n paste_behavior: \"Comportamiento al pegar\",\n strip_html_on_paste: \"Eliminar HTML al pegar\",\n strip_html_description: \"Eliminar etiquetas HTML y estilos en línea al pegar contenido de fuentes externas\",\n convert_pasted_to_markdown: \"Convertir texto pegado a markdown\",\n convert_pasted_description: \"Convertir texto enriquecido (de Google Docs, Word, etc.) a formato markdown limpio\",\n markdown_url_note: \"Al usar Markdown, las URLs de los archivos subidos siempre se guardan en el valor de texto (no la ruta).\",\n hide_from_collection: \"Ocultar de la colección\",\n hide_from_collection_tooltip: \"Ocultar este campo de la vista de colección. Seguirá visible en la vista de formulario\",\n read_only: \"Solo lectura\",\n read_only_tooltip: \"Es un campo de solo lectura. Mostrar solo como vista previa\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Permitir que este campo se establezca explícitamente como null. Se mostrará un botón de borrar al usuario\",\n tab_general: \"General\",\n tab_display: \"Visualización\",\n tab_properties: \"Propiedades\",\n tab_extend: \"Extender\",\n unsaved_changes_in_collection: \"Hay cambios sin guardar en esta colección\",\n error_persisting_collection: \"Error al guardar la colección: {{error}}\",\n details_in_console: \"Detalles en la consola\",\n error_inferring_collection: \"Error al inferir la colección: {{error}}\",\n collection_deleted: \"Colección eliminada\",\n data_imported_successfully_msg: \"Datos importados correctamente\",\n must_specify_path: \"Debes especificar una ruta en la base de datos para esta colección\",\n collection_path_already_exists: \"Ya existe una colección con la ruta especificada. Si deseas tener múltiples colecciones con la misma ruta de base de datos, asegúrate de que tengan IDs diferentes\",\n collection_path_odd_segments: \"Las rutas de colección deben tener un número impar de segmentos: {{path}}\",\n collection_uses_path_as_id: \"Ya existe una colección que usa este valor como ruta\",\n collection_uses_this_id: \"Ya existe una colección que usa este ID\",\n delete_stored_config: \"¿Eliminar la configuración almacenada?\",\n delete_stored_config_body: \"Esto no eliminará ningún dato, solo la configuración almacenada, y se restaurará al estado del código.\",\n order_label: \"Orden\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Selecciona una propiedad para editarla\",\n add_first_property: \"Ahora puedes añadir tu primera propiedad\",\n add_new_property: \"Añadir nueva propiedad\",\n no_permission_add_properties: \"No tienes permiso para añadir nuevas propiedades\",\n get_code_for_collection: \"Obtener el código de esta colección\",\n add_properties_from_data: \"Añadir nuevas propiedades basadas en datos\",\n collection_name_placeholder: \"Nombre de la colección\",\n created_by: \"Creado por {{name}}\",\n property_defined_as_builder: \"Esta propiedad está definida como un property builder en código\",\n\n // Extend Settings\n extend_title: \"Extender\",\n extend_description: \"Añade subcolecciones, vistas personalizadas y acciones de entidad a esta colección.\",\n collection_defined_in_code: \"Esta colección está definida en código. Los cambios realizados en este editor sobreescribirán las propiedades definidas en código. Puedes eliminar los valores sobreescritos para volver al estado definido en código.\",\n reset_to_code: \"Restablecer al código\",\n\n widget_group_text: \"Texto\",\n widget_group_boolean: \"Booleano\",\n widget_group_users: \"Usuarios\",\n widget_group_select: \"Selección\",\n widget_group_number: \"Número\",\n widget_group_file: \"Archivo\",\n widget_group_reference: \"Referencia\",\n widget_group_date: \"Fecha\",\n widget_group_group: \"Grupo\",\n widget_group_array: \"Lista\"\n};\n","export const collectionEditorTranslationsDe = {\n file_upload_config: \"Dateiupload-Konfiguration\",\n file_type_images: \"Bilder\",\n file_type_videos: \"Videos\",\n file_type_audio: \"Audiodateien\",\n file_type_applications: \"Dateien (pdf, zip, csv, excel...)\",\n file_type_text: \"Textdateien\",\n only: \"Nur\",\n all_file_types_allowed: \"Alle Dateitypen erlaubt\",\n allowed_file_types: \"Erlaubte Dateitypen\",\n file_name_label: \"Dateiname\",\n storage_path_label: \"Speicherpfad\",\n storage_placeholders_description: \"Sie können die folgenden Platzhalter in den Werten für Dateiname und Speicherpfad verwenden:\",\n storage_placeholder_file: \"{file} - Vollständiger Name der hochgeladenen Datei\",\n storage_placeholder_file_name: \"{file.name} - Name der hochgeladenen Datei ohne Erweiterung\",\n storage_placeholder_file_ext: \"{file.ext} - Erweiterung der hochgeladenen Datei\",\n storage_placeholder_entity_id: \"{entityId} - ID der Entität\",\n storage_placeholder_property_key: \"{propertyKey} - ID dieses Feldes\",\n storage_placeholder_path: \"{path} - Pfad dieser Entität\",\n storage_placeholder_rand: \"{rand} - Zufallswert zur Vermeidung von Namenskollisionen\",\n include_bucket_url: \"Bucket-URL (gs://...) im gespeicherten Wert einschließen\",\n include_bucket_url_description: \"Aktivieren Sie diese Einstellung, wenn Sie eine vollqualifizierte Speicher-URL (z. B. gs://mein-bucket/pfad/zur/datei) statt nur des Speicherpfads speichern möchten. Diese Einstellung kann nur bei der Erstellung geändert werden.\",\n save_url_instead_of_path: \"URL statt Speicherpfad speichern\",\n save_url_description: \"Aktivieren Sie diese Einstellung, wenn Sie bevorzugen, die Download-URL der hochgeladenen Datei statt des Speicherpfads zu speichern. Diese Einstellung kann nur bei der Erstellung geändert werden.\",\n max_size_bytes: \"Maximale Größe (in Bytes)\",\n image_resize_configuration: \"Bildgrößenanpassungs-Konfiguration\",\n image_resize_description: \"Bilder vor dem Hochladen automatisch anpassen und optimieren (nur JPEG, PNG, WebP)\",\n max_width_px: \"Maximale Breite (px)\",\n max_height_px: \"Maximale Höhe (px)\",\n resize_mode: \"Anpassungsmodus\",\n resize_contain: \"Einpassen\",\n resize_contain_description: \"Einpassen (innerhalb der Grenzen)\",\n resize_cover: \"Abdecken\",\n resize_cover_description: \"Abdecken (Grenzen füllen, kann zuschneiden)\",\n output_format: \"Ausgabeformat\",\n format_original: \"Original\",\n format_original_description: \"Original (gleiches Format beibehalten)\",\n format_webp_description: \"WebP (beste Komprimierung)\",\n quality_label: \"Qualität (0–100)\",\n quality_hint: \"Höhere Qualität = größere Datei. Empfohlen: 80–90 für Fotos, 90–100 für Grafiken\",\n preview_type: \"Vorschautyp\",\n preview_image: \"Bild\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"URL anzeigen\",\n default_value_not_set: \"Standardwert nicht gesetzt\",\n default_value_is: \"Standardwert ist {{value}}\",\n default_value_was_cleared: \"Standardwert wurde gelöscht\",\n enum_missing_values: \"Dieser Enum-Eigenschaft fehlen einige Werte\",\n mode_label: \"Modus\",\n date_time_mode: \"Datum/Uhrzeit\",\n date_mode: \"Datum\",\n automatic_value: \"Automatischer Wert\",\n auto_on_create: \"Bei Erstellung\",\n auto_on_update: \"Bei jeder Aktualisierung\",\n auto_none: \"Keiner\",\n auto_value_description: \"Dieses Feld automatisch beim Erstellen oder Aktualisieren der Entität aktualisieren\",\n timezone_label: \"Zeitzone\",\n local_timezone: \"Lokale Zeitzone\",\n timezone_description: \"Zeitzone für die Anzeige und Eingabe von Daten. Werte werden immer in UTC gespeichert.\",\n target_collection: \"Zielsammlung\",\n views_group: \"Ansichten\",\n add_property_to: \"Eigenschaft zu {{name}} hinzufügen\",\n add_first_property_to_group: \"Erste Eigenschaft zu dieser Gruppe hinzufügen\",\n spread_children_as_columns: \"Kinder als Spalten verteilen\",\n spread_children_description: \"Setzen Sie dieses Flag auf true, wenn Sie die Kinder dieser Gruppe als einzelne Spalten anzeigen möchten. Dies funktioniert nur für Gruppen auf der obersten Ebene.\",\n paste_behavior: \"Einfügeverhalten\",\n strip_html_on_paste: \"HTML beim Einfügen entfernen\",\n strip_html_description: \"HTML-Tags und Inline-Stile beim Einfügen von Inhalten aus externen Quellen entfernen\",\n convert_pasted_to_markdown: \"Eingefügten Text in Markdown konvertieren\",\n convert_pasted_description: \"Rich Text (von Google Docs, Word usw.) in sauberes Markdown-Format konvertieren\",\n markdown_url_note: \"Bei Verwendung von Markdown werden die URLs der hochgeladenen Dateien immer im Textwert gespeichert (nicht der Pfad).\",\n hide_from_collection: \"Aus Sammlung ausblenden\",\n hide_from_collection_tooltip: \"Dieses Feld aus der Sammlungsansicht ausblenden. Es wird weiterhin in der Formularansicht sichtbar sein\",\n read_only: \"Nur lesen\",\n read_only_tooltip: \"Ist dieses Feld schreibgeschützt. Nur als Vorschau anzeigen\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Erlaubt es, dieses Feld explizit auf null zu setzen. Dem Benutzer wird eine Löschen-Schaltfläche angezeigt\",\n tab_general: \"Allgemein\",\n tab_display: \"Anzeige\",\n tab_properties: \"Eigenschaften\",\n tab_extend: \"Erweitern\",\n unsaved_changes_in_collection: \"Es gibt ungespeicherte Änderungen in dieser Sammlung\",\n error_persisting_collection: \"Fehler beim Speichern der Sammlung: {{error}}\",\n details_in_console: \"Details in der Konsole\",\n error_inferring_collection: \"Fehler beim Ableiten der Sammlung: {{error}}\",\n collection_deleted: \"Sammlung gelöscht\",\n data_imported_successfully_msg: \"Daten erfolgreich importiert\",\n must_specify_path: \"Sie müssen einen Pfad in der Datenbank für diese Sammlung angeben\",\n collection_path_already_exists: \"Es gibt bereits eine Sammlung mit dem angegebenen Pfad. Wenn Sie mehrere Sammlungen mit demselben Datenbankpfad haben möchten, stellen Sie sicher, dass sie unterschiedliche IDs haben\",\n collection_path_odd_segments: \"Sammlungspfade müssen eine ungerade Anzahl von Segmenten haben: {{path}}\",\n collection_uses_path_as_id: \"Es gibt bereits eine Sammlung, die diesen Wert als Pfad verwendet\",\n collection_uses_this_id: \"Es gibt bereits eine Sammlung, die diese ID verwendet\",\n delete_stored_config: \"Gespeicherte Konfiguration löschen?\",\n delete_stored_config_body: \"Dadurch werden keine Daten gelöscht, nur die gespeicherte Konfiguration, und der Code-Zustand wird wiederhergestellt.\",\n order_label: \"Reihenfolge\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Wähle eine Eigenschaft aus, um sie zu bearbeiten\",\n add_first_property: \"Jetzt kannst du deine erste Eigenschaft hinzufügen\",\n add_new_property: \"Neue Eigenschaft hinzufügen\",\n no_permission_add_properties: \"Du hast keine Berechtigung, neue Eigenschaften hinzuzufügen\",\n get_code_for_collection: \"Code für diese Sammlung abrufen\",\n add_properties_from_data: \"Neue Eigenschaften basierend auf Daten hinzufügen\",\n collection_name_placeholder: \"Sammlungsname\",\n created_by: \"Erstellt von {{name}}\",\n property_defined_as_builder: \"Diese Eigenschaft ist als Property Builder im Code definiert\",\n\n // Extend Settings\n extend_title: \"Erweitern\",\n extend_description: \"Füge Untersammlungen, benutzerdefinierte Ansichten und Entitätsaktionen zu dieser Sammlung hinzu.\",\n collection_defined_in_code: \"Diese Sammlung ist im Code definiert. Die in diesem Editor vorgenommenen Änderungen überschreiben die im Code definierten Eigenschaften. Du kannst die überschriebenen Werte löschen, um zum im Code definierten Zustand zurückzukehren.\",\n reset_to_code: \"Auf Code zurücksetzen\",\n\n widget_group_text: \"Text\",\n widget_group_boolean: \"Boolean\",\n widget_group_users: \"Benutzer\",\n widget_group_select: \"Auswahl\",\n widget_group_number: \"Zahl\",\n widget_group_file: \"Datei\",\n widget_group_reference: \"Referenz\",\n widget_group_date: \"Datum\",\n widget_group_group: \"Gruppe\",\n widget_group_array: \"Array\"\n};\n","export const collectionEditorTranslationsFr = {\n file_upload_config: \"Configuration du téléchargement de fichiers\",\n file_type_images: \"Images\",\n file_type_videos: \"Vidéos\",\n file_type_audio: \"Fichiers audio\",\n file_type_applications: \"Fichiers (pdf, zip, csv, excel...)\",\n file_type_text: \"Fichiers texte\",\n only: \"Uniquement\",\n all_file_types_allowed: \"Tous les types de fichiers autorisés\",\n allowed_file_types: \"Types de fichiers autorisés\",\n file_name_label: \"Nom du fichier\",\n storage_path_label: \"Chemin de stockage\",\n storage_placeholders_description: \"Vous pouvez utiliser les espaces réservés suivants dans les valeurs du nom de fichier et du chemin de stockage :\",\n storage_placeholder_file: \"{file} - Nom complet du fichier téléchargé\",\n storage_placeholder_file_name: \"{file.name} - Nom du fichier téléchargé sans extension\",\n storage_placeholder_file_ext: \"{file.ext} - Extension du fichier téléchargé\",\n storage_placeholder_entity_id: \"{entityId} - ID de l'entité\",\n storage_placeholder_property_key: \"{propertyKey} - ID de ce champ\",\n storage_placeholder_path: \"{path} - Chemin de cette entité\",\n storage_placeholder_rand: \"{rand} - Valeur aléatoire pour éviter les conflits de noms\",\n include_bucket_url: \"Inclure l'URL du bucket (gs://...) dans la valeur enregistrée\",\n include_bucket_url_description: \"Activez ce paramètre si vous souhaitez enregistrer une URL de stockage complète (ex. gs://mon-bucket/chemin/vers/fichier) au lieu du simple chemin de stockage. Vous ne pouvez modifier ce paramètre qu'à la création.\",\n save_url_instead_of_path: \"Enregistrer l'URL au lieu du chemin de stockage\",\n save_url_description: \"Activez ce paramètre si vous préférez enregistrer l'URL de téléchargement du fichier plutôt que le chemin de stockage. Vous ne pouvez modifier ce paramètre qu'à la création.\",\n max_size_bytes: \"Taille maximale (en octets)\",\n image_resize_configuration: \"Configuration du redimensionnement d'image\",\n image_resize_description: \"Redimensionner et optimiser automatiquement les images avant le téléchargement (JPEG, PNG, WebP uniquement)\",\n max_width_px: \"Largeur max (px)\",\n max_height_px: \"Hauteur max (px)\",\n resize_mode: \"Mode de redimensionnement\",\n resize_contain: \"Contenir\",\n resize_contain_description: \"Contenir (ajuster aux limites)\",\n resize_cover: \"Couvrir\",\n resize_cover_description: \"Couvrir (remplir les limites, peut rogner)\",\n output_format: \"Format de sortie\",\n format_original: \"Original\",\n format_original_description: \"Original (conserver le même format)\",\n format_webp_description: \"WebP (meilleure compression)\",\n quality_label: \"Qualité (0–100)\",\n quality_hint: \"Qualité plus élevée = fichier plus volumineux. Recommandé : 80–90 pour les photos, 90–100 pour les graphiques\",\n preview_type: \"Type d'aperçu\",\n preview_image: \"Image\",\n preview_video: \"Vidéo\",\n preview_audio: \"Audio\",\n display_url: \"Afficher l'URL\",\n default_value_not_set: \"Valeur par défaut non définie\",\n default_value_is: \"La valeur par défaut est {{value}}\",\n default_value_was_cleared: \"La valeur par défaut a été supprimée\",\n enum_missing_values: \"Cette propriété enum est incomplète\",\n mode_label: \"Mode\",\n date_time_mode: \"Date/Heure\",\n date_mode: \"Date\",\n automatic_value: \"Valeur automatique\",\n auto_on_create: \"À la création\",\n auto_on_update: \"À chaque mise à jour\",\n auto_none: \"Aucune\",\n auto_value_description: \"Mettre à jour ce champ automatiquement lors de la création ou de la mise à jour de l'entité\",\n timezone_label: \"Fuseau horaire\",\n local_timezone: \"Fuseau horaire local\",\n timezone_description: \"Fuseau horaire pour l'affichage et la saisie des dates. Les valeurs sont toujours stockées en UTC.\",\n target_collection: \"Collection cible\",\n views_group: \"Vues\",\n add_property_to: \"Ajouter une propriété à {{name}}\",\n add_first_property_to_group: \"Ajoutez la première propriété à ce groupe\",\n spread_children_as_columns: \"Étendre les enfants en colonnes\",\n spread_children_description: \"Activez cette option si vous souhaitez afficher les enfants de ce groupe en colonnes individuelles. Cela ne fonctionne que pour les groupes de premier niveau.\",\n paste_behavior: \"Comportement du collage\",\n strip_html_on_paste: \"Supprimer le HTML au collage\",\n strip_html_description: \"Supprimer les balises HTML et les styles en ligne lors du collage de contenu provenant de sources externes\",\n convert_pasted_to_markdown: \"Convertir le texte collé en markdown\",\n convert_pasted_description: \"Convertir le texte enrichi (de Google Docs, Word, etc.) en format markdown propre\",\n markdown_url_note: \"Avec Markdown, les URL des fichiers téléchargés sont toujours enregistrées dans la valeur texte (pas le chemin).\",\n hide_from_collection: \"Masquer de la collection\",\n hide_from_collection_tooltip: \"Masquer ce champ de la vue collection. Il restera visible dans la vue formulaire\",\n read_only: \"Lecture seule\",\n read_only_tooltip: \"Ce champ est en lecture seule. Affichage en aperçu uniquement\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Permettre de définir explicitement ce champ comme null. Un bouton d'effacement sera affiché à l'utilisateur\",\n tab_general: \"Général\",\n tab_display: \"Affichage\",\n tab_properties: \"Propriétés\",\n tab_extend: \"Extension\",\n unsaved_changes_in_collection: \"Il y a des modifications non enregistrées dans cette collection\",\n error_persisting_collection: \"Erreur lors de la sauvegarde de la collection : {{error}}\",\n details_in_console: \"Détails dans la console\",\n error_inferring_collection: \"Erreur lors de l'inférence de la collection : {{error}}\",\n collection_deleted: \"Collection supprimée\",\n data_imported_successfully_msg: \"Données importées avec succès\",\n must_specify_path: \"Vous devez spécifier un chemin dans la base de données pour cette collection\",\n collection_path_already_exists: \"Il existe déjà une collection avec le chemin spécifié. Si vous souhaitez avoir plusieurs collections avec le même chemin, assurez-vous qu'elles ont des ID différents\",\n collection_path_odd_segments: \"Les chemins de collection doivent avoir un nombre impair de segments : {{path}}\",\n collection_uses_path_as_id: \"Il existe déjà une collection qui utilise cette valeur comme chemin\",\n collection_uses_this_id: \"Il existe déjà une collection qui utilise cet ID\",\n delete_stored_config: \"Supprimer la configuration enregistrée ?\",\n delete_stored_config_body: \"Cela ne supprimera aucune donnée, uniquement la configuration enregistrée, et restaurera l'état du code.\",\n order_label: \"Ordre\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Sélectionnez une propriété pour la modifier\",\n add_first_property: \"Vous pouvez maintenant ajouter votre première propriété\",\n add_new_property: \"Ajouter une nouvelle propriété\",\n no_permission_add_properties: \"Vous n'avez pas la permission d'ajouter de nouvelles propriétés\",\n get_code_for_collection: \"Obtenir le code de cette collection\",\n add_properties_from_data: \"Ajouter de nouvelles propriétés basées sur les données\",\n collection_name_placeholder: \"Nom de la collection\",\n created_by: \"Créé par {{name}}\",\n property_defined_as_builder: \"Cette propriété est définie comme un property builder dans le code\",\n\n // Extend Settings\n extend_title: \"Extension\",\n extend_description: \"Ajoutez des sous-collections, des vues personnalisées et des actions d’entité à cette collection.\",\n collection_defined_in_code: \"Cette collection est définie dans le code. Les modifications effectuées dans cet éditeur remplaceront les propriétés définies dans le code. Vous pouvez supprimer les valeurs remplacées pour revenir à l'état défini dans le code.\",\n reset_to_code: \"Réinitialiser au code\",\n\n widget_group_text: \"Texte\",\n widget_group_boolean: \"Booléen\",\n widget_group_users: \"Utilisateurs\",\n widget_group_select: \"Sélection\",\n widget_group_number: \"Nombre\",\n widget_group_file: \"Fichier\",\n widget_group_reference: \"Référence\",\n widget_group_date: \"Date\",\n widget_group_group: \"Groupe\",\n widget_group_array: \"Liste\"\n};\n","export const collectionEditorTranslationsIt = {\n file_upload_config: \"Configurazione caricamento file\",\n file_type_images: \"Immagini\",\n file_type_videos: \"Video\",\n file_type_audio: \"File audio\",\n file_type_applications: \"File (pdf, zip, csv, excel...)\",\n file_type_text: \"File di testo\",\n only: \"Solo\",\n all_file_types_allowed: \"Tutti i tipi di file consentiti\",\n allowed_file_types: \"Tipi di file consentiti\",\n file_name_label: \"Nome del file\",\n storage_path_label: \"Percorso di archiviazione\",\n storage_placeholders_description: \"Puoi utilizzare i seguenti segnaposto nei valori del nome file e del percorso di archiviazione:\",\n storage_placeholder_file: \"{file} - Nome completo del file caricato\",\n storage_placeholder_file_name: \"{file.name} - Nome del file caricato senza estensione\",\n storage_placeholder_file_ext: \"{file.ext} - Estensione del file caricato\",\n storage_placeholder_entity_id: \"{entityId} - ID dell'entità\",\n storage_placeholder_property_key: \"{propertyKey} - ID di questo campo\",\n storage_placeholder_path: \"{path} - Percorso di questa entità\",\n storage_placeholder_rand: \"{rand} - Valore casuale per evitare conflitti di nomi\",\n include_bucket_url: \"Includi URL del bucket (gs://...) nel valore salvato\",\n include_bucket_url_description: \"Attiva questa impostazione se desideri salvare un URL di archiviazione completo (es. gs://mio-bucket/percorso/al/file) invece del solo percorso di archiviazione. Puoi modificare questa impostazione solo alla creazione.\",\n save_url_instead_of_path: \"Salva URL invece del percorso di archiviazione\",\n save_url_description: \"Attiva questa impostazione se preferisci salvare l'URL di download del file caricato invece del percorso di archiviazione. Puoi modificare questa impostazione solo alla creazione.\",\n max_size_bytes: \"Dimensione massima (in byte)\",\n image_resize_configuration: \"Configurazione ridimensionamento immagine\",\n image_resize_description: \"Ridimensiona e ottimizza automaticamente le immagini prima del caricamento (solo JPEG, PNG, WebP)\",\n max_width_px: \"Larghezza max (px)\",\n max_height_px: \"Altezza max (px)\",\n resize_mode: \"Modalità ridimensionamento\",\n resize_contain: \"Contenere\",\n resize_contain_description: \"Contenere (adatta ai limiti)\",\n resize_cover: \"Coprire\",\n resize_cover_description: \"Coprire (riempi i limiti, può ritagliare)\",\n output_format: \"Formato di output\",\n format_original: \"Originale\",\n format_original_description: \"Originale (mantieni lo stesso formato)\",\n format_webp_description: \"WebP (migliore compressione)\",\n quality_label: \"Qualità (0–100)\",\n quality_hint: \"Qualità superiore = file più grande. Consigliato: 80–90 per foto, 90–100 per grafica\",\n preview_type: \"Tipo anteprima\",\n preview_image: \"Immagine\",\n preview_video: \"Video\",\n preview_audio: \"Audio\",\n display_url: \"Mostra URL\",\n default_value_not_set: \"Valore predefinito non impostato\",\n default_value_is: \"Il valore predefinito è {{value}}\",\n default_value_was_cleared: \"Il valore predefinito è stato rimosso\",\n enum_missing_values: \"Questa proprietà enum è incompleta\",\n mode_label: \"Modalità\",\n date_time_mode: \"Data/Ora\",\n date_mode: \"Data\",\n automatic_value: \"Valore automatico\",\n auto_on_create: \"Alla creazione\",\n auto_on_update: \"Ad ogni aggiornamento\",\n auto_none: \"Nessuno\",\n auto_value_description: \"Aggiorna questo campo automaticamente alla creazione o aggiornamento dell'entità\",\n timezone_label: \"Fuso orario\",\n local_timezone: \"Fuso orario locale\",\n timezone_description: \"Fuso orario per la visualizzazione e l'inserimento delle date. I valori sono sempre memorizzati in UTC.\",\n target_collection: \"Collezione di destinazione\",\n views_group: \"Viste\",\n add_property_to: \"Aggiungi proprietà a {{name}}\",\n add_first_property_to_group: \"Aggiungi la prima proprietà a questo gruppo\",\n spread_children_as_columns: \"Espandi figli come colonne\",\n spread_children_description: \"Attiva questa opzione se desideri visualizzare i figli di questo gruppo come colonne individuali. Funziona solo per i gruppi di primo livello.\",\n paste_behavior: \"Comportamento incolla\",\n strip_html_on_paste: \"Rimuovi HTML all'incolla\",\n strip_html_description: \"Rimuovi tag HTML e stili inline quando incolli contenuti da fonti esterne\",\n convert_pasted_to_markdown: \"Converti testo incollato in markdown\",\n convert_pasted_description: \"Converti testo formattato (da Google Docs, Word, ecc.) in formato markdown pulito\",\n markdown_url_note: \"Quando si utilizza Markdown, gli URL dei file caricati vengono sempre salvati nel valore testo (non il percorso).\",\n hide_from_collection: \"Nascondi dalla collezione\",\n hide_from_collection_tooltip: \"Nascondi questo campo dalla vista collezione. Sarà comunque visibile nella vista modulo\",\n read_only: \"Sola lettura\",\n read_only_tooltip: \"Questo è un campo di sola lettura. Visualizza solo come anteprima\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Consenti di impostare esplicitamente questo campo su null. All'utente verrà mostrato un pulsante di cancellazione\",\n tab_general: \"Generale\",\n tab_display: \"Visualizzazione\",\n tab_properties: \"Proprietà\",\n tab_extend: \"Estendi\",\n unsaved_changes_in_collection: \"Ci sono modifiche non salvate in questa collezione\",\n error_persisting_collection: \"Errore nel salvataggio della collezione: {{error}}\",\n details_in_console: \"Dettagli nella console\",\n error_inferring_collection: \"Errore nell'inferenza della collezione: {{error}}\",\n collection_deleted: \"Collezione eliminata\",\n data_imported_successfully_msg: \"Dati importati con successo\",\n must_specify_path: \"Devi specificare un percorso nel database per questa collezione\",\n collection_path_already_exists: \"Esiste già una collezione con il percorso specificato. Se desideri avere più collezioni con lo stesso percorso, assicurati che abbiano ID diversi\",\n collection_path_odd_segments: \"I percorsi delle collezioni devono avere un numero dispari di segmenti: {{path}}\",\n collection_uses_path_as_id: \"Esiste già una collezione che utilizza questo valore come percorso\",\n collection_uses_this_id: \"Esiste già una collezione che utilizza questo ID\",\n delete_stored_config: \"Eliminare la configurazione salvata?\",\n delete_stored_config_body: \"Questo non eliminerà alcun dato, solo la configurazione salvata, e ripristinerà lo stato del codice.\",\n order_label: \"Ordine\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Seleziona una proprietà per modificarla\",\n add_first_property: \"Ora puoi aggiungere la tua prima proprietà\",\n add_new_property: \"Aggiungi nuova proprietà\",\n no_permission_add_properties: \"Non hai i permessi per aggiungere nuove proprietà\",\n get_code_for_collection: \"Ottieni il codice di questa collezione\",\n add_properties_from_data: \"Aggiungi nuove proprietà basate sui dati\",\n collection_name_placeholder: \"Nome della collezione\",\n created_by: \"Creato da {{name}}\",\n property_defined_as_builder: \"Questa proprietà è definita come property builder nel codice\",\n\n // Extend Settings\n extend_title: \"Estendi\",\n extend_description: \"Aggiungi sotto-collezioni, viste personalizzate e azioni entità a questa collezione.\",\n collection_defined_in_code: \"Questa collezione è definita nel codice. Le modifiche effettuate in questo editor sovrascriveranno le proprietà definite nel codice. Puoi eliminare i valori sovrascritti per tornare allo stato definito nel codice.\",\n reset_to_code: \"Ripristina al codice\",\n\n widget_group_text: \"Testo\",\n widget_group_boolean: \"Booleano\",\n widget_group_users: \"Utenti\",\n widget_group_select: \"Selezione\",\n widget_group_number: \"Numero\",\n widget_group_file: \"File\",\n widget_group_reference: \"Riferimento\",\n widget_group_date: \"Data\",\n widget_group_group: \"Gruppo\",\n widget_group_array: \"Lista\"\n};\n","export const collectionEditorTranslationsHi = {\n file_upload_config: \"फ़ाइल अपलोड कॉन्फ़िगरेशन\",\n file_type_images: \"चित्र\",\n file_type_videos: \"वीडियो\",\n file_type_audio: \"ऑडियो फ़ाइलें\",\n file_type_applications: \"फ़ाइलें (pdf, zip, csv, excel...)\",\n file_type_text: \"टेक्स्ट फ़ाइलें\",\n only: \"केवल\",\n all_file_types_allowed: \"सभी फ़ाइल प्रकार अनुमत\",\n allowed_file_types: \"अनुमत फ़ाइल प्रकार\",\n file_name_label: \"फ़ाइल का नाम\",\n storage_path_label: \"स्टोरेज पथ\",\n storage_placeholders_description: \"आप फ़ाइल नाम और स्टोरेज पथ मानों में निम्नलिखित प्लेसहोल्डर्स का उपयोग कर सकते हैं:\",\n storage_placeholder_file: \"{file} - अपलोड की गई फ़ाइल का पूरा नाम\",\n storage_placeholder_file_name: \"{file.name} - एक्सटेंशन के बिना अपलोड की गई फ़ाइल का नाम\",\n storage_placeholder_file_ext: \"{file.ext} - अपलोड की गई फ़ाइल का एक्सटेंशन\",\n storage_placeholder_entity_id: \"{entityId} - इकाई की ID\",\n storage_placeholder_property_key: \"{propertyKey} - इस फ़ील्ड की ID\",\n storage_placeholder_path: \"{path} - इस इकाई का पथ\",\n storage_placeholder_rand: \"{rand} - नाम टकराव से बचने के लिए यादृच्छिक मूल्य\",\n include_bucket_url: \"सहेजे गए मान में बकेट URL (gs://...) शामिल करें\",\n include_bucket_url_description: \"यदि आप केवल स्टोरेज पथ के बजाय पूरी तरह से योग्य स्टोरेज URL (जैसे gs://my-bucket/path/to/file) सहेजना चाहते हैं तो इस सेटिंग को चालू करें। आप इसे केवल निर्माण के समय बदल सकते हैं।\",\n save_url_instead_of_path: \"स्टोरेज पथ के बजाय URL सहेजें\",\n save_url_description: \"यदि आप स्टोरेज पथ के बजाय अपलोड की गई फ़ाइल का डाउनलोड URL सहेजना पसंद करते हैं तो इस सेटिंग को चालू करें। आप इसे केवल निर्माण के समय बदल सकते हैं।\",\n max_size_bytes: \"अधिकतम आकार (बाइट में)\",\n image_resize_configuration: \"छवि आकार बदलने का कॉन्फ़िगरेशन\",\n image_resize_description: \"अपलोड से पहले स्वचालित रूप से छवियों का आकार बदलें और अनुकूलित करें (केवल JPEG, PNG, WebP)\",\n max_width_px: \"अधिकतम चौड़ाई (px)\",\n max_height_px: \"अधिकतम ऊंचाई (px)\",\n resize_mode: \"आकार बदलने का मोड\",\n resize_contain: \"समाहित करें\",\n resize_contain_description: \"समाहित करें (सीमाओं के भीतर फ़िट करें)\",\n resize_cover: \"कवर\",\n resize_cover_description: \"कवर (सीमाएँ भरें, काट सकता है)\",\n output_format: \"आउटपुट प्रारूप\",\n format_original: \"मूल\",\n format_original_description: \"मूल (समान प्रारूप रखें)\",\n format_webp_description: \"WebP (सर्वोत्तम संपीड़न)\",\n quality_label: \"गुणवत्ता (0–100)\",\n quality_hint: \"उच्च गुणवत्ता = बड़ा फ़ाइल आकार। अनुशंसित: फ़ोटो के लिए 80–90, ग्राफ़िक्स के लिए 90–100\",\n preview_type: \"पूर्वावलोकन प्रकार\",\n preview_image: \"छवि\",\n preview_video: \"वीडियो\",\n preview_audio: \"ऑडियो\",\n display_url: \"URL दिखाएँ\",\n default_value_not_set: \"डिफ़ॉल्ट मान सेट नहीं है\",\n default_value_is: \"डिफ़ॉल्ट मान {{value}} है\",\n default_value_was_cleared: \"डिफ़ॉल्ट मान हटा दिया गया\",\n enum_missing_values: \"इस enum प्रॉपर्टी में कुछ मान अनुपस्थित हैं\",\n mode_label: \"मोड\",\n date_time_mode: \"दिनांक/समय\",\n date_mode: \"दिनांक\",\n automatic_value: \"स्वचालित मान\",\n auto_on_create: \"निर्माण पर\",\n auto_on_update: \"किसी भी अपडेट पर\",\n auto_none: \"कोई नहीं\",\n auto_value_description: \"इकाई बनाते या अपडेट करते समय इस फ़ील्ड को स्वचालित रूप से अपडेट करें\",\n timezone_label: \"समय क्षेत्र\",\n local_timezone: \"स्थानीय समय क्षेत्र\",\n timezone_description: \"तारीखों को प्रदर्शित और इनपुट करने के लिए समय क्षेत्र। मान हमेशा UTC में संग्रहीत होते हैं।\",\n target_collection: \"लक्ष्य संग्रह\",\n views_group: \"दृश्य\",\n add_property_to: \"{{name}} में प्रॉपर्टी जोड़ें\",\n add_first_property_to_group: \"इस समूह में पहली प्रॉपर्टी जोड़ें\",\n spread_children_as_columns: \"बच्चों को कॉलम के रूप में फैलाएँ\",\n spread_children_description: \"यदि आप इस समूह के बच्चों को व्यक्तिगत कॉलम के रूप में प्रदर्शित करना चाहते हैं तो इसे चालू करें। यह केवल शीर्ष स्तर के समूहों के लिए काम करता है।\",\n paste_behavior: \"पेस्ट व्यवहार\",\n strip_html_on_paste: \"पेस्ट करते समय HTML हटाएँ\",\n strip_html_description: \"बाहरी स्रोतों से सामग्री पेस्ट करते समय HTML टैग और इनलाइन स्टाइल हटाएँ\",\n convert_pasted_to_markdown: \"पेस्ट किए गए टेक्स्ट को markdown में बदलें\",\n convert_pasted_description: \"रिच टेक्स्ट (Google Docs, Word, आदि से) को साफ़ markdown प्रारूप में बदलें\",\n markdown_url_note: \"Markdown का उपयोग करते समय, अपलोड की गई फ़ाइलों का URL हमेशा टेक्स्ट मान में सहेजा जाता है (पथ नहीं)।\",\n hide_from_collection: \"संग्रह से छिपाएँ\",\n hide_from_collection_tooltip: \"इस फ़ील्ड को संग्रह दृश्य से छिपाएँ। यह फ़ॉर्म दृश्य में अभी भी दिखाई देगा\",\n read_only: \"केवल पढ़ने के लिए\",\n read_only_tooltip: \"क्या यह फ़ील्ड केवल पढ़ने के लिए है। केवल पूर्वावलोकन के रूप में प्रदर्शित करें\",\n nullable: \"Nullable\",\n nullable_tooltip: \"इस फ़ील्ड को स्पष्ट रूप से null पर सेट करने की अनुमति दें। उपयोगकर्ता को एक क्लियर बटन दिखाया जाएगा\",\n tab_general: \"सामान्य\",\n tab_display: \"प्रदर्शन\",\n tab_properties: \"प्रॉपर्टीज़\",\n tab_extend: \"विस्तार\",\n unsaved_changes_in_collection: \"इस संग्रह में असहेजे परिवर्तन हैं\",\n error_persisting_collection: \"संग्रह सहेजने में त्रुटि: {{error}}\",\n details_in_console: \"कंसोल में विवरण\",\n error_inferring_collection: \"संग्रह अनुमान में त्रुटि: {{error}}\",\n collection_deleted: \"संग्रह हटाया गया\",\n data_imported_successfully_msg: \"डेटा सफलतापूर्वक आयातित\",\n must_specify_path: \"आपको इस संग्रह के लिए डेटाबेस में एक पथ निर्दिष्ट करना होगा\",\n collection_path_already_exists: \"निर्दिष्ट पथ के साथ पहले से ही एक संग्रह है। यदि आप एक ही डेटाबेस पथ के साथ कई संग्रह चाहते हैं, तो सुनिश्चित करें कि उनकी अलग-अलग ID हों\",\n collection_path_odd_segments: \"संग्रह पथों में विषम संख्या में खंड होने चाहिए: {{path}}\",\n collection_uses_path_as_id: \"पहले से ही एक संग्रह है जो इस मान को पथ के रूप में उपयोग करता है\",\n collection_uses_this_id: \"पहले से ही एक संग्रह है जो इस ID का उपयोग करता है\",\n delete_stored_config: \"सहेजा गया कॉन्फ़िगरेशन हटाएँ?\",\n delete_stored_config_body: \"यह कोई डेटा नहीं हटाएगा, केवल सहेजा गया कॉन्फ़िगरेशन, और कोड स्थिति में रीसेट करेगा।\",\n order_label: \"क्रम\",\n\n // Collection Properties Editor\n select_property_to_edit: \"संपादित करने के लिए एक प्रॉपर्टी चुनें\",\n add_first_property: \"अब आप अपनी पहली प्रॉपर्टी जोड़ सकते हैं\",\n add_new_property: \"नई प्रॉपर्टी जोड़ें\",\n no_permission_add_properties: \"आपको नई प्रॉपर्टीज़ जोड़ने की अनुमति नहीं है\",\n get_code_for_collection: \"इस संग्रह का कोड प्राप्त करें\",\n add_properties_from_data: \"डेटा के आधार पर नई प्रॉपर्टीज़ जोड़ें\",\n collection_name_placeholder: \"संग्रह का नाम\",\n created_by: \"{{name}} द्वारा बनाया गया\",\n property_defined_as_builder: \"यह प्रॉपर्टी कोड में property builder के रूप में परिभाषित है\",\n\n // Extend Settings\n extend_title: \"विस्तार\",\n extend_description: \"इस संग्रह में उप-संग्रह, कस्टम दृश्य और इकाई क्रियाएँ जोड़ें।\",\n collection_defined_in_code: \"यह संग्रह कोड में परिभाषित है। इस संपादक में किए गए परिवर्तन कोड में परिभाषित प्रॉपर्टीज़ को ओवरराइड करेंगे। आप ओवरराइड किए गए मानों को हटाकर कोड में परिभाषित स्थिति पर वापस जा सकते हैं।\",\n reset_to_code: \"कोड पर रीसेट करें\",\n\n widget_group_text: \"टेक्स्ट\",\n widget_group_boolean: \"बूलियन\",\n widget_group_users: \"उपयोगकर्ता\",\n widget_group_select: \"चयन\",\n widget_group_number: \"संख्या\",\n widget_group_file: \"फ़ाइल\",\n widget_group_reference: \"संदर्भ\",\n widget_group_date: \"दिनांक\",\n widget_group_group: \"समूह\",\n widget_group_array: \"सूची\"\n};\n","export const collectionEditorTranslationsPt = {\n file_upload_config: \"Configuração de upload de arquivo\",\n file_type_images: \"Imagens\",\n file_type_videos: \"Vídeos\",\n file_type_audio: \"Arquivos de áudio\",\n file_type_applications: \"Arquivos (pdf, zip, csv, excel...)\",\n file_type_text: \"Arquivos de texto\",\n only: \"Apenas\",\n all_file_types_allowed: \"Todos os tipos de arquivo permitidos\",\n allowed_file_types: \"Tipos de arquivo permitidos\",\n file_name_label: \"Nome do arquivo\",\n storage_path_label: \"Caminho de armazenamento\",\n storage_placeholders_description: \"Você pode usar os seguintes marcadores nos valores do nome do arquivo e do caminho de armazenamento:\",\n storage_placeholder_file: \"{file} - Nome completo do arquivo enviado\",\n storage_placeholder_file_name: \"{file.name} - Nome do arquivo enviado sem extensão\",\n storage_placeholder_file_ext: \"{file.ext} - Extensão do arquivo enviado\",\n storage_placeholder_entity_id: \"{entityId} - ID da entidade\",\n storage_placeholder_property_key: \"{propertyKey} - ID deste campo\",\n storage_placeholder_path: \"{path} - Caminho desta entidade\",\n storage_placeholder_rand: \"{rand} - Valor aleatório para evitar colisões de nomes\",\n include_bucket_url: \"Incluir URL do bucket (gs://...) no valor salvo\",\n include_bucket_url_description: \"Ative esta configuração se deseja salvar uma URL de armazenamento completa (ex. gs://meu-bucket/caminho/para/arquivo) em vez de apenas o caminho de armazenamento. Você só pode alterar esta configuração na criação.\",\n save_url_instead_of_path: \"Salvar URL em vez do caminho de armazenamento\",\n save_url_description: \"Ative esta configuração se preferir salvar a URL de download do arquivo enviado em vez do caminho de armazenamento. Você só pode alterar esta configuração na criação.\",\n max_size_bytes: \"Tamanho máximo (em bytes)\",\n image_resize_configuration: \"Configuração de redimensionamento de imagem\",\n image_resize_description: \"Redimensionar e otimizar imagens automaticamente antes do upload (apenas JPEG, PNG, WebP)\",\n max_width_px: \"Largura máx (px)\",\n max_height_px: \"Altura máx (px)\",\n resize_mode: \"Modo de redimensionamento\",\n resize_contain: \"Conter\",\n resize_contain_description: \"Conter (ajustar dentro dos limites)\",\n resize_cover: \"Cobrir\",\n resize_cover_description: \"Cobrir (preencher limites, pode cortar)\",\n output_format: \"Formato de saída\",\n format_original: \"Original\",\n format_original_description: \"Original (manter mesmo formato)\",\n format_webp_description: \"WebP (melhor compressão)\",\n quality_label: \"Qualidade (0–100)\",\n quality_hint: \"Maior qualidade = arquivo maior. Recomendado: 80–90 para fotos, 90–100 para gráficos\",\n preview_type: \"Tipo de pré-visualização\",\n preview_image: \"Imagem\",\n preview_video: \"Vídeo\",\n preview_audio: \"Áudio\",\n display_url: \"Exibir URL\",\n default_value_not_set: \"Valor padrão não definido\",\n default_value_is: \"O valor padrão é {{value}}\",\n default_value_was_cleared: \"O valor padrão foi removido\",\n enum_missing_values: \"Esta propriedade enum está com valores faltando\",\n mode_label: \"Modo\",\n date_time_mode: \"Data/Hora\",\n date_mode: \"Data\",\n automatic_value: \"Valor automático\",\n auto_on_create: \"Na criação\",\n auto_on_update: \"Em qualquer atualização\",\n auto_none: \"Nenhum\",\n auto_value_description: \"Atualizar este campo automaticamente ao criar ou atualizar a entidade\",\n timezone_label: \"Fuso horário\",\n local_timezone: \"Fuso horário local\",\n timezone_description: \"Fuso horário para exibir e inserir datas. Os valores são sempre armazenados em UTC.\",\n target_collection: \"Coleção alvo\",\n views_group: \"Visualizações\",\n add_property_to: \"Adicionar propriedade a {{name}}\",\n add_first_property_to_group: \"Adicione a primeira propriedade a este grupo\",\n spread_children_as_columns: \"Expandir filhos como colunas\",\n spread_children_description: \"Ative esta opção se deseja exibir os filhos deste grupo como colunas individuais. Isso só funciona para grupos de nível superior.\",\n paste_behavior: \"Comportamento ao colar\",\n strip_html_on_paste: \"Remover HTML ao colar\",\n strip_html_description: \"Remover tags HTML e estilos inline ao colar conteúdo de fontes externas\",\n convert_pasted_to_markdown: \"Converter texto colado em markdown\",\n convert_pasted_description: \"Converter texto rico (do Google Docs, Word, etc.) em formato markdown limpo\",\n markdown_url_note: \"Ao usar Markdown, as URLs dos arquivos enviados são sempre salvas no valor de texto (não o caminho).\",\n hide_from_collection: \"Ocultar da coleção\",\n hide_from_collection_tooltip: \"Ocultar este campo da visualização da coleção. Ele ainda estará visível na visualização do formulário\",\n read_only: \"Somente leitura\",\n read_only_tooltip: \"Este é um campo somente leitura. Exibir apenas como pré-visualização\",\n nullable: \"Nullable\",\n nullable_tooltip: \"Permitir que este campo seja explicitamente definido como null. Um botão de limpar será exibido ao usuário\",\n tab_general: \"Geral\",\n tab_display: \"Exibição\",\n tab_properties: \"Propriedades\",\n tab_extend: \"Estender\",\n unsaved_changes_in_collection: \"Existem alterações não salvas nesta coleção\",\n error_persisting_collection: \"Erro ao salvar a coleção: {{error}}\",\n details_in_console: \"Detalhes no console\",\n error_inferring_collection: \"Erro ao inferir a coleção: {{error}}\",\n collection_deleted: \"Coleção excluída\",\n data_imported_successfully_msg: \"Dados importados com sucesso\",\n must_specify_path: \"Você deve especificar um caminho no banco de dados para esta coleção\",\n collection_path_already_exists: \"Já existe uma coleção com o caminho especificado. Se deseja ter múltiplas coleções com o mesmo caminho de banco de dados, certifique-se de que tenham IDs diferentes\",\n collection_path_odd_segments: \"Os caminhos de coleção devem ter um número ímpar de segmentos: {{path}}\",\n collection_uses_path_as_id: \"Já existe uma coleção que usa este valor como caminho\",\n collection_uses_this_id: \"Já existe uma coleção que usa este ID\",\n delete_stored_config: \"Excluir a configuração salva?\",\n delete_stored_config_body: \"Isso não excluirá nenhum dado, apenas a configuração salva, e restaurará ao estado do código.\",\n order_label: \"Ordem\",\n\n // Collection Properties Editor\n select_property_to_edit: \"Selecione uma propriedade para editá-la\",\n add_first_property: \"Agora você pode adicionar sua primeira propriedade\",\n add_new_property: \"Adicionar nova propriedade\",\n no_permission_add_properties: \"Você não tem permissão para adicionar novas propriedades\",\n get_code_for_collection: \"Obter o código desta coleção\",\n add_properties_from_data: \"Adicionar novas propriedades com base nos dados\",\n collection_name_placeholder: \"Nome da coleção\",\n created_by: \"Criado por {{name}}\",\n property_defined_as_builder: \"Esta propriedade está definida como um property builder no código\",\n\n // Extend Settings\n extend_title: \"Estender\",\n extend_description: \"Adicione subcoleções, visualizações personalizadas e ações de entidade a esta coleção.\",\n collection_defined_in_code: \"Esta coleção está definida no código. As alterações feitas neste editor substituirão as propriedades definidas no código. Você pode excluir os valores substituídos para voltar ao estado definido no código.\",\n reset_to_code: \"Restaurar ao código\",\n\n widget_group_text: \"Texto\",\n widget_group_boolean: \"Booleano\",\n widget_group_users: \"Usuários\",\n widget_group_select: \"Seleção\",\n widget_group_number: \"Número\",\n widget_group_file: \"Arquivo\",\n widget_group_reference: \"Referência\",\n widget_group_date: \"Data\",\n widget_group_group: \"Grupo\",\n widget_group_array: \"Lista\"\n};\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User, useTranslation } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionGenerationCallback } from \"./api/generateCollectionApi\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\nimport { EditorEntityAction } from \"./ui/EditorEntityAction\";\nimport { KanbanSetupAction } from \"./ui/KanbanSetupAction\";\nimport { AddKanbanColumnAction } from \"./ui/AddKanbanColumnAction\";\nimport { collectionEditorTranslationsEn } from \"./locales/en\";\nimport { collectionEditorTranslationsEs } from \"./locales/es\";\nimport { collectionEditorTranslationsDe } from \"./locales/de\";\nimport { collectionEditorTranslationsFr } from \"./locales/fr\";\nimport { collectionEditorTranslationsIt } from \"./locales/it\";\nimport { collectionEditorTranslationsHi } from \"./locales/hi\";\nimport { collectionEditorTranslationsPt } from \"./locales/pt\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n collectionInference?: CollectionInference;\n\n pathSuggestions?: string[];\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n includeIntroView?: boolean;\n\n /**\n * Callback function for generating/modifying collections.\n * The plugin is API-agnostic - the consumer provides the implementation.\n */\n generateCollection?: CollectionGenerationCallback;\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n ({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n includeIntroView = true,\n pathSuggestions,\n generateCollection\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getUser,\n getData,\n onAnalyticsEvent,\n pathSuggestions,\n generateCollection\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton />,\n additionalChildrenStart: includeIntroView ? <IntroWidget /> : undefined,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n allowDragAndDrop: true,\n navigationEntries: collectionConfigController.navigationEntries,\n onNavigationEntriesUpdate: collectionConfigController.saveNavigationEntries,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent,\n onColumnsReorder: collectionConfigController.updatePropertiesOrder,\n onKanbanColumnsReorder: collectionConfigController.updateKanbanColumnsOrder,\n KanbanSetupComponent: KanbanSetupAction,\n AddKanbanColumnComponent: AddKanbanColumnAction\n },\n form: {\n ActionsTop: EditorEntityAction,\n },\n i18n: {\n en: collectionEditorTranslationsEn,\n es: collectionEditorTranslationsEs,\n de: collectionEditorTranslationsDe,\n fr: collectionEditorTranslationsFr,\n it: collectionEditorTranslationsIt,\n hi: collectionEditorTranslationsHi,\n pt: collectionEditorTranslationsPt\n }\n };\n}\n\nexport function IntroWidget() {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n const { t } = useTranslation();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>{t(\"no_collections_found\")}</Typography>\n <Typography>\n {t(\"start_building_collections\")}\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon />{t(\"create_first_collection\")}\n </Button>}\n <Typography color={\"secondary\"}>\n {t(\"define_collections_programmatically\")}\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[] = [],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n\n backendCollections.forEach(markAsEditable);\n\n const result = joinCollectionLists(baseCollections, backendCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => {\n const indexA = baseCollections.findIndex(c => c.id === a.id);\n const indexB = baseCollections.findIndex(c => c.id === b.id);\n\n if (indexA === -1 && indexB === -1) {\n return 0; // Keep original order for items not in baseCollections\n }\n if (indexA === -1) {\n return 1; // a is not in base, so it goes to the end\n }\n if (indexB === -1) {\n return -1; // b is not in base, so it goes to the end\n }\n return indexA - indexB;\n });\n\n return result;\n}\n","import { ErrorView, prettifyIdentifier, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: prettifyIdentifier(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","GeneralSettingsForm","t0","$","_c","isNewCollection","parentCollection","values","setFieldValue","handleChange","touched","errors","setFieldTouched","submitCount","useFormex","iconDialogOpen","setIconDialogOpen","useState","useAuthController","useCustomizationController","t","useTranslation","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","IconForView","collectionIcon","isSubcollection","showErrors","t4","t5","t6","Typography","t7","t8","t9","Symbol","for","t10","IconButton","t11","Tooltip","t12","t13","Chip","jsxs","jsx","t14","t15","t16","e","target","value","t17","t18","Boolean","t19","TextField","t20","t21","t22","FieldCaption","t23","t24","cls","t25","t26","t27","Field","DebouncedTextField","t28","t29","t30","t31","t32","singularName","t33","e_0","t34","t35","t36","t37","t38","t39","t40","t41","description","t42","t43","t44","t45","t46","t47","t48","t49","t50","t51","t52","t53","t54","t55","t56","t57","t58","v","t59","collectionGroup","t60","BooleanSwitchWithLabel","t61","t62","t63","t64","t65","t66","t67","HistoryIcon","t68","history","t69","t70","v_0","t71","t72","t73","t74","t75","t76","t77","customId","t78","v_1","Error","t79","t80","t81","t82","SelectItem","t83","t84","t85","t86","t87","Select","t88","t89","t90","t91","SearchIcon","t92","t93","t94","v_2","t95","textSearchEnabled","t96","t97","t98","t99","t100","ExpandablePanel","t101","height","t102","icon","t103","t104","SearchIconsView","t105","Dialog","t106","Container","DefaultDatabaseField","onDatabaseIdUpdate","LayoutModeSwitch","onChange","className","VerticalSplitIcon","label","SquareIcon","ToggleButtonGroup","ViewModeSwitch","ListIcon","AppsIcon","ViewKanbanIcon","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","index","hasError","Object","keys","length","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","useEffect","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","React","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","useRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","console","warn","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","filter","some","enumValue_0","add","catch","_temp","finally","inferValues","Button","CircularProgress","FindInPageIcon","ArrayContainer","Paper","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","colorValue","getColorSchemeForKey","getColorSchemeForSeed","String","colorScheme","color","Fragment","backgroundColor","Badge","SettingsIcon","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","ColorPicker","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","children","RuleIcon","EnumPropertyField","multiselect","propertyNamespace","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","map","includes","type","message","fullPropertyPath","res","entry","toString","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","includeBucketUrl","imageResize","imageResizeMaxWidth","imageResizeMaxHeight","imageResizeMode","imageResizeFormat","imageResizeQuality","fileNameValue","storagePathValue","T0","T1","maxSizeValue","imageResizeMaxWidthValue","imageResizeMaxHeightValue","imageResizeModeValue","imageResizeFormatValue","imageResizeQualityValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","T2","hasFilenameCallback","hasStoragePathCallback","fileTypes","handleTypesChange","CloudUploadIcon","MultiSelect","selected","join","value_0","MultiSelectItem","preventDefault","stopPropagation","entries","value_1","parseInt","e_1","value_2","e_2","value_3","value_4","selected_0","value_5","selected_1","charAt","toUpperCase","slice","e_3","value_6","numValue","editableProperty","property","isPropertyBuilder","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","getFieldConfig","propertyConfig","borderColorClass","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","getFullIdPath","keyWithNamespace","AIModifiedPathsContext","createContext","AIModifiedPathsProvider","modifiedPaths","setModifiedPaths","generationCounter","setGenerationCounter","operations","prev","newSet","op","parts","split","addModifiedPaths","prev_1","newSet_0","p","startsWith","delete","clearPath","clearAllPaths","path_0","p_0","isPathModified","prev_0","useAIModifiedPaths","useContext","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","propertyKeys","filteredOrder","missingKeys","key_0","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","handleDragEnd","event","active","over","activeId","overId","activeKey","pop","overKey","oldIndex","indexOf","newIndex","newPropertiesOrder","removed","splice","items","key_1","DndContext","closestCenter","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","additionalField","find","PropertyTreeEntry","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Translate","zIndex","position","style","isPropertyInferred","fullId","fullIdPath","subtree","aiModifiedPaths","isAIModified","defaultBorderMixin","left","top","bottom","AIModifiedIndicator","DeleteIcon","MoreVertIcon","currentIndex","newOrder","k","unshift","VerticalAlignTopIcon","MenuItem","currentIndex_0","newOrder_0","k_0","push","VerticalAlignBottomIcon","Menu","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","ref","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","prettifyIdentifier","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","asString","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","groups","ungroupedCollections","_temp2","selectedCollection","collection","flatMap","group","SelectGroup","collection_0","collection_1","_temp3","collection_2","col","TIMEZONES","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","timezoneValue","timezoneError","modePath","autoValuePath","v_3","v_4","tz","t_0","timezonePath","tz_0","AdvancedPropertyValidation","hideFromCollection","readOnly","nullable","ConditionsPanel","getPropertyPaths","prefix","paths","fullPath","nestedPaths","ofPropertyOrBuilder","CONDITION_TYPES","OPERATORS","valueType","applicableTo","CONTEXT_FIELDS","getPropertyAtPath","fieldPath","collectionProperties","part","getFieldDataType","contextField","f","getEnumValues","getOperatorsForDataType","applicable","ConditionValueInput","operator","newValue","ev","ConditionRow","rule","onRuleChange","onRemove","availableFields","showRemoveButton","fieldDataType","showValueField","applicableOperators","isFieldMissing","isValueMissing","prop","config","DEFAULT_FIELD_CONFIGS","getFieldColor","newDataType","newApplicableOps","newOperator","op_0","prop_0","hasEnum","op_1","ConditionGroupRow","conditionType","onGroupChange","logic","handleLogicChange","newRules","rules","handleRuleChange","index_0","newRules_0","i","handleRemoveRule","defaultRule","handleAddRule","ct","rule_0","index_1","newRule","simpleRuleToJsonLogic","var","varRef","fieldVar","parsedValue","isNaN","Number","s","jsonLogicToSimpleRule","jsonLogic","args","inArgs","in","right","replace","varObj","groupToJsonLogic","ruleLogics","groupLogics","g","allLogics","jsonLogicToGroup","arg","nestedOperator","nestedGroup","ConditionsEditor","conditions","log","activeConditions","defaultGroup","jsonLogic_0","handleAddCondition","type_0","group_0","jsonLogic_1","handleGroupChange","type_1","newConditions","handleRemoveCondition","availableConditionTypes","type_2","group_1","newGroup","_temp4","ct_0","ENUM_CONDITION_TYPES","getCurrentPropertyEnumValues","getFieldEnumValues","arrayToObject","arr","result","buildEnumFilterRule","allEnumIds","condition","selectedEnumIds","objectToArray","obj","every","sort","parseEnumFilterRule","ifRule","selectedEnumIdsRaw","conditionObj","EnumConditionRow","onConfigChange","propertyEnumValues","selectedFieldProperty","isBoolean","fieldEnumValues","isEnumSelectionMissing","ev_0","EnumConditionsEditor","bb0","_temp5","defaultConfig","config_0","rule_1","handleConfigChange","config_1","newConfig","_temp6","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","userSelect","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","MarkdownPropertyField","markdownValue","isMarkdownObject","htmlValue","html","transformPastedTextValue","transformPastedText","currentMarkdown","updateMarkdownConfig","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","id_0","property_1","resetForm","validateName","keysToCheck","validateId","isValidRegExp","conditionErrors","conditionTypes","isIncompleteRule","ruleStr","JSON","stringify","enumType","if","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","InfoLabel","hasValue","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","user_select","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","reference_as_string","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","groupKey","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","key_2","propertyConfig_2","groupKey_0","translatedGroup","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","Card","KanbanConfigSection","forceExpanded","authController","customizationController","panelRef","columnPropertyDialogOpen","setColumnPropertyDialogOpen","resolvedCollection","resolveCollection","enumStringProperties","kanbanConfig","kanban","columnPropertyMissing","columnProperty","scrollIntoView","behavior","showCreateButton","dialogPropertyKey","dialogPropertyName","unslugify","fieldConfig","CloseIcon","newProperties","DisplaySettingsForm","expandKanban","orderPropertyDialogOpen","setOrderPropertyDialogOpen","numberProperties","openEntityMode","defaultViewMode","orderPropertyMissing","orderProperty","defaultSize","sideDialogWidth","inlineEditing","includeJsonView","camelCase","str","toLowerCase","substring","GetCodeDialog","snackbarController","format","setFormat","tsCode","collectionData","collectionToCode","JSON5","jsonCode","code","Tab","Tabs","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","tokens","getLineProps","getTokenProps","line","token","propertyCleanup","valueCopy","clone","isEmptyObject","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","reservedGroups","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","debug","newCollection","makePropertiesEditable","findNewPropertyKeys","existingProps","newProps","fullKey","existingProp","newProp","existingMapProps","addNewPropertiesOnly","updatedProperties","allNewPropertyKeys","newTopLevelPropertyKeys","allExistingKeys","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","embedded","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","Alert","view_0","content","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","EntityActionsSelectDialog","entityActions","action","EntityActionsEditTab","contextEntityActions","addEntityActionDialogOpen","setAddEntityActionDialogOpen","actionToDelete","setActionToDelete","resolvedEntityActions","resolveEntityAction","hardCodedEntityActions","totalEntityActions","action_0","selectedActionKey","action_1","ExtendSettingsForm","isMergedCollection","onResetToCode","VALID_DATA_TYPES","validateProperty","ofProp","validateProperties","validateOptionalFields","stringFields","booleanFields","item","sub","subErrors","validateCollectionObject","err","validViewModes","validateCollectionJson","jsonString","parsed","parse","lines","column","valid","EXAMPLE_JSON","CollectionJsonImportDialog","onImport","jsonValue","setJsonValue","setErrors","setTouched","handleJsonChange","result_0","handleImport","handleClose","isValid","productsCollectionTemplate","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","useCollectionEditorController","CollectionEditorContext","CollectionGenerationApiError","constructor","DEFAULT_COLLECTION_GENERATION_ENDPOINT","buildCollectionGenerationCallback","getAuthToken","apiEndpoint","request","response","fetch","method","headers","Authorization","ok","errorData","json","AICollectionGeneratorPopover","existingCollection","onGenerated","generateCollection","trigger","showLabel","onAnalyticsEvent","menuOpen","setMenuOpen","prompt","setPrompt","loading","setLoading","setError","existingCollections","handleGenerate","collectionsContext","c","operationsCount","errorMessage","handleKeyDown","shiftKey","defaultTrigger","AIIcon","CollectionEditorWelcomeView","onContinue","existingCollectionPaths","pathSuggestions","filteredSuggestions","jsonImportOpen","setJsonImportOpen","suggestion","generatedCollection","ImportFileUpload","Icon","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","acc","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","CollectionEditor","topLevelNavigation","initialValuesProp","copyFromProp","copyFrom","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","user","uid","coolIconKeys","Math","floor","random","CollectionEditorInternal","extraView","existingEntities","initialView","initialViewProp","useImportConfig","currentView","setCurrentView","saveCollection","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","validatePath","formController","isSubmitting","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","merged","deleteRequested","setDeleteRequested","onWelcomeScreenContinue","handleAIGenerated","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","ConfigControllerProvider","collectionConfigController","configPermissions","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","fetchedData","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","onDuplicateCollectionClicked","event_0","event_1","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","EditorEntityAction","formContext","isDirty","KanbanSetupAction","handleConfigureClick","AddKanbanColumnAction","dialogOpen","setDialogOpen","newValueLabel","setNewValueLabel","saving","setSaving","getPropertyInPath","stringProperty","handleAddColumn","useCallback","isCodeDefinedProperty","newId","newEnumValue","existingEnumValues","updatedEnumValues","collectionEditorTranslationsEn","file_upload_config","file_type_images","file_type_videos","file_type_audio","file_type_applications","file_type_text","only","all_file_types_allowed","allowed_file_types","file_name_label","storage_path_label","storage_placeholders_description","storage_placeholder_file","storage_placeholder_file_name","storage_placeholder_file_ext","storage_placeholder_entity_id","storage_placeholder_property_key","storage_placeholder_path","storage_placeholder_rand","include_bucket_url","include_bucket_url_description","save_url_instead_of_path","save_url_description","max_size_bytes","image_resize_configuration","image_resize_description","max_width_px","max_height_px","resize_mode","resize_contain","resize_contain_description","resize_cover","resize_cover_description","output_format","format_original","format_original_description","format_webp_description","quality_label","quality_hint","preview_type","preview_image","preview_video","preview_audio","display_url","default_value_not_set","default_value_is","default_value_was_cleared","enum_missing_values","mode_label","date_time_mode","date_mode","automatic_value","auto_on_create","auto_on_update","auto_none","auto_value_description","timezone_label","local_timezone","timezone_description","target_collection","views_group","add_property_to","add_first_property_to_group","spread_children_as_columns","spread_children_description","paste_behavior","strip_html_on_paste","strip_html_description","convert_pasted_to_markdown","convert_pasted_description","markdown_url_note","hide_from_collection","hide_from_collection_tooltip","read_only","read_only_tooltip","nullable_tooltip","tab_general","tab_display","tab_properties","tab_extend","unsaved_changes_in_collection","error_persisting_collection","details_in_console","error_inferring_collection","collection_deleted","data_imported_successfully_msg","must_specify_path","collection_path_already_exists","collection_path_odd_segments","collection_uses_path_as_id","collection_uses_this_id","delete_stored_config","delete_stored_config_body","order_label","select_property_to_edit","add_first_property","add_new_property","no_permission_add_properties","get_code_for_collection","add_properties_from_data","collection_name_placeholder","created_by","property_defined_as_builder","extend_title","extend_description","collection_defined_in_code","reset_to_code","widget_group_text","widget_group_boolean","widget_group_users","widget_group_select","widget_group_number","widget_group_file","widget_group_reference","widget_group_date","widget_group_group","widget_group_array","collectionEditorTranslationsEs","collectionEditorTranslationsDe","collectionEditorTranslationsFr","collectionEditorTranslationsIt","collectionEditorTranslationsHi","collectionEditorTranslationsPt","useCollectionEditorPlugin","includeIntroView","Component","navigationEntries","saveNavigationEntries","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","allowDragAndDrop","onNavigationEntriesUpdate","updateKanbanColumnsOrder","CollectionActionsStart","HeaderAction","AddColumnComponent","onColumnsReorder","onKanbanColumnsReorder","KanbanSetupComponent","AddKanbanColumnComponent","ActionsTop","en","es","de","fr","it","hi","pt","provider","homePage","collectionView","i18n","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","joinCollectionLists","indexA","findIndex","indexB","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","collectionEditor","segments"],"mappings":"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"}
|