@firecms/collection_editor 3.0.0-canary.155 → 3.0.0-canary.156

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.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/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/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 React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n Autocomplete,\n AutocompleteItem,\n BooleanSwitchWithLabel,\n Chip,\n ClearIcon,\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\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\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 DatabaseField = collectionEditor.components?.DatabaseField ?? DefaultDatabaseField;\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 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 <DatabaseField 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 \", isSubcollection ? \"\" : \"sm:col-span-8\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\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 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 </div>}\n\n <div className={\"col-span-12\"}>\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 <ClearIcon 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 rows={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 <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 else if (v === \"true\")\n setFieldValue(\"customId\", true);\n else if (v === \"false\")\n setFieldValue(\"customId\", false);\n else if (v === \"optional\")\n setFieldValue(\"customId\", \"optional\");\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\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\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 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 </div>\n </ExpandablePanel>\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={values.icon}\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 AutoAwesomeIcon,\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={\"small\"}/> : <AutoAwesomeIcon/>}\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 includeAddButton={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 && <AutoAwesomeIcon 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-2\">\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 DebouncedTextField,\n ExpandablePanel,\n FileUploadIcon,\n MultiSelect,\n MultiSelectItem,\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\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\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 if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\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 <FileUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\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={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>\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 | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.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 PropertyConfigBadge,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n FunctionsIcon,\n Paper,\n RemoveCircleIcon,\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 \"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=\"body1\"\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\" : \"subtitle1\"}\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 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\n </div>}\n <RemoveCircleIcon 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=\"body1\"\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 ErrorBoundary,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutoAwesomeIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport { DragDropContext, Draggable, DraggableProvided, Droppable } from \"@hello-pangea/dnd\";\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 onDragEnd = (result: any) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n const startIndex = result.source.index;\n const endIndex = result.destination.index;\n\n const newPropertiesOrder = Array.from(propertiesOrder);\n const [removed] = newPropertiesOrder.splice(startIndex, 1);\n newPropertiesOrder.splice(endIndex, 0, removed);\n if (onPropertyMove)\n onPropertyMove(newPropertiesOrder, namespace);\n }\n\n return (\n <>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId={`droppable_${namespace}`}>\n {(droppableProvided, droppableSnapshot) => (\n <div\n {...droppableProvided.droppableProps}\n ref={droppableProvided.innerRef}\n className={className}>\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 return (\n <Draggable\n key={`array_field_${namespace}_${propertyKey}}`}\n draggableId={`array_field_${namespace}_${propertyKey}}`}\n index={index}>\n {(provided, snapshot) => {\n return (\n <ErrorBoundary>\n <PropertyTreeEntry\n propertyKey={propertyKey as string}\n propertyOrBuilder={property}\n additionalField={additionalField}\n provided={provided}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={snapshot.isDragging ? undefined : onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n </ErrorBoundary>\n );\n }}\n </Draggable>);\n }).filter(Boolean)}\n\n {droppableProvided.placeholder}\n\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n </>\n );\n },\n (prevProps, nextProps) => {\n\n const isSelected = nextProps.selectedPropertyKey?.startsWith(nextProps.namespace ?? \"\");\n const wasSelected = prevProps.selectedPropertyKey?.startsWith(prevProps.namespace ?? \"\");\n if (isSelected || wasSelected)\n return false;\n\n return equal(prevProps.properties, nextProps.properties) &&\n prevProps.propertiesOrder === nextProps.propertiesOrder &&\n equal(prevProps.additionalFields, nextProps.additionalFields) &&\n equal(prevProps.errors, nextProps.errors) &&\n equal(prevProps.onPropertyClick, nextProps.onPropertyClick) &&\n // equal(prevProps.onPropertyMove, nextProps.onPropertyMove) &&\n // equal(prevProps.onPropertyRemove, nextProps.onPropertyRemove) &&\n prevProps.namespace === nextProps.namespace &&\n prevProps.collectionEditable === nextProps.collectionEditable;\n }\n);\n\nexport function PropertyTreeEntry({\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n provided,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n provided: DraggableProvided;\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 isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = getFullId(propertyKey, namespace);\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 hasError = fullId ? getIn(errors, idToPropertiesPath(fullId)) : false;\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n className=\"relative -ml-8\"\n >\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\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\n <div className=\"absolute top-2 right-2 flex flex-row \">\n\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutoAwesomeIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && <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 >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n );\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={\"small\"}\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, toSnakeCase, unslugify } 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 ? unslugify(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\";\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 === \"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 }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: 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 = 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={(existing && Boolean(pathValue)) || 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 <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\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 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 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 } 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 } 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 } 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 } 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 } 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 } 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 === \"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 \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\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 { DebouncedTextField, ExpandablePanel, FileUploadIcon, 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 <FileUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\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, isEmptyObject,\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 WarningOffIcon\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 console.debug(\"onSubmit\", newPropertyWithId);\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 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 && !isEmptyObject(errors)) {\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 === \"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 === \"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&apos;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 no <code>editable</code> flag\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 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 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\"}>\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 <WarningOffIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\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 return (str.slice(0, 1).toLowerCase() + str.slice(1))\n .replace(/([-_ ]){1,}/g, \" \")\n .split(/[-_ ]/)\n .reduce((cur, acc) => {\n return cur + acc[0].toUpperCase() + acc.substring(1);\n }, \"\");\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/customization_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 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, ...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 AutoAwesomeIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Paper,\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 // @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 console.log(\"!!!!!! onPropertyChanged\", property)\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 console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\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-surface-50 dark:bg-surface-900\"}>\n <div className={cls(\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\"}/> : <AutoAwesomeIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\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 <Paper\n className=\"sticky top-8 p-4 min-h-full border border-transparent 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 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 </Paper>\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>\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\" onClick={handleCancel} autoFocus> Cancel </Button>\n <Button 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\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"} 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 initialFilter: {\n status: [\"==\", \"published\"]\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, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, 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_export\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n // const {\n // values,\n // setFieldValue,\n // setValues,\n // handleChange,\n // touched,\n // errors,\n // setFieldTouched,\n // isSubmitting,\n // submitCount\n // } = useFormex<EntityCollection>();\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 <div className={\"my-2\"}>\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 {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(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 {!loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0 &&\n <Typography variant={\"caption\"}>\n No suggestions\n </Typography>\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\"} iconKey={productsCollectionTemplate.icon!}/>}\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!}/>}\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!}/>}\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!}/>}\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 <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\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 {/*<Typography>*/}\n {/* {subtitle}*/}\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_export\";\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_export\";\nimport { CircularProgressCenter, EntityCollectionTable, Properties, useSelectionController } 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 [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", 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 properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import_export\";\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 Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n TopNavigationResult,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DoneIcon,\n IconButton,\n LoadingButton,\n Tab,\n Tabs\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_export\";\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\";\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 pathSuggestions?: (path?: string) => Promise<string[]>;\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\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 }: TopNavigationResult = 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 pathSuggestions,\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 = (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? []);\n };\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.resolveAliasesFrom(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) => {\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 const collectionEditable = editable || isNewCollection;\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"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 </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={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\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\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 {currentView !== \"welcome\" && <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 <ArrowBackIcon/>\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 <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\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 ? <DoneIcon/>\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 </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 getPathSuggestions?: (path?: string) => Promise<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 components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\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 }>();\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 });\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 ?? false,\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 });\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 getPathSuggestions,\n components\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 pathSuggestions={getPathSuggestions}\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.resolveAliasesFrom(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 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/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\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 { 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 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>\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 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 color={\"primary\"}\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&apos;t have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\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\";\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 getPathSuggestions?: (path?: string) => Promise<string[]>;\n\n collectionInference?: CollectionInference;\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 components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\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 getPathSuggestions,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n components\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 getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: <IntroWidget/>,\n // additionalChildrenEnd: <RootCollectionSuggestions introMode={introMode}/>,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\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 const storedCollections = backendCollections ?? [];\n storedCollections.forEach(markAsEditable);\n\n console.debug(\"Collections specified in code:\", baseCollections);\n console.debug(\"Collections stored in the backend\", storedCollections);\n const result = joinCollectionLists(baseCollections, storedCollections, [], modifyCollection);\n console.debug(\"Collections after joining:\", result);\n return result;\n}\n","import { ErrorView, unslugify, 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: unslugify(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","CollectionDetailsForm","t0","$","_c","isNewCollection","reservedGroups","groups","parentCollection","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","isSubmitting","submitCount","useFormex","collectionEditor","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","t4","useEffect","DatabaseField","components","DefaultDatabaseField","t5","collectionIcon","groupOptions","filter","group","includes","t6","Symbol","for","ref","autoCompleteOpen","setAutoCompleteOpen","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","t7","T0","Container","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","e","target","value","t22","Boolean","t23","t24","t25","t26","t27","t28","t29","cls","t30","t31","t32","DebouncedTextField","t33","t34","t35","t36","t37","event","length","map","group_0","index","t38","t39","t40","t41","t42","t43","t44","t45","t46","singularName","t47","e_0","t48","t49","t50","t51","t52","t53","t54","sideDialogWidth","t55","e_1","isNaN","Number","t56","t57","t58","t59","t60","t61","t62","t63","t64","t65","t66","description","t67","t68","t69","t70","t71","t72","t73","defaultSize","t74","_temp2","t75","_temp","t76","t77","v","Error","t78","t79","t80","t81","t82","_temp3","t83","v_0","t84","collectionGroup","t85","t86","t87","t88","v_1","t89","textSearchEnabled","t90","t91","t92","t93","t94","t95","t96","height","t97","icon","t98","t99","t100","value_2","value_1","toUpperCase","value_0","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","label","hasError","Object","keys","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","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","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","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","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","fileNameValue","storagePathValue","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","ExpandablePanel","entries","preventDefault","stopPropagation","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","cardClickableMixin","cardSelectedMixin","cardMixin","NonEditablePropertyPreview","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","className","inferredPropertyKeys","collectionEditable","result","destination","startIndex","source","endIndex","newPropertiesOrder","removed","splice","onDragEnd","droppableProvided","droppableSnapshot","droppableProps","innerRef","additionalField","find","warn","provided","snapshot","isDragging","placeholder","isSelected","startsWith","wasSelected","PropertyTreeEntry","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","dragHandleProps","draggableProps","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","collection_0","collection_1","flatMap","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","v_2","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","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","debug","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","isEmptyObject","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","hasValue","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","camelCase","str","slice","toLowerCase","replace","split","cur","acc","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","themes","vsDark","navigator","clipboard","writeText","style","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","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","newCollection","newPropertyKeys","updatedProperties","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","indexOf","log","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","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","subcollection","editedCollectionId","e_2","Paper","Table","TableBody","e_3","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","makePropertiesEditable","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","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","suggestion","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","propertyKey_1","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","entities","dataLoading","noMoreToLoad","cleanPropertiesFromImport","parentSlug","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","authController","useAuthController","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","updatedFullPath","convertIdsToPaths","resolvedPath","resolveAliasesFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","View","importedCollection","removeUndefined","validate","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","getPathSuggestions","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","deleteRequested","setDeleteRequested","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","clearFilter","setFilterValues","setSortBy","o","NewCollectionCard","context","canCreateCollections","useCollectionEditorPlugin","Component","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","CollectionActionsStart","HeaderAction","AddColumnComponent","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","storedCollections","joinCollectionLists","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","segments"],"mappings":";;;;;;;;;;;;;;;AAEO,MAAMA,YAAYC,IAAIC,OAAO,EAAEC,MAAM;AAAA,EACxCC,IAAIH,IAAII,SAASC,SAAS,UAAU;AAAA,EACpCC,MAAMN,IAAII,SAASC,SAAS,UAAU;AAAA,EACtCE,MAAMP,IAAII,SAASC,SAAS,UAAU;AAC1C,CAAC;ACEM,MAAMG,gCAAgCA,MAAA;AAAA,SAAkCC,WAAAC,uBAAkC;AAAC;ACkB3G,SAAAC,sBAAAC,IAAA;AAAAC,QAAAA,IAAAC,EAAA,GAAA;AAA+B,QAAA;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAN,IAAAA;AAiBlCO,QAAAA,WAAiBC,eAAAC,WAAmC;AACpD,QAAA;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,MASIC,UAA4B;AAEhC,QAAAC,mBAAyBvB;AAEzB,QAAA,CAAAwB,gBAAAC,iBAAA,IAA4CC,cAAc;AAC1D,QAAA,CAAAC,uBAAAC,wBAAA,IAA0DF,cAAc;AAAEG,MAAAA;AAAAxB,MAAAA,SAAAU,eAAA;AAEjDc,SAAAC,CAAA,eAAA;AACP,oBAAA,cAAcA,cAAUC,MAAa;AAAA,IAAA;AACtD1B,WAAAU;AAAAV,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAFD,QAAA2B,mBAAyBH;AAExBI,MAAAA;AAAA5B,MAAAA,EAAAE,CAAAA,MAAAA,mBAAAF,SAAAU,iBAAAV,EAAA,CAAA,MAAAY,SAAA;AAEkBgB,SAAAnC,CAAA,SAAA;AACfiB,oBAAc,QAAQjB,IAAI;AAE1BoC,YAAAA,cAAoBC,MAAMlB,SAAS,MAAM;AACrC,UAAA,CAACiB,eAAe3B,mBAAmBT,MAAI;AACzB,sBAAA,QAAQsC,YAAYtC,IAAI,CAAC;AAAA,MAAC;AAG5CuC,YAAAA,YAAkBF,MAAMlB,SAAS,IAAI;AACjC,UAAA,CAACoB,aAAa9B,mBAAmBT,MAAI;AACvB,sBAAA,MAAMsC,YAAYtC,IAAI,CAAC;AAAA,MAAC;AAG1CwC,YAAAA,sBAA4BH,MAAMlB,SAAS,cAAc;AACrD,UAAA,CAACqB,uBAAuB/B,mBAAmBT,MAAI;AACjC,sBAAA,gBAAgByC,SAASzC,IAAI,CAAC;AAAA,MAAC;AAAA,IAAA;AAGpDO,WAAAE;AAAAF,WAAAU;AAAAV,WAAAY;AAAAZ,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAlBD,QAAAmC,aAAmBP;AAkBjBQ,MAAAA;AAAAC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAa,OAAAvB,IAAA;AAEQ8C,SAAAA,MAAA;AAAA,UACFvB,OAAMvB,IAAA;AACNiC,qCAA6B;AAAA,MAAC;AAAA,IAAA;AAEnC,SAAA,CAACV,OAAMvB,EAAA;AAAI,MAAA,CAAA,IAAAuB,OAAAvB;AAAAU,WAAAoC;AAAApC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAD,SAAApC,EAAA,CAAA;AAAAqC,SAAArC,EAAA,CAAA;AAAA,EAAA;AAJdsC,YAAUF,IAIPC,EAAW;AAEdE,QAAAA,gBAAsBrB,iBAAgBsB,YAAAD,iBAAAE;AAAmDC,MAAAA;AAAA1C,MAAAA,SAAAS,QAAA;6BAEjE,aAA8BA,EAAAA,kBAAAA,OAAS,CAAA;AAAAT,WAAAS;AAAAT,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAA/D,QAAA2C,iBAAuBD;AAEvBE,QAAAA,eAAqBxC,QAAMyC,OAAAC,CAAAA,UAAA,CAAqB3C,gBAAc4C,SAAWD,KAAK,CAAA;AAAGE,MAAAA;AAAA,MAAAhD,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAM7D,SAAA;AAAA,MAAAC,KACX7C;AAAAA,IAAAA;AACRN,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAND,QAAA;AAAA,IAAAoD;AAAAA,IAAAC;AAAAA,EAAAA,IAIIC,gBAAgBN,EAEnB;AAEDO,QAAAA,oBAA0BlD;AAEtBmD,MAAAA;AACA,MAAA,OAAO/C,OAAMgD,aAAc,UAAQ;AACnBD,oBAAAA;AAAAA,EAAAA,OAAH;AACN/C,QAAAA,OAAMgD,aAAkB,MAAA;AACfD,sBAAAA;AAAAA,IAAAA,OAAH;AACN/C,UAAAA,OAAMgD,aAAmB,OAAA;AAChBD,wBAAAA;AAAAA,MAAAA,OAAH;AACN/C,YAAAA,OAAMgD,aAAc,YAAU;AACrBD,0BAAAA;AAAAA,QAAH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGjB,QAAAE,aAAmB1C,cAAe;AAEd,QAAA2C,KAAuB;AAClC,QAAAC,KAAAC;AAAoB,QAAAC,KAAK;AAAa,QAAAC,KAAgC;AAKtCC,QAAAA,MAAC9D,CAAAA,kBAAkB,OAAO;AAC1C,QAAA+D,MAAA/D,kBAAkB,mBAAmB,GAAGO,QAAMhB,IAAA;AAAmByE,MAAAA;AAAA,MAAAlE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAiE,KAAA;AADtEC,8BAAC,YAAoB,EAAA,SAAAF,KAA2C,WAAA,aAC3DC,UACL,IAAA,CAAA;AAAajE,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAAuC,iBAAAvC,EAAA,EAAA,MAAA2B,oBAAA3B,EAAA,EAAA,MAAAS,OAAAgB,YAAA;AACb0C,8BAAC,eAA0B,EAAA,YAAA1D,OAAMgB,YACEE,oBAAAA,iBAAmB,CAAA;AAAA3B,YAAAuC;AAAAvC,YAAA2B;AAAA,MAAA,EAAA,IAAAlB,OAAAgB;AAAAzB,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAA,MAAApE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMrCkB,UAAAA,MAAMhD,sBAAsB;AAACpB,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,UAAA2C,gBAAA;AAJ9C0B,UAAC,oBAAA,SAAA,EAAe,OAAA,eACE,SAAG,MACjB,UAAC,oBAAA,YAAA,EACU,OAAA,UACE,SAAAD,KACK,0BAClB,EACJ,CAAA;AAAUpE,YAAA2C;AAAA3C,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAAtE,MAAAA,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAmE,OAAAnE,EAAA,EAAA,MAAAqE,KAAA;sCAdA,EAAA,WAAA,8CACVH,UAAAA;AAAAA,MAAAA;AAAAA,MAGAC;AAAAA,MAGAE;AAAAA,IAQJ,EAAA,CAAA;AAAMrE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAqE;AAAArE,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAAvE,MAAAA,UAAAK,kBAAA;AAELA,UAAAA,wCAAqB,MAAkB,EAAA,aAAA,cACpC,UAAC,qBAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,MAAA;AAAA,MACD,oBAA8B,KAA1BA,EAAAA,UAAAA,iBAAgBZ,KAAM,CAAA;AAAA,IAAA,EACzD,CAAA,EACJ,CAAA;AAAOO,YAAAK;AAAAL,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAuE,KAAA;AAvBXC,+BAAA,OACIF,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAkBCC;AAAAA,IAML,EAAA,CAAA;AAAMvE,YAAAsE;AAAAtE,YAAAuE;AAAAvE,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AACU,QAAAyE,MAAyB;AAItBC,QAAAA,MAAAjE,OAAMhB,QAAS;AAAEkF,MAAAA;AAAA3E,MAAAA,UAAAmC,YAAA;AACdwC,UAAAC,CAAYzC,MAAAA,WAAWyC,EAACC,OAAAC,KAAa;AAAC9E,YAAAmC;AAAAnC,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AAIzC,QAAA+E,MAAArB,cAAcsB,QAAQnE,OAAMpB,IAAK;AAACwF,MAAAA;AAAAjF,MAAAA,EAAA0E,EAAAA,MAAAA,OAAA1E,UAAA2E,OAAA3E,EAAA,EAAA,MAAA+E,KAAA;AAN7CE,UAAC,oBAAA,WAAA,EACU,OAAAP,KACG,UAAAC,KACH,OAAA,QACI,WAAG,MACd,UAAO,MACA,OAAAI,IAAqC,CAAA;AAAA/E,YAAA0E;AAAA1E,YAAA2E;AAAA3E,YAAA+E;AAAA/E,YAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,EAAA;AAAA,EAAA;AAC3B,QAAAkF,MAAAtE,QAAOnB,QAASuF,QAAQnE,OAAMpB,IAAK;AACnD0F,QAAAA,MAAAvE,QAAOnB,QAASuF,QAAQnE,OAAMpB,IAAK,IAAIoB,OAAMpB,OAAQ;AAAgE2F,MAAAA;AAAA,MAAApF,EAAAkF,EAAAA,MAAAA,OAAAlF,UAAAmF,KAAA;AAD1HC,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChBC,UACL,IAAA,CAAA;AAAenF,YAAAkF;AAAAlF,YAAAmF;AAAAnF,YAAAoF;AAAAA,EAAAA,OAAA;AAAAA,UAAApF,EAAA,EAAA;AAAA,EAAA;AAAAqF,MAAAA;AAAA,MAAArF,EAAAiF,EAAAA,MAAAA,OAAAjF,UAAAoF,KAAA;AACb,UAAA,qBAAA,OAXU,EAAA,WAAA,eACZH,UAAAA;AAAAA,MAAAA;AAAAA,MAOAG;AAAAA,IAGJ,EAAA,CAAA;AAAMpF,YAAAiF;AAAAjF,YAAAoF;AAAApF,YAAAqF;AAAAA,EAAAA,OAAA;AAAAA,UAAArF,EAAA,EAAA;AAAA,EAAA;AAE8BsF,QAAAA,MAAA/B,kBAAkB,KAAK;AAAegC,MAAAA;AAAAvF,MAAAA,UAAAsF,KAAA;AAA1DE,UAAAA,IAAI,gBAAgBF,GAAsC;AAACtF,YAAAsF;AAAAtF,YAAAuF;AAAAA,EAAAA,OAAA;AAAAA,UAAAvF,EAAA,EAAA;AAAA,EAAA;AAItD,QAAAyF,OAACvF;AAEJ,QAAAwF,MAAAhC,cAAcsB,QAAQnE,OAAMnB,IAAK;AAACiG,MAAAA;AAAA,MAAA3F,EAAAyF,EAAAA,MAAAA,OAAAzF,UAAA0F,KAAA;AALhDC,UAAC,oBAAA,OAAA,EAAY,MAAA,QACFC,IAAiBA,oBACd,OAAA,QACG,UAAAH,KACV,UAAA,MACO,OAAAC,IAAqC,CAAA;AAAA1F,YAAAyF;AAAAzF,YAAA0F;AAAA1F,YAAA2F;AAAAA,EAAAA,OAAA;AAAAA,UAAA3F,EAAA,EAAA;AAAA,EAAA;AAE9B,QAAA6F,MAAAjF,QAAOlB,QAASsF,QAAQnE,OAAMnB,IAAK;AACnDoG,QAAAA,MAAAlF,QAAOlB,QAASsF,QAAQnE,OAAMnB,IAAK,IAC9BmB,OAAMnB,OACN6D,kBAAkB,qEAAqE;AAAyDwC,MAAAA;AAAA,MAAA/F,EAAA6F,EAAAA,MAAAA,OAAA7F,UAAA8F,KAAA;AAH1JC,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChBC,UAGL,IAAA,CAAA;AAAe9F,YAAA6F;AAAA7F,YAAA8F;AAAA9F,YAAA+F;AAAAA,EAAAA,OAAA;AAAAA,UAAA/F,EAAA,EAAA;AAAA,EAAA;AAAAgG,MAAAA;AAAAhG,MAAAA,EAAAuF,EAAAA,MAAAA,OAAAvF,UAAA2F,OAAA3F,EAAA,EAAA,MAAA+F,KAAA;AAEb,UAAA,qBAAA,OAdU,EAAA,WAAAR,KACZI,UAAAA;AAAAA,MAAAA;AAAAA,MAOAI;AAAAA,IAMJ,EAAA,CAAA;AAAM/F,YAAAuF;AAAAvF,YAAA2F;AAAA3F,YAAA+F;AAAA/F,YAAAgG;AAAAA,EAAAA,OAAA;AAAAA,UAAAhG,EAAA,EAAA;AAAA,EAAA;AAEL,QAAAiG,MAAC1C,CAAAA,mBAAmB,qBAAA,OAAA,EAAgB,WAAA,sCAEjC,UAAA;AAAA,IAAA,oBAAC,WAAiB,EAAA,OAAAG,cAAcsB,QAAQnE,OAAMiC,KAAM,GAC/B/B,UAAAA,cACH,OAAAN,OAAMqC,SAAU,IACV,cAAA,OACH,UAAAoD,CAAWxF,UAAAA,cAAc,SAASwF,MAAKrB,OAAAC,KAAa,GACxD,MAAA,SACIxE,UAAAA,UACJ,OAAA,QAAO,CAAA;AAAA,wBACvB,cACS,EAAA,MAAA8C,qBAAqBR,gBAAY,IAAMuD,SAAW,GAC/C9C,SAAkB,qBAC1BT,UAAAA,cAAYwD,IAAA,CAAAC,SAAAC,UACD,oBAAA,kBAAA,EAEK,SAAA,MAAA;AACLjD,+BAAyB;AACX,oBAAA,SAASP,eAAa;AAAA,IAAC,GAGzC,UAEM,oBAAA,OAAA,EAFU,WAAA,aACP,UACT,QAAA,CAAA,EAAA,GARKwD,QAAQ,MAAMxD,OASvB,CAAmB,EAE3B,CAAA;AAAA,IACA,oBAAC,gBACIY,UAAcsB,cAAAA,QAAQnE,OAAMiC,KAAM,IAAIjC,OAAMiC,QAAS,yBAC1D,CAAA;AAAA,EACJ,EAAA,CAAA;AAAMyD,MAAAA;AAAA,MAAAvG,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAOM,UAAA,qBAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,MAAA,oBAAC,cACD,EAAA;AAAA,0BAAC,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,YAAA;AAAA,IACJ,EAAA,CAAA;AAAMlD,YAAAuG;AAAAA,EAAAA,OAAA;AAAAA,UAAAvG,EAAA,EAAA;AAAA,EAAA;AAOe,QAAAwG,OAACtG;AAEJ,QAAAuG,MAAA/C,cAAcsB,QAAQnE,OAAMvB,EAAG;AAACoH,MAAAA;AAAA,MAAA1G,EAAAwG,EAAAA,MAAAA,OAAAxG,UAAAyG,KAAA;AAJ9C,UAAA,oBAAC,OAAY,EAAA,MAAA,MACFb,IAAiBA,oBACX,UAAAY,KACH,OAAA,iBACA,OAAAC,IAAmC,CAAA;AAAAzG,YAAAwG;AAAAxG,YAAAyG;AAAAzG,YAAA0G;AAAAA,EAAAA,OAAA;AAAAA,UAAA1G,EAAA,EAAA;AAAA,EAAA;AAC5B,QAAA2G,MAAA/F,QAAOtB,MAAO0F,QAAQnE,OAAMvB,EAAG;AAC/CsH,QAAAA,MAAAhG,QAAOtB,MAAO0F,QAAQnE,OAAMvB,EAAG,IAAIuB,OAAMvB,KAAM;AAAqEuH,MAAAA;AAAA,MAAA7G,EAAA2G,EAAAA,MAAAA,OAAA3G,UAAA4G,KAAA;AADzHC,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChBC,UACL,IAAA,CAAA;AAAe5G,YAAA2G;AAAA3G,YAAA4G;AAAA5G,YAAA6G;AAAAA,EAAAA,OAAA;AAAAA,UAAA7G,EAAA,EAAA;AAAA,EAAA;AAAA8G,MAAAA;AAAA,MAAA9G,EAAA0G,EAAAA,MAAAA,OAAA1G,UAAA6G,KAAA;AACb,UAAA,qBAAA,OATU,EAAA,WAAA,eACZH,UAAAA;AAAAA,MAAAA;AAAAA,MAKAG;AAAAA,IAGJ,EAAA,CAAA;AAAM7G,YAAA0G;AAAA1G,YAAA6G;AAAA7G,YAAA8G;AAAAA,EAAAA,OAAA;AAAAA,UAAA9G,EAAA,EAAA;AAAA,EAAA;AAIS,QAAA+G,MAAArD,cAAcsB,QAAQnE,OAAMmG,YAAa;AAACC,MAAAA;AAAA,MAAAjH,EAAAW,EAAAA,MAAAA,gBAAAX,UAAAc,iBAAA;AAGvCmG,UAAAC,CAAA,QAAA;AACNpG,sBAAgB,gBAAc,IAAM;AAAC,aAC9BH,aAAaiE,GAAC;AAAA,IAAA;AACxB5E,YAAAW;AAAAX,YAAAc;AAAAd,YAAAiH;AAAAA,EAAAA,OAAA;AAAAA,UAAAjH,EAAA,EAAA;AAAA,EAAA;AACMmH,QAAAA,MAAA1G,OAAMuG,gBAAiB;AAAEI,MAAAA;AAAApH,MAAAA,EAAA+G,EAAAA,MAAAA,OAAA/G,UAAAiH,OAAAjH,EAAA,EAAA,MAAAmH,KAAA;AARpCC,UAAC,oBAAA,WAAA,EACU,OAAAL,KACD,MAAA,gBACY,oBAAA,uBACR,UAAAE,KAIH,OAAAE,KACA,OAAA,gBAAkB,CAAA;AAAAnH,YAAA+G;AAAA/G,YAAAiH;AAAAjH,YAAAmH;AAAAnH,YAAAoH;AAAAA,EAAAA,OAAA;AAAAA,UAAApH,EAAA,EAAA;AAAA,EAAA;AACR,QAAAqH,MAAA3D,cAAcsB,QAAQnE,OAAMmG,YAAa;AACzD,QAAAM,MAAA5D,cAAcsB,QAAQnE,OAAMmG,YAAa,IAAInG,OAAMmG,eAAgB;AAAqDO,MAAAA;AAAA,MAAAvH,EAAAqH,EAAAA,MAAAA,OAAArH,UAAAsH,KAAA;AAD7HC,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChBC,UACL,IAAA,CAAA;AAAetH,YAAAqH;AAAArH,YAAAsH;AAAAtH,YAAAuH;AAAAA,EAAAA,OAAA;AAAAA,UAAAvH,EAAA,EAAA;AAAA,EAAA;AAAAwH,MAAAA;AAAA,MAAAxH,EAAAoH,EAAAA,MAAAA,OAAApH,UAAAuH,KAAA;AACb,UAAA,qBAAA,OAdU,EAAA,WAAA,eACZH,UAAAA;AAAAA,MAAAA;AAAAA,MAUAG;AAAAA,IAGJ,EAAA,CAAA;AAAMvH,YAAAoH;AAAApH,YAAAuH;AAAAvH,YAAAwH;AAAAA,EAAAA,OAAA;AAAAA,UAAAxH,EAAA,EAAA;AAAA,EAAA;AAGS,QAAAyH,MAAA/D,cAAcsB,QAAQnE,OAAM6G,eAAgB;AAACC,MAAAA;AAAA,MAAA3H,EAAAc,EAAAA,MAAAA,mBAAAd,UAAAU,eAAA;AAI1CiH,UAAAC,CAAA,QAAA;AACN9G,sBAAgB,mBAAiB,IAAM;AACvCgE,YAAAA,QAAcF,IAACC,OAAAC;AAAc,UAAA,CACxBA,OAAK;AACNpE,sBAAc,mBAAiB,IAAM;AAAA,MAAA,OAAC;AAAA,YAAA,CAC9BmH,MAAMC,OAAOhD,KAAK,CAAC,GAAC;AACd,wBAAA,mBAAmBgD,OAAOhD,KAAK,CAAC;AAAA,QAAC;AAAA,MAAA;AAAA,IAAA;AAEtD9E,YAAAc;AAAAd,YAAAU;AAAAV,YAAA2H;AAAAA,EAAAA,OAAA;AAAAA,UAAA3H,EAAA,EAAA;AAAA,EAAA;AAAA+H,MAAAA;AAAA/H,MAAAA,UAAAU,eAAA;AAGYqH,UAAAA,MAAA;AACLrH,oBAAc,mBAAiB,IAAM;AAAA,IAAA;AACxCV,YAAAU;AAAAV,YAAA+H;AAAAA,EAAAA,OAAA;AAAAA,UAAA/H,EAAA,EAAA;AAAA,EAAA;AACSgI,QAAAA,MAAA,CAACvH,OAAMiH;AAAgBO,MAAAA;AAAA,MAAAjI,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;8BAChC,WAAgB,EAAA,MAAA,QAAU,CAAA;AAAAlD,YAAAiI;AAAAA,EAAAA,OAAA;AAAAA,UAAAjI,EAAA,EAAA;AAAA,EAAA;AAAAkI,MAAAA;AAAA,MAAAlI,EAAA+H,EAAAA,MAAAA,OAAA/H,UAAAgI,KAAA;AANjB,UAAA,oBAAC,cACL,MAAA,SACG,SAAAD,KAGC,UAAAC,KACVC,UACJ,IAAA,CAAA;AAAajI,YAAA+H;AAAA/H,YAAAgI;AAAAhI,YAAAkI;AAAAA,EAAAA,OAAA;AAAAA,UAAAlI,EAAA,EAAA;AAAA,EAAA;AACNmI,QAAAA,MAAA1H,OAAMiH,mBAAoB;AAAEU,MAAAA;AAAA,MAAApI,EAAA,EAAA,MAAAyH,OAAAzH,EAAA2H,EAAAA,MAAAA,OAAA3H,EAAAkI,EAAAA,MAAAA,OAAAlI,UAAAmI,KAAA;AAtBvCC,8BAAC,WACU,EAAA,OAAAX,KACD,MAAA,mBACA,MAAA,UACY,oBAAA,0BACR,UAAAE,KASI,cAAAO,KAQP,OAAAC,KACA,OAAA,oBAAsB,CAAA;AAAAnI,YAAAyH;AAAAzH,YAAA2H;AAAA3H,YAAAkI;AAAAlI,YAAAmI;AAAAnI,YAAAoI;AAAAA,EAAAA,OAAA;AAAAA,UAAApI,EAAA,EAAA;AAAA,EAAA;AACZ,QAAAqI,MAAA3E,cAAcsB,QAAQnE,OAAMmG,YAAa;AACzD,QAAAsB,MAAA5E,cAAcsB,QAAQnE,OAAMmG,YAAa,IAAInG,OAAMmG,eAAgB;AAAmFuB,MAAAA;AAAA,MAAAvI,EAAAqI,EAAAA,MAAAA,OAAArI,UAAAsI,KAAA;AAD3JC,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChBC,UACL,IAAA,CAAA;AAAetI,YAAAqI;AAAArI,YAAAsI;AAAAtI,YAAAuI;AAAAA,EAAAA,OAAA;AAAAA,UAAAvI,EAAA,EAAA;AAAA,EAAA;AAAAwI,MAAAA;AAAA,MAAAxI,EAAAoI,EAAAA,MAAAA,OAAApI,UAAAuI,KAAA;AACb,UAAA,qBAAA,OA5BU,EAAA,WAAA,eACZH,UAAAA;AAAAA,MAAAA;AAAAA,MAwBAG;AAAAA,IAGJ,EAAA,CAAA;AAAMvI,YAAAoI;AAAApI,YAAAuI;AAAAvI,YAAAwI;AAAAA,EAAAA,OAAA;AAAAA,UAAAxI,EAAA,EAAA;AAAA,EAAA;AAGS,QAAAyI,MAAA/E,cAAcsB,QAAQnE,OAAM6H,WAAY;AAExCC,QAAAA,MAAAlI,OAAMiI,eAAgB;AAAEE,MAAAA;AAAA5I,MAAAA,EAAAW,EAAAA,MAAAA,gBAAAX,UAAAyI,OAAAzI,EAAA,GAAA,MAAA2I,KAAA;AAHnCC,8BAAC,WACU,EAAA,OAAAH,KACF,MAAA,eACE,OAAAE,KACGhI,UAAAA,cACV,WAAQ,MACF,MAAC,GACU,oBAAA,2BACX,OAAA,cACR,CAAA;AAAAX,YAAAW;AAAAX,YAAAyI;AAAAzI,aAAA2I;AAAA3I,aAAA4I;AAAAA,EAAAA,OAAA;AAAAA,UAAA5I,EAAA,GAAA;AAAA,EAAA;AACmB,QAAA6I,MAAAnF,cAAcsB,QAAQnE,OAAM6H,WAAY;AACxD,QAAAI,MAAApF,cAAcsB,QAAQnE,OAAM6H,WAAY,IAAI7H,OAAM6H,cAAe;AAAqDK,MAAAA;AAAA,MAAA/I,EAAA6I,GAAAA,MAAAA,OAAA7I,WAAA8I,KAAA;AAD3HC,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChBC,UACL,IAAA,CAAA;AAAe9I,aAAA6I;AAAA7I,aAAA8I;AAAA9I,aAAA+I;AAAAA,EAAAA,OAAA;AAAAA,UAAA/I,EAAA,GAAA;AAAA,EAAA;AAAAgJ,MAAAA;AAAA,MAAAhJ,EAAA4I,GAAAA,MAAAA,OAAA5I,WAAA+I,KAAA;AACb,UAAA,qBAAA,OAdU,EAAA,WAAA,eACZH,UAAAA;AAAAA,MAAAA;AAAAA,MAUAG;AAAAA,IAGJ,EAAA,CAAA;AAAM/I,aAAA4I;AAAA5I,aAAA+I;AAAA/I,aAAAgJ;AAAAA,EAAAA,OAAA;AAAAA,UAAAhJ,EAAA,GAAA;AAAA,EAAA;AAUSiJ,QAAAA,MAAAxI,OAAMyI,eAAgB;AAAEC,MAAAA;AAAA,MAAAnJ,EAAA,GAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAG7B,UAAA,CAAA,MAAM,KAAK,KAAK,KAAK,IAAI,EAAAkD,IAAAgD,QAM1B;AAACpJ,aAAAmJ;AAAAA,EAAAA,OAAA;AAAAA,UAAAnJ,EAAA,GAAA;AAAA,EAAA;AAAAqJ,MAAAA;AAAA,MAAArJ,EAAAW,GAAAA,MAAAA,gBAAAX,WAAAiJ,KAAA;AAjBV,UAAA,oBAAA,SAAgB,WAAA,eACZ,8BAAC,QACQ,EAAA,MAAA,eACC,MAAA,SACK,WAAG,MACR,OAAA,oBACI,UAAA,gBACAtI,UAAW,cACd,OAAAsI,KACM,aAAAK,SAEZH,UAAAA,IAOL,CAAA,EACJ,CAAA;AAAMnJ,aAAAW;AAAAX,aAAAiJ;AAAAjJ,aAAAqJ;AAAAA,EAAAA,OAAA;AAAAA,UAAArJ,EAAA,GAAA;AAAA,EAAA;AAQY,QAAAuJ,MAAA/F,kBAAkB;AAAcgG,MAAAA;AAAAxJ,MAAAA,WAAAU,eAAA;AAC3B8I,UAAAC,CAAA,MAAA;AAAA,UACPA,MAAM,gBAAc;AAAAC,cAAAA,IAAAA,MACJ,wBAAwB;AAAA,MAAA,OAAA;AAAA,YACnCD,MAAM,QAAM;AACjB/I,wBAAc,YAAU,IAAM;AAAA,QAAA,OAAC;AAAA,cAC1B+I,MAAM,SAAO;AAClB/I,0BAAc,YAAU,KAAO;AAAA,UAAA,OAAC;AAAA,gBAC3B+I,MAAM,YAAU;AACrB/I,4BAAc,YAAY,UAAU;AAAA,YAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAC5CV,aAAAU;AAAAV,aAAAwJ;AAAAA,EAAAA,OAAA;AAAAA,UAAAxJ,EAAA,GAAA;AAAA,EAAA;AACM,QAAA2J,MAAAnG,iBAAiB;AAAEoG,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAA,MAAA9J,EAAA,GAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAY1B0G,UAAC,oBAAA,YAAA,EAAkB,OAAA,SAAS,UAE5B,yCAAA,CAAA;AACAC,UAAC,oBAAA,YAAA,EAAkB,OAAA,QAAQ,UAE3B,0BAAA,CAAA;AACAC,UAAC,oBAAA,YAAA,EAAkB,OAAA,YAAY,UAE/B,iDAAA,CAAA;AAAa9J,aAAA4J;AAAA5J,aAAA6J;AAAA7J,aAAA8J;AAAAA,EAAAA,OAAA;AAAAF,UAAA5J,EAAA,GAAA;AAAA6J,UAAA7J,EAAA,GAAA;AAAA8J,UAAA9J,EAAA,GAAA;AAAA,EAAA;AAAA+J,MAAAA;AAAA/J,MAAAA,EAAAuJ,GAAAA,MAAAA,OAAAvJ,WAAAwJ,OAAAxJ,EAAA,GAAA,MAAA2J,KAAA;AAEf,UAAA,oBAAA,SAxCU,WAAA,eACZ,+BAAC,QACQ,EAAA,MAAA,YACC,OAAA,2BACI,UAAA,gBACJ,MAAA,SACK,WAAA,MACD,UAAAJ,KACK,eAAAC,KAUR,OAAAG,KACM,aAAAK,UAWbJ,UAAAA;AAAAA,MAAAA;AAAAA,MAGAC;AAAAA,MAGAC;AAAAA,IAAAA,EAGJ,CAAA,EACJ,CAAA;AAAM9J,aAAAuJ;AAAAvJ,aAAAwJ;AAAAxJ,aAAA2J;AAAA3J,aAAA+J;AAAAA,EAAAA,OAAA;AAAAA,UAAA/J,EAAA,GAAA;AAAA,EAAA;AAAAiK,MAAAA;AAAAjK,MAAAA,WAAAU,eAAA;AAKiBwJ,UAAAA,CAAAA,QAAOxJ,cAAc,mBAAmB+I,GAAC;AAACzJ,aAAAU;AAAAV,aAAAiK;AAAAA,EAAAA,OAAA;AAAAA,UAAAjK,EAAA,GAAA;AAAA,EAAA;AAClDmK,QAAAA,MAAA1J,OAAM2J,mBAAyB;AAAAC,MAAAA;AAAA,MAAArK,EAAAiK,GAAAA,MAAAA,OAAAjK,WAAAmK,KAAA;AAJ1C,UAAA,oBAAC,0BACa,UAAA,SACJ,OAAA,oBACS,eAAAF,KACR,OAAAE,IACT,CAAA;AAAAnK,aAAAiK;AAAAjK,aAAAmK;AAAAnK,aAAAqK;AAAAA,EAAAA,OAAA;AAAAA,UAAArK,EAAA,GAAA;AAAA,EAAA;AAAAsK,MAAAA;AAAA,MAAAtK,EAAA,GAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;8BACD,gBAAa,UAId,iIAAA,CAAA;AAAelD,aAAAsK;AAAAA,EAAAA,OAAA;AAAAA,UAAAtK,EAAA,GAAA;AAAA,EAAA;AAAAuK,MAAAA;AAAAvK,MAAAA,WAAAqK,KAAA;AACb,UAAA,qBAAA,OAZU,EAAA,WAAA,eACZA,UAAAA;AAAAA,MAAAA;AAAAA,MAMAC;AAAAA,IAKJ,EAAA,CAAA;AAAMtK,aAAAqK;AAAArK,aAAAuK;AAAAA,EAAAA,OAAA;AAAAA,UAAAvK,EAAA,GAAA;AAAA,EAAA;AAAAwK,MAAAA;AAAAxK,MAAAA,WAAAU,eAAA;AAKiB+J,UAAAA,CAAAA,QAAO/J,cAAc,qBAAqB+I,GAAC;AAACzJ,aAAAU;AAAAV,aAAAwK;AAAAA,EAAAA,OAAA;AAAAA,UAAAxK,EAAA,GAAA;AAAA,EAAA;AACpD0K,QAAAA,MAAAjK,OAAMkK,qBAA2B;AAAAC,MAAAA;AAAA,MAAA5K,EAAAwK,GAAAA,MAAAA,OAAAxK,WAAA0K,KAAA;AAJ5C,UAAA,oBAAC,0BACa,UAAA,SACJ,OAAA,0CACS,eAAAF,KACR,OAAAE,IACT,CAAA;AAAA1K,aAAAwK;AAAAxK,aAAA0K;AAAA1K,aAAA4K;AAAAA,EAAAA,OAAA;AAAAA,UAAA5K,EAAA,GAAA;AAAA,EAAA;AAAA6K,MAAAA;AAAA,MAAA7K,EAAA,GAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;8BACD,gBAAa,UAId,wOAAA,CAAA;AAAelD,aAAA6K;AAAAA,EAAAA,OAAA;AAAAA,UAAA7K,EAAA,GAAA;AAAA,EAAA;AAAA8K,MAAAA;AAAA9K,MAAAA,WAAA4K,KAAA;AACb,UAAA,qBAAA,OAZU,EAAA,WAAA,eACZA,UAAAA;AAAAA,MAAAA;AAAAA,MAMAC;AAAAA,IAKJ,EAAA,CAAA;AAAM7K,aAAA4K;AAAA5K,aAAA8K;AAAAA,EAAAA,OAAA;AAAAA,UAAA9K,EAAA,GAAA;AAAA,EAAA;AAAA+K,MAAAA;AAAA,MAAA/K,EAAA,GAAA,MAAA8G,OAAA9G,EAAA,GAAA,MAAAwH,OAAAxH,EAAA,GAAA,MAAAwI,OAAAxI,EAAAgJ,GAAAA,MAAAA,OAAAhJ,EAAAqJ,GAAAA,MAAAA,OAAArJ,EAAA+J,GAAAA,MAAAA,OAAA/J,EAAAuK,GAAAA,MAAAA,OAAAvK,WAAA8K,KAAA;AACJ,UAAA,qBAAA,OAhKU,EAAA,WAAA,+BAEZhE,UAAAA;AAAAA,MAAAA;AAAAA,MAWAU;AAAAA,MAeAgB;AAAAA,MA6BAQ;AAAAA,MAgBAK;AAAAA,MAoBAU;AAAAA,MAyCAQ;AAAAA,MAaAO;AAAAA,IAaJ,EAAA,CAAA;AAAM9K,aAAA8G;AAAA9G,aAAAwH;AAAAxH,aAAAwI;AAAAxI,aAAAgJ;AAAAhJ,aAAAqJ;AAAArJ,aAAA+J;AAAA/J,aAAAuK;AAAAvK,aAAA8K;AAAA9K,aAAA+K;AAAAA,EAAAA,OAAA;AAAAA,UAAA/K,EAAA,GAAA;AAAA,EAAA;AAAAgL,MAAAA;AAAA,MAAAhL,EAAAsB,GAAAA,MAAAA,yBAAAtB,WAAA+K,KAAA;AA7KdC,uCAAgB,WAAA,eACZ,8BAAC,iBACa1J,EAAAA,UAAoB,uBACZC,kBAAuB,0BAErC,OAAAgF,KAOe,mBAAA,OACnBwE,eAiKJ,EAEJ,CAAA;AAAM/K,aAAAsB;AAAAtB,aAAA+K;AAAA/K,aAAAgL;AAAAA,EAAAA,OAAA;AAAAA,UAAAhL,EAAA,GAAA;AAAA,EAAA;AAAAiL,MAAAA;AAAA,MAAAjL,EAAA,GAAA,MAAAqF,OAAArF,EAAAgG,GAAAA,MAAAA,OAAAhG,EAAAiG,GAAAA,MAAAA,OAAAjG,WAAAgL,KAAA;AA/OV,UAAA,qBAAA,OAAgB,EAAA,WAAAvG,KAEZY,UAAAA;AAAAA,MAAAA;AAAAA,MAaAW;AAAAA,MAgBCC;AAAAA,MAgCD+E;AAAAA,IAkLJ,EAAA,CAAA;AAAMhL,aAAAqF;AAAArF,aAAAgG;AAAAhG,aAAAiG;AAAAjG,aAAAgL;AAAAhL,aAAAiL;AAAAA,EAAAA,OAAA;AAAAA,UAAAjL,EAAA,GAAA;AAAA,EAAA;AAAAkL,MAAAA;AAAA,MAAAlL,EAAA,GAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAEN,UAAA,oBAAA,SAAY,OAAA;AAAA,MAAAiI,QAAU;AAAA,IAAW,EAAA,CAAA;AAAAnL,aAAAkL;AAAAA,EAAAA,OAAA;AAAAA,UAAAlL,EAAA,GAAA;AAAA,EAAA;AAAAoL,MAAAA;AAAApL,MAAAA,WAAAU,eAAA;AAUQ0K,UAAAC,CAAA,SAAA;AACZjK,6BAAuB;AACvBV,oBAAc,QAAQ2K,IAAI;AAAA,IAAA;AAC7BrL,aAAAU;AAAAV,aAAAoL;AAAAA,EAAAA,OAAA;AAAAA,UAAApL,EAAA,GAAA;AAAA,EAAA;AAAAsL,MAAAA;AAAAtL,MAAAA,WAAAoL,OAAApL,EAAAS,GAAAA,MAAAA,OAAA4K,MAAA;AALtB,UAAA,oBAAA,OAAgB,EAAA,WAAA,mCACZ,UAAA,oBAAC,iBAA8B,EAAA,cAAA5K,OAAM4K,MACJ,gBAAAD,IAAAA,CAIrC,EAAA,CAAA;AAAMpL,aAAAoL;AAAA,MAAA,GAAA,IAAA3K,OAAA4K;AAAArL,aAAAsL;AAAAA,EAAAA,OAAA;AAAAA,UAAAtL,EAAA,GAAA;AAAA,EAAA;AAAAuL,MAAAA;AAAA,MAAAvL,EAAAmB,GAAAA,MAAAA,kBAAAnB,WAAAsL,KAAA;AAZV,UAAA,oBAAC,QACSnK,EAAAA,MAAa,gBACLC,cAAAA,mBACJ,UAAA,MACV,WAAQ,MAERkK,UAQJ,IAAA,CAAA;AAAStL,aAAAmB;AAAAnB,aAAAsL;AAAAtL,aAAAuL;AAAAA,EAAAA,OAAA;AAAAA,UAAAvL,EAAA,GAAA;AAAA,EAAA;AAAAwL,MAAAA;AAAA,MAAAxL,EAAA,GAAA,MAAA4D,MAAA5D,EAAAwE,GAAAA,MAAAA,OAAAxE,EAAAiL,GAAAA,MAAAA,OAAAjL,WAAAuL,KAAA;wCAhSD,WAAA5H,IACZ,+BAAC,IAAoB,EAAA,UAAAG,IAAkB,WAAAC,IAEnCS,UAAAA;AAAAA,MAAAA;AAAAA,MA0BAyG;AAAAA,MAmPAC;AAAAA,MAEAK;AAAAA,IAAAA,EAgBJ,CAAA,EACJ,CAAA;AAAMvL,aAAA4D;AAAA5D,aAAAwE;AAAAxE,aAAAiL;AAAAjL,aAAAuL;AAAAvL,aAAAwL;AAAAA,EAAAA,OAAA;AAAAA,WAAAxL,EAAA,GAAA;AAAA,EAAA;AAnSNwL,SAAAA;AAmSM;AAhYP,SAAAxB,SAAAyB,SAAA;AAAA,MAuTyC3G,YAAU,gBAAc;AACjB,WAAA;AAAA,EAAA,OAAc;AAAA,QAChBA,YAAU,QAAM;AACd,aAAA;AAAA,IAAA,OAAyB;AAAA,UAC3BA,YAAU,YAAU;AAClB,eAAA;AAAA,MAAA,OAAgD;AAEhD,eAAA;AAAA,MAAwC;AAAA,IAAA;AAAA,EAAA;AAAA;AA9TxF,SAAAsE,SAAAsC,SAAA;AA2RqC,SAAA,oBAAC,cAEU5G,OAAI,SACVA,kBAAK6G,YAAa,EAAA,GAFC7G,eAAAA,OAAK,EAG7B;AAAa;AA/RlD,SAAAwE,QAAAsC,SAAA;AAAA,SAwR8D9G,QAAK6G;AAAc;AA4GxF,SAAAlJ,qBAAA1C,IAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAA8B,QAAA;AAAA,IAAAwB;AAAAA,IAAAoK;AAAAA,EAAA9L,IAAAA;AAWJ,QAAAyB,KAAAC,cAAc;AAAEG,MAAAA;AAAA5B,MAAAA,SAAA6L,oBAAA;AACbjK,SAAAgD,CAAYiH,MAAAA,mBAAmBjH,EAACC,OAAAC,KAAa;AAAC9E,WAAA6L;AAAA7L,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AAPhE,SAAA,oBAAC,WAAe,OAAA,eACD,MAAA,OACC,OAAA,SACnB,UAAA,oBAAC,WAAgB,EAAA,MAAA,SACK,iBACK,gBAAA,YACT,OAAAJ,IACG,UAAAI,IACG,aAAA,YAAW,CAAA,EACvC,CAAA;AAAU5B,WAAAwB;AAAAxB,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AATHoC,SAAAA;AASG;AC5aP,SAAS0J,mBAAmBxM,IAAoB;AACnD,SAAO,gBAAgBA,GAAGyM,WAAW,KAAK,cAAc;AAC5D;AAEO,SAASC,0BAA0BC,WAA4B;AAClE,SAAOA,YACD,gBAAgBA,UAAUF,WAAW,KAAK,cAAc,IAAI,gBAC5D;AACV;AAEO,SAASG,+BAA+BD,WAA4B;AACvE,SAAOA,YACD,gBAAgBA,UAAUF,WAAW,KAAK,cAAc,IAAI,qBAC5D;AACV;AAEgBI,SAAAA,UAAUC,aAAqBC,mBAAoC;AAC/E,SAAOA,oBACD,GAAGA,iBAAiB,IAAID,WAAW,KACnCA;AACV;AAEgBE,SAAAA,cAAcF,aAAqBC,mBAAoC;AACnF,QAAME,mBAAmBF,oBACnB,GAAGA,iBAAiB,IAAID,WAAW,KACnCA;AACN,SAAON,mBAAmBS,gBAAgB;AAC9C;ACMO,SAAAC,SAAAzM,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAkB,QAAA;AAAA,IAAAwM;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAhN,IAAAA;AAQgByB,MAAAA;AAAAxB,MAAAA,SAAAyM,YAAA;AAKlB,SAAA;AAAA,MAAAA;AAAAA,IAAAA;AAAczM,WAAAyM;AAAAzM,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAA2M,SAAA;AAEjB/K,SAAAnB,CAAA,WAAA;AACR,YAAAI,SAAA,CAAA;AAAuB,UACnBJ,OAAMgM,YAAA;AACNhM,eAAMgM,WAAAO,QAAAC,CAAAA,WAAA3G,UAAA;AACG2G,cAAAA,CAAAA,WAASC,OAAA;AACJT,mBAAAA,aAAc5L,OAAM4L,cAAiB,CAAA;AAC3C5L,mBAAM4L,WAAYnG,KAAK,IAAIzF,OAAM4L,WAAYnG,KAAK,KAAO;AACnDmG,mBAAAA,WAAYnG,KAAK,EAAA4G,QAAU;AAAA,UAAoD;AAEpFD,cAAAA,CAAAA,WAAS3N,IAAA;AACJmN,mBAAAA,aAAc5L,OAAM4L,cAAiB,CAAA;AAC3C5L,mBAAM4L,WAAYnG,KAAK,IAAIzF,OAAM4L,WAAYnG,KAAK,KAAO;AACnDmG,mBAAAA,WAAYnG,KAAK,EAAAhH,KAAO;AAAA,UAAkD;AAAA,QAAA,CAEvF;AAAA,MAAC;AAEN6N,YAAAA,WAAiBnI,QAAQnE,QAAM4L,cAAgBW,OAAAC,KAAYxM,QAAM4L,UAAY,EAACtG,UAAW;AACzFwG,gBAAUQ,QAAQ;AACXtM,aAAAA;AAAAA,IAAAA;AACVb,WAAA2M;AAAA3M,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AAtBF,SAAA;AAAA,MAAA0L,eACgB9L;AAAAA,MAAc+L,kBAAA;AAAA,MAAAC,YAEjB5L;AAAAA,IAAAA;AAoBf5B,WAAAwB;AAAAxB,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAzBDyN,QAAAA,SAAeC,gBAEZtL,EAuBF;AAED,QAAA;AAAA,IAAA3B,QAAAkN;AAAAA,IAAA9M,QAAA+M;AAAAA,EAA2BH,IAAAA;AAAOpL,MAAAA;AAAArC,MAAAA,SAAA0M,mBAAA1M,EAAA2N,CAAAA,MAAAA,SAAAlB,YAAA;AAExBpK,SAAAA,MAAA;AAAA,UACFqK,iBAAe;AACfA,wBAAgBjM,SAAMgM,UAAW;AAAA,MAAC;AAAA,IAAA;AAEzCzM,WAAA0M;AAAA,MAAA,CAAA,IAAAiB,SAAAlB;AAAAzM,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,EAAA,MAAA2N,SAAAlB,YAAA;AAAE,SAAA,CAAChM,SAAMgM,UAAA;AAAY,MAAA,EAAA,IAAAkB,SAAAlB;AAAAzM,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAJtBsC,YAAUD,IAIPK,EAAmB;AAACM,MAAAA;AAAAhD,MAAAA,UAAA8M,sBAAA9M,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAA4N,EAAAA,MAAAA,YAAA5N,EAAA,EAAA,MAAA+M,WAAA/M,UAAA4M,aAAA5M,EAAA,EAAA,MAAA2N,UAAA;AAGnB3K,SAAC,oBAAA,gBAAA,EAA+B,gBAAA,cACRvC,QAAAA,UACAI,QAAAA,UACQ+L,gBAAAA,WACNC,UACUC,oBACXC,QAAU,CAAA;AAAA/M,YAAA8M;AAAA9M,YAAA6M;AAAA7M,YAAA4N;AAAA5N,YAAA+M;AAAA/M,YAAA4M;AAAA5M,YAAA2N;AAAA3N,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAAyN,EAAAA,MAAAA,UAAAzN,UAAAgD,IAAA;AAPhCW,SAAC,oBAAA,QAAA,EAAc8J,OAAAA,QAClBzK,UAOJ,GAAA,CAAA;AAAShD,YAAAyN;AAAAzN,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AARF2D,SAAAA;AAQE;AAiBb,SAAAkK,eAAA9N,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAwB,QAAA;AAAA,IAAAQ;AAAAA,IAAAI;AAAAA,IAAAgM;AAAAA,IAAAiB;AAAAA,IAAAC;AAAAA,IAAAjB;AAAAA,IAAAC;AAAAA,EAAAhN,IAAAA;AAUpB,QAAA;AAAA,IAAAW;AAAAA,MAEIO,UAAU;AAEd,QAAA+M,CAAAA,qBAAAC,sBAAA,IAAsD1N,eAAAc,SAAmC;AACzF,QAAA6M,CAAAA,iBAAAC,kBAAA,IAA8C5N,eAAAc,SAAmC;AACjF,QAAA+M,CAAAA,WAAAC,YAAA,IAAkC9N,eAAAc,cAAoB;AAAEG,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAEjB1B,6BAAA8M;AAAStO,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAhDuO,QAAAA,oBAA0BhO,eAAAC,OAAagB,EAAS;AAChD,QAAAgN,iBAAuBD,kBAAiBE;AAAS7M,MAAAA;AAAA5B,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,EAAA8N,CAAAA,MAAAA,kBAAA9N,EAAAa,CAAAA,MAAAA,QAAA4L,cAAAzM,EAAA,CAAA,MAAAgO,uBAAAhO,EAAA,CAAA,MAAA+N,kBAAA/N,EAAA,CAAA,MAAAS,OAAAgM,YAAA;AAE9B7K,SAAAQ,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAkE;AAAAA,QAAAoI;AAAAA,MAAAtM,IAAAA;AAIhB,YAAAuM,YAAkBX,wBAAwBU;AAC1C,YAAAE,aAAmB/N,QAAM4L,cAAgB5L,QAAM4L,WAAanG,KAAK;AAC1D,aAAA,oBAAC,WAAiBA,EAAAA,OACGuG,UACMiB,gBACLa,WAAQ,WACPC,YACI,gBAAAb,kBAAkBY,WACpB,cAAMR,MAAAA,mBAAmB7H,KAAK,GAC7B,eAAAkI,eAAcK,IAAKpO,OAAMgM,WAAYnG,KAAK,GAAAhH,EAAe,EAAA,GACnE,GAAGoP,UAAU,EAAK;AAAA,IAAA;AAC5C1O,WAAA6M;AAAA7M,WAAA8N;AAAA,MAAA,CAAA,IAAAjN,QAAA4L;AAAAzM,WAAAgO;AAAAhO,WAAA+N;AAAA,MAAA,CAAA,IAAAtN,OAAAgM;AAAAzM,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAfD,QAAA8O,aAAmBlN;AAejBQ,MAAAA;AAAA,MAAApC,EAAA8N,CAAAA,MAAAA,kBAAA9N,SAAA+M,WAAA/M,EAAA,EAAA,MAAAU,iBAAAV,EAAAS,EAAAA,MAAAA,OAAAgM,YAAA;AAEkBrK,qBAAA;AAAA,UAAA,CACX2K,SAAO;AAAA;AAAA,MAAA;AAEZsB,uBAAiB;AACV,gBAAA,EAAAU,KAAAC,CAAA,SAAA;AAAA,YAAA,CACEA,MAAI;AAAA;AAAA,QAAA;AAGTC,cAAAA,WAAiBD,KAAIE;AAErB,cAAAC,YAAkBC,MAAAC,SAAAf,IAAmBW,QAAQ,CAAC;AAE9C,cAAAK,oBAA0B7O,OAAMgM;AAChC8C,cAAAA,kBAAwBC,sBAAsBL,SAAS;AAGvD,cAAAM,gBAAsBF,gBAAe1M,OAAAoK,CAAAA,cACzBqC,CAAAA,mBAAiBI,KAAAjG,CAAAA,MAAmBA,EAACnK,OAAQ2N,UAAS3N,EAAG,CACpE;AAEDmQ,sBAAazC,QAAA2C,CAAA,gBAAA;AACKC,yBAAAA,IAAK3C,YAAS3N,EAAG;AAAA,QAAA,CAClC;AACDoB,sBAAcoN,gBAAc,CAAA,GAAM2B,eAAkBH,GAAAA,iBAAiB,OAAO;AAAA,MAAA,CAACO,EAAAA,MAAAvG,OAAA,EAAAwG,QAI9DzB,MAAAA,kBAAkB,CAAC;AAAA,IAAA;AACzCrO,WAAA8N;AAAA9N,WAAA+M;AAAA/M,YAAAU;AAAA,MAAA,EAAA,IAAAD,OAAAgM;AAAAzM,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AA5BD,QAAA+P,cAAoB3N;AA4BnBC,MAAAA;AAAAK,MAAAA;AAAA,MAAA1C,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAKWb,6BAAC,UAAU,CAAA,CAAA;AACXK,6BAAC,YAAoB,EAAA,SAAA,aACC,WAAA,aAAY,UAElC,SAAA,CAAA;AAAa1C,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAL,SAAArC,EAAA,EAAA;AAAA0C,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAA,EAAA,MAAA8M,sBAAA9M,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAA+P,EAAAA,MAAAA,eAAA/P,UAAAoO,WAAA;AACZpL,SAAA8J,sBACG,qBAAC,QAAgBsB,EAAAA,SAAAA,WACC,UAAAvB,YAAYuB,WACb,SAAA,QACH,MAAA,SACG2B,SAAU,aACtB3B,UAAAA;AAAAA,MAAAA,gCAAa,kBAAuB,EAAA,MAAA,QAAU,CAAA,wBAAI;MAAkB;AAAA,IAEzE,EAAA,CAAA;AAASpO,YAAA8M;AAAA9M,YAAA6M;AAAA7M,YAAA+P;AAAA/P,YAAAoO;AAAApO,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,UAAAgD,IAAA;qCAdF,EAAA,WAAA,qCACXX,UAAAA;AAAAA,MAAAA;AAAAA,MACAK;AAAAA,MAICM;AAAAA,IASL,EAAA,CAAA;AAAMhD,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAA8N,EAAAA,MAAAA,kBAAA9N,UAAAU,eAAA;AAY6BoE,SAAAA,CAAAA,UAAWpE,cAAcoN,gBAAgBhJ,KAAK;AAAC9E,YAAA8N;AAAA9N,YAAAU;AAAAV,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAC7C,SAAA;AAAA,MAAA5D,IAAM;AAAA,MAAE4N,OAAS;AAAA,IAAA;AAAIlN,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAAhE,MAAAA,UAAA8O,cAAA9O,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAA,EAAA,MAAA8N,kBAAA9N,UAAA8D,MAAA9D,EAAAS,EAAAA,MAAAA,OAAAgM,YAAA;AATtD,UAAA,oBAAC,kBAA4BqB,6BACH,UAAA,kBACH,OAAArN,OAAMgM,YACHI,UACJ,MAAA,SACMiC,YACOb,mBAAqB,wBACtB,kBAAA,MACH,eAAAnK,IACE,iBAAAC,GAAwB,CAAA;AAAA/D,YAAA8O;AAAA9O,YAAA6M;AAAA7M,YAAA8N;AAAA9N,YAAA8D;AAAA,MAAA,EAAA,IAAArD,OAAAgM;AAAAzM,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAGlC,QAAAiE,MAAAiK,oBAAexM;AAAcwC,MAAAA;AAAA,MAAAlE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAE1BgB,UAAAA,MAAMiK,mBAAkBzM,MAAU;AAAC1B,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAAnE,MAAAA,EAAAkO,EAAAA,MAAAA,mBAAAlO,UAAA8N,kBAAA9N,EAAA,EAAA,MAAAiE,KAAA;AAH7D,UAAA,oBAAC,mBAAuBiK,wBACD,MAAAjK,KACU6J,gBACP,SAAA5J,IAAsC,CAAA;AAAAlE,YAAAkO;AAAAlO,YAAA8N;AAAA9N,YAAAiE;AAAAjE,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAA,MAAApE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAmE,KAAA;AAhBnE,UAAA,qBAAA,OAAgB,EAAA,WAAA,WAEbH,UAAAA;AAAAA,MAAAA;AAAAA,MAWAG;AAAAA,IAIJ,EAAA,CAAA;AAAQnE,YAAAgE;AAAAhE,YAAAmE;AAAAnE,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAA,MAAArE,EAAAoE,EAAAA,MAAAA,OAAApE,UAAA2D,IAAA;AACN,UAAA,qBAAA,OApCU,EAAA,WAAA,eACZA,UAAAA;AAAAA,MAAAA;AAAAA,MAiBAS;AAAAA,IAkBJ,EAAA,CAAA;AAAMpE,YAAAoE;AAAApE,YAAA2D;AAAA3D,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AApCNqE,SAAAA;AAoCM;AAzGd,SAAAiF,QAAA1E,GAAA;AA+DYoL,UAAAC,MAAcrL,CAAC;AAAC;AAyD5B,MAAMsL,YAAY3P,eAAM4P,KACpB,SAAAC,kBAAArQ,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA2B,QAAA;AAAA,IAAAqG;AAAAA,IAAAyH,gBAAAsC;AAAAA,IAAAvC;AAAAA,IAAAwC;AAAAA,IAAAC;AAAAA,IAAA1D;AAAAA,IAAA2D;AAAAA,IAAA5B;AAAAA,EAAA7O,IAAAA;AAWvB,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAMIO,UAAsB;AAE1BwP,QAAAA,oBAA0BlQ,eAAAC,QAAcsB,MAAMrB,QAAQ,GAAGqN,cAAc,IAAIxH,KAAK,MAAM,CAAC;AACvFyH,QAAAA,iBAAuBsC,YAAYI,kBAAiBhC;AAEtB,QAAAjN,KAAA,GAAGsM,cAAc,IAAIxH,KAAK;AAAM1E,MAAAA;AAAA,MAAA5B,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAAS,QAAA;AAA9CqB,SAAAA,MAAMrB,QAAQe,EAAgC;AAACxB,WAAAwB;AAAAxB,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA/D,QAAA0Q,UAAgB9O;AACiB,QAAAQ,KAAA,GAAG0L,cAAc,IAAIxH,KAAK;AAASjE,MAAAA;AAAA,MAAArC,EAAAoC,CAAAA,MAAAA,MAAApC,SAAAS,QAAA;AAAjDqB,SAAAA,MAAMrB,QAAQ2B,EAAmC;AAACpC,WAAAoC;AAAApC,WAAAS;AAAAT,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAArE,QAAA2Q,aAAmBtO;AAEnBuO,QAAAA,kBAAwBrQ,eAAAC,OAAamQ,UAAU;AAAEjO,MAAAA;AAAA1C,MAAAA,SAAA8N,kBAAA9N,EAAA0Q,CAAAA,MAAAA,WAAA1Q,EAAAsG,CAAAA,MAAAA,SAAAtG,EAAA,CAAA,MAAA2Q,cAAA3Q,UAAAU,iBAAAV,EAAA,EAAA,MAAA+N,gBAAA;AAEjCrL,SAAAA,MAAA;AAAA,WACPkO,gBAAenC,YAAaiC,WAAO,CAAKA,YAAY3C,gBAAc;AACnErN,sBAAc,GAAGoN,cAAc,IAAIxH,KAAK,QAAQqK,UAAU;AAAA,MAAC;AAE/DC,sBAAenC,UAAWkC;AAAAA,IAAAA;AAC7B3Q,WAAA8N;AAAA9N,WAAA0Q;AAAA1Q,WAAAsG;AAAAtG,WAAA2Q;AAAA3Q,YAAAU;AAAAV,YAAA+N;AAAA/N,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAA2Q,YAAA;AAAE3N,UAAC2N,UAAU;AAAC3Q,YAAA2Q;AAAA3Q,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AALfsC,iBAAAA,UAAgBI,IAKbM,EAAY;AAKU,QAAAW,KAAA,GAAGmK,cAAc,IAAIxH,KAAK;AAASxC,MAAAA;AAAA9D,MAAAA,UAAAwQ,eAAA;AAQ3B1M,SAAA0M,iBAAiB,oBAAC,iBAAsB,EAAA,MAAA,QAAU,CAAA;AAAAxQ,YAAAwQ;AAAAxQ,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AACzD+D,QAAAA,KAAAiB,QAAQ4J,YAAU1B,KAAO;AAAClJ,MAAAA;AAAA,MAAAhE,EAAAsQ,EAAAA,MAAAA,aAAAtQ,EAAA,EAAA,MAAA6M,YAAA7M,EAAA2D,EAAAA,MAAAA,MAAA3D,EAAA,EAAA,MAAA8D,MAAA9D,UAAA+D,IAAA;AATxCC,8BAAC,OAAY,EAAA,MAAAL,IACFiC,IAAAA,oBACO,WAAA,aACX,UAAO,MACGiH,UACL,MAAA,SACMyD,WACE,cAAA,OACC,cAAAxM,IACP,OAAAC,GAA6B,CAAA;AAAA/D,YAAAsQ;AAAAtQ,YAAA6M;AAAA7M,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAA/D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAA,EAAA,MAAA6M,YAAA7M,EAAA,EAAA,MAAA4O,YAAAtP,MAAAU,EAAA,EAAA,MAAAuQ,cAAA;AAE1C,UAAA,CAAC1D,YACE,oBAAC,OAAa,EAAA,OAAA,SAAoB,YAAC+B,YAAUtP,IACzC,UAAA,oBAAC,YACQ,EAAA,MAAA,SACM,cAAA,QACA,WAAA,OACF,SAAA,MAAMiR,aAAAA,GACf,UAAA,oBAAC,cAAmB,EAAA,MAAA,QAAO,CAAA,EAAA,CAC/B,EACJ,CAAA;AAAQvQ,YAAA6M;AAAA,MAAA,EAAA,IAAA+B,YAAAtP;AAAAU,YAAAuQ;AAAAvQ,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAA,MAAAlE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAiE,KAAA;AAEV,UAAA,qBAAA,OAvBU,EAAA,WAAA,2CACZD,UAAAA;AAAAA,MAAAA;AAAAA,MAWCC;AAAAA,IAWL,EAAA,CAAA;AAAMjE,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAA4O,YAAA1B,OAAA;AAEL0B,UAAAA,YAAU1B,SAAY,oBAAA,YAAA,EAAoB,SAAA,WACE,WAAA,yCACxC0B,UAAAA,YAAU1B,MACf,CAAA;AAAa,MAAA,EAAA,IAAA0B,YAAA1B;AAAAlN,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAA,MAAApE,EAAA,EAAA,MAAA4O,YAAAtP,IAAA;AAEZsP,UAAAA,YAAUtP,MAAS,oBAAA,YAAA,EAAoB,SAAA,WACE,WAAA,yCACrCsP,UAAAA,YAAUtP,GACf,CAAA;AAAa,MAAA,EAAA,IAAAsP,YAAAtP;AAAAU,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAmE,OAAAnE,EAAA,EAAA,MAAAoE,KAAA;AAlCjBC,UACIH,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAyBCC;AAAAA,MAKAC;AAAAA,IAGY,EAAA,CAAA;AAEdpE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAoE;AAAApE,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AApCHqE,SAAAA;AAoCG,GAEX,SAASwM,SAASC,WAA2BC,WAA2B;AAC7DD,SAAAA,UAAUxK,UAAUyK,UAAUzK,SACjCwK,UAAUhD,mBAAmBiD,UAAUjD,kBACvCgD,UAAU/C,mBAAmBgD,UAAUhD,kBACvC+C,UAAUN,kBAAkBO,UAAUP,iBACtCQ,MAAMF,UAAUlC,YAAYmC,UAAUnC,UAAU,KAChDkC,UAAUR,cAAcS,UAAUT;AAC1C,CACJ;AAEA,SAAAW,gBAAAlR,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAyB,QAAA;AAAA,IAAAqG;AAAAA,IAAA4K;AAAAA,IAAAC;AAAAA,IAAArD;AAAAA,EAAA/N,IAAAA;AAYrB,QAAA;AAAA,IAAAc;AAAAA,MAEII,UAAsB;AAAEO,MAAAA;AAAAxB,MAAAA,EAAA8N,CAAAA,MAAAA,kBAAA9N,SAAAa,UAAAb,EAAA,CAAA,MAAAsG,OAAA;AAEZA,SAAAA,UAAK5E,SAAiBI,MAAMjB,QAAQ,GAAGiN,cAAc,IAAIxH,KAAK,MAAM,IAAC5E;AAAY1B,WAAA8N;AAAA9N,WAAAa;AAAAb,WAAAsG;AAAAtG,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAjG,QAAAoR,UAAgB5P;AAAkFI,MAAAA;AAAA5B,MAAAA,SAAAmR,SAAA;AAKhFvP,SAAAyP,CAAU,WAAA,CAACH,SAAOC,QAAAA,IAASzP;AAAY1B,WAAAmR;AAAAnR,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAErDd,SAAC,oBAAA,aAAA,EAAY,QAAK,MAAE,UAAgB,mBAAA,CAAA;AAAcpC,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,EAAA8N,CAAAA,MAAAA,kBAAA9N,SAAAoR,WAAApR,EAAA,CAAA,MAAAsG,OAAA;AAE7CA,SAAAA,UAAK5E,UACF,qBAYM,OAXF,EAAA,UAAA;AAAA,MAAC,oBAAA,OAAA,EAAY,MAAA,GAAGoM,cAAc,IAAIxH,KAAK,QAC5BV,IAAAA,oBACJ,UAAA,MACO,OAAA,MACF,MAAA,SACQ,cAAA,OACN,OAAAZ,QAAQoM,OAAO,EAAC,CAAA;AAAA,0BAE7B,cAAoB,EAAA,OAAApM,QAAQoM,OAAO,GAC/BA,qBAAW,kCAChB;AAAA,IACJ,EAAA,CAAA;AAAMpR,WAAA8N;AAAA9N,WAAAoR;AAAApR,WAAAsG;AAAAtG,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,UAAAqC,IAAA;AAdd,SAAA,oBAAC,iBACIA,UAcL,GAAA,CAAA;AAAgBrC,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAAmR,SAAA;AAEhBnO,SAAC,oBAAA,eAAA,EACG,UAAC,oBAAA,QAAA,EACG,WAAQ,MACA,SAAA,YACCmO,SAAM,SACT,OAAA,WAAU,gBAEpB,EACJ,CAAA;AAAgBnR,YAAAmR;AAAAnR,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAA,EAAA,MAAAkR,QAAAlR,EAAA4B,EAAAA,MAAAA,MAAA5B,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAAgD,IAAA;AAhCZ,SAAA,qBAAA,UACK,UAAA,MACO,mBAAA,oBACVkO,MACQ,cAAAtP,IAEdQ,UAAAA;AAAAA,MAAAA;AAAAA,MACAM;AAAAA,MAiBAM;AAAAA,IAUJ,EAAA,CAAA;AAAShD,YAAAkR;AAAAlR,YAAA4B;AAAA5B,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAlCF2D,SAAAA;AAkCE;ACjWN,SAAA2N,cAAAvR,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAuB,QAAA;AAAA,IAAAsR;AAAAA,IAAAC;AAAAA,IAAAtE;AAAAA,IAAAuE;AAAAA,IAAA5E;AAAAA,IAAA6E,MAAAlQ;AAAAA,IAAAmQ;AAAAA,EAAA5R,IAAAA;AAMI2R,QAAAA,OAAAlQ,OAAcE,SAAP,UAAPF;AAAcI,MAAAA;AAAA5B,MAAAA,SAAAuR,MAAA9R,QAAAO,SAAAwR,MAAA;AAiBzB5P,SAAAgQ,CAA4BJ,YAAAA,KAAI9Q,cAAe6Q,MAAK9R,MAAOmS,OAAO;AAAC,MAAA,CAAA,IAAAL,MAAA9R;AAAAO,WAAAwR;AAAAxR,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,EAAA2R,CAAAA,MAAAA,sBAAA3R,SAAA6M,YAAA7M,EAAA,CAAA,MAAAuR,MAAAzM,SAAA9E,EAAAkN,CAAAA,MAAAA,SAAAlN,SAAA0R,QAAA1R,EAAA,CAAA,MAAA4B,IAAA;AAP7DQ,SAAC,oBAAA,wBAAA,EACf8K,OACDwE,MACI,UAAA,SACH,OAAAH,MAAKzM,OACF+H,UACU8E,oBACL,eAAA/P,GAAsE,CAAA;AAAA5B,WAAA2R;AAAA3R,WAAA6M;AAAA,MAAA,CAAA,IAAA0E,MAAAzM;AAAA9E,WAAAkN;AAAAlN,WAAA0R;AAAA1R,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAPzF,QAAA6R,mBAAyBzP;AAOiE,MAEtFqP,SAAO;AAAApP,QAAAA;AAAA,QAAArC,EAAA6R,EAAAA,MAAAA,oBAAA7R,UAAAyR,SAAA;AAEHpP,WAAC,oBAAA,SAAA,EACUoP,OAAAA,SACS,UACpB,iBAAA,CAAA;AAAUzR,cAAA6R;AAAA7R,cAAAyR;AAAAzR,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAHVqC,WAAAA;AAAAA,EAGU;AAEXwP,SAAAA;AAAgB;AC/BpB,SAAAC,0BAAA/R,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAmC,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAKtC,QAAA;AAAA,IAAAU;AAAAA,IAAAE;AAAAA,MAAiCM,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,SAAA6M,UAAA;oCASrB,EAAA,WAAA,cACZ,UAAA,oBAAC,OAAYkF,EAAAA,MARE,uBASH,MAAA,YACPnQ,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA2P;AAAAA,QAAAC;AAAAA,MAAA5P,IAAAA;AACS,aAAA,oBAAC,iBACMiL,UACH,OAAA,YACE,SAAA,kEACH2E,MACCD,MAAQ,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,WAAA6M;AAAA7M,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAA6M,UAAA;oCAEU,EAAA,WAAA,cAEZ,UAAA,oBAAC,OAAYmF,EAAAA,MArBA,qBAsBD,MAAA,YACP5P,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAmP,OAAAU;AAAAA,QAAAT,MAAAU;AAAAA,MAAA9P,IAAAA;AACS,aAAA,oBAAC,eACMyK,EAAAA,UACH,OAAA,UACE,SAAA,yDACH2E,MAAAA,QACCD,OAAI,QAAI,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,WAAA6M;AAAA7M,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAAW,gBAAAX,EAAA,CAAA,MAAAS,QAAA;AAELqB,SAAAA,MAAMrB,QApCY,qBAoCc,KAAK,oBAAA,SAAgB,WAAA,eAClD,UAAC,oBAAA,oBAAA,EACaoM,UACH,OAAA/K,MAAMrB,QAtCK,4BAsC4B,GACvC,OAAA,oBACD0R,MAxCY,8BAyCb,MAAA,SACKxR,UAAW,aAC7B,CAAA,EAAA,CAAA;AAAMX,WAAA6M;AAAA7M,WAAAW;AAAAX,WAAAS;AAAAT,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AAtCVC,SACIb,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAcAI;AAAAA,MAeCQ;AAAAA,IAQK,EAAA,CAAA;AACPpC,WAAAwB;AAAAxB,WAAA4B;AAAA5B,YAAAoC;AAAApC,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAvCHqC,SAAAA;AAuCG;AClDJ,SAAA+P,yBAAArS,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAkC,QAAA;AAAA,IAAAkG;AAAAA,IAAAkM;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAA7F;AAAAA,EAAA9M,IAAAA;AAsBrC,QAAA;AAAA,IAAAU;AAAAA,IAAAE;AAAAA,IAAAE;AAAAA,MAIII,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,SAAAa,QAAA;AAUKiB,SAAAA,MAAMjB,QAJD,oBAI0B;AAACb,WAAAa;AAAAb,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAArD,QAAA2S,eAAqBnR;AAAiCI,MAAAA;AAAA5B,MAAAA,SAAAS,QAAA;AAEtDmS,UAAAA,eAAqB9Q,MAAMrB,QAND,oBAM0B;AACzBmB,SAAA,OAAOgR,iBAAiB,WAAWA,eAAeC,gBAAgBD,YAAY;AAAC5S,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA1G,QAAA8S,qBAA2BlR;AAAgFQ,MAAAA;AAAApC,MAAAA,SAAA6M,UAAA;6BAIlG,6BAAoCA,SAAW,CAAA;AAAA7M,WAAA6M;AAAA7M,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAAqS,WAAA;AAI3ChQ,SAAAgQ,aAAa,oBAAA,OAAgB,EAAA,WAAA,cAC1B,UAAA,oBAAC,OAAYU,EAAAA,MAfD,wBAgBA,MAAA,YACPrQ,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA6O;AAAAA,QAAAC;AAAAA,MAAA9O,IAAAA;AAAiC,iCACvB,eACG,EAAA,OAAA,aACGmK,UACJ2E,MACCD,MAAQ,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,WAAA6M;AAAA7M,WAAAqS;AAAArS,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA6M,CAAAA,MAAAA,YAAA7M,UAAA0S,WAAA;AAELhQ,SAAAgQ,aAAa,oBAAA,OAAgB,EAAA,WAAA,cAC1B,UAAA,oBAAC,OAAYM,EAAAA,MA3BD,wBA4BA,MAAA,YACPhQ,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAuO,OAAAU;AAAAA,QAAAT,MAAAU;AAAAA,MAAAlP,IAAAA;AACS,aAAA,oBAAC,iBACG,OAAA,aACG6J,UACJ2E,MAAG,QACFD,OAAI,QAAI,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,WAAA6M;AAAA7M,YAAA0S;AAAA1S,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAyS,MAAA;AAELzP,SAAAyP,QAAQ,oBAAA,OAAgB,EAAA,WAAA,cACrB,UAAA,oBAAC,OAAYQ,EAAAA,MA3CN,mBA4CK,MAAA,YACPtP,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA4N,OAAA2B;AAAAA,QAAA1B,MAAA2B;AAAAA,MAAAxP,IAAAA;AACS,aAAA,oBAAC,iBACG,OAAA,QACGkJ,UACJ2E,MAAG,QACFD,OAAI,QAAI,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,YAAA6M;AAAA7M,YAAAyS;AAAAzS,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,MAAA1C,EAAA,EAAA,MAAAgD,IAAA;qCAvCM,EAAA,WAAA,uCAEXX,UAAAA;AAAAA,MAAAA;AAAAA,MAaAK;AAAAA,MAaAM;AAAAA,IAaL,EAAA,CAAA;AAAMhD,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAA,EAAA,MAAA6M,YAAA7M,EAAAW,EAAAA,MAAAA,gBAAAX,EAAAmG,EAAAA,MAAAA,UAAAnG,UAAAS,QAAA;AAGD0F,SAAAA,8BAAU,OAAgB,EAAA,WAAA,cACvB,UAAC,oBAAA,oBAAA,EACU,OAAArE,MAAMrB,QA/DR,mBA+DgC,GAC9B,OAAA,gBACD2S,MAjED,qBAkEA,MAAA,UACA,MAAA,SAEKvG,UACAlM,UAAW,aAC7B,CAAA,EAAA,CAAA;AAAMX,YAAA6M;AAAA7M,YAAAW;AAAAX,YAAAmG;AAAAnG,YAAAS;AAAAT,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAA6M,YAAA7M,EAAAW,EAAAA,MAAAA,gBAAAX,EAAAwS,EAAAA,MAAAA,OAAAxS,UAAAS,QAAA;AAEL+R,SAAAA,2BAAO,OAAgB,EAAA,WAAA,cACpB,UAAC,oBAAA,oBAAA,EAA0B,OAAA1Q,MAAMrB,QAzE3B,gBAyEgD,GAC3B,OAAA,cACD4S,MA3EpB,kBA4EmB,MAAA,UACA,MAAA,SAEKxG,UACAlM,UAAW,aAC7C,CAAA,EAAA,CAAA;AAAMX,YAAA6M;AAAA7M,YAAAW;AAAAX,YAAAwS;AAAAxS,YAAAS;AAAAT,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAA,EAAA,MAAA6M,YAAA7M,EAAAW,EAAAA,MAAAA,gBAAAX,EAAAuS,EAAAA,MAAAA,OAAAvS,UAAAS,QAAA;AAEL8R,UAAAA,2BAAO,OAAgB,EAAA,WAAA,cACpB,UAAC,oBAAA,oBAAA,EAA0B,OAAAzQ,MAAMrB,QAnF3B,gBAmFgD,GAC3B,OAAA,cACD6S,MArFpB,kBAsFmB,MAAA,UACA,MAAA,SAEKzG,UACAlM,UAAW,aAC7C,CAAA,EAAA,CAAA;AAAMX,YAAA6M;AAAA7M,YAAAW;AAAAX,YAAAuS;AAAAvS,YAAAS;AAAAT,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAAjE,MAAAA,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAA8D,MAAA9D,EAAA,EAAA,MAAA+D,IAAA;sCAjCM,EAAA,WAAA,uCACXD,UAAAA;AAAAA,MAAAA;AAAAA,MAYAC;AAAAA,MAWAC;AAAAA,IAWL,EAAA,CAAA;AAAMhE,YAAAgE;AAAAhE,YAAA8D;AAAA9D,YAAA+D;AAAA/D,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAA,MAAAlE,EAAA,EAAA,MAAA6M,YAAA7M,EAAAsS,EAAAA,MAAAA,WAAAtS,EAAA2S,EAAAA,MAAAA,gBAAA3S,UAAA8S,oBAAA;AAEL5O,UAAAoO,WAAW,qBAAA,OAAgB,EAAA,WAAA,eACxB,UAAA;AAAA,MAAA,oBAAC,OAAYiB,EAAAA,MA9FC,sBA+FH3N,IAAiBA,oBACd,OAAA,iBACF,MAAA,SACKiH,UACHiG,OAAiB,oBACjB,OAAA9N,QAAQ2N,YAAY,GAAC;AAAA,MACnC,oBAAC,gBAAoB,OAAA3N,QAAQ2N,YAAY,GACpCA,UAAAA,eAAe,uBAAuB,iCAC3C;AAAA,IACJ,EAAA,CAAA;AAAM3S,YAAA6M;AAAA7M,YAAAsS;AAAAtS,YAAA2S;AAAA3S,YAAA8S;AAAA9S,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAAoC,EAAAA,MAAAA,MAAApC,UAAA2D,IAAA;sCA/FM,EAAA,WAAA,2BAEZvB,UAAAA;AAAAA,MAAAA;AAAAA,MAEAuB;AAAAA,MA2CAM;AAAAA,MAqCCC;AAAAA,IAaL,EAAA,CAAA;AAAMlE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAoC;AAAApC,YAAA2D;AAAA3D,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAjGNmE,SAAAA;AAiGM;AC5IP,SAAAqP,wBAAAzT,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAiC,QAAA;AAAA,IAAAsS,KAAA/Q;AAAAA,IAAAgR,KAAA5Q;AAAAA,IAAAiL;AAAAA,EAAA9M,IAAAA;AACIwS,QAAAA,MAAA/Q,OAAUE,gBAAVF;AACAgR,QAAAA,MAAA5Q,OAAUF,gBAAVE;AAQxC,QAAA;AAAA,IAAAnB;AAAAA,IAAAE;AAAAA,MAGIM,UAAU;AAAEmB,MAAAA;AAAApC,MAAAA,SAAA6M,UAAA;6BAQP,6BAAoCA,SAAW,CAAA;AAAA7M,WAAA6M;AAAA7M,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAA6M,YAAA7M,EAAAW,CAAAA,MAAAA,gBAAAX,EAAAwS,CAAAA,MAAAA,OAAAxS,SAAAS,QAAA;AAE/C+R,SAAAA,2BAAO,OAAgB,EAAA,WAAA,cACpB,UAAC,oBAAA,oBAAA,EAA0B,OAAA1Q,MAAMrB,QATvB,gBAS4C,GACxBoM,UACH,OAAA,cACDwG,MAZhB,kBAae,MAAA,UACA,MAAA,SACK1S,UAAW,aAC7C,CAAA,EAAA,CAAA;AAAMX,WAAA6M;AAAA7M,WAAAW;AAAAX,WAAAwS;AAAAxS,WAAAS;AAAAT,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAA6M,YAAA7M,EAAAW,CAAAA,MAAAA,gBAAAX,EAAAuS,CAAAA,MAAAA,OAAAvS,UAAAS,QAAA;AACL8R,SAAAA,2BAAO,OAAgB,EAAA,WAAA,cACpB,UAAC,oBAAA,oBAAA,EAA0B,OAAAzQ,MAAMrB,QAjBvB,gBAiB4C,GACxBoM,UACH,OAAA,cACDyG,MApBhB,kBAqBe,MAAA,UACA,MAAA,SACK3S,UAAW,aAC7C,CAAA,EAAA,CAAA;AAAMX,WAAA6M;AAAA7M,WAAAW;AAAAX,WAAAuS;AAAAvS,YAAAS;AAAAT,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,IAAA;qCArBM,EAAA,WAAA,2BAEZN,UAAAA;AAAAA,MAAAA;AAAAA,MAECC;AAAAA,MASAK;AAAAA,IASL,EAAA,CAAA;AAAM1C,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAtBNgD,SAAAA;AAsBM;AC3CP,SAAAyQ,gBAAA1T,IAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAyB,QAAA;AAAA,IAAAyT;AAAAA,EAAA3T,IAAAA;AAEwByB,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAQxC,SAAA,qBAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,MAAA,oBAAC,UACD,EAAA;AAAA,0BAAC,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,cAAA;AAAA,IACJ,EAAA,CAAA;AAAMlD,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAA0T,UAAA;AAXd,SAAA,oBAAC,iBACsB,EAAA,mBAAI,OACd,SAAA,MACM,gBAAA,OAEX,OAAAlS,IASI,SAEZ,CAAA;AAAkBxB,WAAA0T;AAAA1T,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAhBlB4B,SAAAA;AAgBkB;ACfnB,SAAS+R,kBAAkB;AAAA,EACIC;AAAAA,EACAhH;AAAAA,EACAC;AAAAA,EACAnJ;AAAAA,EACAoJ;AAAAA,EACAC;AAQtC,GAAG;AAEO,QAAA;AAAA,IACFtM;AAAAA,IACAoT;AAAAA,IACAnT;AAAAA,MACAO,UAA0B;AAE9B,QAAM6S,kBAAkBC;AAElBjG,QAAAA,iBAAiB8F,cAAc,kBAAkB;AAEjDI,QAAAA,eAAelS,MAAMrB,QAAQ,cAAc;AAE3CwT,QAAAA,mBAAmBnS,MAAMrB,QAAQqN,cAAc;AAC/CrB,QAAAA,aAAgCyH,QAAQ,MAAM;AAChD,QAAI,CAACD,oBAAoB,OAAOA,qBAAqB,kBAC1C,CAAA;AACJE,WAAAA,kBAAkBF,gBAAgB,KAAK;EAAE,GACjD,CAACA,gBAAgB,CAAC;AAEfvH,QAAAA,kBAAkBA,CAAC5H,UAA6B;AAClD,QAAI,CAACrE,OACD;AACJC,kBAAcoN,gBAAgBhJ,KAAK;AACnC,QAAI,CAAC8O,aAAa;AACd,YAAMQ,UAAUtP,MAAMjC,OAAO4G,CAAAA,MAAKzE,QAAQyE,GAAGnK,EAAE,CAAC,EAAE8G,IAAI,CAACqD,QAAWA,IAAEnK,EAAE;AACtE,UAAI0U,gBAAgB,CAACI,QAAQrR,SAASiR,YAAY,GAAG;AACjDtT,sBAAc,gBAAgBgB,MAAS;AACvCoS,wBAAgB5C,KAAK;AAAA,UACjBmD,MAAM;AAAA,UACNC,SAAS;AAAA,QAAA,CACZ;AAAA,MACL;AAAA,IACJ;AAAA,EAAA;AAGJ,SAEQ,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAC,oBAAA,OAAA,EAAI,WAAW,eACZ,UAAC,oBAAA,UAAA,EAAS,YACA,WACA,UACA,oBACA,SAAUnH,CAAa,aAAA;AACLW,oBAAAA,gBAAgBX,WAAW,8CAA8CzL,MAAS;AAAA,IACpG,GACA,SAASqL,UACH,MAAMA,UACHgC,KAAKwF,CAAAA,QAAOA,IAAInO,IAAIoO,CAAS/T,UAAAA,OAAOnB,MAAMwC,MAAM0S,OAAO/T,OAAOnB,EAAE,CAAC,EAAEuD,OAAOmC,OAAO,CAAC,IACrFtD,QACN,gBAAA,CAAiC,EAC/C,CAAA;AAAA,IAEC,oBAAA,OAAA,EAAI,WAAW,eAEZ,+BAAC,iBACI,EAAA,UAAA;AAAA,MAAA,CAACkS,eACE,oBAAC,0BAAyB,EAAA,UACA,WAAyB,CAAA;AAAA,MACtDA,eACI,oBAAA,yBAAA,EAAwB,SAAqB,CAAA;AAAA,IAAA,EAAA,CACtD,EAEJ,CAAA;AAAA,IAEC,CAACA,eAAgB,oBAAA,OAAA,EAAI,WAAW,eAE7B,UAAA,oBAAC,QACG,EAAA,UACA,UAAU,gBACV,WAAW,MACX,eAAe,CAAC9O,YAAkB;AAC9BpE,oBAAc,gBAAgBoE,OAAK;AAAA,IAAA,GAEvC,MAAM,SACN,OAAO,iBACP,OAAOkP,gBAAgB,IACtBvH,UACI5J,WAAAA,OAAQoK,CAAcjI,cAAAA,QAAQiI,WAAW3N,EAAE,CAAC,EAC5C8G,IAAK6G,CACF,gBAAA,oBAAC,YACW,EAAA,OAAOA,YAAU3N,IAAImV,SAAAA,GAC5BxH,UAAAA,YAAUC,SAFED,YAAU3N,EAG3B,CACH,EACT,CAAA,GAEJ;AAAA,EACJ,EAAA,CAAA;AAER;AClGA,MAAMoV,YAAoC;AAAA,EACtC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,UAAU;AACd;AAEO,SAAAC,qBAAA5U,IAAA;AAAAC,QAAAA,IAAAC,EAAA,GAAA;AAA8B,QAAA;AAAA,IAAA2U;AAAAA,IAAAC;AAAAA,IAAAhI;AAAAA,EAAA9M,IAAAA;AAUjC,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAGIO,UAAU;AAEd6T,QAAAA,kBAAwBF,WAAW,eAAe;AAClDG,QAAAA,gBAAsB,GAAGD,eAAe;AAGxCE,QAAAA,WAAiB,GAAGF,eAAe;AACnCG,QAAAA,UAAgB,GAAGH,eAAe;AAClCI,QAAAA,cAAoB,GAAGJ,eAAe;AACtCK,QAAAA,WAAiB,GAAGL,eAAe;AAAYtT,MAAAA;AAAA,MAAAxB,EAAAgV,CAAAA,MAAAA,YAAAhV,SAAAS,QAAA;AAEzBqB,SAAAA,MAAMrB,QAAQuU,QAAQ,KAAK;AAAehV,WAAAgV;AAAAhV,WAAAS;AAAAT,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAhE,QAAAoV,gBAAsB5T;AAA2CI,MAAAA;AAAA,MAAA5B,EAAAkV,CAAAA,MAAAA,eAAAlV,SAAAS,QAAA;AACxCqB,SAAAA,MAAMrB,QAAQyU,WAAW,KAAK;AAAGlV,WAAAkV;AAAAlV,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA1D,QAAAqV,mBAAyBzT;AAAkCgC,MAAAA;AAAA0R,MAAAA;AAAAtR,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAhC,MAAAA;AAAAC,MAAAA;AAAAK,MAAAA;AAAAM,MAAAA;AAAAW,MAAAA;AAAAG,MAAAA;AAAAC,MAAAA;AAAA,MAAA/D,EAAA+U,CAAAA,MAAAA,iBAAA/U,EAAA,CAAA,MAAA6M,YAAA7M,SAAA6U,YAAA7U,EAAAgV,CAAAA,MAAAA,YAAAhV,EAAA,EAAA,MAAAoV,iBAAApV,EAAAiV,EAAAA,MAAAA,WAAAjV,EAAA,EAAA,MAAAU,iBAAAV,UAAAkV,eAAAlV,EAAAqV,EAAAA,MAAAA,oBAAArV,EAAA,EAAA,MAAAmV,YAAAnV,UAAAS,QAAA;AAC3D8U,UAAAA,eAAqBzT,MAAMrB,QAAQwU,OAAO;AAAE5Q,QAAAA;AAAA,QAAArE,EAAA+U,EAAAA,MAAAA,iBAAA/U,UAAAS,QAAA;AAExB4D,aAAAvC,MAAMrB,QAAQsU,aAAa;AAAC/U,cAAA+U;AAAA/U,cAAAS;AAAAT,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,aAAArE,EAAA,EAAA;AAAA,IAAA;AAAhD,UAAAwV,cAAoBnR;AACpB,UAAAoR,iBAA6CrG,MAAAsG,QAAcF,WAAW,IAAIA,cAAW9T;AACrF,UAAAiU,uBAA6B,CAACF,kBAAkBA,eAActP,WAAa;AAAC7B,QAAAA;AAAA,QAAAtE,EAAA+U,EAAAA,MAAAA,iBAAA/U,UAAAU,eAAA;AAElD4D,aAAAQ,CAAA,UAAA;AAAA,YAAA,CACjBA,OAAK;AAAEpE,wBAAcqU,eAAarT,MAAW;AAAA,QAAA,OAAC;AAK9ChB,wBAAcqU,eAAejQ,KAAK;AAAA,QAAC;AAAA,MAAA;AAC3C9E,cAAA+U;AAAA/U,cAAAU;AAAAV,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,aAAAtE,EAAA,EAAA;AAAA,IAAA;AAPD,UAAA4V,oBAA0BtR;AAS1BuR,UAAAA,sBAA4B,OAAOT,kBAAkB;AACrDU,UAAAA,yBAA+B,OAAOT,qBAAqB;AAKtB,UAAA;AAExBU,SAAAA;AAAe,QAAA/V,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAER,YAAA,qBAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,QAAA,oBAAC,gBACD,EAAA;AAAA,4BAAC,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,sBAAA;AAAA,MACJ,EAAA,CAAA;AAAMlD,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAGmC,SAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,UAAAyV,gBAAA;AAS1BlR,aAAAkR,kBAAoB;AAAAzV,cAAAyV;AAAAzV,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,aAAAvE,EAAA,EAAA;AAAA,IAAA;AAEpBwE,UAAAA,OAAAmR,uBAAoBjU,SAAe;AAAoB+C,QAAAA;AAAA,QAAAzE,EAAA+U,EAAAA,MAAAA,iBAAA/U,UAAAU,eAAA;AAQ7D+D,aAAA2I,OAAA4I,QAAAtB,SAAwB,EAACtO,IAAA1B,CAAAA,SAAA;AAAM,cAAA,CAAAkH,SAAAsB,KAAA,IAAAxI;AAAc,eACzC,qBAAA,iBAAA,EAAmCI,OAAI,SAAc,WAAA,2BAGlD,UAAA;AAAA,UAAA,oBAAA,OAAA,EAAgB,WAAA,uBAEhB,OAAA;AAAA,8BACC,QAAa,EAAA,MAAA,SACG,SAAA,QACA,SAAAF,CAAA,MAAA;AACLA,cAACqR,eAAgB;AACjBrR,cAACsR,gBAAiB;AAAC,mBACZxV,cAAcqU,eAAgBjQ,CAAAA,OAAK,CAAC;AAAA,UAAA,GAC5C,UAEX,QAAA;AAAA,QAAA,EAAA,GAdkBA,OAetB;AAAA,MAAA,CACH;AAAC9E,cAAA+U;AAAA/U,cAAAU;AAAAV,cAAAyE;AAAAA,IAAAA,OAAA;AAAAA,aAAAzE,EAAA,EAAA;AAAA,IAAA;AAAAA,QAAAA,UAAA+U,iBAAA/U,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAA4V,EAAAA,MAAAA,qBAAA5V,EAAA,EAAA,MAAAuE,QAAAvE,UAAAwE,QAAAxE,EAAA,EAAA,MAAAyE,MAAA;AAlCV,YAAA,oBAAA,SAAgB,WAAA,eAEZ,8BAAC,aACc,EAAA,WAAA,UACE,aAAA,0BACHoI,UACJkI,MAAY,eACX,OAAAxQ,MACQqR,eAAgB,mBACxB,OAAApR,MACO,cAAAwF,UAObvF,UAAAA,KAmBL,CAAA,EACJ,CAAA;AAAMzE,cAAA+U;AAAA/U,cAAA6M;AAAA7M,cAAA4V;AAAA5V,cAAAuE;AAAAvE,cAAAwE;AAAAxE,cAAAyE;AAAAzE,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,YAAAhE,EAAA,EAAA;AAAA,IAAA;AAOe,UAAA0E,OAAAmR,uBAAuBhJ;AAC1BlI,UAAAA,OAAAkR,sBAAsB,MAAMT;AAAapV,QAAAA,EAAAgV,EAAAA,MAAAA,YAAAhV,UAAA0E,QAAA1E,EAAA,EAAA,MAAA2E,MAAA;AAN3DV,uCAAgB,EAAA,WAAA,eACZ,UAAC,oBAAA,OAAA,EAAY+Q,gBACFpP,IAAAA,oBACG,OAAA,aACD,MAAA,SACI,UAAAlB,MACH,OAAAC,KAAyC,CAAA,EAE3D,CAAA;AAAM3E,cAAAgV;AAAAhV,cAAA0E;AAAA1E,cAAA2E;AAAA3E,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAKe,UAAA+E,OAAA+Q,0BAA0BjJ;AAE7B5H,UAAAA,OAAA6Q,yBAAyB,MAAMT;AAAgBnQ,QAAAA;AAAAlF,QAAAA,EAAAkV,EAAAA,MAAAA,eAAAlV,UAAA+E,QAAA/E,EAAA,EAAA,MAAAiF,MAAA;AAL7DC,aAAC,oBAAA,OAAYgQ,EAAAA,MAAU,aACZtP,IAAAA,oBACG,OAAA,gBACG,UAAAb,MACJ,MAAA,SACC,OAAAE,KACZ,CAAA;AAAAjF,cAAAkV;AAAAlV,cAAA+E;AAAA/E,cAAAiF;AAAAjF,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,aAAAlF,EAAA,EAAA;AAAA,IAAA;AAAAmF,QAAAA;AAAA,QAAAnF,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACFiC,YAAC,qBAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBACvC,UAAA;AAAA,QAAA,oBAAA,OAAG,UAEyB,mFAAA,CAAA;AAAA,6BASvB,MAPD,EAAA,UAAA;AAAA,UAAA,oBAAoD,QAAP,UAAE,0CAAA,CAAA;AAAA,UAC/C,oBAAsE,kBAAL,4DAAA,CAAA;AAAA,UACjE,4BAAK,UAA8C,8CAAA,CAAA;AAAA,UACnD,oBAA0C,kBAAL,gCAAA,CAAA;AAAA,UACrC,4BAAK,UAAmC,mCAAA,CAAA;AAAA,UACxC,oBAAA,QAAK,UAA+B,+BAAA,CAAA;AAAA,UACpC,oBAAA,QAAyD,UAAE,sDAAA,CAAA;AAAA,QAAA,GAC/D;AAAA,MACJ,EAAA,CAAA;AAAanF,cAAAmF;AAAAA,IAAAA,OAAA;AAAAA,YAAAnF,EAAA,EAAA;AAAA,IAAA;AAAAoF,QAAAA;AAAA,QAAApF,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,UAAA;AAIRzP,YAAAC,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAkM;AAAAA,UAAAC;AAAAA,QAAAnM,IAAAA;AAIS,eAAA,oBAAC,iBACG,OAAA,oCACG,UAAAwP,YAAYhI,UAChB2E,MACCD,MAAQ,CAAA;AAAA,MAAA;AACtBvR,cAAA6M;AAAA7M,cAAA6U;AAAA7U,cAAAoF;AAAAA,IAAAA,OAAA;AAAAA,YAAApF,EAAA,EAAA;AAAA,IAAA;AAAAqF,QAAAA;AAAA,QAAArF,EAAAmV,EAAAA,MAAAA,YAAAnV,UAAAoF,KAAA;AAXLC,gCAAC,OAAY8P,EAAAA,gBACD,MAAA,YACP/P,UAUL,IAAA,CAAA;AAAQpF,cAAAmV;AAAAnV,cAAAoF;AAAApF,cAAAqF;AAAAA,IAAAA,OAAA;AAAAA,YAAArF,EAAA,EAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAA,QAAAtF,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAERoC,gCAAC,YAAoB,EAAA,SAAA,WAAsB,WAAA,oBAAoB,UAM/D,8JAAA,CAAA;AAAatF,cAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAA,EAAAkF,EAAAA,MAAAA,QAAAlF,UAAAqF,KAAA;wCA3CD,EAAA,WAAA,eACZH,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,QAeAE;AAAAA,QAcAC;AAAAA,MAOJ,EAAA,CAAA;AAAMtF,cAAAkF;AAAAlF,cAAAqF;AAAArF,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAEuB,SAAA;AACxB4F,SAAAA;AAAyBqP,SAAAA;AACQ,SAAA;AACc,SAAA;AACf,SAAA;AACNtR,SAAA4R,iBAAY7T,UAAkB6T,iBAAY,OAAYA,aAAYd,SAAc,IAAA;AAAEzU,WAAA+U;AAAA/U,WAAA6M;AAAA7M,WAAA6U;AAAA7U,WAAAgV;AAAAhV,YAAAoV;AAAApV,YAAAiV;AAAAjV,YAAAU;AAAAV,YAAAkV;AAAAlV,YAAAqV;AAAArV,YAAAmV;AAAAnV,YAAAS;AAAAT,YAAA4D;AAAA5D,YAAAsV;AAAAtV,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAoE;AAAApE,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAH,SAAA5D,EAAA,EAAA;AAAAsV,SAAAtV,EAAA,EAAA;AAAAgE,UAAAhE,EAAA,EAAA;AAAAiE,UAAAjE,EAAA,EAAA;AAAAkE,UAAAlE,EAAA,EAAA;AAAAmE,UAAAnE,EAAA,EAAA;AAAAoE,UAAApE,EAAA,EAAA;AAAAoC,SAAApC,EAAA,EAAA;AAAAqC,SAAArC,EAAA,EAAA;AAAA0C,SAAA1C,EAAA,EAAA;AAAAgD,SAAAhD,EAAA,EAAA;AAAA2D,SAAA3D,EAAA,EAAA;AAAA8D,SAAA9D,EAAA,EAAA;AAAA+D,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAA,MAAArE,EAAAiV,EAAAA,MAAAA,WAAAjV,UAAAU,eAAA;AAC/E2D,UAAA6C,CAAA,QAAA;AACNwE,YAAAA,UAAc9G,IAACC,OAAAC;AAAc,UACzBA,YAAU,IAAE;AAAEpE,sBAAcuU,SAAOvT,MAAW;AAAA,MAAA,OAAC;AAChCuT,sBAAAA,SAASkB,SAASrR,OAAK,CAAC;AAAA,MAAC;AAAA,IAAA;AAC/C9E,YAAAiV;AAAAjV,YAAAU;AAAAV,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAAtE,MAAAA,EAAA4D,EAAAA,MAAAA,MAAA5D,EAAAqE,EAAAA,MAAAA,OAAArE,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,MAAA1C,EAAA,EAAA,MAAAgD,MAAAhD,EAAA,EAAA,MAAA2D,IAAA;AATrBW,UAAC,oBAAA,IAAA,EAAyB2Q,UACA,MAAA5S,IACC,OAAAK,IACD,MAAAM,IACC,OAAAW,IACG,UAAAU,IAK5B,CAAA;AAAArE,YAAA4D;AAAA5D,YAAAqE;AAAArE,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAA,MAAAvE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAA8D,IAAA;AAXNS,UAYM,oBAAA,OAAA,EAZU,WAAAT,IACZQ,UAWJ,IAAA,CAAA;AAAMtE,YAAAsE;AAAAtE,YAAA8D;AAAA9D,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAAgE,EAAAA,MAAAA,OAAAhE,EAAA,EAAA,MAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAA,EAAA,MAAAuE,OAAAvE,UAAA+D,IAAA;AA5GV,UAAA,qBAAA,OAAgB,EAAA,WAAAA,IAEZC,UAAAA;AAAAA,MAAAA;AAAAA,MAuCAC;AAAAA,MASAC;AAAAA,MA8CAK;AAAAA,IAcJ,EAAA,CAAA;AAAMvE,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAuE;AAAAvE,YAAA+D;AAAA/D,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAAzE,MAAAA,EAAAsV,EAAAA,MAAAA,MAAAtV,UAAAmE,OAAAnE,EAAA,EAAA,MAAAwE,KAAA;AAzHVC,UAAC,oBAAA,IAAA,EAEO,OAAAN,KASJK,UA+GJ,IAAA,CAAA;AAAkBxE,YAAAsV;AAAAtV,YAAAmE;AAAAnE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAAoE,EAAAA,MAAAA,OAAApE,UAAAyE,KAAA;AA5HtBC,UA8HM,oBAAA,OAAA,EA9HU,WAAAN,KAEZK,UA4HJ,IAAA,CAAA;AAAMzE,YAAAoE;AAAApE,YAAAyE;AAAAzE,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA,MAAA3E,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA4U,UAAA;WAKIA,yCAA4B,WAAA,2BAC1B,UAAA,oBAAC,2BAAoC/H,EAAAA,SAAQ,CAAA,EACjD,CAAA;AAAM7M,YAAA6M;AAAA7M,YAAA4U;AAAA5U,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AAAA+E,MAAAA;AAAA,MAAA/E,EAAA6M,EAAAA,MAAAA,YAAA7M,WAAA4U,UAAA;AACLA,UAAAA,uCAA4B,EAAA,WAAA,eACzB,UAAC,oBAAA,yBAAA,EAAkC/H,SAAQ,CAAA,EAC/C,CAAA;AAAM7M,YAAA6M;AAAA7M,aAAA4U;AAAA5U,aAAA+E;AAAAA,EAAAA,OAAA;AAAAA,UAAA/E,EAAA,GAAA;AAAA,EAAA;AAAAiF,MAAAA;AAAA,MAAAjF,EAAA2E,GAAAA,MAAAA,OAAA3E,WAAA+E,KAAA;AARdE,uCAAgB,WAAA,eAEZ,+BAAC,iBACIN,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAGAI;AAAAA,IAAAA,EAGL,CAAA,EAEJ,CAAA;AAAM/E,aAAA2E;AAAA3E,aAAA+E;AAAA/E,aAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,GAAA;AAAA,EAAA;AAAAkF,MAAAA;AAAA,MAAAlF,EAAA0E,GAAAA,MAAAA,OAAA1E,WAAAiF,KAAA;AA7IVC,UAEIR,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAgIAO;AAAAA,IAWM,EAAA,CAAA;AACPjF,aAAA0E;AAAA1E,aAAAiF;AAAAjF,aAAAkF;AAAAA,EAAAA,OAAA;AAAAA,UAAAlF,EAAA,GAAA;AAAA,EAAA;AA9IHkF,SAAAA;AA8IG;AA3LJ,SAAA8E,SAAAoM,UAAA;AAAA,MAyEiC,CAACA,YAAYA,SAAQjQ,WAAa,GAAA;AAAS,WAAA;AAAA,EAAwB;AAChEiQ,SAAAA,SAAQhQ,IAAAkD,OAAgC,EAACzG,OAAAuG,QACX,EAACiN,KAC5B,IAAI;AAAC;AA5E5C,SAAAjN,SAAAc,KAAA;AAAA,SA2EwDlF,QAAQyE,GAAC;AAAC;AA3ElE,SAAAH,QAAAG,GAAA;AAAA,SAAAiL,UA0E0EjL,CAAC;AAAA;ACjG3E,SAAS6M,iBAAiBC,UAA0D;AACnFC,MAAAA,kBAAkBD,QAAQ,EACnB,QAAA;AACPC,MAAAA,kBAAkBD,QAA6B,EACxC,QAAA;AAAA,OACN;AACD,UAAME,YAAYF;AAClB,QAAIE,UAAUC,aAAa,WAAW,OAAOD,UAAUE,OAAO,WACnD,QAAA;AAAA,aACFF,UAAUC,aAAa,WAAWtH,MAAMsG,QAAQe,UAAUE,EAAE,EAC1D,QAAA;AACJ3R,WAAAA,QAAQyR,UAAUG,QAAQ;AAAA,EACrC;AACJ;AAEO,SAASC,4BAA4BC,YAAmD;AAC3F,SAAO1J,OAAO4I,QAAQc,UAAU,EAC3BjU,OAAO,CAAC,CAACkU,GAAGR,QAAQ,MAAMD,iBAAiBC,QAAQ,CAAC,EACpDnQ,IAAI,CAAC,CAAC4Q,KAAKC,iBAAiB,MAAM;AAC/B,UAAMV,WAAWU;AACb,QAAA,CAACX,iBAAiBC,QAAQ,GAAG;AACtB7U,aAAAA;AAAAA,IACA6U,WAAAA,SAASG,aAAa,SAASH,SAASO,YAAY;AACpD,aAAA;AAAA,QACH,CAACE,GAAG,GAAG;AAAA,UACH,GAAGT;AAAAA,UACHO,YAAYD,4BAA4BN,SAASO,UAAkC;AAAA,QACvF;AAAA,MAAA;AAAA,IACJ,OACG;AACI,aAAA;AAAA,QAAE,CAACE,GAAG,GAAGT;AAAAA,MAAAA;AAAAA,IACpB;AAAA,EAAA,CACH,EACA1T,OAAQ+B,CAAMI,MAAAA,QAAQJ,CAAC,CAAC,EACxBsS,OAAO,CAACC,GAAGC,OAAO;AAAA,IAAE,GAAGD;AAAAA,IAAG,GAAGC;AAAAA,EAAAA,IAAM,CAAE,CAAA;AAC9C;ACfO,SAAAC,qBAAAtX,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA8B,QAAA;AAAA,IAAAsW;AAAAA,IAAAe;AAAAA,IAAAnK;AAAAA,IAAAoK;AAAAA,IAAAC;AAAAA,IAAApB;AAAAA,EAAArW,IAAAA;AAgBjC,QAAA;AAAA,IAAA0X;AAAAA,MAA4BC,2BAA2B;AAAElW,MAAAA;AAAA,MAAAxB,EAAAuW,CAAAA,MAAAA,YAAAvW,SAAAyX,iBAAA;AAElCE,SAAAA,eAAepB,UAAUkB,eAAe;AAACzX,WAAAuW;AAAAvW,WAAAyX;AAAAzX,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAhE,QAAA4X,iBAAuBpW;AACL8U,mBAAiBC,QAAQ;AAE3C,QAAAsB,mBAAyB1K,WACnB,qGACCiJ,WAAW,mBAAmB;AAAsBxU,MAAAA;AAAA5B,MAAAA,SAAA4X,gBAAA;AAMnDhW,6BAEM,OAFU,EAAA,WAAA,OACZ,UAAC,oBAAA,qBAAA,EAAoCgW,eAAc,CAAA,EACvD,CAAA;AAAM5X,WAAA4X;AAAA5X,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAMEoC,QAAAA,KAAAkV,UAAOQ,qBAAwB;AAC/BzV,QAAAA,KAAA+T,WAAQ2B,oBAAuB;AAAErV,MAAAA;AAAA1C,MAAAA,EAAA6X,CAAAA,MAAAA,oBAAA7X,SAAAoC,MAAApC,EAAA,CAAA,MAAAqC,IAAA;AAL1BK,SAAA8C,IACP,UACA,gDAA8CwS,WAE9C5V,IACAC,IACA,uDACAwV,gBACJ;AAAC7X,WAAA6X;AAAA7X,WAAAoC;AAAApC,WAAAqC;AAAArC,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,SAAAuX,eAAAvX,EAAAuW,EAAAA,MAAAA,SAAA9W,MAAA;AAKIuD,SAAAuU,eACI,oBAAA,eAAA,EACG,UAAC,oBAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACA,WAAA,kBACjBhB,UAAQ9W,SAAAA,OACH8W,SAAQ9W,OACR,KAEV,EACJ,CAAA;AAAgBO,WAAAuX;AAAA,MAAA,EAAA,IAAAhB,SAAA9W;AAAAO,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAKS2D,QAAAA,KAAA4T,cAAc,UAAU;AAGxC,QAAAzT,KAAA8T,gBAAcnY;AAAMsE,MAAAA;AAAA,MAAA/D,EAAA2D,EAAAA,MAAAA,MAAA3D,UAAA8D,IAAA;AAL7BC,SAAC,oBAAA,eAAA,EACG,UAAC,oBAAA,YAAA,EAAqB,WAAA,kBACD,SAAAJ,IACC,WAAA,QACJ,OAAA,aACbG,cACL,EACJ,CAAA;AAAgB9D,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAA,EAAA,MAAAuW,SAAAG,UAAA;AAChB1S,UAAC,oBAAA,eAAA,EACG,UAAC,oBAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YACbuS,UAAQG,SAAAA,SAAAA,CACb,EACJ,CAAA;AAAgB,MAAA,EAAA,IAAAH,SAAAG;AAAA1W,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAA+D,IAAA;AAEd,UAAA,qBAAA,OAjBS,EAAA,WAAA,8BACXA,UAAAA;AAAAA,MAAAA;AAAAA,MAQAC;AAAAA,IAQJ,EAAA,CAAA;AAAMhE,YAAAgE;AAAAhE,YAAA+D;AAAA/D,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAA,MAAAlE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAgD,IAAA;AACJ,UAAA,qBAAA,OAhCS,EAAA,WAAA,wBAEVA,UAAAA;AAAAA,MAAAA;AAAAA,MAYDiB;AAAAA,IAkBJ,EAAA,CAAA;AAAMjE,YAAAiE;AAAAjE,YAAAgD;AAAAhD,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAAnE,MAAAA,UAAAwX,mBAAA;AAELrT,UAAAqT,qBAAqB,oBAAC,YAAoB,EAAA,SAAA,UAAU,UAErD,OAAA,CAAA;AAAaxX,YAAAwX;AAAAxX,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAApE,MAAAA,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAmE,OAAAnE,EAAA,EAAA,MAAA0C,IAAA;+BAhDhB,OACc,EAAA,WAAAA,IAWXwB,UAAAA;AAAAA,MAAAA;AAAAA,MAkCCC;AAAAA,IAIL,EAAA,CAAA;AAAQnE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAA0C;AAAA1C,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,EAAAsX,EAAAA,MAAAA,WAAAtX,UAAAoE,OAAApE,EAAA,EAAA,MAAA4B,IAAA;AAzDTyC,8BAAC,eACJ,EAAA,UAAA,qBAyDM,OAxDOiT,EAAAA,SACC,WAAA,uCACV1V,UAAAA;AAAAA,MAAAA;AAAAA,MAGAwC;AAAAA,IAAAA,EAmDJ,CAAA,EACJ,CAAA;AAAgBpE,YAAAsX;AAAAtX,YAAAoE;AAAApE,YAAA4B;AAAA5B,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AA3DTqE,SAAAA;AA2DS;AAGb,SAAA4T,2BAAAlY,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAoC,QAAA;AAAA,IAAAR;AAAAA,IAAA2W;AAAAA,IAAAkB;AAAAA,IAAAf;AAAAA,EAAAxW,IAAAA;AAYvC,QAAA;AAAA,IAAA0X;AAAAA,MAA4BC,2BAA2B;AAAElW,MAAAA;AAAA,MAAAxB,EAAAuW,CAAAA,MAAAA,YAAAvW,SAAAyX,iBAAA;AAEjCjB,SAAAA,CAAAA,kBAAkBD,QAAQ,KAAKA,WAAWoB,eAAepB,UAAUkB,eAAe,IAAC/V;AAAY1B,WAAAuW;AAAAvW,WAAAyX;AAAAzX,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAvH,QAAA4X,iBAAuBpW;AAAiGI,MAAAA;AAAA5B,MAAAA,SAAA4X,gBAAA;AAO3GA,SAAAA,kBAAmB,oBAAA,qBAAA,EAAoCA,eAAiB,CAAA;AAAA5X,WAAA4X;AAAA5X,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,SAAA4X,gBAAA;AACxExV,SAAA,CAACwV,kBAAkB,oBAAA,OAAA,EACL,WAAA,6DACX,UAAC,oBAAA,eAAA,EAAqB,OAAA,WAAiB,MAAA,SAAA,CAC3C,EAAA,CAAA;AAAM5X,WAAA4X;AAAA5X,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACNb,6BAAC,kBAAwB,EAAA,OAAA,YAAkB,MAAA,SAAoB,WAAA,2BAA6B,CAAA;AAAArC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA4B,CAAAA,MAAAA,MAAA5B,SAAAoC,IAAA;qCANhF,EAAA,WAAA,gBACXR,UAAAA;AAAAA,MAAAA;AAAAA,MACAQ;AAAAA,MAIDC;AAAAA,IACJ,EAAA,CAAA;AAAMrC,WAAA4B;AAAA5B,WAAAoC;AAAApC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAKEgD,QAAAA,KAAAsU,UAAOQ,qBAAwB;AAC/BnU,QAAAA,KAAAyS,WAAQ2B,oBAAuB;AAE/BjU,QAAAA,KAAAsS,WAAW,mBAAmB;AAAoBrS,MAAAA;AAAA/D,MAAAA,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,MAAA3D,EAAA,EAAA,MAAA8D,IAAA;AAN3CC,SAAAyB,IACP,gDAA8CwS,WAE9ChV,IACAW,IACA,uDACAG,EAAkD;AAAC9D,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAO9C,QAAAgE,MAAAuS,UAAQ9W,OACH8W,SAAQ9W,OACRA;AAAIwE,MAAAA;AAAAjE,MAAAA,UAAAgE,KAAA;AALd,UAAA,oBAAC,cAAmB,SAAA,SACE,WAAA,QACA,WAAA,kBACjBA,UAIL,IAAA,CAAA;AAAahE,YAAAgE;AAAAhE,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAAlE,MAAAA,UAAA4X,gBAAA;AAGR1T,UAAA0T,kBAAkB,oBAAC,YAAqB,EAAA,WAAA,kBACD,SAAA,SACC,WAAA,QACJ,OAAA,aAChCA,UAAAA,gBAAcnY,KACnB,CAAA;AAAaO,YAAA4X;AAAA5X,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAAnE,MAAAA,UAAAuW,UAAA;AAEZpS,UAAAoS,YAAQ,CAAKC,kBAAkBD,QAAQ,yBAAM,eAC1C,EAAA,UAAA,oBAAC,YAAmB,EAAA,SAAA,SACE,WAAA,QACJ,OAAA,YACbA,UAAAA,SAAQG,UACb,EACJ,CAAA;AAAgB1W,YAAAuW;AAAAvW,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAApE,MAAAA,UAAAuW,UAAA;AAEfnS,UAAAmS,YAAYC,kBAAkBD,QAAQ,yBAAM,eACzC,EAAA,UAAA,oBAAC,YAAmB,EAAA,SAAA,SACE,WAAA,QACJ,OAAA,YAAW,oEAE7B,EACJ,CAAA;AAAgBvW,YAAAuW;AAAAvW,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,UAAAuW,UAAA;AAEflS,UAAA,CAACkS,YAAa,oBAAA,eAAA,EACX,UAAC,oBAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YAAW,kEAE7B,EACJ,CAAA;AAAgBvW,YAAAuW;AAAAvW,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAA,MAAAtE,EAAA,EAAA,MAAAkE,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,EAAAoE,EAAAA,MAAAA,OAAApE,UAAAqE,KAAA;sCA9BL,EAAA,WAAA,8BACVH,UAAAA;AAAAA,MAAAA;AAAAA,MAOAC;AAAAA,MAQAC;AAAAA,MAQAC;AAAAA,IAQL,EAAA,CAAA;AAAMrE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAoE;AAAApE,YAAAqE;AAAArE,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAA,MAAAvE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAsE,KAAA;AAUJ,UAAA,qBAAA,OApDS,EAAA,WAAA,wBACXL,UAAAA;AAAAA,MAAAA;AAAAA,MASAK;AAAAA,IA0CJ,EAAA,CAAA;AAAMtE,YAAAiE;AAAAjE,YAAAsE;AAAAtE,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAAuE,EAAAA,MAAAA,OAAAvE,UAAA+D,IAAA;AA9DVS,UAAC,oBAAA,OAAA,EACc,WAAAT,IASXQ,UAsDJ,IAAA,CAAA;AAAQvE,YAAAuE;AAAAvE,YAAA+D;AAAA/D,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAAzE,MAAAA,EAAAsX,EAAAA,MAAAA,WAAAtX,UAAAwE,OAAAxE,EAAA,EAAA,MAAA0C,IAAA;AA3EZ+B,wCACa6S,SACC,WAAA,uCACV5U,UAAAA;AAAAA,MAAAA;AAAAA,MAQA8B;AAAAA,IAiEJ,EAAA,CAAA;AAAMxE,YAAAsX;AAAAtX,YAAAwE;AAAAxE,YAAA0C;AAAA1C,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AA5ENyE,SAAAA;AA4EM;ACzLP,MAAMyT,eAAe3X,eAAM4P,KAC9B,SAAA+H,cAAAnY,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAEG,QAAA;AAAA,IAAAgM;AAAAA,IAAAkM;AAAAA,IAAAC;AAAAA,IAAAtB;AAAAA,IAAAuB,iBAAAC;AAAAA,IAAAC;AAAAA,IAAA1X;AAAAA,IAAA2X;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAA7Y,IAAAA;AA0BFyB,MAAAA;AAAA,MAAAxB,EAAA8W,CAAAA,MAAAA,cAAA9W,SAAAsY,qBAAA;AAE2BA,SAAAA,uBAAuBlL,OAAAC,KAAYyJ,UAAU;AAAC9W,WAAA8W;AAAA9W,WAAAsY;AAAAtY,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAtE,QAAAqY,kBAAwB7W;AAA+CI,MAAAA;AAAA5B,MAAAA,EAAAiM,CAAAA,MAAAA,aAAAjM,SAAAwY,kBAAAxY,EAAA,CAAA,MAAAqY,iBAAA;AAErDzW,SAAAiX,CAAA,WAAA;AAETA,UAAAA,CAAAA,OAAMC,aAAA;AAAA;AAAA,MAAA;AAGXC,YAAAA,aAAmBF,OAAMG,OAAA1S;AACzB2S,YAAAA,WAAiBJ,OAAMC,YAAAxS;AAEvB4S,YAAAA,qBAA2B9J,MAAAC,KAAWgJ,eAAe;AACrD,YAAAc,CAAAA,OAAA,IAAkBD,mBAAkBE,OAAQL,aAAa;AACvCK,yBAAAA,OAAQH,UAAQ,GAAKE,OAAO;AAAC,UAC3CX,gBAAc;AACdA,uBAAeU,oBAAoBjN,SAAS;AAAA,MAAC;AAAA,IAAA;AACpDjM,WAAAiM;AAAAjM,WAAAwY;AAAAxY,WAAAqY;AAAArY,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAbD,QAAAqZ,YAAkBzX;AAmBkBQ,QAAAA,KAAa6J,aAAAA,SAAS;AAAE5J,MAAAA;AAAArC,MAAAA,SAAAuY,oBAAAvY,EAAA0Y,CAAAA,MAAAA,aAAA1Y,EAAA,CAAA,MAAA4Y,sBAAA5Y,UAAAa,UAAAb,EAAA2Y,EAAAA,MAAAA,wBAAA3Y,EAAAiM,EAAAA,MAAAA,aAAAjM,EAAA,EAAA,MAAAoY,mBAAApY,UAAAwY,kBAAAxY,EAAAyY,EAAAA,MAAAA,oBAAAzY,EAAA,EAAA,MAAA8W,cAAA9W,UAAAqY,mBAAArY,EAAA,EAAA,MAAAmY,qBAAA;AAC3C9V,SAAAA,CAAAiX,mBAAAC,sBACG,qBAAA,OAAA,EACQD,GAAAA,kBAAiBE,gBAChB,KAAAF,kBAAiBG,UACXf,WACVL,UAAAA;AAAAA,MAAAA,mBAAmBA,gBAAejS,IAAAgG,CAAAA,aAAA9F,UAAA;AAE3BiQ,cAAAA,WAAiBO,WAAW1K,WAAW;AACvC,cAAAsN,kBAAwBnB,kBAAgBoB,KAAApI,CAAgBA,UAAAA,MAAKyF,QAAS5K,WAAW;AAE7E,YAAA,CAACmK,YAAQ,CAAKmD,iBAAe;AAC7BE,kBAAAA,KAAa,YAAYxN,WAAW,8CAA8C;AAAC,iBAAA;AAAA,QAAA;AAAA,mCAIlF,WAEgB,EAAA,aAAA,eAAeH,SAAS,IAAIG,WAAW,KAC7C9F,OACN,UAAA,CAAAuT,UAAAC,aAEO,oBAAC,iBACG,UAAC,oBAAA,mBAAA,EACgB,aACMvD,mBAAAA,UACFmD,iBACPG,UACFhZ,QACGoL,WACW0M,sBACNH,gBACEC,kBACD,iBAAAqB,SAAQC,aAAArY,SAA0B0W,iBAC9BD,qBACDS,oBAAkB,EAE9C,CAAA,oBApBY3M,SAAS,IAAIG,WAAW,GAuBhD;AAAA,MAAA,CACP,EAACvJ,OAAAmC,OAAe;AAAA,MAEpBsU,kBAAiBU;AAAAA,IAEtB,EAAA,CAAA;AACHha,WAAAuY;AAAAvY,WAAA0Y;AAAA1Y,WAAA4Y;AAAA5Y,YAAAa;AAAAb,YAAA2Y;AAAA3Y,YAAAiM;AAAAjM,YAAAoY;AAAApY,YAAAwY;AAAAxY,YAAAyY;AAAAzY,YAAA8W;AAAA9W,YAAAqY;AAAArY,YAAAmY;AAAAnY,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,IAAA;AA9CLK,SAAC,oBAAA,WAAA,EAAuB,aAAAN,IACnBC,UA8CL,GAAA,CAAA;AAAYrC,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAAqZ,EAAAA,MAAAA,aAAArZ,UAAA0C,IAAA;AAlDpBM,SAEI,oBAAA,UAAA,EAAA,UAAA,oBAAC,iBAA2BqW,EAAAA,WACxB3W,aAgDJ,CAAA,EAAkB,CAAA;AAEnB1C,YAAAqZ;AAAArZ,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AArDHgD,SAAAA;AAqDG,GAGX,CAAC8N,WAAWC,cAAc;AAEtB,QAAMkJ,aAAalJ,UAAUoH,qBAAqB+B,WAAWnJ,UAAU9E,aAAa,EAAE;AACtF,QAAMkO,cAAcrJ,UAAUqH,qBAAqB+B,WAAWpJ,UAAU7E,aAAa,EAAE;AACnFgO,MAAAA,cAAcE,YACP,QAAA;AAEJnJ,SAAAA,MAAMF,UAAUgG,YAAY/F,UAAU+F,UAAU,KACnDhG,UAAUuH,oBAAoBtH,UAAUsH,mBACxCrH,MAAMF,UAAUyH,kBAAkBxH,UAAUwH,gBAAgB,KAC5DvH,MAAMF,UAAUjQ,QAAQkQ,UAAUlQ,MAAM,KACxCmQ,MAAMF,UAAUsH,iBAAiBrH,UAAUqH,eAAe;AAAA;AAAA,EAG1DtH,UAAU7E,cAAc8E,UAAU9E,aAClC6E,UAAU8H,uBAAuB7H,UAAU6H;AACnD,CACJ;AAEO,SAAAwB,kBAAAra,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA2B,QAAA;AAAA,IAAAmM;AAAAA,IAAAH;AAAAA,IAAAgL;AAAAA,IAAAyC;AAAAA,IAAAG;AAAAA,IAAA1B;AAAAA,IAAAtX;AAAAA,IAAAuX;AAAAA,IAAAI;AAAAA,IAAAC;AAAAA,IAAAE;AAAAA,IAAAC;AAAAA,EAAA7Y,IAAAA;AA0BjCyB,MAAAA;AAAAxB,MAAAA,EAAA2Y,CAAAA,MAAAA,wBAAA3Y,SAAAiM,aAAAjM,EAAA,CAAA,MAAAoM,aAAA;AAE8BuM,SAAAA,sBAAoB5V,SAAWkJ,YAAY,GAAGA,SAAS,IAAIG,WAAW,KAAKA,WAAW;AAACpM,WAAA2Y;AAAA3Y,WAAAiM;AAAAjM,WAAAoM;AAAApM,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAlH,QAAAqa,qBAA2B7Y;AAAwFI,MAAAA;AAAA,MAAA5B,EAAAiM,CAAAA,MAAAA,aAAAjM,SAAAoM,aAAA;AACpGD,SAAAA,UAAUC,aAAaH,SAAS;AAACjM,WAAAiM;AAAAjM,WAAAoM;AAAApM,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAhD,QAAAsa,SAAe1Y;AACf2Y,QAAAA,aAAmBjO,cAAcF,aAAaH,SAAS;AACvD,QAAAkB,WAAiBoN,cAAc1Z;AAE3B2Z,MAAAA;AACA,MAAA,OAAOvD,sBAAsB,UAAQ;AACrC,UAAAV,WAAiBU;AAAkB,QAC/BV,SAAQG,aAAc,SAASH,SAAQO,YAAW;AAAA1U,UAAAA;AAAA,UAAApC,EAAA4Y,CAAAA,MAAAA,sBAAA5Y,SAAAa,UAAAb,EAAA,CAAA,MAAAsa,UAAAta,UAAAoY,mBAAApY,EAAAwY,EAAAA,MAAAA,kBAAAxY,UAAAyY,oBAAAzY,EAAA,EAAA,MAAAuW,SAAAO,cAAA9W,UAAAuW,SAAA8B,mBAAArY,UAAAmY,qBAAA;AACxC/V,cAAC,oBAAA,cAAA,EACc+V,qBACVmC,WAAK,QACJ,YAAA/D,SAAQO,YACH,iBAAAP,SAAQ8B,iBACjBxX,QACSuX,iBACDI,gBACEC,kBACEG,mBACtB,CAAA;AAAA5Y,eAAA4Y;AAAA5Y,eAAAa;AAAAb,eAAAsa;AAAAta,gBAAAoY;AAAApY,gBAAAwY;AAAAxY,gBAAAyY;AAAA,UAAA,EAAA,IAAAlC,SAAAO;AAAA,UAAA,EAAA,IAAAP,SAAA8B;AAAArY,gBAAAmY;AAAAnY,gBAAAoC;AAAAA,MAAAA,OAAA;AAAAA,cAAApC,EAAA,EAAA;AAAA,MAAA;AAVQwa,gBAAAA;AAAAA,IAAH;AAAA,EAAA;AAef,QAAApE,WAAiB+B,wBAAwBmC;AAAOlY,MAAAA;AAAA,MAAApC,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,UAAAiX,mBAAA;AAC/B7U,SAAA6U,sBAAuB2B,uBAAuBpC,kBAAkBS,iBAAiB,KAAMX,iBAAiBW,iBAAiB;AAAEjX,YAAA4Y;AAAA5Y,YAAAiX;AAAAjX,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAA5I,QAAA4W,WAAiBxU;AAA4HC,MAAAA;AAAArC,MAAAA,UAAAwa,SAAA;AASpInY,SAAAmY,WAAW,oBAAA,OAAA,EACG,WAAA,uBAAoBC,oBACxB,OAAA;AAAA,MAAAC,MACG;AAAA,MAAMC,KACP;AAAA,MAAMC,QACH;AAAA,IACR,EAAA,CAAA;AAAA5a,YAAAwa;AAAAxa,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,EAAA,MAAA0Z,mBAAA1Z,EAAA,EAAA,MAAA4W,YAAA5W,EAAA,EAAA,MAAAmN,YAAAnN,EAAAiM,EAAAA,MAAAA,aAAAjM,EAAAoY,EAAAA,MAAAA,mBAAApY,EAAAoM,EAAAA,MAAAA,eAAApM,EAAAiX,EAAAA,MAAAA,qBAAAjX,UAAAoW,UAAA;AAEP1T,UAAC8T,kBAAkBS,iBAAiB,MAAMyC,mBAAmB9C,WACxD,oBAAC,sBACWK,EAAAA,UAAAA,mBACD,SAAAmB,kBAAwBA,MAAAA,gBAAgBhM,aAAaH,SAAS,IAACvK,QAC3D,aAAG,MACN0U,UACAjJ,cACX,oBAAA,4BAAA,EAAiCf,MAAAA,aACI6K,UAAgB,mBACjB,SAAAmB,wBAAwBA,gBAAgBhM,aAAaH,SAAS,IAACvK,QAC9D0U,SAAW,CAAA;AAAApW,YAAA0Z;AAAA1Z,YAAA4W;AAAA5W,YAAAmN;AAAAnN,YAAAiM;AAAAjM,YAAAoY;AAAApY,YAAAoM;AAAApM,YAAAiX;AAAAjX,YAAAoW;AAAApW,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAAqa,oBAAA;AAIlDA,SAAAA,sBAAuB,oBAAA,SAAA,EAAe,OAAA,qBACnC,UAAC,oBAAA,iBAAA,EAAqB,MAAA,SAAmB,WAAA,MAAA,CAAK,EAClD,CAAA;AAAUra,YAAAqa;AAAAra,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,EAAAiM,EAAAA,MAAAA,aAAAjM,UAAAyY,oBAAAzY,EAAA,EAAA,MAAAoM,aAAA;AAETqM,SAAAA,oBAAqB,oBAAA,SAAA,EAAe,OAAA,UACE,SAAG,MACtC,UAAA,oBAAC,YAAgB,EAAA,MAAA,SACC,OAAA,WACG,SAAMA,MAAAA,iBAAiBrM,aAAaH,SAAS,GAC9D,8BAAC,YAAiB,EAAA,MAAA,QAAO,CAAA,EAC7B,CAAA,EACJ,CAAA;AAAUjM,YAAAiM;AAAAjM,YAAAyY;AAAAzY,YAAAoM;AAAApM,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA9D,MAAAA,UAAAwY,gBAAA;AAET1U,SAAA0U,kBAAmB,oBAAA,SAAA,EAAe,OAAA,QACE,SAAA,MACjC,UAAC,oBAAA,YAAA,EACc,WAAA,QACN,MAAA,SAEL,UAAA,oBAAC,kBAAqB,MAAA,QAAA,CAC1B,EAAA,CAAA,EACJ,CAAA;AAAUxY,YAAAwY;AAAAxY,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA/D,MAAAA,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,MAAA3D,EAAA,EAAA,MAAA8D,IAAA;qCAvBC,EAAA,WAAA,yCAEVd,UAAAA;AAAAA,MAAAA;AAAAA,MAIAW;AAAAA,MASAG;AAAAA,IASL,EAAA,CAAA;AAAM9D,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAAhE,MAAAA,UAAAwa,SAAA;AAELxW,UAAAwW,WAAW,oBAAA,OAAgB,EAAA,WAAA,SAAUA,UAAQ,QAAA,CAAA;AAAMxa,YAAAwa;AAAAxa,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAA,EAAA,MAAA6Z,SAAAgB,mBAAA7a,EAAA6Z,EAAAA,MAAAA,SAAAiB,kBAAA9a,UAAA6Z,SAAAJ,YAAAzZ,EAAA,EAAA,MAAAgE,OAAAhE,EAAAqC,EAAAA,MAAAA,MAAArC,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA+D,IAAA;AApDxDE,UAqDM,qBAAA,OAAA,EApDG,KAAA4V,SAAQJ,aACTI,SAAQiB,gBAAA,GACRjB,SAAQgB,iBACF,WAAA,kBAETxY,UAAAA;AAAAA,MAAAA;AAAAA,MAQAK;AAAAA,MAYDqB;AAAAA,MA0BCC;AAAAA,IACL,EAAA,CAAA;AAAM,MAAA,EAAA,IAAA6V,SAAAgB;AAAA,MAAA,EAAA,IAAAhB,SAAAiB;AAAA,MAAA,EAAA,IAAAjB,SAAAJ;AAAAzZ,YAAAgE;AAAAhE,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAA+D;AAAA/D,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AArDNiE,SAAAA;AAqDM;AClPP,SAAA8W,iBAAAhb,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA0B,QAAA;AAAA,IAAA8M;AAAAA,IAAAD;AAAAA,IAAA2K;AAAAA,IAAAmB;AAAAA,EAAA7Y,IAAAA;AAQ7B,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAGIO,UAAuB;AAE3B,QAAA,CAAA+Z,oBAAAC,qBAAA,IAAoD5Z,cAAuB;AAC3E,QAAA,CAAA8W,qBAAA+C,sBAAA,IAAsD7Z,SAA6B;AACnF,QAAA,CAAA8Z,2BAAAC,4BAAA,IAAkE/Z,SAA6B;AAAEG,MAAAA;AAAAxB,MAAAA,EAAAS,CAAAA,MAAAA,OAAAqW,cAAA9W,EAAA,CAAA,MAAAS,OAAA4X,iBAAA;AAEzE7W,SAAAf,OAAM4X,mBAAoBjL,OAAAC,KAAY5M,OAAMqW,gBAAiB;AAAC,MAAA,CAAA,IAAArW,OAAAqW;AAAA,MAAA,CAAA,IAAArW,OAAA4X;AAAArY,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAtF,QAAAqY,kBAAwB7W;AAA+DI,MAAAA;AAAA,MAAA5B,EAAA,CAAA,MAAAU,iBAAAV,EAAAS,CAAAA,MAAAA,OAAAqW,cAAA9W,EAAAS,CAAAA,MAAAA,OAAA4X,iBAAA;AAC7DzW,SAAAQ,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA9C;AAAAA,QAAAiX;AAAAA,MAAAnU,IAAAA;AAGsC,UAAA,CACxD9C,IAAE;AAAA,cACGoK,MAAM;AAAA,MAAC;AACjBhJ,oBAAc,cAAY;AAAA,QAAA,GAClBD,OAAMqW,cAAiB,CAAA;AAAA,QAAA,CAC1BxX,EAAE,GAAGiX;AAAAA,SAAQ,KACV;AAER8E,YAAAA,yBAA+B5a,OAAM4X,mBAAoBjL,OAAAC,KAAY5M,OAAMqW,gBAAiB;AAC5FoC,YAAAA,qBAA2BmC,uBAAsBtY,SAAUzD,EAAE,IAAI+b,yBAAsB,CAAA,GAAOA,wBAAwB/b,EAAE;AAC1G,oBAAA,mBAAmB4Z,yBAAyB;AAE1D+B,iCAA2B;AAAA,IAAA;AAC9Bjb,WAAAU;AAAA,MAAA,CAAA,IAAAD,OAAAqW;AAAA,MAAA,CAAA,IAAArW,OAAA4X;AAAArY,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAhBD,QAAAsb,oBAA0B1Z;AAgBxBQ,MAAAA;AAAA,MAAApC,EAAAU,CAAAA,MAAAA,iBAAAV,SAAAS,QAAA;AAEqB2B,SAAAA,CAAAgK,aAAAH,cAAA;AACnB,YAAAqO,SAAelO,cAAcD,UAAUC,aAAaH,SAAS,IAACvK;AAAa,UAAA,CACtE4Y,QAAM;AAAA,cACD5Q,MAAM,+BAA+B;AAAA,MAAC;AAEhD6R,YAAAA,iBAAuBzP,mBAAmBwO,MAAM;AAChDkB,YAAAA,sBAA4BtP,+BAA+BD,SAAS;AAEpE,YAAAwP,2BAAyC3Z,MAAMrB,QAAQ+a,mBAAmB,KAAKpO,OAAAC,KAAYvL,MAAMrB,QAAQuL,0BAA0BC,SAAS,CAAC,CAAC;AAEhIsP,oBAAAA,gBAAc7Z,aAAkB;AAC9ChB,oBAAc8a,qBAAqBH,yBAAsBxY,OAAA6Y,OAAeA,MAAMtP,WAAW,QAAQ;AAEjG6O,iCAA2B;AAC3BC,6BAAsBxZ,MAAU;AAChC0Z,mCAA4B1Z,MAAU;AAAA,IAAA;AACzC1B,WAAAU;AAAAV,WAAAS;AAAAT,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAhBD,QAAA2b,iBAAuBvZ;AAgBrBC,MAAAA;AAAA,MAAArC,EAAA,EAAA,MAAAmY,uBAAAnY,EAAA,EAAA,MAAAmb,6BAAAnb,EAAA,EAAA,MAAAS,OAAAqW,YAAA;AAEF,UAAA8E,yBAA+BzD,sBAAsBhM,UAAUgM,qBAAqBgD,yBAAyB,IAACzZ;AACrFka,SAAAA,yBAAyB9Z,MAAMrB,OAAMqW,YAAa8E,uBAAsB7P,WAAY,KAAK,cAAc,CAAC,IAACrK;AAAY1B,YAAAmY;AAAAnY,YAAAmb;AAAA,MAAA,EAAA,IAAA1a,OAAAqW;AAAA9W,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAA9I,QAAA6b,mBAAyBxZ;AAEzB,QAAAyZ,QAAc,CAACzD,mBAAmBA,gBAAelS,SAAW;AAACzD,MAAAA;AAAA1C,MAAAA,UAAAU,eAAA;AAEtCgC,SAAAA,CAAAqZ,mBAAAC,gBAAA;AACnBtb,oBAAcwL,+BAA+BD,WAAS,GAAGoM,wBAAsB;AAAA,IAAA;AAClFrY,YAAAU;AAAAV,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAFD,QAAAwY,iBAAuB9V;AAErBM,MAAAA;AAAA,MAAAhD,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMcF,SAAC,oBAAA,YAAA,EAAoB,SAAA,aAAa,UAAwB,2BAAA,CAAA;AAAahD,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAAG,MAAAA;AAAA,MAAA9D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAI1DS,SAAAA,MAAMsX,0BAA0B;AAC9BnX,6BAAC,SAAS,CAAA,CAAA;AAAA9D,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAH,SAAA3D,EAAA,EAAA;AAAA8D,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAEJ+D,QAAAA,KAAAtD,OAAMhB,QAAS;AAAYuE,MAAAA;AAAAhE,MAAAA,UAAA+D,IAAA;sCARrC,EAAA,WAAA,uCACXf,UAAAA;AAAAA,MAAAA;AAAAA,MACA,qBAAC,UACS,OAAA,WACG,SAAA,YACA,SAAAW,IACE,WAAAG,IACd,UAAA;AAAA,QAAA;AAAA,QACoBC;AAAAA,MAAAA,GACrB;AAAA,IACJ,EAAA,CAAA;AAAM/D,YAAA+D;AAAA/D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAA,EAAA,MAAAS,OAAAqW,YAAA;AAGcrW,UAAAA,OAAMqW,cAAiB;AAAA,MAAA,EAAA,IAAArW,OAAAqW;AAAA9W,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAA,MAAAlE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAE3BgB,UAAA,CAAA;AAAElE,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAEOiB,UAAAA,CAAA8X,eAAAC,gBAAA;AACbhB,6BAAuB9O,aAAW;AAClCgP,mCAA6BnP,WAAS;AACtCgP,gCAA0B;AAAA,IAAA;AAC7Bjb,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAA,MAAApE,EAAA,EAAA,MAAA4Y,sBAAA5Y,EAAAwY,EAAAA,MAAAA,kBAAAxY,EAAAqY,EAAAA,MAAAA,mBAAArY,UAAAiE,KAAA;AATJ,UAAA,oBAAA,cACe,EAAA,YAAAA,KACKoU,iBACT,QAAAnU,KACY0U,oBACH,iBAAAzU,KAKDqU,eAAiB,CAAA;AAAAxY,YAAA4Y;AAAA5Y,YAAAwY;AAAAxY,YAAAqY;AAAArY,YAAAiE;AAAAjE,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,UAAA8b,OAAA;AAEpCzX,UAAAyX,SACI,oBAAA,YAAA,EAAoB,SAAA,SACC,WAAA,+CAA8C,UAEpE,uCAAA,CAAA;AAAa9b,YAAA8b;AAAA9b,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAA,MAAAtE,EAAAoE,EAAAA,MAAAA,OAAApE,UAAAqE,KAAA;AAjBpB,UAAA,qBAAA,OAAgB,EAAA,WAAA,YACbD,UAAAA;AAAAA,MAAAA;AAAAA,MAYCC;AAAAA,IAKL,EAAA,CAAA;AAAQrE,YAAAoE;AAAApE,YAAAqE;AAAArE,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAA,MAAAvE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAsE,KAAA;AACN,UAAA,qBAAA,OA/BU,EAAA,WAAA,eACZN,UAAAA;AAAAA,MAAAA;AAAAA,MAWAM;AAAAA,IAmBJ,EAAA,CAAA;AAAMtE,YAAAgE;AAAAhE,YAAAsE;AAAAtE,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAAxE,MAAAA,UAAAU,eAAA;AAOiB+I,UAAAA,CAAAA,MAAO/I,cAAc,kBAAkB+I,CAAC;AAACzJ,YAAAU;AAAAV,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AACjDyE,QAAAA,MAAAhE,OAAM0b,kBAAwB;AAAAzX,MAAAA;AAAA,MAAA1E,EAAAwE,EAAAA,MAAAA,OAAAxE,UAAAyE,KAAA;AALzC,UAAA,oBAAC,wBACa,EAAA,UAAA,SACJ,MAAA,SACA,OAAA,8BACS,eAAAD,KACR,OAAAC,IACT,CAAA;AAAAzE,YAAAwE;AAAAxE,YAAAyE;AAAAzE,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA,MAAA3E,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;8BACD,gBAAa,UAGd,2IAAA,CAAA;AAAelD,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AAAA+E,MAAAA;AAAA/E,MAAAA,UAAA0E,KAAA;AACb,UAAA,qBAAA,OAZU,EAAA,WAAA,eACZA,UAAAA;AAAAA,MAAAA;AAAAA,MAOAC;AAAAA,IAIJ,EAAA,CAAA;AAAM3E,YAAA0E;AAAA1E,YAAA+E;AAAAA,EAAAA,OAAA;AAAAA,UAAA/E,EAAA,EAAA;AAAA,EAAA;AAAAiF,MAAAA;AAAAC,MAAAA;AAAA,MAAAlF,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAQQ+B,UAAAA,MAAA;AACNgW,iCAA2B;AAC3BC,6BAAsBxZ,MAAU;AAChC0Z,mCAA4B1Z,MAAU;AAAA,IAAA;AAE7BwD,UAAAA,MAAA;AACT+V,iCAA2B;AAC3BC,6BAAsBxZ,MAAU;AAChC0Z,mCAA4B1Z,MAAU;AAAA,IAAA;AACzC1B,YAAAiF;AAAAjF,YAAAkF;AAAAA,EAAAA,OAAA;AAAAD,UAAAjF,EAAA,EAAA;AAAAkF,UAAAlF,EAAA,EAAA;AAAA,EAAA;AAMiBmF,QAAAA,MAAAH,QAAQmT,mBAAmB;AAC/B,QAAA/S,OAAC+S;AACK,QAAA9S,OAAC8S;AAEC7S,QAAAA,MAAA6S,sBAAmBzW,SAAe2W;AAAe9S,MAAAA;AAAAvF,MAAAA,EAAA8M,EAAAA,MAAAA,sBAAA9M,UAAA4Y,sBAAA5Y,EAAA,EAAA,MAAA2b,kBAAA3b,EAAA+M,EAAAA,MAAAA,WAAA/M,EAAAsb,EAAAA,MAAAA,qBAAAtb,EAAAyX,EAAAA,MAAAA,mBAAAzX,EAAAgb,EAAAA,MAAAA,sBAAAhb,EAAA,EAAA,MAAA6b,oBAAA7b,EAAA,EAAA,MAAAmY,uBAAAnY,EAAAmb,EAAAA,MAAAA,6BAAAnb,UAAAmF,OAAAnF,EAAA,EAAA,MAAAoF,OAAApF,EAAA,EAAA,MAAAqF,OAAArF,EAAA,EAAA,MAAAsF,KAAA;AAzB3EC,UAAC,oBAAA,oBAAA,EACY,SAAI,OACI,wBACXyV,MAAAA,oBACclO,oBACA8L,oBACV,UAAA3T,KAKG,aAAAC,KAKJ6H,SACC4O,UAAa,gBACVxD,kCACMgD,mBAAAA,2BACTU,UAAe,kBACP,kBAAA1W,KACJ,cAAAC,KACM,oBAAAC,KACDiW,mBAAgB,mBACb,sBAAAhW,KACLmS,gBACnB,CAAA;AAAAzX,YAAA8M;AAAA9M,YAAA4Y;AAAA5Y,YAAA2b;AAAA3b,YAAA+M;AAAA/M,YAAAsb;AAAAtb,YAAAyX;AAAAzX,YAAAgb;AAAAhb,YAAA6b;AAAA7b,YAAAmY;AAAAnY,YAAAmb;AAAAnb,YAAAmF;AAAAnF,YAAAoF;AAAApF,YAAAqF;AAAArF,YAAAsF;AAAAtF,YAAAuF;AAAAA,EAAAA,OAAA;AAAAA,UAAAvF,EAAA,EAAA;AAAA,EAAA;AAAAyF,MAAAA;AAAAzF,MAAAA,EAAAuE,EAAAA,MAAAA,OAAAvE,UAAA+E,OAAA/E,EAAA,EAAA,MAAAuF,KAAA;AA3ENE,UACIlB,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAiCAQ;AAAAA,MAcAQ;AAAAA,IA2BE,EAAA,CAAA;AAEHvF,YAAAuE;AAAAvE,YAAA+E;AAAA/E,YAAAuF;AAAAvF,YAAAyF;AAAAA,EAAAA,OAAA;AAAAA,UAAAzF,EAAA,EAAA;AAAA,EAAA;AA7EHyF,SAAAA;AA6EG;AC5IJ,SAAA2W,oBAAArc,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA6B,QAAA;AAAA,IAAAyD;AAAAA,IAAAmR;AAAAA,IAAAhI;AAAAA,IAAAE;AAAAA,IAAAD;AAAAA,IAAA2K;AAAAA,IAAAmB;AAAAA,EAAA7Y,IAAAA;AAkBhC,QAAA;AAAA,IAAAU;AAAAA,IAAAI;AAAAA,IAAAH;AAAAA,IAAAE;AAAAA,MAMIK,UAAyB;AAE7B,QAAA,CAAA+Z,oBAAAC,qBAAA,IAAoD5Z,cAAc;AAAEgb,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAA/a,MAAAA;AAAA,MAAAxB,EAAAa,CAAAA,MAAAA,UAAAb,EAAA,CAAA,MAAAyX,mBAAAzX,EAAAU,CAAAA,MAAAA,iBAAAV,EAAA,CAAA,MAAAY,WAAAZ,SAAAS,QAAA;AACjDqB,iBAAAA,MAAMrB,QAAQ,IAAI;AAAEmB,QAAAA;AAAA,QAAA5B,EAAAa,CAAAA,MAAAA,UAAAb,UAAAY,SAAA;AACfgB,YAAAE,MAAMlB,SAAS,IAAI,KAAKkB,MAAMjB,QAAQ,IAAI;AAACb,aAAAa;AAAAb,cAAAY;AAAAZ,cAAA4B;AAAAA,IAAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAA3C4B,sBAAAA;AAA4CQ,QAAAA;AAAApC,QAAAA,UAAAU,eAAA;AAE1C0B,YAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAkU;AAAAA,QAAAlU,IAAAA;AAEvB3B,sBAAc,MAAM6V,QAAQ;AAAA,MAAA;AAC/BvW,cAAAU;AAAAV,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,YAAApC,EAAA,EAAA;AAAA,IAAA;AAHyBoC,wBAAAA;AAKXia,SAAAA,cAAc1E,eAAe0E,YAAY5E,eAAe;AAACzX,WAAAa;AAAAb,WAAAyX;AAAAzX,WAAAU;AAAAV,WAAAY;AAAAZ,WAAAS;AAAAT,WAAAqc;AAAArc,WAAAsc;AAAAtc,WAAAuc;AAAAvc,WAAAwB;AAAAA,EAAAA,OAAA;AAAA6a,iBAAArc,EAAA,CAAA;AAAAsc,sBAAAtc,EAAA,CAAA;AAAAuc,wBAAAvc,EAAA,CAAA;AAAAwB,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAxE,QAAAwc,SAAehb;AAA0DI,MAAAA;AAAA,MAAA5B,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAI7DtB,SAAC,oBAAA,YAAA,EAAoB,SAAA,aAAa,UAElC,mBAAA,CAAA;AAAa5B,YAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,EAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,UAAA8M,sBAAA9M,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,EAAA,EAAA,MAAA6M,YAAA7M,UAAA6U,YAAA7U,EAAA+M,EAAAA,MAAAA,WAAA/M,EAAAqc,EAAAA,MAAAA,cAAArc,EAAA,EAAA,MAAAsc,mBAAAtc,UAAAuc,qBAAAvc,EAAAyX,EAAAA,MAAAA,mBAAAzX,EAAA,EAAA,MAAAgb,sBAAAhb,UAAA0D,cAAA1D,EAAA,EAAA,MAAAwc,QAAA;AAQRpa,SAAAC,CAAAA,QACI,qBAAA,OAAA,EAAgB,WAAA,YAEZga,UAAAA;AAAAA,MAAAA,kCAAe,sBACFA,EAAAA,sBACD,SAAAxP,WAAQnL,SAAqBuZ,MAAAA,0BAA0B,GACnD,aAAA,OACM,mBAAG,MACZ,UAAI,OACJ,iBAAK;AAAA,MAEjBpO,CAAAA,aAAawP,cAAe,qBAAA,QAAA,EAAgB,SAAA,QACH,MAAA,SACC,OAAAC,kBAAkB,UAAU,WAC1B,eAAMrB,sBAAqB,IAAK,GAAG,UAAA;AAAA,QAAA;AAAA,WACpEuB,SAASA,OAAM/c,OAAQ,kBAAkB;AAAA,MAAA,GACtD;AAAA,MAEC,oBAAA,oBAAA,EACY,SAAA,MACHub,MAAiB,oBACLnG,kBAAO,UAChB9H,SACK,cAAA,CAAC8H,UACK,oBAAA,CAACA,UACR,mBAAMoG,sBAAqB,KAAM,GAC1BnO,oBACVuP,sBACQ,kBAAA,OACCE,mBACF7Y,iBAAS,YACT+T,iBACGmB,mBAE5B,CAAA;AAAA,IAAA,EAAA,CAAA;AACH5Y,YAAA8M;AAAA9M,YAAA4Y;AAAA5Y,YAAA6M;AAAA7M,YAAA6U;AAAA7U,YAAA+M;AAAA/M,YAAAqc;AAAArc,YAAAsc;AAAAtc,YAAAuc;AAAAvc,YAAAyX;AAAAzX,YAAAgb;AAAAhb,YAAA0D;AAAA1D,YAAAwc;AAAAxc,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAAqc,EAAAA,MAAAA,cAAArc,UAAAoC,IAAA;AAGH,SAAA,qBAAA,OAjDU,EAAA,WAAA,eACZR,UAAAA;AAAAA,MAAAA;AAAAA,0BAGC,OACS,EAAA,MAAA,MACCya,OAAS,YAKfja,UAoCL,IAAA;AAAA,IAEJ,EAAA,CAAA;AAAMpC,YAAAqc;AAAArc,YAAAoC;AAAApC,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,UAAA6M,UAAA;AAEN,SAAA,oBAAA,OAAgB,EAAA,WAAA,eAEZ,UAAA,oBAAC,mBACG,UAAC,oBAAA,yBAAA,EAAkCA,aACvC,EAEJ,CAAA;AAAM7M,YAAA6M;AAAA7M,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,IAAA;AA1DVM,SACIX,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAmDAK;AAAAA,IAMM,EAAA,CAAA;AACP1C,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AA3DHgD,SAAAA;AA2DG;AC3FJ,MAAMyZ,uBAAuBlc,eAAMmc,WACtC,SAAAD,sBAAA1c,IAAAoD,KAAA;AAAAnD,QAAAA,IAAAC,EAAA,EAAA;AAA8B,QAAA;AAAA,IAAAyD;AAAAA,IAAAiZ;AAAAA,IAAA9P;AAAAA,IAAA+P;AAAAA,EAAA7c,IAAAA;AAQ1B,QAAA;AAAA,IAAAc;AAAAA,IAAAJ;AAAAA,IAAAC;AAAAA,IAAAI;AAAAA,IAAAF;AAAAA,MAOIK,UAA0B;AAAEO,MAAAA;AAAA,MAAAxB,EAAAa,CAAAA,MAAAA,UAAAb,SAAA0D,YAAA;AAGdA,SAAAA,cAAc5B,MAAMjB,QADzB,MACqC;AAACb,WAAAa;AAAAb,WAAA0D;AAAA1D,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAnD,QAAA6c,YAAkBrb;AAAkCI,MAAAA;AAAA,MAAA5B,EAAAa,CAAAA,MAAAA,UAAAb,SAAA0D,YAAA;AAGpCA,SAAAA,cAAc5B,MAAMjB,QADzB,IACmC;AAACb,WAAAa;AAAAb,WAAA0D;AAAA1D,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA/C,QAAAoR,UAAgBxP;AAAgCQ,MAAAA;AAAA,MAAApC,EAAAa,CAAAA,MAAAA,UAAAb,SAAA0D,YAAA;AAGvBA,SAAAA,cAAc5B,MAAMjB,QADzB,aAC4C;AAACb,WAAAa;AAAAb,WAAA0D;AAAA1D,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAjE,QAAA8c,mBAAyB1a;AAUF,QAAAC,KAAA5B,OAAMhB;AAAMiD,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAA4c,gBAAA5c,EAAAc,EAAAA,MAAAA,mBAAAd,EAAAU,EAAAA,MAAAA,iBAAAV,UAAAY,SAAA;AACT8B,SAAAkC,CAAA,MAAA;AACNmY,YAAAA,eAAqBnY,EAACC,OAAAC;AACtB9C,YAAAA,YAAkBF,MAAMlB,SAjBjC,IAiB4C;AAC/B,UAAA,CAACoB,aAAa4a,cAAY;AAC1Blc,sBAnBb,MAmB+Bqc,eAAehb,YAAYgb,YAAY,IAAI,IAAE,KAAO;AAAA,MAAC;AAtBlF,oBAAA,QAwB2BA,kBAAkB;AACtCjc,sBAzBP,QAAM,IAyB2B;AAAA,IAAA;AAC7Bd,WAAA4c;AAAA5c,YAAAc;AAAAd,YAAAU;AAAAV,YAAAY;AAAAZ,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACM,SAAA;AAAA,MAAA8Z,UAAA;AAAA,IAAA;AAAgBhd,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAIhB2D,QAAAA,KAAAqB,QAAQ6X,SAAS;AAAC/Y,MAAAA;AAAA9D,MAAAA,UAAA6M,YAAA7M,EAAAmD,EAAAA,MAAAA,OAAAnD,EAAA,EAAA,MAAA0C,MAAA1C,UAAA2D,MAAA3D,EAAAS,EAAAA,MAAAA,OAAAhB,MAAA;AAlB7B,SAAA,oBAAC,SACSA,MAdT,QAea0D,UAAAA,KACNyC,IAAAA,oBACG,OAAAvD,IACG,UAAAK,IASH,OAAAM,IACM,aAAA,cACb,gBACU6J,UACH,OAAAlJ,GAAqB,CAAA;AAAA3D,YAAA6M;AAAA7M,YAAAmD;AAAAnD,YAAA0C;AAAA1C,YAAA2D;AAAA,MAAA,EAAA,IAAAlD,OAAAhB;AAAAO,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAEX+D,QAAAA,KAAAiB,QAAQ6X,SAAS;AAAC7Y,MAAAA;AAAA,MAAAhE,EAAA6c,EAAAA,MAAAA,aAAA7c,UAAA+D,IAAA;AAAvCC,UAAC,oBAAA,cAAA,EAAoB,OAAAD,IAChB8Y,UACL,UAAA,CAAA;AAAe7c,YAAA6c;AAAA7c,YAAA+D;AAAA/D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAA8D,IAAA;AAvBnBG,+BAAA,OACIH,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAoBAE;AAAAA,IAGJ,EAAA,CAAA;AAAMhE,YAAAgE;AAAAhE,YAAA8D;AAAA9D,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAOS,QAAAkE,MAAAzD,OAAMnB;AAAI6E,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAA4c,gBAAA5c,EAAAc,EAAAA,MAAAA,mBAAAd,EAAAU,EAAAA,MAAAA,iBAAAV,UAAAY,SAAA;AACPuD,UAAA+C,CAAA,QAAA;AACN+V,YAAAA,aAAmBrY,IAACC,OAAAC;AACpBoY,YAAAA,cAAoBpb,MAAMlB,SA9CjC,MA8C8C;AACnC,UAAA,CAACsc,eAAeN,cAAY;AAC5Blc,sBAhDX,QAgD+Buc,aAAaE,UAAUF,UAAU,IAAI,EAAE;AAAA,MAAC;AA7CzE,oBAAA,MA+C2BA,gBAAgB;AAClCnc,sBAhDT,MAAI,IAgD6B;AAAA,IAAA;AAC3Bd,YAAA4c;AAAA5c,YAAAc;AAAAd,YAAAU;AAAAV,YAAAY;AAAAZ,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AACS,QAAAoE,MAAAuY,cAAc9P;AAGjBxI,QAAAA,MAAAW,QAAQoM,OAAO;AAAC9M,MAAAA;AAAA,MAAAtE,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAoE,OAAApE,EAAA,EAAA,MAAAqE,OAAArE,EAAAS,EAAAA,MAAAA,OAAAnB,IAAA;AAjB3BgF,8BAAC,OACShF,EAAAA,MArCX,MAsCSsG,IAAiBA,oBACd,OAAA,MACA,OAAA1B,KACG,UAAAC,KASA,UAAAC,KACV,UAAA,MACK,MAAA,SACE,OAAAC,IAAmB,CAAA;AAAArE,YAAAmE;AAAAnE,YAAAoE;AAAApE,YAAAqE;AAAA,MAAA,EAAA,IAAA5D,OAAAnB;AAAAU,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AACTuE,QAAAA,MAAAS,QAAQoM,OAAO;AAAC5M,MAAAA;AAAA,MAAAxE,EAAAoR,EAAAA,MAAAA,WAAApR,UAAAuE,KAAA;AAArCC,UAAC,oBAAA,cAAA,EAAoB,OAAAD,KAChB6M,UACL,QAAA,CAAA;AAAepR,YAAAoR;AAAApR,YAAAuE;AAAAvE,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAA,MAAAzE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAwE,KAAA;AArBnBC,+BAAA,OACIH,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAkBAE;AAAAA,IAGJ,EAAA,CAAA;AAAMxE,YAAAsE;AAAAtE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAOY0E,QAAAA,MAAAM,QAAQ8X,gBAAgB;AAACnY,MAAAA;AAAA,MAAA3E,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA0E,KAAA;AAJvC,UAAA,oBAAC,OAAYgE,EAAAA,MAzDL,eA0DG9C,IAAiBA,oBACd,OAAA,eACGiH,UACH,OAAAnI,IAA4B,CAAA;AAAA1E,YAAA6M;AAAA7M,YAAA0E;AAAA1E,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AACrB+E,QAAAA,MAAAC,QAAQ8X,gBAAgB;AAAC7X,MAAAA;AAAA,MAAAjF,EAAA8c,EAAAA,MAAAA,oBAAA9c,UAAA+E,KAAA;AAA9CE,UAAC,oBAAA,cAAA,EAAoB,OAAAF,KAChB+X,UACL,iBAAA,CAAA;AAAe9c,YAAA8c;AAAA9c,YAAA+E;AAAA/E,YAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,EAAA;AAAA,EAAA;AAAAkF,MAAAA;AAAA,MAAAlF,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAAiF,KAAA;AARnBC,+BAAA,OACIP,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAKAM;AAAAA,IAGJ,EAAA,CAAA;AAAMjF,YAAA2E;AAAA3E,YAAAiF;AAAAjF,YAAAkF;AAAAA,EAAAA,OAAA;AAAAA,UAAAlF,EAAA,EAAA;AAAA,EAAA;AAAAmF,MAAAA;AAAAnF,MAAAA,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAyE,OAAAzE,EAAA,EAAA,MAAAkF,KAAA;sCA7DM,EAAA,WAAA,mCAEZjB,UAAAA;AAAAA,MAAAA;AAAAA,MA0BAQ;AAAAA,MAwBAS;AAAAA,IAWJ,EAAA,CAAA;AAAMlF,YAAAiE;AAAAjE,YAAAyE;AAAAzE,YAAAkF;AAAAlF,YAAAmF;AAAAA,EAAAA,OAAA;AAAAA,UAAAnF,EAAA,EAAA;AAAA,EAAA;AA/DNmF,SAAAA;AA+DM,CAIlB;ACtGO,SAAAiY,oBAAArd,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA6B,QAAA;AAAA,IAAAod;AAAAA,IAAAxQ;AAAAA,IAAAnJ;AAAAA,EAAA3D,IAAAA;AAUhC,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAAkCO,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAA0D,cAAA1D,EAAA,CAAA,MAAAqd,UAAA;AAQ7B7b,SAAA6b,aAAa,gBACV,oBAAC,4BAAmCxQ,UACF,QAAG,MACA,WAAG,MACL,SAAA,MACJ,KAAA,MACA,KAAA,MACC,YACK,WAAG,MACFnJ,WAAa,CAAA;AAAA1D,WAAA6M;AAAA7M,WAAA0D;AAAA1D,WAAAqd;AAAArd,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAA0D,cAAA1D,EAAA,CAAA,MAAAqd,UAAA;AACtDzb,SAAAyb,aAAa,eACV,oBAAC,0BAAmCxQ,EAAAA,UACF,QAAA,MACG,WAAA,MACN,KAAA,MACA,KAAG,MACF,MAAA,MACK,WAAG,MACFnJ,WAAa,CAAA;AAAA1D,WAAA6M;AAAA7M,WAAA0D;AAAA1D,WAAAqd;AAAArd,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAA0D,cAAA1D,EAAA,EAAA,MAAAqd,UAAA;AAEtDA,SAAAA,aAAa,WACV,oBAAC,0BAAmCxQ,EAAAA,UACL,KAAA,MACA,KAAG,MACF,MAAG,MACGnJ,WAAa,CAAA;AAAA1D,WAAA6M;AAAA7M,WAAA0D;AAAA1D,YAAAqd;AAAArd,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,EAAAwB,EAAAA,MAAAA,MAAAxB,UAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AA7B/DC,SAAA,oBAAA,OAAA,EAAgB,WAAA,eAEZ,+BAAC,iBAEIb,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAUAI;AAAAA,MAUAQ;AAAAA,IAAAA,EAOL,CAAA,EAEJ,CAAA;AAAMpC,YAAAwB;AAAAxB,YAAA4B;AAAA5B,YAAAoC;AAAApC,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,UAAAU,eAAA;AAMmBgC,SAAAkC,CAAA,MAAA;AACQ,oBAAA,gBAAgBA,EAACC,OAAAC,UAAkB,KAAEpD,SAAekD,EAACC,OAAAC,KAAa;AAAA,IAAA;AACnF9E,YAAAU;AAAAV,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAAS,QAAA;AAEMqB,SAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,YAAAS;AAAAT,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA0C,MAAA1C,EAAA,EAAA,MAAAgD,IAAA;AARzDW,SAUM,oBAAA,OAAA,EAVU,WAAA,eAEZ,8BAAC,WAAgB,EAAA,MAAA,gBACIkJ,UACA,UAAAnK,IAGH,OAAA,iBACA,OAAAM,IAAmC,EAEzD,CAAA;AAAMhD,YAAA6M;AAAA7M,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA2D,IAAA;AA9CVG,SACIzB,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAmCAsB;AAAAA,IAUM,EAAA,CAAA;AACP3D,YAAAqC;AAAArC,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AA/CH8D,SAAAA;AA+CG;AC5DJ,SAAAwZ,qBAAAvd,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA8B,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAGjC,QAAA;AAAA,IAAAU;AAAAA,MAAmBQ,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,SAAAS,QAAA;AACVqB,SAAAA,MAAMrB,QAAQ,cAAc;AAACT,WAAAS;AAAAT,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAlD,QAAAgU,eAAqBxS;AAA8BI,MAAAA;AAAA5B,MAAAA,SAAA6M,UAAA;AAI3C,SAAA,oBAAA,OAAgB,EAAA,WAAA,eAEZ,UAAA,oBAAC,mBACG,UAAC,oBAAA,2BAAA,EAAoCA,aACzC,EAEJ,CAAA;AAAM7M,WAAA6M;AAAA7M,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAAgU,CAAAA,MAAAA,gBAAAhU,SAAA6M,UAAA;AAeA,SAAA,oBAAA,SAbU,WAAA,eAEZ,8BAAC,OACS,EAAA,MAAA,gBACLxK,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAkP;AAAAA,QAAAC;AAAAA,MAAAnP,IAAAA;AAAiC,iCACvB,eACG,EAAA,OAAA2R,iBAAqB,QAAIA,iBAAYtS,SAAiB,0BAA2B,sBAAsBsS,aAAYS,YAChH5H,UACU,oBAAG,MAAU0E,OAC3BC,KAAO,CAAA;AAAA,IAAA,EAEzB,CAAA,EAEJ,CAAA;AAAMxR,WAAAgU;AAAAhU,WAAA6M;AAAA7M,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA4B,CAAAA,MAAAA,MAAA5B,SAAAoC,IAAA;AAtBVC,SACIT,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAQAQ;AAAAA,IAaM,EAAA,CAAA;AACPpC,WAAA4B;AAAA5B,WAAAoC;AAAApC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAvBHqC,SAAAA;AAuBG;ACvBJ,SAAAkb,mBAAAxd,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA4B,QAAA;AAAA,IAAA4M;AAAAA,IAAAE;AAAAA,IAAAD;AAAAA,IAAA2K;AAAAA,IAAAmB;AAAAA,EAAA7Y,IAAAA;AAc/B,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAGIO,UAAyB;AAE7B,QAAA,CAAA+Z,oBAAAC,qBAAA,IAAoD5Z,cAAuB;AAC3E,QAAA,CAAA8W,qBAAA+C,sBAAA,IAAsD7Z,SAA6B;AACnF,QAAA,CAAA8Z,2BAAAC,4BAAA,IAAkE/Z,SAA6B;AAAEG,MAAAA;AAAA,MAAAxB,EAAAU,CAAAA,MAAAA,iBAAAV,EAAA,CAAA,MAAAS,OAAA+c,OAAA1G,cAAA9W,EAAA,CAAA,MAAAS,OAAA+c,OAAAnF,iBAAA;AAEvE7W,SAAAI,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAtC;AAAAA,QAAA2M;AAAAA,QAAAsK;AAAAA,MAAA3U,IAAAA;AAI0B,UAAA,CAC5CtC,IAAE;AAAA,cACGoK,MAAM;AAAA,MAAC;AAEjBhJ,oBAAc,WAAW4L,cAAchN,IAAI2M,SAAS,GAAGsK,UAAQ,KAAO;AAEtE8E,YAAAA,yBAA+B5a,OAAM+c,OAAAnF,mBAA2BjL,OAAAC,KAAY5M,OAAM+c,OAAA1G,eAAwB,CAAA;AAC1GoC,YAAAA,qBAA2BmC,uBAAsBtY,SAAUzD,EAAE,IAAI+b,yBAAsB,CAAA,GAAOA,wBAAwB/b,EAAE;AACxHoB,oBAAc,WAAWwL,+BAA+BD,SAAS,GAAGiN,oBAAkB,KAAO;AAC7F+B,iCAA2B;AAAA,IAAA;AAC9Bjb,WAAAU;AAAAD,MAAAA,CAAAA,IAAAA,OAAA+c,OAAA1G;AAAArW,MAAAA,CAAAA,IAAAA,OAAA+c,OAAAnF;AAAArY,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAdD,QAAAuc,oBAA0B/a;AAcxBI,MAAAA;AAAA,MAAA5B,EAAA,CAAA,MAAAmY,uBAAAnY,EAAAmb,CAAAA,MAAAA,6BAAAnb,EAAAS,CAAAA,MAAAA,OAAA+c,OAAA1G,YAAA;AAEF,UAAA8E,yBAA+BzD,sBAAsBhM,UAAUgM,qBAAqBgD,yBAAyB,IAACzZ;AACrFka,SAAAA,yBAAyB9Z,MAAMrB,OAAM+c,OAAA1G,YAAoB8E,uBAAsB7P,WAAY,KAAK,cAAc,CAAC,IAACrK;AAAY1B,WAAAmY;AAAAnY,WAAAmb;AAAA1a,MAAAA,CAAAA,IAAAA,OAAA+c,OAAA1G;AAAA9W,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAArJ,QAAA6b,mBAAyBja;AAA6HQ,MAAAA;AAAA,MAAApC,EAAAU,CAAAA,MAAAA,iBAAAV,SAAAS,QAAA;AAE/H2B,SAAAA,CAAAgK,aAAA4P,gBAAA;AACnB,YAAA1B,SAAelO,cAAcD,UAAUC,aAAaH,WAAS,IAACvK;AAAa,UAAA,CACtE4Y,QAAM;AAAA,cACD5Q,MAAM,+BAA+B;AAAA,MAAC;AAEhDhJ,oBAAc,SAASoL,mBAAmBwO,MAAM,CAAC,IAAE5Y,QAAA,KAAkB;AACrE,YAAA8Z,sBAA4B,SAAStP,+BAA+BD,WAAS,CAAC;AAC9E,YAAAwP,2BAAyC3Z,MAAMrB,QAAQ+a,mBAAmB,KAAKpO,OAAAC,KAAYvL,MAAMrB,QAAQuL,0BAA0BC,WAAS,CAAC,CAAC;AAC9IvL,oBAAc8a,qBAAqBH,yBAAsBxY,OAAA6Y,OAAeA,MAAMtP,WAAW,QAAQ;AAEjG6O,iCAA2B;AAC3BC,6BAAsBxZ,MAAU;AAChC0Z,mCAA4B1Z,MAAU;AAAA,IAAA;AACzC1B,WAAAU;AAAAV,WAAAS;AAAAT,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAbD,QAAA2b,iBAAuBvZ;AAarBC,MAAAA;AAAAK,MAAAA;AAAA,MAAA1C,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMWb,SAAAA,MAAM4Y,0BAA0B;AAC9BvY,6BAAC,SAAS,CAAA,CAAA;AAAA1C,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAL,SAAArC,EAAA,EAAA;AAAA0C,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAEJgD,QAAAA,KAAAvC,OAAMhB,QAAS;AAAYkE,MAAAA;AAAA3D,MAAAA,UAAAgD,IAAA;AAPxB,SAAA,qBAAA,UACpB,WAAA,MACM,OAAA,WAEG,SAAAX,IACE,WAAAK,IACd,UAAA;AAAA,MAAA;AAAA,MACoBM;AAAAA,IACrB,EAAA,CAAA;AAAShD,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AART,QAAAyd,iBAAuB9Z;AAQbG,MAAAA;AAAA9D,MAAAA,UAAAU,eAAA;AAEaoD,SAAAA,CAAAuU,iBAAA6D,gBAAA;AACnBxb,oBAAc,SAASwL,+BAA+BD,WAAS,CAAC,IAAIoM,iBAAe,KAAO;AAAA,IAAA;AAC7FrY,YAAAU;AAAAV,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAFD,QAAAwY,iBAAuB1U;AAErBC,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMca,SAAC,oBAAA,YAAA,EAAoB,SAAA,aAAa,UAElC,2BAAA,CAAA;AAAa/D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAAhE,MAAAA,UAAAyd,gBAAA;AAEX,UAAA,qBAAA,OALU,EAAA,WAAA,4CACZ1Z,UAAAA;AAAAA,MAAAA;AAAAA,MAGC0Z;AAAAA,IACL,EAAA,CAAA;AAAMzd,YAAAyd;AAAAzd,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAAS,EAAAA,MAAAA,OAAA+c,OAAA1G,YAAA;AAIcrW,UAAAA,OAAM+c,OAAA1G,cAAwB,CAAA;AAAArW,MAAAA,EAAAA,IAAAA,OAAA+c,OAAA1G;AAAA9W,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AACzBkE,QAAAA,MAAAzD,OAAM+c,OAAAnF;AAAuBlU,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACtCiB,UAAA,CAAA;AAAEnE,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAApE,MAAAA,UAAA6M,UAAA;AAEOzI,UAAAyI,WAAQnL,SAAAua,CAAAA,eAAAyB,gBAAA;AAGjBxC,6BAAuB9O,aAAW;AAClCgP,mCAA6BnP,WAAS;AACtCgP,gCAA0B;AAAA,IAAA;AAC7Bjb,YAAA6M;AAAA7M,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AACWqE,QAAAA,MAAAwI,WAAQnL,SAElB8W;AAAclU,MAAAA;AAAA,MAAAtE,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,EAAA,EAAA,MAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAA,EAAA,MAAAoE,OAAApE,UAAAqE,KAAA;AAdxBC,UAAC,oBAAA,cAAA,EACe,YAAAL,KACK,iBAAAC,KACT,QAAAC,KACYyU,oBACH,iBAAAxU,KAOD,gBAAAC,IAEO,CAAA;AAAArE,YAAA4Y;AAAA5Y,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAoE;AAAApE,YAAAqE;AAAArE,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAAvE,MAAAA,EAAA,EAAA,MAAA6M,YAAA7M,EAAA,EAAA,MAAAS,OAAA+c,OAAAnF,iBAAAlS,QAAA;AAE1B,UAAA,CAAC0G,YAAapM,OAAM+c,OAAAnF,iBAAAlS,gBACjB,oBAAA,OAAA,EAAe,WAAA,+CAA8C,UAE7D,uCAAA,CAAA;AAAMnG,YAAA6M;AAAA7M,YAAAS,OAAA+c,OAAAnF,iBAAAlS;AAAAnG,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAuE,KAAA;AArBb,UAAA,qBAAA,OAAgB,EAAA,WAAA,YAEbD,UAAAA;AAAAA,MAAAA;AAAAA,MAgBCC;AAAAA,IAKL,EAAA,CAAA;AAAQvE,YAAAsE;AAAAtE,YAAAuE;AAAAvE,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAA,MAAAzE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAwE,KAAA;AACN,UAAA,qBAAA,OA/BU,EAAA,WAAA,eACZR,UAAAA;AAAAA,MAAAA;AAAAA,MAMAQ;AAAAA,IAwBJ,EAAA,CAAA;AAAMxE,YAAAgE;AAAAhE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA1E,MAAAA,UAAA8M,sBAAA9M,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,EAAA2b,EAAAA,MAAAA,kBAAA3b,EAAA,EAAA,MAAA6M,YAAA7M,EAAA,EAAA,MAAA+M,WAAA/M,EAAAuc,EAAAA,MAAAA,qBAAAvc,UAAAyX,mBAAAzX,EAAAgb,EAAAA,MAAAA,sBAAAhb,EAAA,EAAA,MAAA6b,oBAAA7b,EAAA,EAAA,MAAAmY,uBAAAnY,EAAAmb,EAAAA,MAAAA,6BAAAnb,UAAAS,OAAA+c,OAAAnF,iBAAA;AAEL3T,UAACmI,CAAAA,YAAa,oBAAA,oBAAA,EACF,SAAA,OACQ,wBACXmO,MAAiB,oBACdjO,SACWD,oBACV,UAAA,MAAA;AACNmO,iCAA2B;AAC3BC,6BAAsBxZ,MAAU;AAChC0Z,mCAA4B1Z,MAAU;AAAA,IAAC,GAE9B,aAAA,MAAA;AACTuZ,iCAA2B;AAC3BC,6BAAsBxZ,MAAU;AAChC0Z,mCAA4B1Z,MAAU;AAAA,IAAC,GAEvBkX,oBACV+C,UAAa,gBACVxD,aAAkB,qBACZgD,mBAAAA,2BACTU,UAAAA,kBACQ,kBAAA7W,QAAQmT,mBAAmB,GAC/B,cAACA,CAAAA,qBACK,oBAAA,CAACA,qBACFoE,mBACG,sBAAApE,sBAAmBzW,SAAejB,OAAM+c,OAAAnF,iBAC7CZ,gBAAkB,CAAA;AAAAzX,YAAA8M;AAAA9M,YAAA4Y;AAAA5Y,YAAA2b;AAAA3b,YAAA6M;AAAA7M,YAAA+M;AAAA/M,YAAAuc;AAAAvc,YAAAyX;AAAAzX,YAAAgb;AAAAhb,YAAA6b;AAAA7b,YAAAmY;AAAAnY,YAAAmb;AAAA1a,MAAAA,EAAAA,IAAAA,OAAA+c,OAAAnF;AAAArY,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA,MAAA3E,EAAAyE,EAAAA,MAAAA,OAAAzE,UAAA0E,KAAA;AA5D3CC,UACIF,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAiCCC;AAAAA,IA0BsC,EAAA,CAAA;AAExC1E,YAAAyE;AAAAzE,YAAA0E;AAAA1E,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AA9DH2E,SAAAA;AA8DG;AC7IJ,SAAAgZ,yBAAA5d,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAkC,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAIrC,QAAA;AAAA,IAAAU;AAAAA,IAAAE;AAAAA,MAGIM,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,SAAA6M,UAAA;6BAaP,6BAAoCA,SAAW,CAAA;AAAA7M,WAAA6M;AAAA7M,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAAS,QAAA;AAIjBqB,SAAAA,MAAMrB,QAfvB,gBAe4C;AAACT,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAAW,gBAAAX,EAAA,CAAA,MAAA4B,IAAA;AAD3DQ,oCAAgB,EAAA,WAAA,cACZ,UAAC,oBAAA,oBAAA,EAA0B,OAAAR,IACA,OAAA,aACDyR,MAjBhB,kBAkBe,MAAA,UACA,MAAA,SACKxG,UACAlM,uBAAY,CAAA,EAC9C,CAAA;AAAMX,WAAA6M;AAAA7M,WAAAW;AAAAX,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,SAAAS,QAAA;AAGyBqB,SAAAA,MAAMrB,QAxBvB,gBAwB4C;AAACT,WAAAS;AAAAT,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAW,gBAAAX,EAAA,EAAA,MAAAqC,IAAA;AAD3DK,oCAAgB,EAAA,WAAA,cACZ,UAAC,oBAAA,oBAAA,EAA0B,OAAAL,IACA,OAAA,aACDiR,MA1BhB,kBA2Be,MAAA,UACA,MAAA,SAEKzG,UACAlM,uBAAY,CAAA,EAC9C,CAAA;AAAMX,YAAA6M;AAAA7M,YAAAW;AAAAX,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAAS,QAAA;AAKSqB,SAAAA,MAAMrB,QApCF,qBAoC4B;AAACT,YAAAS;AAAAT,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAW,gBAAAX,EAAA,EAAA,MAAAgD,IAAA;AAFhDW,oCAAgB,EAAA,WAAA,cACZ,UAAC,oBAAA,oBAAA,EACU,OAAAX,IACA,OAAA,aACD4a,MAtCK,uBAuCN,MAAA,UACA,MAAA,SAEK/Q,UACAlM,uBAAY,CAAA,EAC9B,CAAA;AAAMX,YAAA6M;AAAA7M,YAAAW;AAAAX,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA9D,MAAAA,UAAAS,QAAA;AAISqB,SAAAA,MAAMrB,QA/CF,qBA+C4B;AAACT,YAAAS;AAAAT,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA/D,MAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAW,gBAAAX,EAAA,EAAA,MAAA8D,IAAA;AAFhDC,oCAAgB,EAAA,WAAA,cACZ,UAAC,oBAAA,oBAAA,EACU,OAAAD,IACA,OAAA,aACD+Z,MAjDK,uBAkDN,MAAA,UACA,MAAA,SAEKhR,UACAlM,uBAAY,CAAA,EAC9B,CAAA;AAAMX,YAAA6M;AAAA7M,YAAAW;AAAAX,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAAhE,MAAAA,UAAA6M,UAAA;qCAEU,EAAA,WAAA,cACZ,UAAA,oBAAC,OAAYiR,EAAAA,MAzDE,uBA0DH,MAAA,YACP7Z,UAAAA,CAAAA,SAAA;AAAC,YAAA;AAAA,QAAAsN;AAAAA,QAAAC;AAAAA,MAAAvN,IAAAA;AAAiC,iCACvB,eACG,EAAA,OAAA,kBACG4I,UACJ2E,MACCD,MAAQ,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,YAAA6M;AAAA7M,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAAjE,MAAAA,UAAA6M,UAAA;qCACU,EAAA,WAAA,cACZ,UAAA,oBAAC,OAAYkR,EAAAA,MApEE,uBAqEH,MAAA,YACP7Z,UAAAA,CAAAA,SAAA;AAAC,YAAA;AAAA,QAAAqN,OAAAU;AAAAA,QAAAT,MAAAU;AAAAA,MAAAhO,IAAAA;AACS,aAAA,oBAAC,iBACG,OAAA,kBACG2I,UACJ2E,MAAG,QACFD,OAAI,QAAI,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,YAAA6M;AAAA7M,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAAlE,MAAAA,UAAA6M,UAAA;qCACU,EAAA,WAAA,cACZ,UAAA,oBAAC,OAAYmR,EAAAA,MA/EC,sBAgFF,MAAA,YACP7Z,UAAAA,CAAAA,SAAA;AAAC,YAAA;AAAA,QAAAoN,OAAA2B;AAAAA,QAAA1B,MAAA2B;AAAAA,MAAAhP,IAAAA;AACS,aAAA,oBAAC,iBACG,OAAA,iBACG0I,UACJ2E,MAAG,QACFD,OAAI,QAAI,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,YAAA6M;AAAA7M,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAAwB,MAAAxB,EAAA,EAAA,MAAAgE,OAAAhE,EAAA,EAAA,MAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAAoC,EAAAA,MAAAA,MAAApC,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAA2D,EAAAA,MAAAA,MAAA3D,UAAA+D,IAAA;AACJ,UAAA,qBAAA,OAtFU,EAAA,WAAA,2BACZvC,UAAAA;AAAAA,MAAAA;AAAAA,MAGAY;AAAAA,MAUAM;AAAAA,MAYAiB;AAAAA,MAYAI;AAAAA,MAYAC;AAAAA,MAYAC;AAAAA,MAYAC;AAAAA,IAYJ,EAAA,CAAA;AAAMlE,YAAAwB;AAAAxB,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAoC;AAAApC,YAAA0C;AAAA1C,YAAA2D;AAAA3D,YAAA+D;AAAA/D,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAtFNmE,SAAAA;AAsFM;AC1GP,SAAA8Z,oBAAAle,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA6B,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAIhC,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAAkCO,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,SAAA6M,UAAA;AAKtC,SAAA,oBAAA,OAAgB,EAAA,WAAA,eAEZ,UAAA,oBAAC,mBACG,UAAC,oBAAA,0BAAA,EAAmCA,aACxC,EAEJ,CAAA;AAAM7M,WAAA6M;AAAA7M,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAAU,eAAA;AAOmBkB,SAAAgD,CAAA,MAAA;AACQ,oBAAA,gBAAgBA,EAACC,OAAAC,UAAkB,KAAEpD,SAAewc,WAAWtZ,EAACC,OAAAC,KAAa,CAAC;AAAA,IAAA;AAC/F9E,WAAAU;AAAAV,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,SAAAS,QAAA;AAEMqB,SAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,WAAAS;AAAAT,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAA4B,MAAA5B,EAAA,CAAA,MAAAoC,IAAA;AATzDC,oCAAgB,EAAA,WAAA,eAEZ,UAAA,oBAAC,aAAgB,MAAA,gBACIwK,UACJ,MAAA,UACI,UAAAjL,IAGH,OAAA,iBACA,OAAAQ,IAAmC,EAEzD,CAAA;AAAMpC,WAAA6M;AAAA7M,WAAA4B;AAAA5B,WAAAoC;AAAApC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAAwB,EAAAA,MAAAA,MAAAxB,UAAAqC,IAAA;AArBVK,SAEIlB,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAQAa;AAAAA,IAWM,EAAA,CAAA;AACPrC,YAAAwB;AAAAxB,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAtBH0C,SAAAA;AAsBG;AC9BJ,SAAAyb,uBAAApe,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAgC,QAAA;AAAA,IAAA4U;AAAAA,IAAAD;AAAAA,IAAA/H;AAAAA,IAAAnJ;AAAAA,EAAA3D,IAAAA;AAYnC,QAAA;AAAA,IAAAU;AAAAA,IAAAE;AAAAA,IAAAE;AAAAA,MAIII,UAA2C;AAE/C,QAAAmd,aAAmBC;AAA0B,MAAA,CAExCD,YAAU;AAAA5c,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACJ1B,YAAA,oBAAA,OAAA,EAAgB,WAAA,eACnB,UAAA,oBAAC,mBACL,CAAA,EAAA,CAAA;AAAMxB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,YAAAxB,EAAA,CAAA;AAAA,IAAA;AAFCwB,WAAAA;AAAAA,EAED;AAEV8c,QAAAA,WAAiB1J,WAAW,YAAY;AAAOpT,MAAAA;AAAA,MAAAxB,EAAAse,CAAAA,MAAAA,YAAAte,SAAAS,QAAA;AACTqB,SAAAA,MAAMrB,QAAQ6d,QAAQ;AAACte,WAAAse;AAAAte,WAAAS;AAAAT,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAA7D,QAAAue,YAAsC/c;AAAwBI,MAAAA;AAAA5B,MAAAA,EAAAa,CAAAA,MAAAA,UAAAb,SAAAse,YAAAte,EAAA,CAAA,MAAA0D,YAAA;AACxBA,SAAAA,cAAc5B,MAAMjB,QAAQyd,QAAQ;AAACte,WAAAa;AAAAb,WAAAse;AAAAte,WAAA0D;AAAA1D,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA3E,QAAAwe,YAAsC5c;AAST,QAAAQ,KAACyS,YAAY7P,QAAQuZ,SAAS,KAAM1R;AAAQxK,MAAAA;AAAA,MAAArC,EAAAW,CAAAA,MAAAA,gBAAAX,EAAA,CAAA,MAAAwe,aAAAxe,EAAAse,EAAAA,MAAAA,YAAAte,EAAA,EAAA,MAAAue,aAAAve,UAAAoC,IAAA;AANrE,SAAA,oBAAA,UAAA,EACI,qCAAgB,EAAA,WAAA,eAEZ,UAAC,oBAAA,OAAA,EAAYkc,MAAO,UACHA,UACL,MAAA,UACK,UAAAlc,IACHmc,kBACAC,OAAQ,WACD7d,cACV8d,IAAgBA,kBAE/B,CAAA,EAAA,CAAA,EAAM,CAAA;AAEPze,WAAAW;AAAAX,WAAAwe;AAAAxe,YAAAse;AAAAte,YAAAue;AAAAve,YAAAoC;AAAApC,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAdHqC,SAAAA;AAcG;AAIJ,SAAAoc,kBAAA1e,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAA4M,MAAAA;AAAAoD,MAAAA;AAAAtP,MAAAA;AAAA2d,MAAAA;AAAAI,MAAAA;AAAA5Z,MAAAA;AAAA9E,MAAAA,SAAAD,IAAA;AAA2B,KAAA;AAAA,MAAA8M;AAAAA,MAAAyR;AAAAA,MAAAxZ;AAAAA,MAAAnE;AAAAA,MAAAsP;AAAAA,MAAA,GAAAyO;AAAAA,IAAA3e,IAAAA;AAajCC,WAAAD;AAAAC,WAAA6M;AAAA7M,WAAAiQ;AAAAjQ,WAAAW;AAAAX,WAAAse;AAAAte,WAAA0e;AAAA1e,WAAA8E;AAAAA,EAAAA,OAAA;AAAA+H,eAAA7M,EAAA,CAAA;AAAAiQ,YAAAjQ,EAAA,CAAA;AAAAW,mBAAAX,EAAA,CAAA;AAAAse,eAAAte,EAAA,CAAA;AAAA0e,YAAA1e,EAAA,CAAA;AAAA8E,YAAA9E,EAAA,CAAA;AAAA,EAAA;AAEG,QAAAoe,aAAmBC;AAA0B,MAAA,CAExCD,YAAU;AAAA5c,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACJ1B,YAAA,oBAAA,OAAA,EAAgB,WAAA,eACnB,UAAA,oBAAC,mBACL,CAAA,EAAA,CAAA;AAAMxB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,YAAAxB,EAAA,CAAA;AAAA,IAAA;AAFCwB,WAAAA;AAAAA,EAED;AAAAA,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAoe,YAAAO,aAAA;AAEUP,SAAAA,YAAUO,eAAmB;AAAA,MAAA,CAAA,IAAAP,YAAAO;AAAA3e,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAjD,QAAA2e,cAAoBnd;AAA8BI,MAAAA;AAAA5B,MAAAA,EAAA2e,EAAAA,MAAAA,eAAA3e,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAAiQ,EAAAA,MAAAA,SAAAjQ,UAAAW,gBAAAX,EAAA,EAAA,MAAAse,YAAAte,EAAA,EAAA,MAAA0e,SAAA1e,EAAA,EAAA,MAAA8E,OAAA;AAElD,UAAA1E,SAAyBgP,MAAAC,KAAW,IAAAf,IAChClB,OAAA3M,OAAcke,WAAW,EAACvY,IAAAkD,OAAiB,EAACzG,OAAAmC,OAAe,CAAa,EAAAvE,QAClE;AAEVme,UAAAA,uBAA6BD,YAAW9b,OAAAuG,QAA2B;AAAEhH,QAAAA;AAAApC,QAAAA,UAAA2e,aAAA;AAc5Cvc,YAAAgU,CAAA,aAAA;AACTyI,cAAAA,qBAA2BF,YAAWhF,KAAAmF,CAAAA,eAAoBA,WAAUxf,OAAQ8W,YAAY0I,WAAUpf,SAAU0W,QAAQ;AAAE,YAAA,CACjHyI,oBAAkB;AAAA,iBAAA;AAAA,QAAA;AAEnB,eAAA,4BAAe,EAAA,WAAA,iBACX,UAAA;AAAA,UAAC,oBAAA,aAAA,EAA8BA,kBAAiB,mBAChD,CAAA;AAAA,UAAA,oBAAC,cACY,SAAA,aACC,WAAA,oBACTA,UAAAA,oBAAkBpf,KAAAkM,YACvB,EAAA,CAAA;AAAA,QACJ,EAAA,CAAA;AAAA,MAAA;AACP3L,cAAA2e;AAAA3e,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,YAAApC,EAAA,EAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,UAAA2e,aAAA;AAGetc,YAAAS,CACZ,UAAA,oBAAC,aAAmB,EAAA,OAAAA,SAAS,SAGrB6b,UAAW9b,YAAAA,OAAAkc,CAAsBD,iBAAAA,aAAUhc,UAAWA,KAAK,EAACsD,IAAA4Y,CAAAA,iBAE5C,oBAAA,YAAA,EAEG,OAAAF,aAAUxf,MAAOwf,aAAUpf,MAClC,UAAA,qBAOM,OAPS,EAAA,WAAA,iBACX,UAAA;AAAA,QAAC,oBAAA,aAAA,EAA8Bof,kBAAS,aACxC,CAAA;AAAA,QAAA,oBAAC,cACY,SAAA,aACC,WAAA,oBACTA,UAAAA,cAAUrf,KAAAkM,YACf,EAAA,CAAA;AAAA,MAAA,EACJ,CAAA,EATK,GAAA,GAAGmT,aAAUxf,MAAOwf,aAAUpf,IAAK,IAAIoD,KAAK,EAUrD,CACH,EAhBK,GAAA,SAASA,KAAK,EAmBhC;AACH9C,cAAA2e;AAAA3e,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,YAAArC,EAAA,EAAA;AAAA,IAAA;8BA/CJ,QACU,EAAA,OAAAgF,QAAQiL,KAAK,GACVpD,UACH,OAAA/H,SAAS,IACN,UAAA,gBACJwZ,MAAO,UACP,MAAA,SACK,WAAG,MACJ3d,UAAW,cACd,OAAA,qBACM,aAAAyB,KAaTsc,GAAAA,OAEHte,UAAAA;AAAAA,MAAAA,OAAM6e,QAAS5c,GAsBf;AAAA,MAEAuc,4CAAyB,aAAmB,EAAA,OAAA,SACxCA,UAAoBxY,qBAAAA,IAAA4D,QAahB,GAGT;AAAA,IAEJ,EAAA,CAAA;AAAShK,YAAA2e;AAAA3e,YAAA6M;AAAA7M,YAAAiQ;AAAAjQ,YAAAW;AAAAX,YAAAse;AAAAte,YAAA0e;AAAA1e,YAAA8E;AAAA9E,YAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,EAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BAER,gBAAa,UAGd,kEAAA,CAAA;AAAelD,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,UAAA4B,IAAA;AA1EnBS,SACIT,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAsEAQ;AAAAA,IAGe,EAAA,CAAA;AAChBpC,YAAA4B;AAAA5B,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AA3EHqC,SAAAA;AA2EG;AA1GJ,SAAA2H,SAAAkV,cAAA;AAoF4B,SAAA,oBAAC,YACkB,EAAA,OAAAJ,aAAUxf,MAAOwf,aAAUpf,MACjD,UAAA,qBAOM,OAPS,EAAA,WAAA,iBACX,UAAA;AAAA,IAAC,oBAAA,aAAA,EAA8Bof,kBAAS;IACxC,oBAAC,cACY,SAAA,aACC,WAAA,oBACTA,UAAAA,cAAUrf,KAAAkM,YACf,EAAA,CAAA;AAAA,EAAA,EACJ,CAAA,EAToBmT,GAAAA,aAAUxf,MAAOwf,aAAUpf,IAUnD;AAAa;AA9FlC,SAAA0J,SAAA+V,KAAA;AAAA,SA4BuDA,CAAAA,IAAGrc;AAAA;AA5B1D,SAAAwG,QAAA1E,GAAA;AAAA,SAyBqCA,EAAC9B;AAAA;ACvEtC,SAAAsc,sBAAArf,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA+B,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAIlC,QAAA;AAAA,IAAAU;AAAAA,IAAAI;AAAAA,IAAAD;AAAAA,IAAAF;AAAAA,MAKIO,UAA2C;AAAEO,MAAAA;AAAAxB,MAAAA,SAAAS,QAAA;AAGXqB,SAAAA,MAAMrB,QAD3B,MAC2C;AAACT,WAAAS;AAAAT,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAA7D,QAAAqf,YAAsC7d;AAAwBI,MAAAA;AAAA,MAAA5B,EAAAa,CAAAA,MAAAA,UAAAb,SAAAY,SAAA;AACxBgB,SAAAE,MAAMlB,SAF3B,MAE4C,KAAKkB,MAAMjB,QAFvD,MAEuE;AAACb,WAAAa;AAAAb,WAAAY;AAAAZ,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAzF,QAAAsf,YAAsC1d;AAAoDQ,MAAAA;AAAApC,MAAAA,SAAAS,QAAA;AAG/CqB,SAAAA,MAAMrB,QAD3B,WACgD;AAACT,WAAAS;AAAAT,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAvE,QAAAuf,iBAA2Cnd;AAA6BC,MAAAA;AAAA,MAAArC,EAAAa,CAAAA,MAAAA,UAAAb,SAAAY,SAAA;AAC7ByB,SAAAP,MAAMlB,SAF3B,WAEiD,KAAKkB,MAAMjB,QAF5D,WAEiF;AAACb,WAAAa;AAAAb,WAAAY;AAAAZ,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAxG,QAAAwf,iBAA2Cnd;AAOZ,QAAAK,KAAA2c,aAAa;AACbrc,QAAAA,KAAAgC,QAAQsa,SAAS;AAAC3b,MAAAA;AAAA3D,MAAAA,UAAAU,eAAA;AAEV+I,SAAAA,CAAAA,MAAO/I,cAhB7B,QAgBqD+I,CAAC;AAACzJ,YAAAU;AAAAV,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAAC,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAcpDY,SAAC,oBAAA,YAAA,EAAkB,OAAA,aAAa,UAAW,cAAA,CAAA;AAC3CC,SAAC,oBAAA,YAAA,EAAkB,OAAA,QAAQ,UAAM,SAAA,CAAA;AAAa/D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAD,SAAA9D,EAAA,EAAA;AAAA+D,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAA,EAAA,MAAA6M,YAAA7M,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,IAAA;AAnBlDK,+BAAC,QAAayb,EAAAA,MAZb,QAac,OAAA/c,IACA,OAAAM,IACD,MAAA,SACS,eAAAW,IACR,OAAA,QACI,WAAG,MACD,aAAA2F,SAUHuD,UACd/I,UAAAA;AAAAA,MAAAA;AAAAA,MACAC;AAAAA,IACJ,EAAA,CAAA;AAAS/D,YAAA6M;AAAA7M,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AACYiE,QAAAA,MAAAe,QAAQsa,SAAS;AAACpb,MAAAA;AAAA,MAAAlE,EAAAsf,EAAAA,MAAAA,aAAAtf,UAAAiE,KAAA;AAAvCC,UAAC,oBAAA,cAAA,EAAoB,OAAAD,KAChBqb,UACL,UAAA,CAAA;AAAetf,YAAAsf;AAAAtf,YAAAiE;AAAAjE,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAkE,KAAA;AAxBnBC,+BAAA,OACIH,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAqBAE;AAAAA,IAGJ,EAAA,CAAA;AAAMlE,YAAAgE;AAAAhE,YAAAkE;AAAAlE,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAMa,QAAAoE,MAAAmb,kBAAkB;AAAElb,MAAAA;AAAArE,MAAAA,UAAAU,eAAA;AACZ2D,UAAAoG,SAAO/J,cAvCxB,aAuCqD+I,QAAM,SAAgBA,OAAAA,GAAC;AAACzJ,YAAAU;AAAAV,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAWpEsE,QAAAA,MAAAU,QAAQwa,cAAc;AAACjb,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAA,MAAAzE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAElCqB,UAAC,oBAAA,YAAA,EAAkB,OAAA,QAAQ,UAAM,SAAA,CAAA;AACjCC,UAAC,oBAAA,YAAA,EAAkB,OAAA,aAAa,UAAW,cAAA,CAAA;AAC3CC,UAAC,oBAAA,YAAA,EAAkB,OAAA,aAAa,UAAe,kBAAA,CAAA;AAAazE,YAAAuE;AAAAvE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAF,UAAAvE,EAAA,EAAA;AAAAwE,UAAAxE,EAAA,EAAA;AAAAyE,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAA,EAAA,MAAA6M,YAAA7M,EAAAoE,EAAAA,MAAAA,OAAApE,EAAAqE,EAAAA,MAAAA,OAAArE,UAAAsE,KAAA;AApBhEI,+BAAC,QAAagb,EAAAA,MAlCR,aAmCY7S,UACJ,MAAA,SACK,WAAG,MACP,OAAAzI,KACQ,eAAAC,KACF,aAAA+E,UAUN,OAAA9E,KACA,OAAA,mBACXC,UAAAA;AAAAA,MAAAA;AAAAA,MACAC;AAAAA,MACAC;AAAAA,IACJ,EAAA,CAAA;AAASzE,YAAA6M;AAAA7M,YAAAoE;AAAApE,YAAAqE;AAAArE,YAAAsE;AAAAtE,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AACY2E,QAAAA,MAAAK,QAAQwa,cAAc;AACtC,QAAAza,MAAAya,kBAAkB;AAAsEva,MAAAA;AAAA,MAAAjF,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA+E,KAAA;AAD7FE,UAAC,oBAAA,cAAA,EAAoB,OAAAN,KAChBI,UACL,IAAA,CAAA;AAAe/E,YAAA2E;AAAA3E,YAAA+E;AAAA/E,YAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,EAAA;AAAA,EAAA;AAAAkF,MAAAA;AAAA,MAAAlF,EAAA0E,EAAAA,MAAAA,OAAA1E,UAAAiF,KAAA;AAzBnBC,+BAAA,OACIR,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAsBAO;AAAAA,IAGJ,EAAA,CAAA;AAAMjF,YAAA0E;AAAA1E,YAAAiF;AAAAjF,YAAAkF;AAAAA,EAAAA,OAAA;AAAAA,UAAAlF,EAAA,EAAA;AAAA,EAAA;AAAAmF,MAAAA;AAAA,MAAAnF,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAkF,KAAA;AAEJ,UAAA,qBAAA,OAvDU,EAAA,WAAA,mCACZf,UAAAA;AAAAA,MAAAA;AAAAA,MA0BAe;AAAAA,IA4BJ,EAAA,CAAA;AAAMlF,YAAAmE;AAAAnE,YAAAkF;AAAAlF,YAAAmF;AAAAA,EAAAA,OAAA;AAAAA,UAAAnF,EAAA,EAAA;AAAA,EAAA;AAAAoF,MAAAA;AAAApF,MAAAA,UAAA6M,UAAA;AAEN,UAAA,oBAAA,OAAgB,EAAA,WAAA,eACZ,UAAA,oBAAC,mBACG,UAAC,oBAAA,2BAAA,EAAoCA,aACzC,EACJ,CAAA;AAAM7M,YAAA6M;AAAA7M,YAAAoF;AAAAA,EAAAA,OAAA;AAAAA,UAAApF,EAAA,EAAA;AAAA,EAAA;AAAAqF,MAAAA;AAAA,MAAArF,EAAAmF,EAAAA,MAAAA,OAAAnF,UAAAoF,KAAA;AA9DVC,UACIF,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAyDAC;AAAAA,IAIM,EAAA,CAAA;AACPpF,YAAAmF;AAAAnF,YAAAoF;AAAApF,YAAAqF;AAAAA,EAAAA,OAAA;AAAAA,UAAArF,EAAA,EAAA;AAAA,EAAA;AA/DHqF,SAAAA;AA+DG;AAnFJ,SAAA+D,SAAAuW,KAAA;AAAA,UAwDiClW,KAAC;AAAA,IAAA,KACA,aAAW;AACL,aAAA;AAAA,IAAW;AAAA,IAAA,KACjB,aAAW;AACL,aAAA;AAAA,IAAe;AAAA,IAAA,SAAA;AAEf,aAAA;AAAA,IAAM;AAAA,EAAA;AAAA;AA9D9C,SAAAH,QAAAY,KAAA;AAAA,UA+BiCT,KAAC;AAAA,IAAA,KACA,aAAW;AACL,aAAA;AAAA,IAAW;AAAA,IAAA,KACjB,QAAM;AACA,aAAA;AAAA,IAAM;AAAA,IAAA,SAAA;AAEN,aAAA;AAAA,IAAE;AAAA,EAAA;AAAA;ACvC1C,SAAAmW,2BAAA7f,IAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAoC,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAE1CyB,MAAAA;AAAAxB,MAAAA,SAAA6M,UAAA;oCAS2B,EAAA,WAAA,eACZ,UAAA,oBAAC,OAAW,EAAA,MAAA,YAAiBgT,MAPd,sBAQVje,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA2P;AAAAA,QAAAC;AAAAA,MAAA5P,IAAAA;AACS,aAAA,oBAAC,iBACG,OAAA,wBACGiL,UACJ2E,MACG,SAAA,uFACFD,MAAQ,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,WAAA6M;AAAA7M,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAA6M,UAAA;oCAEU,EAAA,WAAA,eACZ,UAAA,oBAAC,OAAYiT,EAAAA,MAnBR,YAoBO,MAAA,YACP1d,UAAAA,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAmP,OAAAU;AAAAA,QAAAT,MAAAU;AAAAA,MAAA9P,IAAAA;AACS,aAAA,oBAAC,eACG,EAAA,OAAA,aACGyK,UACD,SAAA,wDACH2E,MAAAA,QACCD,OAAI,QAAI,CAAA;AAAA,IAAA,EAE3B,CAAA,EACJ,CAAA;AAAMvR,WAAA6M;AAAA7M,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AACJ,SAAA,qBAAA,OA3BU,EAAA,WAAA,2BACZJ,UAAAA;AAAAA,MAAAA;AAAAA,MAaAI;AAAAA,IAaJ,EAAA,CAAA;AAAM5B,WAAAwB;AAAAxB,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AA3BNoC,SAAAA;AA2BM;ACtCP,SAAA2d,sBAAAhgB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAA+B,QAAA;AAAA,IAAA4M;AAAAA,EAAA9M,IAAAA;AAErCyB,MAAAA;AAAAxB,MAAAA,SAAA6M,UAAA;AAGOrL,SACI,oBAAA,UAAA,EAAA,UAAA,2BAAgB,EAAA,WAAA,eAEZ,UAAA,oBAAC,iBACG,EAAA,UAAA,oBAAC,2BAAoCqL,EAAAA,SAAAA,GACzC,CAAA,GAEJ,EAAM,CAAA;AACP7M,WAAA6M;AAAA7M,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AARHwB,SAAAA;AAQG;ACLKwe,SAAAA,yBAAyBC,cACAC,kBACAzI,iBAA2D;AAE5F0I,MAAAA;AACJ,MAAID,qBAAqB,cAAc;AACnCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEyJ,SAAS3e;AAAAA,MACT4e,WAAW5e;AAAAA,MACX6e,UAAU7e;AAAAA,MACV8e,OAAO9e;AAAAA,MACP+e,KAAK/e;AAAAA,MACL+K,YAAY/K;AAAAA,IAAAA,CAEpB;AAAA,EAAA,WACOwe,qBAAqB,aAAa;AACzCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxE0J,WAAW;AAAA,MACXD,SAAS3e;AAAAA,MACT6e,UAAU7e;AAAAA,MACV8e,OAAO9e;AAAAA,MACP+e,KAAK/e;AAAAA,MACL+K,YAAY/K;AAAAA,IAAAA,CAEpB;AAAA,EAAA,WACOwe,qBAAqB,YAAY;AACxCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEyJ,SAAS3e;AAAAA,MACT4e,WAAW5e;AAAAA,MACX6e,UAAU;AAAA,MACVC,OAAO9e;AAAAA,MACP+e,KAAK/e;AAAAA,IAAAA,CAEb;AAAA,EAAA,WACOwe,qBAAqB,OAAO;AACnCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEyJ,SAAS3e;AAAAA,MACT4e,WAAW5e;AAAAA,MACX6e,UAAU7e;AAAAA,MACV8e,OAAO9e;AAAAA,MACP+e,KAAK;AAAA,MACLhU,YAAY/K;AAAAA,IAAAA,CAEpB;AAAA,EAAA,WACOwe,qBAAqB,SAAS;AACrCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEyJ,SAAS3e;AAAAA,MACT4e,WAAW5e;AAAAA,MACX6e,UAAU7e;AAAAA,MACV8e,OAAO;AAAA,MACPC,KAAK/e;AAAAA,MACL+K,YAAY/K;AAAAA,IAAAA,CAEpB;AAAA,EAAA,WACOwe,qBAAqB,UAAU;AACtCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEyJ,SAAS3e;AAAAA,MACT4e,WAAW5e;AAAAA,MACX6e,UAAU7e;AAAAA,MACV8e,OAAO9e;AAAAA,MACP+e,KAAK/e;AAAAA,MACL+K,YAAYwT,aAAaxT,cAAc,CAAA;AAAA,IAAA,CAE/C;AAAA,EAAA,WACOyT,qBAAqB,gBAAgB;AAC5CC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxED,IAAI;AAAA,QACAD,UAAU;AAAA,QACVjK,YAAYwT,aAAatJ,IAAIlK,cAAc,CAAA;AAAA,MAC/C;AAAA,IAAA,CAER;AAAA,EAAA,WACOyT,qBAAqB,gBAAgB;AAC5CC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEnK,YAAY/K;AAAAA,IAAAA,CAEpB;AAAA,EAAA,WACOwe,qBAAqB,iBAAiB;AAC7CC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEnK,YAAYwT,aAAaxT,cAAc,CAAA;AAAA,IAAA,CAE/C;AAAA,EAAA,WACOyT,qBAAqB,uBAAuB;AACnDC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxED,IAAI;AAAA,QACAD,UAAU;AAAA,QACVjK,YAAYwT,aAAatJ,IAAIlK,cAAc,CAAA;AAAA,MAC/C;AAAA,IAAA,CAER;AAAA,EAAA,WACOyT,qBAAqB,eAAe;AAC3CC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxEyJ,SAAS;AAAA,QACLnL,aAAa;AAAA,MACjB;AAAA,IAAA,CAER;AAAA,EAAA,WACOgL,qBAAqB,qBAAqB;AACjDC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxED,IAAI;AAAA,QACAD,UAAU;AAAA,QACV2J,SAASJ,aAAatJ,IAAI0J,WAAW;AAAA,UACjCnL,aAAa;AAAA,QACjB;AAAA,MACJ;AAAA,IAAA,CAER;AAAA,EAAA,WACOgL,qBAAqB,SAAS;AACrCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxE8J,UAAU;AAAA,MACV5J,YAAYmJ,aAAanJ,cAAc,CAAC;AAAA,IAAA,CAEhD;AAAA,EAAA,WACOoJ,qBAAqB,aAAa;AACzCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxE8J,UAAU;AAAA,MACV5J,YAAYpV;AAAAA,IAAAA,CAEpB;AAAA,EAAA,WACOwe,qBAAqB,aAAa;AACzCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,IAAA,CAEhF;AAAA,EAAA,WACOsJ,qBAAqB,oBAAoB;AAChDC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxED,IAAI;AAAA,QACAD,UAAU;AAAA,MACd;AAAA,IAAA,CAER;AAAA,EAAA,WACOwJ,qBAAqB,UAAU;AACtCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,IAAA,CAEhF;AAAA,EAAA,WACOsJ,qBAAqB,aAAa;AACzCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxE+J,MAAM;AAAA,IAAA,CAEd;AAAA,EAAA,WACOT,qBAAqB,UAAU;AACtCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,IAAA,CAEhF;AAAA,EAAA,WACOsJ,qBAAqB,SAAS;AACrCC,sBAAkBC,UACdH,cACA;AAAA,MACIvJ,UAAU;AAAA,MACVkB,gBAAgB;AAAA,MAChBhB,UAAUqJ,aAAarJ,aAAalV,SAAYue,aAAarJ,WAAW;AAAA,MACxE4G,OAAO;AAAA,QACH1G,YAAY,CAAC;AAAA,MACjB;AAAA,IAAA,CAER;AAAA,EACOoJ,WAAAA,oBAAoBzI,gBAAgByI,gBAAgB,GAAG;AAC5C,sBAAA;AAAA,MACd,GAAGzI,gBAAgByI,gBAAgB,EAAE3J;AAAAA,MACrCqB,gBAAgBsI;AAAAA,IAAAA;AAAAA,EAExB;AAEOC,SAAAA;AACX;ACvQO,SAAAS,iBAAA7gB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA0B,QAAA;AAAA,IAAA4M;AAAAA,IAAAnJ;AAAAA,EAAA3D,IAAAA;AAQ7B,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAAkCO,UAAU;AAAEO,MAAAA;AAAAxB,MAAAA,SAAAS,QAAA;AAE7BqB,SAAAA,MAAMrB,QAAQ,KAAK;AAACT,WAAAS;AAAAT,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAArC,QAAA6gB,WAAiBrf;AAAqBI,MAAAA;AAAA5B,MAAAA,SAAAU,eAAA;AAUPkB,SAAAkD,CAAA,UAAA;AAAA,UACPA,UAAU,UAAQ;AAClBpE,sBAAc,OAAK,IAAM;AAAA,MAAA,OAAC;AAE1BA,sBAAc,OAAOoE,KAAK;AAAA,MAAC;AAAA,IAAA;AAClC9E,WAAAU;AAAAV,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAcM,QAAAoC,KAAAye,YAAY;AAAQxe,MAAAA;AAAAK,MAAAA;AAAAM,MAAAA;AAAAW,MAAAA;AAAA,MAAA3D,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAC3Bb,SAAC,oBAAA,YAAA,EAAkB,OAAA,UAAU,UAE7B,cAAA,CAAA;AACAK,SAAC,oBAAA,YAAA,EAAkB,OAAA,SAAS,UAE5B,QAAA,CAAA;AACAM,SAAC,oBAAA,YAAA,EAAkB,OAAA,SAAS,UAE5B,QAAA,CAAA;AACAW,SAAC,oBAAA,YAAA,EAAkB,OAAA,SAAS,UAE5B,QAAA,CAAA;AAAa3D,WAAAqC;AAAArC,WAAA0C;AAAA1C,WAAAgD;AAAAhD,WAAA2D;AAAAA,EAAAA,OAAA;AAAAtB,SAAArC,EAAA,CAAA;AAAA0C,SAAA1C,EAAA,CAAA;AAAAgD,SAAAhD,EAAA,CAAA;AAAA2D,SAAA3D,EAAA,CAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA9D,MAAAA,EAAA6M,CAAAA,MAAAA,YAAA7M,SAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AArCrB0B,6BAuCM,OAvCU,EAAA,WAAA,eAEZ,UAAC,qBAAA,QAAA,EACa+I,UACA,UAAA,gBACC,WAAG,MACC,eAAAjL,IAMR,OAAA,gBACM,aAAA0H,SAYN,OAAAlH,IACPC,UAAAA;AAAAA,MAAAA;AAAAA,MAGAK;AAAAA,MAGAM;AAAAA,MAGAW;AAAAA,IAAAA,EAGJ,CAAA,EACJ,CAAA;AAAM3D,WAAA6M;AAAA7M,WAAA4B;AAAA5B,YAAAoC;AAAApC,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA0D,YAAA;AAENK,oCAAgB,EAAA,WAAA,eAEZ,UAAA,oBAAC,mBAEG,UAAC,oBAAA,0BAAA,EAAmC8I,UACL,KAAA,MACA,KAAA,MACC,MAAG,MACGnJ,WAAAA,CAAU,EAEpD,CAAA,EAEJ,CAAA;AAAM1D,YAAA6M;AAAA7M,YAAA0D;AAAA1D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAAhE,MAAAA,UAAAU,eAAA;AAMmBsD,UAAAY,CAAA,MAAA;AACQ,oBAAA,gBAAgBA,EAACC,OAAAC,UAAkB,KAAEpD,SAAekD,EAACC,OAAAC,KAAa;AAAA,IAAA;AACnF9E,YAAAU;AAAAV,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAAjE,MAAAA,UAAAS,QAAA;AAEMqB,UAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,YAAAS;AAAAT,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAAlE,MAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAgE,OAAAhE,EAAA,EAAA,MAAAiE,KAAA;AARzDC,UAUM,oBAAA,OAAA,EAVU,WAAA,eAEZ,8BAAC,WAAgB,EAAA,MAAA,gBACI2I,UACA,UAAA7I,KAGH,OAAA,iBACA,OAAAC,KAAmC,EAEzD,CAAA;AAAMjE,YAAA6M;AAAA7M,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAAnE,MAAAA,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAA8D,MAAA9D,EAAA,EAAA,MAAA+D,IAAA;AAlEVI,UACIL,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAyCAC;AAAAA,MAcAG;AAAAA,IAUM,EAAA,CAAA;AACPlE,YAAAkE;AAAAlE,YAAA8D;AAAA9D,YAAA+D;AAAA/D,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAnEHmE,SAAAA;AAmEG;AAhFJ,SAAAmF,QAAAsC,SAAA;AAAA,UA4ByB9G,SAAK;AAAA,IAAA,KACJ,SAAO;AACD,aAAA;AAAA,IAAO;AAAA,IAAA,KACb,SAAO;AACD,aAAA;AAAA,IAAO;AAAA,IAAA,KACb,SAAO;AACD,aAAA;AAAA,IAAO;AAAA,IAAA,SAAA;AAEP,aAAA;AAAA,IAAa;AAAA,EAAA;AAAA;ACzCvCgc,MAAAA,qBAAyC,CAClD,cACA,aACA,YACA,OACA,SACA,UACA,gBACA,gBACA,iBACA,uBACA,eACA,qBACA,aACA,oBACA,UACA,aACA,SACA,aACA,UACA,OAAO;AAGEC,MAAAA,kBAAkD3T,OAAO4I,QAAQgL,qBAAqB,EAC9Fne,OAAO,CAAC,CAACvD,EAAE,MAAMwhB,mBAAmB/d,SAASzD,EAAsB,CAAC,EACpE8G,IAAI,CAAC,CAAC9G,IAAI2hB,MAAM,OAAO;AAAA,EAAE,CAAC3hB,EAAE,GAAG2hB;AAAO,EAAE,EACxC/J,OAAO,CAACC,GAAGC,OAAO;AAAA,EAAE,GAAGD;AAAAA,EAAG,GAAGC;AAAE,IAAI,CAAA,CAAE;ACrBnC,SAAA8J,sBAAAnhB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA+B,QAAA;AAAA,IAAA4M;AAAAA,IAAAnJ;AAAAA,EAAA3D,IAAAA;AAQlC,QAAA;AAAA,IAAAU;AAAAA,IAAAC;AAAAA,MAGIO,UAAU;AAKd+T,QAAAA,WAAiB,GAHO,SAAS;AAIjCC,QAAAA,UAAgB,GAJQ,SAAS;AAKjCC,QAAAA,cAAoB,GALI,SAAS;AAKoB1T,MAAAA;AAAAxB,MAAAA,SAAAS,QAAA;AAE/BqB,SAAAA,MAAMrB,QAAQuU,QAAQ,KAAK;AAAehV,WAAAS;AAAAT,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAhE,QAAAoV,gBAAsB5T;AAA2CI,MAAAA;AAAA5B,MAAAA,SAAAS,QAAA;AACxCqB,SAAAA,MAAMrB,QAAQyU,WAAW,KAAK;AAAGlV,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA1D,QAAAqV,mBAAyBzT;AAAkCgC,MAAAA;AAAA0R,MAAAA;AAAAtR,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAhC,MAAAA;AAAAC,MAAAA;AAAAK,MAAAA;AAAAM,MAAAA;AAAAW,MAAAA;AAAAG,MAAAA;AAAAC,MAAAA;AAAA,MAAA/D,EAAA6M,CAAAA,MAAAA,YAAA7M,EAAA,CAAA,MAAAoV,iBAAApV,EAAA0D,CAAAA,MAAAA,cAAA1D,EAAA,CAAA,MAAAqV,oBAAArV,SAAAS,QAAA;AAC3D8U,UAAAA,eAAqBzT,MAAMrB,QAAQwU,OAAO;AAE1CY,UAAAA,sBAA4B,OAAOT,kBAAkB;AACrDU,UAAAA,yBAA+B,OAAOT,qBAAqB;AAAW,QAAArV,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA0D,YAAA;AAI9D,YAAA,oBAAA,SAAgB,WAAA,eAEZ,8BAAC,iBAEG,EAAA,UAAA,oBAAC,0BAAmCmJ,EAAAA,UACF,QAAA,MACG,WAAG,MACT,KAAG,MACH,KAAA,MACC,MAAG,MACE,WAAG,MACFnJ,WAAU,CAAA,EAEpD,CAAA,EAEJ,CAAA;AAAM1D,cAAA6M;AAAA7M,cAAA0D;AAAA1D,cAAAoE;AAAAA,IAAAA,OAAA;AAAAA,YAAApE,EAAA,EAAA;AAAA,IAAA;AAEuB,UAAA;AACxB+V,SAAAA;AAAe,QAAA/V,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAER,YAAA,qBAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,QAAA,oBAAC,gBACD,EAAA;AAAA,4BAAC,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,sBAAA;AAAA,MACJ,EAAA,CAAA;AAAMlD,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAGmC,SAAA;AAQpB,UAAAqE,OAAAwR,uBAAuBhJ;AAC1BvI,UAAAA,OAAAuR,sBAAsB,MAAMT;AAAa,QAAApV,EAAAqE,EAAAA,MAAAA,QAAArE,UAAAsE,MAAA;AAN3DN,uCAAgB,EAAA,WAAA,eACZ,UAAC,oBAAA,OAAA,EAAYgR,gBACFpP,IAAAA,oBACG,OAAA,aACD,MAAA,SACI,UAAAvB,MACH,OAAAC,KAAyC,CAAA,EAE3D,CAAA;AAAMtE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,YAAAhE,EAAA,EAAA;AAAA,IAAA;AAKe,UAAAuE,OAAAuR,0BAA0BjJ;AAE7BrI,UAAAA,OAAAsR,yBAAyB,MAAMT;AAAgB5Q,QAAAA;AAAA,QAAAzE,EAAAuE,EAAAA,MAAAA,QAAAvE,UAAAwE,MAAA;AAL7DC,aAAC,oBAAA,OAAYyQ,EAAAA,MAAU,aACZtP,IAAAA,oBACG,OAAA,gBACG,UAAArB,MACJ,MAAA,SACC,OAAAC,KACZ,CAAA;AAAAxE,cAAAuE;AAAAvE,cAAAwE;AAAAxE,cAAAyE;AAAAA,IAAAA,OAAA;AAAAA,aAAAzE,EAAA,EAAA;AAAA,IAAA;AAAA0E,QAAAA;AAAAC,QAAAA;AAAA,QAAA3E,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACFwB,aAAC,qBAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBACvC,UAAA;AAAA,QAAA,oBAAA,OAAG,UAEyB,mFAAA,CAAA;AAAA,6BASvB,MAPD,EAAA,UAAA;AAAA,UAAA,oBAAoD,QAAP,UAAE,0CAAA,CAAA;AAAA,UAC/C,oBAAsE,kBAAL,4DAAA,CAAA;AAAA,UACjE,4BAAK,UAA8C,8CAAA,CAAA;AAAA,UACnD,oBAA0C,kBAAL,gCAAA,CAAA;AAAA,UACrC,4BAAK,UAAmC,mCAAA,CAAA;AAAA,UACxC,oBAAA,QAAK,UAA+B,+BAAA,CAAA;AAAA,UACpC,oBAAA,QAAyD,UAAE,sDAAA,CAAA;AAAA,QAAA,GAC/D;AAAA,MACJ,EAAA,CAAA;AAEAC,aAAC,oBAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBAAoB,UAI/D,wGAAA,CAAA;AAAa3E,cAAA0E;AAAA1E,cAAA2E;AAAAA,IAAAA,OAAA;AAAAD,aAAA1E,EAAA,EAAA;AAAA2E,aAAA3E,EAAA,EAAA;AAAA,IAAA;AAAAA,QAAAA,UAAAyE,MAAA;wCA3BD,EAAA,WAAA,eACZA,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,QAeAC;AAAAA,MAKJ,EAAA,CAAA;AAAM3E,cAAAyE;AAAAzE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAEuB,SAAA;AACxB4F,SAAAA;AAAyBqP,SAAAA;AACQ,SAAA;AACc,SAAA;AACf,SAAA;AACNtR,SAAA4R,iBAAY7T,UAAkB6T,iBAAY,OAAYA,aAAYd,SAAc,IAAA;AAAEzU,WAAA6M;AAAA7M,WAAAoV;AAAApV,WAAA0D;AAAA1D,WAAAqV;AAAArV,WAAAS;AAAAT,WAAA4D;AAAA5D,YAAAsV;AAAAtV,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAoE;AAAApE,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAH,SAAA5D,EAAA,CAAA;AAAAsV,SAAAtV,EAAA,EAAA;AAAAgE,UAAAhE,EAAA,EAAA;AAAAiE,UAAAjE,EAAA,EAAA;AAAAkE,UAAAlE,EAAA,EAAA;AAAAmE,UAAAnE,EAAA,EAAA;AAAAoE,UAAApE,EAAA,EAAA;AAAAoC,SAAApC,EAAA,EAAA;AAAAqC,SAAArC,EAAA,EAAA;AAAA0C,SAAA1C,EAAA,EAAA;AAAAgD,SAAAhD,EAAA,EAAA;AAAA2D,SAAA3D,EAAA,EAAA;AAAA8D,SAAA9D,EAAA,EAAA;AAAA+D,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,UAAAU,eAAA;AAC/E2D,UAAAO,CAAA,MAAA;AACNE,YAAAA,QAAcF,EAACC,OAAAC;AAAc,UACzBA,UAAU,IAAE;AAAEpE,sBAAcuU,SAAOvT,MAAW;AAAA,MAAA,OAAC;AAChCuT,sBAAAA,SAASkB,SAASrR,KAAK,CAAC;AAAA,MAAC;AAAA,IAAA;AAC/C9E,YAAAU;AAAAV,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAAtE,MAAAA,EAAA4D,EAAAA,MAAAA,MAAA5D,EAAAqE,EAAAA,MAAAA,OAAArE,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,MAAA1C,EAAA,EAAA,MAAAgD,MAAAhD,EAAA,EAAA,MAAA2D,IAAA;AATrBW,UAAC,oBAAA,IAAA,EAAyB2Q,UACA,MAAA5S,IACC,OAAAK,IACD,MAAAM,IACC,OAAAW,IACG,UAAAU,IAK5B,CAAA;AAAArE,YAAA4D;AAAA5D,YAAAqE;AAAArE,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAA,MAAAvE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAA8D,IAAA;AAXNS,UAYM,oBAAA,OAAA,EAZU,WAAAT,IACZQ,UAWJ,IAAA,CAAA;AAAMtE,YAAAsE;AAAAtE,YAAA8D;AAAA9D,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAA,EAAA,MAAAgE,OAAAhE,EAAAiE,EAAAA,MAAAA,OAAAjE,EAAAuE,EAAAA,MAAAA,OAAAvE,UAAA+D,IAAA;sCAtDM,EAAA,WAAAA,IAGZC,UAAAA;AAAAA,MAAAA;AAAAA,MASAC;AAAAA,MA8BAM;AAAAA,IAcJ,EAAA,CAAA;AAAMvE,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAuE;AAAAvE,YAAA+D;AAAA/D,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAAzE,MAAAA,EAAAsV,EAAAA,MAAAA,MAAAtV,UAAAkE,OAAAlE,EAAA,EAAA,MAAAwE,KAAA;AAnEVC,UAAC,oBAAA,IAAA,EAEO,OAAAP,KASJM,UAyDJ,IAAA,CAAA;AAAkBxE,YAAAsV;AAAAtV,YAAAkE;AAAAlE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAyE,KAAA;AArEtBC,UAsEM,oBAAA,OAAA,EAtEU,WAAAP,KACZM,UAqEJ,IAAA,CAAA;AAAMzE,YAAAmE;AAAAnE,YAAAyE;AAAAzE,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA3E,MAAAA,UAAAU,eAAA;AAMmBiE,UAAAuC,CAAA,QAAA;AACQ,oBAAA,gBAAgBtC,IAACC,OAAAC,UAAkB,KAAEpD,SAAekD,IAACC,OAAAC,KAAa;AAAA,IAAA;AACnF9E,YAAAU;AAAAV,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AAAA+E,MAAAA;AAAA/E,MAAAA,UAAAS,QAAA;AAEMqB,UAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,YAAAS;AAAAT,YAAA+E;AAAAA,EAAAA,OAAA;AAAAA,UAAA/E,EAAA,EAAA;AAAA,EAAA;AAAAiF,MAAAA;AAAAjF,MAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA2E,OAAA3E,EAAA,EAAA,MAAA+E,KAAA;AARzDE,UAUM,oBAAA,OAAA,EAVU,WAAA,eAEZ,8BAAC,WAAgB,EAAA,MAAA,gBACI4H,UACA,UAAAlI,KAGH,OAAA,iBACA,OAAAI,KAAmC,EAEzD,CAAA;AAAM/E,YAAA6M;AAAA7M,YAAA2E;AAAA3E,YAAA+E;AAAA/E,YAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,EAAA;AAAA,EAAA;AAAAkF,MAAAA;AAAAlF,MAAAA,EAAAoE,EAAAA,MAAAA,OAAApE,UAAA0E,OAAA1E,EAAA,EAAA,MAAAiF,KAAA;AApGVC,UACId,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAiBAM;AAAAA,MAwEAO;AAAAA,IAUM,EAAA,CAAA;AACPjF,YAAAoE;AAAApE,YAAA0E;AAAA1E,YAAAiF;AAAAjF,YAAAkF;AAAAA,EAAAA,OAAA;AAAAA,UAAAlF,EAAA,EAAA;AAAA,EAAA;AArGHkF,SAAAA;AAqGG;AC/CJ,MAAMic,eAAe5gB,eAAM4P,KAC9B,SAAAgR,cAAAzC,OAAA;AAAA1e,QAAAA,IAAAC,EAAA,EAAA;AAEI,QAAA;AAAA,IAAAmhB,kBAAArhB;AAAAA,IAAAshB;AAAAA,IAAAC;AAAAA,IAAA1E;AAAAA,IAAA2E;AAAAA,IAAAnV;AAAAA,IAAAoV;AAAAA,IAAAnV;AAAAA,IAAAkK;AAAAA,IAAAgG;AAAAA,IAAAkF,4BAAAjgB;AAAAA,IAAAkgB;AAAAA,IAAAC;AAAAA,IAAAhV;AAAAA,IAAAiV;AAAAA,IAAAC;AAAAA,IAAA/U;AAAAA,IAAAgV;AAAAA,IAAA/U;AAAAA,IAAA0K;AAAAA,IAAAmB;AAAAA,EAsBI8F,IAAAA;AArBA0C,QAAAA,mBAAArhB,OAAuB2B,gBAAvB3B;AAUA0hB,QAAAA,6BAAAjgB,OAAiCE,gBAAjCF;AAAiCI,MAAAA;AAAA,MAAA5B,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAaA,SAAA;AAAA,MAAA5D,IAC7B;AAAA,MAAEG,MACA;AAAA,IAAA;AACTO,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAHD,QAAA+hB,eAAqCngB;AAGjBQ,MAAAA;AAAA,MAAApC,EAAA4Y,CAAAA,MAAAA,sBAAA5Y,SAAAuW,UAAA;AAEFnU,SAAA4C,QAAQuR,YAAQ,CAAKD,iBAAiBC,QAAQ,CAAC,KAAC,CAAKqC;AAAkB5Y,WAAA4Y;AAAA5Y,WAAAuW;AAAAvW,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAzF,QAAA6M,WAAkBzK;AAAyEC,MAAAA;AAAA,MAAArC,EAAAuW,CAAAA,MAAAA,YAAAvW,SAAAoM,aAAA;AAEjB/J,SAAAkU,WAAQ;AAAA,MAAAjX,IAC1E8M;AAAAA,MAAW4V,YACH5V;AAAAA,MAAWmK;AAAAA,IAAA7U,IAAAA;AAEd1B,WAAAuW;AAAAvW,WAAAoM;AAAApM,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAJbiiB,QAAAA,wBAA8BzhB,OAA4C6B,EAI7D;AAAEK,MAAAA;AAAA,MAAA1C,EAAAuc,CAAAA,MAAAA,qBAAAvc,SAAAqM,mBAAA;AAEa3J,SAAAM,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA1D;AAAAA,QAAAiX,UAAA2L;AAAAA,MAAAlf,IAAAA;AAIzB,YAAAmf,SAAA;AAAA,QAAA7iB;AAAAA,QAAA0iB,YAEgBC,sBAAqBxT,SAAAnP;AAAAA,QAAAiX,UACjCA;AAAAA,QAAQtK,WACGI;AAAAA,MAAAA;AAEf4V,4BAAqBxT,UAAW0T;AAChC5F,0BAAoB4F,MAAM;AAAA,IAAA;AAC7BniB,WAAAuc;AAAAvc,WAAAqM;AAAArM,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAZD,QAAAoiB,sBAA4B1f;AAY1BM,MAAAA;AAAA,MAAAhD,EAAAuW,EAAAA,MAAAA,YAAAvW,UAAAoM,aAAA;AAIiBpJ,SAAAuT,WAAQ;AAAA,MAAAjX,IACX8M;AAAAA,MAAW,GAAKmK;AAAAA,IACtBwL,IAAAA;AAAY/hB,YAAAuW;AAAAvW,YAAAoM;AAAApM,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAAoiB,EAAAA,MAAAA,uBAAApiB,UAAAshB,kBAAA;AAIR3d,SAAAA,CAAA0e,mBAAAC,eAAA;AACNC,cAAAA,MAAc,YAAYF,iBAAiB;AAC3C,YAAA;AAAA,QAAA/iB,IAAAkjB;AAAAA,QAAA,GAAAC;AAAAA,MAGIJ,IAAAA;AACe,0BAAA;AAAA,QAAA/iB,IACfA;AAAAA,QAAEiX,UAAA;AAAA,UAAA,GAEKA;AAAAA,UAAQK,UACDL,WAAQK,YAAA;AAAA,QAAiB;AAAA,MAAA,CAE1C;AAAC,UAAA,CACG0K,kBAAgB;AACjBgB,mBAAUI,UAAA;AAAA,UAAAjiB,QAAqBshB;AAAAA,QAAAA,CAAc;AAAA,MAAC;AAAA,IAAA;AACrD/hB,YAAAoiB;AAAApiB,YAAAshB;AAAAthB,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAwhB,EAAAA,MAAAA,wBAAAxhB,UAAAohB,kBAAA;AACWtd,SAAArD,CAAA,WAAA;AACR,YAAAI,SAAA,CAAA;AAAuC,UACnCugB,kBAAgB;AACX3gB,YAAAA,CAAAA,OAAMhB,MAAA;AACPoB,iBAAMpB,OAAQ;AAAA,QAAA,OAAU;AAExBod,gBAAAA,YAAkB8F,aAAaliB,OAAMhB,IAAK;AAAE,cACxCod,WAAS;AACThc,mBAAMpB,OAAQod;AAAAA,UAAS;AAAA,QAAA;AAE1Bpc,YAAAA,CAAAA,OAAMnB,IAAA;AACPuB,iBAAMvB,KAAM;AAAA,QAAA,OAAU;AAEtB,gBAAA8R,UAAgBwR,aAAWniB,OAAMnB,IAAKkiB,oBAAoB;AAAE,cACxDpQ,SAAO;AACPvQ,mBAAMvB,KAAM8R;AAAAA,UAAO;AAAA,QAAA;AAAA,MAAA;AAI3B3Q,UAAAA,OAAMiW,aAAc,UAAQ;AACxBjW,YAAAA,OAAM+M,YAAA8E,YAAyBuQ,cAAcpiB,OAAM+M,YAAA8E,QAAAmC,UAA+B,GAAC;AACnF5T,iBAAM2M,aAAA;AAAA,YAAA8E,SACO;AAAA,UAAA;AAAA,QAA4B;AAAA,MAAA;AAAA,UAI7C7R,OAAMiW,aAAc,eAAgBjW,CAAAA,OAAMf,MAAK;AAC/CmB,eAAMnB,OAAQ;AAAA,MAAoD;AAElEe,UAAAA,OAAMmX,mBAAoB,UAAQ;AAAA,YAAA,CAC5BnX,OAAakW,IAAA;AACf9V,iBAAM8V,KAAM;AAAA,QAAoC;AAAA,MAAA;AAGpDlW,UAAAA,OAAMmX,mBAAoB,SAAO;AAAA,YAAA,CAC3BnX,OAAa+c,OAAA;AACf3c,iBAAM2c,QAAS;AAAA,QAAkD;AAAA,MAAA;AAGlE3c,aAAAA;AAAAA,IAAAA;AACVb,YAAAwhB;AAAAxhB,YAAAohB;AAAAphB,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAA4hB,iBAAA5hB,EAAAgD,EAAAA,MAAAA,MAAAhD,EAAA2D,EAAAA,MAAAA,MAAA3D,UAAA8D,IAAA;AAhEoD,SAAA;AAAA,MAAAgf,SAC5C;AAAA,MAAexV,eACTtK;AAAAA,MAEG4e;AAAAA,MAAArU,kBAAA;AAAA,MAAAwV,yBAAA;AAAA,MAAAC,UAIRrf;AAAAA,MAeT6J,YACW1J;AAAAA,IAAAA;AAyCf9D,YAAA4hB;AAAA5hB,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAjEDijB,QAAAA,mBAAyBvV,gBAAgC3J,EAiExD;AAAEC,MAAAA;AAAAC,MAAAA;AAAA,MAAAjE,EAAAijB,EAAAA,MAAAA,oBAAAjjB,UAAA8hB,eAAA;AAEO9d,UAAAA,MAAA;AACN8d,sBAAgBmB,gBAAgB;AAAA,IAAA;AACjC,UAAA,CAACA,kBAAkBnB,aAAa;AAAC9hB,YAAAijB;AAAAjjB,YAAA8hB;AAAA9hB,YAAAgE;AAAAhE,YAAAiE;AAAAA,EAAAA,OAAA;AAAAD,UAAAhE,EAAA,EAAA;AAAAiE,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAFpCsC,YAAU0B,KAEPC,GAAiC;AAITC,QAAAA,MAAAud,6BACbW,sBAAmB1gB;AAObyC,QAAAA,MAAA0d,mBAAmBoB,iBAAgBjiB,cAAgB;AAAAoD,MAAAA;AAAA,MAAApE,EAAA,EAAA,MAAA8M,sBAAA9M,EAAA,EAAA,MAAAqhB,sBAAArhB,EAAA,EAAA,MAAA4c,gBAAA5c,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAshB,oBAAAthB,EAAA,EAAA,MAAAijB,oBAAAjjB,EAAA,EAAA,MAAA+M,WAAA/M,EAAAuhB,EAAAA,MAAAA,WAAAvhB,EAAAohB,EAAAA,MAAAA,oBAAAphB,EAAA2hB,EAAAA,MAAAA,YAAA3hB,EAAA0hB,EAAAA,MAAAA,aAAA1hB,EAAA,EAAA,MAAA2M,WAAA3M,EAAA,EAAA,MAAAyX,mBAAAzX,EAAAqM,EAAAA,MAAAA,qBAAArM,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAmE,KAAA;8BATlE,0BACsB,mBAAAD,KAGTyd,UACSP,mBAAAA,kBACA/U,mBACVM,SACE+U,WACC,YAAAvd,KACFmd,UAAAA,kBACI1E,cACL2E,SACWF,oBACVxU,UACDE,SACWD,oBACH2K,iBACGmB,oBAAkB,GAClCqK,iBAAmB,CAAA;AAAAjjB,YAAA8M;AAAA9M,YAAAqhB;AAAArhB,YAAA4c;AAAA5c,YAAA4Y;AAAA5Y,YAAA6M;AAAA7M,YAAAshB;AAAAthB,YAAAijB;AAAAjjB,YAAA+M;AAAA/M,YAAAuhB;AAAAvhB,YAAAohB;AAAAphB,YAAA2hB;AAAA3hB,YAAA0hB;AAAA1hB,YAAA2M;AAAA3M,YAAAyX;AAAAzX,YAAAqM;AAAArM,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAA,MAAArE,EAAAijB,EAAAA,MAAAA,oBAAAjjB,UAAAoE,KAAA;AApBxBC,UAAC,oBAAA,QAAA,EAAc4e,OAAAA,kBAClB7e,UAoBJ,IAAA,CAAA;AAASpE,YAAAijB;AAAAjjB,YAAAoE;AAAApE,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AArBFqE,SAAAA;AAqBE,GACV,CAAC8S,GAAGC,MACHD,EAAEpK,YAAYqK,EAAErK,WAChBoK,EAAE/K,gBAAgBgL,EAAEhL,eACpB+K,EAAE9K,sBAAsB+K,EAAE/K,qBAC1B8K,EAAEiK,qBAAqBhK,EAAEgK,oBACzBjK,EAAEkK,uBAAuBjK,EAAEiK,sBAC3BlK,EAAEyF,iBAAiBxF,EAAEwF,gBACrBzF,EAAEqK,yBAAyBpK,EAAEoK,wBAC7BrK,EAAEmK,qBAAqBlK,EAAEkK,gBACjC;AAEO,SAAA4B,mBAAAnjB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAA2Y,MAAAA;AAAAuK,MAAAA;AAAApW,MAAAA;AAAAqW,MAAAA;AAAAC,MAAAA;AAAA9G,MAAAA;AAAArL,MAAAA;AAAAlR,MAAAA,SAAAD,IAAA;AAA4B,KAAA;AAAA,MAAAmR;AAAAA,MAAAkS;AAAAA,MAAAC;AAAAA,MAAA9G;AAAAA,MAAAxP;AAAAA,MAAA6L;AAAAA,MAAA,GAAAuK;AAAAA,IAAApjB,IAAAA;AAYlCC,WAAAD;AAAAC,WAAA4Y;AAAA5Y,WAAAmjB;AAAAnjB,WAAA+M;AAAA/M,WAAAojB;AAAApjB,WAAAqjB;AAAArjB,WAAAuc;AAAAvc,WAAAkR;AAAAA,EAAAA,OAAA;AAAA0H,yBAAA5Y,EAAA,CAAA;AAAAmjB,gBAAAnjB,EAAA,CAAA;AAAA+M,cAAA/M,EAAA,CAAA;AAAAojB,eAAApjB,EAAA,CAAA;AAAAqjB,kBAAArjB,EAAA,CAAA;AAAAuc,wBAAAvc,EAAA,CAAA;AAAAkR,WAAAlR,EAAA,CAAA;AAAA,EAAA;AACG,QAAAsjB,YAAkB9iB;AAA2CgB,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACvC1B,SAAA+hB,CAAA,YAAA;AAClBD,gBAAS7U,UAAW8U;AAAAA,IAAAA;AACvBvjB,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAFD,QAAA8hB,gBAAsBtgB;AAKZ,QAAAI,KAAAsP,QAAa;AAAA9O,MAAAA;AAAAC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMHd,SAAAwC,CAAA,MAAA;AACNA,QAACqR,eAAgB;AACjBrR,QAACsR,gBAAiB;AACTzH,gBAAAA,SAAA+U,aAAuB5e,CAAC;AAAA,IAAA;AAEvCvC,SAAC,oBAAA,aAAA,EAAY,QAAK,MAAE,UAAkB,qBAAA,CAAA;AAAcrC,WAAAoC;AAAApC,YAAAqC;AAAAA,EAAAA,OAAA;AAAAD,SAAApC,EAAA,CAAA;AAAAqC,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAAqjB,EAAAA,MAAAA,eAAArjB,UAAAuc,mBAAA;AAKf7Z,SAAAyf,CAAA,WAAA;AACf5F,0BAAoB4F,MAAM;AACf;IAAA;AACdniB,YAAAqjB;AAAArjB,YAAAuc;AAAAvc,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,EAAA,EAAA,MAAAmjB,aAAAnjB,EAAA+M,EAAAA,MAAAA,WAAA/M,EAAA,EAAA,MAAAojB,YAAApjB,UAAA0C,IAAA;AAPnBM,SAAC,oBAAA,eAAA,EAEG,UAAC,oBAAA,cAAA,EAAY,GAAKmgB,WACOC,WAAAA,UACQ,mBAAA1gB,IAICkW,oBACQ,4BAAI,OACjBkJ,eACN/U,SAE3B,EAAA,CAAA;AAAgB/M,YAAA4Y;AAAA5Y,YAAAmjB;AAAAnjB,YAAA+M;AAAA/M,YAAAojB;AAAApjB,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,UAAAojB,UAAA;AAIXzf,SAAAyf,YAAa,oBAAA,QAAA,EACD,SAAA,QACA,SAAA,MAAA;AACI;AACTE,gBAAS7U,SAAAiU;IAAA,GACV,UAEP,SAAA,CAAA;AAAS1iB,YAAAojB;AAAApjB,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BAER,UAAe,SAAA,YACF,MAAA,UACA,OAAA,WAAU,UAExB,KAAA,CAAA;AAASlD,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA/D,MAAAA,UAAA2D,IAAA;AAfbI,8BAAC,eAEIJ,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MASDG;AAAAA,IAKJ,EAAA,CAAA;AAAgB9D,YAAA2D;AAAA3D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA+D,IAAA;AAvCpBC,+BAAA,QAAkB,EAAA,YAAA,MACE,cAAA,OACJ,UAAA5B,IAKZC,UAAAA;AAAAA,MAAAA;AAAAA,MACAW;AAAAA,MAeAe;AAAAA,IAiBJ,EAAA,CAAA;AAAO/D,YAAAgD;AAAAhD,YAAA+D;AAAA/D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAA4B,IAAA;AA7CJ,UAAA,oBAAC,UACE,MAAAA,IACI,UAAA,MACC,WAAA,MAEXoC,UAyCJ,IAAA,CAAA;AAAShE,YAAAgE;AAAAhE,YAAA4B;AAAA5B,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AA9CFiE,SAAAA;AA8CE;AAIb,SAAAwf,uBAAA1jB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,GAAA;AAAgC,QAAA;AAAA,IAAAQ;AAAAA,IAAAI;AAAAA,IAAA6iB;AAAAA,IAAA7O;AAAAA,IAAA+H,cAAApb;AAAAA,IAAA6f;AAAAA,IAAAsC;AAAAA,IAAApH;AAAAA,IAAAoF;AAAAA,IAAAtV;AAAAA,IAAAqV;AAAAA,IAAA/U;AAAAA,IAAAjJ;AAAAA,IAAAmJ;AAAAA,IAAA0U;AAAAA,IAAAxU;AAAAA,IAAAD;AAAAA,IAAA2K;AAAAA,IAAAmB;AAAAA,EAAA7Y,IAAAA;AAKI6c,QAAAA,eAAApb,OAAoBE,iBAApBF;AAkChC,QAAA,CAAAoiB,YAAAC,aAAA,IAAoCxiB,SAASggB,kBAAkB;AAC/D,QAAA,CAAAyC,kBAAAC,mBAAA,IAAgD1iB,cAAc;AAAEO,MAAAA;AAAA5B,MAAAA,SAAAS,QAAA;AACuBmB,SAAAnB,QAAMiW,WAAasN,WAAWvjB,MAAM,IAACiB;AAAY1B,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAxI,QAAA,CAAAikB,uBAAAC,wBAAA,IAA0D7iB,SAA6BO,EAAiD;AAExIuiB,QAAAA,iBAAuBC,iBAAiB3jB,MAAM;AAC9C4jB,QAAAA,eAAqB7jB,OAAA,IAA6B;AAElDyhB,QAAAA,wBAA8BzhB,OAAeC,MAAM;AAAE2B,MAAAA;AAAA,MAAApC,EAAAa,CAAAA,MAAAA,UAAAb,SAAA0D,YAAA;AAEzBA,SAAAA,cAAc5B,MAAMjB,QAAQ,gBAAgB;AAACb,WAAAa;AAAAb,WAAA0D;AAAA1D,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAzE,QAAAskB,sBAA4BliB;AAA8CC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAmkB,kBAAAnkB,EAAA2jB,CAAAA,MAAAA,qBAAA3jB,EAAAuc,CAAAA,MAAAA,qBAAAvc,SAAAqM,mBAAA;AAEhEhK,SAAAA,MAAA;AAAA,UACFka,mBAAiB;AACZ,YAAA,CAACoH,qBAAqBQ,eAAc7kB,IAAG;AACxC,gBAAA;AAAA,YAAAA;AAAAA,YAAA,GAAAiX;AAAAA,UAGI4N,IAAAA;AAAe,cAAA,CACdnT,MAAMmT,gBAAgBlC,sBAAqBxT,OAAQ,GAAC;AACpC,8BAAA;AAAA,cAAAnP;AAAAA,cAAAiX;AAAAA,cAAAtK,WAGFI;AAAAA,YAAAA,CACd;AACD4V,kCAAqBxT,UAAW0V;AAAAA,UAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAI7DnkB,WAAAmkB;AAAAnkB,WAAA2jB;AAAA3jB,WAAAuc;AAAAvc,WAAAqM;AAAArM,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,EAAAmkB,EAAAA,MAAAA,kBAAAnkB,UAAA2jB,qBAAA3jB,EAAA,EAAA,MAAAqM,mBAAA;AAAG8X,SAAAA,CAAAA,gBAAgBR,mBAAmBtX,iBAAiB;AAACrM,YAAAmkB;AAAAnkB,YAAA2jB;AAAA3jB,YAAAqM;AAAArM,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAjBzDsC,YAAUD,IAiBPK,EAAsD;AAACM,MAAAA;AAAA,MAAAhD,EAAAa,EAAAA,MAAAA,UAAAb,UAAA2M,WAAA3M,EAAA,EAAA,MAAAqM,qBAAArM,EAAAS,EAAAA,MAAAA,QAAAnB,IAAA;AAEhD0D,SAAAA,MAAA;AAAA,UACFvC,QAAMnB,MAAQqN,WAAY4X,CAAAA,cAAc1jB,MAAM,GAAC;AACvCJ,gBAAAA,QAAMnB,IAAM+M,mBAAmBxL,MAAM;AAAA,MAAC;AAAA,IAAA;AAErDb,YAAAa;AAAAb,YAAA2M;AAAA3M,YAAAqM;AAAA,MAAA,EAAA,IAAA5L,QAAAnB;AAAAU,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAA8B,QAAA2D,KAAAlD,QAAMnB;AAAIwE,MAAAA;AAAA9D,MAAAA,EAAAa,EAAAA,MAAAA,UAAAb,UAAAqM,qBAAArM,EAAA,EAAA,MAAA2D,IAAA;AAArC9C,SAAAA,CAAAA,QAAQwL,mBAAmB1I,EAAU;AAAC3D,YAAAa;AAAAb,YAAAqM;AAAArM,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAJ1CsC,YAAUU,IAIPc,EAAuC;AAACC,MAAAA;AAAA/D,MAAAA,EAAAyX,EAAAA,MAAAA,mBAAAzX,UAAA0jB,aAAA1jB,EAAA,EAAA,MAAAS,QAAA;AAEbsD,SAAAygB,CAAA,wBAAA;AAC1BN,+BAAyBM,mBAAmB;AAC5Cd,gBAAU1D,yBAAyBvf,QAAQ+jB,qBAAqB/M,eAAe,CAAC;AAEhFgN,iBAAA,MAAA;AACIJ,qBAAY5V,SAAAiW;SAAA,CACZ;AAAA,IAAA;AACP1kB,YAAAyX;AAAAzX,YAAA0jB;AAAA1jB,YAAAS;AAAAT,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAPD,QAAA2kB,wBAA8B5gB;AAS1B6gB,MAAAA;AAAc,MACdX,0BAA0B,gBAC1BA,0BAA0B,eAC1BA,0BAA0B,SAAO;AAAAjgB,QAAAA;AAAAhE,QAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAAikB,yBAAAjkB,EAAA,EAAA,MAAA0D,YAAA;AAE7BM,aAAC,oBAAA,qBAAA,EAA8BigB,iCACApX,UACEnJ,WAAa,CAAA;AAAA1D,cAAA6M;AAAA7M,cAAAikB;AAAAjkB,cAAA0D;AAAA1D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,aAAAhE,EAAA,EAAA;AAAA,IAAA;AAF9C4kB,qBAAAA;AAAAA,EAAAA,OADU;AAAA,QAIPX,0BAA0B,OAAK;AAAAjgB,UAAAA;AAAA,UAAAhE,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA0D,YAAA;AAElCM,eAAC,oBAAA,kBAA2B6I,EAAAA,UACEnJ,WAAa,CAAA;AAAA1D,gBAAA6M;AAAA7M,gBAAA0D;AAAA1D,gBAAAgE;AAAAA,MAAAA,OAAA;AAAAA,eAAAhE,EAAA,EAAA;AAAA,MAAA;AAD3C4kB,uBAAAA;AAAAA,IAAAA,OADU;AAAA,UAGPX,0BAA0B,YAAU;AAAAjgB,YAAAA;AAAA,YAAAhE,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA0D,YAAA;AAEvCM,iBAAC,oBAAA,uBAAgC6I,EAAAA,UACEnJ,WAAa,CAAA;AAAA1D,kBAAA6M;AAAA7M,kBAAA0D;AAAA1D,kBAAAgE;AAAAA,QAAAA,OAAA;AAAAA,iBAAAhE,EAAA,EAAA;AAAA,QAAA;AADhD4kB,yBAAAA;AAAAA,MAAAA,OADU;AAGPX,YAAAA,0BAA0B,YACjCA,0BAA0B,iBAAe;AAI1B,gBAAAjgB,QAAC6Q;AAAQ5Q,cAAAA;AAAA,cAAAjE,EAAA8M,EAAAA,MAAAA,sBAAA9M,EAAA,EAAA,MAAA6M,YAAA7M,EAAA+M,EAAAA,MAAAA,WAAA/M,EAAA,EAAA,MAAA0D,cAAA1D,UAAAgE,MAAA;AAHPC,mBAAC,oBAAA,mBAAA,EACD,aAAI,OACG6I,oBACT,WAAA9I,MACD6I,UACDE,SACGrJ,WAAa,CAAA;AAAA1D,oBAAA8M;AAAA9M,oBAAA6M;AAAA7M,oBAAA+M;AAAA/M,oBAAA0D;AAAA1D,oBAAAgE;AAAAhE,oBAAAiE;AAAAA,UAAAA,OAAA;AAAAA,mBAAAjE,EAAA,EAAA;AAAA,UAAA;AANZ4kB,2BAAAA;AAAAA,QAAAA,OAAH;AAOPX,cAAAA,0BAA0B,kBACjCA,0BAA0B,uBAAqB;AAGhC,kBAAAjgB,QAAC6Q;AAAQ5Q,gBAAAA;AAAA,gBAAAjE,EAAA8M,EAAAA,MAAAA,sBAAA9M,EAAA,EAAA,MAAA6M,YAAA7M,EAAA+M,EAAAA,MAAAA,WAAA/M,EAAA,EAAA,MAAA0D,cAAA1D,UAAAgE,MAAA;AAFPC,qBAAC,oBAAA,mBAAA,EACD,aAAG,MACL,WAAAD,MACD6I,UACUC,oBACXC,SACGrJ,WAAa,CAAA;AAAA1D,sBAAA8M;AAAA9M,sBAAA6M;AAAA7M,sBAAA+M;AAAA/M,sBAAA0D;AAAA1D,sBAAAgE;AAAAhE,sBAAAiE;AAAAA,YAAAA,OAAA;AAAAA,qBAAAjE,EAAA,EAAA;AAAA,YAAA;AANZ4kB,6BAAAA;AAAAA,UAAAA,OAAH;AAAA,gBAOPX,0BAA0B,eAAa;AAAAjgB,kBAAAA;AAAA,kBAAAhE,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,UAAA;AAE1C7Q,uBAAC,oBAAA,sBAAA,EAA+B6Q,UACA,iBACAhI,SAAW,CAAA;AAAA7M,wBAAA6M;AAAA7M,wBAAA6U;AAAA7U,wBAAAgE;AAAAA,cAAAA,OAAA;AAAAA,uBAAAhE,EAAA,EAAA;AAAA,cAAA;AAF3C4kB,+BAAAA;AAAAA,YAAAA,OADU;AAAA,kBAIPX,0BAA0B,qBAAmB;AAAAjgB,oBAAAA;AAAA,oBAAAhE,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,UAAA;AAEhD7Q,yBAAC,oBAAA,sBAAA,EAA+B6Q,UACA,gBACAhI,SAAW,CAAA;AAAA7M,0BAAA6M;AAAA7M,0BAAA6U;AAAA7U,0BAAAgE;AAAAA,gBAAAA,OAAA;AAAAA,yBAAAhE,EAAA,EAAA;AAAA,gBAAA;AAF3C4kB,iCAAAA;AAAAA,cAAAA,OADU;AAAA,oBAIPX,0BAA0B,UAAQ;AAAAjgB,sBAAAA;AAAAhE,sBAAAA,UAAA6M,UAAA;AACxB7I,2BAAC,oBAAA,sBAAA,EAA+B6I,SAAW,CAAA;AAAA7M,4BAAA6M;AAAA7M,4BAAAgE;AAAAA,kBAAAA,OAAA;AAAAA,2BAAAhE,EAAA,EAAA;AAAA,kBAAA;AAA3C4kB,mCAAAA;AAAAA,gBAAAA,OAAH;AAAA,sBACPX,0BAA0B,gBAAc;AAAAjgB,wBAAAA;AAAAhE,wBAAAA,UAAA6M,UAAA;AAC9B7I,6BAAC,oBAAA,qBAAA,EAA8B6I,SAAW,CAAA;AAAA7M,8BAAA6M;AAAA7M,8BAAAgE;AAAAA,oBAAAA,OAAA;AAAAA,6BAAAhE,EAAA,EAAA;AAAA,oBAAA;AAA1C4kB,qCAAAA;AAAAA,kBAAAA,OAAH;AAAA,wBACPX,0BAA0B,SAAO;AAAAjgB,0BAAAA;AAAA,0BAAAhE,EAAA8M,EAAAA,MAAAA,sBAAA9M,EAAA,EAAA,MAAA4Y,sBAAA5Y,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAA,EAAA,MAAA+M,WAAA/M,UAAAyX,iBAAA;AAEpCzT,+BAAC,oBAAA,kBAAA,EAA2B6I,UAAmBE,SAA6BD,oBACtC8L,oBACHnB,gBAAkB,CAAA;AAAAzX,gCAAA8M;AAAA9M,gCAAA4Y;AAAA5Y,gCAAA6M;AAAA7M,gCAAA+M;AAAA/M,gCAAAyX;AAAAzX,gCAAAgE;AAAAA,sBAAAA,OAAA;AAAAA,+BAAAhE,EAAA,EAAA;AAAA,sBAAA;AAFrD4kB,uCAAAA;AAAAA,oBAAAA,OADU;AAAA,0BAIPX,0BAA0B,SAAO;AAAAjgB,4BAAAA;AAAA,4BAAAhE,EAAA8M,EAAAA,MAAAA,sBAAA9M,EAAA,EAAA,MAAA4Y,sBAAA5Y,EAAA6M,EAAAA,MAAAA,YAAA7M,EAAA,EAAA,MAAA+M,WAAA/M,UAAAyX,iBAAA;AAEpCzT,iCAAC,oBAAA,oBAAA,EAA6B6I,UAAmBE,SAA6BD,oBACtC8L,oBACHnB,gBAAkB,CAAA;AAAAzX,kCAAA8M;AAAA9M,kCAAA4Y;AAAA5Y,kCAAA6M;AAAA7M,kCAAA+M;AAAA/M,kCAAAyX;AAAAzX,kCAAAgE;AAAAA,wBAAAA,OAAA;AAAAA,iCAAAhE,EAAA,EAAA;AAAA,wBAAA;AAFvD4kB,yCAAAA;AAAAA,sBAAAA,OADU;AAAA,4BAIPX,0BAA0B,aAAW;AAAAjgB,8BAAAA;AAAAhE,8BAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,YAAA7U,EAAA,EAAA,MAAA0D,YAAA;AAExCM,mCAAC,oBAAA,wBAAA,EAAmCN,YACFmR,UACA,UAAI,OACJhI,SAAW,CAAA;AAAA7M,oCAAA6M;AAAA7M,oCAAA6U;AAAA7U,oCAAA0D;AAAA1D,oCAAAgE;AAAAA,0BAAAA,OAAA;AAAAA,mCAAAhE,EAAA,EAAA;AAAA,0BAAA;AAH7C4kB,2CAAAA;AAAAA,wBAAAA,OADU;AAAA,8BAKPX,0BAA0B,aAAW;AAAAjgB,gCAAAA;AAAAhE,gCAAAA,UAAA6M,UAAA;AAC3B7I,qCAAC,oBAAA,uBAAA,EAAgC6I,SAAW,CAAA;AAAA7M,sCAAA6M;AAAA7M,sCAAAgE;AAAAA,4BAAAA,OAAA;AAAAA,qCAAAhE,EAAA,EAAA;AAAA,4BAAA;AAA5C4kB,6CAAAA;AAAAA,0BAAAA,OAAH;AAAA,gCACPX,0BAA0B,oBAAkB;AAAAjgB,kCAAAA;AAAAhE,kCAAAA,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,YAAA7U,EAAA,EAAA,MAAA0D,YAAA;AAE/CM,uCAAC,oBAAA,wBAAA,EAAmCN,YACFmR,UACA,UAAG,MACHhI,SAAW,CAAA;AAAA7M,wCAAA6M;AAAA7M,wCAAA6U;AAAA7U,wCAAA0D;AAAA1D,wCAAAgE;AAAAA,8BAAAA,OAAA;AAAAA,uCAAAhE,EAAA,EAAA;AAAA,8BAAA;AAH7C4kB,+CAAAA;AAAAA,4BAAAA,OADU;AAAA,kCAKPX,0BAA0B,UAAQ;AAAAjgB,oCAAAA;AAAAhE,oCAAAA,EAAA8M,EAAAA,MAAAA,sBAAA9M,EAAA4Y,EAAAA,MAAAA,sBAAA5Y,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,YAAA7U,EAAA,EAAA,MAAA+M,WAAA/M,EAAA,EAAA,MAAAyX,mBAAAzX,EAAA,EAAA,MAAA0D,YAAA;AAErCM,6DAAC,qBAAgCN,EAAAA,YACFmR,UACD9H,SACWD,oBACVD,UACU+L,oBACHnB,gBAAkB,CAAA;AAAAzX,0CAAA8M;AAAA9M,0CAAA4Y;AAAA5Y,0CAAA6M;AAAA7M,0CAAA6U;AAAA7U,0CAAA+M;AAAA/M,0CAAAyX;AAAAzX,0CAAA0D;AAAA1D,0CAAAgE;AAAAA,gCAAAA,OAAA;AAAAA,yCAAAhE,EAAA,EAAA;AAAA,gCAAA;AANxD4kB,iDAAAA;AAAAA,8BAAAA,OADU;AAAA,oCAQPX,0BAA0B,aAAW;AAAAjgB,sCAAAA;AAAAhE,sCAAAA,UAAA6M,UAAA;AAExC7I,2CAAC,oBAAA,uBAAA,EAAgC6I,SAAW,CAAA;AAAA7M,4CAAA6M;AAAA7M,4CAAAgE;AAAAA,kCAAAA,OAAA;AAAAA,2CAAAhE,EAAA,EAAA;AAAA,kCAAA;AAA5C4kB,mDAAAA;AAAAA,gCAAAA,OADU;AAGdA,mDAAAA;AAAAA,gCAAc;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,EAAA;AAAA5gB,MAAAA;AAAAhE,MAAAA,UAAA6M,UAAA;AAKT7I,UAAA6I,YAAY,qBAAC,WAAgB,EAAA,MAAA,QAC1B,UAAA;AAAA,MAAA,oBAAC,cAAW,UAAkC,gCAAA,CAAA;AAAA,MAC9C,qBAAC,YAAoB,EAAA,SAAA,WAAW,UAAA;AAAA,QAAA;AAAA,QAEa,8BAAM,UAAQ,WAAA,CAAA;AAAA;SAC3D;AAAA,IACJ,EAAA,CAAA;AAAY7M,YAAA6M;AAAA7M,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAMO,QAAAiE,MAAAggB;AAAyC/f,MAAAA;AAAAlE,MAAAA,UAAA2kB,uBAAA;AACjC7f,UAAAA,CAAAA,UAAW6f,sBAAsB7f,KAAyB;AAAC9E,YAAA2kB;AAAA3kB,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAAnE,MAAAA,UAAA0hB,WAAA;AAE5Dvd,UAAAA,CAAA+M,MAAA2T,aAAA;AAAA,UAAA,CACLA,UAAQ;AACA;MAAA;AAEbhB,oBAAc3S,IAAI;AAAA,IAAA;AACrBlR,YAAA0hB;AAAA1hB,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAEUoE,QAAAA,MAAAY,QAAQsf,mBAAmB;AAACjgB,MAAAA;AAAA,MAAArE,EAAA6M,EAAAA,MAAAA,YAAA7M,UAAA6U,YAAA7U,EAAA,EAAA,MAAAuhB,WAAAvhB,WAAAyX,mBAAAzX,EAAA4jB,GAAAA,MAAAA,cAAA5jB,WAAAiE,OAAAjE,EAAA,GAAA,MAAAkE,OAAAlE,EAAAmE,GAAAA,MAAAA,OAAAnE,EAAA,GAAA,MAAAoE,OAAApE,WAAAS,QAAA;AAZ3C4D,8BAAC,kBACoB5D,EAAAA,iBAAK,QACf,OAAAwD,KACQ,eAAAC,KACT0f,MAAS,YACD,cAAAzf,KAMJ0I,UACC,WAAAzI,KACDyQ,UACO4C,iBACR8J,QAAU,CAAA;AAAAvhB,YAAA6M;AAAA7M,YAAA6U;AAAA7U,YAAAuhB;AAAAvhB,aAAAyX;AAAAzX,aAAA4jB;AAAA5jB,aAAAiE;AAAAjE,aAAAkE;AAAAlE,aAAAmE;AAAAnE,aAAAoE;AAAApE,aAAAS;AAAAT,aAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,GAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAAtE,MAAAA,WAAAskB,qBAAA;AAEtBA,UAAAA,2CACI,YAAmB,EAAA,SAAA,WACG,WAAA,UACJ,OAAA,SAAS,UAAQ,WAAA,CAAA;AAAatkB,aAAAskB;AAAAtkB,aAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,GAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAA,MAAAvE,EAAAqE,GAAAA,MAAAA,OAAArE,WAAAsE,KAAA;AAKnD,UAAA,qBAAA,OA1BU,EAAA,WAAA,8BACZD,UAAAA;AAAAA,MAAAA;AAAAA,MAiBCC;AAAAA,IAQL,EAAA,CAAA;AAAMtE,aAAAqE;AAAArE,aAAAsE;AAAAtE,aAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,GAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAA,GAAA,MAAA6M,YAAA7M,EAAA,GAAA,MAAA2hB,YAAA3hB,EAAA,GAAA,MAAAS,QAAAnB,IAAA;AAELkF,UAAAmd,YAAYlhB,QAAMnB,MACd,oBAAA,YAAA,EACY,SAAA,SACC,WAAA,OACAuN,UACD,SAAMkX,MAAAA,oBAAwB,IAAA,GACvC,UAAA,oBAAC,cACL,EAAA,CAAA;AAAa/jB,aAAA6M;AAAA7M,aAAA2hB;AAAA,MAAA,GAAA,IAAAlhB,QAAAnB;AAAAU,aAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,GAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAA,MAAAzE,EAAAuE,GAAAA,MAAAA,OAAAvE,WAAAwE,KAAA;AACf,UAAA,qBAAA,OArCS,EAAA,WAAA,6BACXD,UAAAA;AAAAA,MAAAA;AAAAA,MA4BCC;AAAAA,IAQL,EAAA,CAAA;AAAMxE,aAAAuE;AAAAvE,aAAAwE;AAAAxE,aAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,GAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAA4c,GAAAA,MAAAA,gBAAA5c,EAAA,GAAA,MAAA6M,YAAA7M,EAAA6U,GAAAA,MAAAA,YAAA7U,EAAA,GAAA,MAAA2jB,qBAAA3jB,WAAA0D,YAAA;AAGDgB,UAAAif,qBACG,oBAAC,sBAAiCjgB,EAAAA,YACAmR,YAAO,UACJ,eAACA,CAAAA,UACNhI,UACI+P,cACTyH,KAAAA,aAAe,CAAA;AAAArkB,aAAA4c;AAAA5c,aAAA6M;AAAA7M,aAAA6U;AAAA7U,aAAA2jB;AAAA3jB,aAAA0D;AAAA1D,aAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,GAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA3E,MAAAA,WAAA6M,UAAA;AAI9ClI,8BAEM,OAFU,EAAA,WAAA,eACZ,UAAC,oBAAA,4BAAA,EAAqCkI,SAAQ,CAAA,EAClD,CAAA;AAAM7M,aAAA6M;AAAA7M,aAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,GAAA;AAAA,EAAA;AAAA+E,MAAAA;AAAA/E,MAAAA,EAAA4kB,GAAAA,MAAAA,kBAAA5kB,WAAA0E,OAAA1E,EAAA,GAAA,MAAA2E,KAAA;AACJ,UAAA,qBAAA,OAdU,EAAA,WAAA,wCACXD,UAAAA;AAAAA,MAAAA;AAAAA;MAUDC;AAAAA,IAGJ,EAAA,CAAA;AAAM3E,aAAA4kB;AAAA5kB,aAAA0E;AAAA1E,aAAA2E;AAAA3E,aAAA+E;AAAAA,EAAAA,OAAA;AAAAA,UAAA/E,EAAA,GAAA;AAAA,EAAA;AAAAiF,MAAAA;AAAA,MAAAjF,EAAA8jB,GAAAA,MAAAA,oBAAA9jB,WAAA2hB,YAAA3hB,EAAA,GAAA,MAAAqM,qBAAArM,EAAAS,GAAAA,MAAAA,QAAAnB,IAAA;AAELqiB,UAAAA,YACI,oBAAA,oBAAA,EAAyBmC,MAAe,kBACX,UAAMnC,MAAAA,SAASlhB,QAAMnB,IAAM+M,iBAAiB,GAC5C,UAAM0X,MAAAA,yBAAyB,GAClC,OAAgC,oBAAA,SAA3B,UAAqB,wBAAA,CAAA,GAE7B,kCAAK,EAAA,UAAA;AAAA,MAAA;AAAA,MAAW,oBACJ,OADO,UACX,sBAAA,CAAA;AAAA,MAAI;AAAA,IAAA,EACG,CAAA,EAChB,CAAA;AAAA/jB,aAAA8jB;AAAA9jB,aAAA2hB;AAAA3hB,aAAAqM;AAAA,MAAA,GAAA,IAAA5L,QAAAnB;AAAAU,aAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,GAAA;AAAA,EAAA;AAAAkF,MAAAA;AAAA,MAAAlF,EAAA,GAAA,MAAAgE,OAAAhE,EAAAyE,GAAAA,MAAAA,OAAAzE,EAAA+E,GAAAA,MAAAA,OAAA/E,WAAAiF,KAAA;AAzE/BC,UACKlB,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAQDS;AAAAA,MAuCAM;AAAAA,MAgBCE;AAAAA,IAS0B,EAAA,CAAA;AAE5BjF,aAAAgE;AAAAhE,aAAAyE;AAAAzE,aAAA+E;AAAA/E,aAAAiF;AAAAjF,aAAAkF;AAAAA,EAAAA,OAAA;AAAAA,UAAAlF,EAAA,GAAA;AAAA,EAAA;AA3EHkF,SAAAA;AA2EG;AAIX,MAAM4f,UAAU;AAEhB,SAASlC,aAAW9d,OAAgB0c,sBAAiC;AAE7DvR,MAAAA;AACJ,MAAI,CAACnL,OAAO;AACA,YAAA;AAAA,EACZ;AACA,MAAIA,SAAS,CAACA,MAAMigB,MAAMD,OAAO,GAAG;AACxB,YAAA;AAAA,EACZ;AACA,MAAIhgB,SAAS0c,wBAAwBA,qBAAqBze,SAAS+B,KAAK,GAAG;AAC/D,YAAA;AAAA,EACZ;AACOmL,SAAAA;AACX;AAEA,SAAS0S,aAAa7d,OAAe;AAC7BmL,MAAAA;AACJ,MAAI,CAACnL,OAAO;AACA,YAAA;AAAA,EACZ;AACOmL,SAAAA;AACX;AAEA,MAAM+U,kBAAoD;AAAA,EACtDC,YAAY;AAAA,EACZ3E,WAAW;AAAA,EACXC,UAAU;AAAA,EACVE,KAAK;AAAA,EACLD,OAAO;AAAA,EACP0E,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,cAAc;AAAA,EACdC,cAAc;AAAA,EACdC,eAAe;AAAA,EACfC,qBAAqB;AAAA,EACrBC,aAAa;AAAA,EACbC,mBAAmB;AAAA,EACnBC,WAAW;AAAA,EACXC,kBAAkB;AAAA,EAClBC,WAAW;AAAA,EACX9iB,OAAO;AAAA,EACP+iB,WAAW;AAAA,EACXC,QAAQ;AAAA,EACRC,cAAc;AAAA,EACdC,OAAO;AACX;AAEA,SAAAC,iBAAAlmB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA0B,QAAA;AAAA,IAAAimB;AAAAA,IAAAphB;AAAAA,IAAAqhB;AAAAA,IAAAjV;AAAAA,IAAAkV;AAAAA,IAAAvZ;AAAAA,IAAAgI;AAAAA,IAAA4C;AAAAA,IAAA8J;AAAAA,EAAAxhB,IAAAA;AAsBzB6D,MAAAA;AAAA0R,MAAAA;AAAA9T,MAAAA;AAAAI,MAAAA;AAAAQ,MAAAA;AAAAC,MAAAA;AAAAK,MAAAA;AAAAM,MAAAA;AAAA,MAAAhD,EAAA,CAAA,MAAA6M,YAAA7M,EAAA6U,CAAAA,MAAAA,YAAA7U,SAAAuhB,WAAAvhB,EAAA,CAAA,MAAAkmB,mBAAAlmB,EAAAomB,CAAAA,MAAAA,gBAAApmB,EAAAmmB,CAAAA,MAAAA,iBAAAnmB,EAAA,CAAA,MAAAkR,QAAAlR,EAAAyX,CAAAA,MAAAA,mBAAAzX,SAAA8E,OAAA;AAEGuhB,UAAAA,qBAA2BjZ,OAAA4I,QAAA+K,eAA8B,EAACuF,OAAQlZ,OAAA4I,QAAeyB,eAAe,CAAC;AAEjG,UAAA8O,oBAA0BhF,UACpB8E,mBAAkBxjB,OAAAyG,OAA6H,IAC/I+c,oBAAkBjgB,IAAAgD,QAGlB,EAAC8N,OAAAlN,UAAA,CAME,CAAA;AAET,UAAAwc,QAAY1hB;AACZ,UAAA2hB,mBAAuBzP,QAAOgK,sBAAsBhK,KAAG,KAAKS,gBAAgBT,KAAG,IAACtV;AAChF,UAAAglB,eAAqB9O,kBAAcrB;AAAW5S,QAAAA;AAAA3D,QAAAA,EAAA0mB,EAAAA,MAAAA,gBAAA1mB,UAAAymB,oBAAAzmB,EAAA,EAAA,MAAAyX,iBAAA;AAC9CkP,YAAAA,kBAAwBD,gBAAiBlQ,CAAAA,kBAAkBkQ,YAAY,IAAI/O,eAAe+O,cAAcjP,eAAe,IAAC/V;AAC5FiC,YAAAgjB,mBAAmB/O,mBAAiBwI,UAAUuG,iBAAiB/O,gBAAc,IAAIA;AAAc5X,cAAA0mB;AAAA1mB,cAAAymB;AAAAzmB,cAAAyX;AAAAzX,cAAA2D;AAAAA,IAAAA,OAAA;AAAAA,YAAA3D,EAAA,EAAA;AAAA,IAAA;AAA3H,UAAA4mB,sBAA4BjjB;AAE5B,UAAAvD,SAAA,CAAA,GAAA,IAAAkO,IAAqClB,OAAAC,KAAYkZ,gBAAgB,EAACngB,IAAAygB,QAMjE,CAAC,CAAA;AAAG/iB,QAAAA;AAAA,QAAA9D,EAAA,EAAA,MAAA6M,YAAA7M,EAAAomB,EAAAA,MAAAA,gBAAApmB,EAAAkR,EAAAA,MAAAA,QAAAlR,UAAA8E,OAAA;AAIYhB,YAAAA,MAAA;AAAA,YAAA,CACA+I,UAAQ;AACTuZ,wBAAclV,MAAMlM,QAAQF,KAAK,CAAC;AAAA,QAAC;AAAA,MAAA;AAE1C9E,cAAA6M;AAAA7M,cAAAomB;AAAApmB,cAAAkR;AAAAlR,cAAA8E;AAAA9E,cAAA8D;AAAAA,IAAAA,OAAA;AAAAA,YAAA9D,EAAA,EAAA;AAAA,IAAA;AAIG+D,UAAAA,MAAA8I,WAAQia,+BAAAC;AAA2D/iB,QAAAA;AAAAhE,QAAAA,UAAA+D,KAAA;AAH5DC,YAAAwB,IACP,sCAAoCwhB,sBAEpCjjB,KACA,4BACJ;AAAC/D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,YAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAA8E,OAAA;AACAb,aAACa,qCAAa,UAAwB,2BAAA,CAAA;AAAK9E,cAAA8E;AAAA9E,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAA4mB,EAAAA,MAAAA,uBAAA5mB,UAAA8E,OAAA;AAC3CZ,YAAAY,SAAS8hB,uBAAuB,qBAa3B,SAZS,WAAAphB,IACP,mBAAmB,GACvB,UAAA;AAAA,QAAA,oBAAA,SAAgB,WAAA,QACZ,8BAAC,qBAAoCohB,EAAAA,gBAAAA,qBACzC,EAAA,CAAA;AAAA,QACA,4BAAgB,EAAA,WAAA,iDACZ,UAAA;AAAA,UAAA,oBAAA,OAAA,EAAMA,8BAAmBnnB,KAAM,CAAA;AAAA,8BAC9B,YAAoB,EAAA,SAAA,WACF,OAAA,aACdmnB,8BAAmBle,aACxB;AAAA,QAAA,GACJ;AAAA,MACJ,EAAA,CAAA;AAAM1I,cAAA4mB;AAAA5mB,cAAA8E;AAAA9E,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAA,EAAA,EAAA,MAAAgE,OAAAhE,EAAAiE,EAAAA,MAAAA,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAA8D,KAAA;AA1BVpB,WAAA,qBAAA,OAAA,EACa,SAAAoB,KAKE,WAAAE,KAMVC,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,MAcL,EAAA,CAAA;AAAMlE,cAAAgE;AAAAhE,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAA8D;AAAA9D,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AACLinB,SAAAA;AAAa/V,SAAAA;AAAI,QAAAlR,EAAAomB,EAAAA,MAAAA,gBAAApmB,UAAA8E,OAAA;AACIlD,WAAAyP,CAAU+U,WAAAA,aAAalV,QAAMlM,QAAQF,KAAK,CAAC;AAAC9E,cAAAomB;AAAApmB,cAAA8E;AAAA9E,cAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,EAAA;AAAA,IAAA;AAC3C,SAAA;AAAA,QAAAA,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;+BAClB,eAAY,UAEb,2BAAA,CAAA;AAAclD,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AACbknB,SAAAA;AACG,SAAA,oBAAA,SACK9mB,UAAMgG,OAAAA,IAAAC,aAoBG,qBAAA,OAAA,EAnB6B,WAAA,QAC/B,UAAA;AAAA,MAAC,oBAAA,YAAA,EAAoB,SAAA,mBAAgB,SAAA;AAAA,MACrC,oBAAA,SAAgB,WAAA,wDACX+G,iBAAA4I,QAAeuQ,gBAAgB,EAACngB,IAAAjC,CAAA,QAAA;AAAM,cAAA,CAAAgjB,OAAAC,gBAAA,IAAAjjB;AACnCkjB,cAAAA,WAAArC,gBAAiChO,KAAuB;AAAE,YACtDqQ,aAAavkB,SAAK;AAAA,iBACV,oBAAA,sBAAA,EAEaojB,iBACR,SAAA,MAAA;AACLC,0BAAcnP,KAAG;AACjBoP,oCAAwB;AAAA,UAEZxO,GAAAA,gBAAAA,kBACN/C,SAAAA,GAPH,KAOc;AAAA,QAAA;AAAA,eAAA;AAAA,MAGhC,CAAA,GACL;AAAA,IAAA,KAlBa/R,OAmBjB,CACH,EAYL,CAAA;AAAM9C,WAAA6M;AAAA7M,WAAA6U;AAAA7U,WAAAuhB;AAAAvhB,WAAAkmB;AAAAlmB,WAAAomB;AAAApmB,WAAAmmB;AAAAnmB,WAAAkR;AAAAlR,WAAAyX;AAAAzX,WAAA8E;AAAA9E,WAAA4D;AAAA5D,YAAAsV;AAAAtV,YAAAwB;AAAAxB,YAAA4B;AAAA5B,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAY,SAAA5D,EAAA,CAAA;AAAAsV,SAAAtV,EAAA,EAAA;AAAAwB,SAAAxB,EAAA,EAAA;AAAA4B,SAAA5B,EAAA,EAAA;AAAAoC,SAAApC,EAAA,EAAA;AAAAqC,SAAArC,EAAA,EAAA;AAAA0C,SAAA1C,EAAA,EAAA;AAAAgD,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAA4D,EAAAA,MAAAA,MAAA5D,UAAAgD,IAAA;AAnCV,SAAA,oBAAC,MACGA,UAmCJ,GAAA,CAAA;AAAgBhD,YAAA4D;AAAA5D,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA9D,MAAAA,UAAAsV,MAAAtV,EAAAwB,EAAAA,MAAAA,MAAAxB,EAAA4B,EAAAA,MAAAA,MAAA5B,EAAA,EAAA,MAAAoC,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA2D,IAAA;AA1CpBG,8BAAC,IAAaoN,EAAAA,MAAAA,IACQ,cAAAtP,IACJ,UAAAQ,IACdC,UAAAA;AAAAA,MAAAA;AAAAA,MAGAsB;AAAAA,IAqCJ,EAAA,CAAA;AAAS3D,YAAAsV;AAAAtV,YAAAwB;AAAAxB,YAAA4B;AAAA5B,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA8D,IAAA;AAxENC,SACHrB,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MA4BAoB;AAAAA,IA2CS,EAAA,CAAA;AACV9D,YAAA0C;AAAA1C,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAzEI+D,SAAAA;AAyEJ;AA9HP,SAAA8iB,SAAAS,OAAA;AA8CQxkB,QAAAA,QAAAkiB,gBAA8BhO,KAAuB;AAAE,MACnDlU,OAAK;AACEA,WAAAA;AAAAA,EAAK;AAET,SAAA;AAAc;AAlD7B,SAAAkH,SAAAmN,GAAAC,GAAA;AAAA,SAAA;AAAA,IAAA,GAkCmBD;AAAAA,IAAC,GACDC;AAAAA,EAAAA;AAAC;AAnCpB,SAAAhO,SAAArJ,IAAA;AA6Bc,QAAA,CAAAiX,KAAAuQ,gBAAA,IAAAxnB;AAAqB,SAAA;AAAA,IAAA,CACtBiX,GAAG,GAAGY;AAAAA,EAAAA;AAAc;AA9BjC,SAAAtO,QAAAvJ,IAAA;AA2BqC6X,QAAAA,CAAAA,EAAAA,cAAA,IAAA7X;AAAmB,SAAK,CAACyW,kBAAkBoB,eAAcrB,QAAS,KAAKqB,eAAcrB,UAAAG,aAAwB;AAAO;AA6GlJ,SAAA8Q,qBAAAznB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA8B,QAAA;AAAA,IAAAqX;AAAAA,IAAA4O;AAAAA,IAAAtO;AAAAA,IAAA/C;AAAAA,EAAA9U,IAAAA;AAOjC,QAAA2mB,eAAqB9O,eAAcrB;AACnCkR,QAAAA,6BAAmC5S,YAAQ,CAAK2B,kBAAkBkQ,YAAY,KAAKA,aAAYhQ,aAAcwP,iBAAexP;AAAWlV,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMpH1B,SAAAgE,IACP,mDACJ;AAACxF,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA,MAAA5B,EAAA4X,CAAAA,MAAAA,kBAAA5X,SAAAynB,4BAAA;AACD,SAAA,oBAAA,SAAgB,WAAA,QACZ,8BAAC,qBAAoC7P,EAAAA,gBAA0B6P,qCAA0B,CAAA,EAC7F,CAAA;AAAMznB,WAAA4X;AAAA5X,WAAAynB;AAAAznB,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,SAAAynB,4BAAA;AAGGA,SAAAA,8BAA+B,oBAAA,SAAA,EACrB,OAAA,wHACP,UAAC,oBAAA,gBAAA,EAAoB,MAAA,YAAsB,WAAA,MAAA,CAAK,EACpD,CAAA;AAAUznB,WAAAynB;AAAAznB,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAECqC,QAAAA,KAAAolB,6BAA6B,cAAW/lB;AAAYgB,MAAAA;AAAA1C,MAAAA,SAAA4X,eAAAnY,QAAAO,SAAAqC,IAAA;AAD/DK,SAAC,oBAAA,YAAA,EACU,OAAAL,IAAuDuV,yBAAcnY,KAAM,CAAA;AAAa,MAAA,CAAA,IAAAmY,eAAAnY;AAAAO,WAAAqC;AAAArC,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAAoC,CAAAA,MAAAA,MAAApC,UAAA0C,IAAA;AACjG,SAAA,qBAAA,OAPU,EAAA,WAAA,oCACXN,UAAAA;AAAAA,MAAAA;AAAAA,MAIDM;AAAAA,IAEJ,EAAA,CAAA;AAAM1C,WAAAoC;AAAApC,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAA,EAAA,MAAA4X,eAAAlP,aAAA;AAEN,SAAA,oBAAC,cAAoB,SAAA,WACF,OAAA,aACI,WAAA,YAClBkP,UAAAA,eAAclP,YACnB,CAAA;AAAa,MAAA,EAAA,IAAAkP,eAAAlP;AAAA1I,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,IAAA;AAdjBG,8BAAA,OACId,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MASAW;AAAAA,IAMJ,EAAA,CAAA;AAAM3D,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA4B,EAAAA,MAAAA,MAAA5B,UAAA8D,IAAA;AACJ,SAAA,qBAAA,OAvBS,EAAA,WAAAtC,IAGXI,UAAAA;AAAAA,MAAAA;AAAAA,MAGAkC;AAAAA,IAiBJ,EAAA,CAAA;AAAM9D,YAAA4B;AAAA5B,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAAsX,EAAAA,MAAAA,WAAAtX,UAAA+D,IAAA;AA3BHC,UAAC,oBAAA,MAAA,EACKsT,SACE,WAAA,wCACXvT,UAyBJ,GAAA,CAAA;AAAO/D,YAAAsX;AAAAtX,YAAA+D;AAAA/D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AA5BAgE,SAAAA;AA4BA;ACtxBJ,SAAS0jB,UAAUC,KAAqB;AACvC,MAAA,CAACA,IAAY,QAAA;AACTA,UAAAA,IAAIC,MAAM,GAAG,CAAC,EAAEC,YAAY,IAAIF,IAAIC,MAAM,CAAC,GAC9CE,QAAQ,gBAAgB,GAAG,EAC3BC,MAAM,OAAO,EACb7Q,OAAO,CAAC8Q,KAAKC,QAAQ;AACXD,WAAAA,MAAMC,IAAI,CAAC,EAAEtc,gBAAgBsc,IAAIC,UAAU,CAAC;AAAA,KACpD,EAAE;AACb;ACAO,SAAAC,cAAApoB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAuB,QAAA;AAAA,IAAA6e;AAAAA,IAAAsH;AAAAA,IAAAlV;AAAAA,EAAAnR,IAAAA;AAM1B,QAAAqoB,qBAA2BrU;AAE3B,QAAAsU,OAAavJ,aACP,iEAAmEA,YAAUrf,OAASioB,UAAU5I,WAAUrf,IAAK,IAAI,QAAQ,mCAAmC6oB,MAAAC,UAAgBC,iBAAA;AAAA,IAAA,GAAsB1J;AAAAA,EAAY,CAAA,GAAC,MAAQ,GAAI,IAC7N;AAAyBtd,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAA8e,WAAArf,MAAA;AAI1B,SAAA,qBAAA,aAAqB,EAAA,SAAA,MAAM,UAAA;AAAA,MAAA;AAAA,MAAUqf,WAAUrf;AAAAA,IAAM,EAAA,CAAA;AAAc,MAAA,CAAA,IAAAqf,WAAArf;AAAAO,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA,MAAA5B,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGhEtB,SAAC,qBAAA,YAAA,EAAoB,SAAA,SAAoB,WAAA,aAAa,UAAA;AAAA,MAAA;AAAA,0BAKgB,KAD9D,EAAA,KAAA,uBACE,MAAA,oDAAoD,UAAI,QAAA;AAAA,MAAI;AAAA,IACtE,EAAA,CAAA;AAAa5B,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,SAAAqoB,MAAA;AARjBjmB,8BAAC,eAEGR,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAOA,oBAAC,aACU,OAAA6mB,OAAAC,QACDL,MACG,UAAA,cAER/e,UAiBLA,QAAA,CAAA;AAAA,IAEJ,EAAA,CAAA;AAAgBtJ,WAAAqoB;AAAAroB,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAAqoB,CAAAA,MAAAA,QAAAroB,SAAAooB,oBAAA;AAKC/lB,SAAAuC,CAAA,MAAA;AACLA,QAACsR,gBAAiB;AAClBtR,QAACqR,eAAgB;AACjBmS,yBAAkBlX,KAAA;AAAA,QAAAmD,MACR;AAAA,QAASC,SACN;AAAA,MAAA,CACZ;AACMqU,aAAAA,UAAAC,UAAAC,UAA8BR,IAAI;AAAA,IAAA;AAC5CroB,WAAAqoB;AAAAroB,WAAAooB;AAAApoB,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BACA,iBAAsB,EAAA,MAAA,QAAU,CAAA;AAAAlD,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,SAAAqC,IAAA;AAZrCW,8BAAC,QACY,EAAA,SAAA,QACH,MAAA,SACG,SAAAX,IASTK,UAAAA;AAAAA,MAAAA;AAAAA,MAAiC;AAAA,IAErC,EAAA,CAAA;AAAS1C,WAAAqC;AAAArC,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,UAAAomB,cAAA;AACTziB,6BAAC,QAAgB,EAAA,SAAA,MAAMyiB,aAAY,KAAM,GAAG,UAAK,QAAA,CAAA;AAASpmB,YAAAomB;AAAApmB,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,IAAA;AAhB9DG,8BAAC,eACGd,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAeAW;AAAAA,IACJ,EAAA,CAAA;AAAgB3D,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAAomB,EAAAA,MAAAA,gBAAApmB,EAAA,EAAA,MAAAkR,QAAAlR,EAAAwB,EAAAA,MAAAA,MAAAxB,EAAA,EAAA,MAAAoC,MAAApC,UAAA8D,IAAA;AAvDbC,SAAC,qBAAA,QAAA,EAAamN,MACQkV,cACJ,UAAA,OACrB5kB,UAAAA;AAAAA,MAAAA;AAAAA,MACAY;AAAAA,MAkCA0B;AAAAA,IAkBJ,EAAA,CAAA;AAAS9D,YAAAomB;AAAApmB,YAAAkR;AAAAlR,YAAAwB;AAAAxB,YAAAoC;AAAApC,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAxDF+D,SAAAA;AAwDE;AAnEN,SAAAuF,QAAAvJ,IAAA;AA6BW,QAAA;AAAA,IAAA+oB;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAlpB,IAAAA;AAMC,SACC,oBAAA,OAAA,EAAY+oB,OAAkB,WAAA,uBACzCC,UAAAA,OAAM3iB,IAAA8iB,CAAAA,MAAAC,MACH,oBAAA,OAAA,EAAW,GAAMH,aAAY;AAAA,IAAAE;AAAAA,EAAS,CAAA,GACjCA,UAAAA,KAAI9iB,KAAAgjB,OAAApS,QACD,iCAAoBiS,cAAa;AAAA,IAAAG;AAAAA,EAAAA,CAAU,EAA9B,GAAA,IAChB,EAHKD,GAAAA,CAIV,CACH,EACH,CAAA;AAAM;AA0BZ,SAASX,iBAAiB1J,YAAsC;AAEtDuK,QAAAA,kBAAkBA,CAACvkB,UAAoB;AACrCA,QAAAA,UAAUpD,UAAaoD,UAAU,MAAM;AAChCA,aAAAA;AAAAA,IACX;AACMwkB,UAAAA,YAAYC,MAAMzkB,KAAK;AACzB,QAAA,OAAOwkB,cAAc,YAAY;AAC1BA,aAAAA;AAAAA,IACX;AACIla,QAAAA,MAAMsG,QAAQ4T,SAAS,GAAG;AAC1B,aAAOA,UAAUljB,IAAI,CAACqD,MAAW4f,gBAAgB5f,CAAC,CAAC;AAAA,IACvD;AACI,QAAA,OAAO6f,cAAc,UAAU;AAC3BA,UAAAA,cAAc,KACPA,QAAAA;AACXlc,aAAOC,KAAKic,SAAS,EAAEtc,QAASgK,CAAQ,QAAA;AAChC,YAAA,CAACuN,cAAc+E,SAAS,GAAG;AAC3B,gBAAME,WAAWH,gBAAgBC,UAAUtS,GAAG,CAAC;AAC3CwS,cAAAA,aAAa,QAAQA,aAAa9nB,UAAa8nB,aAAa,SAAS,CAACjF,cAAciF,QAAQ,GAAG;AAC/FF,sBAAUtS,GAAG,IAAIwS;AAAAA,UAAAA,OACd;AACH,mBAAOF,UAAUtS,GAAG;AAAA,UACxB;AAAA,QACJ;AAAA,MAAA,CACH;AACD,aAAOsS,UAAUG;AACjB,aAAOH,UAAUI;AACjB,aAAOJ,UAAUjR;AACjB,aAAOiR,UAAU1R;AACjB,aAAO0R,UAAUK;AACjB,aAAOL,UAAU1S;AAAAA,IAErB;AAEO0S,WAAAA;AAAAA,EAAAA;AAGJ,SAAA;AAAA,IACHhqB,IAAIwf,WAAWxf;AAAAA,IACfG,MAAMqf,WAAWrf;AAAAA,IACjBuH,cAAc8X,WAAW9X;AAAAA,IACzBtH,MAAMof,WAAWpf;AAAAA,IACjBgJ,aAAaoW,WAAWpW;AAAAA,IACxBkO,UAAU;AAAA,IACVxM,iBAAiB0U,WAAW1U;AAAAA,IAC5BiB,MAAMyT,WAAWzT;AAAAA,IACjBvI,OAAOgc,WAAWhc;AAAAA,IAClBW,UAAUqb,WAAWrb;AAAAA,IACrBmmB,eAAe9K,WAAW8K;AAAAA,IAC1BC,aAAa/K,WAAW+K;AAAAA,IACxB/S,YAAY1J,OAAO4I,QAAQ;AAAA,MACvB,GAAI8I,WAAWhI,cAAc,CAAC;AAAA,IACjC,CAAA,EACI1Q,IAAI,CAAC,CAAC4Q,KAAKlS,KAAK,OAAO;AAAA,MACpB,CAACkS,GAAG,GAAGqS,gBAAgBvkB,KAAK;AAAA,IAC9B,EAAA,EACDoS,OAAO,CAACC,GAAGC,OAAO;AAAA,MAAE,GAAGD;AAAAA,MAAG,GAAGC;AAAAA,IAAE,IAAI,CAAA,CAAE;AAAA,IAC1C0S,iBAAiBhL,WAAWgL,kBAAkB,CAAA,GAAI1jB,IAAIoiB,gBAAgB;AAAA,EAAA;AAG9E;ACvFO,SAASuB,+BAA+B;AAAA,EACIrmB;AAAAA,EACAxD;AAAAA,EACA8pB;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA/pB;AAAAA,EACAgqB;AAAAA,EACAC;AAAAA,EACArd;AAAAA,EACAsd;AAAAA,EACA5S;AAAAA,EACAmB;AACuB,GAAG;AAEnE,QAAA;AAAA,IACFnY;AAAAA,IACAC;AAAAA,IACAmT;AAAAA,IACA/S;AAAAA,IACAD;AAAAA,IACAypB;AAAAA,MACArpB,UAA+B;AAEnC,QAAMmnB,qBAAqBrU;AAE3B,QAAMwW,cAAcC;AACpB,QAAMC,WAAW,CAACF;AAGlB,QAAM,CAACG,uBAAuBC,wBAAwB,IAAItpB,SAA6B;AACvF,QAAM,CAAC8W,qBAAqB+C,sBAAsB,IAAI7Z,SAA6B;AACnF,QAAM,CAAC8Z,2BAA2BC,4BAA4B,IAAI/Z,SAA6B;AAE/F,QAAMua,yBAAyBzD,sBAAsBhM,UAAUgM,qBAAqBgD,yBAAyB,IAAIzZ;AAC3Gma,QAAAA,mBAAmBD,yBAAyB9Z,MAAMrB,OAAOqW,YAAY8E,uBAAuB7P,WAAW,KAAK,cAAc,CAAC,IAAIrK;AACrI,QAAM,CAACkpB,gBAAgBC,iBAAiB,IAAIxpB,SAAkB,KAAK;AAEnE,QAAM,CAACypB,qBAAqBC,sBAAsB,IAAI1pB,SAAkB,KAAK;AAE7E,QAAM,CAAC2pB,uBAAuBC,wBAAwB,IAAI5pB,SAAkB,KAAK;AACjF,QAAM,CAACsX,sBAAsBuS,uBAAuB,IAAI7pB,SAAmB,CAAE,CAAA;AAE7E,QAAM8pB,4BAA4B5qB,eAAMC,OAErCC,OAAO4X,kBAAkB;AAAA,IAAE,IAAI5X,OAAO4X;AAAAA,EAAgB,IAAI,CAAE,CAAA;AAE/D/V,YAAU,MAAM;AACR4nB,QAAAA,mBACSI,KAAK;AAAA,EAAA,GACnB,CAACA,KAAK,CAAC;AAEJc,QAAAA,0BAA0Bf,wBAC1B,MAAY;AACV,QAAI,CAACA,sBACD;AAEJU,2BAAuB,IAAI;AAELtqB,0BAAAA,MAAM,EACvBsO,KAAMsc,CAAkB,kBAAA;AAEjBA,UAAAA,cACuBA,wBAAAA,cAAcvU,UAAwB;AAEjE,UAAI,CAACuU,eAAe;AAChBjD,2BAAmBlX,KAAK;AAAA,UACpBmD,MAAM;AAAA,UACNC,SAAS;AAAA,QAAA,CACZ;AACD;AAAA,MACJ;AAEA,YAAMgX,mBAAmBD,cAAcvU,aAAa1J,OAAOC,KAAKge,cAAcvU,UAAU,IAAI,CAAA,GACvFjU,OAAQuJ,CAAgB,gBAAA,CAAC3L,OAAOqW,WAAW1K,WAAW,CAAC;AACxDkf,UAAAA,gBAAgBnlB,WAAW,GAAG;AAC9BiiB,2BAAmBlX,KAAK;AAAA,UACpBmD,MAAM;AAAA,UACNC,SAAS;AAAA,QAAA,CACZ;AACD;AAAA,MACJ;AAEA,YAAMiX,oBAAoB;AAAA,QACtB,GAAGD,gBAAgBpU,OAAO,CAAC+Q,KAAK7b,kBAAgB;AAC5C6b,cAAI7b,aAAW,KAAKif,cAAcvU,cAAc,CAAA,GAAI1K,aAAW;AACxD6b,iBAAAA;AAAAA,QACX,GAAG,EAEF;AAAA,QACD,GAAGxnB,OAAOqW;AAAAA,MAAAA;AAER0U,YAAAA,yBAAyB,CAC3B,GAAGF,iBACH,GAAI7qB,OAAO4X,mBAAmB,CAAA,CAAG;AAEvB,oBAAA,cAAckT,mBAAmB,KAAK;AAEpDE,4BAAsBD,sBAAsB;AAE5CN,8BAAwBI,eAAe;AAAA,IAAA,CAC1C,EACAxb,QAAQ,MAAM;AACXib,6BAAuB,KAAK;AAAA,IAAA,CAC/B;AAAA,EAEPrpB,IAAAA;AAEAgqB,QAAAA,4BAA4BA,CAACzf,cAAuB;AAClD,QAAA,CAACA,UAAW,QAAOkf,0BAA0B1c,QAAQ,EAAE,KAAK3M,MAAMrB,QAAQyL,+BAAAA,CAAgC;AACvGif,WAAAA,0BAA0B1c,QAAQxC,SAAS,KAAKnK,MAAMrB,QAAQyL,+BAA+BD,SAAS,CAAC;AAAA,EAAA;AAG5Gwf,QAAAA,wBAAwBA,CAACvS,oBAA8BjN,gBAAuB;AAC1EuP,UAAAA,sBAAsBtP,+BAA+BD,WAAS;AAEtDuP,kBAAAA,qBAAqBtC,oBAAoB,KAAK;AAClCzK,8BAAAA,QAAQxC,eAAa,EAAE,IAAIiN;AAAAA,EAAAA;AAInDyC,QAAAA,iBAAiBA,CAACvP,eAAsBH,gBAAuB;AACjE,UAAMqO,SAASlO,gBAAcD,UAAUC,eAAaH,WAAS,IAAIvK;AACjE,QAAI,CAAC4Y,OACK5Q,OAAAA,MAAM,+BAA+B;AAE/ChJ,kBAAcoL,mBAAmBwO,MAAM,GAAG5Y,QAAW,KAAK;AAEpD2Z,UAAAA,yBAAyBqQ,0BAA0Bzf,WAAS;AAClE,QAAIoP,wBAAwB;AACxB,YAAMnC,uBAAqBmC,uBAAuBxY,OAAQ6Y,CAAAA,MAAMA,MAAMtP,aAAW;AACjFqf,4BAAsBvS,sBAAoBjN,WAAS;AAAA,IACvD;AAEAgf,6BAAyB,KAAK;AAE9BN,6BAAyBjpB,MAAS;AAClCwZ,2BAAuBxZ,MAAS;AAChC0Z,iCAA6B1Z,MAAS;AAAA,EAAA;AAGpC8W,QAAAA,iBAAiBA,CAACH,iBAA2BpM,gBAAuB;AACtEvL,kBAAcwL,+BAA+BD,WAAS,GAAGoM,iBAAiB,KAAK;AAAA,EAAA;AAGnF,QAAMiD,oBAAoBA,CAAC;AAAA,IACIhc;AAAAA,IACAiX;AAAAA,EAAAA,MAIzB;AACF,QAAI,CAACjX,IAAI;AACL,YAAMoK,MAAM,oDAAoD;AAAA,IACpE;AACAhJ,kBAAc,cAAc;AAAA,MACxB,GAAID,OAAOqW,cAAc,CAAC;AAAA,MAC1B,CAACxX,EAAE,GAAGiX;AAAAA,OACP,KAAK;AAEF2C,UAAAA,uBAAqB,CAAC,GAAIzY,OAAO4X,mBAAmBjL,OAAOC,KAAK5M,OAAOqW,UAAU,GAAIxX,EAAE;AAC7FmsB,0BAAsBvS,oBAAkB;AAExC+R,6BAAyB,KAAK;AAC9B,QAAIV,aAAa;AACYrR,+BAAAA,qBAAmByS,QAAQrsB,EAAE,CAAC;AACvD4b,6BAAuB5b,EAAE;AAAA,IAC7B;AACA8b,iCAA6B1Z,MAAS;AAAA,EAAA;AAG1C,QAAM6a,oBAAoBA,CAAC;AAAA,IACIjd,IAAAA;AAAAA,IACAiX,UAAAA;AAAAA,IACAyL;AAAAA,IACA/V,WAAAA;AAAAA,EAAAA,MAC2B;AAE9C2f,YAAAA,IAAI,4BAA4BrV,UAAQ;AAEhD,UAAM+D,WAAShb,OAAK6M,UAAU7M,MAAI2M,WAAS,IAAIvK;AAC/C,UAAMmqB,eAAevR,WAASxO,mBAAmBwO,QAAM,IAAI5Y;AAGvDsgB,QAAAA,cAAcA,eAAe1iB,MAAI;AAE3BwsB,YAAAA,iBAAiB3f,UAAU6V,YAAY/V,WAAS;AAChD8f,YAAAA,uBAAuBjgB,mBAAmBggB,cAAc;AAExDzQ,YAAAA,2BAAyBqQ,0BAA0Bzf,WAAS;AAGlE,YAAMiN,uBAAqBmC,yBACtBjV,IAAKsV,CAAAA,QAAMA,QAAMsG,aAAa1iB,OAAKoc,GAAC,EACpC7Y,OAAQ6Y,CAAMA,QAAAA,QAAMha,MAAS;AAElC+pB,4BAAsBvS,sBAAoBjN,WAAS;AAEnD,UAAI3M,MAAI;AACqB4Z,iCAAAA,qBAAmByS,QAAQrsB,IAAE,CAAC;AACvD4b,+BAAuB5b,IAAE;AAAA,MAC7B;AACcysB,oBAAAA,sBAAsBrqB,QAAW,KAAK;AACpCqqB,sBAAAA,sBAAsB,OAAO,KAAK;AAAA,IACtD;AAEA/b,YAAQuS,MAAM,qBAAqB;AAAA,MAC/BjjB,IAAAA;AAAAA,MACAiX,UAAAA;AAAAA,MACAyL;AAAAA,MACA/V,WAAAA;AAAAA,MACA4f;AAAAA,IAAAA,CACH;AAED,QAAIA,cAAc;AACAA,oBAAAA,cAActV,YAAU,KAAK;AAC3BsV,sBAAAA,cAAc,MAAM,KAAK;AAAA,IAC7C;AAAA,EAAA;AAIJ,QAAMG,0BAA0BA,CAAC1sB,MAAY2M,aAAoBgE,UAAgC;AAC7F,UAAM4b,iBAAevsB,OAAK6M,UAAU7M,MAAI2M,WAAS,IAAIvK;AACrDsO,YAAQuS,MAAM,2BAA2B;AAAA,MACrCjjB,IAAAA;AAAAA,MACA2M,WAAAA;AAAAA,MACAgE;AAAAA,MACA4b,cAAAA;AAAAA,IAAAA,CACH;AACD,QAAIA,gBAAc;AACd,YAAM1e,WAAW8C,SAAS7C,OAAOC,KAAK4C,KAAK,EAAE9J,SAAS;AACtD8jB,sBAAgB3qB,MAAI2M,aAAWkB,WAAW8C,QAAQvO,MAAS;AAC3DmS,oBAAc/H,mBAAmB+f,cAAY,GAAG1e,WAAW,mBAAmBzL,MAAS;AAAA,IAC3F;AAAA,EAAA;AAGJ,QAAMuqB,sBAAsBA,MAAM;AAC9BtB,6BAAyBjpB,MAAS;AAClCwZ,2BAAuBxZ,MAAS;AAAA,EAAA;AAG9BkgB,QAAAA,gBAAgBzJ,uBAAuB6R,mBAAmBvb,SAASqI,aAAakT,kBAAkBvb,QAAQqI,WAAWqB,mBAAmB,IAAIzW;AAElJ,QAAMwqB,kBAAkBzrB,QAAQ4X,oBAAoB3W,UAAajB,OAAO4X,gBAAgBlS,WAAW;AAE7FgmB,QAAAA,sBAAuB1rB,OAAO4X,kBAC9B5X,OAAO4X,kBACPjL,OAAOC,KAAK5M,OAAOqW,UAAU;AAEnC,QAAMsV,QAAQlY,QAAQ,MAAMzT,OAAO4rB,WAAWjC,UAAUA,QAAQ3pB,OAAO4rB,OAAO,IAAI,MAAM,CAACjC,SAAS3pB,OAAO4rB,OAAO,CAAC;AAE3GjU,QAAAA,kBAAkBA,CAAChM,eAAqBH,gBAAuB;AACjE+D,YAAQuS,MAAM,qCAAqC;AAAA,MAC/CnW,aAAAA;AAAAA,MACAH,WAAAA;AAAAA,IAAAA,CACH;AACwBkgB,6BAAAA,oBAAoBR,QAAQvf,aAAW,CAAC;AACjE8O,2BAAuB9O,aAAW;AAClCgP,iCAA6BnP,WAAS;AAAA,EAAA;AAG1C,QAAMqgB,OACF,qBAAC,OAAI,EAAA,WAAW,oEACZ,UAAA;AAAA,IAAC,qBAAA,OAAA,EAAI,WAAW9mB,IACZ,6BACA,kDACA,CAACilB,YAAY,cAAchQ,kBAC/B,GAEI,UAAA;AAAA,MAAC,qBAAA,OAAA,EAAI,WAAU,aAEX,UAAA;AAAA,QAAC,qBAAA,OAAA,EAAI,WAAU,kBAEX,UAAA;AAAA,UAAC,oBAAA,OAAA,EACG,MAAM,QACN,IAAI7U,oBACJ,WAAW,MACX,WAAU,SACV,gBAAe,yBACf,aAAa,mBACb,MAAM,SACN,UAAQ,MACR,OAAOZ,QAAQnE,QAAQpB,IAAI,EAAE,CAAA;AAAA,UAEhC2sB,8BACI,YAAW,EAAA,SAAS,SACT,WAAW,QACX,OAAO,aAAY,UAAA;AAAA,YAAA;AAAA,YACfA,MAAMG;AAAAA,UAAAA,GACtB;AAAA,QAAA,GACR;AAAA,QAECpC,aAAa,oBAAC,OAAI,EAAA,WAAU,QACxBA,UACL,WAAA;AAAA,QAEA,qBAAC,OAAI,EAAA,WAAU,iCACX,UAAA;AAAA,UAAA,oBAAC,WAAQ,OAAO,oCACP,SAAS,MACd,UAAA,oBAAC,cACG,SAAS,UACT,UAAUW,qBACV,SAAS,MAAMD,kBAAkB,IAAI,GACrC,UAAC,oBAAA,UAAA,EAAQ,GACb,EACJ,CAAA;AAAA,UACCO,2BAA4B,oBAAA,SAAA,EAAQ,OAAO,oCACP,SAAS,MAC1C,UAAA,oBAAC,YACG,EAAA,SAAS,UACT,UAAUN,qBACV,SAASM,yBACRN,UAAsB,sBAAA,oBAAC,kBAAiB,EAAA,MAAM,QAAQ,CAAA,IAAK,oBAAC,iBAAiB,CAAA,CAAA,EAAA,CAClF,EACJ,CAAA;AAAA,8BACC,SAAQ,EAAA,OAAO,oBACP,SAAS,MACd,8BAAC,QACG,EAAA,SAAS,YACT,SAAS,MAAMG,yBAAyB,IAAI,GAC5C,UAAC,oBAAA,SAAA,CAAA,CAAO,EACZ,CAAA,GACJ;AAAA,QAAA,GACJ;AAAA,MAAA,GACJ;AAAA,MAEC,oBAAA,eAAA,EACG,UAAC,oBAAA,cAAA,EACG,WAAW,QACX,sBACA,qBAAqB9S,sBAAsBhM,UAAUgM,qBAAqBgD,yBAAyB,IAAIzZ,QACvG,YAAYjB,OAAOqW,YACnB,kBAAkBrW,OAAO8X,kBACzB,iBAAiB4T,qBACjB,iBACA,gBACA,kBAAkBjsB,kBAAkByb,iBAAiBja,QACrD,oBACA,OAAe,CAAA,GACvB;AAAA,0BAEC,QAAO,EAAA,WAAW,eACX,OAAM,WACN,SAAS,YACT,MAAM,SACN,SAAS,MAAMupB,yBAAyB,IAAI,GAC5C,WAAY,oBAAA,SAAA,KAAU,UAE9B,oBAAA;AAAA,IAAA,GACJ;AAAA,IAEC,CAACR,YACG,oBAAA,OAAA,EAAI,WAAW,qFACZ,UAAA,qBAAC,OACG,EAAA,WAAU,8FAET7O,UAAAA;AAAAA,MAAAA,0BACGC,oBACA,CAACrF,kBAAkBqF,gBAAgB,yBAClC,cACG,EAAA,SAAS,OAET,kBAAkB,CAAC3b,iBACnB,cAAc,OACd,oBAAoB,CAACA,iBACrB,oBAAoB,OACpB,aAAaiY,qBACb,mBAAmBgD,2BACnB,UAAUU,kBACV,mBACA,UAAUF,gBACV,SAASqQ,yBACT,iBAAiBtoB,YACjB,eACA,SACA,iBACA,mBAfK,GAAA,aAAagnB,qBAAqB,EAgBzC;AAAA,MAEL,CAAC7O,oBACG,qBAAA,OAAA,EAAI,WAAW,iEACZ,UAAA;AAAA,QAAA,oBAAC,cAAW,SAAS,SAAS,WAAU,IACnCqQ,UAAAA,kBACK,wCACA,+BACV,CAAA;AAAA,QACA,qBAAC,UAAO,SAAS,YACT,SAAS,MAAMjB,yBAAyB,IAAI,GAEhD,UAAA;AAAA,UAAA,oBAAC,SAAO,EAAA;AAAA,UAAA;AAAA,QAAA,GAEZ;AAAA,MAAA,GACJ;AAAA,MAEHpP,oBAAoBrF,kBAAkBqF,gBAAgB,KACnD,oBAAC,cAAW,SAAS,SAAS,WAAU,oCACnC,UACL,yDAAA,CAAA;AAAA,IAAA,EAAA,CACR,EACJ,CAAA;AAAA,IAEH4O,YAAa,oBAAA,oBAAA,EACV,SAAS,OACT,MAAMC,0BAA0BhpB,QAEhC,cAAc,CAACma,kBACf,oBAAoB,CAAC3b,iBACrB,kBAAkB,MAClB,oBAAoB,OACpB,aAAaiY,qBACb,mBAAmBgD,2BACnB,UAAUU,kBACV,mBACA,UAAUF,gBACV,SAASqQ,yBACT,iBAAiBtoB,YACjB,eACA,SACA,iBACA,oBACA,UAAUuoB,qBACV,aAAaxB,WACPwB,sBACAvqB,OAnBD,GAAA,aAAagpB,qBAAqB,EAoBpC;AAAA,EAEX,EAAA,CAAA;AAEJ,SAES4B,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,IAAAA;AAAAA,IAGA,oBAAA,oBAAA,EACG,SAAS,OACT,kBAAkB,OAClB,oBAAoB,MACpB,cAAc,MACd,iBAAiB5oB,YACjB,MAAMsnB,uBACN,UAAU,MAAMC,yBAAyB,KAAK,GAC9C,mBAAmB3P,mBACnB,SACA,oBAAoB,CAACpb,iBACrB,iBACA,oBACA,sBAAsBO,OAAO4X,gBAA4B,CAAA;AAAA,IAE7D,oBAAC,eACG,EAAA,UAAA,oBAAC,eACG,EAAA,YAAY5X,QACZ,MAAMmqB,gBACN,cAAcC,kBAAAA,CAAkB,EACxC,CAAA;AAAA,EACJ,EAAA,CAAA;AAER;ACjfO,SAAA2B,qBAAAzsB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA8B,QAAA;AAAA,IAAAiR;AAAAA,IAAAub;AAAAA,IAAAC;AAAAA,IAAAJ;AAAAA,IAAAK;AAAAA,EAAA5sB,IAAAA;AAM4ByB,MAAAA;AAAA,MAAAxB,EAAA0sB,CAAAA,MAAAA,gBAAA1sB,SAAAysB,UAAA;AAKvCjrB,SAAA6P,CAAUH,WAAAA,SAAOwb,aAAa,IAAID,SAAS;AAACzsB,WAAA0sB;AAAA1sB,WAAAysB;AAAAzsB,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAK5C,QAAA4B,KAAA+qB,SAAS;AAAiBvqB,MAAAA;AAAApC,MAAAA,SAAA4B,IAAA;AAAxC,SAAA,oBAAC,eAAaA,UAA2B,GAAA,CAAA;AAAc5B,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,SAAAssB,MAAA;AAElDA,SAAAA,QAAS,oBAAA,YAAA,EACF,UACR,KAAA,CAAA;AAAatsB,WAAAssB;AAAAtsB,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BACZ,cAAW,UAEZ,gBAAA,CAAA;AAAalD,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,SAAAqC,IAAA;AANjBW,8BAAC,eACIX,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAGDK;AAAAA,IAIJ,EAAA,CAAA;AAAgB1C,WAAAqC;AAAArC,WAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,CAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,UAAA0sB,cAAA;AAGZ,SAAA,oBAAC,UAAe,SAAA,QAAgBA,SAAAA,cAAc,WAAQ,MAAE,UAAQ,WAAA,CAAA;AAAS1sB,YAAA0sB;AAAA1sB,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA9D,MAAAA,UAAAysB,UAAA;AACzE3oB,SAAC,oBAAA,QAAA,EAAgB2oB,SAAO,UAAG,UAAI,OAAA,CAAA;AAASzsB,YAAAysB;AAAAzsB,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA2D,EAAAA,MAAAA,MAAA3D,UAAA8D,IAAA;AAF5CC,8BAAC,eACGJ,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MACAG;AAAAA,IACJ,EAAA,CAAA;AAAgB9D,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAAkR,EAAAA,MAAAA,QAAAlR,EAAA,EAAA,MAAAwB,MAAAxB,EAAAoC,EAAAA,MAAAA,MAAApC,EAAA,EAAA,MAAAgD,MAAAhD,UAAA+D,IAAA;AArBnB,UAAA,qBAAA,UACSmN,MACQ,cAAA1P,IACE,mBAAA,sBACC,oBAAA,4BAGjBY,UAAAA;AAAAA,MAAAA;AAAAA,MACAY;AAAAA,MAUAe;AAAAA,IAIJ,EAAA,CAAA;AAAS/D,YAAAkR;AAAAlR,YAAAwB;AAAAxB,YAAAoC;AAAApC,YAAAgD;AAAAhD,YAAA+D;AAAA/D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAtBTgE,SAAAA;AAsBS;ACtCV,SAAA4oB,8BAAA7sB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAuC,QAAA;AAAA,IAAAiR;AAAAA,IAAAC;AAAAA,EAAApR,IAAAA;AAI1C,QAAA;AAAA,IAAA8sB;AAAAA,MAEInV,2BAA2B;AAAElW,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BAK5B,eAAY,UAAkB,qBAAA,CAAA;AAAclD,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA,MAAA5B,EAAA6sB,CAAAA,MAAAA,eAAA7sB,SAAAmR,SAAA;AAExCvP,SAAAirB,aAAWzmB,IAAA0mB,CACD,SAAA,qBAAC,UAEK,SAAA,MAAM3b,QAAQ2b,KAAI9V,GAAI,GAC/B,WAAQ,MACC,SAAA,QAER8V,UAAAA;AAAAA,MAAIrtB,KAAAA;AAAAA,MAAM;AAAA,MAAGqtB,KAAI9V;AAAAA,MAAK;AAAA,IAAA,KALlB8V,KAAI9V,GAMb,CAAS;AACXhX,WAAA6sB;AAAA7sB,WAAAmR;AAAAnR,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,SAAA6sB,aAAA;AACAA,UAAAA,eAAW,IAAM1mB,gBACd,oBAAA,YAAA,EAAoB,SAAA,SAAS,UAE9B,0BAAA,CAAA;AAAanG,WAAA6sB;AAAA7sB,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA4B,CAAAA,MAAAA,MAAA5B,SAAAoC,IAAA;AAdpB,SAAA,qBAAA,eAAyB,EAAA,WAAA,uBACrBR,UAAAA;AAAAA,MAAAA;AAAAA,MAUAQ;AAAAA,IAKL,EAAA,CAAA;AAAgBpC,WAAA4B;AAAA5B,WAAAoC;AAAApC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,SAAAmR,SAAA;AAChB,SAAA,oBAAC,eACG,EAAA,UAAA,oBAAC,QAAgB,EAAA,SAAA,YAAqB,SAAMA,MAAAA,QAAW,GAAA,UAAA,SAAA,CAAM,EACjE,CAAA;AAAgBnR,WAAAmR;AAAAnR,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,EAAAkR,EAAAA,MAAAA,QAAAlR,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,IAAA;AAvBbM,SAAC,qBAAA,QAAA,EACM,UAAA,MACJkO,MACN1P,UAAAA;AAAAA,MAAAA;AAAAA,MACAa;AAAAA,MAiBAK;AAAAA,IAGJ,EAAA,CAAA;AAAS1C,YAAAkR;AAAAlR,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAxBFgD,SAAAA;AAwBE;ACLN,SAAA+pB,sBAAAhtB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,GAAA;AAA+B,QAAA;AAAA,IAAA6e;AAAAA,IAAAkO;AAAAA,IAAAC;AAAAA,IAAA7C;AAAAA,IAAA8C;AAAAA,EAAAntB,IAAAA;AAgBlC,QAAA;AAAA,IAAA8sB,aAAAM;AAAAA,MAA4CzV,2BAA2B;AAEvE,QAAA0V,CAAAA,uBAAAC,wBAAA,IAA0D9sB,eAAAc,SAAmC;AAC7F,QAAAisB,CAAAA,yBAAAC,0BAAA,IAA8DhtB,eAAAc,cAA6B;AAC3F,QAAAmsB,CAAAA,cAAAC,eAAA,IAAwCltB,eAAAc,SAAmC;AAE3E,QAAAqsB,CAAAA,eAAAC,gBAAA,IAA0CptB,eAAAc,SAGvC;AAEH,QAAA;AAAA,IAAAZ;AAAAA,IAAAC;AAAAA,MAGIO,UAA4B;AAAEO,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAA8e,WAAAgL,gBAAA;AAE6ChL,SAAAA,WAAUgL,kBAAqB;AAAA,MAAA,CAAA,IAAAhL,WAAAgL;AAAA9pB,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAA9G,QAAA8pB,CAAAA,gBAAA8D,iBAAA,IAA4CrtB,eAAAc,SAAmCG,EAA+B;AAAEoC,MAAAA;AAAA0R,MAAAA;AAAAuY,MAAAA;AAAAC,MAAAA;AAAA9pB,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAAtC,MAAAA;AAAAQ,MAAAA;AAAAC,MAAAA;AAAAK,MAAAA;AAAAM,MAAAA;AAAAW,MAAAA;AAAAG,MAAAA;AAAAC,MAAAA;AAAA/D,MAAAA,EAAA8e,CAAAA,MAAAA,WAAA+N,eAAA7sB,EAAA,CAAA,MAAAmtB,sBAAAntB,EAAA,CAAA,MAAA8pB,kBAAA9pB,EAAAS,CAAAA,MAAAA,OAAAosB,eAAA7sB,EAAA,CAAA,MAAAS,OAAAhB,MAAA;AAChH,UAAAsuB,sBAA4BttB,OAAMosB,aAAAhqB,OAAAyG,OAAA,EAAAlD,IAAAc,CAAAA,QACpB8mB,kBAAkBppB,KAAGuoB,kBAAkB,CAAC,EAAAtqB,OAAAmC,OAAA,KACN;AAChD,UAAAipB,uBAA6BnP,WAAU+N,aAAAhqB,OAAAuG,QAAA,KAA4E;AACnH8kB,UAAAA,mBAAyBH,oBAAmB5nB,SAAU8nB,qBAAoB9nB;AAG/B,UAAA;AAClCtC,SAAAA;AAAyB,UAAA;AAA6C,UAAA;AAC5B,SAAA;AAAAM,QAAAA;AAAA,QAAAnE,EAAA,EAAA,MAAAS,OAAAhB,MAAA;AAG/B0E,aAAC,qBAAA,YAAoB,EAAA,SAAA,MAAM,UAAA;AAAA,QAAA;AAAA,QACJ1D,OAAMhB;AAAAA,MAC7B,EAAA,CAAA;AAAa,QAAA,EAAA,IAAAgB,OAAAhB;AAAAO,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,aAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAoE,QAAAA;AAAApE,QAAAA,UAAA8pB,gBAAA;AAGR1lB,aAAA0lB,kBAAkBA,eAAc3jB,SAAA,yBAAgB,OAC7C,EAAA,UAAA,oBAAC,WACI2jB,EAAAA,UAAAA,eAAc1jB,IAAA+nB,CACX,kBAAA,qBAAC,UACkB,EAAA,eAAMR,iBAAgB;AAAA,QAAAztB,iBAAA;AAAA,QAAAkuB,oBAEPD,cAAa7uB;AAAAA,MACpC,CAAA,GACP,UAAA;AAAA,QAAC,oBAAA,WAAA,EACS,OAAA,QACN,UAAC,oBAAA,YAAA,EAAoB,SAAA,aAAwB,WAAA,aACxC6uB,UAAa1uB,cAAAA,KAClB,CAAA,GACJ;AAAA,QACC,oBAAA,WAAA,EACS,OAAA,SACN,8BAAC,SAAe,EAAA,OAAA,UACE,SAAA,MACd,UAAC,oBAAA,YAAA,EAAgB,MAAA,SACI,SAAA4uB,CAAA,QAAA;AACLzpB,cAACqR,eAAgB;AACjBrR,cAACsR,gBAAiB;AAClBmX,mCAAyBc,cAAa7uB,EAAG;AAAA,QAAC,GAExC,OAAA,WACd,UAAA,oBAAC,cAAiB,MAAA,YACtB,EAAA,CACJ,EACJ,CAAA;AAAA,MAAA,EAAA,GAzBW6uB,cAAazuB,IA0B5B,CACH,EACL,CAAA,EACJ,CAAA;AAAQM,cAAA8pB;AAAA9pB,cAAAoE;AAAAA,IAAAA,OAAA;AAAAA,aAAApE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGKmB,aAAAA,MAAA;AACW,yBAAA;AAAA,UAAAnE,iBAAA;AAAA,QAAA,CAEf;AAAA,MAAA;AACJF,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,aAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AALLoB,aAAC,oBAAA,QAAA,EACY,SAAAD,MAKA,SAAA,QACE,WAAA,oBAAC,SAAO,CAAA,CAAA,GAAI,UAE3B,oBAAA,CAAA;AAASrE,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,aAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,UAAAoE,MAAA;AA5CbG,aAAC,qBAAA,OAAiB,EAAA,WAAA,kCACbH,UAAAA;AAAAA,QAAAA;AAAAA,QAkCDE;AAAAA,MAWJ,EAAA,CAAA;AAAQtE,cAAAoE;AAAApE,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,aAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAA,EAAAmE,EAAAA,MAAAA,QAAAnE,UAAAuE,MAAA;AAEN,WAAA,qBAAA,OArDU,EAAA,WAAA,6CACZJ,UAAAA;AAAAA,QAAAA;AAAAA,QAIAI;AAAAA,MAgDJ,EAAA,CAAA;AAAMvE,cAAAmE;AAAAnE,cAAAuE;AAAAvE,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAEsD,SAAA;AAAA,QAAAA,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACxDF,WAAC,oBAAA,YAAA,EAAoB,SAAA,MAAM,UAE3B,eAAA,CAAA;AAAahD,cAAAgD;AAAAA,IAAAA,OAAA;AAAAA,WAAAhD,EAAA,EAAA;AAAA,IAAA;AAAAA,QAAAA,UAAAkuB,kBAAA;AAEZA,WAAAA,qBAAsB,KAClB,oBAAA,OAAA,EAAc,QAAC,oBAAA,QAAA,EAAe,SAAA,QACF,MAAA,SACA,MAAA,4CACK,WAAA,KACP,KAAA,uBACG,QAAA,UAAS,UAAS,YAAA,CAAA,GAAW,UAE3D,+DAAA,CAAA;AAAQluB,cAAAkuB;AAAAluB,cAAA2D;AAAAA,IAAAA,OAAA;AAAAA,WAAA3D,EAAA,EAAA;AAAA,IAAA;AAIPsuB,SAAAA;AAAiD,SAAA;AAC7CC,SAAAA;AACIC,SAAAA;AAAShqB,QAAAA;AAAA,QAAAxE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACmBsB,aAAAsoB,CACrB,SAAA,qBAAC,UACG,EAAA,UAAA;AAAA,QAAC,oBAAA,WAAA,EACS,OAAA,QACN,UAAC,oBAAA,YAAA,EAAoB,SAAA,aAAwB,WAAA,aACxCA,UAAIrtB,KAAAA,KACT,CAAA,GACJ;AAAA,QACC,oBAAA,WAAA,EACS,OAAA,SACN,8BAAC,SAAe,EAAA,OAAA,UACE,SAAG,MACjB,UAAC,oBAAA,YAAA,EAAgB,MAAA,SACI,SAAAgvB,CAAA,QAAA;AACL7pB,cAACqR,eAAgB;AACjBrR,cAACsR,gBAAiB;AAClBuX,0BAAgBX,KAAI9V,GAAI;AAAA,QAAC,GAEvB,OAAA,WACd,UAAA,oBAAC,cAAiB,MAAA,YACtB,EAAA,CACJ,EACJ,CAAA;AAAA,MAAA,KArBW8V,KAAI9V,GAsBnB;AACHhX,cAAAwE;AAAAA,IAAAA,OAAA;AAAAA,aAAAxE,EAAA,EAAA;AAAA,IAAA;AAxBA+tB,SAAAA,oBAAmB3nB,IAAK5B,IAwBxB;AACAypB,SAAAA,qBAAoB7nB,IAAA4D,MAapB;AAAC,MAAA,CAAA,IAAA8U,WAAA+N;AAAA7sB,WAAAmtB;AAAAntB,WAAA8pB;AAAA,MAAA,CAAA,IAAArpB,OAAAosB;AAAA,MAAA,CAAA,IAAApsB,OAAAhB;AAAAO,WAAA4D;AAAA5D,WAAAsV;AAAAtV,WAAA6tB;AAAA7tB,YAAA8tB;AAAA9tB,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAA4B;AAAA5B,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAH,SAAA5D,EAAA,CAAA;AAAAsV,SAAAtV,EAAA,CAAA;AAAA6tB,SAAA7tB,EAAA,CAAA;AAAA8tB,SAAA9tB,EAAA,EAAA;AAAAgE,UAAAhE,EAAA,EAAA;AAAAiE,UAAAjE,EAAA,EAAA;AAAAkE,UAAAlE,EAAA,EAAA;AAAA4B,SAAA5B,EAAA,EAAA;AAAAoC,SAAApC,EAAA,EAAA;AAAAqC,SAAArC,EAAA,EAAA;AAAA0C,SAAA1C,EAAA,EAAA;AAAAgD,SAAAhD,EAAA,EAAA;AAAA2D,SAAA3D,EAAA,EAAA;AAAA8D,SAAA9D,EAAA,EAAA;AAAA+D,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAAnE,MAAAA,EAAA4D,EAAAA,MAAAA,MAAA5D,UAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AAvCN+B,+BAAC,IACIvC,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAyBAQ;AAAAA,IAcL,EAAA,CAAA;AAAYpC,YAAA4D;AAAA5D,YAAA4B;AAAA5B,YAAAoC;AAAApC,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAA,MAAApE,EAAAsV,EAAAA,MAAAA,MAAAtV,UAAAmE,KAAA;AAzChB,UAAA,oBAAC,MACGA,UAyCJ,IAAA,CAAA;AAAQnE,YAAAsV;AAAAtV,YAAAmE;AAAAnE,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAA,MAAArE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGKmB,UAAAA,MAAA;AACLkpB,qCAA+B;AAAA,IAAA;AAClCvtB,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAA,MAAAtE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAHL,UAAA,oBAAC,QACY,EAAA,SAAAmB,KAGA,SAAA,QACE,WAAA,oBAAC,SAAO,CAAA,CAAA,GAAI,UAE3B,yBAAA,CAAA;AAASrE,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAAvE,MAAAA,EAAA6tB,EAAAA,MAAAA,MAAA7tB,UAAAoE,OAAApE,EAAA,EAAA,MAAAqC,IAAA;AArDhBkC,UACG,oBAAA,UAAA,EAAA,UAAA,qBAAC,IAAiB,EAAA,WAAAlC,IACd+B,UAAAA;AAAAA,MAAAA;AAAAA,MA4CAE;AAAAA,IAAAA,EAQJ,CAAA,EAAQ,CAAA;AAETtE,YAAA6tB;AAAA7tB,YAAAoE;AAAApE,YAAAqC;AAAArC,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAA,EAAA,MAAAuE,OAAAvE,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,IAAA;sCAxES,EAAA,WAAAjB,IACZM,UAAAA;AAAAA,MAAAA;AAAAA,MAICW;AAAAA,MAWAY;AAAAA,IA2DL,EAAA,CAAA;AAAMvE,YAAAuE;AAAAvE,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAAzE,MAAAA,EAAAwE,EAAAA,MAAAA,OAAAxE,UAAA8D,MAAA9D,EAAA,EAAA,MAAA+D,IAAA;AAEJ,UAAA,qBAAA,OAtIU,EAAA,WAAAD,IAEZC,UAAAA;AAAAA,MAAAA;AAAAA,MAuDAS;AAAAA,IA6EJ,EAAA,CAAA;AAAMxE,YAAAwE;AAAAxE,YAAA8D;AAAA9D,YAAA+D;AAAA/D,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAA,EAAA,MAAA8tB,MAAA9tB,EAAAgE,EAAAA,MAAAA,OAAAhE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAyE,KAAA;AAvIVC,8BAAC,IAAoB,EAAA,UAAAV,KAAkB,WAAAC,KACnCQ,UAuIJ,IAAA,CAAA;AAAYzE,YAAA8tB;AAAA9tB,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAyE;AAAAzE,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA,MAAA3E,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAEZ,UAAA,oBAAA,SAAY,OAAA;AAAA,MAAAiI,QAAU;AAAA,IAAW,EAAA,CAAA;AAAAnL,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AAAA+E,MAAAA;AAAA/E,MAAAA,UAAA8e,WAAAxf,MAAAU,UAAAgtB,oBAAAhtB,EAAAktB,EAAAA,MAAAA,uBAAAltB,EAAA,EAAA,MAAAotB,yBAAAptB,UAAA8pB,gBAAA;AAEhCsD,UAAAA,6CACI,oBAAyB,EAAA,MAAApoB,QAAQooB,qBAAqB,GACzB,UAAA,MAAA;AACA,YAAA1O,QAAA;AAAA,QAAApf,IACQ8tB;AAAAA,QAAqBF,yBACCA,uBAAmB,CAAA,GAASpO,WAAUxf,EAAA;AAAA,MAAA;AAEpEijB,cAAAA,MAAc,0BAA0B7D,KAAK;AAC7CsO,uBAAgB0B,iBAAkBhQ,KAAK,EAAC3P,KAAA,MAAA;AACpCse,iCAAwB3rB,MAAU;AAClCksB,0BAAkB9D,gBAAcjnB,OAAA8rB,CAAAA,QAAc/pB,IAACtF,OAAQ8tB,qBAAqB,CAAC;AAAA,MAAA,CAChF;AAAA,IAAA,GAED,UAAMC,MAAAA,yBAAwB3rB,MAAU,GAC3C,OAAE,oBAAA,UAAA,EAAA,UAAA,6BAAA,CAA0B,GAC7B,MAAE,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAA;AAAA,MAAW,oBAAA,OAAG,UACG,sBAAA,CAAA;AAAA,MACU;AAAA,IAAA,EAAA,CAAA,EAAM,CAAA;AAAA,MAAA,EAAA,IAAAod,WAAAxf;AAAAU,YAAAgtB;AAAAhtB,YAAAktB;AAAAltB,YAAAotB;AAAAptB,YAAA8pB;AAAA9pB,YAAA+E;AAAAA,EAAAA,OAAA;AAAAA,UAAA/E,EAAA,EAAA;AAAA,EAAA;AAAAiF,MAAAA;AAAA,MAAAjF,EAAA,EAAA,MAAAU,iBAAAV,EAAA,EAAA,MAAAS,OAAAosB,eAAA7sB,EAAA,EAAA,MAAAwtB,cAAA;AAChEA,UAAAA,oCACI,oBAAyB,EAAA,MAAAxoB,QAAQwoB,YAAY,GAChB,UAAA,MAAA;AACA9sB,oBAAc,eAAeD,OAAMosB,aAAAhqB,OAAA+rB,CAA0BhqB,QAAAA,QAAM4oB,YAAY,CAAC;AAChFC,sBAAe/rB,MAAU;AAAA,IAAA,GAEzB,UAAM+rB,MAAAA,gBAAe/rB,MAAU,GAClC,OAAE,oBAAA,UAAA,EAAA,UAAA,oBAAA,CAAiB,GACpB,MAAE,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAA;AAAA,MAAU,oBAAA,OAAG,UACI,sBAAA,CAAA;AAAA,MACI;AAAA,IAAA,EAAA,CAAA,EAAM,CAAA;AAAA1B,YAAAU;AAAA,MAAA,EAAA,IAAAD,OAAAosB;AAAA7sB,YAAAwtB;AAAAxtB,YAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,EAAA;AAAA,EAAA;AAGjDkF,QAAAA,MAAAF,QAAQ0oB,aAAa;AAACvoB,MAAAA;AAAAnF,MAAAA,UAAAktB,qBAAA;AAIH/nB,UAAA+nB,uBAAyB;AAAAltB,YAAAktB;AAAAltB,YAAAmF;AAAAA,EAAAA,OAAA;AAAAA,UAAAnF,EAAA,EAAA;AAAA,EAAA;AAAAoF,MAAAA;AAAApF,MAAAA,UAAAmF,OAAAnF,EAAAS,EAAAA,MAAAA,OAAAnB,IAAA;AAA7B8F,UAAID,CAAAA,GAAAA,KAA2B1E,OAAMnB,EAAA;AAAIU,YAAAmF;AAAA,MAAA,EAAA,IAAA1E,OAAAnB;AAAAU,YAAAoF;AAAAA,EAAAA,OAAA;AAAAA,UAAApF,EAAA,EAAA;AAAA,EAAA;AAAAqF,MAAAA;AAAArF,MAAAA,UAAA8pB,gBAAA;AAIjDzkB,UAAAwpB,CAAA,sBAAA;AACLA,UAAAA,qBAAiB,CAAK/E,eAAc1jB,IAAAygB,MAAc,EAAC9jB,SAAU8rB,kBAAiBvvB,EAAG,GAAC;AAClFsuB,0BAAsB9D,CAAAA,GAAAA,gBAAgB+E,iBAAiB,CAAC;AAAA,MAAC;AAE7DlB,uBAAgBjsB,MAAU;AAAA,IAAA;AAC7B1B,YAAA8pB;AAAA9pB,YAAAqF;AAAAA,EAAAA,OAAA;AAAAA,UAAArF,EAAA,EAAA;AAAA,EAAA;AAAAsF,MAAAA;AAAA,MAAAtF,EAAA,EAAA,MAAA8e,cAAA9e,EAAA,EAAA,MAAAitB,uBAAAjtB,EAAA,EAAA,MAAAgtB,oBAAAhtB,EAAA0tB,EAAAA,MAAAA,iBAAA1tB,EAAAoqB,EAAAA,MAAAA,WAAApqB,EAAAkF,EAAAA,MAAAA,OAAAlF,EAAAoF,EAAAA,MAAAA,OAAApF,UAAAqF,KAAA;AAdLC,8BAAC,wBACS,EAAA,MAAAJ,KACY8nB,kBACAlO,8BACGmO,qBACA,qBAAA7nB,KACJ,iBAAI,OACjBsoB,GAAAA,eACKtD,SACI,aAAA/kB,IAKT,CAAA;AAAArF,YAAA8e;AAAA9e,YAAAitB;AAAAjtB,YAAAgtB;AAAAhtB,YAAA0tB;AAAA1tB,YAAAoqB;AAAApqB,YAAAkF;AAAAlF,YAAAoF;AAAApF,YAAAqF;AAAArF,YAAAsF;AAAAA,EAAAA,OAAA;AAAAA,UAAAtF,EAAA,EAAA;AAAA,EAAA;AAAAuF,MAAAA;AAAAvF,MAAAA,UAAAU,iBAAAV,EAAAS,EAAAA,MAAAA,OAAAosB,aAAA;AAIKtnB,UAAAupB,CAAA,oBAAA;AAAA,UACDA,iBAAe;AACD,sBAAA,eAAa,CAAA,GAAOruB,OAAMosB,eAAkB,CAAA,GAAGiC,eAAe,CAAC;AAAA,MAAC;AAElFvB,sCAAgC;AAAA,IAAA;AACnCvtB,YAAAU;AAAA,MAAA,EAAA,IAAAD,OAAAosB;AAAA7sB,YAAAuF;AAAAA,EAAAA,OAAA;AAAAA,UAAAvF,EAAA,EAAA;AAAA,EAAA;AAAAyF,MAAAA;AAAA,MAAAzF,EAAAstB,EAAAA,MAAAA,2BAAAttB,UAAAuF,KAAA;AAPLE,UAAC,oBAAA,+BAAA,EACS6nB,MAAAA,yBACG,SAAA/nB,IAKL,CAAA;AAAAvF,YAAAstB;AAAAttB,YAAAuF;AAAAvF,YAAAyF;AAAAA,EAAAA,OAAA;AAAAA,UAAAzF,EAAA,EAAA;AAAA,EAAA;AAAA0F,MAAAA;AAAA1F,MAAAA,UAAAkE,OAAAlE,EAAA0E,EAAAA,MAAAA,OAAA1E,EAAA+E,EAAAA,MAAAA,OAAA/E,EAAA,GAAA,MAAAiF,OAAAjF,WAAAsF,OAAAtF,EAAA,GAAA,MAAAyF,KAAA;AAlMZ,UAAA,qBAAA,OAAgB,EAAA,WAAAvB,KACZQ,UAAAA;AAAAA,MAAAA;AAAAA,MA0IAC;AAAAA,MAECI;AAAAA,MAkBAE;AAAAA,MAYDK;AAAAA,MAgBAG;AAAAA,IAQJ,EAAA,CAAA;AAAMzF,YAAAkE;AAAAlE,YAAA0E;AAAA1E,YAAA+E;AAAA/E,aAAAiF;AAAAjF,aAAAsF;AAAAtF,aAAAyF;AAAAzF,aAAA0F;AAAAA,EAAAA,OAAA;AAAAA,UAAA1F,EAAA,GAAA;AAAA,EAAA;AAnMN0F,SAAAA;AAmMM;AA3OP,SAAAmhB,OAAAkI,KAAA;AAAA,SA6N+DnqB,IAACtF;AAAA;AA7NhE,SAAA0K,OAAAglB,QAAA;AAAA,SAiJsC,oBAAA,UAAA,EACG,UAAC,qBAAA,WAAA,EACS,OAAA,QACN,UAAA;AAAA,IAAA,oBAAC,cAAoB,SAAA,aAAwB,WAAA,aACxClC,iBAAIrtB,MACT;AAAA,IACC,qBAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,aAAa,UAAA;AAAA,MAAA;AAAA,MAEhD,oBAAuB,QAAhBqtB,EAAAA,UAAAA,OAAI9V,IAAK,CAAA;AAAA,IAAA,GACxB;AAAA,EACJ,EAAA,CAAA,EAAA,GAVW8V,OAAI9V,GAWnB;AAAW;AA5JhD,SAAA5N,SAAAxB,KAAA;AAAA,SAoC8D,OAAOhD,QAAM;AAAQ;AApCnF,SAAA0E,QAAA1E,GAAA;AAAA,SAiCyD,OAAOA,MAAM;AAAQ;AC9D9E,MAAMqqB,6BAA+C;AAAA,EACxD3vB,IAAI;AAAA,EACJI,MAAM;AAAA,EACND,MAAM;AAAA,EACNuH,cAAc;AAAA,EACdqE,MAAM;AAAA,EACN3C,aAAa;AAAA,EACboO,YAAYoY,uBAAuB;AAAA,IAC/BzvB,MAAM;AAAA,MACFiX,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNiJ,aAAa;AAAA,MACb8E,YAAY;AAAA,QACRhO,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,IACA2vB,OAAO;AAAA,MACHzY,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN+N,YAAY;AAAA,QACRhO,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,IACAkJ,aAAa;AAAA,MACTgO,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNiJ,aAAa;AAAA,MACb6X,UAAU;AAAA,IACd;AAAA,IACA6O,YAAY;AAAA,MACR1Y,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN4gB,SAAS;AAAA,QACLnL,aAAa;AAAA,QACbH,eAAe,CAAC,SAAS;AAAA,MAC7B;AAAA,MACArM,aAAa;AAAA,IACjB;AAAA,IACA2mB,WAAW;AAAA,MACP3Y,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN6vB,aAAa;AAAA,MACb5mB,aAAa;AAAA,IACjB;AAAA,IACA6mB,OAAO;AAAA,MACH7Y,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN+N,YAAY;AAAA,QACRgiB,iBAAiB;AAAA,QACjBhd,KAAK;AAAA,MACT;AAAA,IACJ;AAAA,IACAid,QAAQ;AAAA,MACJ/Y,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNogB,oBAAoB;AAAA,MACpBlJ,IAAI;AAAA,QACAD,UAAU;AAAA,QACV2J,SAAS;AAAA,UACLnL,aAAa;AAAA,UACbH,eAAe,CAAC,SAAS;AAAA,QAC7B;AAAA,MACJ;AAAA,IACJ;AAAA,IACA2a,kBAAkB;AAAA,MACdhZ,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNiJ,aAAa;AAAA,MACbiO,IAAI;AAAA,QACAD,UAAU;AAAA,QACVhX,MAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACAiwB,UAAU;AAAA,MACNlwB,MAAM;AAAA,MACNiJ,aAAa;AAAA,MACbgO,UAAU;AAAA,MACVgK,UAAU;AAAA,IACd;AAAA,IACAkP,UAAU;AAAA,MACNlZ,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNowB,WAAW;AAAA,IACf;AAAA,EAAA,CACH;AACL;ACrFO,MAAMC,yBAA0C;AAAA,EACnDxwB,IAAI;AAAA,EACJI,MAAM;AAAA,EACND,MAAM;AAAA,EACNuH,cAAc;AAAA,EACdqE,MAAM;AAAA,EACN3C,aAAa;AAAA,EACbQ,aAAa;AAAA,EACb4N,YAAYoY,uBAAuB;AAAA,IAC/BzvB,MAAM;AAAA,MACFA,MAAM;AAAA,MACN+N,YAAY;AAAA,QAAEhO,UAAU;AAAA,MAAK;AAAA,MAC7BkX,UAAU;AAAA,IACd;AAAA,IACAqZ,cAAc;AAAA,MACVtwB,MAAM;AAAA,MACNiX,UAAU;AAAA,MACV2J,SAAS;AAAA,QACLnL,aAAa;AAAA,QACbH,eAAe,CAAC,SAAS;AAAA,QACzB4a,UAAU;AAAA,UACNK,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACAC,SAAS;AAAA,MACLxwB,MAAM;AAAA,MACNiJ,aAAa;AAAA,MACb8E,YAAY;AAAA,QAAEhO,UAAU;AAAA,MAAK;AAAA,MAC7BkX,UAAU;AAAA,MACV8G,OAAO;AAAA,QACH0S,WAAW;AAAA,QACXC,YAAY;AAAA,QACZrZ,YAAY;AAAA,UACRsZ,MAAM;AAAA,YACF1Z,UAAU;AAAA,YACVjX,MAAM;AAAA,YACN8gB,UAAU;AAAA,UACd;AAAA,UACA8P,OAAO;AAAA,YACH3Z,UAAU;AAAA,YACVjX,MAAM;AAAA,YACN6gB,WAAW;AAAA,UACf;AAAA,UACAmP,QAAQ;AAAA,YACJhwB,MAAM;AAAA,YACNiX,UAAU;AAAA,YACVC,IAAI;AAAA,cACAD,UAAU;AAAA,cACV2J,SAAS;AAAA,gBACLnL,aAAa;AAAA,gBACbH,eAAe,CAAC,SAAS;AAAA,gBACzB4a,UAAU;AAAA,kBACNK,cAAc;AAAA,gBAClB;AAAA,cACJ;AAAA,YACJ;AAAA,YACAtnB,aAAa;AAAA,UACjB;AAAA,UACA4nB,UAAU;AAAA,YACN7wB,MAAM;AAAA,YACNiX,UAAU;AAAA,YACVC,IAAI;AAAA,cACAD,UAAU;AAAA,cACVhX,MAAM;AAAA,cACN6wB,mBAAmB,CAAC,QAAQ,YAAY;AAAA,YAC5C;AAAA,UACJ;AAAA,QACJ;AAAA,QACAlY,iBAAiB,CAAC,QAAQ,SAAS,UAAU,UAAU;AAAA,MAC3D;AAAA,IACJ;AAAA,IACAmY,YAAY;AAAA,MACR/wB,MAAM;AAAA,MACNiX,UAAU;AAAA,MACVmZ,WAAW;AAAA,IACf;AAAA,IACAY,QAAQ;AAAA,MACJhxB,MAAM;AAAA,MACN+N,YAAY;AAAA,QAAEhO,UAAU;AAAA,MAAK;AAAA,MAC7BkX,UAAU;AAAA,MACVjK,YAAY;AAAA,QACRikB,WAAW;AAAA,UACPpxB,IAAI;AAAA,UACJ4N,OAAO;AAAA,QACX;AAAA,QACAyjB,OAAO;AAAA,MACX;AAAA,MACA3c,cAAc;AAAA,IAClB;AAAA,IACA4c,cAAc;AAAA,MACVnxB,MAAM;AAAA,MACNiX,UAAU;AAAA,MACVma,WAAW;AAAA,IACf;AAAA,IACAC,UAAU;AAAA,MACNrxB,MAAM;AAAA,MACNiX,UAAU;AAAA,IACd;AAAA,IACAqa,MAAM;AAAA,MACFtxB,MAAM;AAAA,MACNiJ,aAAa;AAAA,MACbgO,UAAU;AAAA,MACVC,IAAI;AAAA,QACAD,UAAU;AAAA,QACVsa,cAAc;AAAA,MAClB;AAAA,IACJ;AAAA,EAAA,CACH;AAAA,EACDpH,eAAe;AAAA,IACX6G,QAAQ,CAAC,MAAM,WAAW;AAAA,EAC9B;AACJ;AChHO,MAAMQ,0BAA4C;AAAA,EACrD3xB,IAAI;AAAA,EACJI,MAAM;AAAA,EACND,MAAM;AAAA,EACNuH,cAAc;AAAA,EACd0B,aAAa;AAAA,EACb2C,MAAM;AAAA,EACNyL,YAAYoY,uBAAuB;AAAA,IAC/B3C,aAAa;AAAA,MACT9sB,MAAM;AAAA,MACNiX,UAAU;AAAA,IACd;AAAA,IACA8J,OAAO;AAAA,MACH/gB,MAAM;AAAA,MACNiX,UAAU;AAAA,MACV8J,OAAO;AAAA,IACX;AAAA,IACA0Q,eAAe;AAAA,MACXzxB,MAAM;AAAA,MACNiX,UAAU;AAAA,IACd;AAAA,IACAya,OAAO;AAAA,MACH1xB,MAAM;AAAA,MACNiX,UAAU;AAAA,IACd;AAAA,IACA0a,oBAAoB;AAAA,MAChB3xB,MAAM;AAAA,MACNiX,UAAU;AAAA,MACVC,IAAI;AAAA,QACAD,UAAU;AAAA,QACVhX,MAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACA2xB,UAAU;AAAA,MACN5xB,MAAM;AAAA,MACNiX,UAAU;AAAA,MACV+J,KAAK;AAAA,IACT;AAAA,EAAA,CACH;AACL;ACvCO,MAAM6Q,0BAA4C;AAAA,EACrDhyB,IAAI;AAAA,EACJI,MAAM;AAAA,EACND,MAAM;AAAA,EACNuH,cAAc;AAAA,EACdqE,MAAM;AAAA,EACN3C,aAAa;AAAA,EACboO,YAAY;AAAA,IACR6V,OAAO;AAAA,MACHjW,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN+N,YAAY;AAAA,QAAEhO,UAAU;AAAA,MAAK;AAAA,IACjC;AAAA,IACA+xB,MAAM;AAAA,MACF7a,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN+N,YAAY;AAAA,QACRhO,UAAU;AAAA,QACVgyB,QAAQ;AAAA,QACRlf,SAAS;AAAA,QACTmf,gBAAgB;AAAA,MACpB;AAAA,IACJ;AAAA,IACAC,cAAc;AAAA,MACVhb,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNqX,YAAY;AAAA,QACR6a,UAAU;AAAA,UACNjb,UAAU;AAAA,UACVjX,MAAM;AAAA,UACN+N,YAAY;AAAA,YAAEhO,UAAU;AAAA,UAAK;AAAA,QACjC;AAAA,QACAoyB,SAAS;AAAA,UACLlb,UAAU;AAAA,UACVjX,MAAM;AAAA,QACV;AAAA,QACAoyB,kBAAkB;AAAA,UACdnb,UAAU;AAAA,UACVjX,MAAM;AAAA,UACN4gB,SAAS;AAAA,YACLnL,aAAa;AAAA,YACbH,eAAe,CAAC,SAAS;AAAA,UAC7B;AAAA,QACJ;AAAA,QACA+c,gBAAgB;AAAA,UACZpb,UAAU;AAAA,UACVjX,MAAM;AAAA,QACV;AAAA,QACAsyB,qBAAqB;AAAA,UACjBrb,UAAU;AAAA,UACVjX,MAAM;AAAA,UACNghB,KAAK;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AAAA,IACAwP,SAAS;AAAA,MACLvZ,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN+d,OAAO;AAAA,QACH1G,YAAY;AAAA,UACRkb,SAAS;AAAA,YACLtb,UAAU;AAAA,YACVjX,MAAM;AAAA,YACNqX,YAAY;AAAA,cACR6V,OAAO;AAAA,gBACHjW,UAAU;AAAA,gBACVjX,MAAM;AAAA,gBACN+N,YAAY;AAAA,kBAAEhO,UAAU;AAAA,gBAAK;AAAA,cACjC;AAAA,cACAywB,SAAS;AAAA,gBACLvZ,UAAU;AAAA,gBACVjX,MAAM;AAAA,gBACN8gB,UAAU;AAAA,cACd;AAAA,cACA0R,OAAO;AAAA,gBACHvb,UAAU;AAAA,gBACVjX,MAAM;AAAA,gBACN4gB,SAAS;AAAA,kBACLnL,aAAa;AAAA,kBACbH,eAAe,CAAC,SAAS;AAAA,gBAC7B;AAAA,cACJ;AAAA,cACAmd,MAAM;AAAA,gBACFxb,UAAU;AAAA,gBACVjX,MAAM;AAAA,gBACNghB,KAAK;AAAA,cACT;AAAA,YACJ;AAAA,UACJ;AAAA,UACAwR,OAAO;AAAA,YACHvb,UAAU;AAAA,YACVjX,MAAM;AAAA,YACN4gB,SAAS;AAAA,cACLnL,aAAa;AAAA,cACbH,eAAe,CAAC,SAAS;AAAA,YAC7B;AAAA,UACJ;AAAA,UACAod,QAAQ;AAAA,YACJzb,UAAU;AAAA,YACVjX,MAAM;AAAA,YACNkX,IAAI;AAAA,cACAD,UAAU;AAAA,cACVI,YAAY;AAAA,gBACR6V,OAAO;AAAA,kBACHjW,UAAU;AAAA,kBACVjX,MAAM;AAAA,kBACN+N,YAAY;AAAA,oBAAEhO,UAAU;AAAA,kBAAK;AAAA,gBACjC;AAAA,gBACAyyB,OAAO;AAAA,kBACHvb,UAAU;AAAA,kBACV2J,SAAS;AAAA,oBACLnL,aAAa;AAAA,oBACbH,eAAe,CAAC,SAAS;AAAA,kBAC7B;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACAqd,SAAS;AAAA,MACL1b,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNqX,YAAY;AAAA,QACR6V,OAAO;AAAA,UACHjW,UAAU;AAAA,UACVjX,MAAM;AAAA,UACN+N,YAAY;AAAA,YAAEhO,UAAU;AAAA,UAAM;AAAA,QAClC;AAAA,QACAywB,SAAS;AAAA,UACLvZ,UAAU;AAAA,UACVjX,MAAM;AAAA,UACN8gB,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,IACA8R,cAAc;AAAA,MACV3b,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNqX,YAAY;AAAA,QACRwb,YAAY;AAAA,UACR5b,UAAU;AAAA,UACVjX,MAAM;AAAA,QACV;AAAA,QACA8yB,kBAAkB;AAAA,UACd7b,UAAU;AAAA,UACVjX,MAAM;AAAA,QACV;AAAA,QACA+yB,gBAAgB;AAAA,UACZ9b,UAAU;AAAA,UACVjX,MAAM;AAAA,UACNkX,IAAI;AAAA,YACAD,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACA+b,iBAAiB;AAAA,MACb/b,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN8gB,UAAU;AAAA,IACd;AAAA,IACAqQ,cAAc;AAAA,MACVla,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN+N,YAAY;AAAA,QAAEhO,UAAU;AAAA,MAAK;AAAA,IACjC;AAAA,IACAkzB,cAAc;AAAA,MACVhc,UAAU;AAAA,MACVjX,MAAM;AAAA,MACNowB,WAAW;AAAA,IACf;AAAA,IACA8C,cAAc;AAAA,MACVjc,UAAU;AAAA,MACVjX,MAAM;AAAA,MACN6vB,aAAa;AAAA,MACb5mB,aAAa;AAAA,IACjB;AAAA,EACJ;AACJ;AC3KO,SAAAkqB,4BAAA7yB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAqC,QAAA;AAAA,IAAAP;AAAAA,IAAAmzB;AAAAA,IAAAxyB;AAAAA,IAAAyyB;AAAAA,IAAAC;AAAAA,EAAAhzB,IAAAA;AAcxC,QAAA,CAAAizB,wBAAAC,yBAAA,IAA4D5xB,cAAc;AAC1E,QAAA,CAAA6xB,yBAAAC,0BAAA,IAA8D9xB,SAA+B;AAAEG,MAAAA;AAAAI,MAAAA;AAAA5B,MAAAA,EAAA+yB,CAAAA,MAAAA,2BAAA/yB,SAAAN,QAAAM,EAAA,CAAA,MAAA6yB,iBAAA;AACrFrxB,SAAAA,MAAA;AAAA,UACFqxB,mBAAmBE,yBAAuB;AAC1CE,sCAA8B;AACdvzB,wBAAAA,IAAI,EAACqP,KAAAqkB,CAAA,gBAAA;AAEbC,gBAAAA,sBAA4BD,YAAWvwB,OAAAywB,CAAAA,MAAA,EAAeP,+BAA6BpZ,KAAA4Z,CAAAA,OAAYA,GAAC9gB,KAAM,EAACoV,YAAmByL,MAAAA,EAAC7gB,KAAOoV,EAAAA,YAAc,CAAA,CAAC;AACjJsL,qCAA2BE,mBAAmB;AAAA,QACjD,CAAA,EAACvjB,cACamjB,0BAAyB,KAAM,CAAC;AAAA,MAAC;AAAA,IAAA;AAExDF,SAAAA,CAAAA,yBAAyBrzB,MAAMmzB,eAAe;AAAC7yB,WAAA+yB;AAAA/yB,WAAAN;AAAAM,WAAA6yB;AAAA7yB,WAAAwB;AAAAxB,WAAA4B;AAAAA,EAAAA,OAAA;AAAAJ,SAAAxB,EAAA,CAAA;AAAA4B,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAVnDsC,YAAUd,IAUPI,EAAgD;AAcnD,QAAA;AAAA,IAAAlB;AAAAA,IAAAgjB;AAAAA,MAKIziB,UAA4B;AAAEmB,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAMtB,SAAA,oBAAA,OACc,EAAA,WAAA,wCACV,UAAA,oBAAC,YAAoB,EAAA,SAAA,MAAiB,WAAA,aAAa,UAAA,iBAAA,CAEnD,EACJ,CAAA;AAAMlD,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,SAAAK,kBAAA;AAELA,SAAAA,wCAAqB,MAAkB,EAAA,aAAA,cACpC,UAAC,qBAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,MAAA;AAAA,MACD,oBAA8B,KAA1BA,EAAAA,UAAAA,iBAAgBZ,KAAM,CAAA;AAAA,IAAA,EACzD,CAAA,EACJ,CAAA;AAAOO,WAAAK;AAAAL,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGHR,6BAAC,YAAoB,EAAA,SAAA,WACF,OAAA,aAAa,UAEhC,oDAAA,CAAA;AAAa1C,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAAkzB,CAAAA,MAAAA,2BAAAlzB,UAAAgzB,wBAAA;AAGRhwB,SAAAgwB,0BAAsB,CAAKE,2BAA4B,oBAAA,kBAAA,EAAuB,MAAA,QAAU,CAAA;AAAAlzB,WAAAkzB;AAAAlzB,YAAAgzB;AAAAhzB,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,EAAAkzB,EAAAA,MAAAA,2BAAAlzB,UAAA8yB,cAAA9yB,EAAA,EAAA,MAAAU,eAAA;AAExFwyB,SAAAA,yBAAuB9sB,KAAAotB,YAAAltB,8BACnB,MACkB,EAAA,aAAA,eACJ,SAAA,MAAA;AACS,oBAAA,QAAQ6W,UAAUqW,UAAU,CAAC;AAC3C9yB,oBAAc,MAAM8yB,UAAU;AAC9B9yB,oBAAc,QAAQ8yB,UAAU;AAChC9yB,oBAAc,cAAYgB,MAAW;AAC1B;IAAA,GAEV,MAAA,SACG,UAAA,WAAA,aACd,CAAO;AACT1B,YAAAkzB;AAAAlzB,YAAA8yB;AAAA9yB,YAAAU;AAAAV,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAkzB,EAAAA,MAAAA,2BAAAlzB,UAAAgzB,wBAAA;AAED,SAAA,CAACA,2BAA2BE,2BAA6B,CAAA,IAAA/sB,WAAe,KACpE,oBAAA,YAAA,EAAoB,SAAA,WAAW,UAEhC,iBAAA,CAAA;AAAanG,YAAAkzB;AAAAlzB,YAAAgzB;AAAAhzB,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA/D,MAAAA,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,MAAA3D,EAAA,EAAA,MAAA8D,IAAA;AAKnB,SAAA,qBAAA,OAhCU,EAAA,WAAA,QACZpB,UAAAA;AAAAA,MAAAA;AAAAA,MAIA,qBAAA,OAAgB,EAAA,WAAA,4DAEXM,UAAAA;AAAAA,QAAAA;AAAAA,QAEAW;AAAAA,QAeAG;AAAAA,MAAAA,GAML;AAAA,IAEJ,EAAA,CAAA;AAAM9D,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGFc,8BAAC,YAAoB,EAAA,SAAA,WACF,OAAA,aAAa,UAEhC,uBAAA,CAAA;AAAahE,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAKae,8BAAC,MAAW,EAAA,MAAA,SAAkB,SAAAgrB,2BAAA5jB,KAAmC,CAAA;AAAArL,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAA,MAAAlE,EAAA8yB,EAAAA,MAAAA,cAAA9yB,UAAA0jB,WAAA;8BAFtF,kBAAsB,OAAA,YACG,UAAA,0DACJ,MAAAzf,KACG,SAAA,MAAA;AACLyf,gBAASuL,0BAA2B;AACzB;IACX,EAAA,CAAA;AAAAjvB,YAAA8yB;AAAA9yB,YAAA0jB;AAAA1jB,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGEiB,8BAAC,MAAW,EAAA,MAAA,SAAkB,SAAA8sB,wBAAA5lB,KAAgC,CAAA;AAAArL,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AAAAoE,MAAAA;AAAA,MAAApE,EAAA8yB,EAAAA,MAAAA,cAAA9yB,UAAA0jB,WAAA;8BAFnF,kBAAsB,OAAA,SACG,UAAA,sDACJ,MAAAvf,KACG,SAAA,MAAA;AACLuf,gBAASuN,uBAAwB;AACtB;IACX,EAAA,CAAA;AAAAjxB,YAAA8yB;AAAA9yB,YAAA0jB;AAAA1jB,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAA,MAAArE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGEmB,8BAAC,MAAW,EAAA,MAAA,SAAkB,SAAAyrB,uBAAAzkB,KAA+B,CAAA;AAAArL,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAA,MAAAtE,EAAA8yB,EAAAA,MAAAA,cAAA9yB,UAAA0jB,WAAA;8BAFlF,kBAAsB,OAAA,cACG,UAAA,uEACJ,MAAArf,KACG,SAAA,MAAA;AACLqf,gBAASoM,sBAAuB;AACrB;IACX,EAAA,CAAA;AAAA9vB,YAAA8yB;AAAA9yB,YAAA0jB;AAAA1jB,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAA,MAAAvE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGEqB,8BAAC,MAAW,EAAA,MAAA,SAAkB,SAAA+sB,wBAAAjmB,KAAgC,CAAA;AAAArL,YAAAuE;AAAAA,EAAAA,OAAA;AAAAA,UAAAvE,EAAA,EAAA;AAAA,EAAA;AAAAwE,MAAAA;AAAA,MAAAxE,EAAA8yB,EAAAA,MAAAA,cAAA9yB,UAAA0jB,WAAA;8BAFnF,kBAAsB,OAAA,SACG,UAAA,kEACJ,MAAAnf,KACG,SAAA,MAAA;AACLmf,gBAAS4N,uBAAwB;AACtB;IACX,EAAA,CAAA;AAAAtxB,YAAA8yB;AAAA9yB,YAAA0jB;AAAA1jB,YAAAwE;AAAAA,EAAAA,OAAA;AAAAA,UAAAxE,EAAA,EAAA;AAAA,EAAA;AAAAyE,MAAAA;AAAA,MAAAzE,EAAA,EAAA,MAAAkE,OAAAlE,EAAAoE,EAAAA,MAAAA,OAAApE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAwE,KAAA;AAGtB,UAAA,qBAAA,OArCU,EAAA,WAAA,QACZR,UAAAA;AAAAA,MAAAA;AAAAA,MAKA,qBAAA,OAAgB,EAAA,WAAA,cACZE,UAAAA;AAAAA,QAAAA;AAAAA,QAOAE;AAAAA,QAOAE;AAAAA,QAOAE;AAAAA,MAAAA,GAOJ;AAAA,IAEJ,EAAA,CAAA;AAAMxE,YAAAkE;AAAAlE,YAAAoE;AAAApE,YAAAsE;AAAAtE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAA,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAA8yB,EAAAA,MAAAA,cAAA9yB,UAAAK,kBAAA;WAEJA,oBAAoB,4BAElB,EAAA,UAAA;AAAA,MAAA,oBAAC,cAAoB,SAAA,WACF,OAAA,aACI,WAAA,QAAQ,UAE/B,8DAAA,CAAA;AAAA,MAEA,oBAAC,oBAA8B,cAAA2O,MAAAqJ,oBAA2Bya,WAAW9jB,MAAMqJ,eAAe,GAAC;AAAA,IAE/F,EAAA,CAAA;AAAMrY,YAAA8yB;AAAA9yB,YAAAK;AAAAL,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAAA2E,MAAAA;AAAA3E,MAAAA,UAAA8yB,YAAA;AAENnuB,UAAA,oBAAA,OAAA,EAEI,UAAC,oBAAA,QAAA,EAAgB,SAAA,QAAiB,SAAA,MAAMmuB,WAAW,GAAc,WAAA,QAAQ,mCAEzE,EACJ,CAAA;AAAM9yB,YAAA8yB;AAAA9yB,YAAA2E;AAAAA,EAAAA,OAAA;AAAAA,UAAA3E,EAAA,EAAA;AAAA,EAAA;AAAA+E,MAAAA;AAAA,MAAA/E,EAAAyE,EAAAA,MAAAA,OAAAzE,EAAA,EAAA,MAAA0E,OAAA1E,EAAA2E,EAAAA,MAAAA,OAAA3E,EAAA,EAAA,MAAAqC,MAAArC,UAAA+D,IAAA;uCA1GE,WAAA,yBACZ,+BAAC,WAAoB,EAAA,UAAA,OAAkB,WAAA,kCAEnC3B,UAAAA;AAAAA,MAAAA;AAAAA,MAOCC;AAAAA,MAMD0B;AAAAA,MAkCAU;AAAAA,MAuCCC;AAAAA,MAYDC;AAAAA,IAAAA,EASJ,CAAA,EACJ,CAAA;AAAM3E,YAAAyE;AAAAzE,YAAA0E;AAAA1E,YAAA2E;AAAA3E,YAAAqC;AAAArC,YAAA+D;AAAA/D,YAAA+E;AAAAA,EAAAA,OAAA;AAAAA,UAAA/E,EAAA,EAAA;AAAA,EAAA;AA/GN+E,SAAAA;AA+GM;AAIP,SAAA0uB,eAAA1zB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAwB,QAAA;AAAA,IAAA0sB;AAAAA,IAAA+G;AAAAA,IAAAroB;AAAAA,IAAAiM;AAAAA,EAAAvX,IAAAA;AAU9ByB,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAO0B1B,SAAAgE,IACP,gIACA,iDACA,gIACA,6CACJ;AAACxF,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAA2sB,OAAA;sCAGe,WAAA,6BAEZ,8BAAC,YAAoB,EAAA,SAAA,aACZ,UAAA,MAAA,CACT,EAKJ,CAAA;AAAM3sB,WAAA2sB;AAAA3sB,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,EAAAqL,CAAAA,MAAAA,QAAArL,SAAAsX,WAAAtX,EAAA,CAAA,MAAA4B,IAAA;AAnBVQ,SAAC,qBAAA,MAAA,EACYkV,SACE,WAAA9V,IAOP,UAAA;AAAA,MAAA;AAAA,MACJI;AAAAA,IAUJ,EAAA,CAAA;AAAO5B,WAAAqL;AAAArL,WAAAsX;AAAAtX,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA0zB,CAAAA,MAAAA,YAAA1zB,SAAAoC,IAAA;AAtBXC,6BAAC,SAAeqxB,EAAAA,OAAAA,UACE,SAAA,MACdtxB,UAqBJ,GAAA,CAAA;AAAUpC,WAAA0zB;AAAA1zB,WAAAoC;AAAApC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAvBVqC,SAAAA;AAuBU;AChMX,SAAAsxB,8BAAA5zB,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAuC,QAAA;AAAA,IAAA2zB;AAAAA,IAAAnc;AAAAA,IAAAmB;AAAAA,EAAA7Y,IAAAA;AAmB1C,QAAA;AAAA,IAAAW;AAAAA,IAAAI;AAAAA,IAAAL;AAAAA,MAIIQ,UAA+B;AACnC,QAAA,CAAA4a,kBAAAgY,mBAAA,IAAgDxyB,SAAAK,MAA8C;AAAEF,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAS,OAAA4X,iBAAA;AAI7F7W,SAAAf,OAAM4X,kBAAA;AAAA,MAAA,IAAyB5X,OAAM4X;AAAAA,QAAuB;AAAA,MAAA,CAAA,IAAA5X,OAAA4X;AAAArY,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAF/DmrB,QAAAA,4BAAkC5qB,eAAAC,OAE/BgB,EAA4D;AAE/D4K,QAAAA,cAAoByP,mBAAmBA,iBAAgBvc,KAAAoC;AACvD,QAAA6U,WAAiBsF,oBAAgBna;AAAcE,MAAAA;AAAA,MAAA5B,EAAA,CAAA,MAAA4zB,gBAAA5zB,EAAAc,CAAAA,MAAAA,mBAAAd,EAAAU,CAAAA,MAAAA,iBAAAV,SAAAS,QAAA;AAErBmB,SAAAQ,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA9C;AAAAA,QAAAiX,UAAA2L;AAAAA,QAAAF;AAAAA,QAAA/V;AAAAA,MAAA7J,IAAAA;AAOvB,YAAAkY,SAAehb,KAAK6M,UAAU7M,IAAI2M,SAAS,IAACvK;AAC5C,YAAAmqB,eAAqBvR,SAASxO,mBAAmBwO,MAAM,IAAC5Y;AAGxD,YAAAgqB,4BAAA1P,CAAA,gBAAA;AAAA,YAAA,CACS/P,aAAS;AAASkf,iBAAAA,0BAAyB1c,QAAS,EAAE;AAAA,QAAA;AACpD0c,eAAAA,0BAAyB1c,QAASxC,WAAS,KAAKnK,MAAMrB,QAAQyL,+BAA+BD,WAAS,CAAC;AAAA,MAAA;AAGlHwf,YAAAA,wBAAAA,CAAAvS,oBAAAgD,gBAAA;AACIV,cAAAA,sBAA4BtP,+BAA+BD,WAAS;AAEtDuP,sBAAAA,qBAAqBtC,yBAAyB;AACnCzK,kCAAAA,QAASxC,eAAa,EAAE,IAAIiN;AAAAA,MAAAA;AAKrD8I,UAAAA,cAAcA,eAAe1iB,IAAE;AAC/BwsB,cAAAA,iBAAuB3f,UAAU6V,YAAY/V,SAAS;AACtD8f,cAAAA,uBAA6BjgB,mBAAmBggB,cAAc;AAE9DzQ,cAAAA,yBAA+BqQ,0BAA0Bzf,SAAS;AAGlE6nB,cAAAA,uBAA2BzY,uBAAsBjV,IAAAsV,CACjCA,MAAAA,MAAMsG,aAAa1iB,KAAKoc,CAAC,EAAC7Y,OAAAyG,OACR;AAClCmiB,8BAAsBvS,sBAAoBjN,SAAS;AAGnD,cAAA8nB,oBAAA;AAAA,UAAA,GAA+BH,aAAYI;AAAAA,QAAAA;AAC3C5mB,eAAAC,KAAY0mB,iBAAiB,EAAC/mB,QAAAgK,CAAA,QAAA;AACtB+c,cAAAA,kBAAkB/c,GAAG,MAAMgL,YAAU;AACnBhL,8BAAAA,GAAG,IAAI1X,MAAM;AAAA,UAAE;AAAA,QAAA,CAExC;AACDs0B,qBAAYK,kBAAmBF,iBAAiB;AAMlChI,sBAAAA,sBAAoBrqB,aAAkB;AACpCqqB,wBAAAA,sBAAoB,OAAA,KAAc;AAAA,MAAC;AAAA,UAGnDF,cAAY;AACEA,sBAAAA,cAActV,iBAAe;AAC3BsV,wBAAAA,cAAY,MAAA,KAAa;AAAA,MAAC;AAAA,IAAA;AAEjD7rB,WAAA4zB;AAAA5zB,WAAAc;AAAAd,WAAAU;AAAAV,WAAAS;AAAAT,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AA1DD,QAAAuc,oBAA0B3a;AA0DxBQ,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAA4zB,aAAAM,cAAAl0B,EAAA,CAAA,MAAAc,mBAAAd,EAAA,CAAA,MAAAU,eAAA;AAC4B0B,gBAAAC,QAAA;AAAO,YAAA;AAAA,QAAA/C,IAAAkjB;AAAAA,QAAA2R;AAAAA,QAAA5d,UAAAkM;AAAAA,QAAAxW,WAAAyR;AAAAA,MAAArb,IAAAA;AASjC,YAAA+xB,WAAe90B,OAAK6M,UAAU7M,MAAI2M,WAAS,IAACvK;AAC5C,YAAA2yB,iBAAqB/Z,WAASxO,mBAAmBwO,QAAM,IAAC5Y;AAGxDue,YAAAA,eAAqB2T,aAAYM,WAAA9tB,IAAAkuB,OAAuBxyB,MAAMwyB,GAAGH,SAAS,CAAC;AAC3E,YAAAI,sBAAA;AAAA,QAAA,GACOC,sBAAsBvU,cAAc1J,YAAQke,gBAAkB;AAAA,QAAC7d,UAAA;AAAA,MAAA;AAEpE,UAEEiV,gBAAY;AAAA,YACR0I,qBAAmB;AACL1I,wBAAAA,gBAAc0I,0BAA0B;AAAA,QAAA,OAAC;AAEzC1I,wBAAAA,gBAActV,iBAAe;AAAA,QAAC;AAEhCsV,wBAAAA,gBAAY,MAAA,KAAa;AAAA,MAAC;AAAA,IAAA;AAEjD,MAAA,CAAA,IAAA+H,aAAAM;AAAAl0B,WAAAc;AAAAd,WAAAU;AAAAV,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AA3BD,QAAA00B,wBAA8BtyB;AA2B5BC,MAAAA;AAAA,MAAArC,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAOUb,6BAAC,YAAmB,EAAA,SAAA,MAAgB,WAAA,eAAe,UAAqB,wBAAA,CAAA;AAAarC,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAGpC,QAAA0C,KAAAjC,OAAMqW;AAAyB9T,MAAAA;AAAAhD,MAAAA,EAAA00B,EAAAA,MAAAA,yBAAA10B,UAAAyX,mBAAAzX,EAAA,EAAA,MAAAU,eAAA;AACnCsC,SAAAW,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA4S,UAAAoe;AAAAA,QAAAvoB,aAAA6P;AAAAA,QAAAkY,WAAAS;AAAAA,QAAAC;AAAAA,MAAAlxB,IAAAA;AAKC,UACbkxB,YAAU;AACH,eAAA,oBAAC,cAAW,UAA+B,kCAAA,CAAA;AAAA,MAAa;AAAA,iCAG3D,+BACMte,EAAAA,UAAAA,YACGnK,aAAU,eACA,uBAAA0oB,CAAAA,eAAAhwB,UAAwCpE,cAAc,cAAc0L,aAAW,SAAStH,OAAK,KAAO,GAC9G,aAAA,MAAA;AACL,YAAA,CAACsH,iBAAW,CAAKmK,YAAQ;AAAA;AAAA,QAAA;AACV,4BAAA;AAAA,UAAA,GACZA;AAAAA,UAAQjX,IACP8M;AAAAA,UAAWwK,UAAA;AAAA,QAAA,CAElB;AAAA,MAAC,GAEY,sCAAC,gBAAyBL,EAAAA,UAAO,YACP,iBACS,mBAAAmI,CAAAA,UAAWgW,sBAAqB;AAAA,QAAA,GAC5ChW;AAAAA,QAAKyV,WACRA;AAAAA,MACH,CAAA,GACY/nB,aAAU,eACNqL,gBAAe,CAAA,EACpE,CAAA;AAAA,IAAA;AACLzX,YAAA00B;AAAA10B,YAAAyX;AAAAzX,YAAAU;AAAAV,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,EAAA4zB,EAAAA,MAAAA,gBAAA5zB,UAAA0C,MAAA1C,EAAA,EAAA,MAAAgD,IAAA;AArC/BW,SAAC,qBAAA,WAAA,EAAoB,UAAA,OAAkB,WAAA,kCAEnCtB,UAAAA;AAAAA,MAAAA;AAAAA,0BAEC,0BAAuCuxB,EAAAA,cACS,uBAAAlxB,IACJ,mBAAAM,IAgCjD;AAAA,IAAA,EAAA,CAAA;AAAYhD,YAAA4zB;AAAA5zB,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAGF,QAAA8D,KAAA+X,qBAAgBna;AAAcsC,MAAAA;AAAAD,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAQvBa,SAAAA,MAAA;AACT8vB,0BAAmBnyB,MAAU;AAAA,IAAA;AAEvBsC,UAAAA,MAAA;AACN6vB,0BAAmBnyB,MAAU;AAAA,IAAA;AAChC1B,YAAAgE;AAAAhE,YAAA+D;AAAAA,EAAAA,OAAA;AAAAC,UAAAhE,EAAA,EAAA;AAAA+D,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAAjE,MAAAA,UAAA4Y,sBAAA5Y,EAAAuc,EAAAA,MAAAA,qBAAAvc,EAAAuW,EAAAA,MAAAA,YAAAvW,EAAA,EAAA,MAAAyX,mBAAAzX,UAAAoM,eAAApM,EAAA,EAAA,MAAA8D,IAAA;AAdJ,UAAA,oBAAA,sBACS,MAAAA,IACOsI,aACHmK,UACD,SAAA,OACK,cAAA,OACKgG,mBACC,oBAAA,OACA3D,oBACP,aAAA7U,IAGH,UAAAC,KAGU,oBAAA,OACF,kBAAA,OACDyT,gBAAkB,CAAA;AAAAzX,YAAA4Y;AAAA5Y,YAAAuc;AAAAvc,YAAAuW;AAAAvW,YAAAyX;AAAAzX,YAAAoM;AAAApM,YAAA8D;AAAA9D,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAAAkE,MAAAA;AAAA,MAAAlE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAEvC,UAAA,oBAAA,SAAY,OAAA;AAAA,MAAAiI,QAAU;AAAA,IAAW,EAAA,CAAA;AAAAnL,YAAAkE;AAAAA,EAAAA,OAAA;AAAAA,UAAAlE,EAAA,EAAA;AAAA,EAAA;AAAAmE,MAAAA;AAAA,MAAAnE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAA2D,IAAA;sCA5DrB,EAAA,WAAA,yBACZA,UAAAA;AAAAA,MAAAA;AAAAA,MAwCAM;AAAAA,MAmBAC;AAAAA,IACJ,EAAA,CAAA;AAAMlE,YAAAiE;AAAAjE,YAAA2D;AAAA3D,YAAAmE;AAAAA,EAAAA,OAAA;AAAAA,UAAAnE,EAAA,EAAA;AAAA,EAAA;AA7DNmE,SAAAA;AA6DM;AAxLP,SAAAmF,QAAAyrB,KAAA;AAAA,SAmEwBrZ,QAACha;AAAc;AA0H9C,SAAAszB,eAAAj1B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAwB,QAAA;AAAA,IAAAsW;AAAAA,IAAAgG;AAAAA,IAAAnQ;AAAAA,IAAAqL;AAAAA,IAAA5K;AAAAA,EAAA9M,IAAAA;AAiBvByB,MAAAA;AAAAxB,MAAAA,SAAAuW,UAAA;AAEmBA,SAAAA,WAAWyN,WAAWzN,QAAQ,IAAQ;AAAAvW,WAAAuW;AAAAvW,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAtD,QAAAi1B,UAAgBzzB;AAAuCI,MAAAA;AAAA,MAAA5B,EAAAuW,CAAAA,MAAAA,YAAAvW,SAAAyX,iBAAA;AACxC7V,SAAA2U,WAAWoB,eAAepB,UAAUkB,eAAe,IAAQ;AAAAzX,WAAAuW;AAAAvW,WAAAyX;AAAAzX,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAA1E,QAAAwc,SAAe5a;AAEf,QAAA,CAAAgiB,YAAAC,aAAA,IAAoCxiB,cAAc;AAE3Be,QAAAA,KAAAmU,YAAYiG,SAAS,GAAGA,QAAM/c,IAAA,MAAY8W,SAAQG,QAAA,KAAWhV;AAC9DW,QAAAA,KAAAuhB,aAAU,QAAAliB;AAQjB,QAAAgB,MAAC8Z;AAED,QAAAxZ,KAAAiyB,WAAW;AAAEtxB,MAAAA;AAAA3D,MAAAA,SAAAwc,QAAA;AAGP7Y,SAAAmB,CAAA,UAAA;AAAA,UAAA,CACJ0X,QAAM;AAAA,eAAA;AAAA,MAAA;AACJ,aAAA,oBAAC,qBAAoCA,EAAAA,gBAAAA,OAAS,CAAA;AAAA,IAAA;AACxDxc,WAAAwc;AAAAxc,WAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,CAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAA,CAAA,MAAAuc,qBAAAvc,EAAAuW,CAAAA,MAAAA,YAAAvW,EAAAyX,CAAAA,MAAAA,mBAAAzX,UAAAoM,aAAA;AACctI,SAAA0gB,CAAA,wBAAA;AACX,YAAA0Q,cAAoBlV,yBAAyBzJ,UAAUiO,qBAAqB/M,eAAe;AAAC,UAAA,CACvFrL,aAAW;AAAA;AAAA,MAAA;AACC,wBAAA;AAAA,QAAA9M,IACT8M;AAAAA,QAAWmK,UACL2e;AAAAA,QAAWlT,YACT5V;AAAAA,QAAWH,WAAAvK;AAAAA,MAAAA,CAE1B;AAAA,IAAA;AACJ1B,WAAAuc;AAAAvc,WAAAuW;AAAAvW,WAAAyX;AAAAzX,YAAAoM;AAAApM,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACAa,SAAAqJ,OAAA4I,QAAA+K,eAA8B,EAAC3a,IAAAgD,QAO/B;AAACpJ,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAAhE,MAAAA,UAAA6M,YAAA7M,EAAA4jB,EAAAA,MAAAA,cAAA5jB,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAA,EAAA,MAAAgD,MAAAhD,UAAA2D,MAAA3D,EAAA,EAAA,MAAA8D,IAAA;AAjCL,UAAA,oBAAA,QACS8f,EAAAA,MAAS,YACDC,cAAY,eACf,WAAG,MACR,MAAA,SACK,WAAA,UACDhX,UACH,OAAAnK,IACI,WAAA,MACJ,OAAAM,IACM,aAAA,4BACH,UAAA,gBACG,aAAAW,IAIE,eAAAG,IAUdC,UASL,GAAA,CAAA;AAAS/D,YAAA6M;AAAA7M,YAAA4jB;AAAA5jB,YAAA0C;AAAA1C,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAA9D,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAAjE,MAAAA,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAoC,MAAApC,EAAA,EAAA,MAAAqC,IAAA;AArCN4B,8BAAC,SAAe,EAAA,OAAA7B,IACD,MAAAC,IAClB2B,UAoCJ,IAAA,CAAA;AAAUhE,YAAAgE;AAAAhE,YAAAoC;AAAApC,YAAAqC;AAAArC,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAtCHiE,SAAAA;AAsCG;AA9Dd,SAAAmF,SAAArJ,IAAA;AAoDkD,QAAA,CAAAiX,KAAAme,QAAA,IAAAp1B;AAC3B,SAAA,oBAAC,oBAEGiX,EAAAA,OAAAA,KACS,gBAAI,OACJwF,gBAAAA,UACN,UAAI,MAAA,GAJP,GAIW;AAAA;AAc/B,SAAA4Y,mBAAAr1B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA4B,QAAA;AAAA,IAAA6E;AAAAA,IAAAuwB;AAAAA,IAAAzd;AAAAA,IAAA/C;AAAAA,EAAA9U,IAAAA;AAOnByB,QAAAA,KAAA6zB,iBAAiB,WAAW;AAAEzzB,MAAAA;AAAA5B,MAAAA,SAAAwB,IAAA;AAFvBgE,SAAAA,IACP,qDACAhE,EAA8B;AAACxB,WAAAwB;AAAAxB,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,SAAA4X,gBAAA;AACnCxV,6BAEM,OAFU,EAAA,WAAA,QACZ,UAAC,oBAAA,qBAAA,EAAoCwV,eAAc,CAAA,EACvD,CAAA;AAAM5X,WAAA4X;AAAA5X,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAA4X,eAAAnY,MAAA;AAEF,SAAA,oBAAA,OAAMmY,EAAAA,UAAAA,eAAcnY,KAAM,CAAA;AAAM,MAAA,CAAA,IAAAmY,eAAAnY;AAAAO,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAI3B,QAAA0C,KAAAmS,YAAYwgB,iBAAiB,+DAA+Dzd,eAAclP;AAAY1F,MAAAA;AAAAhD,MAAAA,SAAA0C,IAAA;AAH3H,SAAA,oBAAC,cAAoB,SAAA,WACF,OAAA,YACI,WAAA,YAClBA,UACL,GAAA,CAAA;AAAa1C,WAAA0C;AAAA1C,WAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,CAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAAqC,CAAAA,MAAAA,MAAArC,SAAAgD,IAAA;AANjBW,8BAAA,OACItB,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MACAW;AAAAA,IAKJ,EAAA,CAAA;AAAMhD,WAAAqC;AAAArC,WAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA9D,MAAAA,EAAA4B,EAAAA,MAAAA,MAAA5B,UAAAoC,MAAApC,EAAA,EAAA,MAAA2D,IAAA;AACJ,SAAA,qBAAA,OAdS,EAAA,WAAA/B,IAGXQ,UAAAA;AAAAA,MAAAA;AAAAA,MAGAuB;AAAAA,IAQJ,EAAA,CAAA;AAAM3D,YAAA4B;AAAA5B,YAAAoC;AAAApC,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA/D,MAAAA,EAAAq1B,EAAAA,MAAAA,kBAAAr1B,UAAA8D,MAAA9D,EAAA,EAAA,MAAA8E,OAAA;AAlBHf,6BAAC,YAAkBe,EAAAA,OACGuwB,UAAAA,gBACC,WAAA,8BAC1BvxB,UAgBJ,GAAA,CAAA;AAAa9D,YAAAq1B;AAAAr1B,YAAA8D;AAAA9D,YAAA8E;AAAA9E,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAnBN+D,SAAAA;AAmBM;ACtSV,SAAAuxB,kCAAAv1B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA2C,QAAA;AAAA,IAAA2zB;AAAAA,IAAA9c;AAAAA,IAAAuB;AAAAA,EAAAtY,IAAAA;AAU9C,QAAA,CAAAw1B,SAAAC,UAAA,IAA8Bn0B,cAAuB;AAAEG,MAAAA;AAAA,MAAAxB,EAAA4zB,CAAAA,MAAAA,gBAAA5zB,SAAA8W,YAAA;AAEvDtV,wBAAAi0B,gBAAA;AAEI,YAAAC,aAAmB9B,aAAYM,WAAA9tB,IAAAkuB,OAAqBqB,oBAAoBrB,GAAGV,aAAYgC,UAAWhC,aAAYI,gBAAiBld,YAAY,aAAa8c,aAAYiC,aAAc,CAAC;AACnLjC,mBAAYkC,YAAaJ,UAAU;AAAA,IAAA;AACtC11B,WAAA4zB;AAAA5zB,WAAA8W;AAAA9W,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAJD,QAAAy1B,eAAAj0B;AAICI,MAAAA;AAAA5B,MAAAA,SAAAy1B,cAAA;AAES7zB,SAAAA,MAAA;AACN6zB,mBAAc3lB,EAAAA,cAAe0lB,WAAU,KAAM,CAAC;AAAA,IAAA;AACjDx1B,WAAAy1B;AAAAz1B,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAAEd,SAAA,CAAA;AAAEpC,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAFLsC,YAAUV,IAEPQ,EAAE;AAEL,QAAA2zB,sBAA4BC;AAAyB,MACjDT,SAAO;AAAAlzB,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACAb,gCAAC,wBAAwB,CAAA,CAAA;AAAArC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,YAAArC,EAAA,CAAA;AAAA,IAAA;AAAzBqC,WAAAA;AAAAA,EAAyB;AAAAA,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGzBb,8BAAA,OACH,EAAA,UAAA;AAAA,MAAC,oBAAA,YAAA,EAAoB,SAAA,aAAa,UAAqB,yBAAA;AAAA,MACtD,oBAAA,YAAA,EAAoB,SAAA,WAAW,UAA6C,iDAAA;AAAA,IACjF,EAAA,CAAA;AAAMrC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAA4zB,aAAAqC,UAAA;AACW,SAAA;AAAA,MAAAjnB,MACP4kB,aAAYqC;AAAAA,MAAAC,aAAA;AAAA,MAAAC,cAAA;AAAA,IAAA;AAGrB,MAAA,CAAA,IAAAvC,aAAAqC;AAAAj2B,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACsC,SAAA,oBAAA,OAAT,EAAA,WAAA,OAAS,CAAA;AAAAlD,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,UAAAqY,iBAAA;AAInBA,SAAAA,gBAAejS,IAAAkD,OAGjC;AAACtJ,YAAAqY;AAAArY,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAA,EAAA,MAAA8W,cAAA9W,EAAA+1B,EAAAA,MAAAA,uBAAA/1B,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA2D,IAAA;AAjBAG,6BAAC,uBACG,EAAA,OAAAzB,IAIU,iBAAAK,IAKH,cAAAM,IACF,YAAI,OACN,UAAI,OACO+yB,qBACD,oBAAApyB,IAIRmT,YACK,iBAAI,MAAI,CAAA;AAAA9W,YAAA8W;AAAA9W,YAAA+1B;AAAA/1B,YAAA0C;AAAA1C,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAnBtB8D,SAAAA;AAmBsB;AA7C1B,SAAAwF,QAAAoS,GAAA;AAAA,SAAA;AAAA,IAAA1E,KAyCU0E;AAAAA,IAAC7O,UAAA;AAAA,EAAA;AAAA;AC3CFupB,SAAAA,0BAA0Btf,YAAwBuf,aAAa,IAI7E;AAEQxd,QAAAA,SAASzL,OAAOC,KAAKyJ,UAAU,EAAEI,OAAO,CAAC+Q,KAAKjR,QAAQ;AAClDT,UAAAA,WAAWO,WAAWE,GAAG;AACzBua,UAAAA,OAAO+E,QAAQtf,GAAG;AACxB,UAAMuf,WAAWF,aAAa,GAAGA,UAAU,IAAI9E,IAAI,KAAKA;AAExD,QAAIhb,SAASG,aAAa,SAASH,SAASO,YAAY;AACpD,YAAM0f,kBAAkBJ,0BAA0B7f,SAASO,YAA0Byf,QAAQ;AACtF,aAAA;AAAA,QACHvC,gBAAgB;AAAA,UAAE,GAAG/L,IAAI+L;AAAAA,UAAgB,CAAChd,GAAG,GAAGuf;AAAAA,QAAS;AAAA,QACzDzf,YAAY;AAAA,UACR,GAAGmR,IAAInR;AAAAA,UACP,CAACya,IAAI,GAAG;AAAA,YACJ,GAAGhb;AAAAA,YACHO,YAAY0f,gBAAgB1f;AAAAA,YAC5BuB,iBAAiBjL,OAAOC,KAAKmpB,gBAAgB1f,UAAU;AAAA,UAC3D;AAAA,QACJ;AAAA,MAAA;AAAA,IAER;AAEA,UAAMyU,oBAAoB;AAAA,MACtB,GAAGtD,IAAInR;AAAAA,MACP,CAACya,IAAI,GAAGhb;AAAAA,IAAAA;AAGZ,UAAMyd,iBAAiB;AAAA,MAAE,GAAG/L,IAAI+L;AAAAA,MAAgB,CAAChd,GAAG,GAAGuf;AAAAA,IAAAA;AAEhD,WAAA;AAAA,MACHvC;AAAAA,MACAld,YAAYyU;AAAAA,IAAAA;AAAAA,EAChB,GACD;AAAA,IAAEyI,gBAAgB,CAAC;AAAA,IAAGld,YAAY,CAAC;AAAA,EAAA,CAAG;AAEzC,QAAM2f,WAAWrpB,OAAOC,KAAKwL,OAAOmb,cAAc,IAAI,CAAC;AACnD4B,MAAAA;AACJ,MAAIa,UAAU1zB,SAAS,IAAI,KAAK0zB,UAAU1zB,SAAS,KAAK,GAAG;AAC5C0zB,eAAAA;AAAAA,EACf;AAEO,SAAA;AAAA,IACH,GAAG5d;AAAAA,IACH+c;AAAAA,EAAAA;AAER;ACkCO,SAAAc,uBAAAhY,OAAA;AAAA1e,QAAAA,IAAAC,EAAA,EAAA;AAEH,QAAAiR,OAAawN,MAAKxN;AAElB,QAAAylB,CAAAA,WAAAC,YAAA,IAAkCr2B,MAAAc,cAA6B;AAC/D,QAAAw1B,CAAAA,0BAAAC,2BAAA,IAAgEv2B,MAAAc,cAA6B;AAAEtB,MAAAA;AAAA,MAAAC,EAAA22B,CAAAA,MAAAA,aAAA32B,SAAA0e,OAAA;AAE1E3e,SAAAA,MAAA;AAAA,UAAA,CACZ42B,WAAS;AACVjY,cAAKqY,YAAAr1B,MAAsB;AAAA,MAAA,OAAC;AAE5Bo1B,wCAAgC;AAAA,MAAC;AAAA,IAAA;AAExC92B,WAAA22B;AAAA32B,WAAA0e;AAAA1e,WAAAD;AAAAA,EAAAA,OAAA;AAAAA,SAAAC,EAAA,CAAA;AAAA,EAAA;AAND,QAAA0sB,eAAqB3sB;AAMnByB,MAAAA;AAAAI,MAAAA;AAAA5B,MAAAA,SAAAkR,MAAA;AAEQ1P,SAAAA,MAAA;AAAA,UAAA,CACD0P,MAAI;AACL0lB,0BAAkB;AAClBE,yCAAiC;AAAA,MAAC;AAAA,IAAA;AAEvCl1B,UAACsP,IAAI;AAAClR,WAAAkR;AAAAlR,WAAAwB;AAAAxB,WAAA4B;AAAAA,EAAAA,OAAA;AAAAJ,SAAAxB,EAAA,CAAA;AAAA4B,SAAA5B,EAAA,CAAA;AAAA,EAAA;AALTsC,YAAUd,IAKPI,EAAM;AAACQ,MAAAA;AAAApC,MAAAA,SAAA0sB,cAAA;AASYtqB,SAAAiP,CAAU,WAAA,CAACH,SAAOwb,aAAAA,IAAchrB;AAAY1B,WAAA0sB;AAAA1sB,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAE1Db,SAAC,oBAAA,aAAA,EAAY,QAAK,MAAE,UAAiB,oBAAA,CAAA;AAAcrC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,EAAA0sB,CAAAA,MAAAA,gBAAA1sB,UAAAkR,QAAAlR,EAAA,EAAA,MAAA0e,OAAA;AAClDhc,SAAAwO,QAAS,oBAAA,kBAAA,KAAqBwN,OACUgO,cACAkK,aAAe,CAAA;AAAA52B,WAAA0sB;AAAA1sB,YAAAkR;AAAAlR,YAAA0e;AAAA1e,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAA0e,OAAA;AAI1C1b,SAAAA,MAAM0b,MAAKqY,YAAAr1B,MAAsB;AAAC1B,YAAA0e;AAAA1e,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAC9BS,SAAAA,MAAMmzB,iCAAiC;AAAC92B,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA62B,0BAAA;AAH1D,SAAA,oBAAC,wBACSA,MAAuB,0BACnB,UAAA7zB,IACI,cAAAW,IACR,MAAA,+CAAiD,CAAA;AAAA3D,YAAAgD;AAAAhD,YAAA62B;AAAA72B,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAkR,QAAAlR,EAAAoC,EAAAA,MAAAA,MAAApC,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA8D,IAAA;AAjB/DC,SAAC,qBAAA,QAAA,EACSmN,MACK,iBACC,YAAA,MACA,YAAI,OACN,UAAA,OACI,cAAA9O,IAEdC,UAAAA;AAAAA,MAAAA;AAAAA,MACCK;AAAAA,MAIDoB;AAAAA,IAMJ,EAAA,CAAA;AAAS9D,YAAAkR;AAAAlR,YAAAoC;AAAApC,YAAA0C;AAAA1C,YAAA8D;AAAA9D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAnBT+D,SAAAA;AAmBS;AAcV,SAASizB,iBAAiBtY,OAG9B;AACO,QAAA;AAAA,IAAEjH;AAAAA,MAAoBC,2BAA2B;AACvD,QAAM0G,aAAaC;AACnB,QAAM4Y,iBAAiBC;AAEjB,QAAA;AAAA,IACFC;AAAAA,IACAxY;AAAAA,EACAP,IAAAA;AAEJ,QAAMgZ,oBAAoB1Y,MAAMpR;AAC1B+pB,QAAAA,mBAAmB,CAACD,mBAAmB13B,SAASgf,MAAMwO,uBAAuB,CAAA,GAAI/mB,WAAW;AAClG,QAAMmxB,0BAA0B5Y,MAAMre,mBAAmBqe,MAAMre,iBAAiBypB,iBAAiBnL,gBAAgB;AAC3G4Y,QAAAA,gBAAgBD,uBAAuBlxB,IAAI+Y,CAAAA,QAAOA,IAAIzf,KAAK+S,KAAAA,EAAOoV,YAAAA,CAAa;AACrF,QAAM2P,cAAcF,uBAAuBlxB,IAAI+Y,CAAAA,UAAOA,MAAI7f,IAAImT,KAAK,EAAEoV,YAAY,CAAC,EAAEhlB,OAAOmC,OAAO;AAClG,QAAM,CAAC8Z,YAAY2Y,aAAa,IAAIl3B,MAAMc,SAA+C;AACzF,QAAM,CAACq2B,yBAAyBC,0BAA0B,IAAIp3B,MAAMc,SAAS,KAAK;AAElFiB,YAAU,MAAM;AACR,QAAA;AACA,UAAI8b,WAAWwZ,aAAa;AACxB,YAAIlZ,MAAM0P,oBAAoB;AACZhQ,wBAAAA,WAAWyZ,uBAAuB,CAAC,GAAInZ,MAAMwO,uBAAuB,CAAA,GAAKxO,MAAM0P,kBAAkB,CAAC,CAAC;AAAA,QAAA,OAC9G;AACHqJ,wBAAc/1B,MAAS;AAAA,QAC3B;AACAi2B,mCAA2B,IAAI;AAAA,MACnC;AAAA,aACK/yB,GAAG;AACRoL,cAAQC,MAAMrL,CAAC;AAAA,IACnB;AAAA,EAAA,GACD,CAAC8Z,MAAM0P,oBAAoB1P,MAAMwO,qBAAqB9O,WAAWwZ,aAAaxZ,WAAWyZ,sBAAsB,CAAC;AAEnH,MAAI,CAACV,oBAAoB;AACrB,UAAMztB,MAAM,qDAAqD;AAAA,EACrE;AAEM,QAAA;AAAA,IACFtJ;AAAAA,EACqB+2B,IAAAA;AAEzB,QAAMW,oBAAoBhZ,aACpB;AAAA,IACE,GAAGA;AAAAA,IACHxf,IAAIwf,WAAWxf,MAAMwf,WAAWpf,QAAQq4B,aAAa,EAAE;AAAA,EAEzDr2B,IAAAA;AAEN,QAAM4L,gBAA0CwqB,oBAC1CE,qBAAqBF,mBAAmBrgB,eAAe,IACvD;AAAA,IACEnY,IAAI83B,mBAAmB13B,QAAQq4B,aAAa,EAAE;AAAA,IAC9Cr4B,MAAM03B,mBAAmB13B,QAAQ;AAAA,IACjCD,MAAM23B,mBAAmB33B,QAAQ;AAAA,IACjCqD,OAAOs0B,mBAAmBt0B,SAAS;AAAA,IACnCgU,YAAY,CAAC;AAAA,IACbuB,iBAAiB,CAAE;AAAA,IACnBhN,MAAM4sB,aAAaC,KAAKC,MAAMD,KAAKE,OAAO,IAAIH,aAAa9xB,MAAM,CAAC;AAAA,IAClEkmB,SAAS4K,eAAeoB,MAAMC,OAAO;AAAA,EAAA;AAG7C,MAAI,CAACZ,yBAAyB;AAC1B,+BAAQ,wBAAwB,CAAA,CAAA;AAAA,EACpC;AAEA,MAAI,CAAChZ,MAAMxe,oBAAoB,CAACke,WAAWwZ,eAAe,CAACF,0BAA0B;AACjF,+BAAQ,wBAAwB,CAAA,CAAA;AAAA,EACpC;AAEO,SAAA,oBAAC,0BACAhZ,EAAAA,GAAAA,OACJ,eACA,eACA,aACA,kBACA,YACA,eACA,QACA,gBAAmC,CAAA;AAE3C;AAEA,SAAS6Z,yBAAwD;AAAA,EACIr4B;AAAAA,EACA8sB;AAAAA,EACAoB;AAAAA,EACAlB;AAAAA,EACAsL;AAAAA,EACAvL;AAAAA,EACA8J;AAAAA,EACA52B;AAAAA,EACAs4B;AAAAA,EACA/L;AAAAA,EACAkK;AAAAA,EACA/D;AAAAA,EACAzI;AAAAA,EACA/pB;AAAAA,EACA0M;AAAAA,EACAwqB;AAAAA,EACAC;AAAAA,EACAH;AAAAA,EACAvY;AAAAA,EACA2Y;AAAAA,EACAnqB;AAAAA,EACAmK;AAAAA,EACArX;AAAAA,EACAs4B;AAYJ,GAC/D;AAEE,QAAM9E,eAAe+E;AACrB,QAAMva,aAAaC;AACnB,QAAM+J,qBAAqBrU;AAGrBiW,QAAAA,oBAAoBxpB,OAAO,CAAA,CAAE;AAEnC,QAAMo4B,cAAc14B,kBAAmBm3B,mBAAmB,YAAY,YAAa;AACnF,QAAM,CAACwB,aAAaC,cAAc,IAAIz3B,SAAqBu3B,WAAW;AAEtE,QAAM,CAAC3oB,OAAO8oB,QAAQ,IAAIx4B,MAAMc,SAA4B;AAEtD23B,QAAAA,iBAAiBA,CAACnK,sBAAgE;AAC9EvvB,UAAAA,KAAKuvB,kBAAkBvvB,MAAMuvB,kBAAkBnvB;AAErD,WAAOstB,iBAAiBgM,eAAe;AAAA,MACnC15B;AAAAA,MACA25B,gBAAgBpK;AAAAA,MAChB7M,YAAYoM;AAAAA,MACZlB;AAAAA,IAAAA,CACH,EACIne,KAAK,MAAM;AACRgqB,eAASr3B,MAAS;AACX,aAAA;AAAA,IAAA,CACV,EACAmO,MAAOjL,CAAM,MAAA;AACVm0B,eAASn0B,CAAC;AACVoL,cAAQC,MAAMrL,CAAC;AACfwjB,yBAAmBlX,KAAK;AAAA,QACpBmD,MAAM;AAAA,QACNC,SAAS,mCAAmC1P,EAAE0P,WAAW;AAAA,MAAA,CAC5D;AACM,aAAA;AAAA,IAAA,CACV;AAAA,EAAA;AAGT,QAAM4kB,cAAcA,MAAM;AACtB,QAAIL,gBAAgB,WAAW;AAC3B,UAAIjF,aAAauF,OAAO;AACpBL,uBAAe,oBAAoB;AAAA,iBAC5BL,WAAW;AAClBK,uBAAe,YAAY;AAAA,MAAA,OACxB;AACHA,uBAAe,YAAY;AAAA,MAC/B;AAAA,IAAA,WACOD,gBAAgB,WAAW;AAClCC,qBAAe,SAAS;AAAA,IAAA,WACjBD,gBAAgB,uBAAuB;AAC9CC,qBAAe,qBAAqB;AAAA,IAAA,WAC7BD,gBAAgB,uBAAuB;AAC9CC,qBAAe,SAAS;AAAA,IAAA,WACjBD,gBAAgB,cAAc;AACrCC,qBAAe,YAAY;AAAA,IAAA,OACxB;AACHA,qBAAe,SAAS;AAAA,IAC5B;AAAA,EAAA;AAIEzO,QAAAA,wBAAwBA,CAACvL,iBAAyC;AAChE,QAAA,CAACmO,oBAA4BvrB,QAAAA;AAC1BurB,WAAAA,sBAAsBnO,aAAWpf,MAAMof,aAAW1U,mBAAmB,OAAOgvB,eAAe,CAAA,CAAE;AAAA,EAAA;AAGlGC,QAAAA,0BAA0B,OAAOhO,kBAA0C;AAEzE,QAAA;AACA,UAAI,CAAChB,uBAAuB;AACxBoN,sBAAcpM,aAAa;AACpBiO,eAAAA,QAAQC,QAAQlO,aAAa;AAAA,MACxC;AAEAyN,qBAAe,SAAS;AAElBU,YAAAA,qBAAqB,MAAMnP,wBAAwBgB,aAAa;AAEtE,UAAI,CAACmO,oBAAoB;AACrB/B,sBAAcpM,aAAa;AACpBiO,eAAAA,QAAQC,QAAQlO,aAAa;AAAA,MACxC;AACA,YAAM5qB,SAAS;AAAA,QACX,GAAI4qB,iBAAiB,CAAC;AAAA,MAAA;AAGtBje,UAAAA,OAAOC,KAAKmsB,mBAAmB1iB,cAAc,EAAE,EAAE3Q,SAAS,GAAG;AAC7D1F,eAAOqW,aAAa0iB,mBAAmB1iB;AACvCrW,eAAO4X,kBAAkBmhB,mBAAmBnhB;AAAAA,MAChD;AAEI,UAAA,CAAC5X,OAAO4X,iBAAiB;AACzB5X,eAAO4X,kBAAkBjL,OAAOC,KAAK5M,OAAOqW,UAAU;AAC/CrW,eAAAA;AAAAA,MACX;AAEAg3B,oBAAch3B,MAAM;AACpBuP,cAAQuS,MAAM,uBAAuB;AAAA,QACjC8I,eAAeA,iBAAiB,CAAC;AAAA,QACjC5qB;AAAAA,MAAAA,CACH;AACMA,aAAAA;AAAAA,aACFmE,KAAQ;AACboL,cAAQC,MAAMrL,GAAC;AACfwjB,yBAAmBlX,KAAK;AAAA,QACpBmD,MAAM;AAAA,QACNC,SAAS,kCAAkC1P,IAAE0P,WAAW;AAAA,MAAA,CAC3D;AACM+W,aAAAA;AAAAA,IACX;AAAA,EAAA;AAGErI,QAAAA,WAAWA,CAACyW,oBAA4CxW,qBAA+D;AACjHV,YAAAA,MAAM,yBAAyBkX,kBAAkB;AACrD,QAAA;AAEA,UAAI,CAACv5B,iBAAiB;AACHu5B,uBAAAA,kBAAkB,EAAE1qB,KAAK,MAAM;AAC1CkU,2BAAiBP,UAAU;AAC3BqU,sBAAY0C,kBAAkB;AAAA,QAAA,CACjC;AACD;AAAA,MACJ;AAEA,UAAIZ,gBAAgB,WAAW;AACf;AACZ5V,yBAAiBP,UAAU;AAAA,UAAEjiB,QAAQg5B;AAAAA,QAAAA,CAAoB;AAAA,MAAA,WAClDZ,gBAAgB,WAAW;AAC9BJ,YAAAA,aAAa7E,aAAauF,OAAO;AACjClW,2BAAiBP,UAAU;AAAA,YAAEjiB,QAAQg5B;AAAAA,UAAAA,CAAoB;AAC7C;mBACLv5B,iBAAiB;AACAu5B,kCAAAA,kBAAkB,EACrC1qB,KAAMtO,CAAW,aAAA;AACdwiB,6BAAiBP,UAAU;AAAA,cACvBjiB,QAAQA,YAAUg5B;AAAAA,cAClB74B,SAAS;AAAA,gBACLlB,MAAM;AAAA,gBACND,MAAM;AAAA,cACV;AAAA,YAAA,CACH;AAAA,UAAA,CACJ,EAAEqQ,QAAQ,MAAM;AACL;UAAA,CACf;AAAA,QAAA,OACE;AACHmT,2BAAiBP,UAAU;AAAA,YAAEjiB,QAAQg5B;AAAAA,UAAAA,CAAoB;AAC7C;QAChB;AAAA,MAAA,WACOZ,gBAAgB,cAAc;AACzB;AACZ5V,yBAAiBP,UAAU;AAAA,UAAEjiB,QAAQg5B;AAAAA,QAAAA,CAAoB;AAAA,MAAA,WAClDZ,gBAAgB,uBAAuB;AAClC;MAAA,WACLA,gBAAgB,uBAAuB;AAClC;MAAA,WACLA,gBAAgB,cAAc;AACtBY,uBAAAA,kBAAkB,EAAE1qB,KAAK,MAAM;AAC1CkU,2BAAiBP,UAAU;AAAA,YAAEjiB,QAAQ6M;AAAAA,UAAAA,CAAe;AACxC;AACZypB,sBAAY0C,kBAAkB;AAAA,QAAA,CACjC;AAAA,MAAA,OACE;AACS;AACZxW,yBAAiBP,UAAU;AAAA,UAAEjiB,QAAQg5B;AAAAA,QAAAA,CAAoB;AAAA,MAC7D;AAAA,aACK70B,KAAQ;AACbwjB,yBAAmBlX,KAAK;AAAA,QACpBmD,MAAM;AAAA,QACNC,SAAS,mCAAmC1P,IAAE0P,WAAW;AAAA,MAAA,CAC5D;AACDtE,cAAQC,MAAMrL,GAAC;AACfqe,uBAAiBP,UAAU;AAAA,QAAEjiB,QAAQg5B;AAAAA,MAAAA,CAAoB;AAAA,IAC7D;AAAA,EAAA;AAGEjsB,QAAAA,aAAaA,CAAC2R,QAA6B;AAE7C,QAAIte,SAA8B,CAAA;AAClC,UAAM64B,UAAUb,gBAAgB,gBAAgBA,gBAAgB,oBAAoBA,gBAAgB,cAAc35B;AAClH,QAAIw6B,QAAQ;AACJ,UAAA;AACAA,eAAOC,aAAaxa,KAAK;AAAA,UAAEya,YAAY;AAAA,QAAA,CAAO;AAAA,eACzCh1B,KAAQ;AACXi1B,YAAAA,MAAM7sB,QAAQ,CAAC8sB,QAAa;AACnBA,iBAAAA,IAAIp6B,IAAI,IAAIo6B,IAAIxlB;AAAAA,QAAAA,CAC1B;AAAA,MACL;AAAA,IACJ;AACA,QAAIukB,gBAAgB,cAAc;AACrB,eAAA;AAAA,QAAE,GAAGh4B;AAAAA,QAAQ,GAAGmpB,kBAAkBvb;AAAAA,MAAAA;AAAAA,IAC/C;AACA,QAAIoqB,gBAAgB,WAAW;AAC3B,YAAMra,YAAYub,aAAa5a,IAAIzf,MAAMQ,iBAAiBq3B,eAAepY,IAAI7f,EAAE;AAC/E,UAAIkf,WAAW;AACX3d,eAAOnB,OAAO8e;AAAAA,MAClB;AACA,YAAMpN,UAAUwR,WAAWzD,IAAI7f,IAAIY,iBAAiBq3B,eAAeC,WAAW;AAC9E,UAAIpmB,SAAS;AACTvQ,eAAOvB,KAAK8R;AAAAA,MAChB;AAAA,IACJ;AACOvQ,WAAAA;AAAAA,EAAAA;AAGX,QAAMm5B,iBAAiBtsB,gBAAwC;AAAA,IAC3DJ;AAAAA,IACA0V;AAAAA,IACAxV;AAAAA,IACAsV,SAAS;AAAA,EAAA,CACZ;AAEK,QAAA;AAAA,IACFriB,QAAAA;AAAAA,IACAC;AAAAA,IACAK;AAAAA,IACAupB;AAAAA,IACAtpB;AAAAA,EACAg5B,IAAAA;AAGJ,QAAMt6B,OAAOe,SAAOf;AACpB,QAAMu6B,kBAAkBzB,UAAUz1B,SAAS,GAAG,IAAIy1B,UAAUzQ,MAAM,GAAG,EAAEH,MAAM,GAAG,EAAE,EAAEvR,KAAK,GAAG,IAAI,MAAM3W,OAAOA;AAC7G,QAAM8e,cAAYub,aAAar6B,MAAMQ,iBAAiBq3B,eAAe92B,SAAOnB,EAAE;AAE9E,QAAM85B,cAAc,CAAC5a,eAAa0O,sBAAsB9O,WAAW8b,kBAAkBhN,mBAAmB,IAAIxrB;AAC5G,QAAMy4B,eAAe,CAAC3b,cAAYJ,WAAWgc,mBAAmBH,eAAe,IAAIv4B;AAC7E24B,QAAAA,kBAAkBF,gBAAgBptB,UAAU,YAAY;AAC1D,UAAMiC,OAAO,MAAMjC,QAAQotB,cAAcf,eAAe,CAAE,CAAA;AAC1D,QAAIV,kBAAkB;AAClB,YAAM4B,eAAe5B,iBAAiBtyB,IAAIxB,CAAAA,QAAKA,IAAEnE,MAAM;AAClD85B,WAAAA,KAAK,GAAGD,YAAY;AAAA,IAC7B;AACOtrB,WAAAA;AAAAA,EACPtN,IAAAA;AAEJY,YAAU,MAAM;AACZs0B,iBAAatM,KAAK;AAAA,EAAA,GACnB,CAACA,KAAK,CAAC;AAEDkQ,WAAAA,gBAAgBxrB,QAAgBqJ,iBAA4B;AACjEub,iBAAa6G,SAAS,IAAI;AAC1BC,kCAA8B1rB,QAAMylB,gBAAgB,EAC/C1lB,KAAM+H,CAAe,eAAA;AACZvC,YAAAA,MAAM6hB,0BAA0Btf,UAAU;AAEnC6jB,mBAAAA,YAAYpmB,IAAIqhB,QAAQ;AACrChC,mBAAagH,cAAc5rB,MAAI;AAClBilB,mBAAAA,kBAAkB1f,IAAIyf,cAAc;AACjD,YAAM6G,yBAA0BxiB,mBAAmB,CAAA,GAC9CxV,OAAQmU,CAAQzC,QAAAA,IAAIyf,eAAehd,GAAG,CAAC,KAAkB5J,OAAOC,KAAKkH,IAAIuC,UAAU;AACxF8c,mBAAakH,iBAAiBD,qBAAqB;AACtCE,mBAAAA,oBAAoBxmB,IAAIuC,UAAU;AAE/C,YAAMkkB,kBAAkB3iB,mBAAmB,CAAA,GAAIjS,IAAK4Q,WAAQzC,IAAIyf,eAAehd,KAAG,CAAC,EAAEnU,OAAOmC,OAAO,KAAiBoI,OAAOC,KAAKkH,IAAIuC,UAAU;AAChI,oBAAA,cAAcvC,IAAIuC,UAAU;AAC1CpW,oBAAc,mBAAmBs6B,cAAc;AAAA,IAAA,CAClD;AAAA,EACT;AAEA,QAAMC,cAAcj2B,QAAQvE,SAAOhB,IAAI,KAAKuF,QAAQvE,SAAOnB,EAAE;AAE7D,QAAM47B,0BAA0BA,MAAM;AAClC,UAAM3P,oBAAoB;AAAA,MAAE,GAAG9qB,SAAOqW;AAAAA,IAAAA;AACtC,QAAI8c,aAAagC,SACNrK,QAAAA,kBAAkBqI,aAAagC,QAAQ;AAClDl1B,kBAAc,cAAc6qB,iBAAiB;AAEjC;EAAA;AAGhB,QAAM3U,WAAWkI,YAAYlI,aAAalV,UAAaod,YAAYlI,aAAa;AAChF,QAAMgC,qBAAqBhC,YAAY1W;AAEhC,SAAA,oBAAC,iBAAc,YAAY,MAC9B,8BAAC,QAAO,EAAA,OAAO85B,gBAEX,UACK,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,CAAC95B,mBAAmB,qBAAC,MAAK,EAAA,OAAO24B,aACP,gBAAgBrzB,IAAIiV,oBAAoB,wDAAwD,GAChG,eAAgBhR,CAAMqvB,MAAAA,eAAervB,CAAe,GAC3E,UAAA;AAAA,MAAC,oBAAA,KAAA,EAAI,OAAO,WAAU,UAEtB,WAAA;AAAA,MACC,oBAAA,KAAA,EAAI,OAAO,cAAa,UAEzB,cAAA;AAAA,MACC,oBAAA,KAAA,EAAI,OAAO,kBAAiB,UAE7B,oBAAA;AAAA,IAAA,GACJ;AAAA,IAEC,qBAAA,QAAA,EAAK,YAAU,MACV,UAAUuwB,eAAexW,cACzB,WAAWhe,IACPtF,kBAAkB,WAAW,uBAC7B,kCAAkC,GAEvC24B,UAAAA;AAAAA,MAAgB,gBAAA,iCACZ,wBAAwB,CAAA,CAAA;AAAA,MAE5BA,gBAAgB,gBACbn5B,QACA+4B,WAAW0C,QACV,oBAAA,UAAU,MAAV,EAAe,MAAa;AAAA,MAEhCtC,gBAAgB,aACZ,oBAAA,6BAAA,EACG,MACA,YAAY,CAAC3E,YAAY7b,sBAAoB;AAEzC,YAAI6b,YAAY;AACZsG,0BAAgBtG,YAAY7b,iBAAe;AAC3CygB,yBAAe,qBAAqB;AAAA,QAAA,OACjC;AACHA,yBAAe,SAAS;AAAA,QAC5B;AAAA,MAEJ,GAAA,yBAAyBvB,eACzB,kBACA,gBAAmC,CAAA;AAAA,MAE1CsB,gBAAgB,yBAAyBjF,oCACrC,+BAA8B,EAAA,cACA,oBACA,iBAAmC;AAAA,MAErEiF,gBAAgB,yBAAyBjF,gBACrC,oBAAA,mCAAA,EAAkC,cACA,YAAYnzB,SAAOqW,YACnB,iBAAiBrW,SAAO4X,gBAA8B,CAAA;AAAA,MAE5FwgB,gBAAgB,wBAAwBjF,gBACpC,oBAAA,sBAAA,EAAqB,cACA,YAAYnzB,UACZ,MACA,iBAAiB,OAAO26B,uBAAuB;AAC3ChT,2BAAmBlX,KAAK;AAAA,UACpBmD,MAAM;AAAA,UACNC,SAAS;AAAA,QAAA,CACZ;AACD,cAAM0kB,eAAev4B,QAAM;AAC3Bs2B,oBAAYqE,kBAAkB;AAAA,MAAA,GAEtD;AAAA,MAELvC,gBAAgB,aACZ,oBAAA,uBAAA,EACG,eACA,aACA,QACA,qBACA,kBACA,gBAAmC,CAAA;AAAA,MAE1CA,gBAAgB,oBAAoB/Z,cAChC,oBAAA,uBAAA,EACG,kBACA,kBACA,SACA,qBACA,qBACA,WAAyB,CAAA;AAAA,MAEhC+Z,gBAAgB,gBACZ,oBAAA,gCAAA,EACG,YAAY73B,cAAc,GAC1B,iBACA,gBACA,iBAAiB,CAACoL,aAAaH,WAAWgE,YAAU;AAChD,cAAMxB,UAAU4sB,gBAAgB;AAAA,UAC5B,GAAGrR,kBAAkBvb;AAAAA,UACrB,CAACnC,cAAcF,aAAaH,SAAS,CAAC,GAAGovB,gBAAgBprB,SAAO,IAAI;AAAA,WACrE,IAAI;AACP+Z,0BAAkBvb,UAAUA;AAC5BurB,uBAAesB,SAAS;AAAA,MAC5B,GACA,SACA,SAASjB,iBACT,uBACA,iBACA,oBACA,WAAW5B,WAAWptB,4BACjB,YACG,EAAA,OAAO,WACP,SAAS,MAAMytB,eAAe,YAAY,GACzCL,UAAUptB,UAAAA,KACf,CAAA,GACZ;AAAA,MAECwtB,gBAAgB,aAAc,qBAAA,eAAA,EAC3B,UAAU,YACT5oB,UAAAA;AAAAA,QAAS,SAAA,oBAAC,aAAU,MAAe,CAAA;AAAA,QAEnC/P,mBAAmBm3B,oBAAoBwB,gBAAgB,yBACpD,qBAAC,QAAO,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAM;AACXjF,uBAAa6G,SAAS,KAAK;AAC3B,iBAAO3B,eAAe,SAAS;AAAA,QAEvC,GAAA,UAAA;AAAA,UAAA,oBAAC,eAAa,EAAA;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAEH54B,mBAAmBm3B,oBAAoBwB,gBAAgB,yBACpD,qBAAC,QAAO,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAM;AACXC,yBAAe,qBAAqB;AAAA,QAE5C,GAAA,UAAA;AAAA,UAAA,oBAAC,eAAa,EAAA;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAEH54B,mBAAmBm3B,oBAAoBwB,gBAAgB,kCACnD,QAAO,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAMC,eAAe,SAAS,GAC3C,UAAA;AAAA,UAAA,oBAAC,eAAa,EAAA;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAEH54B,mBAAmB24B,gBAAgB,gBAAgB,qBAAC,QAAO,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAMC,eAAe,SAAS,GAC/F,UAAA;AAAA,UAAA,oBAAC,eAAa,EAAA;AAAA,UAAA;AAAA,QAAA,GAElB;AAAA,QAEC,oBAAA,QAAA,EAAO,SAAS,QACT,SAAS,MAAM;AACE;QAAA,GACf,UAEV,UAAA;AAAA,QAEC54B,mBAAmB24B,gBAAgB,yBAC/B,oBAAA,QAAA,EACG,SAAS,UACT,OAAM,WACN,SAASqC,yBAAwB,UAGrC,OAAA,CAAA;AAAA,QAEHh7B,mBAAmB24B,gBAAgB,yBAC/B,oBAAA,QAAA,EACG,SAAS,UACT,OAAM,WACN,SAAS,MAAM;AACC;QAAA,GACd,UAGN,QAAA;AAAA,QAEH34B,oBAAoB24B,gBAAgB,aAAaA,gBAAgB,iBAC7D,qBAAA,eAAA,EACG,SAAS,UACT,OAAM,WACN,MAAK,UACL,SAAS93B,cACT,UAAUA,gBAAiB83B,gBAAgB,aAAa,CAACoC,aACzD,WAAWpC,gBAAgB,eACrB,oBAAC,UAAQ,CAAA,CAAA,IACTn3B,QAELm3B,UAAAA;AAAAA,UAAAA,gBAAgB,aAAa;AAAA,UAC7BA,gBAAgB,gBAAgB;AAAA,QAAA,GACrC;AAAA,QAEH,CAAC34B,mBAAoB,oBAAA,eAAA,EAClB,SAAQ,UACR,OAAM,WACN,MAAK,UACL,SAASa,cAAa,UAG1B,oBAAA,CAAA;AAAA,MAAA,GAEJ;AAAA,IAAA,GACJ;AAAA,EAAA,GACJ,GAEJ,EAEJ,CAAA;AAEJ;AAEA,SAASi3B,qBAA0DlZ,YAAoCrH,iBAA8E;AAC3K,QAAA;AAAA,IACFX;AAAAA,IACA,GAAGykB;AAAAA,EACHzc,IAAAA;AACJ,QAAM0c,mBAA8C,CAAA;AACpD,MAAI1kB,YAAY;AACZ1J,WAAOC,KAAKyJ,UAAU,EAAE9J,QAASgK,CAAQ,QAAA;AACrCwkB,uBAAiBxkB,GAAG,IAAIykB,sBAAsB3kB,WAAWE,GAAG,GAAwBS,eAAe;AAAA,IAAA,CACtG;AAAA,EACL;AAEO,SAAA;AAAA,IACH,GAAG8jB;AAAAA,IACHzkB,YAAY0kB;AAAAA,EAAAA;AAEpB;AAEA,SAASC,sBAAsBllB,UAA6BkB,iBAAsD;AAC9G,MAAIikB,mBAAmBnlB;AACvB,MAAIkB,mBAAmB,OAAOikB,qBAAqB,YAAYA,iBAAiB9jB,gBAAgB;AACtFA,UAAAA,iBAAiBH,gBAAgBikB,iBAAiB9jB,cAAc;AACtE,QAAIA,kBAAkBpB,kBAAkBoB,eAAerB,QAAQ,GAAG;AAC9DmlB,yBAAmB9jB,eAAerB;AAAAA,IAAAA,OAC/B;AAEH,UAAIqB,gBAAgB;AACGwI,2BAAAA,UAAUxI,eAAerB,UAAUmlB,gBAAgB;AAAA,MAC1E;AAEI,UAAA,CAACllB,kBAAkBklB,gBAAgB,KAAKA,iBAAiBhlB,aAAa,SAASglB,iBAAiB5kB,YAAY;AAC5G,cAAMA,aAAgD,CAAA;AACtD1J,eAAOC,KAAKquB,iBAAiB5kB,UAAU,EAAE9J,QAASgK,CAAQ,QAAA;AACtDF,qBAAWE,GAAG,IAAIykB,sBAAwBC,iBAAiC5kB,WAA0BE,GAAG,GAAeS,eAAe;AAAA,QAAA,CACzI;AACkB,2BAAA;AAAA,UACf,GAAGikB;AAAAA,UACH5kB;AAAAA,QAAAA;AAAAA,MAER;AAAA,IAEJ;AAAA,EACJ;AACO4kB,SAAAA;AAEX;AAEA,MAAM3B,eAAeA,CAACj1B,OAAe5E,iBAA0Bq3B,eAAyB7mB,YAAqB;AACrGT,MAAAA;AACJ,MAAI,CAACnL,OAAO;AACA,YAAA;AAAA,EACZ;AAGI5E,MAAAA,mBAAmBq3B,eAAex0B,SAAS+B,MAAM2N,KAAAA,EAAOoV,YAAAA,CAAa,KAAK,CAACnX,QACnE,SAAA;AAEZ,QAAMirB,WAAWC,gCAAgC92B,KAAK,EAAEijB,MAAM,GAAG;AAC7D4T,MAAAA,SAASx1B,SAAS,MAAM,GAAG;AAC3B8J,YAAQ,yDAAyDnL,KAAK;AAAA,EAC1E;AACOmL,SAAAA;AACX;AAEA,MAAM2S,aAAaA,CAAC9d,OAAe5E,iBAA0Bq3B,eAAyBC,gBAA0B;AACxG,MAAA,CAAC1yB,MAAcpD,QAAAA;AACfuO,MAAAA;AACA/P,MAAAA,mBAAmBq3B,eAAex0B,SAAS+B,MAAM2N,KAAOoV,EAAAA,YAAa,CAAA,EAC7D,SAAA;AACR3nB,MAAAA,mBAAmBs3B,aAAaz0B,SAAS+B,MAAM2N,KAAOoV,EAAAA,YAAa,CAAA,EAC3D,SAAA;AAIL5X,SAAAA;AACX;ACzyBO,MAAM4rB,0BAA0Bt7B,eAAMu7B,cAA2C,CAAA,CAAS;AAC1F,MAAMj8B,0BAA0BU,eAAMu7B,cAA0C,CAAA,CAAS;AA+CzF,MAAMC,2BAA2Bx7B,eAAM4P,KAC1C,SAAA4rB,0BAAAh8B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAkC,QAAA;AAAA,IAAAyT;AAAAA,IAAAsoB;AAAAA,IAAAC;AAAAA,IAAA97B;AAAAA,IAAA8sB;AAAAA,IAAAwL;AAAAA,IAAAyD;AAAAA,IAAA9R;AAAAA,IAAArd;AAAAA,IAAAovB;AAAAA,IAAA35B;AAAAA,EAAAzC,IAAAA;AAc9B,QAAAqe,aAAmBC;AACnB,QAAA+d,WAAiBC;AACjB,QAAAjU,qBAA2BrU;AAC3B,QAAA;AAAA,IAAA0D;AAAAA,MAA4BC,2BAA2B;AAEvD,QAAAgW,CAAAA,eAAAC,gBAAA,IAA0CptB,eAAAc,SAavC;AAEH,QAAAi7B,CAAAA,uBAAAC,wBAAA,IAA0Dh8B,eAAAc,SAWvD;AAEH,QAAAm7B,2BAAAlzB;AAIQ9H,MAAAA;AAAAxB,MAAAA,SAAAm8B,kBAAA;AAEe36B,SAAAI,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAtC;AAAAA,QAAAk5B;AAAAA,QAAAtL;AAAAA,QAAA7sB;AAAAA,QAAAq4B;AAAAA,MAAA92B,IAAAA;AAapBoO,cAAAuS,MAAc,mBAAmBjjB,IAAIk5B,UAAUtL,qBAAqB7sB,gBAAgB;AACpF87B,yBAAmB,mBAAiB;AAAA,QAAA78B;AAAAA,QAAAk5B;AAAAA,MAAAA,CAAA;AAIpB,uBAAA;AAAA,QAAApK,oBACQ9uB;AAAAA,QAAEk5B;AAAAA,QAAAtL;AAAAA,QAAAhtB,iBAAA;AAAA,QAAAG;AAAAA,QAAAo8B,UAAA;AAAA,QAAA/D;AAAAA,MAAAA,CAOzB;AAAA,IAAA;AACJ14B,WAAAm8B;AAAAn8B,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AA3BD,QAAA08B,iBAAuBl7B;AA2BrBI,MAAAA;AAAA5B,MAAAA,SAAAm8B,kBAAA;AAEmBv6B,SAAAQ,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAgK;AAAAA,QAAAmK;AAAAA,QAAA6X;AAAAA,QAAA/S;AAAAA,QAAA6R,qBAAAyP;AAAAA,QAAA7d;AAAAA,QAAA4Z,kBAAAkE;AAAAA,MAAAx6B,IAAAA;AAiBlB4N,cAAAuS,MAAc,iBAAiBnW,aAAamK,UAAU6X,oBAAoB/S,wBAAwB6R,uBAAqBpO,UAAU;AACjIqd,yBAAmB,iBAAe;AAAA,QAAA/vB;AAAAA,QAAAgiB;AAAAA,MAAAA,CAAA;AAKlC,YAAAniB,YAAkBG,eAAeA,YAAWrJ,SAAU,GAAG,IACnDqJ,YAAW8b,UAAc9b,GAAAA,YAAWywB,YAAa,GAAG,CAAC,IAACn7B;AAE5D,YAAAo7B,8BAAoC1wB,eAAeA,YAAWrJ,SAAU,GAAG,IACrEqJ,YAAW8b,UAAW9b,YAAWywB,YAAa,GAAG,IAAC,CAAI,IACtDzwB;AACkB,+BAAA;AAAA,QAAAA,aACP0wB;AAAAA,QAA2BvmB;AAAAA,QAAAtK;AAAAA,QAAAoP;AAAAA,QAAA+S;AAAAA,QAAAlB,qBAKxCA;AAAAA,QAAmBtU,oBACCkG,YAAUlI,YAAmB;AAAA,QAAA8hB,kBACjDA;AAAAA,MAAAA,CACH;AAAA,IAAA;AACJ14B,WAAAm8B;AAAAn8B,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAvCD,QAAA+8B,eAAqBn7B;AAuCnBQ,MAAAA;AAAApC,MAAAA,SAAAm8B,kBAAA;AAEuB/5B,SAAAC,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAA6qB,qBAAA8P;AAAAA,QAAA38B,kBAAA48B;AAAAA,QAAA3vB;AAAAA,QAAAmvB;AAAAA,QAAAS;AAAAA,MAAA76B,IAAAA;AAiBtB2N,cAAAuS,MAAc,qBAAmB;AAAA,QAAA2K,qBAC7BA;AAAAA,QAAmB7sB,kBACnBA;AAAAA,QAAgBiN;AAAAA,QAAAmvB;AAAAA,QAAAS;AAAAA,MAAAA,CAInB;AACDf,yBAAmB,qBAAmB;AAAA,QAAAjP,qBAClCA;AAAAA,QAAmB7sB,kBACnBA;AAAAA,QAAgBiN;AAAAA,QAAAmvB;AAAAA,QAAAS;AAAAA,MAAAA,CAAA;AAKJ,uBAAA;AAAA,QAAAh9B,iBAAA;AAAA,QAAAgtB,qBAEZA;AAAAA,QAAmB7sB,kBACnBA;AAAAA,QAAgBiN;AAAAA,QAAAmvB;AAAAA,MAAAA,CAGnB;AAAA,IAAA;AACJz8B,WAAAm8B;AAAAn8B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAtCD,QAAAm9B,mBAAyB/6B;AA+CU,QAAAC,KAAA45B,qBAAqBO;AAAwB95B,MAAAA;AAAA1C,MAAAA,SAAAwC,cAAAxC,EAAAm9B,CAAAA,MAAAA,oBAAAn9B,EAAA08B,CAAAA,MAAAA,kBAAA18B,EAAA,CAAA,MAAA+8B,gBAAA/8B,UAAAk8B,sBAAAl8B,EAAA,EAAA,MAAAqC,IAAA;AAJ7D,SAAA;AAAA,MAAAq6B;AAAAA,MAAAS;AAAAA,MAAAJ;AAAAA,MAAAd,mBAIgB55B;AAAAA,MAA6C65B;AAAAA,MAAA15B;AAAAA,IAAAA;AAGnExC,WAAAwC;AAAAxC,WAAAm9B;AAAAn9B,WAAA08B;AAAA18B,WAAA+8B;AAAA/8B,YAAAk8B;AAAAl8B,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAKSgD,QAAAA,KAAAgC,QAAQ0oB,aAAa;AAAC/pB,MAAAA;AAAA3D,MAAAA,EAAA0tB,EAAAA,MAAAA,iBAAA1tB,UAAAo8B,YAAAp8B,EAAA,EAAA,MAAAoe,YAAA;AAUfza,SAAAob,CAAA,iBAAA;AAAA,UACL2O,eAAa+O,UAAA;AAAA,YACT3d,gBAAc4O,eAAaxtB,oBAAsBwtB,cAAaR,oBAAA/mB,QAA2B;AACzF,gBAAAsa,MAAYrC,WAAUgf,uBAAwBte,aAAUxf,MAAOwf,aAAUpf,IAAK;AAC9E08B,mBAAS3b,GAAG;AAAA,QAAC;AAAA,MAAA;AAGrBkN,uBAAgBjsB,MAAU;AAAA,IAAA;AAC7B1B,YAAA0tB;AAAA1tB,YAAAo8B;AAAAp8B,YAAAoe;AAAApe,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAg8B,EAAAA,MAAAA,8BAAAh8B,UAAAitB,uBAAAjtB,EAAA,EAAA,MAAA0tB,iBAAA1tB,UAAAy4B,aAAAz4B,EAAA+M,EAAAA,MAAAA,WAAA/M,UAAAk8B,sBAAAl8B,EAAA,EAAA,MAAAoqB,WAAApqB,EAAAG,EAAAA,MAAAA,kBAAAH,EAAA,EAAA,MAAAgD,MAAAhD,UAAA2D,IAAA;AAnBLG,6BAAC,wBACS,EAAA,MAAAd,IACYg5B,kBAAyB,4BAC1B,iBAAI,OACA/O,qBAAmB,GACpCS,eACK3gB,SACO5M,gBACLs4B,WACMyD,qCACR9R,SACI,aAAAzmB,GAQT,CAAA;AAAA3D,YAAAg8B;AAAAh8B,YAAAitB;AAAAjtB,YAAA0tB;AAAA1tB,YAAAy4B;AAAAz4B,YAAA+M;AAAA/M,YAAAk8B;AAAAl8B,YAAAoqB;AAAApqB,YAAAG;AAAAH,YAAAgD;AAAAhD,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAIE+D,QAAAA,KAAAiB,QAAQs3B,qBAAqB;AAEjBt4B,QAAAA,MAAAgB,QAAQs3B,uBAAqBlwB,WAAa;AAC9C,QAAAnI,MAACq4B,CAAAA,wBAAiCA,QAAAA,CAAAA,uBAAqBlwB;AACjD,QAAAlI,MAACo4B,CAAAA,wBAAiCA,QAAAA,CAAAA,uBAAqBlwB;AAEvDjI,QAAAA,MAAAm4B,uBAAqB1jB,sBAA6B;AAAAxU,MAAAA;AAAApE,MAAAA,EAAAs8B,EAAAA,MAAAA,yBAAAt8B,UAAA+M,WAAA/M,EAAA,EAAA,MAAAoe,YAAA;AAC7DrR,UAAAA,WAAWuvB,uBAAqBlO,qBAAoB,MAAA;AAErD7L,cAAAA,MAAc,yBAAyB+Z,uBAAqBlO,kBAAoB;AAChF,YAAA+L,eAAqB/b,WAAUgc,mBAAoBkC,sBAAqBlO,kBAAoB;AACrFrhB,aAAAA,QAAQotB,cAAY,CAAA,CAAI;AAAA,IAACz4B,IAAAA;AAEzB1B,YAAAs8B;AAAAt8B,YAAA+M;AAAA/M,YAAAoe;AAAApe,YAAAoE;AAAAA,EAAAA,OAAA;AAAAA,UAAApE,EAAA,EAAA;AAAA,EAAA;AAAAqE,MAAAA;AAAArE,MAAAA,EAAAg8B,EAAAA,MAAAA,8BAAAh8B,UAAAs8B,yBAAAt8B,EAAA,EAAA,MAAAooB,oBAAA;AACI/jB,UAAAC,CAAAA,SAAA;AAAC,YAAA;AAAA,QAAAhF,IAAAkjB;AAAAA,QAAAjM,UAAA2L;AAAAA,MAAA5d,IAAAA;AAGC,UAAA,CACZg4B,uBAAqB;AAAA;AAAA,MAAA;AAAA,UAAA,CACrBh9B,MAAE;AAAA;AAAA,MAAA;AACP41B,YAAAA,cAAA,CAAsBoH,sBAAqBlwB;AAAc,aAClD4vB,2BAA0BqB,aAAA;AAAA,QAAA39B,MACvB48B,uBAAqBlO;AAAAA,QAAA7X,UAC3BA;AAAAA,QAAQnK,aACK9M;AAAAA,QAAE4Z,oBACKgc,eAAeoH,sBAAqBjhB,yBAA8BihB,CAAAA,GAAAA,sBAAqBjhB,wBAAyB/b,IAAE,IAAAoC;AAAAA,QAAauK,WACxIqwB,sBAAqBrwB;AAAAA,QAAAihB,qBACXoP,sBAAqBpP;AAAAA,MAAAA,CAC7C,EAACrd,MAAAjL,CAAA,MAAA;AAEMoL,gBAAAC,MAAcrL,CAAC;AACfwjB,2BAAkBlX,KAAA;AAAA,UAAAmD,MACR;AAAA,UAAOC,SACJ,iCAAiC1P,EAAC0P,WAAY;AAAA,QAAA,CAC1D;AAAC,eAAA;AAAA,MAAA,CAEL;AAAA,IAAA;AACRtU,YAAAg8B;AAAAh8B,YAAAs8B;AAAAt8B,YAAAooB;AAAApoB,YAAAqE;AAAAA,EAAAA,OAAA;AAAAA,UAAArE,EAAA,EAAA;AAAA,EAAA;AAAAsE,MAAAA;AAAA,MAAAtE,EAAAg8B,EAAAA,MAAAA,8BAAAh8B,UAAAs8B,uBAAAjhB,0BAAArb,EAAAs8B,EAAAA,MAAAA,uBAAAlO,sBAAApuB,EAAA,EAAA,MAAAs8B,uBAAArwB,aAAAjM,EAAAs8B,EAAAA,MAAAA,uBAAApP,uBAAAltB,EAAA,EAAA,MAAAs8B,uBAAAlwB,eAAApM,UAAAooB,oBAAA;AAES9jB,UAAAA,MAAA;AACDg4B,UAAAA,CAAAA,uBAAqBlwB,aAAA;AAAA;AAAA,MAAA;AAC1B,YAAA8M,qBAA2BojB,uBAAqBjhB,wBAAAxY,OAAA6Y,CAAsCA,MAAAA,MAAM4gB,uBAAqBlwB,WAAa;AAAE,aACzH4vB,2BAA0BrgB,eAAA;AAAA,QAAAjc,MACvB48B,uBAAqBlO;AAAAA,QAAAhiB,aACdkwB,uBAAqBlwB;AAAAA,QAAAH,WACvBqwB,uBAAqBrwB;AAAAA,QAAAiN;AAAAA,QAAAgU,qBAEXoP,uBAAqBpP;AAAAA,MAAAA,CAC7C,EAACne,KAAA,MAAA;AAEMwtB,iCAAwB76B,MAAU;AAAA,MAAA,CACrC,EAACmO,MAAA3I,CAAA,QAAA;AACE8I,gBAAAC,MAAcrL,GAAC;AACfwjB,2BAAkBlX,KAAA;AAAA,UAAAmD,MACR;AAAA,UAAOC,SACJ,+BAA+B1P,IAAC0P,WAAY;AAAA,QAAA,CACxD;AAAC,eAAA;AAAA,MAAA,CAEL;AAAA,IAAA;AACRtU,YAAAg8B;AAAA,MAAA,EAAA,IAAAM,uBAAAjhB;AAAA,MAAA,EAAA,IAAAihB,uBAAAlO;AAAA,MAAA,EAAA,IAAAkO,uBAAArwB;AAAA,MAAA,EAAA,IAAAqwB,uBAAApP;AAAA,MAAA,EAAA,IAAAoP,uBAAAlwB;AAAApM,YAAAooB;AAAApoB,YAAAsE;AAAAA,EAAAA,OAAA;AAAAA,UAAAtE,EAAA,EAAA;AAAA,EAAA;AAAAuE,MAAAA;AAAAC,MAAAA;AAAAC,MAAAA;AAAA,MAAAzE,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGYqB,UAAAA,MAAA;AACTg4B,+BAAwB76B,MAAU;AAAA,IAAA;AAE5B8C,UAAAA,MAAA;AACN+3B,+BAAwB76B,MAAU;AAAA,IAAA;AAEvB+C,UAAA,CAAA;AAAEzE,YAAAuE;AAAAvE,YAAAwE;AAAAxE,YAAAyE;AAAAA,EAAAA,OAAA;AAAAF,UAAAvE,EAAA,EAAA;AAAAwE,UAAAxE,EAAA,EAAA;AAAAyE,UAAAzE,EAAA,EAAA;AAAA,EAAA;AAAA0E,MAAAA;AAAA,MAAA1E,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAEKwB,UAAA,CAAA;AAAE1E,YAAA0E;AAAAA,EAAAA,OAAA;AAAAA,UAAA1E,EAAA,EAAA;AAAA,EAAA;AAGd,QAAA2E,MAAA23B,uBAAqB/lB;AAClB,QAAAxR,MAAAu3B,uBAAqBlwB;AAAanH,MAAAA;AAAA,MAAAjF,EAAAyX,EAAAA,MAAAA,mBAAAzX,EAAA,EAAA,MAAAgE,OAAAhE,UAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAA,EAAA,MAAAmE,OAAAnE,EAAAoE,EAAAA,MAAAA,OAAApE,EAAA,EAAA,MAAAqE,OAAArE,UAAAsE,OAAAtE,EAAA2E,EAAAA,MAAAA,OAAA3E,EAAA,EAAA,MAAA+E,OAAA/E,UAAA+D,IAAA;AA3EnDkB,8BAAC,oBACS,EAAA,MAAAlB,IACY,kBAAG,MACH,kBAAAC,KACJ,cAAAC,KACM,oBAAAC,KACX,SAAA,OACW,oBAAAC,KACX,SAAAC,KAOU,mBAAAC,KAwBS,4BAAI,OACtB,UAAAC,KAqBD,SAAA8E,QAEI,aAAA7E,KAGH,UAAAC,KAGK,eAAAC,KACE,iBAAI,OACC,sBAAAC,KACF,oBAAA,MACH+S,iBACP,UAAA9S,KACG,aAAAI,IAAqC,CAAA;AAAA/E,YAAAyX;AAAAzX,YAAAgE;AAAAhE,YAAAiE;AAAAjE,YAAAkE;AAAAlE,YAAAmE;AAAAnE,YAAAoE;AAAApE,YAAAqE;AAAArE,YAAAsE;AAAAtE,YAAA2E;AAAA3E,YAAA+E;AAAA/E,YAAA+D;AAAA/D,YAAAiF;AAAAA,EAAAA,OAAA;AAAAA,UAAAjF,EAAA,EAAA;AAAA,EAAA;AAAAkF,MAAAA;AAAA,MAAAlF,EAAA,EAAA,MAAA0T,YAAA1T,EAAAiF,EAAAA,MAAAA,OAAAjF,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA8D,IAAA;AA7G1DoB,UACW,qBAAA,wBAAA,UAAA,EAAA,OAAAxC,IASC,UAAA;AAAA,MAAA;AAAA,MAERoB;AAAAA,MAsBAmB;AAAAA,IA6EJ,EAAA,CAAA;AAAmCjF,YAAA0T;AAAA1T,YAAAiF;AAAAjF,YAAA0C;AAAA1C,YAAA8D;AAAA9D,YAAAkF;AAAAA,EAAAA,OAAA;AAAAA,UAAAlF,EAAA,EAAA;AAAA,EAAA;AAAAmF,MAAAA;AAAA,MAAAnF,EAAAg8B,EAAAA,MAAAA,8BAAAh8B,UAAAkF,KAAA;AAhHvCC,8BAAA,wBAAA,UAAA,EAAyC62B,OAAAA,4BACrC92B,UAiHJ,IAAA,CAAA;AAAmClF,YAAAg8B;AAAAh8B,YAAAkF;AAAAlF,YAAAmF;AAAAA,EAAAA,OAAA;AAAAA,UAAAnF,EAAA,EAAA;AAAA,EAAA;AAlHnCmF,SAAAA;AAkHmC,GAExC6L,KAAK;AAxRR,SAAA1H,QAAA;AAAA,SAAA;AAAA,IAAAg0B,mBAAA;AAAA,IAAAC,iBAAA;AAAA,IAAAC,mBAAA;AAAA,EAAA;AAAA;AAAA,SAAAp0B,SAAA;AAAA;AC/DG,SAAAq0B,uBAAA19B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAgC,QAAA;AAAA,IAAAP,MAAA84B;AAAAA,IAAAtL;AAAAA,IAAApO;AAAAA,IAAA4e;AAAAA,EAAA39B,IAAAA;AAOnC,QAAAk3B,iBAAuBC;AACvB,QAAAyG,uBAA6Btf;AAC7B,QAAAuf,6BAAmCj+B;AAAgC6B,MAAAA;AAAA,MAAAxB,EAAA29B,CAAAA,MAAAA,wBAAA39B,SAAAktB,qBAAA;AAE1CyQ,SAAAA,qBAAoBE,qBAAsB3Q,mBAAmB;AAACltB,WAAA29B;AAAA39B,WAAAktB;AAAAltB,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAvF,QAAAK,mBAAyBmB;AAA+DI,MAAAA;AAAA5B,MAAAA,EAAAi3B,CAAAA,MAAAA,kBAAAj3B,SAAA8e,cAAA9e,EAAA,CAAA,MAAA49B,4BAAA;AAE9DA,SAAAA,2BAA0B3B,oBAC9C2B,2BAA0B3B,kBAAA;AAAA,MAAA5D,MAClBpB,eAAcoB;AAAAA,MAAAvZ;AAAAA,IAAAA,CAEvB,EAACye,kBACI;AAAAv9B,WAAAi3B;AAAAj3B,WAAA8e;AAAA9e,WAAA49B;AAAA59B,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AALV,QAAA89B,oBAA0Bl8B;AASfQ,QAAAA,KAAA07B,oBAAoB,oBAAoB;AAGjC,QAAAz7B,MAACy7B;AAAiBp7B,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAA89B,qBAAA99B,EAAA,CAAA,MAAA8e,cAAA9e,EAAA,CAAA,MAAA49B,8BAAA59B,EAAA,EAAA,MAAAw4B,YAAAx4B,EAAA,EAAA,MAAAK,oBAAAL,EAAA,EAAA,MAAAktB,uBAAAltB,EAAA,EAAA,MAAA09B,iBAAA1uB,MAAA;AACnB8uB,SAAAA,oBACGF,MAAAA,4BAA0BlB,eAAA;AAAA,MAAAp9B,IAC1Bwf,WAAUxf;AAAAA,MAAAk5B;AAAAA,MAAAtL;AAAAA,MAAA7sB;AAAAA,MAG2Cq4B,kBACvCgF,iBAAe1uB,QAAA,CAAA;AAAA,IAAA,CAAY,IAAAtN;AAEtC1B,WAAA89B;AAAA99B,WAAA8e;AAAA9e,WAAA49B;AAAA59B,YAAAw4B;AAAAx4B,YAAAK;AAAAL,YAAAktB;AAAA,MAAA,EAAA,IAAAwQ,iBAAA1uB;AAAAhP,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACfF,6BAAC,cAAc,CAAA,CAAA;AAAAhD,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA,MAAA3D,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,IAAA;AAZnB,SAAA,oBAAC,cACU,OAAA,WACG,UAAAL,IACD,SAAAK,IASTM,UACJ,GAAA,CAAA;AAAahD,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAoC,EAAAA,MAAAA,MAAApC,UAAA2D,IAAA;AAhBIG,6BAAC,SACT,EAAA,SAAA,MACF,OAAA1B,IACPuB,UAcJ,GAAA,CAAA;AAAU3D,YAAAoC;AAAApC,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAjBV,QAAA+9B,eAAqBj6B;AAiBVC,MAAAA;AAAA/D,MAAAA,UAAA+9B,cAAA;AAEJh6B,mDACU,aAAA,CAAA;AACd/D,YAAA+9B;AAAA/9B,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAFI+D,SAAAA;AAEJ;ACvCA,MAAMi6B,iCAAiCA,MAAA;AAAA,SAAmCp+B,WAAAi8B,uBAAkC;AAAC;ACG7G,SAAAoC,+BAAAl+B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAwC,QAAA;AAAA,IAAA6e;AAAAA,EAAA/e,IAAAA;AAK3C,QAAAqoB,qBAA2BrU;AAC3B,QAAAkjB,iBAAuBC;AACvB,QAAAlK,mBAAyBgR;AACzB,QAAAJ,6BAAmCj+B;AAAgC6B,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAi3B,eAAAoB,QAAAr4B,EAAA,CAAA,MAAA8e,cAAA9e,EAAA,CAAA,MAAA49B,4BAAA;AAE/Cp8B,SAAAo8B,2BAA0B3B,kBAAA;AAAA,MAAA5D,MACpCpB,eAAcoB;AAAAA,MAAAvZ;AAAAA,IAAAA,CAEvB;AAAC,MAAA,CAAA,IAAAmY,eAAAoB;AAAAr4B,WAAA8e;AAAA9e,WAAA49B;AAAA59B,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAHF,QAAAk+B,cAAoB18B;AAGjBI,MAAAA;AAAA,MAAA5B,EAAA8e,CAAAA,MAAAA,cAAA9e,SAAA49B,4BAAA;AAE6Bh8B,SAAAA,MAAA;AAC5Bg8B,kCAA0BlB,eAAA;AAAA,QAAAp9B,IAClBwf,WAAUxf;AAAAA,QAAA4tB,qBAAA,CAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAGrBltB,WAAA8e;AAAA9e,WAAA49B;AAAA59B,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AALD,QAAAm+B,0BAAgCv8B;AAOhC,QAAA,CAAAw8B,iBAAAC,kBAAA,IAA8Ch9B,cAAc;AAAEe,MAAAA;AAAApC,MAAAA,EAAA8e,CAAAA,MAAAA,cAAA9e,SAAAgtB,oBAAAhtB,EAAA,CAAA,MAAAooB,oBAAA;AAErChmB,SAAAA,MAAA;AACrB4qB,wBAAgB0B,iBAAA;AAAA,QAAApvB,IAAyBwf,WAAUxf;AAAAA,MAAAA,CAAA,EAAAyP,KAAA,MAAA;AAC/CsvB,gCAAwB;AACxBjW,2BAAkBlX,KAAA;AAAA,UAAAoD,SACL;AAAA,UAAoBD,MACvB;AAAA,QAAA,CACT;AAAA,MAAA,CAAC;AAAA,IAAA;AAETrU,WAAA8e;AAAA9e,WAAAgtB;AAAAhtB,WAAAooB;AAAApoB,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AARD,QAAA0uB,mBAAyBtsB;AAQvBC,MAAAA;AAAA,MAAArC,EAAA,EAAA,MAAAk+B,YAAAV,mBAAA;AAKOn7B,SAAA67B,YAAWV,qBACR,oBAAC,QACY,6BAAC,cACN,UAAC,oBAAA,cAAA,EAAmB,MAAA,QAAO,CAAA,GAC/B,GAEA,UAAA,qBAAC,YACU,aACE,SAAAt3B,CAAA,UAAA;AACLA,YAAK+P,eAAgB;AACrB/P,YAAKgQ,gBAAiB;AACtBmoB,6BAAuB;AAAA,IAE3B,GAAA,UAAA;AAAA,MAAA,oBAAC,YAAU,EAAA;AAAA,MAAE;AAAA,IAAA,EAEjB,CAAA,EAEJ,CAAA;AAAO,MAAA,EAAA,IAAAH,YAAAV;AAAAx9B,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA1C,MAAAA,UAAAm+B,2BAAAn+B,EAAAk+B,EAAAA,MAAAA,YAAAX,iBAAA;AAIV76B,SAAAw7B,YAAWX,mBACP,oBAAA,YAAA,EACY,SAAAe,CAAA,YAAA;AACmB;IAAA,GAE5B,UAAA,oBAAC,cAAmB,EAAA,MAAA,SAAO,EAC/B,CAAA;AAAat+B,YAAAm+B;AAAA,MAAA,EAAA,IAAAD,YAAAX;AAAAv9B,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAA,MAAAhD,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,IAAA;AA5BrBM,8BAAA,OACKX,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAqBAK;AAAAA,IAOL,EAAA,CAAA;AAAM1C,YAAAqC;AAAArC,YAAA0C;AAAA1C,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAAG,MAAAA;AAAA,MAAA9D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAKQS,SAAAA,MAAM06B,wBAAwB;AACjCv6B,yCAAE,UAAuB,0BAAA,CAAA;AAAG9D,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAH,SAAA3D,EAAA,EAAA;AAAA8D,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAAA+D,MAAAA;AAAA,MAAA/D,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAC7Ba,SAAE,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAA;AAAA,MAAW,oBAAA,OAAG,UACH,sBAAA,CAAA;AAAA,MACU;AAAA,IAAA,EAAA,CAAA;AAAG/D,YAAA+D;AAAAA,EAAAA,OAAA;AAAAA,SAAA/D,EAAA,EAAA;AAAA,EAAA;AAAAgE,MAAAA;AAAA,MAAAhE,EAAA0uB,EAAAA,MAAAA,oBAAA1uB,UAAAo+B,iBAAA;AAPnC,UAAA,oBAAA,oBACSA,EAAAA,MAAAA,iBACI1P,UAAe,kBACf,UAAA/qB,IACH,OAAAG,IACD,MAAAC,GAE6B,CAAA;AAAA/D,YAAA0uB;AAAA1uB,YAAAo+B;AAAAp+B,YAAAgE;AAAAA,EAAAA,OAAA;AAAAA,UAAAhE,EAAA,EAAA;AAAA,EAAA;AAAAiE,MAAAA;AAAA,MAAAjE,EAAAgE,EAAAA,MAAAA,OAAAhE,UAAAgD,IAAA;AAxCpCiB,UAEHjB,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MA+BAgB;AAAAA,IAOuC,EAAA,CAAA;AACxChE,YAAAgE;AAAAhE,YAAAgD;AAAAhD,YAAAiE;AAAAA,EAAAA,OAAA;AAAAA,UAAAjE,EAAA,EAAA;AAAA,EAAA;AAzCIiE,SAAAA;AAyCJ;AChFA,SAAAs6B,2BAAAx+B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAoC,QAAA;AAAA,IAAAmM;AAAAA,IAAAoyB;AAAAA,IAAAjoB;AAAAA,IAAA2W;AAAAA,IAAApO;AAAAA,IAAA4e;AAAAA,EAAA39B,IAAAA;AAkBvC,QAAA69B,6BAAmCj+B;AAOZ6B,QAAAA,KAAAg9B,UAAU,iCAAiC;AAAQ58B,MAAAA;AAAA5B,MAAAA,EAAA8e,CAAAA,MAAAA,cAAA9e,SAAA49B,8BAAA59B,EAAA,CAAA,MAAAktB,uBAAAltB,EAAAuW,CAAAA,MAAAA,YAAAvW,EAAAoM,CAAAA,MAAAA,eAAApM,EAAA,CAAA,MAAA09B,gBAAA1uB,MAAA;AACrDpN,SAAAA,MAAA;AACLg8B,iCAA0Bb,aAAA;AAAA,QAAA3wB;AAAAA,QAAAmK;AAAAA,QAAA6X,oBAGFtP,WAAUxf;AAAAA,QAAA4tB;AAAAA,QAAApO;AAAAA,QAAA4Z,kBAGZgF,gBAAe1uB,QAAA,CAAA;AAAA,MAAA,CACpC;AAAA,IAAA;AACJhP,WAAA8e;AAAA9e,WAAA49B;AAAA59B,WAAAktB;AAAAltB,WAAAuW;AAAAvW,WAAAoM;AAAA,MAAA,CAAA,IAAAsxB,gBAAA1uB;AAAAhP,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BAEA,cAAmB,EAAA,MAAA,QAAU,CAAA;AAAAlD,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AAhBtCS,SAAC,oBAAA,SAAA,EACY,eACF,OAAA,QACP,UAAA,oBAAC,YACc,EAAA,WAAAb,IACF,SAAAI,IAUH,MAAA,SACNQ,cACJ,EACJ,CAAA;AAAUpC,WAAAwB;AAAAxB,WAAA4B;AAAA5B,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AAlBVqC,SAAAA;AAkBU;ACxCX,SAAAo8B,2BAAA1+B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAoC,QAAA;AAAA,IAAAitB;AAAAA,IAAApO;AAAAA,IAAA4e;AAAAA,EAAA39B,IAAAA;AAYvC,QAAAk3B,iBAAuBC;AACvB,QAAA0G,6BAAmCj+B;AACnC,QAAAm+B,oBAA0BF,2BAA0B3B,oBAC9C2B,2BAA0B3B,kBAAA;AAAA,IAAA5D,MAClBpB,eAAcoB;AAAAA,IAAAvZ;AAAAA,EAAAA,CAEvB,EAACye,kBACI;AAKK/7B,QAAAA,KAAAs8B,oBAAoB,qBAAqB;AAAiDl8B,MAAAA;AAAA,MAAA5B,EAAA8e,CAAAA,MAAAA,cAAA9e,SAAA49B,8BAAA59B,EAAA,CAAA,MAAAktB,uBAAAltB,EAAA09B,CAAAA,MAAAA,gBAAA1uB,MAAA;AAIpFpN,SAAAA,MAAA;AACLg8B,iCAA0Bb,aAAA;AAAA,QAAA3O,oBACFtP,WAAUxf;AAAAA,QAAA4tB;AAAAA,QAAA7R,wBAENqjB,0BAA0B5f,UAAU;AAAA,QAACA;AAAAA,QAAA4Z,kBAE3CgF,gBAAe1uB;AAAAA,MAAAA,CACpC;AAAA,IAAA;AACJhP,WAAA8e;AAAA9e,WAAA49B;AAAA59B,WAAAktB;AAAA,MAAA,CAAA,IAAAwQ,gBAAA1uB;AAAAhP,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;6BACA,SAAe,EAAA,OAAA,UAAY,CAAA;AAAAlD,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,SAAA4B,IAAA;AAZhCS,oCACe,EAAA,WAAA,wLAEF,SAAAT,IASTQ,UACJ,GAAA,CAAA;AAAMpC,WAAA4B;AAAA5B,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAAqC,IAAA;AAhBVK,6BAAC,SACY,EAAA,SAAA,MACF,OAAAlB,IACPa,UAcJ,GAAA,CAAA;AAAUrC,WAAAwB;AAAAxB,WAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAjBV0C,SAAAA;AAiBU;ACzCX,SAAAi8B,sBAAA;AAAA3+B,QAAAA,IAAAC,EAAA,CAAA;AACH,QAAA29B,6BAAmCj+B;AAAgCI,MAAAA;AAAAC,MAAAA,SAAA49B,4BAAA;AAI9C79B,SAAAA,MAAM69B,2BAA0BT,iBAAA;AAAA,MAAAjQ,qBAAA,CAAA;AAAA,MAAAuP,UAAA;AAAA,MAAAS,aAGxB;AAAA,IAAA,CAChB;AAACl9B,WAAA49B;AAAA59B,WAAAD;AAAAA,EAAAA,OAAA;AAAAA,SAAAC,EAAA,CAAA;AAAA,EAAA;AAAAwB,MAAAA;AAAA,MAAAxB,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACN1B,6BAAC,SAAS,CAAA,CAAA;AAAAxB,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAA5B,MAAAA,SAAAD,IAAA;AAGZ,SAAA,oBAAA,OAXiB,EAAA,WAAA,uDACnB,UAAA,qBAAC,QAAkB,EAAA,WAAA,aACF,SAAA,YACA,SAAAA,IAKbyB,UAAAA;AAAAA,MAAAA;AAAAA,MAAU;AAAA,IAAA,EAEd,CAAA,EACJ,CAAA;AAAMxB,WAAAD;AAAAC,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAXC4B,SAAAA;AAWD;ACPH,SAAAg9B,4BAAA7+B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAqC,QAAA;AAAA,IAAAitB;AAAAA,IAAApO;AAAAA,IAAA4e;AAAAA,EAAA39B,IAAAA;AAOxC,QAAAk3B,iBAAuBC;AACvB,QAAA0G,6BAAmCj+B;AACnC,QAAAqtB,mBAAyBgR;AACzB,QAAA5V,qBAA2BrU;AAAwBvS,MAAAA;AAAAxB,MAAAA,EAAAi3B,CAAAA,MAAAA,kBAAAj3B,SAAA8e,cAAA9e,EAAA,CAAA,MAAA49B,4BAAA;AAEzBA,SAAAA,2BAA0B3B,oBAC9C2B,2BAA0B3B,kBAAA;AAAA,MAAA5D,MAClBpB,eAAcoB;AAAAA,MAAAvZ;AAAAA,IAAAA,CAEvB,EAACye,kBACI;AAAAv9B,WAAAi3B;AAAAj3B,WAAA8e;AAAA9e,WAAA49B;AAAA59B,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AALV,QAAA89B,oBAA0Bt8B;AAO1B,MAAAq9B,0BAAA;AACI,MAAA,CAAC7tB,MAAM8tB,gBAAgBpB,gBAAeqB,YAAa,GAAGD,gBAAgBhgB,WAAU8K,aAAc,CAAC,KAAC,CAC/F5Y,MAAM8tB,gBAAgBpB,gBAAesB,MAAO,GAAGF,gBAAgBhgB,WAAU+K,WAAY,CAAC,GAAC;AAIzE,UAAAjoB,MAAA87B,gBAAesB,UAAWtB,gBAAeqB,eAAgB,iCAAiC;AAA+B38B,QAAAA;AAAApC,QAAAA,EAAA8e,CAAAA,MAAAA,cAAA9e,EAAAgtB,CAAAA,MAAAA,oBAAAhtB,EAAAktB,CAAAA,MAAAA,uBAAAltB,SAAAooB,sBAAApoB,EAAA,CAAA,MAAA09B,gBAAAqB,gBAAA/+B,EAAA,CAAA,MAAA09B,gBAAAsB,QAAA;AAKnH58B,YAAAA,MAAM4qB,kBAAgBgM,eAAA;AAAA,QAAA15B,IAEnBwf,WAAUxf;AAAAA,QAAA4tB;AAAAA,QAAA+L,gBAEE7Y,UAAUtB,YAAiC;AAAA,UAAA8K,eAEpC8T,gBAAeqB,gBAAqB;AAAA,UAAAlV,aACtC6T,gBAAesB,UAAA;AAAA,QAAA,CAC/B;AAAA,MAAA,CAAC,EAAAjwB,KAAA,MAAA;AAENqZ,2BAAkBlX,KAAA;AAAA,UAAAmD,MACR;AAAA,UAASC,SACN;AAAA,QAAA,CACZ;AAAA,MAAA,CAAC;AACJtU,aAAA8e;AAAA9e,aAAAgtB;AAAAhtB,aAAAktB;AAAAltB,aAAAooB;AAAA,QAAA,CAAA,IAAAsV,gBAAAqB;AAAA,QAAA,CAAA,IAAArB,gBAAAsB;AAAAh/B,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,YAAApC,EAAA,EAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACNb,+BAAC,UAAU,CAAA,CAAA;AAAArC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,UAAAoC,KAAA;AAnBf,WAAA,oBAAC,QACU,EAAA,OAAA,WACD,MAAA,SACG,SAAA,YACA,SAAAA,KAeTC,UACJ,GAAA,CAAA;AAASrC,cAAAoC;AAAApC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAgD,QAAAA;AAAA,QAAAhD,EAAA4B,EAAAA,MAAAA,OAAA5B,UAAA0C,IAAA;AAvBbM,+BAAC,SACY,EAAA,SAAA,MACF,OAAApB,KACPc,UAqBJ,GAAA,CAAA;AAAU1C,cAAA4B;AAAA5B,cAAA0C;AAAA1C,cAAAgD;AAAAA,IAAAA,OAAA;AAAAA,WAAAhD,EAAA,EAAA;AAAA,IAAA;AAAA2D,QAAAA;AAAA,QAAA3D,EAAA,EAAA,MAAA8e,WAAA8K,iBAAA5pB,EAAA8e,EAAAA,MAAAA,WAAA+K,eAAA7pB,UAAA09B,iBAAA;AAET/5B,YAACmb,WAAU8K,iBAAkB9K,WAAU+K,gBAAiB,oBAAC,WAC/C,OAAA,oCACP,UAAC,oBAAA,QAAA,EACU,OAAA,WACD,MAAA,SACG,SAAA,QACA,SAAA,MAAA;AACL6T,wBAAeuB,cAAA;AAAA,YACXngB,YAAU8K,eAAA;AACKsV,0BAAAA,kBAAmBpgB,YAAU8K,aAAA;AAAA,QAAA;AAAA,YAC5C9K,YAAU+K,aAAA;AACKsV,0BAAAA,YAAargB,YAAU+K,WAAA;AAAA,QAAA;AAAA,MAAA,GAE9C,UAAA,oBAAC,UAAQ,CAAA,CAAA,EAAA,CACb,EACJ,CAAA;AAAU,QAAA,EAAA,IAAA/K,WAAA8K;AAAA,QAAA,EAAA,IAAA9K,WAAA+K;AAAA7pB,cAAA09B;AAAA19B,cAAA2D;AAAAA,IAAAA,OAAA;AAAAA,WAAA3D,EAAA,EAAA;AAAA,IAAA;AAAA8D,QAAAA;AAAA,QAAA9D,EAAAgD,EAAAA,MAAAA,MAAAhD,UAAA2D,IAAA;AA1CYG,WACtBd,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QA0BCW;AAAAA,MAeS,EAAA,CAAA;AACX3D,cAAAgD;AAAAhD,cAAA2D;AAAA3D,cAAA8D;AAAAA,IAAAA,OAAA;AAAAA,WAAA9D,EAAA,EAAA;AAAA,IAAA;AA3CuB6+B,8BAAAA;AAAAA,EAAH;AA+CtB,QAAAj9B,KAAAk8B,qBAAqBe;AAAuBz8B,MAAAA;AAAApC,MAAAA,UAAA4B,IAAA;AAD1CQ,yCACFR,UAA4C,GAAA,CAAA;AAC9C5B,YAAA4B;AAAA5B,YAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,EAAA;AAAA,EAAA;AAFIoC,SAAAA;AAEJ;AAIP,SAAS08B,gBAAgBM,GAA2B;AAChD,MAAIA,KAAKhyB,OAAOC,KAAK+xB,CAAC,EAAEj5B,WAAW,EACxBi5B,QAAAA;AACX,SAAOA,KAAK;AAChB;ACnFO,SAAAC,kBAAAt/B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAA2B,QAAA;AAAA,IAAA6C;AAAAA,IAAAw8B;AAAAA,EAAAv/B,IAAAA;AAGqC,MAAA,CAE9Du/B,QAAOlhB,WAAA+Y,oBAAA;AAAA,UACFztB,MAAM,yCAAyC;AAAA,EAAC;AAE1D,QAAAutB,iBAAuBC;AAEvB,QAAA0G,6BAAmCj+B;AAAgC6B,MAAAA;AAAA,MAAAxB,EAAAi3B,CAAAA,MAAAA,kBAAAj3B,SAAA49B,4BAAA;AACtCA,SAAAA,2BAA0B3B,oBACjD2B,2BAA0B3B,kBAAA;AAAA,MAAA5D,MAClBpB,eAAcoB;AAAAA,IAAAA,CACvB,EAACiF,oBACI;AAAAt9B,WAAAi3B;AAAAj3B,WAAA49B;AAAA59B,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAJV,QAAAu/B,uBAA6B/9B;AAIlBI,MAAAA;AAAA,MAAA5B,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAGUtB,SAAA4D,IAAI,0BAA0B;AAACxF,WAAA4B;AAAAA,EAAAA,OAAA;AAAAA,SAAA5B,EAAA,CAAA;AAAA,EAAA;AAAAoC,MAAAA;AAAApC,MAAAA,EAAAu/B,CAAAA,MAAAA,wBAAAv/B,SAAA49B,8BAAA59B,EAAA,CAAA,MAAA8C,OAAA;AACjCV,SAAAw7B,8BAA8B2B,uBAC3B3B,MAAAA,2BAA0BT,iBAAA;AAAA,MAAA7vB,eACfxK,QAAK;AAAA,QAAAA;AAAAA,MAAApB,IAAAA;AAAAA,MAAwBwrB,qBAAA,CAAA;AAAA,MAAAuP,UAAA;AAAA,MAAAS,aAG/B;AAAA,IAAA,CAChB,IAACx7B;AACS1B,WAAAu/B;AAAAv/B,WAAA49B;AAAA59B,WAAA8C;AAAA9C,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAIbb,SAAC,oBAAA,SAAA,EAAc,OAAA,WAAgB,MAAA,QAAU,CAAA;AAAArC,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACzC,SAAA,oBAAC,YAAiB,EAAA,OAAA,WACG,SAAA,WACE,WAAA,eAAoC,UAAAyI,qBAAAA,YAAAA,EAAe,CAAA;AAAa3L,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,UAAAu/B,sBAAA;AAEtFv8B,SAACu8B,CAAAA,wBACE,oBAAC,YAAoB,EAAA,SAAA,WAAW,UACjB,mDAAA,CAAA;AAAav/B,YAAAu/B;AAAAv/B,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AAAA2D,MAAAA;AAAA3D,MAAAA,UAAAgD,IAAA;qCARtB,EAAA,WAAA,qEACVX,UAAAA;AAAAA,MAAAA;AAAAA,MACAK;AAAAA,MAICM;AAAAA,IAIL,EAAA,CAAA;AAAMhD,YAAAgD;AAAAhD,YAAA2D;AAAAA,EAAAA,OAAA;AAAAA,SAAA3D,EAAA,EAAA;AAAA,EAAA;AAAA8D,MAAAA;AAAA,MAAA9D,EAAAoC,EAAAA,MAAAA,MAAApC,UAAA2D,IAAA;AArBVG,6BAAC,MAAgB,EAAA,WAAAlC,IACF,SAAAQ,IASXuB,UAaJ,GAAA,CAAA;AAAO3D,YAAAoC;AAAApC,YAAA2D;AAAA3D,YAAA8D;AAAAA,EAAAA,OAAA;AAAAA,SAAA9D,EAAA,EAAA;AAAA,EAAA;AAvBP8D,SAAAA;AAuBO;AC4BR,SAAA07B,0BAAAz/B,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AACN,QAAA;AAAA,IAAA+7B;AAAAA,IAAAC;AAAAA,IAAA97B;AAAAA,IAAAs4B;AAAAA,IAAAyD;AAAAA,IAAA9R;AAAAA,IAAA6C;AAAAA,IAAAlgB;AAAAA,IAAAovB;AAAAA,IAAA35B;AAAAA,EAAAzC,IAAAA;AAW4CyB,MAAAA;AAAA,MAAAxB,EAAAg8B,CAAAA,MAAAA,8BAAAh8B,SAAAitB,uBAAAjtB,EAAA,CAAA,MAAAwC,cAAAxC,SAAAi8B,qBAAAj8B,EAAAy4B,CAAAA,MAAAA,aAAAz4B,SAAA+M,WAAA/M,EAAA,CAAA,MAAAk8B,sBAAAl8B,EAAAoqB,CAAAA,MAAAA,WAAApqB,EAAA,CAAA,MAAAm8B,oBAAAn8B,SAAAG,gBAAA;AAK3B,SAAA;AAAA,MAAAs/B,WAAA1D;AAAAA,MAAArd,OAAA;AAAA,QAAAsd;AAAAA,QAAAC;AAAAA,QAAAhP;AAAAA,QAAA9sB;AAAAA,QAAAs4B;AAAAA,QAAAyD;AAAAA,QAAA9R;AAAAA,QAAArd;AAAAA,QAAAovB;AAAAA,QAAA35B;AAAAA,MAAA;AAAA,IAAA;AAcTxC,WAAAg8B;AAAAh8B,WAAAitB;AAAAjtB,WAAAwC;AAAAxC,WAAAi8B;AAAAj8B,WAAAy4B;AAAAz4B,WAAA+M;AAAA/M,WAAAk8B;AAAAl8B,WAAAoqB;AAAApqB,WAAAm8B;AAAAn8B,WAAAG;AAAAH,YAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,EAAA;AAAA,EAAA;AAAA4B,MAAAA;AAAAQ,MAAAA;AAAA,MAAApC,EAAA,EAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACS,SAAA;AAAA,MAAAw8B,uCACc,qBAAqB,EAAA;AAAA,MAAAC,6CACf,aAAa,EAAA;AAAA,MAAAC,mBAAA3B;AAAAA,MAAA4B,iBAAAR;AAAAA,IAAAA;AAK3B,SAAA;AAAA,MAAAS,wBAAAlB;AAAAA,MAAAgB,mBAAAnC;AAAAA,MAAAsC,cAAAxB;AAAAA,MAAAyB,oBAAAvB;AAAAA,IAAAA;AAKfz+B,YAAA4B;AAAA5B,YAAAoC;AAAAA,EAAAA,OAAA;AAAAR,SAAA5B,EAAA,EAAA;AAAAoC,SAAApC,EAAA,EAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,UAAAg8B,2BAAAzG,WAAAv1B,UAAAwB,IAAA;AA9BE,SAAA;AAAA,MAAAwV,KACE;AAAA,MAAmBue,SACfyG,2BAA0BzG;AAAAA,MAAA0K,UACzBz+B;AAAAA,MAcT0+B,UACSt+B;AAAAA,MAMTu+B,gBACe/9B;AAAAA,IAAAA;AAMnB,MAAA,EAAA,IAAA45B,2BAAAzG;AAAAv1B,YAAAwB;AAAAxB,YAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,EAAA;AAAA,EAAA;AA/BMqC,SAAAA;AA+BN;AAGE,SAAA+9B,YAAArgC,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAEH,QAAAme,aAAmBC;AACdD,MAAAA,CAAAA,WAAU+Y,oBAAA;AAAA,UACLztB,MAAM,yCAAyC;AAAA,EAAC;AAE1D,QAAAutB,iBAAuBC;AAEvB,QAAA0G,6BAAmCj+B;AAAgC6B,MAAAA;AAAA,MAAAxB,EAAAi3B,CAAAA,MAAAA,kBAAAj3B,SAAA49B,4BAAA;AACtCA,SAAAA,2BAA0B3B,oBACjD2B,2BAA0B3B,kBAAA;AAAA,MAAA5D,MAClBpB,eAAcoB;AAAAA,IAAAA,CACvB,EAACiF,oBACI;AAAAt9B,WAAAi3B;AAAAj3B,WAAA49B;AAAA59B,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAJV,QAAAu/B,uBAA6B/9B;AAMzB,MAAA,CAAC4c,WAAUwZ,gBAAiBxZ,WAAUO,eAAA,CAAA,GAAkBxY,SAAY,GAAA;AAAA,WAAA;AAAA,EAAA;AAAAvE,MAAAA;AAAAQ,MAAAA;AAAA,MAAApC,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AAOhEtB,6BAAC,YAAoB,EAAA,SAAA,aAAwB,WAAA,aAAa,UAAoB,uBAAA,CAAA;6BAC7E,cAAW,UAGZ,kIAAA,CAAA;AAAa5B,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAR,SAAA5B,EAAA,CAAA;AAAAoC,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAA,MAAArC,EAAAu/B,CAAAA,MAAAA,wBAAAv/B,SAAA49B,4BAAA;AACZ2B,SAAAA,6CAAyB,QACb,EAAA,SAAA3B,8BAA8B2B,uBAC3B3B,MAAAA,2BAA0BT,iBAAA;AAAA,MAAAjQ,qBAAA,CAAA;AAAA,MAAAuP,UAAA;AAAA,MAAAS,aAGjB;AAAA,IAAA,CAChB,IAACx7B,QAEN,UAAA;AAAA,MAAA,oBAAC,SAAS,EAAA;AAAA,MAAA;AAAA,IACd,EAAA,CAAA;AAAS1B,WAAAu/B;AAAAv/B,WAAA49B;AAAA59B,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAA,CAAA,MAAAiD,OAAAC,IAAA,2BAAA,GAAA;AACTR,SAAC,oBAAA,YAAA,EAAkB,OAAA,aAAa,UAEhC,oDAAA,CAAA;AAAa1C,WAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,CAAA;AAAA,EAAA;AAAAgD,MAAAA;AAAAhD,MAAAA,SAAAqC,IAAA;AAnBjB,SAAA,qBAAC,OACc,EAAA,WAAA,2EACXT,UAAAA;AAAAA,MAAAA;AAAAA,MACAQ;AAAAA,MAICC;AAAAA,MAUDK;AAAAA,IAGJ,EAAA,CAAA;AAAQ1C,WAAAqC;AAAArC,YAAAgD;AAAAA,EAAAA,OAAA;AAAAA,SAAAhD,EAAA,EAAA;AAAA,EAAA;AApBRgD,SAAAA;AAoBQ;ACrJT,MAAMq9B,mBAAmBA,CAACC,iBACAC,oBACAC,qBAC5B;AAEKC,QAAAA,iBAAiBA,CAAClN,OAA2B;AAC/CrE,2BAAuBqE,GAAEzc,UAAwB;AAC/CgT,IAAAA,GAAAA,gBAAgB9c,QAAQyzB,cAAc;AAAA,EAAA;AAEtCC,QAAAA,oBAAoBH,sBAAsB;AAChDG,oBAAkB1zB,QAAQyzB,cAAc;AAEhCle,UAAAA,MAAM,kCAAkC+d,eAAe;AACvD/d,UAAAA,MAAM,qCAAqCme,iBAAiB;AACpE,QAAM7nB,SAAS8nB,oBAAoBL,iBAAiBI,mBAAmB,CAAA,GAAIF,gBAAgB;AACnFje,UAAAA,MAAM,8BAA8B1J,MAAM;AAC3CA,SAAAA;AACX;ACzBO,SAAA+nB,uBAAA7gC,IAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAgC,QAAA;AAAA,IAAAP,MAAAmhC;AAAAA,EAAA9gC,IAAAA;AAGnC,QAAAqe,aAAmBC;AACnB3e,QAAAA,OAAaohC,eAAeD,QAAQ;AAAEr/B,MAAAA;AAAA,MAAAxB,EAAAoe,CAAAA,MAAAA,cAAApe,SAAA6gC,UAAA;AACVziB,SAAAA,WAAU2iB,uBAAwBF,QAAQ;AAAC7gC,WAAAoe;AAAApe,WAAA6gC;AAAA7gC,WAAAwB;AAAAA,EAAAA,OAAA;AAAAA,SAAAxB,EAAA,CAAA;AAAA,EAAA;AAAvE,QAAAktB,sBAA4B1rB;AAC5B,QAAAN,mBAAyBvB;AAEH,QAAAiC,KAA0B,6BAAGlC;AAAI0C,MAAAA;AAAApC,MAAAA,SAAA4B,IAAA;AAAnD,SAAA,oBAAC,WAAiB,EAAA,OAAAA,GAAoC,CAAA;AAAA5B,WAAA4B;AAAA5B,WAAAoC;AAAAA,EAAAA,OAAA;AAAAA,SAAApC,EAAA,CAAA;AAAA,EAAA;AAAAqC,MAAAA;AAAArC,MAAAA,EAAAkB,CAAAA,MAAAA,oBAAAlB,SAAAktB,uBAAAltB,EAAA,CAAA,MAAAN,MAAA;6BACrD,UAAkB,WAAA,QAAiB,SAAA,YACtB,MAAA,SACG,SAAA,MAAA;AACLwB,uBAAgBi8B,iBAAA;AAAA,QAAA7vB,eAAA;AAAA,UAAA5N;AAAAA,UAAAD,MACiB0d,UAAUzd,IAAI;AAAA,QAAC;AAAA,QAAAwtB;AAAAA,QAAAuP,UAAA;AAAA,QAAAS,aAG/B;AAAA,MAAA,CAChB;AAAA,IAAA,GACF,UAEX,SAAA,CAAA;AAASl9B,WAAAkB;AAAAlB,WAAAktB;AAAAltB,WAAAN;AAAAM,WAAAqC;AAAAA,EAAAA,OAAA;AAAAA,SAAArC,EAAA,CAAA;AAAA,EAAA;AAAA0C,MAAAA;AAAA,MAAA1C,EAAAoC,CAAAA,MAAAA,MAAApC,UAAAqC,IAAA;AACP,SAAA,qBAAA,OAdiB,EAAA,WAAA,kCACnBD,UAAAA;AAAAA,MAAAA;AAAAA,MACAC;AAAAA,IAYJ,EAAA,CAAA;AAAMrC,WAAAoC;AAAApC,YAAAqC;AAAArC,YAAA0C;AAAAA,EAAAA,OAAA;AAAAA,SAAA1C,EAAA,EAAA;AAAA,EAAA;AAdC0C,SAAAA;AAcD;AAQV,SAASo+B,eAAephC,MAAsB;AACpCshC,QAAAA,WAAWthC,KAAKqoB,MAAM,GAAG;AACxBiZ,SAAAA,SAASA,SAAS76B,SAAS,CAAC;AACvC;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.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/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/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 React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n Autocomplete,\n AutocompleteItem,\n BooleanSwitchWithLabel,\n Chip,\n ClearIcon,\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\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\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 DatabaseField = collectionEditor.components?.DatabaseField ?? DefaultDatabaseField;\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 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 <DatabaseField 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 \", isSubcollection ? \"\" : \"sm:col-span-8\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\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 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 </div>}\n\n <div className={\"col-span-12\"}>\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 <ClearIcon 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 rows={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 <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 else if (v === \"true\")\n setFieldValue(\"customId\", true);\n else if (v === \"false\")\n setFieldValue(\"customId\", false);\n else if (v === \"optional\")\n setFieldValue(\"customId\", \"optional\");\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\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\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 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 </div>\n </ExpandablePanel>\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={values.icon}\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 AutoAwesomeIcon,\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={\"small\"}/> : <AutoAwesomeIcon/>}\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 includeAddButton={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 && <AutoAwesomeIcon 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-2\">\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 DebouncedTextField,\n ExpandablePanel,\n FileUploadIcon,\n MultiSelect,\n MultiSelectItem,\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\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\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 if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\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 <FileUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\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={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>\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 | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.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 PropertyConfigBadge,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n FunctionsIcon,\n Paper,\n RemoveCircleIcon,\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 \"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=\"body1\"\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\" : \"subtitle1\"}\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 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\n </div>}\n <RemoveCircleIcon 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=\"body1\"\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 ErrorBoundary,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutoAwesomeIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport { DragDropContext, Draggable, DraggableProvided, Droppable } from \"@hello-pangea/dnd\";\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 onDragEnd = (result: any) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n const startIndex = result.source.index;\n const endIndex = result.destination.index;\n\n const newPropertiesOrder = Array.from(propertiesOrder);\n const [removed] = newPropertiesOrder.splice(startIndex, 1);\n newPropertiesOrder.splice(endIndex, 0, removed);\n if (onPropertyMove)\n onPropertyMove(newPropertiesOrder, namespace);\n }\n\n return (\n <>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId={`droppable_${namespace}`}>\n {(droppableProvided, droppableSnapshot) => (\n <div\n {...droppableProvided.droppableProps}\n ref={droppableProvided.innerRef}\n className={className}>\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 return (\n <Draggable\n key={`array_field_${namespace}_${propertyKey}}`}\n draggableId={`array_field_${namespace}_${propertyKey}}`}\n index={index}>\n {(provided, snapshot) => {\n return (\n <ErrorBoundary>\n <PropertyTreeEntry\n propertyKey={propertyKey as string}\n propertyOrBuilder={property}\n additionalField={additionalField}\n provided={provided}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={snapshot.isDragging ? undefined : onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n </ErrorBoundary>\n );\n }}\n </Draggable>);\n }).filter(Boolean)}\n\n {droppableProvided.placeholder}\n\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n </>\n );\n },\n (prevProps, nextProps) => {\n\n const isSelected = nextProps.selectedPropertyKey?.startsWith(nextProps.namespace ?? \"\");\n const wasSelected = prevProps.selectedPropertyKey?.startsWith(prevProps.namespace ?? \"\");\n if (isSelected || wasSelected)\n return false;\n\n return equal(prevProps.properties, nextProps.properties) &&\n prevProps.propertiesOrder === nextProps.propertiesOrder &&\n equal(prevProps.additionalFields, nextProps.additionalFields) &&\n equal(prevProps.errors, nextProps.errors) &&\n equal(prevProps.onPropertyClick, nextProps.onPropertyClick) &&\n // equal(prevProps.onPropertyMove, nextProps.onPropertyMove) &&\n // equal(prevProps.onPropertyRemove, nextProps.onPropertyRemove) &&\n prevProps.namespace === nextProps.namespace &&\n prevProps.collectionEditable === nextProps.collectionEditable;\n }\n);\n\nexport function PropertyTreeEntry({\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n provided,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n provided: DraggableProvided;\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 isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = getFullId(propertyKey, namespace);\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 hasError = fullId ? getIn(errors, idToPropertiesPath(fullId)) : false;\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n className=\"relative -ml-8\"\n >\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\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\n <div className=\"absolute top-2 right-2 flex flex-row \">\n\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutoAwesomeIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && <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 >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n );\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={\"small\"}\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, toSnakeCase, unslugify } 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 ? unslugify(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\";\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 === \"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 }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: 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 = 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={(existing && Boolean(pathValue)) || 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 <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\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 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 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 } 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 } 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 } 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 } 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 } 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 } 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 === \"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 \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\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 { DebouncedTextField, ExpandablePanel, FileUploadIcon, 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 <FileUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\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, isEmptyObject,\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 WarningOffIcon\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 console.debug(\"onSubmit\", newPropertyWithId);\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 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 && !isEmptyObject(errors)) {\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 === \"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 === \"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&apos;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 no <code>editable</code> flag\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 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 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\"}>\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 <WarningOffIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\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 return (str.slice(0, 1).toLowerCase() + str.slice(1))\n .replace(/([-_ ]){1,}/g, \" \")\n .split(/[-_ ]/)\n .reduce((cur, acc) => {\n return cur + acc[0].toUpperCase() + acc.substring(1);\n }, \"\");\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/customization_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 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, ...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 AutoAwesomeIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Paper,\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 // @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 console.log(\"!!!!!! onPropertyChanged\", property)\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 console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\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-surface-50 dark:bg-surface-900\"}>\n <div className={cls(\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\"}/> : <AutoAwesomeIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\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 <Paper\n className=\"sticky top-8 p-4 min-h-full border border-transparent 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 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 </Paper>\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>\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\" onClick={handleCancel} autoFocus> Cancel </Button>\n <Button 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\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"} 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 initialFilter: {\n status: [\"==\", \"published\"]\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, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, 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_export\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n // const {\n // values,\n // setFieldValue,\n // setValues,\n // handleChange,\n // touched,\n // errors,\n // setFieldTouched,\n // isSubmitting,\n // submitCount\n // } = useFormex<EntityCollection>();\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 <div className={\"my-2\"}>\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 {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(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 {!loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0 &&\n <Typography variant={\"caption\"}>\n No suggestions\n </Typography>\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\"} iconKey={productsCollectionTemplate.icon!}/>}\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!}/>}\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!}/>}\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!}/>}\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 <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\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 {/*<Typography>*/}\n {/* {subtitle}*/}\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_export\";\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_export\";\nimport { CircularProgressCenter, EntityCollectionTable, Properties, useSelectionController } 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 [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", 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 properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import_export\";\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 Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n TopNavigationResult,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DoneIcon,\n IconButton,\n LoadingButton,\n Tab,\n Tabs\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_export\";\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\";\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 pathSuggestions?: (path?: string) => Promise<string[]>;\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\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 }: TopNavigationResult = 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 pathSuggestions,\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 = (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? []);\n };\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.resolveAliasesFrom(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) => {\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 const collectionEditable = editable || isNewCollection;\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"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 </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={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\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\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 {currentView !== \"welcome\" && <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 <ArrowBackIcon/>\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 <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\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 ? <DoneIcon/>\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 </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 getPathSuggestions?: (path?: string) => Promise<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 components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\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 }>();\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 });\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 ?? false,\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 });\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 getPathSuggestions,\n components\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 pathSuggestions={getPathSuggestions}\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.resolveAliasesFrom(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 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/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\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 { 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 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>\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 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 color={\"primary\"}\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&apos;t have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\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\";\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 getPathSuggestions?: (path?: string) => Promise<string[]>;\n\n collectionInference?: CollectionInference;\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 components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\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 getPathSuggestions,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n components\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 getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: <IntroWidget/>,\n // additionalChildrenEnd: <RootCollectionSuggestions introMode={introMode}/>,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\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 const storedCollections = backendCollections ?? [];\n storedCollections.forEach(markAsEditable);\n\n console.debug(\"Collections specified in code:\", baseCollections);\n console.debug(\"Collections stored in the backend\", storedCollections);\n const result = joinCollectionLists(baseCollections, storedCollections, [], modifyCollection);\n console.debug(\"Collections after joining:\", result);\n return result;\n}\n","import { ErrorView, unslugify, 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: unslugify(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","CollectionDetailsForm","t0","$","_c","isNewCollection","reservedGroups","groups","parentCollection","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","isSubmitting","submitCount","useFormex","collectionEditor","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","t4","useEffect","DatabaseField","components","DefaultDatabaseField","t5","collectionIcon","groupOptions","filter","group","includes","t6","Symbol","for","ref","autoCompleteOpen","setAutoCompleteOpen","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","t7","T0","Container","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","e","target","value","t22","Boolean","t23","t24","t25","t26","t27","t28","t29","cls","t30","t31","t32","DebouncedTextField","t33","t34","t35","t36","t37","event","length","map","group_0","index","t38","t39","t40","t41","t42","t43","t44","t45","t46","singularName","t47","e_0","t48","t49","t50","t51","t52","t53","t54","sideDialogWidth","t55","e_1","isNaN","Number","t56","t57","t58","t59","t60","t61","t62","t63","t64","t65","t66","description","t67","t68","t69","t70","t71","t72","t73","defaultSize","t74","_temp2","t75","_temp","t76","t77","v","Error","t78","t79","t80","t81","t82","_temp3","t83","v_0","t84","collectionGroup","t85","t86","t87","t88","v_1","t89","textSearchEnabled","t90","t91","t92","t93","t94","t95","t96","height","t97","icon","t98","t99","t100","value_2","value_1","toUpperCase","value_0","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","label","hasError","Object","keys","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","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","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","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","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","fileNameValue","storagePathValue","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","ExpandablePanel","entries","preventDefault","stopPropagation","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","cardClickableMixin","cardSelectedMixin","cardMixin","NonEditablePropertyPreview","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","className","inferredPropertyKeys","collectionEditable","result","destination","startIndex","source","endIndex","newPropertiesOrder","removed","splice","onDragEnd","droppableProvided","droppableSnapshot","droppableProps","innerRef","additionalField","find","warn","provided","snapshot","isDragging","placeholder","isSelected","startsWith","wasSelected","PropertyTreeEntry","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","dragHandleProps","draggableProps","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","collection_0","collection_1","flatMap","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","v_2","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","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","debug","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","isEmptyObject","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","hasValue","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","Dialog","DialogContent","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","camelCase","str","slice","toLowerCase","replace","split","cur","acc","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","themes","vsDark","navigator","clipboard","writeText","style","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","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","newCollection","newPropertyKeys","updatedProperties","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","indexOf","log","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","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","subcollection","editedCollectionId","e_2","Paper","Table","TableBody","e_3","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","makePropertiesEditable","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","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","suggestion","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","propertyKey_1","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","entities","dataLoading","noMoreToLoad","cleanPropertiesFromImport","parentSlug","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","authController","useAuthController","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","updatedFullPath","convertIdsToPaths","resolvedPath","resolveAliasesFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","View","importedCollection","removeUndefined","validate","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","getPathSuggestions","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","deleteRequested","setDeleteRequested","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","clearFilter","setFilterValues","setSortBy","o","NewCollectionCard","context","canCreateCollections","useCollectionEditorPlugin","Component","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","CollectionActionsStart","HeaderAction","AddColumnComponent","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","storedCollections","joinCollectionLists","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","segments"],"mappings":"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"}