@apia/execution 4.0.60 → 4.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -2
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/util/comparators/deepEqual.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/main/Execution/FormsExecution/constants/fieldProps.ts","../src/main/Execution/FormsExecution/constants/formProps.ts","../src/main/Execution/FormsExecution/constants/props/booleanProps.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/xml/parseXml.ts","../src/util/dom/getWindow.ts","../src/main/Execution/types.ts","../src/util/api/apiaApi.ts","../src/util/events/EventEmitter.ts","../src/util/events/StatefulEmitter.ts","../src/util/events/BouncingEmitter.ts","../src/util/labels/labels.ts","../src/util/dataTypes/parseBoolean.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/FormsExecution/WithProperties.ts","../src/util/dom/getDocument.ts","../src/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.ts","../src/programming/utils/asynCreateApiaField.ts","../src/main/Execution/FormsExecution/util/util.ts","../src/main/Execution/FormsExecution/Field.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/util/isFieldShowAsText.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.ts","../src/main/Execution/FormsExecution/fields/Checkbox/index.ts","../src/main/Execution/FormsExecution/TranslatableField/Translation.ts","../src/main/Execution/FormsExecution/TranslatableField/util.ts","../src/main/Execution/FormsExecution/TranslatableField/index.ts","../src/main/Execution/FormsExecution/fields/Editor/index.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/Uploader/FormsUploader.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/fields/Grid/GridFooterHandler.ts","../src/main/Execution/FormsExecution/fields/Grid/GridCell.ts","../src/main/Execution/FormsExecution/fields/Grid/AdditionalCell.ts","../src/main/Execution/FormsExecution/fields/Grid/HeaderCell.ts","../src/main/Execution/FormsExecution/fields/Grid/FieldsCache.ts","../src/main/Execution/FormsExecution/fields/ModalInput/index.ts","../src/main/Execution/FormsExecution/fields/Hidden/index.ts","../src/main/Execution/FormsExecution/fields/Grid/index.ts","../src/main/Execution/FormsExecution/fields/GridPaginated/index.ts","../src/main/Execution/FormsExecution/fields/Image/index.ts","../src/main/Execution/FormsExecution/fields/Input/index.ts","../src/main/Execution/FormsExecution/fields/Label/index.ts","../src/main/Execution/FormsExecution/fields/Link/index.ts","../src/main/Execution/FormsExecution/fields/Multiple/index.ts","../src/main/Execution/FormsExecution/fields/Password/index.ts","../src/main/Execution/FormsExecution/fields/Radio/index.ts","../src/main/Execution/FormsExecution/fields/Select/index.ts","../src/main/Execution/FormsExecution/fields/Textarea/index.ts","../src/main/Execution/FormsExecution/fields/Title/index.ts","../src/main/Execution/FormsExecution/fields/Tree/index.ts","../src/main/Execution/FormsExecution/fields/Scheduler/index.ts","../src/programming/constants/FieldConstants.ts","../src/programming/constants/FormConstants.ts","../src/programming/constants/IProperty.ts","../src/programming/ActionController/index.ts","../src/programming/ApiaField.ts","../src/programming/fields/ButtonField.ts","../src/programming/ApiaFieldWithAttribute.ts","../src/programming/fields/EditorField.ts","../src/programming/fields/SelectField.ts","../src/programming/fields/InputField.ts","../src/programming/fields/TreeField.ts","../src/programming/fields/CheckField.ts","../src/programming/fields/RadioField.ts","../src/programming/fields/MultipleField.ts","../src/programming/fields/HiddenField.ts","../src/programming/fields/AreaField.ts","../src/programming/fields/ImageField.ts","../src/programming/fields/LinkField.ts","../src/programming/fields/TextField.ts","../src/programming/fields/CustomComponentField.ts","../src/programming/utils/createApiaField.ts","../src/programming/fields/GridField.ts","../src/programming/fields/CaptchaField.ts","../src/programming/fields/FileUploaderField.ts","../src/programming/fields/PasswordField.ts","../src/programming/fields/ModalInput.ts","../src/programming/ApiaForm.tsx","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/Notifications/StatusNotification.ts","../src/main/Notifications/index.ts","../src/main/Execution/FormsExecution/Form.ts","../src/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/main/Execution/FormsExecution/fieldsMap.ts","../src/main/Execution/Process/index.ts","../src/main/Execution/Task.ts","../src/main/Execution/Entity/index.ts","../src/main/Execution/Observations/index.ts","../src/main/Execution/FlowModals/FlowModal.ts","../src/main/Execution/FlowModals/ShowPoolSelection.ts","../src/main/Execution/FlowModals/ShowPathSelection.ts","../src/main/Execution/FlowModals/ShowSignSelection.ts","../src/main/Execution/FlowModals/ShowConfirmMessage.ts","../src/main/Execution/FlowModals/ShowSign.ts","../src/main/Execution/FlowModals/confirmFlow.ts","../src/main/Execution/EntityFlowModals/confirmFlow.ts","../src/main/Execution/index.ts"],"sourcesContent":["export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const deepEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!deepEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!deepEqual(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!deepEqual(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\n\r\nexport type NotificationIcon = string;\r\n\r\nexport type NotificationType =\r\n | 'info'\r\n | 'error'\r\n | 'success'\r\n | 'warning'\r\n | 'modal';\r\n\r\nexport type NotificationDefinition = {\r\n icon?: NotificationIcon;\r\n id?: string | number;\r\n isOpen?: boolean;\r\n message: string;\r\n stackTrace?: string;\r\n title?: string;\r\n type?: NotificationType;\r\n};\r\n\r\nexport abstract class Notification<\r\n State extends NotificationDefinition = NotificationDefinition,\r\n> {\r\n protected state: State;\r\n\r\n constructor(public readonly props: State) {\r\n this.state = props;\r\n\r\n makeObservable<Notification, 'state'>(this, { state: observable });\r\n }\r\n\r\n get icon() {\r\n return this.state.icon;\r\n }\r\n get id() {\r\n return this.state.id;\r\n }\r\n get isOpen() {\r\n return this.state.isOpen;\r\n }\r\n get message() {\r\n return this.state.message;\r\n }\r\n get stackTrace() {\r\n return this.state.stackTrace;\r\n }\r\n get title() {\r\n return this.state.title;\r\n }\r\n get type() {\r\n return this.state.type;\r\n }\r\n}\r\n","import { Notification } from './Notification';\r\n\r\nexport class MessageNotification extends Notification {\r\n close() {\r\n this.state.isOpen = false;\r\n }\r\n}\r\n","const fieldProps = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n} as const;\r\n\r\nexport default fieldProps;\r\n","const formProps = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default formProps;\r\n","import fieldProps from '../fieldProps';\r\nimport formProps from '../formProps';\r\n\r\nconst FormBoolProps = [\r\n formProps.PROPERTY_FORM_INVISIBLE,\r\n formProps.PROPERTY_FORM_HIDDEN,\r\n formProps.PROPERTY_FORM_CLOSED,\r\n formProps.PROPERTY_FORM_TAB,\r\n formProps.PROPERTY_FORM_HIGHLIGHT,\r\n formProps.PROPERTY_FORM_DONT_FIRE,\r\n formProps.PROPERTY_FORM_READONLY,\r\n formProps.SIGNABLE_FORM,\r\n formProps.MARKED_TO_SIGN,\r\n formProps.REQUIRED_SIGN,\r\n];\r\n\r\nconst FieldBoolProps = [\r\n fieldProps.PROPERTY_ALLOW_EDITION,\r\n fieldProps.PROPERTY_CHECKED,\r\n fieldProps.PROPERTY_DISABLED,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\r\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\r\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\r\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\r\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\r\n fieldProps.PROPERTY_FILE_PREVIEW,\r\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\r\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\r\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\r\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\r\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\r\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\r\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\r\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\r\n fieldProps.PROPERTY_HIDE_GRID_BTN,\r\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\r\n fieldProps.PROPERTY_INPUT_AS_TEXT,\r\n fieldProps.PROPERTY_MODAL_DISABLED,\r\n fieldProps.PROPERTY_MULTISELECT,\r\n fieldProps.PROPERTY_NO_DOWNLOAD,\r\n fieldProps.PROPERTY_NO_ERASE,\r\n fieldProps.PROPERTY_NO_LOCK,\r\n fieldProps.PROPERTY_NO_MODIFY,\r\n fieldProps.PROPERTY_NOT_PRINT,\r\n fieldProps.PROPERTY_PAGED_GRID,\r\n fieldProps.PROPERTY_READONLY,\r\n fieldProps.PROPERTY_REQUIRED,\r\n fieldProps.PROPERTY_SEL_PARENT,\r\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\r\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\r\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\r\n fieldProps.PROPERTY_TRANSIENT,\r\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\r\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\r\n];\r\n\r\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\r\nexport default BoolProps;\r\n","import fieldProps from '../fieldProps';\r\n\r\nconst NumProps: string[] = [\r\n fieldProps.PROPERTY_SIZE,\r\n fieldProps.PROPERTY_ROWS,\r\n fieldProps.PROPERTY_COLSPAN,\r\n fieldProps.PROPERTY_ROWSPAN,\r\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\r\n fieldProps.PROPERTY_GRID_HEIGHT,\r\n fieldProps.PROPERTY_MAX_REG_GRID,\r\n];\r\n\r\nexport default NumProps;\r\n","import xml2js, { ParserOptions } from 'xml2js';\r\nimport he from 'he';\r\nimport { parseBooleans, parseNumbers } from 'xml2js/lib/processors';\r\nimport {\r\n TApiaFieldPropsObj,\r\n TFieldScriptEvents,\r\n TFieldServerEvents,\r\n TMap,\r\n} from '@apia/util';\r\nimport BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { InvalidSessionException } from '../api/apiaApi';\r\n\r\n// get JS object from string\r\nconst jsonDecode = (string: string): TMap<string | boolean | number> => {\r\n if (!string || typeof string !== 'string') return {};\r\n // remove eol enters\r\n const str = string.replace(/\\n|\\r/g, '');\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return eval(`(${str})`);\r\n};\r\n\r\n// get boolean value from string values\r\nconst parseBool = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n\r\ntype TFieldProps = TMap<string | boolean | number>;\r\ntype TFieldValueProps = (string | boolean | number)[];\r\ntype TFieldParsedProps = TMap<string | boolean | number>;\r\n\r\ntype XMLParser<T = Record<string, unknown>> = (\r\n xml: XMLDocument | string,\r\n behaveConfig?: TParseXmlBehavior<T>,\r\n) => T;\r\n\r\nexport type TParseXmlBehavior<T> = {\r\n avoidTrimXml?: boolean;\r\n avoidNormalize?: boolean;\r\n xmlParser?: XMLParser<T>;\r\n};\r\n\r\n// parse XML properties of Field element\r\nexport const parseFieldPropertiesObj = (\r\n props: TFieldProps,\r\n): TFieldParsedProps => {\r\n // default values for missing props can go here below in response.\r\n const response: TFieldParsedProps = {};\r\n const objKeys: string[] = Object.keys(props);\r\n const objVal: TFieldValueProps = Object.values(props);\r\n for (let i = 0; i < objKeys.length; i += 1) {\r\n const key = objKeys[i];\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n response[key] = objVal[i] || '';\r\n } else if (typeof objVal[i] === 'number') {\r\n response[key] = objVal[i];\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n response[key] = parseBool(objVal[i] as string);\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n response[key] = parseInt((objVal[i] as string) || '', 10);\r\n }\r\n }\r\n return response;\r\n};\r\n\r\nexport const processAjaxEventTagNames = (name: string): string => {\r\n if (name === 'a') return 'form';\r\n if (name === 'b') return 'field';\r\n if (name === 'g') return 'possibleValues';\r\n if (name === 'h') return 'item';\r\n if (name === 'z') return 'focusTo';\r\n if (name === 'r') return 'reload';\r\n if (name === 'p') return 'proccess';\r\n if (name === 'd') return 'valueAttr';\r\n return name;\r\n};\r\n\r\nexport const processAjaxEventAttrNames = (name: string): string => {\r\n if (name === 't') return 'text';\r\n if (name === 'label') return 'LABEL';\r\n return name;\r\n};\r\n\r\nexport const processAjaxEventResponse = <T>(\r\n value: T,\r\n _name: string,\r\n): boolean | T => {\r\n return value;\r\n};\r\nexport function htmlToText(html: string) {\r\n const safe = html.replace(/</g, '<');\r\n return he.decode(safe);\r\n}\r\n\r\nexport const processStringObj = (\r\n value: string,\r\n key: string,\r\n):\r\n | TApiaFieldPropsObj\r\n | string\r\n | number\r\n | TFieldScriptEvents\r\n | TFieldServerEvents => {\r\n if (key === 'properties') {\r\n return parseFieldPropertiesObj(jsonDecode(value)) as TApiaFieldPropsObj;\r\n }\r\n if (key === 'scriptEvents') {\r\n return JSON.parse(value) as TFieldScriptEvents;\r\n }\r\n if (key === 'serverEvents') {\r\n return JSON.parse(value) as TFieldServerEvents;\r\n }\r\n if (key === 'gridXml') {\r\n return parseXml(he.decode(value).replaceAll('&', '&'));\r\n }\r\n if (key === 'value' && typeof value === 'number' && Number.isNaN(value)) {\r\n return '';\r\n }\r\n if (key === 'valueType' && typeof value === 'string' && value === 'null') {\r\n return '';\r\n }\r\n if (\r\n (key === 'cols' ||\r\n key === 'rows' ||\r\n key === 'x' ||\r\n key === 'y' ||\r\n key === 'length') &&\r\n typeof value === 'string'\r\n ) {\r\n return parseNumbers(value);\r\n }\r\n\r\n return value.match?.(/[&]/) ? htmlToText(value) : value;\r\n};\r\n\r\nexport function replaceLabelHtmlValues(o: object) {\r\n for (const [key, value] of Object.entries(o)) {\r\n if (typeof value === 'object' && value) {\r\n (o as any)[key] = replaceLabelHtmlValues(value);\r\n } else if (typeof value === 'string' && value.match(/&/)) {\r\n if ((o as any).fieldType === 'editor') {\r\n (o as any)[key] = htmlToText(value);\r\n } else {\r\n (o as any)[key] = htmlToText(value);\r\n }\r\n }\r\n }\r\n return o;\r\n}\r\nexport const asyncGetJSObjfromXML = async <T>(xml: string): Promise<T> => {\r\n const parser = new xml2js.Parser({\r\n trim: true,\r\n normalize: true,\r\n explicitRoot: false,\r\n mergeAttrs: true,\r\n explicitArray: false,\r\n charkey: 'label',\r\n attrValueProcessors: [\r\n parseBooleans,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n ],\r\n tagNameProcessors: [processAjaxEventTagNames],\r\n attrNameProcessors: [processAjaxEventAttrNames],\r\n } as ParserOptions);\r\n\r\n const result = await new Promise<T>((resolve, reject) => {\r\n parser.parseString(xml, (err: Error | null, innerResult: T) => {\r\n if (err) reject(err);\r\n else {\r\n resolve(\r\n typeof innerResult === 'object' && innerResult\r\n ? (replaceLabelHtmlValues(innerResult) as any)\r\n : innerResult,\r\n );\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n};\r\n\r\n// Wrapper que respeta parseBooleans salvo para el atributo 'value'\r\nexport function customBooleanProcessor(value: string, name?: string) {\r\n // si el atributo es 'value', devolvemos el string tal cual\r\n if (name === 'value') return value;\r\n\r\n // para todos los demás atributos, seguimos usando parseBooleans\r\n return parseBooleans(value);\r\n}\r\n\r\nexport function getDefaultXmlParserOptions(\r\n behaveConfig?: TParseXmlBehavior<any>,\r\n) {\r\n return {\r\n trim: !behaveConfig?.avoidTrimXml,\r\n normalize: !behaveConfig?.avoidNormalize,\r\n explicitRoot: false,\r\n mergeAttrs: true,\r\n explicitArray: false,\r\n charkey: 'label',\r\n attrValueProcessors: [\r\n customBooleanProcessor,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n ],\r\n tagNameProcessors: [processAjaxEventTagNames],\r\n attrNameProcessors: [processAjaxEventAttrNames],\r\n } as ParserOptions;\r\n}\r\n\r\nexport function getDefaultXmlPostProcessor<T>() {\r\n return (xml: string, parser: xml2js.Parser) => {\r\n let objJS;\r\n\r\n parser.parseString(\r\n xml,\r\n (err: Error | null, result: Record<string, unknown>) => {\r\n if (err) {\r\n console.warn('Error Parsing XML data', err);\r\n objJS = err;\r\n } else {\r\n if (result?.code === '-1' && result.exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n objJS = result;\r\n }\r\n },\r\n ) as T;\r\n\r\n if (objJS) {\r\n return typeof objJS === 'object' && objJS\r\n ? (replaceLabelHtmlValues(objJS) as any)\r\n : objJS;\r\n }\r\n return {} as T;\r\n };\r\n}\r\n\r\nfunction getDefaultXmlParser<T>(\r\n behaveConfig?: TParseXmlBehavior<T>,\r\n): XMLParser<T> {\r\n return (xml, _behaveConfig) => {\r\n const parser = new xml2js.Parser(getDefaultXmlParserOptions(behaveConfig));\r\n return getDefaultXmlPostProcessor<T>()(xml as string, parser);\r\n };\r\n}\r\n\r\nexport const parseXml = <T = Record<string, unknown>>(\r\n xml: XMLDocument | string,\r\n behaveConfig?: TParseXmlBehavior<T>,\r\n): T => {\r\n if (typeof xml === 'object' && !(xml instanceof XMLDocument)) {\r\n return xml;\r\n }\r\n\r\n const parser: XMLParser<T> =\r\n behaveConfig?.xmlParser ?? getDefaultXmlParser<T>();\r\n\r\n return parser(xml, behaveConfig);\r\n};\r\n","import type { Execution } from '../../main/Execution';\r\n\r\nexport function getWindow(execution: Execution) {\r\n return execution.environment.window;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\n\r\nexport enum ExecutionState {\r\n RUNNING,\r\n LOADING,\r\n FINISHED,\r\n RENDERING,\r\n CONFIRMING,\r\n FINISHED_WITH_ERROR,\r\n}\r\n\r\nexport type TOnClose =\r\n | 'clearEvalPath'\r\n | 'confirmOkOnClose'\r\n | 'confirmOkOnCloseSplash'\r\n | 'confirmOkOnSaveSplash'\r\n | 'releaseOkOnClose'\r\n | null;\r\n\r\nexport type TErrMessage = {\r\n message: {\r\n text: string;\r\n label?: string;\r\n };\r\n};\r\nexport type TFetchTaskActionResponse = {\r\n onClose?: TOnClose;\r\n sysMessages?: TErrMessage;\r\n sysExceptions?: TErrMessage;\r\n type?: string;\r\n actions?: {\r\n action: {\r\n param: string[];\r\n toDo: string;\r\n };\r\n };\r\n load?: {\r\n canClose: boolean;\r\n type: string;\r\n text: {\r\n label: string;\r\n closeAll: boolean;\r\n addClass?: string;\r\n title?: string;\r\n };\r\n };\r\n text?: {\r\n title?: string;\r\n label?: string;\r\n };\r\n};\r\n\r\nexport type TConfirmResponse = {\r\n onClose: string;\r\n pathSelection?: boolean | null;\r\n groupSelection?: boolean | null;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n};\r\n\r\n/*\r\n{\r\n \"onClose\": \"\",\r\n \"load\": {\r\n \"canClose\": false,\r\n \"type\": \"text\",\r\n \"text\": {\r\n \"closeAll\": false,\r\n \"title\": \"\",\r\n \"addClass\": \"success\",\r\n \"text\": \"Operación completa. Cargando el listado.\"\r\n }\r\n },\r\n \"actions\": {\r\n \"action\": {\r\n \"toDo\": \"linkTimed\",\r\n \"param\": [\r\n {\r\n \"text\": \"1000\"\r\n },\r\n {\r\n \"text\": \"/apia.execution.EntInstanceListAction.run?action=list&tabId=174949147885442422&tokenId=1749490825179\"\r\n }\r\n ]\r\n }\r\n },\r\n \"canClose\": false,\r\n \"type\": \"text\",\r\n \"text\": {\r\n \"closeAll\": false,\r\n \"title\": \"\",\r\n \"addClass\": \"success\",\r\n \"text\": \"Operación completa. Cargando el listado.\"\r\n }\r\n}\r\n*/\r\n\r\nexport type TConfirmEntityResponse = {\r\n onClose: string;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label?: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: string[];\r\n };\r\n };\r\n};\r\n\r\nexport type FieldError = {\r\n id: string;\r\n errorMessage: string;\r\n title: string;\r\n focus: string;\r\n};\r\n\r\nexport type TAdmEntityEvent = {\r\n entName: string;\r\n entNum?: number;\r\n parameters?: string;\r\n width?: number;\r\n height?: number;\r\n};\r\n","import { AxiosError, type AxiosResponse } from 'axios';\r\nimport { MessageNotification } from '../../main/Notifications/MessageNotification';\r\nimport {\r\n IApiaApiPostConfig,\r\n IApiaApiRequestConfig,\r\n TApiaApiAxiosResponse,\r\n TApiaApiResult,\r\n TApiaMessage,\r\n TApiaSystemMessageObj,\r\n} from './types';\r\nimport { NotificationType } from '../../main/Notifications/Notification';\r\nimport { parseXml } from '../xml/parseXml';\r\nimport type { IStringifyOptions } from 'qs';\r\nimport QueryString from 'qs';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { getWindow } from '../dom/getWindow';\r\nimport { type Execution } from '../../main/Execution';\r\nimport { ExecutionState } from '../../main/Execution/types';\r\n\r\ndeclare global {\r\n interface Window {\r\n [key: string]: string;\r\n }\r\n\r\n interface Document {\r\n headers: any;\r\n }\r\n}\r\n\r\nfunction dispatchMessage(\r\n execution: Execution,\r\n type: NotificationType,\r\n message: TApiaMessage,\r\n) {\r\n const definedType = message.type;\r\n const actualType = [null, 'success', 'warning', 'error', 'modal'][\r\n definedType || 0\r\n ] as NotificationType;\r\n\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: message.text!,\r\n stackTrace: message.label,\r\n title: message.title,\r\n type: actualType || type,\r\n }),\r\n );\r\n}\r\n\r\nfunction getAxios() {\r\n return import('axios').then((r) =>\r\n typeof process !== 'undefined' &&\r\n process.env?.APIA_SERVER &&\r\n process.env?.CONTEXT\r\n ? r.default.create({\r\n baseURL: process?.env?.APIA_SERVER.replaceAll(\r\n process.env.CONTEXT as string,\r\n '',\r\n ),\r\n })\r\n : r.default,\r\n );\r\n}\r\n\r\nconst handleWrongResponse = (execution: Execution, error: Error) => {\r\n if (\r\n error instanceof InvalidSessionException ||\r\n (error instanceof AxiosError && error.status === 403)\r\n ) {\r\n execution.kill();\r\n throw new InvalidSessionException();\r\n }\r\n\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n execution.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: errorMessage.replaceAll('AxiosError', 'Error'),\r\n }),\r\n );\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nexport function parseMessages(\r\n execution: Execution,\r\n response: TApiaSystemMessageObj,\r\n) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n arrayOrArray(exceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'error'),\r\n );\r\n arrayOrArray(sysMessages?.message).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'warning'),\r\n );\r\n arrayOrArray(sysExceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'error'),\r\n );\r\n}\r\n\r\nasync function handleResponse<\r\n ResponseType extends Record<string, unknown>,\r\n PostDataType = unknown,\r\n>(\r\n execution: Execution,\r\n result: AxiosResponse<string> | void,\r\n behaveConfig?: IApiaApiPostConfig<PostDataType, ResponseType>,\r\n): Promise<TApiaApiAxiosResponse<ResponseType> | null> {\r\n try {\r\n if (!result || result.data === undefined) {\r\n //\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<ResponseType>(\r\n execution,\r\n result,\r\n behaveConfig,\r\n );\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class InvalidSessionException extends Error {}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n ResponseType extends Record<string, unknown>,\r\n PostDataType = unknown,\r\n>(\r\n execution: Execution,\r\n response: AxiosResponse<string>,\r\n behaveConfig?: IApiaApiPostConfig<PostDataType, ResponseType>,\r\n) => {\r\n let parsedObj: TApiaSystemMessageObj<ResponseType> | void | undefined =\r\n undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<ResponseType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n try {\r\n parsedObj = parseXml<ResponseType>(response.data, behaveConfig);\r\n } catch (e) {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n }\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n\r\n parseMessages(execution, { exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n return { ...parsedObj, ...load, ...(rest as ResponseType) };\r\n }\r\n return {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n ...(rest as ResponseType),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nexport async function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n execution: Execution,\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiPostConfig<DataType, LoadType>,\r\n): TApiaApiResult<LoadType> {\r\n if (\r\n execution.state.executionState === ExecutionState.FINISHED &&\r\n !behaveConfig?.allowAfterFinish\r\n ) {\r\n throw new Error('Cannot perform requests after execution has finished');\r\n }\r\n\r\n const postData =\r\n behaveConfig?.postDataTreatment === 'stringify'\r\n ? QueryString.stringify(\r\n behaveConfig.postData,\r\n behaveConfig.stringifyOptions,\r\n )\r\n : behaveConfig?.postData;\r\n\r\n const response = await (await getAxios())\r\n .post<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(actualUrl, postData, { ...behaveConfig?.axiosConfig, headers: { ...behaveConfig?.axiosConfig?.headers, ...execution.environment.headers } })\r\n .catch((e: unknown) => {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(execution, response, behaveConfig);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nexport async function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n execution: Execution,\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiRequestConfig,\r\n): TApiaApiResult<LoadType> {\r\n if (execution.state.executionState === ExecutionState.FINISHED) {\r\n throw new Error('Cannot perform requests after execution has finished');\r\n }\r\n\r\n const response = await (await getAxios())\r\n .get<\r\n T,\r\n AxiosResponse<string>,\r\n D\r\n >(actualUrl, { ...behaveConfig?.axiosConfig, headers: { ...behaveConfig?.axiosConfig?.headers, ...execution.environment.headers } })\r\n .catch((e: unknown) => {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(execution, response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport type MakeApiaUrlProps = {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n};\r\n\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * getWindow(execution).URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(execution: Execution, props?: MakeApiaUrlProps) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? getWindow(execution).URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = getWindow(execution)?.TAB_ID_REQUEST?.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : getWindow(execution).TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = getWindow(execution);\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replace(/^\\/?(.+?)\\/?$/, '$1');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n","import { Callback, Callbacks, Map, UnSubscriber } from './types';\r\n\r\nexport type { Callback, Map, UnSubscriber } from './types';\r\n\r\n/**\r\n * @public\r\n *\r\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\r\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\r\n *\r\n * @typeParam Events - An extension of `Map` where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class EventEmitter<Events extends Map> {\r\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\r\n on: {} as Callbacks<Events>,\r\n once: {} as Callbacks<Events>,\r\n };\r\n protected enabled = true;\r\n\r\n protected debugMode = false;\r\n debug(enable = true) {\r\n this.debugMode = enable;\r\n }\r\n\r\n /**\r\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\r\n *\r\n * @param event - The event name to emit.\r\n * @param data - The data associated with the event. Its type is dependent on the event name.\r\n */\r\n emit<K extends keyof Events>(event: K, data: Events[K]) {\r\n this.callbacks.on[event]?.forEach((current) => current(data));\r\n\r\n this.callbacks.once[event]?.forEach((current) => current(data));\r\n this.callbacks.once[event] = [];\r\n }\r\n\r\n /**\r\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\r\n */\r\n get isEnabled() {\r\n return this.enabled;\r\n }\r\n\r\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\r\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\r\n *\r\n * @param event - The event name to listen to.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\r\n this.callbacks.on[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.on[event] = this.callbacks.on[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\r\n *\r\n * @param event - The event name to listen to for a single occurrence.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\r\n this.callbacks.once[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.once[event] = this.callbacks.once[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n}\r\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype Setter<T> = (prevState: T) => T;\r\n\r\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\r\n return typeof data === 'function';\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\ntype EmitterState<Events extends Map> = {\r\n [K in keyof Events]: Events[K];\r\n};\r\n\r\n/**\r\n * Extends EventEmitter to manage and emit events with state persistence.\r\n * This class allows emitting and listening to typed events while also keeping\r\n * a state that can be accessed synchronously for each event.\r\n *\r\n * @param initialState - If given will be passed to subscriptions\r\n *\r\n * @template Events - A mapping of event names to their associated data types.\r\n * @extends EventEmitter<Events>\r\n */\r\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\r\n protected state = {} as EmitterState<Events>;\r\n\r\n constructor(initialState?: Partial<Events>) {\r\n super();\r\n\r\n this.state = Object.assign({}, initialState) as Events;\r\n }\r\n\r\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\r\n this.state[event] = data;\r\n super.emit(event, data);\r\n }\r\n\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (this.state[event]) cb(this.state[event]);\r\n\r\n return super.on(event, cb);\r\n }\r\n\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (this.state[event]) {\r\n cb(this.state[event]);\r\n\r\n /**\r\n * Given that the information has already been sent, the subscription is not necessary\r\n */\r\n return () => {};\r\n }\r\n\r\n return super.once(event, cb);\r\n }\r\n\r\n /**\r\n * Retrieves the stored state for a given event\r\n */\r\n getState<K extends keyof Events>(event: K): Events[K] {\r\n return this.state[event];\r\n }\r\n\r\n /**\r\n * Just an alias for emit, with the advantage that can be called with a callback as second parameter in which case behaves exactly as react's setState.\r\n */\r\n setState<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.emit(event, actualData);\r\n }\r\n}\r\n","import { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { getWindow } from '../dom/getWindow';\r\n\r\nexport function getLabel(\r\n execution: Execution,\r\n label: string,\r\n replacers?: Partial<{\r\n text: Record<string, string>;\r\n tooltip: Record<string, string>;\r\n }>,\r\n) {\r\n const original = (getWindow(execution) as any).labels[label] as {\r\n text: string;\r\n tooltip: string;\r\n };\r\n\r\n if (!original) {\r\n return {\r\n text: `LblNotPrealoded: ${label}`,\r\n tooltip: `LblNotPrealoded: ${label}`,\r\n };\r\n }\r\n\r\n const labelObject = { ...original };\r\n\r\n if (replacers?.text) {\r\n Object.entries(replacers.text).forEach(([key, value]) => {\r\n labelObject.text = labelObject.text.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n if (replacers?.tooltip) {\r\n Object.entries(replacers.tooltip).forEach(([key, value]) => {\r\n labelObject.tooltip = labelObject.tooltip.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n\r\n return labelObject;\r\n}\r\n\r\nexport const labels = {\r\n errorConfirmationFailed: () => 'Error al confirmar',\r\n errorRegexNotValidated: () => 'La expresión regular no fue validada.',\r\n errorCouldNotSync: () => 'No se pudo sincronizar',\r\n errorFieldRequired: (execution: Execution) =>\r\n getLabel(execution, 'msgReqField').text,\r\n errorTranslateRequired: (execution: Execution, lang: string) =>\r\n getLabel(execution, 'lblReqLang', { text: { TOK1: lang } }).text,\r\n errorLoadForms: () =>\r\n 'Error al inicializar los formularios, contacte al administrador.',\r\n errorOnEvent: (execution: Execution, eventName: string) =>\r\n (window as any).SERVER_MODE\r\n ? 'Error al ejecutar la clase de negocios, contacte al administrador.'\r\n : getLabel(execution, 'msgErrorOnEvent', { text: { TOK1: eventName } })\r\n .text,\r\n};\r\n","// get boolean value from string values\r\nexport const parseBoolean = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst valueParsers: ((\r\n key: string,\r\n value: unknown,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n return next();\r\n } else if (typeof value === 'number') {\r\n return next();\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n return { key, value: parseBoolean(value as string) };\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n return { key, value: parseInt((value as string) || '', 10) };\r\n }\r\n next();\r\n },\r\n];\r\n\r\nexport function parseFakeJSON<T extends Record<string, unknown>>(\r\n str: string,\r\n): T {\r\n if (!str) {\r\n return {} as T;\r\n }\r\n\r\n if (typeof str === 'object') {\r\n return str as T;\r\n }\r\n\r\n const res = new Function(`const form = ${str}; return form;`)() as T;\r\n\r\n const ret: T = {} as T;\r\n\r\n for (const [key, value] of Object.entries(res)) {\r\n for (const p of valueParsers) {\r\n let next = false;\r\n const t = p(key, value, () => {\r\n next = true;\r\n });\r\n if (!next && t) {\r\n (ret as any)[t.key] = t.value;\r\n } else {\r\n (ret as any)[key] = value;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { SetStateAction } from '../../../util/events/types';\r\nimport type { Grid } from './fields';\r\n\r\nexport class WithProperties<Props extends Record<string, any>> {\r\n properties: Props = {} as Props;\r\n private parentGrid: null | Grid = null;\r\n\r\n constructor(initialState?: Props) {\r\n if (initialState) {\r\n this.properties = initialState;\r\n }\r\n makeObservable(this, { properties: observable, setProperty: action });\r\n }\r\n\r\n getParentGrid() {\r\n return this.parentGrid;\r\n }\r\n\r\n getProperty<K extends keyof Props>(propName: K): Props[K] {\r\n return this.properties[propName];\r\n }\r\n setProperty<K extends keyof Props>(\r\n propName: K,\r\n propValue: SetStateAction<Props[K]>,\r\n ) {\r\n const value =\r\n propValue instanceof Function\r\n ? propValue(this.properties[propName])\r\n : propValue;\r\n\r\n this.properties[propName] = value;\r\n\r\n if (propName === 'visibilityHidden') {\r\n this.parentGrid?.refreshColumnsVisibilities();\r\n }\r\n }\r\n\r\n setParentGrid(grid: Grid) {\r\n this.parentGrid = grid;\r\n return this;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\n\r\nexport function getDocument(execution: Execution) {\r\n return execution.environment.document;\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { getDocument } from '../dom/getDocument';\r\nimport { getWindow } from '../dom/getWindow';\r\n\r\nexport function getCurrentTabsString(execution: Execution) {\r\n const tabsList = (getWindow(execution).tabsController as any)?.tabsList as {\r\n id: string;\r\n state: { isOpen: boolean };\r\n }[];\r\n\r\n if (tabsList)\r\n return `${tabsList\r\n .map((c) => (c.state.isOpen ? c.id : -1))\r\n .filter((c) => !(typeof c === 'number'))\r\n .join(',')}~${getDocument(execution).scrollingElement?.scrollTop ?? 0}`;\r\n}\r\n","import type { Execution } from '../..';\r\nimport { getCurrentTabsString } from '../../../../util/app/getCurrentTabsString';\r\nimport { getWindow } from '../../../../util/dom/getWindow';\r\n\r\nexport const actions = {\r\n forms: 'apia.execution.FormAction.run',\r\n formSubmit: (execution: Execution) =>\r\n `${getWindow(execution).CONTEXT}/apia.execution.FormAction.run?action=fireFieldEvent¤tTab=${getCurrentTabsString(execution)}${getWindow(execution).TAB_ID_REQUEST}`,\r\n};\r\n","export const eventTypes = {\r\n EVENT_FLD_ONCHANGE: 1,\r\n EVENT_FLD_ONCLICK: 4,\r\n EVENT_FLD_POPULATE: 5,\r\n EVENT_FLD_ONMODALRETURN: 37,\r\n EVENT_FLD_ONMODALCHANGE: 36,\r\n\r\n // Grid Events\r\n EVENT_FLD_GRID_ADD: 60,\r\n EVENT_FLD_GRID_DEL: 61,\r\n EVENT_FLD_GRID_SORT: 62,\r\n EVENT_FLD_GRID_COLUMN_SELECT: 65,\r\n\r\n // Print Events\r\n EVENT_FRM_ONBEFORE_PRINT: 63,\r\n EVENT_FRM_ONAFTER_PRINT: 64,\r\n};\r\n","import fieldProps from './fieldProps';\r\nimport formProps from './formProps';\r\n\r\nconst IProperty = {\r\n ...fieldProps,\r\n ...formProps,\r\n} as const;\r\n\r\nexport default IProperty;\r\n","import IProperty from '../constants/IProperty';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { Field } from '../Field';\r\nimport { File, Grid, Select } from '../fields';\r\nimport { parseMessages } from '../../../../util/api/apiaApi';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TApiaTreeProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type { Execution } from '../../index';\r\n\r\nexport const setAjaxFormResponse = async (\r\n execution: Execution,\r\n response: TFieldAjaxEventResponsePayload,\r\n) => {\r\n const forms = arrayOrArray(response.form);\r\n for (let i = 0; i < forms.length; i += 1) {\r\n const formId = forms[i].i;\r\n const form = forms[i];\r\n const [frmParent, id] = formId.split('_');\r\n const apiaForm = execution.getFormById(id, frmParent as 'E');\r\n\r\n arrayOrArray(form.cusCmp).forEach((c) => {\r\n apiaForm\r\n ?.getCustomComponentByFldId(Number.parseInt(String(c.id)))\r\n ?.processResult({ processResult: { state: c.state } });\r\n });\r\n\r\n /** Refresh the updated grids */\r\n const changedGrids = arrayOrArray(form.changedGrids.grdId);\r\n changedGrids.forEach(({ id }) => {\r\n (apiaForm?.getFieldById(id) as Grid)?.refresh();\r\n });\r\n\r\n if (!apiaForm) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: `Form with id ${formId} not found`,\r\n }),\r\n );\r\n\r\n continue;\r\n }\r\n\r\n // Iterate each field element in form element\r\n const ajaxFields = arrayOrArray(forms[i].field);\r\n for (let f = 0; f < ajaxFields.length; f += 1) {\r\n // got id of field to alter\r\n const apiField = apiaForm?.getFieldById(ajaxFields[f].i) as Field<any>;\r\n if (apiField) {\r\n // set field possible VALUES for select/multi and radio\r\n if (ajaxFields[f].possibleValues !== undefined) {\r\n const possibleValuesItems = arrayOrArray(\r\n ajaxFields[f].possibleValues,\r\n );\r\n const items = arrayOrArray(possibleValuesItems[0]?.item);\r\n if (items) {\r\n if (\r\n ['multiple', 'radio', 'select'].includes(\r\n apiField.definition.fieldType,\r\n )\r\n ) {\r\n (apiField as Select).setProperty(\r\n 'possibleValue',\r\n items.map((current) => {\r\n const v = current.v;\r\n const l = current.text;\r\n const value = typeof v === 'boolean' ? String(v) : v;\r\n const label = typeof l === 'boolean' ? String(l) : l;\r\n return {\r\n value,\r\n label,\r\n };\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n ['tree'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const propertiesObj: TApiaTreeProperties =\r\n ajaxFields[f]?.field?.properties || ({} as TApiaTreeProperties);\r\n\r\n Object.keys(propertiesObj).forEach((key) => {\r\n let value = propertiesObj[key as keyof TApiaTreeProperties];\r\n\r\n if (typeof value === 'string') {\r\n const lowerValue = value.toLowerCase();\r\n if (lowerValue === 't' || lowerValue === 'true') {\r\n value = true;\r\n } else if (lowerValue === 'f' || lowerValue === 'false') {\r\n value = false;\r\n }\r\n }\r\n\r\n apiField.setProperty(key, value);\r\n });\r\n const possibleValues = arrayOrArray(\r\n ajaxFields[f]?.field?.possibleValue,\r\n );\r\n apiField.setProperty('possibleValue', possibleValues);\r\n }\r\n if (\r\n ['file'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const fileField = apiField as File;\r\n\r\n if (ajaxFields[f]?.field?.file_prp) {\r\n fileField.loadFromDefinition(\r\n ajaxFields[f]?.field?.file_prp as string,\r\n );\r\n }\r\n }\r\n }\r\n // set VALUE to fldId\r\n if (ajaxFields[f].c !== undefined) {\r\n const { c } = ajaxFields[f];\r\n\r\n let value: any = undefined;\r\n if (typeof c !== 'object' || (c as any).k !== 't') {\r\n // <c k=\"t\" Se usa para marcar campo sin cambios ??????\r\n if (typeof c === 'string') {\r\n value = c;\r\n } else {\r\n /**\r\n * Este procedimiento se usa para concatenar los distintos índices de textarea, editor, etc\r\n */\r\n const valuesArray = arrayOrArray(c?.valueAttr);\r\n value = valuesArray.reduce((reduced, current) => {\r\n return reduced + current.v;\r\n }, '');\r\n }\r\n }\r\n\r\n /**\r\n * Si ponemos que apiField es instanceof FieldWithAttribute generamos una dependencia\r\n * circular que rompe la compilación !!!\r\n */\r\n if ((apiField as any).attribute && value !== undefined) {\r\n (apiField as any).setValue(value, {\r\n force: true,\r\n synchronize: false,\r\n });\r\n }\r\n }\r\n // set PROPERTIES to fldId\r\n if (ajaxFields[f].e !== undefined) {\r\n const ajaxProps = arrayOrArray(ajaxFields[f].e);\r\n for (let c = 0; c < ajaxProps.length; c += 1) {\r\n if (ajaxProps[c]?.f) {\r\n const prop = arrayOrArray(ajaxProps[c]?.f);\r\n for (let p = 0; p < prop.length; p += 1) {\r\n if (prop[p]?.i) {\r\n if (prop[p]?.i) {\r\n if (prop[p]?.v.toLowerCase() === 'f') {\r\n apiField.setProperty(prop[p]?.i, false);\r\n } else if (prop[p]?.v.toLowerCase() === 't') {\r\n apiField.setProperty(prop[p]?.i, true);\r\n } else {\r\n apiField.setProperty(prop[p]?.i, prop[p]?.v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else if (ajaxFields[f]?.field) {\r\n const ajaxProps = ajaxFields[f]?.field?.properties;\r\n apiField.properties = ajaxProps;\r\n }\r\n }\r\n\r\n // Formulario invisible\r\n if (\r\n form.v === 't' &&\r\n String(apiaForm.properties[IProperty.PROPERTY_FORM_HIDDEN]) !== 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, true);\r\n } else if (\r\n form.v === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_HIDDEN)) === 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, false);\r\n }\r\n\r\n // Formulario cerrado\r\n if (\r\n form.c === 't' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) !== 'true'\r\n ) {\r\n apiaForm.toggleFormCollapse();\r\n } else if (\r\n form.c === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) === 'true'\r\n ) {\r\n apiaForm.openForm();\r\n }\r\n }\r\n\r\n if (response.proccess?.p) {\r\n execution.getProcess()?.setPriority(response.proccess.p);\r\n }\r\n\r\n if (response.data) {\r\n parseMessages(execution, response.data);\r\n }\r\n};\r\n","import type { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\nimport { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TCreateNewField = (\r\n execution: Execution,\r\n field: Field | FieldWithAttribute | CustomComponent,\r\n) => IApiaField | null;\r\n\r\nexport type TAsyncCreateNewField = (\r\n execution: Execution,\r\n field: Field | FieldWithAttribute | CustomComponent,\r\n) => Promise<IApiaField | null>;\r\n\r\nlet creator: TCreateNewField | null = null;\r\n\r\nexport const asyncCreateNewField: TAsyncCreateNewField = async (\r\n execution,\r\n fld,\r\n) => {\r\n if (!creator) {\r\n creator = (await import('./createApiaField')).createNewField;\r\n }\r\n\r\n return creator(execution, fld);\r\n};\r\n","import { Field } from '../Field';\n\nexport function getFocusIdentifier(field: Field) {\n const name =\n field.properties.name ||\n (field as any).attribute?.name ||\n field.definition.id;\n\n return `${field.getForm().definition.frmParent}_${field.getForm().definition.formName}_${name}${field.definition.index ? `_${field.definition.index}` : ''}`;\n}\n","import { makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { getLabel, labels } from '../../../util/labels/labels';\r\nimport type {\r\n TApiaFieldBaseDefinition,\r\n TFieldServerEvent,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport type { Form } from './Form';\r\nimport { WithProperties } from './WithProperties';\r\nimport { actions } from './constants/actions';\r\nimport { eventTypes } from './constants/eventTypes';\r\nimport { setAjaxFormResponse } from './events/setAjaxFormResponse';\r\nimport type {\r\n FieldValidationState,\r\n FireEventParameters,\r\n TFieldAjaxEventResponsePayload,\r\n} from './types';\r\nimport type { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type { ApiaFunctions, IApiaField } from '../../../programming';\r\nimport { getCurrentTabsString } from '../../../util/app/getCurrentTabsString';\r\nimport { asyncCreateNewField } from '../../../programming/utils/asynCreateApiaField';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport { getFocusIdentifier } from './util/util';\r\n\r\nexport type TFncParams = {\r\n type: 'V' | 'P' | 'E';\r\n value?: string;\r\n attId?: string | number;\r\n};\r\n\r\nlet af: ApiaFunctions | null = null;\r\n\r\nexport async function getApiaFunctions(execution: Execution) {\r\n if (!af) {\r\n await import('../../../programming/ApiaFunctions').then(\r\n ({ ApiaFunctions }) => (af = new ApiaFunctions(execution)),\r\n );\r\n }\r\n return af!;\r\n}\r\n\r\nexport abstract class Field<\r\n FieldProps extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n } = {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n },\r\n> extends WithProperties<FieldProps> {\r\n protected form: Form = {} as Form;\r\n\r\n definition: State['definition'];\r\n state: Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n } = {\r\n validation: { dirty: false, errorMessage: '', synchronizing: false },\r\n } as Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n };\r\n\r\n constructor({ properties, ...definition }: FieldDefinition) {\r\n super();\r\n\r\n this.properties = properties;\r\n this.definition = definition;\r\n\r\n makeObservable(this, { state: observable, definition: observable });\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions(this.form.execution))\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n let idx: any;\r\n if (getWindow(this.form.execution).IS_EDIT_GRID_MODAL) {\r\n idx = getWindow(this.form.execution).MODAL_INDEX;\r\n } else {\r\n idx = this.definition?.index || 0;\r\n }\r\n return {\r\n ajaxUrl: actions.forms,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n action: 'fireFieldEvent',\r\n frmParent: this.form.definition.frmParent,\r\n frmId: this.form.definition.id,\r\n fldId: this.definition.id,\r\n index: idx,\r\n evtId,\r\n nuevo: true,\r\n preventAsXmlParameter: true,\r\n ...additionalParams,\r\n };\r\n }\r\n\r\n protected async fireScriptEvent(eventName: string): Promise<boolean> {\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n\r\n let result = true;\r\n\r\n if (events.length > 0) {\r\n for (const event of events) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: IApiaField,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n\r\n if (fn === undefined) {\r\n new MessageNotification({\r\n message: getLabel(this.form.execution, 'msgFunction404', {\r\n text: { TOK1: eventName },\r\n }).text,\r\n type: 'error',\r\n });\r\n throw new Error(\r\n getLabel(this.form.execution, 'msgFunction404', {\r\n text: { TOK1: eventName },\r\n }).text,\r\n );\r\n }\r\n\r\n const evtSrc = (await asyncCreateNewField(\r\n this.form.execution,\r\n this,\r\n ))!;\r\n\r\n if ((evtSrc as any).setValue) {\r\n (evtSrc as any).setValue = (value: any) =>\r\n (evtSrc as any)._setValue(value, { fireEvents: false });\r\n }\r\n\r\n result = await fn(\r\n evtSrc,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n\r\n if (result === false) {\r\n break;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message:\r\n labels.errorOnEvent(this.form.execution, event.fncName) +\r\n ', ' +\r\n e,\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n protected async fireAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n const response = await post<TFieldAjaxEventResponsePayload>(\r\n this.form.execution,\r\n await makeApiaUrl(\r\n this.form.execution,\r\n this.getServerEventParams(event.evtId, {\r\n isAjax: true,\r\n }),\r\n ),\r\n {\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n if (response?.data?.success) {\r\n await setAjaxFormResponse(this.form.execution, response.data);\r\n return true;\r\n }\r\n } catch (rejectedValue) {\r\n console.error(rejectedValue);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: String(rejectedValue),\r\n }),\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n protected async fireNoAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const p = this.getServerEventParams(event.evtId, params);\r\n if (\r\n (getWindow(this.form.execution).config as any).execution\r\n .reloadOnNoAjaxEvents\r\n ) {\r\n getWindow(this.form.execution).location.assign(\r\n await makeApiaUrl(this.form.execution, {\r\n ...p,\r\n currentTab: getCurrentTabsString(this.form.execution),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n getWindow(this.form.execution).location.assign(\r\n await makeApiaUrl(this.form.execution, {\r\n ...p,\r\n currentTab: getCurrentTabsString(this.form.execution),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n }\r\n protected async fireServerEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let event = this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n this.getForm().execution.lastFieldFocusedId = getFocusIdentifier(\r\n this as any,\r\n );\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n async fireEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const unlock = this.form.execution.lock();\r\n\r\n try {\r\n let result = await this.fireScriptEvent(eventName);\r\n if (result) {\r\n try {\r\n await this.form.execution.waitForPendingSyncs();\r\n } catch (e) {\r\n console.warn('waitForPendingSyncs failed or timed out', e);\r\n }\r\n\r\n result = await this.fireServerEvent(eventName, params);\r\n }\r\n\r\n return result;\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n\r\n getForm() {\r\n return this.form;\r\n }\r\n\r\n protected hasEventsOfType(eventName: string) {\r\n return (\r\n this.definition.serverEvents?.find((c) => c.evtName === eventName) ||\r\n this.definition.scriptEvents?.find((c) => c.evtName === eventName)\r\n );\r\n }\r\n\r\n protected hasServerAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && c.isAjax,\r\n );\r\n }\r\n\r\n protected hasServerNoAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && !c.isAjax,\r\n );\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n public async validate(): Promise<boolean | Field> {\r\n return true;\r\n }\r\n\r\n markAsRendered() {\r\n this.getForm().markFieldAsRendered(\r\n this.definition.id,\r\n this.definition.index,\r\n );\r\n }\r\n}\r\n","import { TApiaButtonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport type ButtonEvents = 'onClick';\r\n\r\nexport class Button extends Field<TApiaButtonProperties> {\r\n fireEvent(eventName: ButtonEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\nimport { TApiaCaptchaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\n\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaCaptchaDefinition } from '../../../../InitialData/types/fields/TApiaCaptchaDefinition';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\n\r\nexport class Captcha extends Field<\r\n TApiaCaptchaProperties,\r\n TApiaCaptchaDefinition,\r\n {\r\n definition: Omit<TApiaCaptchaDefinition, 'properties'>;\r\n value: string;\r\n url: string;\r\n }\r\n> {\r\n private static emitter = new EventEmitter<{ confirm: null }>();\r\n public static reload() {\r\n this.emitter.emit('confirm', null);\r\n }\r\n\r\n private id: string = '';\r\n\r\n private static confirmParams: Record<string, string> = {};\r\n public static getConfirmParams() {\r\n return this.confirmParams;\r\n }\r\n\r\n constructor(definition: TApiaCaptchaProperties) {\r\n super(definition as TApiaCaptchaDefinition);\r\n this.state.value = '';\r\n this.properties.name = '__captcha__';\r\n\r\n Captcha.emitter.on('confirm', () => {\r\n this.generateImgUrl();\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.id = this.getCaptchaId();\r\n this.generateImgUrl();\r\n }\r\n\r\n private getCaptchaId() {\r\n return `${getWindow(this.form.execution).TAB_ID}${this.form.definition.frmParent}_${this.form.definition.id}`;\r\n }\r\n public getUrl() {\r\n return this.state.url;\r\n }\r\n\r\n public generateImgUrl() {\r\n this.state.url = `${getWindow(this.form.execution).CONTEXT}/captchaImg?captchaName=${this.getId()}&t=${new Date().getTime()}`;\r\n }\r\n\r\n public generateVoiceUrl() {\r\n return `${getWindow(this.form.execution).CONTEXT}/captchaAudio?captchaName=${this.getId()}&t=${new Date().getTime()}&langCode=${getWindow(this.form.execution).LANG_CODE}`;\r\n }\r\n\r\n public getId() {\r\n return this.id;\r\n }\r\n\r\n public setValue(value: string) {\r\n this.state.value = value;\r\n this.state.validation.errorMessage = '';\r\n Captcha.confirmParams = { [this.id]: value };\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n this.id = this.getCaptchaId();\r\n if (this.state.value === '' && !this.getForm().definition.readOnly) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired(\r\n this.form.execution,\r\n );\r\n return false;\r\n } else {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n }\r\n}\r\n","export type RetryConfiguration = {\r\n retries: number;\r\n timeout: number;\r\n};\r\n\r\nexport class TooMuchRetriesException extends Error {}\r\n\r\nfunction timeout(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n\r\n/**\r\n * Ejecuta el callback provisto y verifica el resultado contra el método checkSuccess. En caso de que checkSuccess devuelva false, reintenta en el timeout especificado, siempre que las restricciones de configuration.retries lo permita.\r\n *\r\n * En caso de fallar demasiadas veces, eleva una excepción de tipo TooMuchRetriesException\r\n *\r\n */\r\nexport async function asyncRetry<ReturnType>(\r\n cb: () => Promise<ReturnType>,\r\n checkSuccess: (value: ReturnType) => boolean,\r\n configuration: RetryConfiguration = {\r\n retries: 3,\r\n timeout: 300,\r\n },\r\n): Promise<ReturnType> {\r\n return new Promise<ReturnType>((resolve, reject) => {\r\n (async () => {\r\n const tryIt = async () => {\r\n const res = await cb();\r\n return checkSuccess(res) ? res : null;\r\n };\r\n\r\n for await (const _ of new Array(configuration.retries)) {\r\n const res = await tryIt();\r\n if (res) {\r\n resolve(res);\r\n return;\r\n }\r\n await timeout(configuration.timeout);\r\n }\r\n\r\n reject(new TooMuchRetriesException());\r\n })();\r\n });\r\n}\r\n","export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!Object.is(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!Object.is(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!Object.is(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { isTrue } from '@apia/util';\r\nimport type { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\nexport function isFieldShowAsText(\r\n f: Pick<FieldWithAttribute<any, any, any>, 'properties' | 'getForm'>,\r\n): boolean {\r\n return (\r\n isTrue(f.properties.disabled) ||\r\n isTrue(f.getForm().definition.readonly) ||\r\n isTrue(f.getForm().definition.readOnly) ||\r\n isTrue(f.properties.inputAsText)\r\n );\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttributeState, SetValueOptions } from './types';\r\nimport { Field } from './Field';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { IApiaApiPostConfig } from '../../../util/api/types';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TooMuchRetriesException,\r\n asyncRetry,\r\n} from '../../../util/other/asyncRetry';\r\nimport {\r\n TApiaFieldValueType,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { actions } from './constants/actions';\r\nimport { shallowEqual } from '../../../util/comparators/shallowEqual';\r\nimport { TApiaFieldWithAttributeProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { Form } from './Form';\r\nimport { isFieldShowAsText } from './util/isFieldShowAsText';\r\nexport type TFireEventOptions = {\r\n force?: boolean;\r\n};\r\n\r\nexport class Attribute {\r\n constructor(\r\n public readonly id: string,\r\n public readonly name: string,\r\n public readonly title: string,\r\n public readonly valueType: TApiaFieldValueType,\r\n ) {}\r\n}\r\n\r\nexport abstract class FieldWithAttribute<\r\n FieldProps extends\r\n TApiaFieldWithAttributeProperties = TApiaFieldWithAttributeProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n FieldWithAttributeState<FieldDefinition, FieldProps, ValueType>\r\n> {\r\n #lastOnChangeValue: ValueType | null = null;\r\n protected lastSynchronizationValue: ValueType | null = null;\r\n\r\n public readonly attribute: Attribute;\r\n\r\n constructor({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(definition as FieldDefinition);\r\n\r\n this.attribute = new Attribute(attId, attName, attLabel, valueType);\r\n\r\n this.state.value = value;\r\n\r\n this.state.validation = {\r\n dirty: false,\r\n errorMessage: null,\r\n synchronizing: false,\r\n };\r\n\r\n makeObservable(this, {\r\n attribute: observable,\r\n });\r\n }\r\n\r\n async fireEvent(\r\n eventName: string,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n if (this.getValidationState().dirty) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (eventName === 'onChange') {\r\n if (this.getValue() === this.#lastOnChangeValue && !options?.force) {\r\n return true;\r\n } else {\r\n const res = await super.fireEvent(eventName);\r\n if (res) {\r\n this.#lastOnChangeValue = this.getValue();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return super.fireEvent(eventName);\r\n }\r\n protected async getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>): Promise<ValueType> {\r\n return value;\r\n }\r\n public getValidationState() {\r\n return this.state.validation;\r\n }\r\n public getValue() {\r\n return this.state.value;\r\n }\r\n protected canSetValue(newValue: ValueType): boolean {\r\n return isFieldShowAsText(this) || shallowEqual(newValue, this.getValue());\r\n }\r\n public setValue(newValue: ValueType, options?: SetValueOptions) {\r\n if (\r\n !options?.force &&\r\n (isFieldShowAsText(this) || shallowEqual(newValue, this.getValue()))\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n if (options?.markAsDirty !== false) {\r\n this.form.execution.state.hasChangedAnything = true;\r\n }\r\n if (options?.fireEvents !== false) {\r\n return this.fireEvent('onChange', { force: options?.force });\r\n }\r\n return true;\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ValueType,\r\n ): IApiaApiPostConfig<any> {\r\n return {\r\n postData: {\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n };\r\n }\r\n protected getSynchronizeUrl(params?: Record<string, unknown>) {\r\n return makeApiaUrl(this.form.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'processFieldSubmit',\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attId: this.attribute.id,\r\n index: this.definition.multIdx ?? this.definition.index ?? 0,\r\n timestamp: Date.now(),\r\n isAjax: true,\r\n ...params,\r\n });\r\n }\r\n protected processSynchronizeError(e: unknown) {\r\n if (e instanceof TooMuchRetriesException) {\r\n this.state.validation.dirty = true;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n protected async synchronize(newValue: ValueType) {\r\n if (newValue === this.lastSynchronizationValue) return true;\r\n\r\n const syncPromise = (async () => {\r\n try {\r\n const postData = this.getSynchronizePostConfiguration(newValue);\r\n const response = await asyncRetry(\r\n async () => {\r\n try {\r\n const res = await post<{ success: boolean }>(\r\n this.form.execution,\r\n await this.getSynchronizeUrl(),\r\n postData,\r\n );\r\n return res;\r\n } catch (e) {\r\n this.form.execution.notifications.add(\r\n new MessageNotification({ message: String(e) }),\r\n );\r\n return null;\r\n }\r\n },\r\n (result) => {\r\n const success = !!result?.data?.success;\r\n return success;\r\n },\r\n { retries: 10, timeout: 500 },\r\n );\r\n\r\n const result = response?.data?.success || false;\r\n\r\n if (result) {\r\n this.lastSynchronizationValue = newValue;\r\n this.state.validation.dirty = false;\r\n return true;\r\n }\r\n } catch (e) {\r\n console.error('synchronize error:', e);\r\n this.processSynchronizeError(e);\r\n }\r\n\r\n return false;\r\n })();\r\n\r\n try {\r\n this.form.execution.addPendingPromise(syncPromise);\r\n } catch {\r\n //\r\n }\r\n\r\n // esperamos el resultado real de la sincronización\r\n return await syncPromise;\r\n }\r\n\r\n protected hasValue() {\r\n return this.getValue() !== '';\r\n }\r\n\r\n protected isValidValue() {\r\n return !!this.getValue();\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid =\r\n isFieldShowAsText(this) ||\r\n this.isValidValue() ||\r\n !this.properties.required ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired(this.form.execution);\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n\r\n public setError(err: string) {\r\n this.state.validation.errorMessage = err;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n return {\r\n ...super.getServerEventParams(evtId, additionalParams),\r\n attId: this.attribute.id,\r\n };\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n const initialValue = await this.getInitialValue({\r\n ...this.definition,\r\n properties: this.properties,\r\n attId: this.attribute.id,\r\n attName: this.attribute.name,\r\n attLabel: this.attribute.title,\r\n valueType: this.attribute.valueType,\r\n value: this.state.value,\r\n });\r\n\r\n this.state.value = initialValue ?? ('' as ValueType);\r\n }\r\n}\r\n","import { toBoolean } from '@apia/util';\r\nimport { TApiaCheckboxProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\n\r\ntype CheckboxEvents = 'onClick';\r\n\r\nexport class Checkbox extends FieldWithAttribute<\r\n TApiaCheckboxProperties,\r\n boolean\r\n> {\r\n fireEvent(\r\n eventName: CheckboxEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaCheckboxProperties>): Promise<boolean> {\r\n if (value === '' || value === undefined) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n return Promise.resolve(toBoolean(value));\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { TTranslationState } from './types';\r\nimport { post } from '../../../../util';\r\nimport type { Execution } from '../..';\r\n\r\nexport class Translation {\r\n state: TTranslationState;\r\n\r\n constructor(\r\n public execution: Execution,\r\n state: Pick<TTranslationState, 'id' | 'label' | 'isTranslated'>,\r\n ) {\r\n this.state = {\r\n ...state,\r\n hasChanged: false,\r\n isTranslated: state.isTranslated,\r\n tempValue: '',\r\n };\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n cancelTranslation() {\r\n this.reset();\r\n }\r\n\r\n async readTranslations(url: string) {\r\n if (this.state.remoteValue === undefined) {\r\n const result = await post<{ values: { value: string } }>(\r\n this.execution,\r\n url,\r\n { avoidNormalize: true, avoidTrimXml: true },\r\n );\r\n\r\n const newValue = result?.data?.values?.value;\r\n this.state.tempValue =\r\n newValue !== 'null' ? (result?.data?.values?.value ?? '') : '';\r\n this.state.remoteValue = this.state.tempValue;\r\n }\r\n }\r\n\r\n reset() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n }\r\n\r\n deleteTranslation() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n this.state.isTranslated = false;\r\n }\r\n\r\n setTempValue(str: string) {\r\n this.state.tempValue = str;\r\n this.state.hasChanged = str !== this.state.remoteValue;\r\n }\r\n\r\n submitTranslation(value: string, url: string) {\r\n if (this.state.hasChanged) {\r\n post(this.execution, url, {\r\n postData: { value },\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n postDataTreatment: 'stringify',\r\n });\r\n }\r\n\r\n this.state.isTranslated = this.value !== '';\r\n this.reset();\r\n }\r\n\r\n get langId() {\r\n return this.state.id;\r\n }\r\n\r\n get value() {\r\n return this.state.tempValue;\r\n }\r\n}\r\n","export function parseFakeJSON(fakeJSON: string) {\r\n return [...fakeJSON.matchAll(/(\\d+): '?([^']+)'?/g)].map(([, k, v]) => ({\r\n id: k,\r\n label: v,\r\n }));\r\n}\r\n","import { TApiaFieldWithAttributeBaseProps } from '../../../InitialData/types/TApiaField';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Form } from '../Form';\r\nimport { TApiaTranslatableFieldProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { Translation } from './Translation';\r\nimport { parseFakeJSON } from './util';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { Comparator } from '../../../../util/comparators/shallowEqual';\r\n\r\ninterface InitialTradMap {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport abstract class TranslatableField<\r\n FieldProps extends\r\n TApiaTranslatableFieldProperties = TApiaTranslatableFieldProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends FieldWithAttribute<FieldProps, ValueType, FieldDefinition> {\r\n translations = new Map<string, Translation>();\r\n selectedLanguageId = this.getLanguages()[0]?.id;\r\n isTradLoading = false;\r\n definitionTradParsed: InitialTradMap = {};\r\n\r\n constructor(props: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(props);\r\n makeObservable(this, {\r\n translations: observable,\r\n selectedLanguageId: observable,\r\n isTradLoading: observable,\r\n });\r\n }\r\n\r\n private extractTrad() {\r\n const tradMap: InitialTradMap = {};\r\n const regex = /(\\d+)\\s*:\\s*(true|false)/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(this.definition.trad ?? '{}')) !== null) {\r\n const key = match[1];\r\n const value = match[2] === 'true';\r\n tradMap[key] = value;\r\n }\r\n\r\n this.definitionTradParsed = tradMap;\r\n }\r\n\r\n private getLanguages() {\r\n return arrayOrArray(parseFakeJSON(this.getForm().definition?.langs ?? ''));\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n if (this.getLanguages().length > 0) {\r\n this.extractTrad();\r\n this.getLanguages().forEach((lang) => {\r\n const isTranslated = this.definitionTradParsed[lang.id] ?? false;\r\n this.translations.set(\r\n lang.id,\r\n new Translation(this.form.execution, {\r\n id: lang.id,\r\n label: lang.label,\r\n isTranslated: isTranslated,\r\n }),\r\n );\r\n });\r\n\r\n this.selectedLanguageId = this.getLanguages()[0].id;\r\n }\r\n }\r\n\r\n public cancelTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.reset();\r\n });\r\n }\r\n\r\n public deleteTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.deleteTranslation();\r\n });\r\n }\r\n\r\n public async changeLanguage(langId: string) {\r\n this.selectedLanguageId = langId;\r\n this.syncTranslation();\r\n }\r\n\r\n public getTranslation(id: string) {\r\n return this.translations.get(id);\r\n }\r\n\r\n public getCurrentTranslation() {\r\n return this.translations.get(this.selectedLanguageId);\r\n }\r\n\r\n public getTranslations() {\r\n return this.translations;\r\n }\r\n\r\n public submitTranslations() {\r\n [...this.getTranslations().values()]\r\n .filter((c) => c.state.hasChanged)\r\n .forEach((c) => {\r\n c.submitTranslation(\r\n c.value,\r\n this.getSynchronizeUrl({\r\n react: true,\r\n preventAsXmlParameter: true,\r\n langId: c.langId,\r\n }),\r\n );\r\n });\r\n this.state.validation.errorMessage = null;\r\n }\r\n\r\n public async syncTranslation() {\r\n const langId = this.selectedLanguageId;\r\n this.isTradLoading = true;\r\n\r\n await this.getTranslation(langId)?.readTranslations(\r\n await makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'getFieldTranslations',\r\n frmId: this.getForm().definition.id,\r\n frmParent: this.getForm().definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n langId,\r\n react: true,\r\n }),\r\n );\r\n\r\n this.isTradLoading = false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n const isSuperValid = await super.validate();\r\n let isValid = isSuperValid;\r\n const canValidate =\r\n isSuperValid &&\r\n this.properties.reqTrad &&\r\n this.hasValue() &&\r\n (!this.properties.inputAsText ||\r\n !this.properties.visibilityHidden ||\r\n !this.properties.disabled);\r\n\r\n if (canValidate) {\r\n const translations = [...this.getTranslations().values()];\r\n\r\n const tradNotValidated = translations.find((c) => !c.state.isTranslated);\r\n\r\n if (tradNotValidated) {\r\n this.state.validation.errorMessage = labels.errorTranslateRequired(\r\n this.form.execution,\r\n tradNotValidated.state.label,\r\n );\r\n isValid = false;\r\n } else {\r\n this.state.validation.errorMessage = null;\r\n }\r\n }\r\n return isValid;\r\n }\r\n public setValue(\r\n newValue: ValueType,\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n if (newValue === '') {\r\n this.deleteTranslations();\r\n }\r\n return super.setValue(newValue, options);\r\n }\r\n}\r\n","import { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaEditorProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TFireEventOptions } from '../../FieldWithAttribute';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport type EditorEvents = 'onChange';\r\n\r\nexport class Editor extends TranslatableField<TApiaEditorProperties, string> {\r\n fireEvent(\r\n eventName: EditorEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected isValidValue(): boolean {\r\n return !!new DOMParser().parseFromString(this.getValue(), 'text/html')\r\n .documentElement.textContent;\r\n }\r\n protected getSynchronizePostConfiguration(\r\n value: string,\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n conf.postData!.clearValues = 'true';\r\n return conf;\r\n }\r\n}\r\n","import {\r\n UploaderApi as OriginalUploaderApi,\r\n TModalConfig,\r\n} from '@apia/uploader-controller';\r\nimport { type Execution } from '..';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\n\r\nexport class UploaderApi extends OriginalUploaderApi {\r\n docTypePermittedObjId;\r\n\r\n constructor(\r\n public execution: Execution,\r\n id: string,\r\n public type: 'E' | 'P',\r\n modalConfig: TModalConfig,\r\n ) {\r\n super({\r\n id,\r\n modalConfig: { ...modalConfig, renderers: execution.renderers },\r\n context: {\r\n allowTranslation: type === 'E' && !!getWindow(execution).DOC_LANGS,\r\n CONTEXT: getWindow(execution).CONTEXT,\r\n currentUserLogin: getWindow(execution).CURRENT_USER_LOGIN,\r\n docLangs: getWindow(execution).DOC_LANGS,\r\n everyoneCanUpdate:\r\n (getWindow(execution)\r\n .DOCUMENT_EVERYONE_PERMISSION as any as boolean) !== false,\r\n IN_MONITOR: getWindow(execution).IN_MONITOR as any,\r\n ITHit: getWindow(execution).ITHit,\r\n killSession: () => execution.kill(),\r\n labels: getWindow(execution).labels as any,\r\n notify: (n) => execution.notifications.add(new MessageNotification(n)),\r\n openModal: () =>\r\n execution.environment.openUploaderModal?.(this.modalController!),\r\n ownerCanUpdate: getWindow(execution).DOCUMENT_OWNER_PRIVILEGES as any,\r\n readonly: false,\r\n TAB_ID_REQUEST: getWindow(execution).TAB_ID_REQUEST,\r\n URL_REQUEST_AJAX: getWindow(execution).URL_REQUEST_AJAX,\r\n WEBDAV_INSTALLER_URL: getWindow(execution).WEBDAV_INSTALLER_URL,\r\n WEBDAV_SERVER: getWindow(execution).WEBDAV_SERVER as any,\r\n },\r\n });\r\n this.docTypePermittedObjId =\r\n type === 'E'\r\n ? getWindow(execution).docTypePerEntId\r\n : getWindow(execution).docTypePerProId;\r\n }\r\n\r\n public getLoadFileSystemStructureTree(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n docTypePermittedObjType: this.type,\r\n };\r\n }\r\n\r\n public getLoadFilesForFolderParameters(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n docTypePermittedObjType: this.type,\r\n };\r\n }\r\n\r\n protected getAjaxUploadStartParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n prefix: this.type,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjType: this.type,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n };\r\n }\r\n\r\n protected addPrefix(defaultParameters: Record<string, unknown>) {\r\n return { ...defaultParameters, prefix: this.type };\r\n }\r\n\r\n protected getDocumentInfoParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ) {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getCheckLockDocumentParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ) => {\r\n return this.addPrefix(defaultParameters);\r\n };\r\n\r\n protected getReloadMetadataParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getSaveDroppedFilesParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n elemType: this.type,\r\n elemId: `prmDocumentContainter${this.type}`,\r\n };\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ) {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getMarkFileToSignParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getProcessDroppedFilesPostdata(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId?.toString(),\r\n docTypePermittedObjType: this.type,\r\n };\r\n }\r\n\r\n protected getProcessDroppedFilesParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return { ...defaultParameters, elemType: this.type };\r\n }\r\n\r\n protected getConfirmDropModalParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return { ...defaultParameters, elemType: this.type };\r\n }\r\n\r\n protected getConfirmDropModalPostdata(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n elemType: this.type,\r\n pe: this.docTypePermittedObjId?.toString(),\r\n };\r\n }\r\n\r\n protected getCheckWebDavLockParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getDownloadMultipleDocumentsParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getLoadCurrentDocumentsParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getDeleteDocumentParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n}\r\n","import { downloadUrl } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../util';\r\nimport { File as ExeFile } from '../FormsExecution/fields';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport {\r\n parseFileDefinition,\r\n TFileUploaded,\r\n TModalConfig,\r\n TSaveDroppedFilesConf,\r\n TUploaderFileInfo,\r\n UploaderModalController,\r\n} from '@apia/uploader-controller';\r\n\r\nexport class FormsUploader extends UploaderApi {\r\n constructor(\r\n public execution: Execution,\r\n public type: 'E' | 'P',\r\n modalConfig: TModalConfig,\r\n public field: ExeFile,\r\n ) {\r\n super(\r\n execution,\r\n `${type}_${field.attribute.id}_${field.definition.index ?? ''}`,\r\n type,\r\n modalConfig,\r\n );\r\n this.isEditionMode = getWindow(this.execution).IS_EDIT_GRID_MODAL\r\n ? true\r\n : undefined;\r\n }\r\n isEditionMode;\r\n index() {\r\n return this.field.definition.multIdx ?? this.field.definition.index ?? 0;\r\n }\r\n elemId() {\r\n return `dropUpprDiv${this.field.getForm().definition.frmParent}_${this.field.getForm().definition.id}_${this.field.definition.id}_${this.index()}${\r\n getWindow(this.execution).IS_EDIT_GRID_MODAL ? '_true_Mdl' : ''\r\n }`;\r\n }\r\n\r\n protected buildModalController(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n }): UploaderModalController {\r\n return super.buildModalController(conf);\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n const inProgressFiles = this.state.inProgressFiles;\r\n if (inProgressFiles.length === 1 && files.length)\r\n if (inProgressFiles[0].name !== files[0].name) {\r\n this.state.inProgressFiles = [];\r\n } else return [];\r\n return files.slice(0, 1);\r\n }\r\n\r\n protected getFormParameters() {\r\n return {\r\n frmId: this.field.getForm().definition.id,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n attId: this.field.attribute.id,\r\n index: this.index(),\r\n editionMode: this.isEditionMode,\r\n prefix: this.field.getForm().definition.frmParent,\r\n };\r\n }\r\n\r\n evaluateDeleteDocumentResult(\r\n result: undefined | { success: boolean },\r\n ): boolean {\r\n return !!result?.success;\r\n }\r\n\r\n getAjaxUrl(): string {\r\n return '/apia.execution.FormAction.run';\r\n }\r\n\r\n getAllowedTypesData() {\r\n return {\r\n postData: {\r\n docTypeId: this.field.properties.docType,\r\n forDropElem: true,\r\n },\r\n queryData: {\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n docTypeId: this.field.properties.docType,\r\n frmOut: true,\r\n ...this.getFormParameters(),\r\n },\r\n };\r\n }\r\n\r\n getAjaxUploadFileStatusParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ) {\r\n return {\r\n ...super.getAjaxUploadFileStatusParameters(defaultParameters),\r\n forceDocTypeId: this.field.properties.docType,\r\n\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getAjaxUploadStartParameters({\r\n useDocTypePermitted,\r\n docTypePermittedObjType,\r\n docTypePermittedObjId,\r\n ...defaultParameters\r\n }: Record<string, unknown>) {\r\n const {\r\n docTypePermittedObjId: a,\r\n docTypePermittedObjType: b,\r\n useDocTypePermitted: c,\r\n ...rest\r\n } = super.getAjaxUploadStartParameters(defaultParameters);\r\n return {\r\n ...rest,\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getCheckLockDocumentParameters = ({\r\n prefix,\r\n ...parameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...parameters,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getCheckSignatureParameters = (parameters: Record<string, unknown>) => {\r\n const { frmId, frmParent } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n frmId,\r\n frmParent,\r\n };\r\n };\r\n\r\n getClearTempFilesParameters = ({\r\n elemType,\r\n ...rest\r\n }: Record<string, unknown>) => {\r\n const { frmId, frmParent, index, attId } = this.getFormParameters();\r\n return {\r\n ...rest,\r\n frmParent,\r\n frmId,\r\n attId,\r\n index,\r\n };\r\n };\r\n\r\n getConfirmDropModalParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n const { frmParent } = this.getFormParameters();\r\n return {\r\n ...super.getConfirmDropModalParameters(defaultParameters),\r\n elemType: frmParent,\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getConfirmDropModalPostdata = ({\r\n pe,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n const { editionMode } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n editionMode,\r\n };\r\n };\r\n\r\n getDeleteDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getDocumentInfoParameters(parameters: Record<string, unknown>) {\r\n return {\r\n ...super.getDocumentInfoParameters(parameters),\r\n ajaxUrl: getWindow(this.execution).URL_REQUEST_AJAX,\r\n };\r\n }\r\n\r\n getEditDocumentParameters = ({ action, docId }: Record<string, unknown>) => {\r\n const { prefix, editionMode, ...rest } = this.getFormParameters();\r\n return {\r\n action,\r\n ...rest,\r\n docId,\r\n ajaxUrl: 'apia.execution.FormAction.run',\r\n };\r\n };\r\n\r\n getLoadFilesForFolderParameters: () => Record<string, unknown> = () => {\r\n return {\r\n useDocTypePermitted:\r\n this.state.allowedTypes.length === 1 ? true : undefined,\r\n docTypeForcedId:\r\n this.state.allowedTypes.length === 1\r\n ? this.state.allowedTypes[0].id\r\n : undefined,\r\n txtCantDoc: 0,\r\n loadFolders: true,\r\n };\r\n };\r\n\r\n getLoadFileSystemStructureTree = () => ({\r\n useDocTypePermitted: this.state.allowedTypes.length === 1,\r\n docTypeForcedId: this.docTypePermittedObjId,\r\n });\r\n\r\n getLockDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getMarkFileToSignParameters = ({\r\n docId,\r\n prefix,\r\n ...defaultParameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...super.getMarkFileToSignParameters(defaultParameters),\r\n action: 'sign',\r\n\r\n fldId: this.field.definition.id,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getProcessDroppedFilesParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...defaultParameters,\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n ...rest,\r\n };\r\n };\r\n\r\n getProcessDroppedFilesPostdata = ({\r\n useDocTypePermitted,\r\n docTypePermittedObjId,\r\n docTypePermittedObjType,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n return {\r\n ...super.getProcessDroppedFilesParameters(parameters),\r\n editionMode: this.getFormParameters().editionMode,\r\n };\r\n };\r\n\r\n getReloadMetadataParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...super.getReloadMetadataParameters(defaultParameters),\r\n ...(getWindow(this.execution).IS_EDIT_GRID\r\n ? { editionMode: true }\r\n : null),\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getSaveDroppedFilesParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n const elemId = this.elemId();\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...super.getSaveDroppedFilesParameters(defaultParameters),\r\n fromFormElem: true,\r\n elemType: elemId,\r\n elemId,\r\n ...rest,\r\n };\r\n }\r\n\r\n async downloadVersion(fileId: string, version?: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n if (!file) return;\r\n\r\n if (\r\n getWindow(this.execution).IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n makeApiaUrl(this.execution, {\r\n action: 'downloadDocument',\r\n docId: file.downloadDocId,\r\n version,\r\n }),\r\n );\r\n }\r\n\r\n async downloadDocument(fileId: string, version?: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n const { prefix, ...rest } = this.getFormParameters();\r\n if (!file) return;\r\n\r\n if (\r\n getWindow(this.execution).IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n makeApiaUrl(this.execution, {\r\n action: 'download',\r\n docId: file.downloadDocId,\r\n ajaxUrl: '/page/generic/downloadAttDoc.jsp',\r\n version,\r\n ...rest,\r\n }),\r\n );\r\n }\r\n\r\n loadCurrentDocuments(): Promise<void> {\r\n return null as any as Promise<void>;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(\r\n this.context,\r\n file,\r\n this.field.properties.reqSign || false,\r\n ),\r\n markedToSign: this.field.properties.reqSign || file.markedToSign,\r\n canEdit: file.canEdit ?? true,\r\n canRead: file.canRead ?? true,\r\n };\r\n };\r\n\r\n async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf | undefined,\r\n ): Promise<boolean> {\r\n return await super.saveDroppedFiles(unprocessedFiles, conf);\r\n }\r\n}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FormsUploader } from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { TModalConfig, TUploaderFileInfo } from '@apia/uploader-controller';\r\n\r\nexport class File extends FieldWithAttribute<TApiaFileProperties> {\r\n uploader: FormsUploader = {} as FormsUploader;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FormsUploader(\r\n this.form.execution,\r\n this.getForm().definition.frmParent,\r\n {\r\n allowDocumentsMonitor: !this.properties.fileNotShowDocMon,\r\n allowPickFromDirectories:\r\n this.properties.fileShwFoldTreeBtn !== undefined,\r\n collapseDirectories: !!this.properties.fileCollapseFldStrc,\r\n collapseMetadata: !!this.properties.fileCollapseMetadata,\r\n collapsePermissions: !!this.properties.fileCollapsePermission,\r\n defaultDirectory: this.properties.fileDefFolder,\r\n monitorId: this.properties.documentMonitorCus,\r\n oneClickUpload: !!this.properties.oneClickUpload,\r\n rootFolder: this.properties.fileRootFolder,\r\n showDirectoriesStructure: this.properties.fileShwFoldTreeStr === false,\r\n showExpDate: this.properties.fileExpDate === true,\r\n showMetadata: !this.properties.hideDocMetadata,\r\n showPermissions: !this.properties.hideDocPermissions,\r\n } as TModalConfig,\r\n this,\r\n );\r\n\r\n this.uploader.on('fileUploaded', () => {\r\n this.setError('');\r\n });\r\n\r\n this.uploader.init();\r\n if (this.definition.file_prp) {\r\n const files = parseFakeJSON(this.definition.file_prp) as Record<\r\n number,\r\n TUploaderFileInfo\r\n >;\r\n const mainFile = files[0];\r\n if (mainFile) {\r\n this.uploader.state.files = {\r\n [mainFile.docId]: { ...mainFile, docName: mainFile.name },\r\n };\r\n const otherEntries = Object.entries(files).filter(([k]) => k !== '0');\r\n if (otherEntries.length) {\r\n otherEntries.forEach(([k, file]) => {\r\n this.uploader.setTranslationFile(\r\n { ...file, docName: file.name },\r\n mainFile.docId,\r\n Number(k),\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (\r\n this.properties.disabled ||\r\n this.properties.noModify ||\r\n this.properties.visibilityHidden\r\n ) {\r\n return true;\r\n } else if (\r\n this.properties.required &&\r\n Object.values(this.uploader.state.files).length == 0\r\n ) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired(\r\n this.form.execution,\r\n );\r\n return false;\r\n } else if (this.getForm().definition.frmParent !== 'P') {\r\n const langEntries: [number, string][] = Object.entries(\r\n parseFakeJSON(this.form.definition.langs || '{}') as Record<\r\n number,\r\n string\r\n >,\r\n ).map(([key, value]) => [Number(key), value]);\r\n\r\n const innerMap = [...this.uploader.state.translatedFiles.values()][0];\r\n\r\n const translationValid =\r\n !this.properties.required ||\r\n !this.getForm().definition.langs ||\r\n langEntries.every(([langId, langLabel]) => {\r\n const hasTranslation = innerMap?.has(langId);\r\n if (!hasTranslation) {\r\n this.state.validation.errorMessage = labels.errorTranslateRequired(\r\n this.form.execution,\r\n langLabel,\r\n );\r\n }\r\n return hasTranslation;\r\n });\r\n return translationValid;\r\n }\r\n return true;\r\n }\r\n\r\n public async setValue(\r\n _newValue: any,\r\n _options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n return true;\r\n }\r\n\r\n public loadFromDefinition(def: string) {\r\n if (def) {\r\n const uploadedFile = parseFakeJSON(def ?? '')[0] as TUploaderFileInfo;\r\n\r\n if (uploadedFile) {\r\n this.uploader.state.files = {\r\n [uploadedFile.docId]: {\r\n ...uploadedFile,\r\n docName: uploadedFile.name,\r\n },\r\n };\r\n } else {\r\n this.uploader.state.files = {};\r\n }\r\n }\r\n }\r\n\r\n public async downloadDocument(): Promise<void> {\r\n await this.uploader.downloadDocument(\r\n Object.values(this.uploader.state.files)[0].docId,\r\n );\r\n }\r\n}\r\n","export function noNaN(number: unknown, defaultReturn = 0) {\r\n const returnNumber = Number(number);\r\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\r\n return returnNumber;\r\n}\r\n","import { makeObservable, observable, runInAction } from 'mobx';\r\nimport { Grid } from '.';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n };\r\n\r\n constructor(private grid: Grid) {\r\n makeObservable(this, { state: observable });\r\n this.init();\r\n }\r\n\r\n #unsubscribeTableEvents = () => {};\r\n private init() {\r\n this.#unsubscribeTableEvents();\r\n\r\n const controller = this.grid.controller;\r\n\r\n const u2 = controller.on('selectionChange', (selection) => {\r\n const { paged, currentPage, pages } = this.grid.properties;\r\n const isFirstPage = paged ? String(currentPage) === '1' : false;\r\n const isLastPage = paged ? String(currentPage) === String(pages) : false;\r\n\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.getContainer()?.getRowIndex(c) === 0) &&\r\n isFirstPage\r\n : selection.find((c) => c.getContainer()?.getRowIndex(c) === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ) && isLastPage\r\n : selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ));\r\n });\r\n });\r\n this.#unsubscribeTableEvents = () => {\r\n u2();\r\n };\r\n }\r\n\r\n get showAddButton() {\r\n const { gridQuery, hideGridButtons, hideAddButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return (\r\n !gridQuery && !hideGridButtons && !hideAddButton && !hideIncludeButton\r\n );\r\n }\r\n get showDelButton() {\r\n const { gridQuery, hideGridButtons, hideDelButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return (\r\n !gridQuery && !hideGridButtons && !hideDelButton && !hideIncludeButton\r\n );\r\n }\r\n get showSortButtons() {\r\n const { gridQuery, hideGridButtons, hideOrderButton } =\r\n this.grid.properties;\r\n return !gridQuery && !hideGridButtons && !hideOrderButton;\r\n }\r\n get isSortUpDisabled() {\r\n return this.state.isSortUpDisabled || this.grid.state.isLoading;\r\n }\r\n get isSortDownDisabled() {\r\n return this.state.isSortDownDisabled || this.grid.state.isLoading;\r\n }\r\n get isAddDisabled() {\r\n return this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getState('selection').size === 0 ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n async sortUp() {\r\n this.grid.sortUp();\r\n }\r\n\r\n async sortDown() {\r\n this.grid.sortDown();\r\n }\r\n\r\n async addRow() {\r\n await this.grid.addRow();\r\n }\r\n\r\n async deleteSelectedRows() {\r\n this.grid.deleteRows();\r\n }\r\n}\r\n","import { Cell } from '@apia/table2-controller';\r\nimport type { Field } from '../../Field';\r\n\r\nexport class GridCell extends Cell {\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import { Cell } from '@apia/table2-controller';\r\nimport type { GridEditionModal } from './GridEditionModal';\r\nimport type { Grid } from '.';\r\n\r\nexport class AdditionalCell extends Cell {\r\n constructor(\r\n public grid: Grid,\r\n public getIndex: () => number,\r\n public remove: () => unknown,\r\n public openEditionModal?: (handler: GridEditionModal) => unknown,\r\n ) {\r\n super({ colName: 'additional' });\r\n }\r\n\r\n public get hasEditionModal() {\r\n return this.openEditionModal !== undefined;\r\n }\r\n}\r\n","import { Cell, type CellState } from '@apia/table2-controller';\r\nimport type { Grid } from '.';\r\nimport { Field } from '../../Field';\r\n\r\ntype HeaderCellState = CellState;\r\n\r\nexport class HeaderCell extends Cell<HeaderCellState> {\r\n constructor(\r\n public grid: Grid,\r\n state: CellState,\r\n ) {\r\n super(state);\r\n }\r\n\r\n sort() {\r\n this.grid.fireEvent('gridSort');\r\n }\r\n\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import type { Field } from '../../Field';\r\n\r\n/**\r\n * Esta clase se encarga de recordar los campos que ya fueron accedidos,\r\n * optimizando el tiempo de acceso en grillas de gran tamaño.\r\n */\r\nexport class FieldsCache {\r\n private cached: Record<number, Record<number | string, Field<any>>> = {};\r\n\r\n private getIndex(index: number) {\r\n if (!this.cached[index]) this.cached[index] = {};\r\n return this.cached[index];\r\n }\r\n\r\n clear() {\r\n this.cached = {};\r\n }\r\n\r\n clearIndex(index: number) {\r\n delete this.cached[index];\r\n }\r\n\r\n get(index: number, id: number | string) {\r\n return this.getIndex(index)[id];\r\n }\r\n\r\n set(index: number, id: number | string, field: Field<any>) {\r\n this.getIndex(index)[id] = field;\r\n }\r\n\r\n swap(index1: number, index2: number) {\r\n const row1 = this.getIndex(index1);\r\n this.cached[index1] = this.getIndex(index2);\r\n this.cached[index2] = row1;\r\n }\r\n\r\n truncate(index: number) {\r\n Object.keys(this.cached).forEach((c) => {\r\n if (Number.parseInt(c) >= index) {\r\n delete this.cached[Number.parseInt(c)];\r\n }\r\n });\r\n }\r\n}\r\n","import { shallowEqual } from '@apia/util';\r\nimport { makeApiaUrl, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaModalInputDefinition } from '../../../../InitialData/types/fields/TApiaModalInputDefinition';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\nimport { isFieldShowAsText } from '../../util/isFieldShowAsText';\r\nimport { SetValueOptions } from '../../types';\r\nimport { makeObservable, observable } from 'mobx';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\ntype ModalInputValue = { showValue: string; storeValue?: string };\r\n\r\nexport class ModalInput extends FieldWithAttribute<\r\n TApiaInputProperties,\r\n ModalInputValue\r\n> {\r\n isLoading = false;\r\n\r\n constructor({ value, ...definition }: TApiaModalInputDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n },\r\n value: { storeValue: value, showValue: definition.qry_show_value },\r\n });\r\n\r\n makeObservable(this, { isLoading: observable });\r\n }\r\n\r\n fireEvent(\r\n eventName: InputEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected hasValue(): boolean {\r\n return (\r\n this.getValue().showValue !== '' && this.getValue().storeValue !== ''\r\n );\r\n }\r\n\r\n public async setValueFromInputWrite(value: string) {\r\n this.isLoading = true;\r\n try {\r\n if (\r\n isFieldShowAsText(this) ||\r\n shallowEqual(value, this.getValue().showValue) ||\r\n value === ''\r\n )\r\n return;\r\n if (value !== this.getValue().showValue) {\r\n const result = await post<{\r\n ret_value: { show_value: string; value: string };\r\n }>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n action: 'checkModalValue',\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n }),\r\n {\r\n postData: {\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n qryId: this.definition.qryId,\r\n index: this.definition.index,\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n\r\n if (result?.data?.ret_value) {\r\n const setValueResult = await this.setValue({\r\n storeValue: result?.data?.ret_value.value,\r\n showValue: result?.data?.ret_value.show_value,\r\n });\r\n if (setValueResult) {\r\n this.fireEvent('onChange');\r\n }\r\n this.setError('');\r\n } else {\r\n this.setValue({ showValue: '', storeValue: '' });\r\n this.setError(getWindow(this.form.execution).MSG_VAL_NOT_FOUND);\r\n }\r\n }\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n public async setValueFromModalSelection(rowId: string) {\r\n this.isLoading = true;\r\n\r\n try {\r\n const result = await post<{ row: { cell: string[] } }>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.query.ModalAction.run',\r\n action: 'getValues',\r\n }),\r\n { postData: { id: rowId }, postDataTreatment: 'stringify' },\r\n );\r\n\r\n if (result?.data?.row?.cell) {\r\n const setValueResult = await this.setValue({\r\n storeValue: result.data.row.cell[0],\r\n showValue: result.data.row.cell[1],\r\n });\r\n this.form.execution.setLastModalReturn(result.data.row.cell);\r\n\r\n if (setValueResult) {\r\n this.fireEvent('onModalReturn');\r\n this.fireEvent('onChange');\r\n }\r\n }\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n const isValid =\r\n !!this.getValue().storeValue ||\r\n !this.properties.required ||\r\n this.properties.inputAsText ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n if (!isValid) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired(\r\n this.form.execution,\r\n );\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n public setValue(newValue: any, options?: SetValueOptions) {\r\n if (\r\n !options?.force &&\r\n (isFieldShowAsText(this) || shallowEqual(newValue, this.getValue()))\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n if (options?.markAsDirty !== false) {\r\n this.form.execution.state.hasChangedAnything = true;\r\n }\r\n return true;\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ModalInputValue,\r\n ): IApiaApiPostConfig<any> {\r\n const storeIdValue = this.properties.storeMdlQryResult;\r\n\r\n return {\r\n ...super.getSynchronizePostConfiguration(value),\r\n postData: {\r\n value: storeIdValue\r\n ? [this.getValue().storeValue!, this.getValue().showValue]\r\n : this.getValue().storeValue,\r\n },\r\n };\r\n }\r\n}\r\n","import { TApiaHiddenProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Hidden extends FieldWithAttribute<TApiaHiddenProperties> {}\r\n","import { makeApiaUrl, parseXml, post } from '../../../../../util';\r\n\r\nimport type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport type {\r\n IApiaDataGridColumn,\r\n TApiaGridDefinition,\r\n TApiaGridField,\r\n} from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { actions } from '../../constants/actions';\r\nimport type {\r\n FieldState,\r\n GridActionResponse,\r\n GridColumn,\r\n GridDefinition,\r\n GridEvents,\r\n GridProps,\r\n GridState,\r\n} from './types';\r\nimport { GridEditionModal } from './GridEditionModal';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport {\r\n FocusControllerPlugin,\r\n Row,\r\n TableController,\r\n} from '@apia/table2-controller';\r\nimport type { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport type { Form } from '../../Form';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { GridFooterHandler } from './GridFooterHandler';\r\nimport { GridCell } from './GridCell';\r\nimport { arrayOrArray, Mutex } from '@apia/util';\r\nimport type { FireEventParameters } from '../../types';\r\nimport { AdditionalCell } from './AdditionalCell';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { File } from '../File';\r\nimport { HeaderCell } from './HeaderCell';\r\nimport { TApiaFieldCommonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldsCache } from './FieldsCache';\r\nimport { ModalInput } from '../ModalInput';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { getDocument } from '../../../../../util/dom/getDocument';\r\nimport { Hidden } from '../Hidden';\r\nimport type { Select } from '../Select';\r\n\r\nasync function inlineCaller<T>(cb: () => T, _t: number): Promise<T> {\r\n return cb();\r\n}\r\n\r\nasync function inlineTimeout(cb: () => unknown, _t: number): Promise<true> {\r\n setTimeout(cb, _t);\r\n\r\n return Promise.resolve(true);\r\n}\r\n\r\nexport class Grid extends Field<GridProps, GridDefinition, GridState> {\r\n private rowId = 0;\r\n\r\n protected cache = new FieldsCache();\r\n protected mutex = new Mutex();\r\n protected newRowStates: FieldState[][] = [];\r\n protected initialStates: FieldState[][];\r\n protected fieldsDefinitions: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n\r\n protected readonly managedAttIds = new Set<string | number>();\r\n protected readonly managedAttNames = new Set<string>();\r\n protected readonly managedFieldIds = new Set<string | number>();\r\n protected readonly managedFieldsNames = new Set<string>();\r\n\r\n protected _editionModalHandler: GridEditionModal | null = null;\r\n protected readonly _footerController: GridFooterHandler;\r\n protected readonly tableController: TableController = new TableController({\r\n allowEdition: true,\r\n allowSelection: true,\r\n isSelectionMultiple: true,\r\n });\r\n\r\n public get controller() {\r\n return this.tableController;\r\n }\r\n\r\n public get currentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n public get editionModalHandler() {\r\n return this._editionModalHandler;\r\n }\r\n\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n return (\r\n this.controller.body.rows\r\n .at(-1)\r\n ?.cells.find((c) => c instanceof GridCell) as GridCell\r\n ).getField().definition.index!;\r\n }\r\n\r\n public get footerController() {\r\n return this._footerController;\r\n }\r\n\r\n public get header() {\r\n return this.state.header;\r\n }\r\n\r\n public get isPaged() {\r\n return this.properties.paged;\r\n }\r\n\r\n public get length() {\r\n return this.tableController.body.rows.length;\r\n }\r\n\r\n public get minIndex() {\r\n return Number.isFinite(this.properties.pageSize)\r\n ? (this.properties.currentPage - 1) * this.properties.pageSize\r\n : 0;\r\n }\r\n\r\n public get pageCount() {\r\n return this.properties.pages;\r\n }\r\n\r\n public get pageSize() {\r\n return this.properties.pageSize;\r\n }\r\n\r\n public get selectedIndices() {\r\n return [...this.tableController.getState('selection').values()].map((c) =>\r\n c.getIndex(),\r\n );\r\n }\r\n\r\n public get selectedItems() {\r\n return this.selectedIndices.map((current) => this.getRow(current)!);\r\n }\r\n\r\n public get startIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(\r\n properties.pagedGridSize,\r\n properties.paged ? 5 : Infinity,\r\n ),\r\n\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n hideDocInfoButton: String(properties.hideDocInfoButton) === 'true',\r\n },\r\n });\r\n\r\n this._footerController = new GridFooterHandler(this);\r\n\r\n const fieldsArray = arrayOrArray(field);\r\n this.initialStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n this.fieldsDefinitions = fieldsArray.map(\r\n ({ fieldValue, properties, ...current }) => {\r\n return { ...current, properties: parseFakeJSON(properties) };\r\n },\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n fldId: c.fldId,\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || this.resolveHeaderWidth(c),\r\n hidden: false,\r\n required: false,\r\n fldType: c.fldType,\r\n }));\r\n this.state.isLoading = false;\r\n this.state.isMaximized = false;\r\n\r\n this.controller.on('columnClick', (col) => {\r\n this.sortColumn((col.getState('properties')!.col as GridColumn).fldId);\r\n });\r\n }\r\n\r\n private resolveHeaderWidth(c: IApiaDataGridColumn) {\r\n if (\r\n c.fldType === '9' ||\r\n (c.fldType === '1' && c.dataType === 'D') ||\r\n (c.fldType === '1' && c.hasQuery)\r\n ) {\r\n return '200px';\r\n }\r\n\r\n return '150px';\r\n }\r\n\r\n protected getGridActionFromEventName(eventName: GridEvents) {\r\n switch (eventName) {\r\n case 'gridAdd':\r\n return 'add';\r\n case 'gridColumnSelect':\r\n return undefined;\r\n case 'gridDelete':\r\n return 'delete';\r\n case 'gridSort':\r\n return undefined;\r\n }\r\n }\r\n\r\n protected fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireServerEvent(eventName, {\r\n gridAction: this.getGridActionFromEventName(eventName),\r\n ...params,\r\n });\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n public async addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n addRowsCount: 1,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridAdd'),\r\n },\r\n });\r\n\r\n /**\r\n * Cuando no tengo la definición de la nueva fila, debo obtenerla.\r\n */\r\n const response = await res;\r\n if (response?.data?.gridXml) {\r\n /**\r\n * Si la definición vuelve del server, la establezco en una variable\r\n * local y la uso en el futuro, cada vez que se crea una nueva fila.\r\n */\r\n const xml = parseXml(response.data.gridXml) as TApiaGridDefinition;\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n this.newRowStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n } else {\r\n /**\r\n * En caso de error, tiro excepción con o sin mensaje, pero la excepción\r\n * es necesaria para detener el flujo actual.\r\n */\r\n throw new Error(\r\n !getWindow(this.form.execution).SERVER_MODE\r\n ? 'Something went wrong on the add row action.'\r\n : '',\r\n );\r\n }\r\n\r\n const addedRow = await this.addRowFromDefinitions(\r\n true,\r\n this.fieldsDefinitions.map((c, i) => ({\r\n ...c,\r\n ...this.newRowStates[i][0],\r\n })),\r\n );\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de agregar la fila en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridAdd')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptResult = await this.fireScriptEvent('gridAdd');\r\n\r\n if (!scriptResult || !(await res)?.data?.success) {\r\n (await addedRow).remove();\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }, !this.hasServerAjaxEventsOfType('gridAdd'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public closeEditionModal() {\r\n this._editionModalHandler?.close();\r\n this._editionModalHandler = null;\r\n this.refresh();\r\n }\r\n\r\n public async deleteAllRows() {\r\n this.cache.clear();\r\n\r\n return this.asyncAction(async () => {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n fireEvents: this.hasServerAjaxEventsOfType('gridDelete'),\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n this.controller.body.clear();\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.getIndex();\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index).sort((a, b) => b - a);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n let minIndex = Infinity;\r\n\r\n /**\r\n * Busco el mínimo índice de forma de poder restablecer la selección\r\n * luego de eliminar las filas.\r\n */\r\n deletingIndices.forEach((i) => {\r\n if (i < minIndex) {\r\n minIndex = i;\r\n }\r\n });\r\n\r\n this.cache.truncate(minIndex);\r\n\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridDelete'),\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n deletingIndices.forEach((c) =>\r\n this.controller.body.getRowByIndex(c).remove(),\r\n );\r\n for (let i = minIndex; i < this.controller.body.rows.length; i++) {\r\n this.controller.body.getRowByIndex(i).cells.forEach((c) => {\r\n if (c instanceof GridCell) {\r\n c.getField().definition.index = i;\r\n }\r\n });\r\n }\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridDelete')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptResult = await this.fireScriptEvent('gridAdd');\r\n\r\n if (!scriptResult || !(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridDelete'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async fireScriptEvent(eventName: GridEvents): Promise<boolean> {\r\n return super.fireScriptEvent(eventName);\r\n }\r\n\r\n public async fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters & { mutex: boolean },\r\n ): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n return super.fireEvent(eventName, params);\r\n }, params?.mutex);\r\n }\r\n\r\n public getAllColumns() {\r\n return [...Object.values(this.fieldsDefinitions)].map((f) =>\r\n this.tableController.body.rows.map((c) =>\r\n (c.getCellByColumnName(f.id) as GridCell).getField(),\r\n ),\r\n );\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n\r\n public getCurrentPage() {\r\n return 0;\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getField(field: string, index?: number): Field | Field[] | undefined {\r\n return (\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeName(field, index)\r\n );\r\n }\r\n\r\n public getFieldByAttributeId(\r\n attId: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getRowByFieldIndex(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.id === attId,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as FieldWithAttribute)\r\n ?.attribute.id === attId,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByAttributeName(\r\n attName: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getRowByFieldIndex(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.name === attName,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as FieldWithAttribute)\r\n ?.attribute.name === attName,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldById(\r\n id: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldIds.has(String(id))) {\r\n if (index !== undefined) {\r\n const found =\r\n this.cache.get(index, id) ||\r\n this.getRow(index)?.find((c) => c.definition.id === id);\r\n\r\n this.cache.set(index, id, found);\r\n\r\n return found;\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as Field)?.definition.id ===\r\n id,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByName(\r\n name: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find((c) => c.properties.name === name);\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as Field)?.properties\r\n .name === name,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public getRowByFieldIndex(index: number) {\r\n const row = this.tableController.body.rows.find(\r\n (c) =>\r\n (\r\n c.cells.find((current) => current instanceof GridCell) as GridCell\r\n )?.getField().definition.index === index,\r\n );\r\n if (row) {\r\n return row?.cells\r\n .filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getSelectedRows() {\r\n return this.tableController\r\n .getSelectedRows()\r\n .map((c) => this.getRow(c.getIndex()));\r\n }\r\n\r\n refreshColumnsVisibilities() {\r\n const shownColumns = new Set<string>();\r\n\r\n this.tableController.head.rows[0]?.cells.forEach((c) => {\r\n shownColumns.add(c.getState('colName'));\r\n });\r\n\r\n for (\r\n let i = 0;\r\n i < this.tableController.head.rows[0]?.cells.length || 0;\r\n i++\r\n ) {\r\n for (const row of this.tableController.head.rows) {\r\n const cell = row.cells[i];\r\n\r\n if (cell instanceof HeaderCell && cell.getState('isHidden')) {\r\n shownColumns.delete(cell.getState('colName'));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (const column of new Set(\r\n this.tableController.head.rows[0].cells.map((c) => c.getState('colName')),\r\n )) {\r\n this.tableController.toggleColumnVisibility(\r\n column,\r\n shownColumns.has(column),\r\n );\r\n }\r\n }\r\n\r\n public async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n const headerRow = new Row('header');\r\n if (\r\n this.properties.gridForm ||\r\n (!this.properties.hideDelButton &&\r\n !this.properties.readonly &&\r\n !this.properties.inputAsText &&\r\n !this.getForm().definition.readOnly &&\r\n !this.getForm().definition.readonly)\r\n )\r\n headerRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => -1,\r\n () => {},\r\n ),\r\n );\r\n\r\n const hiddenColumns = new Set<string>();\r\n\r\n this.header.forEach((c) => {\r\n hiddenColumns.add(c.fldId);\r\n });\r\n\r\n for (const def of this.fieldsDefinitions) {\r\n if (!def.properties.visibilityHidden && def.fieldType !== 'hidden') {\r\n hiddenColumns.delete(def.id);\r\n }\r\n }\r\n\r\n for (let index = 0; index < this.initialStates[0]?.length || 0; index++) {\r\n await this.addRowFromDefinitions(\r\n false,\r\n this.fieldsDefinitions.map((c, i) => {\r\n return {\r\n ...c,\r\n ...this.initialStates[i][index],\r\n };\r\n }),\r\n );\r\n }\r\n\r\n this.header.forEach((col, i) => {\r\n let width = String(col.width || 200);\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n // if (hiddenColumns.has(col.fldId)) {\r\n // return;\r\n // }\r\n headerRow.addCell(\r\n new HeaderCell(this, {\r\n colName: col.fldId || String(i),\r\n content: col.label,\r\n domProperties: {\r\n style: { width, maxWidth: width },\r\n title: col.title,\r\n },\r\n properties: { col },\r\n isHidden: hiddenColumns.has(col.fldId),\r\n }),\r\n );\r\n });\r\n\r\n for (const column of hiddenColumns) {\r\n this.tableController.toggleColumnVisibility(column, false);\r\n }\r\n this.controller.head.addRow(headerRow);\r\n\r\n getDocument(this.form.execution).addEventListener?.('keydown', (ev) => {\r\n if (ev.code === 'Escape') {\r\n this.state.isMaximized = false;\r\n }\r\n });\r\n }\r\n\r\n public openEditionModal(handler: GridEditionModal) {\r\n this._editionModalHandler = handler;\r\n handler.open();\r\n }\r\n\r\n public async refresh() {\r\n return this.asyncAction(this.actualRefreshAction.bind(this));\r\n }\r\n\r\n public async sortColumn(fldId: string) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField: fldId,\r\n mutex: true,\r\n });\r\n return true;\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => b - a,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridSort'),\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'down');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptEvent = await this.fireScriptEvent('gridSort');\r\n\r\n if (\r\n !scriptEvent ||\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => a - b,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridSort'),\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'up');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptEvent = await this.fireScriptEvent('gridSort');\r\n\r\n if (\r\n !scriptEvent ||\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.controller.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n public toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const row of this.tableController.body.rows) {\r\n for await (const cell of row.cells) {\r\n const field = cell.getState('properties')?.field;\r\n if (field instanceof Field) {\r\n const result = await field.validate();\r\n if (!result && isValid && !firstInvalid) {\r\n isValid = false;\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n\r\n protected async actualRefreshAction() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n });\r\n\r\n if (res?.data?.gridXml) {\r\n await this.rebuildGrid(res.data.gridXml);\r\n } else {\r\n throw new Error(\"The server didn't return a valid XML response.\");\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected async addRowFromDefinitions(\r\n select: boolean,\r\n definitions?: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {\r\n const pageSize = this.properties.pageSize;\r\n const offset = Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0; // When pageSize is Infinity, we treat it as a single page\r\n const index = this.tableController.body.rows.length + offset;\r\n\r\n if (!definitions) {\r\n definitions = this.fieldsDefinitions.map((current, columnIndex) => {\r\n this.getForm().addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.initialStates[columnIndex][0],\r\n };\r\n });\r\n }\r\n\r\n // Check if pageSize is finite\r\n\r\n const newRow = new Row(String(this.rowId++));\r\n if (\r\n this.properties.gridForm ||\r\n (!this.properties.hideDelButton &&\r\n !this.properties.readonly &&\r\n !this.properties.inputAsText &&\r\n !this.getForm().definition.readOnly &&\r\n !this.getForm().definition.readonly)\r\n )\r\n newRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => newRow.getIndex(),\r\n () => {\r\n this.deleteRows(newRow.getIndex());\r\n },\r\n this.properties.gridForm\r\n ? (handler) => {\r\n this.openEditionModal(handler);\r\n }\r\n : undefined,\r\n ),\r\n );\r\n this.tableController.body.addRow(newRow);\r\n\r\n for await (const field of definitions) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n const fieldProps = parseFakeJSON<TApiaFieldCommonProperties>(\r\n field.properties as any,\r\n );\r\n field.properties = fieldProps;\r\n\r\n const fieldConstructor =\r\n this.form.execution.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor({\r\n ...field,\r\n ...(field as any).fieldValue,\r\n index,\r\n });\r\n await newField.init(this.getForm());\r\n newField.setParentGrid(this);\r\n\r\n if (newField instanceof FieldWithAttribute) {\r\n this.managedAttIds.add(newField.attribute.id);\r\n this.managedAttNames.add(newField.attribute.name);\r\n }\r\n this.managedFieldIds.add(newField.definition.id);\r\n this.managedFieldsNames.add(newField.properties.name);\r\n\r\n if (!(newField instanceof Hidden)) {\r\n this.cache.set(index, newField.definition.id, newField);\r\n\r\n let width = String(\r\n this.header.find((c) => c.fldId === field.id)?.width || 250,\r\n );\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n\r\n newRow.addCell(\r\n new GridCell({\r\n colName: newField.definition.id,\r\n properties: { field: newField },\r\n }),\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n\r\n if (select) {\r\n this.tableController.clearSelection();\r\n this.tableController.toggleRowSelection(newRow, true);\r\n }\r\n\r\n return newRow;\r\n }\r\n\r\n protected async asyncAction<T>(\r\n cb: () => Promise<T>,\r\n mutex = true,\r\n ): Promise<T> {\r\n if (mutex) {\r\n await this.mutex.acquire();\r\n }\r\n try {\r\n this.state.isLoading = true;\r\n const res = await cb();\r\n return res;\r\n } finally {\r\n this.state.isLoading = false;\r\n if (mutex) {\r\n this.mutex.release();\r\n }\r\n }\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const { hideDelButton, shownDeleteButtons, shownEditionButtons, gridForm } =\r\n this.properties;\r\n const mustShowAdditionalColumn =\r\n (!hideDelButton &&\r\n [...shownDeleteButtons.values()].some((c) => c !== false)) ||\r\n (!!gridForm &&\r\n [...shownEditionButtons.values()].some((c) => c !== false));\r\n\r\n this.controller.toggleColumnVisibility(\r\n 'additional',\r\n mustShowAdditionalColumn,\r\n );\r\n }\r\n\r\n protected getRow(index: number) {\r\n return this.tableController.body\r\n .getRowByIndex(index)\r\n ?.cells.filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n protected async rebuildGrid(\r\n xmlString: string | TApiaGridDefinition,\r\n ): Promise<void> {\r\n const xml =\r\n typeof xmlString === 'string'\r\n ? (parseXml(xmlString) as TApiaGridDefinition)\r\n : (xmlString as TApiaGridDefinition);\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray: (\r\n | NonNullable<TApiaGridField['row']>\r\n | NonNullable<TApiaGridField['fieldValue']>\r\n )[][] = fieldsArray.map((field) =>\r\n arrayOrArray((field.fieldValue || field.row)!),\r\n );\r\n\r\n this.properties.pages = xml.pages || this.properties.pages;\r\n this.properties.currentPage = xml.curPage || this.properties.currentPage;\r\n this.properties.visibilityHidden =\r\n xml.properties.visibilityHidden ?? this.properties.visibilityHidden;\r\n\r\n if (statesArray[0].length > this.controller.body.rows.length) {\r\n for (\r\n let i = this.controller.body.rows.length;\r\n i < statesArray[0].length;\r\n i++\r\n ) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i,\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i]?.properties,\r\n value: statesArray[columnIndex][i]?.value,\r\n },\r\n };\r\n });\r\n\r\n await this.addRowFromDefinitions(false, parsedFieldGroups);\r\n }\r\n } else if (statesArray[0].length < this.controller.body.rows.length) {\r\n const removeIndices = new Array(\r\n this.controller.body.rows.length - statesArray[0].length,\r\n )\r\n .fill(0)\r\n .map((_, i) => i + statesArray[0].length);\r\n\r\n removeIndices\r\n .sort((a, b) => b - a)\r\n .forEach((i) => {\r\n this.controller.body.getRowByIndex(i)?.remove();\r\n });\r\n }\r\n\r\n statesArray.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const field = this.getFieldById(id, rowIndex) as Field | undefined;\r\n\r\n if (field) {\r\n const possibleValues = (state as TApiaGridField['row'])\r\n ?.possibleValue;\r\n if (possibleValues) {\r\n (field as Select).setProperty(\r\n 'possibleValue',\r\n arrayOrArray(possibleValues),\r\n );\r\n }\r\n\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = this.startIndex + rowIndex;\r\n if (field instanceof File) {\r\n field.loadFromDefinition((state as any).file_prp); // Apia trae esta prop para los files\r\n } else if (field instanceof ModalInput) {\r\n (field as ModalInput).setValue(\r\n {\r\n showValue:\r\n (state as TApiaGridField['fieldValue'])!.qry_show_value || '',\r\n storeValue: state.value || '',\r\n },\r\n { force: true },\r\n );\r\n } else if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false, force: true });\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.refreshColumnsVisibilities();\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n postData: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n this.form.execution,\r\n await makeApiaUrl(this.form.execution, {\r\n action: 'gridAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n ...postData,\r\n },\r\n );\r\n }\r\n\r\n private swapRows(rows: number[], direction: 'up' | 'down') {\r\n let min = Infinity;\r\n\r\n for (const i of rows) {\r\n min = Math.min(min, i);\r\n\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n\r\n const aRow = this.tableController.body.getRowByIndex(i);\r\n const bRow = this.tableController.body.getRowByIndex(swapIndex);\r\n\r\n // Solamente se ejecuta el swap si ambas filas existen\r\n if (aRow && bRow) {\r\n this.getRow(i).forEach((c) => {\r\n this.cache.clearIndex(c.definition.index!);\r\n this.cache.clearIndex(swapIndex);\r\n c.definition.index = swapIndex;\r\n });\r\n this.getRow(swapIndex).forEach((c) => (c.definition.index = i));\r\n\r\n this.tableController.body.swapRows(aRow, bRow);\r\n\r\n // Forzamos el estado de selección a refrescarse para que se actualicen los botones de subir y bajar\r\n const selection = this.tableController.getState('selection');\r\n selection.forEach((c) => c.toggleSelection(true));\r\n }\r\n }\r\n\r\n if (min < Infinity) {\r\n this.tableController\r\n .getPluginOfType(FocusControllerPlugin)\r\n ?.scrollIntoView(\r\n this.tableController.body.getRowByIndex(min)!.getState('id'),\r\n );\r\n }\r\n }\r\n\r\n public toggleMaximize() {\r\n this.state.isMaximized = !this.state.isMaximized;\r\n }\r\n}\r\n","import { arrayOrArray, noNaN } from '@apia/util';\r\nimport { parseXml } from '../../../../../util';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { Grid } from '../Grid';\r\nimport type { GridActionResponse } from '../Grid/types';\r\nimport { Row } from '@apia/table2-controller';\r\n\r\nexport class GridPaginated extends Grid {\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN(\r\n (this.properties.currentPage - 1) * pageSize -\r\n 1 +\r\n this.controller.body.rows.length,\r\n 0,\r\n );\r\n }\r\n\r\n public addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridAdd')) {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n protected actualDeleteRows(props: {\r\n index?: number | number[];\r\n action?: string;\r\n }) {\r\n let index = props.index;\r\n const action = props.action ?? 'delete';\r\n\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridDelete')) {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.getIndex();\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index)\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: action,\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: action,\r\n rowId: deletingIndices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const minIndex = Math.min(...arrayOrArray(index));\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n\r\n let newSelectedRow: Row | undefined;\r\n\r\n if (currentPage === this.currentPage) {\r\n newSelectedRow =\r\n this.controller.body.rows[minIndex] ||\r\n this.controller.body.rows[minIndex - 1];\r\n } else {\r\n newSelectedRow = this.controller.body.rows.at(-1);\r\n }\r\n\r\n newSelectedRow?.toggleSelection(true);\r\n newSelectedRow?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async deleteAllRows() {\r\n return this.actualDeleteRows({ action: 'deleteAllRows' });\r\n }\r\n\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.actualDeleteRows({ index });\r\n }\r\n\r\n public async gotoPage(page: number): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page: page - 1,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices)\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.getIndex());\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c + 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows[0]?.scrollIntoView();\r\n this.controller.body.rows[0]?.toggleSelection(true);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices)\r\n .sort((a, b) => a - b)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: indices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.getIndex());\r\n\r\n const currentPage = this.currentPage;\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c - 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","import { TApiaImageProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Image extends Field<TApiaImageProperties> {}\r\n","import dayjs from 'dayjs';\r\nimport { getLabel, labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaInputDefinition } from '../../../../InitialData/types/fields/TApiaInputDefinition';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { SetValueOptions } from '../../types';\r\nimport { getDateFormat } from '@apia/util';\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport { TFireEventOptions } from '../../FieldWithAttribute';\r\n\r\n// Enable format-aware strict parsing so invalid dates (e.g., \"31/02/2025\") are rejected instead of auto-rolling to \"03/03/2025\".\r\ndayjs.extend(customParseFormat);\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\n\r\nexport class Input extends TranslatableField<\r\n TApiaInputProperties,\r\n string,\r\n TApiaInputDefinition\r\n> {\r\n private validDate = true;\r\n\r\n fireEvent(\r\n eventName: InputEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n public async setValue(\r\n newValue: string | Date | number,\r\n options?: SetValueOptions,\r\n ): Promise<boolean> {\r\n if (this.attribute.valueType === 'S') {\r\n if (!this.definition.regExp || this.validateRegex(String(newValue))) {\r\n if (String(newValue) !== '') this.state.validation.errorMessage = null;\r\n\r\n return super.setValue(String(newValue), options);\r\n }\r\n } else if (this.attribute.valueType === 'N') {\r\n super.setValue(String(newValue), options);\r\n } else if (this.attribute.valueType === 'D') {\r\n this.validDate = true;\r\n const inFmt = getDateFormat(options?.format);\r\n const outFmt = getDateFormat();\r\n\r\n // If it's a numeric timestamp string (e.g. \"1700000000000\" or \"1700000000\")\r\n if (typeof newValue === 'string') {\r\n const trimmed = newValue.trim();\r\n\r\n // Pure digits → treat as timestamp (seconds or milliseconds)\r\n if (/^\\d+$/.test(trimmed)) {\r\n const digits = trimmed.length;\r\n let ms = Number(trimmed);\r\n if (digits === 10) {\r\n // seconds -> ms\r\n ms = ms * 1000;\r\n }\r\n const d = dayjs(ms);\r\n if (!d.isValid() && trimmed !== '') {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n\r\n // Non-numeric string -> parse using provided input format (strict)\r\n const d = dayjs(trimmed, inFmt, true);\r\n if (!d.isValid() && trimmed !== '') {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n\r\n // If it's a numeric (number) -> treat as timestamp (ms)\r\n if (typeof newValue === 'number') {\r\n const d = dayjs(newValue);\r\n if (!d.isValid()) {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n\r\n if (newValue instanceof Date) {\r\n const d = dayjs(newValue);\r\n if (!d.isValid()) {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private validateRegex(value: string): boolean {\r\n if (!value) {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n\r\n const regex = new RegExp(this.definition.regExp ?? '');\r\n\r\n if (!regex.test(String(value)) && value !== '') {\r\n this.state.validation.errorMessage =\r\n this.properties.regExpMessage || labels.errorRegexNotValidated();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage && !this.validDate) return false;\r\n\r\n return super.validate();\r\n }\r\n\r\n protected isValidValue(): boolean {\r\n return !!String(this.getValue()).trim();\r\n }\r\n}\r\n","import { TApiaLabelProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaLabelDefinition } from '../../../../InitialData/types/fields/TApiaLabelDefinition';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Label extends Field<TApiaLabelProperties, TApiaLabelDefinition> {}\r\n","import { TApiaLinkProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Link extends Field<TApiaLinkProperties> {}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaMultipleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaMultipleDefinition } from '../../../../InitialData/types/fields/TApiaMultipleDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\n\r\nexport class Multiple extends FieldWithAttribute<\r\n TApiaMultipleProperties,\r\n string[]\r\n> {\r\n constructor({\r\n possibleValue,\r\n value,\r\n ...definition\r\n }: TApiaMultipleDefinition) {\r\n super({\r\n ...{\r\n ...definition,\r\n value: arrayOrArray(possibleValue)\r\n .filter((c) => c.selected)\r\n .map((c) => c.value),\r\n },\r\n properties: {\r\n ...definition.properties,\r\n possibleValue: arrayOrArray(possibleValue),\r\n },\r\n });\r\n }\r\n\r\n protected hasValue() {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n public setValue(\r\n newValue: string[],\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n return super.setValue(arrayOrArray(newValue), options);\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid =\r\n !!this.getValue()[0] ||\r\n !this.properties.required ||\r\n this.properties.inputAsText ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired(this.form.execution);\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n}\r\n","import { TApiaPasswordProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Password extends FieldWithAttribute<\r\n TApiaPasswordProperties,\r\n string\r\n> {\r\n protected isValidValue(): boolean {\r\n return !!String(this.getValue()).trim();\r\n }\r\n}\r\n","import { TApiaRadioProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaRadioButtonDefinition } from '../../../../InitialData/types/fields/TApiaRadioButtonDefinition';\r\nimport { Form } from '../../Form';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\ntype RadioEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Radio extends FieldWithAttribute<\r\n TApiaRadioProperties,\r\n number | string,\r\n TApiaRadioButtonDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaRadioButtonDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n await this.fireEvent('onPopulate');\r\n }\r\n\r\n fireEvent(\r\n eventName: RadioEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n public getTextValue(value: any) {\r\n return this.properties.possibleValue\r\n ? arrayOrArray(this.properties.possibleValue).find(\r\n (c) => c.value === value,\r\n )?.label\r\n : value;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { TApiaSelectProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaSelectDefinition } from '../../../../InitialData/types/fields/TApiaSelectDefinition';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\n\r\nexport class Select extends FieldWithAttribute<\r\n TApiaSelectProperties,\r\n string,\r\n TApiaSelectDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaSelectDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n possibleValue: arrayOrArray(possibleValue),\r\n },\r\n });\r\n }\r\n\r\n protected getInitialValue({\r\n properties: { possibleValue },\r\n }: TApiaFieldWithAttributeBaseProps<TApiaSelectProperties>): Promise<string> {\r\n return Promise.resolve(\r\n String(\r\n this.state.value !== ''\r\n ? this.state.value\r\n : (possibleValue?.find((c) => c.selected)?.value ??\r\n (possibleValue?.[0]?.value || '')),\r\n ),\r\n );\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: any,\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(String(value));\r\n return conf;\r\n }\r\n\r\n public getTextValue(value: any) {\r\n return this.properties.possibleValue\r\n ? arrayOrArray(this.properties.possibleValue).find(\r\n (c) => c.value === value,\r\n )?.label\r\n : value;\r\n }\r\n}\r\n","import { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaTextareaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class Textarea extends TranslatableField<\r\n TApiaTextareaProperties,\r\n string\r\n> {\r\n protected isValidValue(): boolean {\r\n return !!String(this.getValue()).trim();\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: string,\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n conf.postData!.clearValues = 'true';\r\n return conf;\r\n }\r\n}\r\n","import { TApiaTitleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Title extends Field<TApiaTitleProperties> {}\r\n","import type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport type { TApiaTreeProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type {\r\n TApiaTreeDefinition,\r\n TApiaTreePossibleValue,\r\n} from '../../../../InitialData/types/fields/TApiaTreeDefinition';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { IMobXChildKeeper, MobXTree } from '@apia/tree2-controller';\r\nimport { Form } from '../../Form';\r\nimport { isFieldShowAsText } from '../../util/isFieldShowAsText';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\n\r\nexport type TTreeValue = string | number;\r\ntype TreeEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nfunction getValuesArray(tree: TApiaTreePossibleValue[]) {\r\n return tree.reduce((acc, curr) => {\r\n if (curr.selected) {\r\n acc.push(curr.value);\r\n }\r\n if (curr.possibleValue) {\r\n acc.push(...getValuesArray(arrayOrArray(curr.possibleValue)));\r\n }\r\n return acc;\r\n }, [] as TTreeValue[]);\r\n}\r\n\r\nexport class Tree extends FieldWithAttribute<\r\n TApiaTreeProperties,\r\n TTreeValue[],\r\n TApiaTreeDefinition\r\n> {\r\n controller: MobXTree = {} as MobXTree;\r\n\r\n private parseTreeValues(\r\n parent: IMobXChildKeeper,\r\n pv: TApiaTreePossibleValue | TApiaTreePossibleValue[] | undefined,\r\n ) {\r\n arrayOrArray(pv).forEach((c) => {\r\n const node = parent.create({\r\n id: String(c.value),\r\n initialState: {\r\n label: c.text,\r\n isSelected: this.state.value.find((s) => s === c.value) !== undefined,\r\n isSelectable:\r\n arrayOrArray(c.possibleValue).length === 0 ||\r\n this.properties.selParent,\r\n isExpanded: true,\r\n icon: () => {\r\n if (\r\n (this.properties.parentIcon && c.possibleValue) ||\r\n (this.properties.leafIcon && !c.possibleValue)\r\n ) {\r\n return null;\r\n }\r\n return null;\r\n },\r\n },\r\n });\r\n\r\n this.parseTreeValues(node, c.possibleValue);\r\n });\r\n }\r\n\r\n constructor({ possibleValue, ...props }: TApiaTreeDefinition) {\r\n super(props);\r\n this.properties.possibleValue = arrayOrArray(possibleValue);\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: TTreeValue[],\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n return {\r\n ...conf,\r\n postData: {\r\n ...conf.postData,\r\n clearValues: true,\r\n },\r\n };\r\n }\r\n\r\n fireEvent(\r\n eventName: TreeEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected hasValue(): boolean {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n setProperty<K extends keyof TApiaTreeProperties>(\r\n propName: K,\r\n propValue: TApiaTreeProperties[K],\r\n ) {\r\n if (propName === 'possibleValue') {\r\n this.controller.removeAllChildren();\r\n this.state.value = getValuesArray(\r\n arrayOrArray(propValue as any) as TApiaTreePossibleValue[],\r\n );\r\n this.parseTreeValues(\r\n this.controller,\r\n propValue as TApiaTreeProperties['possibleValue'],\r\n );\r\n }\r\n super.setProperty(propName, propValue);\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.state.value = getValuesArray(this.properties.possibleValue);\r\n\r\n this.controller = new MobXTree({\r\n onSelect: (ev) => {\r\n if (\r\n isFieldShowAsText(this) ||\r\n this.properties.disabled ||\r\n this.properties.readOnly ||\r\n this.properties.readonly ||\r\n this.getParentGrid()?.properties.readonly\r\n ) {\r\n return false;\r\n } else {\r\n const selection = [...ev.values()].map((c) => c.id);\r\n this.setValue(selection, { markAsDirty: false });\r\n if (selection.length === 0) {\r\n this.setValue([], { markAsDirty: false });\r\n }\r\n return true;\r\n }\r\n },\r\n isMultiple: this.properties.multiselect,\r\n toggleNodesOnLabelClick: !this.properties.selParent,\r\n });\r\n\r\n this.setProperty(\r\n 'possibleValue',\r\n arrayOrArray(this.properties.possibleValue),\r\n );\r\n }\r\n\r\n protected isValidValue() {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n public async setValue(\r\n newValue: TTreeValue[],\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n const res = await super.setValue(newValue, options);\r\n\r\n if (res) {\r\n this.controller.setSelectedNodes(new Set(newValue.map((c) => String(c))));\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n","import {\r\n Scheduler,\r\n TScheduleResult,\r\n TSchInfoResult,\r\n TTskSchDay,\r\n} from '@apia/scheduler-controller';\r\nimport { TApiaSchedulerProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { get, makeApiaUrl, post } from '../../../../../util';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport dayjs from 'dayjs';\r\nimport { getDateFormat } from '@apia/util';\r\n\r\nexport class SchedulerField extends Field<TApiaSchedulerProperties> {\r\n private _schedController: Scheduler | undefined = undefined;\r\n constructor(definition: TApiaFieldBaseDefinition<TApiaSchedulerProperties>) {\r\n super(definition);\r\n }\r\n\r\n async deleteDate() {\r\n const res = await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'clearExecutionSchedulerSelectedDay',\r\n }),\r\n );\r\n\r\n if (res?.data?.success) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get parsedInitialProperties() {\r\n const value = String(this.properties.value);\r\n let start = 0;\r\n let end = 0;\r\n start = value?.indexOf('loadSchedExec');\r\n start += 14;\r\n\r\n end = value?.indexOf(';</div>');\r\n end -= 1;\r\n\r\n const strParts = value\r\n ?.slice(start, end)\r\n .replaceAll(`'`, ``)\r\n .replaceAll(' ', '');\r\n const arrParts = strParts.split(',');\r\n\r\n return {\r\n schId: arrParts[1],\r\n proId: arrParts[2],\r\n proVerId: arrParts[3],\r\n tskId: arrParts[4],\r\n showDisponibility: arrParts[5],\r\n showAttributes: arrParts[6],\r\n };\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this._schedController = new Scheduler(\r\n this.parsedInitialProperties,\r\n {\r\n loadWeek: this.loadWeek.bind(this),\r\n deleteDate: this.deleteDate.bind(this),\r\n markDay: this.markDay.bind(this),\r\n loadInfo: this.loadInfo.bind(this),\r\n selectDayHandler: this.selectDayHandler.bind(this),\r\n },\r\n 'Scheduler',\r\n getWindow(this.getForm().execution),\r\n );\r\n if (this._schedController) this._schedController.loadWeek();\r\n }\r\n\r\n async loadWeek(\r\n weekDay: string,\r\n schId: string,\r\n proId: string,\r\n proVerId: string,\r\n tskId: string,\r\n ) {\r\n const res = await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'getExecutionSchedulerWeek',\r\n weekDay,\r\n schId,\r\n proId,\r\n proVerId,\r\n tskId,\r\n }),\r\n );\r\n return res?.data ?? null;\r\n }\r\n\r\n async loadInfo(\r\n schId: string,\r\n weekDay: string,\r\n dayNumber: number,\r\n hour: string,\r\n ) {\r\n const res = await post<TSchInfoResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'getExecutionSchedulerDayInfo',\r\n schId,\r\n weekDay,\r\n dayNumber,\r\n hour,\r\n }),\r\n );\r\n return res?.data?.pro_instances?.pro_instance ?? [];\r\n }\r\n\r\n async markDay(weekDay: string, hour: string, dayNumber: number) {\r\n await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'setExecutionSchedulerSelectedDay',\r\n weekDay,\r\n hour,\r\n dayNumber,\r\n }),\r\n );\r\n }\r\n async selectDayHandler({\r\n cellId,\r\n currentDayDefinition,\r\n dayNumber,\r\n hour,\r\n weekDay,\r\n }: {\r\n cellId: string;\r\n weekDay: string;\r\n dayNumber: number;\r\n hour: string;\r\n currentDayDefinition: TTskSchDay;\r\n }) {\r\n await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'setExecutionSchedulerSelectedDay',\r\n weekDay,\r\n hour,\r\n dayNumber,\r\n }),\r\n )\r\n .then((response) => {\r\n if (response?.data?.success) {\r\n this._schedController?.setState({\r\n ...this._schedController.state,\r\n selectedCell: cellId,\r\n selectedDay: {\r\n hour: String(hour),\r\n day: dayjs(weekDay, getDateFormat())\r\n .add(Number(dayNumber) - 1, 'day')\r\n .format(getDateFormat()),\r\n mondayWeek: String(\r\n dayjs(weekDay, getDateFormat()).format(getDateFormat()),\r\n ),\r\n dayNumber: Number(dayNumber),\r\n morningOrAfternoonSelected: Number(hour),\r\n },\r\n });\r\n if (currentDayDefinition) {\r\n this._schedController?.syncStage(\r\n currentDayDefinition,\r\n Number(hour),\r\n );\r\n }\r\n }\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n get schedController() {\r\n return this._schedController;\r\n }\r\n}\r\n","const FieldConstants = Object.freeze({\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n\r\n // Mensajes de error\r\n WRONG_ATT_TYPE_ERROR:\r\n 'Component does not support attributes of type <TOK>. Contact system administrator',\r\n\r\n // Keys almacenadas en los campos\r\n STORE_KEY_FIELD: 'field',\r\n STORE_KEY_FORM: 'form',\r\n\r\n PROPERTY_ARIA_DESCRIPTION: 'ariaDescription',\r\n PROPERTY_ARIA_LABEL: 'ariaLabel',\r\n PROPERTY_ALT: 'alt',\r\n PROPERTY_AUTO_COMPLETE: 'autoComplete',\r\n PROPERTY_AUTO_FOCUS: 'autoFocus',\r\n PROPERTY_INPUT_TYPE: 'inputType',\r\n PROPERTY_PLACE_HOLDER: 'placeHolder',\r\n PROPERTY_TITLE: 'title',\r\n});\r\n\r\nexport default FieldConstants;\r\n","const FormConstants = Object.freeze({\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n});\r\n\r\nexport default FormConstants;\r\n","import FieldConstants from './FieldConstants';\r\nimport FormConstants from './FormConstants';\r\n\r\nexport const IProperty = {\r\n ...FieldConstants,\r\n ...FormConstants,\r\n} as const;\r\n","import { makeAutoObservable } from 'mobx';\r\n\r\nexport class ActionsController {\r\n static CONFIRM = 0;\r\n static NEXT = 1;\r\n static PREVIOUS = 2;\r\n static SIGN = 3;\r\n static SAVE = 4;\r\n static RELEASE = 5;\r\n static DELEGATE = 6;\r\n static SHARE = 7;\r\n static PRINT = 8;\r\n static VIEW_DOCS = 9;\r\n static CLOSE = 10;\r\n static SEND_TO_DESK = 11;\r\n\r\n static BTN_CONFIRM = ActionsController.CONFIRM;\r\n static BTN_DELEGATE = ActionsController.DELEGATE;\r\n static BTN_NEXT = ActionsController.NEXT;\r\n static BTN_PERV = ActionsController.PREVIOUS;\r\n static BTN_RELEASE = ActionsController.RELEASE;\r\n static BTN_SAVE = ActionsController.SAVE;\r\n static BTN_SHARE = ActionsController.SHARE;\r\n static BTN_SIGN = ActionsController.SIGN;\r\n\r\n private static _instance: ActionsController;\r\n public static get instance(): ActionsController {\r\n if (!ActionsController._instance) {\r\n ActionsController._instance = new ActionsController();\r\n }\r\n return ActionsController._instance;\r\n }\r\n private constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n private buttons = new Map<number, { disabled?: boolean; hidden?: boolean }>();\r\n\r\n private get(id: number) {\r\n if (!this.buttons.has(id)) {\r\n this.buttons.set(id, {});\r\n }\r\n return this.buttons.get(id)!;\r\n }\r\n\r\n public disable(id: number) {\r\n this.get(id).disabled = true;\r\n }\r\n public enable(id: number) {\r\n this.get(id).disabled = false;\r\n }\r\n public hide(id: number) {\r\n this.get(id).hidden = true;\r\n }\r\n public isDisabled(id: number) {\r\n return !!this.get(id).disabled;\r\n }\r\n public isHidden(id: number) {\r\n return !!this.get(id).hidden;\r\n }\r\n public show(id: number) {\r\n this.get(id).hidden = false;\r\n }\r\n}\r\n","import type { Execution } from '../main/Execution';\r\nimport { Field } from '../main/Execution/FormsExecution/Field';\r\nimport { ApiaForm } from './ApiaForm';\r\nimport FieldConstants from './constants/FieldConstants';\r\nimport type { IApiaField } from './types';\r\n\r\nexport abstract class ApiaField<\r\n Props extends typeof FieldConstants = typeof FieldConstants,\r\n> implements IApiaField<Props>\r\n{\r\n #execution: Execution;\r\n #field: Field<any>;\r\n\r\n constructor(execution: Execution, field: Field<any>) {\r\n this.#execution = execution;\r\n this.#field = field;\r\n }\r\n\r\n get fldType() {\r\n return this.#field.definition.fieldType;\r\n }\r\n\r\n get fldId() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n get form() {\r\n return new ApiaForm(this.#execution, this.#field.getForm());\r\n }\r\n\r\n get index() {\r\n return this.#field.definition.index || 0;\r\n }\r\n\r\n setProperty<K extends keyof Props>(name: Props[K], value: unknown) {\r\n this.#field.setProperty(name as any, value);\r\n }\r\n\r\n getProperty<K extends keyof Props>(name: Props[K]): unknown {\r\n return this.#field.getProperty(name as any);\r\n }\r\n\r\n setFocus(): IApiaField | null {\r\n throw new Error('Method not implemented. ');\r\n }\r\n isInGrid(): boolean {\r\n return !!this.#field.properties.inGrid;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Button } from '../../main/Execution/FormsExecution/fields';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface TTextFieldProperties extends TApiaFieldCommonProperties {\r\n value?: string;\r\n}\r\nexport interface IButtonField extends IApiaField {\r\n fireClickEvent(): void;\r\n getValue(): string | null;\r\n}\r\n\r\nexport default class ButtonField extends ApiaField implements IButtonField {\r\n #field: Button;\r\n\r\n constructor(execution: Execution, field: Button) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n fireClickEvent(): void {\r\n if (this.#field.definition.id) {\r\n this.#field.fireEvent('onClick');\r\n }\r\n }\r\n\r\n getValue(): string | null {\r\n if (this.#field.definition.id) {\r\n return this.#field.properties.value ?? '';\r\n }\r\n return null;\r\n }\r\n\r\n clearValue(): void {\r\n this.#field.properties.value = '';\r\n }\r\n\r\n setValue(value: string): void {\r\n this.setProperty('value', value);\r\n }\r\n}\r\n","import type { Execution } from '../main/Execution';\r\nimport type {\r\n Attribute,\r\n FieldWithAttribute,\r\n} from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { SetValueOptions } from '../main/Execution/FormsExecution/types';\r\nimport type { TApiaFieldWithAttributeProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaField } from './ApiaField';\r\n\r\nexport class ApiaAttribute {\r\n #attribute: Attribute;\r\n constructor(attribute: Attribute) {\r\n this.#attribute = attribute;\r\n }\r\n\r\n get attLabel() {\r\n return this.#attribute.title;\r\n }\r\n\r\n get name() {\r\n return this.#attribute.name;\r\n }\r\n get id() {\r\n return this.#attribute.id;\r\n }\r\n get valueType() {\r\n return this.#attribute.valueType;\r\n }\r\n}\r\n\r\nexport class ApiaFieldWithAttribute<T = string | boolean> extends ApiaField {\r\n #field: FieldWithAttribute;\r\n\r\n constructor(execution: Execution, field: FieldWithAttribute) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n get attribute() {\r\n return new ApiaAttribute(this.#field.attribute);\r\n }\r\n\r\n clearValue() {\r\n this.#field.setValue('');\r\n }\r\n\r\n getValue() {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: T) {\r\n this.#field.setValue(v);\r\n }\r\n protected _setValue(v: T, options: SetValueOptions) {\r\n this.#field.setValue(v, options);\r\n }\r\n\r\n getLabel(): string | null | void {\r\n return this.#field.attribute.title;\r\n }\r\n\r\n getProperty<K extends keyof TApiaFieldWithAttributeProperties>(\r\n name: TApiaFieldWithAttributeProperties[K],\r\n ): unknown {\r\n return super.getProperty(name as any);\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class EditorField extends ApiaFieldWithAttribute {}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Select } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport type TOptionsAsArray = PossibleValue[];\r\n\r\nexport default class SelectField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Select;\r\n constructor(execution: Execution, field: Select) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions() {\r\n return arrayOrArray(this.#field.properties.possibleValue);\r\n }\r\n\r\n getTextValue(value: string) {\r\n return this.#field.getTextValue(value);\r\n }\r\n\r\n // adds a option to the select field\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n label: showValue,\r\n });\r\n }\r\n }\r\n\r\n // overwrite all options in select field\r\n setOptions(optionsArray: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = arrayOrArray(optionsArray);\r\n }\r\n }\r\n\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n\r\n // get selected option either as array or object key/value\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n const arr = arrayOrArray(this.#field.properties.possibleValue);\r\n if (this.#field.definition.id) {\r\n if (asObject) {\r\n let obj = null;\r\n arr.forEach((c) => {\r\n if (c.selected) {\r\n obj = c;\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return arrayOrArray(arr.find((c) => c.selected));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedText(): string | null {\r\n if (this.#field.definition.id) {\r\n return (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.selected,\r\n )?.label ?? ''\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // // remove all select options\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Input } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class InputField extends ApiaFieldWithAttribute {\r\n #field: Input;\r\n constructor(execution: Execution, field: Input) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): number | string | boolean | null {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: string): void {\r\n if (this.#field.attribute.valueType === 'D') {\r\n this.#field.setValue(v, { format: 'd/m/Y' });\r\n } else {\r\n this.#field.setValue(v);\r\n }\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { Tree } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport default class TreeField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Tree;\r\n constructor(execution: Execution, field: Tree) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n setValue(v: string | number | (string | number)[]): void {\r\n this.#field.setValue(arrayOrArray(v));\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { isTrue } from '@apia/util';\r\n\r\nexport default class CheckField extends ApiaFieldWithAttribute {\r\n clearValue(): void {\r\n this.setValue(false);\r\n }\r\n\r\n setValue(value: string | boolean | number): void {\r\n // accepts 1/0 or true/false as values\r\n let val;\r\n const isBool = isTrue(value as unknown as string);\r\n if (isBool === true || isBool === false) {\r\n val = isBool;\r\n } else {\r\n throw new Error(\r\n 'Apia JSApi Error: The function setValue for a Checkbox field only accepts boolean or string type for value parameter.',\r\n );\r\n }\r\n super.setValue(val);\r\n }\r\n}\r\n","import { PossibleValue } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Radio } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class RadioField extends ApiaFieldWithAttribute {\r\n #field: Radio;\r\n constructor(execution: Execution, field: Radio) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions() {\r\n return arrayOrArray(this.#field.properties.possibleValue);\r\n }\r\n\r\n clearOptions(): void | null {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = [];\r\n }\r\n }\r\n\r\n getTextValue(value: string) {\r\n return this.#field.getTextValue(value);\r\n }\r\n\r\n addOption(\r\n radioValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n const isValueIsRepeated = radioValues.some((c) => {\r\n return c.value === radioValue.toString();\r\n });\r\n\r\n if (allowRepeatedValue || !isValueIsRepeated) {\r\n radioValues.push({\r\n value: radioValue.toString(),\r\n label: showValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setOptions(options: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = options;\r\n }\r\n }\r\n\r\n removeOption(radioValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== radioValue,\r\n );\r\n }\r\n }\r\n\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue | null {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n const selected = radioValues.find((c) => c.selected);\r\n if (!selected) return null;\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n options.set(String(selected?.value), selected);\r\n return options;\r\n } else {\r\n return selected;\r\n }\r\n }\r\n\r\n getSelectedText(): string | undefined | null {\r\n if (this.#field.definition.id) {\r\n const possibleValue = arrayOrArray(this.#field.properties.possibleValue);\r\n if (possibleValue) {\r\n return possibleValue.find((c) => c.selected)?.label;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Multiple } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class MultipleField extends ApiaFieldWithAttribute<string[]> {\r\n #field: Multiple;\r\n constructor(execution: Execution, field: Multiple) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n label: showValue,\r\n });\r\n }\r\n }\r\n setValue(value: string[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.setValue(value);\r\n }\r\n }\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const selected = arrayOrArray(\r\n this.#field.properties.possibleValue,\r\n ).filter((c) => c.selected);\r\n\r\n if (selected) {\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n selected.forEach((c) => options.set(String(c.value), c));\r\n return options;\r\n }\r\n\r\n return selected;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getOptions() {\r\n return arrayOrArray(this.#field.properties.possibleValue);\r\n }\r\n\r\n setOptions(optionsArray: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = arrayOrArray(optionsArray);\r\n }\r\n }\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class HiddenField extends ApiaFieldWithAttribute {}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class AreaField extends ApiaFieldWithAttribute {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Image } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IImageField extends IApiaField {\r\n getValue(): null;\r\n setValue(): null;\r\n getLabel(): void;\r\n clearValue(): null;\r\n}\r\n\r\nexport default class ImageField extends ApiaField implements IImageField {\r\n #field: Image;\r\n constructor(execution: Execution, field: Image) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n\r\n getValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Link } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ILinkField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class LinkField extends ApiaField implements ILinkField {\r\n #field: Link;\r\n constructor(execution: Execution, field: Link) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n if (this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ITextField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class TextField extends ApiaField implements ITextField {\r\n #field: Field;\r\n constructor(execution: Execution, field: Field) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n setValue(value: string): void {\r\n this.setProperty('value', value);\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport class CustomComponentField {\r\n #field: CustomComponent;\r\n constructor(field: CustomComponent) {\r\n this.#field = field;\r\n }\r\n\r\n fireEvent(name: string) {\r\n this.#field.fireEvent(name);\r\n }\r\n getProperty(name: string): any {\r\n return this.#field.getProperty(name);\r\n }\r\n setFocus(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isInGrid(): boolean {\r\n return false;\r\n }\r\n getStringValue(attName: string) {\r\n return this.#field.getStringValue(attName);\r\n }\r\n getValue(attName: string, index = 0) {\r\n return this.#field.getValue(attName, index);\r\n }\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: any,\r\n ): void {\r\n this.#field.setProperty(name, value);\r\n }\r\n setStringValue(attName: string, value: string) {\r\n return this.#field.setStringValue(attName, value);\r\n }\r\n setValue(attName: string, value: any, index = 0) {\r\n return this.#field.setValue(attName, value, index);\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { ModalInput } from '../../main/Execution/FormsExecution/fields';\r\nimport type {\r\n Button,\r\n Captcha,\r\n Checkbox,\r\n Editor,\r\n File,\r\n Grid,\r\n Hidden,\r\n Image,\r\n Input,\r\n Label,\r\n Link,\r\n Multiple,\r\n Password,\r\n Radio,\r\n Select,\r\n Textarea,\r\n Title,\r\n Tree,\r\n} from '../../main/Execution/FormsExecution/fields';\r\nimport FieldConstants from '../constants/FieldConstants';\r\nimport {\r\n ButtonField,\r\n CaptchaField,\r\n CheckField,\r\n EditorField,\r\n FileUploaderField,\r\n HiddenField,\r\n ImageField,\r\n InputField,\r\n LinkField,\r\n ModalInputField,\r\n MultipleField,\r\n PasswordField,\r\n RadioField,\r\n SelectField,\r\n TextAreaField,\r\n TextField,\r\n TreeField,\r\n} from '../fields';\r\nimport { CustomComponentField } from '../fields/CustomComponentField';\r\nimport GridField from '../fields/GridField';\r\nimport type { IApiaField } from '../types';\r\nimport type { TCreateNewField } from './asynCreateApiaField';\r\n\r\nexport const createNewField: TCreateNewField = (\r\n execution: Execution,\r\n field,\r\n) => {\r\n if (field instanceof CustomComponent) {\r\n return new CustomComponentField(field) as any;\r\n } else {\r\n const { fieldType } = field.definition;\r\n let newField: IApiaField<any> | null = null;\r\n\r\n if (field instanceof ModalInput) {\r\n return new ModalInputField(execution, field as ModalInput);\r\n }\r\n\r\n switch (fieldType) {\r\n case FieldConstants.TYPE_INPUT:\r\n newField = new InputField(execution, field as Input);\r\n break;\r\n case FieldConstants.TYPE_PASSWORD:\r\n newField = new PasswordField(execution, field as Password);\r\n break;\r\n case FieldConstants.TYPE_SELECT:\r\n newField = new SelectField(execution, field as Select);\r\n break;\r\n case FieldConstants.TYPE_RADIO:\r\n newField = new RadioField(execution, field as Radio);\r\n break;\r\n case FieldConstants.TYPE_CHECK:\r\n newField = new CheckField(execution, field as Checkbox);\r\n break;\r\n case FieldConstants.TYPE_BUTTON:\r\n newField = new ButtonField(execution, field as Button);\r\n break;\r\n case FieldConstants.TYPE_MULTIPLE:\r\n newField = new MultipleField(execution, field as Multiple);\r\n break;\r\n case FieldConstants.TYPE_HIDDEN:\r\n newField = new HiddenField(execution, field as Hidden);\r\n break;\r\n case FieldConstants.TYPE_AREA:\r\n newField = new TextAreaField(execution, field as Textarea);\r\n break;\r\n case FieldConstants.TYPE_GRID:\r\n newField = new GridField(execution, field as Grid);\r\n break;\r\n case FieldConstants.TYPE_IMAGE:\r\n newField = new ImageField(execution, field as Image);\r\n break;\r\n case FieldConstants.TYPE_HREF:\r\n newField = new LinkField(execution, field as Link);\r\n break;\r\n case FieldConstants.TYPE_LABEL:\r\n newField = new TextField(execution, field as Label);\r\n break;\r\n case FieldConstants.TYPE_TITLE:\r\n newField = new TextField(execution, field as Title);\r\n break;\r\n case FieldConstants.TYPE_FILE:\r\n newField = new FileUploaderField(execution, field as File);\r\n break;\r\n case FieldConstants.TYPE_CAPTCHA:\r\n newField = new CaptchaField(execution, field as Captcha);\r\n break;\r\n case FieldConstants.TYPE_TREE:\r\n newField = new TreeField(execution, field as Tree);\r\n break;\r\n case FieldConstants.TYPE_EDITOR:\r\n newField = new EditorField(execution, field as Editor);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return newField;\r\n }\r\n};\r\n","import { ApiaField } from '../ApiaField';\r\nimport { arrayOrArray, Mutex, noNaN } from '@apia/util';\r\nimport { createNewField } from '../utils/createApiaField';\r\nimport { Grid } from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\nimport { getWindow } from '../../util/dom/getWindow';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport default class GridField extends ApiaField {\r\n #execution: Execution;\r\n #field: Grid;\r\n\r\n constructor(execution: Execution, field: Grid) {\r\n super(execution, field);\r\n this.#execution = execution;\r\n this.#field = field;\r\n }\r\n\r\n #mutex = new Mutex();\r\n\r\n async addRow(): Promise<IApiaField[]> {\r\n try {\r\n await this.#mutex.acquire();\r\n const result = await this.#field.addRow();\r\n\r\n if (result) {\r\n return this.getRow(this.#field.finalIndex)!;\r\n }\r\n\r\n return [];\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n clearGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n clearPage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async clearRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n\r\n const row = this.#field.getRowByFieldIndex(index);\r\n\r\n if (!row) {\r\n throw new Error(`Row ${index} not found`);\r\n }\r\n\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n closeForm(): GridField {\r\n this.#field.closeEditionModal();\r\n return this;\r\n }\r\n\r\n async deleteAllRows() {\r\n try {\r\n await this.#mutex.acquire();\r\n await this.#field.deleteAllRows();\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n async deleteGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n deletePage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async deleteRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n this.#field.deleteRows(index);\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n editRow(index: number) {\r\n getWindow(this.#execution).dispatchEvent(\r\n new CustomEvent('openGridEdition', {\r\n detail: { index, grid: this.#field },\r\n }),\r\n );\r\n }\r\n\r\n getSelectedIndexes(useAbsoluteIndex?: boolean) {\r\n return this.#field.controller\r\n .getSelectedRows()\r\n .map(\r\n (row) =>\r\n row.getIndex() +\r\n (useAbsoluteIndex ? +noNaN(this.#field.startIndex) : 0),\r\n );\r\n }\r\n\r\n getAllColumns() {\r\n return this.#field\r\n .getAllColumns()\r\n .map((c) =>\r\n c.map((f) => createNewField(this.#field.getForm().execution, f)),\r\n );\r\n }\r\n\r\n getColumn(fieldName: string) {\r\n const fields = this.#field.getColumn(fieldName);\r\n if (fields) {\r\n return arrayOrArray(fields).map((c) =>\r\n createNewField(this.#field.getForm().execution, c!),\r\n );\r\n }\r\n return [];\r\n }\r\n\r\n getCurrentPage() {\r\n return this.#field.getCurrentPage();\r\n }\r\n\r\n getField(fieldName: string, fieldIndex?: number) {\r\n const fields = this.#field.getField(fieldName, fieldIndex);\r\n\r\n if (fields) {\r\n return fieldIndex !== undefined\r\n ? createNewField(\r\n this.#field.getForm().execution,\r\n arrayOrArray(fields)[0]!,\r\n )\r\n : arrayOrArray(fields)\r\n .map((c) => createNewField(this.#field.getForm().execution, c))\r\n .filter((c): c is IApiaField => Boolean(c));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getPageCount() {\r\n return this.#field.pageCount;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field\r\n .getRowByFieldIndex(index)\r\n ?.map((c) => createNewField(this.#field.getForm().execution, c)!);\r\n }\r\n\r\n getSelection(): IApiaField[][] {\r\n const selected = this.#field.getSelectedRows();\r\n const returnObj: IApiaField[][] = [];\r\n selected.forEach((r) => {\r\n const row: IApiaField[] = [];\r\n r.forEach((c) => {\r\n const fld = createNewField(this.#field.getForm().execution, c);\r\n if (fld) {\r\n row.push(fld);\r\n }\r\n });\r\n returnObj.push(row);\r\n });\r\n return returnObj;\r\n }\r\n\r\n get id() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n isPaged() {\r\n return this.#field.properties.paged;\r\n }\r\n\r\n get rowsCount() {\r\n return this.#field.length;\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.#field.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n toggleDeleteButton(index: number, isShown?: boolean) {\r\n this.#field.toggleDeleteButton(index, isShown);\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n this.#field.toggleEditFormButton(rowIndex, isShown);\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TCaptchaField = IApiaField;\r\n\r\nexport default class CaptchaField extends ApiaField implements TCaptchaField {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { File } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { reaction } from 'mobx';\r\n\r\nexport default class FileUploaderField extends ApiaFieldWithAttribute {\r\n #field: File;\r\n constructor(execution: Execution, field: File) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n onChange(cb: (newValue: unknown) => unknown) {\r\n reaction(\r\n () => {\r\n this.#field.getValue();\r\n },\r\n () => {\r\n cb(this.#field.getValue());\r\n },\r\n { fireImmediately: false },\r\n );\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id && this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n async downloadDocument(): Promise<void> {\r\n await this.#field.downloadDocument();\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\n\r\nexport default class PasswordField extends ApiaField {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { ModalInput } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class ModalInputField extends ApiaFieldWithAttribute {\r\n #field: ModalInput;\r\n constructor(execution: Execution, field: ModalInput) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): any | null {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: any): void {\r\n this.#field.setValue(v);\r\n }\r\n public async setValueFromInputWrite(value: string) {\r\n await this.#field.setValueFromInputWrite(value);\r\n }\r\n}\r\n","import { DataGridField as GridField } from './fields';\r\nimport type { IApiaField, IApiaForm } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from './ApiaFieldWithAttribute';\r\nimport { createNewField } from './utils/createApiaField';\r\nimport type { Form } from '../main/Execution/FormsExecution/Form';\r\nimport type { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { Field } from '../main/Execution/FormsExecution/Field';\r\nimport type { Execution, TModalSize } from '../main/Execution';\r\nimport FormConstants from './constants/FormConstants';\r\n\r\nexport class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n #execution: Execution;\r\n constructor(execution: Execution, form: Form) {\r\n this.#form = form;\r\n this.#execution = execution;\r\n }\r\n\r\n getFrmParent(): string {\r\n return this.#form.definition.frmParent;\r\n }\r\n\r\n getFrmId(): string | null {\r\n return this.#form.definition.id;\r\n }\r\n\r\n getFormName(): string {\r\n return this.#form.definition.formName;\r\n }\r\n getFormTitle(): string {\r\n return this.#form.definition.formTitle;\r\n }\r\n openForm(): void {\r\n this.#form.setProperty('prpFrmClosed', false);\r\n }\r\n closeForm(): void {\r\n this.#form.setProperty('prpFrmClosed', true);\r\n }\r\n getProperty<K extends keyof typeof FormConstants>(\r\n name: (typeof FormConstants)[K],\r\n ): unknown {\r\n return this.#form.getProperty(name as any);\r\n }\r\n setProperty<K extends keyof typeof FormConstants>(\r\n name: (typeof FormConstants)[K],\r\n value: unknown,\r\n ): void {\r\n if (name === 'readOnly') {\r\n throw new Error('Cannot update readonly property on forms');\r\n }\r\n this.#form.setProperty(name, value as any);\r\n }\r\n getCustomComponent(attName: string) {\r\n return this.#form.getCustomComponentByAttName(attName);\r\n }\r\n getField(fld: string | number, index?: number): IApiaField | undefined {\r\n const field = this.#form.getField(fld as string, index);\r\n\r\n if (field) {\r\n return createNewField(this.#execution, field as FieldWithAttribute)!;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(fldId: string) {\r\n const field = this.#form.getFieldById(fldId);\r\n\r\n if (field) {\r\n return createNewField(this.#execution, field as Field);\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldColumn(name: string): IApiaField[] {\r\n return arrayOrArray(this.#form.getFieldByName(name))\r\n .map((c) => createNewField(this.#execution, c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n getAllFields(): IApiaField[] {\r\n return this.#form.allFields\r\n .map((c) => createNewField(this.#execution, c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n clearForm(clearReadonlyFields: boolean, deleteGridsRows: boolean): void {\r\n this.getAllFields().forEach((c) => {\r\n if (deleteGridsRows && c instanceof GridField) {\r\n c.clearGrid();\r\n }\r\n\r\n if (c instanceof ApiaFieldWithAttribute) {\r\n if (!c.getProperty('readonly') || clearReadonlyFields) {\r\n c.setValue('');\r\n }\r\n }\r\n });\r\n }\r\n\r\n hideModal() {\r\n this.#execution.emit('hideFormModal', this.#form);\r\n }\r\n\r\n showAsModal(size: TModalSize = 'finder') {\r\n this.#execution.emit('showFormAsModal', { form: this.#form, size });\r\n }\r\n\r\n renderComponent(componentName: string, el: HTMLElement) {\r\n this.#execution.emit('renderComponent', {\r\n form: this.#form,\r\n componentName,\r\n el,\r\n });\r\n }\r\n}\r\n","import { ActionsController } from './ActionController';\r\nimport type { IApiaField, IApiaForm, IApiaFunctions } from './types';\r\nimport { ApiaForm } from './ApiaForm';\r\nimport type { TFrmParent } from '../main/InitialData/types/TApiaForm';\r\nimport { Execution } from '../main/Execution';\r\nimport { getWindow } from '../util/dom/getWindow';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\ndeclare global {\r\n interface Window {\r\n lastModalReturn: string[];\r\n }\r\n}\r\n\r\nexport class ApiaFunctions implements IApiaFunctions {\r\n #execution: Execution;\r\n\r\n constructor(execution: Execution) {\r\n this.#execution = execution;\r\n }\r\n\r\n toJSNumber(_value: string): number | string {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n toApiaNumber(_value: number): number | string {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n openTab(_title: string, _url: string): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n showMessage(_text: string): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n showConfirm(\r\n _text: string,\r\n _title: string,\r\n _callbackFn: (win: boolean) => unknown,\r\n ): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n\r\n getFormByType(frmName: string, frmType: TFrmParent): IApiaForm | null {\r\n const form = this.#execution.getFormByName(frmName, frmType);\r\n if (form) return new ApiaForm(this.#execution, form);\r\n return null;\r\n }\r\n\r\n admEntity(\r\n entName: string,\r\n entNum?: number,\r\n parameters?: string,\r\n width?: number,\r\n height?: number,\r\n ) {\r\n this.#execution.emit('adminEntity', {\r\n entName,\r\n entNum,\r\n parameters,\r\n width,\r\n height,\r\n });\r\n }\r\n\r\n clearMessages() {}\r\n\r\n clickActionButton(button: number) {\r\n const id = Number(button);\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n this.#execution.flow.confirm();\r\n break;\r\n case ActionsController.NEXT:\r\n this.#execution.flow.next();\r\n break;\r\n case ActionsController.PREVIOUS:\r\n this.#execution.flow.back();\r\n break;\r\n case ActionsController.SAVE:\r\n this.#execution.flow.save();\r\n break;\r\n case ActionsController.RELEASE:\r\n this.#execution.flow.release();\r\n break;\r\n case ActionsController.DELEGATE:\r\n this.#execution.flow.delegate();\r\n break;\r\n case ActionsController.SHARE:\r\n this.#execution.flow.share();\r\n break;\r\n case ActionsController.VIEW_DOCS:\r\n this.#execution.flow.viewDocs();\r\n break;\r\n case ActionsController.PRINT:\r\n this.#execution.flow.print();\r\n break;\r\n case ActionsController.SEND_TO_DESK:\r\n this.#execution.sendToDesktop();\r\n break;\r\n }\r\n }\r\n\r\n disableActionButton(id: number): void {\r\n ActionsController.instance.disable(id);\r\n }\r\n\r\n enableActionButton(id: number): void {\r\n ActionsController.instance.enable(id);\r\n }\r\n\r\n getAllForms(): IApiaForm[] {\r\n return this.#execution\r\n .getAllForms()\r\n .map((c) => new ApiaForm(this.#execution, c));\r\n }\r\n getAllFormsByType(type: 'P' | 'E'): IApiaForm[] {\r\n return this.#execution.getAllForms().reduce<ApiaForm[]>((acc, c) => {\r\n if (c.definition.frmParent === type) {\r\n acc.push(new ApiaForm(this.#execution, c));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getAttField(\r\n attType: 'P' | 'E',\r\n attId: string,\r\n ): IApiaField | IApiaField[] | undefined {\r\n const fields: IApiaField[] = [];\r\n this.getAllFormsByType(attType).forEach((c) =>\r\n fields.push(c.getField(attId) as IApiaField),\r\n );\r\n return fields;\r\n }\r\n\r\n getCurrentLanguageCode(): string | null {\r\n return getWindow(this.#execution).LANG_CODE;\r\n }\r\n\r\n getCurrentProcessName(): string | null {\r\n return this.#execution.environment.properties?.processName ?? '';\r\n }\r\n getCurrentStep(): number | null {\r\n return this.#execution.currentStep;\r\n }\r\n\r\n getCurrentTaskName(): string | null {\r\n return this.#execution.environment.properties?.taskName ?? '';\r\n }\r\n\r\n getEntityForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'E');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getForm(frmName: string, frmType?: string): IApiaForm | null {\r\n if (frmType === 'E') return this.getFormByType(frmName, frmType);\r\n if (frmType === 'P') return this.getFormByType(frmName, frmType);\r\n const eFrm = this.getFormByType(frmName, 'E');\r\n if (eFrm) {\r\n return eFrm;\r\n }\r\n const pForm = this.getFormByType(frmName, 'P');\r\n return pForm;\r\n }\r\n\r\n getLastModalReturn() {\r\n return this.#execution.getLastModalReturn();\r\n }\r\n\r\n getModalReturn() {\r\n return this.getLastModalReturn();\r\n }\r\n\r\n getModalSelectedRow() {\r\n return this.#execution.getLastModalReturn()?.slice(2);\r\n }\r\n\r\n getModalShowValue() {\r\n return this.#execution.getLastModalReturn()[1];\r\n }\r\n\r\n getModalValue() {\r\n return this.#execution.getLastModalReturn()[0];\r\n }\r\n\r\n getProcessForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'P');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getRootPath(): string | null {\r\n try {\r\n return getWindow(this.#execution).APIA_ROOT_CONTEXT;\r\n } catch (e: unknown) {\r\n if (e instanceof Error) {\r\n console.error(`Apia JSApi Error: ${e.message}`);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hideActionButton(id: number): void {\r\n ActionsController.instance.hide(id);\r\n }\r\n\r\n isActionButtonDisabled(id: number) {\r\n return ActionsController.instance.isDisabled(id);\r\n }\r\n isActionButtonHidden(id: number) {\r\n return ActionsController.instance.isHidden(id);\r\n }\r\n\r\n saveTask() {\r\n this.#execution.flow.save();\r\n }\r\n\r\n setLastModalReturn(value: string[]) {\r\n getWindow(this.#execution).lastModalReturn = value;\r\n }\r\n\r\n setStepTitle(stepNumber: number, stepTitle: string): void {\r\n this.#execution.setStepTitle(stepNumber, stepTitle);\r\n }\r\n\r\n showActionButton(id: number): void {\r\n ActionsController.instance.show(id);\r\n }\r\n\r\n viewAdmEntity(entName: string, entNum?: number) {\r\n this.admEntity(entName, entNum);\r\n }\r\n changeTab(index: number[]): void {\r\n if (window.tabsController)\r\n (window.tabsController as any).tabsList.forEach((tab: any, i: number) => {\r\n if (arrayOrArray(index).includes(i)) tab.open();\r\n });\r\n }\r\n}\r\n","import { computed, makeObservable, observable, toJS } from 'mobx';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { actions } from '../constants/actions';\r\nimport { parseXml, post } from '../../../../util';\r\nimport type { Form } from '../Form';\r\nimport { setAjaxFormResponse } from '../events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { ResponseSysMessages } from '../../../../util/api/types';\r\nimport {\r\n ComponentEvent,\r\n TCusCmpStateRequest,\r\n TCustomComponentDefaultResponse,\r\n TCustomComponentDefinition,\r\n} from '../../../InitialData/types/TApiaForm';\r\nimport {\r\n arrayOrArray,\r\n decodeBase64ToUtf8,\r\n DeepReadonly,\r\n encodeStrToBase64Utf8,\r\n} from '@apia/util';\r\nimport { TFncParams } from '../Field';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { ApiaForm, ApiaFunctions } from '../../../../programming';\r\nimport { getWindow } from '../../../../util/dom/getWindow';\r\nimport type { Execution } from '../..';\r\nimport axios, { AxiosRequestConfig } from 'axios';\r\nimport { parseSuccessfulResponse } from '../../../../util/api/apiaApi';\r\n\r\nexport type TCustomComponentState = {\r\n isLoading: boolean;\r\n\r\n attributes: Record<string, any[]>;\r\n properties: Record<string, any>;\r\n additional: any;\r\n\r\n component: any;\r\n};\r\n\r\nexport class CustomComponent {\r\n #hasInited = false;\r\n private form: Form = {} as Form;\r\n private _state: TCustomComponentState = {\r\n isLoading: false,\r\n attributes: {},\r\n properties: {},\r\n additional: {},\r\n component: null,\r\n };\r\n\r\n constructor(\r\n public execution: Execution,\r\n public readonly definition: TCustomComponentDefinition,\r\n ) {\r\n if (definition.error_while_processing) {\r\n throw new Error(\r\n `Cannot initialize custom component ${definition.name}: ${definition.error_while_processing}`,\r\n );\r\n }\r\n\r\n makeObservable<CustomComponent, '_state'>(this, {\r\n _state: observable,\r\n state: computed,\r\n });\r\n this.parseStateObject(definition.state.state);\r\n }\r\n\r\n public get state(): DeepReadonly<TCustomComponentState> {\r\n return toJS(this._state);\r\n }\r\n\r\n public getAdditional<T>() {\r\n return this.state.additional as DeepReadonly<T>;\r\n }\r\n\r\n public getCurrentForm() {\r\n return new ApiaForm(this.execution!, this.form);\r\n }\r\n\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n\r\n private parseStateObject(o: TCusCmpStateRequest) {\r\n if (o.additional) {\r\n try {\r\n this._state.additional = JSON.parse(o.additional);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(\r\n JSON.parse(decodeBase64ToUtf8(c.values)),\r\n );\r\n });\r\n arrayOrArray(o.property).forEach((c) => {\r\n this._state.properties[c.name] = c.value;\r\n });\r\n }\r\n\r\n public async processResult<\r\n Result extends Record<string, unknown> = Record<string, unknown>,\r\n >(res?: TCustomComponentDefaultResponse | null) {\r\n let proceed = true;\r\n const scheduledEvents: string[] = [];\r\n\r\n const newState = res?.processResult?.state;\r\n\r\n if (newState) {\r\n for (const directive of arrayOrArray(newState.directive)) {\r\n if (directive.type === 'RELOAD') {\r\n proceed = false;\r\n getWindow(this.execution).location.assign(\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'reload',\r\n nuevo: true,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n );\r\n } else if (directive.type === 'FIRE') {\r\n scheduledEvents.push(directive.content);\r\n }\r\n }\r\n }\r\n\r\n if (proceed) {\r\n if (res!.ajaxUpdated) {\r\n const result = parseXml(res!.ajaxUpdated);\r\n\r\n setAjaxFormResponse(\r\n this.execution,\r\n result as TFieldAjaxEventResponsePayload & ResponseSysMessages,\r\n );\r\n }\r\n\r\n if (newState) {\r\n this.parseStateObject(newState);\r\n }\r\n\r\n for await (const event of scheduledEvents) {\r\n await this.fireEvent(event);\r\n }\r\n\r\n this._state.isLoading = false;\r\n\r\n return res!.processResult?.state?.result as Result & { success: boolean };\r\n }\r\n }\r\n\r\n protected getScriptEventParams(fncParams: TFncParams[]): unknown[] {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n new ApiaFunctions(this.execution)\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n protected async fireScriptEvents(event: ComponentEvent): Promise<boolean> {\r\n let result = true;\r\n\r\n for await (const script of arrayOrArray(event.script)) {\r\n const def = JSON.parse(script.text) as {\r\n fncName: string;\r\n fncParams: {\r\n type: 'P' | 'E';\r\n attId: number;\r\n }[];\r\n };\r\n\r\n try {\r\n const fn = (window as any)[def.fncName] as (\r\n src: CustomComponent | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n result =\r\n result &&\r\n (await fn(\r\n this,\r\n ...this.getScriptEventParams(arrayOrArray(def.fncParams)),\r\n ));\r\n } catch (e) {\r\n console.error(e);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(this.execution, def.fncName),\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async fireEvent(evtName: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const event = arrayOrArray(this.definition.event).find(\r\n (c) => c.name === evtName,\r\n );\r\n if (!event) {\r\n throw new Error('Unknown event ' + evtName);\r\n }\r\n\r\n const scriptsResult =\r\n !event.script || (await this.fireScriptEvents(event));\r\n\r\n if (scriptsResult && event.serverEvents) {\r\n return (\r\n (\r\n await this.processResult(\r\n (await this.postMessage('fireEvent', evtName))?.data,\r\n )\r\n )?.success || false\r\n );\r\n }\r\n\r\n return scriptsResult && !event.serverEvents;\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getProperty(prpName: string) {\r\n return this._state.properties[prpName];\r\n }\r\n\r\n private async postMessage(method: string, body: any) {\r\n return post<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData:\r\n typeof body === 'string'\r\n ? {\r\n payload: encodeStrToBase64Utf8(body),\r\n }\r\n : body,\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n }\r\n\r\n async setStringValue(attName: string, value: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n attName,\r\n clear: true,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getStringValue(attName: string) {\r\n return this._state.attributes[attName]?.join('');\r\n }\r\n\r\n getValue(attName: string, index: number = 0) {\r\n return this._state.attributes[attName]?.[index];\r\n }\r\n\r\n getValues(attName: string) {\r\n return this._state.attributes[attName];\r\n }\r\n\r\n async removeIndex(attName: string, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await post<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method: 'removeIndex',\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData: {\r\n attName,\r\n index,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setValue(attName: string, value: any, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n index,\r\n attName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setProperty(prpName: string, value: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setProperty',\r\n JSON.stringify({\r\n prpName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async sendMessage<\r\n T extends Record<string, unknown> = Record<string, unknown>,\r\n >(payload: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return await this.processResult<T>(\r\n (\r\n await this.postMessage(\r\n 'message',\r\n typeof payload === 'object' && payload\r\n ? JSON.stringify(payload)\r\n : payload,\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async download(attName: string, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const data = await this.processResult<{ url: string }>(\r\n (await this.postMessage('download', { attName, index }))?.data,\r\n );\r\n\r\n if (data?.url) {\r\n window.open(data.url, '_blank');\r\n }\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async upload(\r\n attName: string,\r\n file: File,\r\n options?: {\r\n onUploadProgress?: (percent: number) => unknown;\r\n params?: Record<string, any>;\r\n } & Pick<AxiosRequestConfig<any>, 'signal'>,\r\n ) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n Object.entries(options?.params || {}).forEach(([key, value]) =>\r\n formData.append(key, value),\r\n );\r\n\r\n const response = await axios.post<string>(\r\n await makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method: 'upload',\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attName,\r\n originalName: file.name,\r\n }),\r\n formData,\r\n {\r\n signal: options?.signal,\r\n onUploadProgress({ total, progress }) {\r\n const percent =\r\n Math.round(((progress || 0) / (total || 1)) * 100 * 100) / 100;\r\n options?.onUploadProgress?.(percent);\r\n },\r\n },\r\n );\r\n\r\n const result =\r\n await parseSuccessfulResponse<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n response,\r\n );\r\n\r\n return await this.processResult<{ index: number; fileName: string }>(\r\n result,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n public setState<K extends keyof TCustomComponentState>(\r\n prop: K,\r\n value: TCustomComponentState[K],\r\n ) {\r\n this._state[prop] = value;\r\n }\r\n}\r\n","import { Notification, NotificationDefinition } from './Notification';\r\n\r\nexport class StatusNotification extends Notification<\r\n NotificationDefinition & { blocking: boolean }\r\n> {\r\n constructor(\r\n public readonly props: NotificationDefinition & { blocking: boolean },\r\n ) {\r\n super(props);\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { Notification } from './Notification';\r\nimport { EventEmitter } from '../../util';\r\nimport type { CustomComponent } from '../Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { Field } from '../Execution/FormsExecution/Field';\r\nimport type { Execution } from '../Execution';\r\n\r\nexport type FocusTarget = {\r\n element: Field | CustomComponent;\r\n};\r\n\r\nexport class Notifications {\r\n private emitter = new EventEmitter<{\r\n closeTab: null;\r\n kill: null;\r\n notification: Notification;\r\n }>();\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable<Notifications, 'notifications'>(this, {\r\n notifications: observable,\r\n add: action,\r\n remove: action,\r\n });\r\n }\r\n\r\n protected notifications: Notification[] = [];\r\n\r\n add(notification: Notification) {\r\n this.notifications.push(notification);\r\n this.emitter.emit('notification', notification);\r\n }\r\n\r\n closeTab() {\r\n this.emitter.emit('closeTab', null);\r\n }\r\n\r\n getAll() {\r\n return this.notifications;\r\n }\r\n\r\n getById(id: string | number) {\r\n return this.notifications.find((c) => c.id === id);\r\n }\r\n\r\n kill() {\r\n this.emitter.emit('kill', null);\r\n }\r\n\r\n remove(notification: string | number | Notification) {\r\n this.notifications = this.notifications.filter((c) => {\r\n if (typeof notification === 'string' || typeof notification === 'number')\r\n return c.id !== notification;\r\n return c !== notification;\r\n });\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n}\r\n","import type {\r\n TApiaForm,\r\n TApiaFormProperties,\r\n TFormEventName,\r\n} from '../../InitialData/types/TApiaForm';\r\nimport type { Execution } from '..';\r\nimport type { TSignaturesData } from './types';\r\nimport { Field, getApiaFunctions, TFncParams } from './Field';\r\nimport type {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { computed, makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\r\nimport { Grid } from './fields';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaForm } from '../../../programming/ApiaForm';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldError } from '../types';\r\nimport { getFocusIdentifier } from './util/util';\r\n\r\nexport class Form extends WithProperties<TApiaFormProperties> {\r\n fields: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n state = { isMarkedToSign: false };\r\n protected _customComponents: Map<string, CustomComponent> = new Map();\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsGroups = new Map<string, Grid>();\r\n definition: TApiaForm = {} as TApiaForm;\r\n\r\n constructor(\r\n public execution: Execution,\r\n definition: TApiaForm,\r\n ) {\r\n const props = parseFakeJSON<TApiaFormProperties>(definition.properties);\r\n super(props);\r\n makeObservable<Form, 'state'>(this, {\r\n state: observable,\r\n allFields: computed,\r\n customComponents: computed,\r\n });\r\n\r\n this.definition = definition;\r\n\r\n this.fields = arrayOrArray(definition.field).sort((a, b) => {\r\n if (a.y < b.y) return -1;\r\n if (a.y > b.y) return 1;\r\n\r\n if (a.x < b.x) return -1;\r\n if (a.x > b.x) return 1;\r\n\r\n return 0;\r\n });\r\n\r\n this.state.isMarkedToSign = this.definition.markedToSign;\r\n }\r\n\r\n get allFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n get customComponents() {\r\n return this._customComponents;\r\n }\r\n\r\n async toggleFormCollapse() {\r\n this.properties.prpFrmClosed = !this.properties.prpFrmClosed;\r\n void post<{ success: boolean }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'closeForm',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n collapse: this.properties.prpFrmClosed,\r\n react: true,\r\n }),\r\n );\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getField(field: string, index?: number) {\r\n const found =\r\n this.getFieldById(field, index) ||\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeId(field, index) ||\r\n this.getFieldByAttributeName(field, index);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getField(field, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n const found = this.fieldsByAttributeId.get(String(attId));\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeId(attId, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n const found = this.fieldsByAttributeName.get(attName);\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeName(attName, index);\r\n return res;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldById(id: string | number, index?: number) {\r\n const found = this.fieldsById.get(String(id));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldById(id, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldByName(name: string, index?: number): Field | Field[] | undefined {\r\n const found = this.fieldsByName.get(String(name));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByName(name, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected getHiddenFields() {\r\n return this.allFields.filter((c) => c.getProperty('visibilityHidden'));\r\n }\r\n async markFormToSign() {\r\n void post<{ success: boolean }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'markFormToSign',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n sign: !this.state.isMarkedToSign,\r\n react: true,\r\n }),\r\n ).then((res) => {\r\n if (res?.data && res.data.success) {\r\n this.state.isMarkedToSign = !this.state.isMarkedToSign;\r\n }\r\n });\r\n }\r\n\r\n async viewSigns(): Promise<TSignaturesData | undefined> {\r\n const res = await get<TSignaturesData>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'viewSigns',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n react: true,\r\n }),\r\n );\r\n if (res?.data) {\r\n return res.data;\r\n }\r\n }\r\n\r\n private cucCmpByAttId = new Map<number, CustomComponent>();\r\n private cucCmpByFldId = new Map<number, CustomComponent>();\r\n private cucCmpByAttName = new Map<string, CustomComponent>();\r\n private mustRenderFields: string[] = [];\r\n\r\n getCustomComponentByFldId(fldId: number) {\r\n return this.cucCmpByFldId.get(fldId);\r\n }\r\n\r\n getCustomComponentByAttId(attId: number) {\r\n return this.cucCmpByAttId.get(attId);\r\n }\r\n\r\n getCustomComponentByAttName(attName: string) {\r\n return this.cucCmpByAttName.get(attName);\r\n }\r\n\r\n public addFieldToRender(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields.push(fldId + '_' + fldIndex);\r\n }\r\n\r\n public markFieldAsRendered(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields = this.mustRenderFields.filter(\r\n (c) => c !== fldId + '_' + fldIndex,\r\n );\r\n if (this.mustRenderFields.length - this.getHiddenFields().length === 0) {\r\n this.execution.markFormAsRendered(\r\n this.definition.frmParent,\r\n this.definition.formName,\r\n );\r\n }\r\n }\r\n\r\n async init() {\r\n const cusFields = arrayOrArray(this.definition.customField);\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n this.mustRenderFields.push(field.id + '_' + (field.index ?? 0));\r\n }\r\n for await (const customComponent of cusFields) {\r\n this.mustRenderFields.push(customComponent.id + '_' + 0);\r\n }\r\n for await (const customComponent of cusFields) {\r\n const cc = new CustomComponent(this.execution, customComponent);\r\n await cc.init(this);\r\n this._customComponents.set(customComponent.id, cc);\r\n arrayOrArray(customComponent.state.state.attribute).forEach((a) => {\r\n this.cucCmpByAttId.set(Number.parseInt(String(a.attId)), cc);\r\n this.cucCmpByAttName.set(a.attName, cc);\r\n this.cucCmpByFldId.set(Number.parseInt(String(customComponent.id)), cc);\r\n });\r\n }\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n this.execution.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor(field);\r\n await newField.init(this);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties?.name) {\r\n this.fieldsByName.set(\r\n String(newField.properties?.name),\r\n newField as Field<any>,\r\n );\r\n }\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n\r\n if (newField instanceof Grid) {\r\n this.fieldsGroups.set(String(newField.definition.id), newField);\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions(this.execution))\r\n .getForm(this.definition.formName, this.definition.frmParent)!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n public async fireScriptEvent(eventName: TFormEventName): Promise<boolean> {\r\n if (eventName === 'onLoad') {\r\n const mapEvent = getWindow(this.execution)[\r\n `LOAD_RELOAD_MAP_${this.definition.frmParent}`\r\n ] as any as Record<string, string>;\r\n const mappedEvent = mapEvent\r\n ? mapEvent[this.definition.formName]\r\n : undefined;\r\n const actualMapEvent =\r\n mapEvent &&\r\n (!mappedEvent || mappedEvent === 'load' ? 'onLoad' : 'onReload');\r\n eventName =\r\n actualMapEvent ||\r\n (getWindow(this.execution).IS_RELOAD ? 'onReload' : 'onLoad');\r\n }\r\n\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (events.length > 0) {\r\n const unlock = this.execution.lock();\r\n\r\n try {\r\n for (const event of events) {\r\n try {\r\n const fn = (getWindow(this.execution) as any)[event.fncName] as (\r\n src: ApiaForm,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n new ApiaForm(this.execution, this)!,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n if (!result) {\r\n return false;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(this.execution, event.fncName) + e,\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n if (this.properties.frmHidden) {\r\n return true;\r\n }\r\n\r\n for await (const field of this.allFields) {\r\n if (field.definition.fieldType === 'grid') {\r\n const result = await (field as Grid).validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n isValid = false;\r\n } else {\r\n isValid = isValid && result === true;\r\n }\r\n } else if (field instanceof Field) {\r\n isValid = (await field.validate()) && isValid;\r\n if (!isValid && !firstInvalid) {\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n\r\n getProperty<K extends keyof TApiaFormProperties>(\r\n propName: K | 'readOnly',\r\n ): TApiaFormProperties[K] {\r\n if (propName === 'readOnly') {\r\n return this.definition.readOnly || this.definition.readonly;\r\n }\r\n return super.getProperty(propName);\r\n }\r\n\r\n public getErrorsList(): FieldError[] {\r\n const errors: FieldError[] = [];\r\n this.allFields.forEach((f) => {\r\n if (f instanceof FieldWithAttribute) {\r\n const fieldErrors = f.state.validation.errorMessage;\r\n if (fieldErrors) {\r\n errors.push({\r\n id: `${f.getForm().definition.frmParent}_${f.getForm().definition.id}_${f.definition.id}`,\r\n errorMessage: fieldErrors,\r\n title: f.attribute.title,\r\n focus: getFocusIdentifier(f),\r\n });\r\n }\r\n }\r\n });\r\n return errors;\r\n }\r\n}\r\n","import { getDocument } from '../../../util/dom/getDocument';\r\nimport { parseXml } from '../../../util/xml/parseXml';\r\nimport type { Execution } from '../../Execution';\r\nimport { TApiaForm } from '../types/TApiaForm';\r\n\r\nfunction decodeBase64ToUtf8(base64String: string) {\r\n const binaryString = atob(base64String);\r\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\r\n return new TextDecoder('utf-8').decode(bytes);\r\n}\r\n\r\nasync function getFormXMLDataAsObj(\r\n formDiv: HTMLElement,\r\n): Promise<TApiaForm | null> {\r\n if (formDiv.dataset.xml) {\r\n const formData = (await parseXml(\r\n decodeBase64ToUtf8(formDiv.dataset.xml),\r\n )) as TApiaForm;\r\n return formData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function readFormsDefinition(execution: Execution) {\r\n const elements = [\r\n ...getDocument(execution).querySelectorAll('.formContainer'),\r\n ];\r\n const forms: TApiaForm[] = [];\r\n\r\n for await (const form of elements) {\r\n const def = await getFormXMLDataAsObj(form as HTMLElement);\r\n if (def) forms.push(def);\r\n }\r\n\r\n return forms;\r\n}\r\n","import type { Execution } from '../Execution';\r\nimport { readFormsDefinition } from './bootstrap/readFormsDefinition';\r\n\r\nexport class InitialData {\r\n public static getFormsDefinition(execution: Execution) {\r\n return readFormsDefinition(execution);\r\n }\r\n}\r\n","import {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Field } from './Field';\r\nimport { TranslatableField } from './TranslatableField';\r\nimport { Button } from './fields/Button';\r\nimport { Captcha } from './fields/Captcha';\r\nimport { Checkbox } from './fields/Checkbox';\r\nimport { Editor } from './fields/Editor';\r\nimport { File } from './fields/File';\r\nimport { Grid } from './fields/Grid';\r\nimport { GridPaginated } from './fields/GridPaginated';\r\nimport { Hidden } from './fields/Hidden';\r\nimport { Image } from './fields/Image';\r\nimport { Input } from './fields/Input';\r\nimport { Label } from './fields/Label';\r\nimport { Link } from './fields/Link';\r\nimport { ModalInput } from './fields/ModalInput';\r\nimport { Multiple } from './fields/Multiple';\r\nimport { Password } from './fields/Password';\r\nimport { Radio } from './fields/Radio';\r\nimport { Select } from './fields/Select';\r\nimport { Textarea } from './fields/Textarea';\r\nimport { Title } from './fields/Title';\r\nimport { Tree } from './fields/Tree';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { GridProps } from './fields/Grid/types';\r\nimport { SchedulerField } from './fields/Scheduler';\r\nimport { TApiaLabelProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport type FieldConstructor = new (\r\n definition: any,\r\n) =>\r\n | Field<any, any, any>\r\n | FieldWithAttribute<any, any, any>\r\n | TranslatableField<any, any, any>;\r\n\r\nexport type FieldsMapping = Record<\r\n string,\r\n (definition: any) => FieldConstructor\r\n>;\r\n\r\nexport const defaultFieldsMap: FieldsMapping = Object.freeze({\r\n area: () => Textarea,\r\n button: () => Button,\r\n captcha: () => Captcha,\r\n check: () => Checkbox,\r\n editor: () => Editor,\r\n file: () => File,\r\n grid: (def) => {\r\n const definition = def as TApiaFieldBaseDefinition<GridProps>;\r\n\r\n if (definition?.properties?.paged) {\r\n return GridPaginated;\r\n }\r\n\r\n return Grid;\r\n },\r\n hidden: () => Hidden,\r\n href: () => Link,\r\n image: () => Image,\r\n input: (def) => {\r\n const definition = def as TApiaFieldWithAttributeBaseProps<any>;\r\n\r\n if (definition.qryId) {\r\n return ModalInput;\r\n }\r\n\r\n return Input;\r\n },\r\n label: (def) => {\r\n const definition =\r\n def as TApiaFieldWithAttributeBaseProps<TApiaLabelProperties>;\r\n const value = definition.properties?.value;\r\n if (value && String(value).indexOf('schedContainer') !== -1) {\r\n return SchedulerField;\r\n }\r\n\r\n return Label;\r\n },\r\n multiple: () => Multiple,\r\n password: () => Password,\r\n radio: () => Radio,\r\n select: () => Select,\r\n title: () => Title,\r\n tree: () =>\r\n Tree as new (definition: any) => FieldWithAttribute<any, any, any>,\r\n});\r\n","import { action, computed, makeObservable, observable } from 'mobx';\r\nimport { TProcess } from './types';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { UploaderApi } from '../Uploader';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport { TModalConfig } from '@apia/uploader-controller';\r\n\r\nexport class Process {\r\n state: TProcess | null = null;\r\n\r\n uploader: UploaderApi;\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n name: computed,\r\n });\r\n\r\n this.uploader = new UploaderApi(\r\n this.execution,\r\n 'ProcessUploader',\r\n 'P',\r\n getWindow(this.execution)\r\n .processDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n const res = await post<{ processData: string }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getProcessData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.processData) {\r\n throw new Error('Cannot retrieve the process data');\r\n }\r\n\r\n this.uploader.init();\r\n this.uploader.on('fileUploaded', () => {\r\n this.execution.state.hasChangedAnything = true;\r\n });\r\n\r\n const parsedData: TProcess = JSON.parse(res?.data?.processData);\r\n const calValue = arrayOrArray(parsedData.calendar?.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n const priorityValue =\r\n arrayOrArray(parsedData.priority.options).find((c) => c.selected)\r\n ?.value ?? arrayOrArray(parsedData?.priority?.options)[0]?.value;\r\n\r\n this.state = parsedData;\r\n if (calValue) this.state.calendar.value = calValue;\r\n if (priorityValue) this.state.priority.value = priorityValue;\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n cmbProPri: this.state?.priority?.value,\r\n selCal: this.state?.calendar?.value,\r\n };\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n if (this.state?.priority) this.state.priority.value = newPriority;\r\n }\r\n}\r\n","export class Task {\r\n #name: string;\r\n constructor(task: any) {\r\n this.#name = task.name;\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n get name() {\r\n return this.#name;\r\n }\r\n}\r\n","import { computed, makeObservable, observable } from 'mobx';\r\nimport { Association, PoolId, TCategory, TEntity } from './type';\r\nimport { getLabel, makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray, uniqueId } from '@apia/util';\r\nimport { UploaderApi } from '../Uploader';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport {\r\n Row,\r\n TableController,\r\n TBuildRow,\r\n TBuildTable,\r\n} from '@apia/table2-controller';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport { TModalConfig } from '@apia/uploader-controller';\r\n\r\nexport class Entity {\r\n state: TEntity | null = null;\r\n\r\n uploader: UploaderApi;\r\n controller: TableController = new TableController({\r\n allowEdition: true,\r\n allowResize: true,\r\n allowSelection: true,\r\n });\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n name: computed,\r\n });\r\n\r\n this.uploader = new UploaderApi(\r\n execution,\r\n 'EntityUploader',\r\n 'E',\r\n getWindow(this.execution)\r\n .entityDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n const res = await post<{ entityData: string }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getEntityData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.entityData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n this.uploader.init();\r\n this.uploader.on('fileUploaded', () => {\r\n this.execution.state.hasChangedAnything = true;\r\n });\r\n\r\n const parsedData: TEntity = JSON.parse(res?.data?.entityData);\r\n const statusValue = arrayOrArray(parsedData.status.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n this.state = parsedData;\r\n this.state.visibilities = [];\r\n this.state.categories = [];\r\n this.state.image.file = null;\r\n\r\n if (statusValue && this.state.status)\r\n this.state.status.value = statusValue;\r\n\r\n if (getWindow(this.execution).LBL_CATEGORIES_LABEL) {\r\n await this.loadCategories();\r\n }\r\n if (getWindow(this.execution).LBL_VISIBILITIES_LABEL) {\r\n await this.loadPools();\r\n }\r\n if (getWindow(this.execution).LBL_ENTITIES_ASSOCIATIONS) {\r\n await this.loadAssociations();\r\n }\r\n }\r\n }\r\n\r\n public addAssociation() {\r\n const id = String(uniqueId());\r\n this.state!.associations.push({\r\n asocId: id,\r\n asocName: '',\r\n asocRelName: '',\r\n });\r\n const row = new Row(id);\r\n row.build({\r\n id: String(uniqueId()),\r\n cells: [{ colName: 'name' }, { colName: 'relName' }],\r\n isSelected: true,\r\n });\r\n this.controller.body.addRow(row);\r\n this.controller.setSelection([\r\n this.controller.body.getState('rows').length,\r\n ]);\r\n }\r\n\r\n public getConfirmParams() {\r\n const result: any = {\r\n busEntSta: this.state?.status.value ?? '',\r\n };\r\n\r\n if (this.state?.identifier?.body?.value) {\r\n result.txtEntNum = this.state?.identifier.body.value ?? '';\r\n }\r\n\r\n if (this.state?.categories) {\r\n result.catId = this.state?.categories.map((c) => c.id);\r\n\r\n this.state?.categories\r\n .filter((c) => c.checked)\r\n .forEach((c) => {\r\n result[`chkCat_${c.id}`] = 'on';\r\n });\r\n\r\n result['hidTemplateWithCategories'] = 'true';\r\n }\r\n\r\n if (this.state?.visibilities) {\r\n result['hidTemplateWithVisibilities'] = 'true';\r\n result.poolId = this.state?.visibilities.map((c) => c.poolId);\r\n\r\n this.state?.visibilities\r\n .filter((c) => c.canUpdate)\r\n .forEach((v) => {\r\n result[`chkVisPoolUpdate${v.poolId}`] = 'on';\r\n });\r\n }\r\n\r\n if (this.state?.associations) {\r\n result['hidTemplateWithAsociation'] = 'true';\r\n result.asocId = this.state?.associations.map((c) => c.asocId);\r\n result.asocName = this.state?.associations.map((c) => c.asocName);\r\n result.asocRelName = this.state?.associations.map((c) => c.asocRelName);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected loadCategories = async () => {\r\n const res = await post<{ category: TCategory[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadCategories',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state)\r\n if (res?.data?.category) {\r\n this.state.categories = arrayOrArray(res.data.category);\r\n } else {\r\n this.state.categories = [];\r\n }\r\n };\r\n\r\n protected loadPools = async () => {\r\n const res = await post<{ pool: PoolId[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadPools',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state?.visibilities) {\r\n if (res?.data?.pool) {\r\n this.state.visibilities = arrayOrArray(res.data.pool);\r\n } else {\r\n this.state.visibilities = [];\r\n }\r\n }\r\n };\r\n\r\n protected loadAssociations = async () => {\r\n const res = await post<{ asociation: Association[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadAsociations',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state) {\r\n this.state.associations = arrayOrArray(res?.data?.asociation);\r\n const rows = this.parseRows(arrayOrArray(res?.data?.asociation));\r\n const tableJson = {\r\n columns: [\r\n {\r\n colName: 'name',\r\n content: getLabel(this.execution, 'lblBusEntInst').text,\r\n className: 'header',\r\n },\r\n {\r\n colName: 'relName',\r\n content: getLabel(this.execution, 'lblBusEntInstAsocName').text,\r\n className: 'header',\r\n },\r\n ],\r\n rows,\r\n filters: [],\r\n } as TBuildTable;\r\n this.controller.build(tableJson);\r\n }\r\n };\r\n\r\n private parseRows(row: Association[]) {\r\n return row.map((r) => {\r\n const newRow: TBuildRow = {\r\n id: r.asocId,\r\n cells: [\r\n {\r\n colName: 'name',\r\n content: r.asocName,\r\n },\r\n {\r\n colName: 'relName',\r\n content: r.asocRelName,\r\n },\r\n ],\r\n };\r\n return newRow;\r\n });\r\n }\r\n\r\n public deleteAssociation() {\r\n const selectedRows = this.controller.getState('selection');\r\n const lastIdx = Array.from(selectedRows).pop()?.getIndex();\r\n\r\n [...selectedRows.values()].forEach((row) => {\r\n this.state!.associations =\r\n this.state?.associations.filter((_, idx) => row.getIndex() !== idx) ??\r\n [];\r\n this.controller.body.removeRow(row);\r\n });\r\n if (lastIdx) this.controller.setSelection([lastIdx - 1]);\r\n }\r\n\r\n public deleteVisibility(id: string) {\r\n if (this.state) {\r\n this.state.visibilities = this.state.visibilities.filter(\r\n (c) => c.poolId !== id,\r\n );\r\n }\r\n }\r\n\r\n public validateAssociations() {\r\n if (this.state?.associations.length === 0) return true;\r\n if (this.state) {\r\n const invalidAssociations = this.state.associations.filter(\r\n (c) => !c.asocName || !c.asocRelName,\r\n );\r\n if (invalidAssociations.length > 0) {\r\n invalidAssociations.forEach((c, idx) => {\r\n c.errorRelNameMessage = '';\r\n c.errorNameMessage = '';\r\n c.focusTarget = undefined;\r\n\r\n if (idx === 0) c.focusTarget = true;\r\n\r\n if (c.asocName === '')\r\n c.errorNameMessage = labels.errorFieldRequired(this.execution);\r\n\r\n if (c.asocRelName === '')\r\n c.errorRelNameMessage = labels.errorFieldRequired(this.execution);\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { TObservation, TObservations } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport type { Execution } from '..';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\n\r\nexport class Observations {\r\n state: TObservations = {\r\n newObservation: {\r\n commentValue: '',\r\n chkAddAlert: false,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n },\r\n observations: [],\r\n };\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n });\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n this.state = {\r\n newObservation: {\r\n commentValue: '',\r\n chkAddAlert: false,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n },\r\n observations: [],\r\n };\r\n\r\n const res = await post<{\r\n obData: string;\r\n }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getObservationsData',\r\n isAjax: true,\r\n isTask: !getWindow(this.execution).isMonitor ? true : false,\r\n }),\r\n );\r\n if (!res?.data?.obData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n\r\n const parsedData: {\r\n observations: TObservation[];\r\n newCommentData: { comment: string; isChecked: boolean };\r\n } = JSON.parse(res?.data?.obData);\r\n\r\n this.state.observations = arrayOrArray(parsedData.observations);\r\n\r\n const newObservation = {\r\n commentValue: parsedData.newCommentData?.comment,\r\n chkAddAlert: parsedData.newCommentData?.isChecked,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n };\r\n this.state.newObservation = newObservation;\r\n this.areObservationsChecked();\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n const params: Record<string, unknown> = {\r\n txtComment: this.state.newObservation?.commentValue,\r\n chkAddAlert:\r\n this.state.newObservation?.chkAddAlert === true ? 'on' : undefined,\r\n chkAddAllAlert:\r\n this.state.newObservation?.chkAddAllAlert === true ? 'on' : undefined,\r\n chkRemAlert:\r\n this.state.newObservation?.chkRemAlert === true ? 'on' : undefined,\r\n };\r\n\r\n const obs = this.state.observations ?? [];\r\n for (const o of obs) {\r\n if (!o || !o.name) continue;\r\n params[o.name] = o.checked === true ? 'on' : undefined;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n\r\n public areObservationsChecked() {\r\n const isChecked = this.state.observations?.some((o) => o.checked === true);\r\n return isChecked;\r\n }\r\n}\r\n","import type { Execution } from '..';\r\n\r\nexport type ConfirmChecker = (\r\n execution: Execution,\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep =\r\n | 'CHECK_LOCK'\r\n | 'CONFIRM'\r\n | 'CHECK_SIGN'\r\n | 'CHECK_WIZARD'\r\n | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowPoolSelection extends FlowModal<{\r\n confirmed: boolean;\r\n group: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n group: string;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { TFetchConfirmPathResponse, TItemTreeObj } from './types';\r\nconst initialState = {\r\n disabledParents: [],\r\n groupSelectionObj: null,\r\n};\r\n\r\nexport class ShowPathSelection extends FlowModal<{\r\n confirmed: boolean;\r\n path: string;\r\n}> {\r\n public state: {\r\n disabledParents: TItemTreeObj | TItemTreeObj[] | null;\r\n groupSelectionObj: TFetchConfirmPathResponse | null;\r\n };\r\n\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n path: string;\r\n }) => Promise<Status | FlowModal<any>>,\r\n ) {\r\n super();\r\n makeObservable<ShowPathSelection, 'state'>(this, { state: observable });\r\n this.state = initialState;\r\n }\r\n setDisabledParent(treeItem: TItemTreeObj) {\r\n this.state.disabledParents = this.updateDisabledList(\r\n treeItem,\r\n this.state.disabledParents as TItemTreeObj[],\r\n );\r\n }\r\n clearPaths() {\r\n this.state.disabledParents = [];\r\n }\r\n showGroupsSelection(fetchConfirmPathResponse: TFetchConfirmPathResponse) {\r\n this.state.groupSelectionObj = fetchConfirmPathResponse;\r\n }\r\n updateDisabledList(\r\n itemObj: TItemTreeObj,\r\n itemArr: TItemTreeObj[],\r\n ): TItemTreeObj[] {\r\n let filteredArr = [] as TItemTreeObj[];\r\n if (Array.isArray(itemArr)) {\r\n filteredArr = itemArr.filter(\r\n (el) =>\r\n el.id !== itemObj.id && el.name !== itemObj.name && el.isOn !== false,\r\n );\r\n }\r\n if (itemObj.isOn === true) {\r\n filteredArr.push(itemObj);\r\n }\r\n return filteredArr || [];\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import xml2js from 'xml2js';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { ShowPoolSelection } from './ShowPoolSelection';\r\nimport { ShowPathSelection } from './ShowPathSelection';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution } from '..';\r\nimport { TCheckWizardResponse, TFetchConfirmPathResponse } from './types';\r\nimport {\r\n arrayOrArray,\r\n parseXMLRequestResponse,\r\n TApiaFieldPropsObj,\r\n TApiaLoadForm,\r\n TFieldScriptEvents,\r\n TFieldServerEvents,\r\n} from '@apia/util';\r\nimport axios from 'axios';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { ExecutionState, TConfirmResponse } from '../types';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport {\r\n InvalidSessionException,\r\n parseMessages,\r\n} from '../../../util/api/apiaApi';\r\nimport {\r\n customBooleanProcessor,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n getDefaultXmlParserOptions,\r\n} from '../../../util/xml/parseXml';\r\n\r\nfunction buildPoolSelection(\r\n execution: Execution,\r\n status: Status,\r\n poolForm: TApiaLoadForm['form'],\r\n) {\r\n return new ShowPoolSelection(poolForm, async (result) => {\r\n if (result.confirmed) {\r\n const unLock = execution.lock();\r\n const confirmPoolResult = await axios.post<{\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl(execution, {\r\n action: 'confirmPool',\r\n isAjax: true,\r\n appletToken: 'null',\r\n }),\r\n result.group,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n confirmPoolResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes) unLock();\r\n if (\r\n parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose' ||\r\n parsedRes?.onClose === 'confirmOkOnClose'\r\n ) {\r\n if (parsedRes?.load?.text?.content) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes?.load?.text?.content,\r\n type: 'success',\r\n }),\r\n );\r\n }\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else {\r\n if (parsedRes?.sysMessages?.message) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes?.sysMessages?.message?.text,\r\n type: 'warning',\r\n }),\r\n );\r\n }\r\n throw Error('Failed to confirm pool');\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nfunction buildPathSelection(\r\n execution: Execution,\r\n status: Status,\r\n form: TApiaLoadForm['form'],\r\n) {\r\n const modal = new ShowPathSelection(form, async function (result) {\r\n if (result.confirmed) {\r\n const unLock = execution.lock();\r\n const pathSelectionResult = await axios.post<TFetchConfirmPathResponse>(\r\n makeApiaUrl(execution, {\r\n action: 'confirmPath',\r\n isAjax: true,\r\n asXML: true,\r\n }),\r\n result.path,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n pathSelectionResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes) unLock();\r\n if (parsedRes?.groupSelection) {\r\n return buildPoolSelection(execution, status, parsedRes.load!.form!);\r\n } else if (parsedRes?.actions?.action?.toDo === 'functionTimedCall') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else if (parsedRes.sysMessages?.message?.text) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes.sysMessages.message.text,\r\n type: 'warning',\r\n }),\r\n );\r\n return { ...status, step: undefined, finishedWithError: true };\r\n } else if (parsedRes.load?.canClose) {\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(status, parsedRes.load?.text?.content ?? '');\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n } else {\r\n return { ...status, step: undefined, finishedWithError: true };\r\n }\r\n });\r\n return modal;\r\n}\r\n\r\nasync function checkSign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n }[];\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1] === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n };\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...execution.getEntity().getConfirmParams(),\r\n ...execution.getProcess().getConfirmParams(),\r\n ...execution.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n\r\n const confirmResponse = await post<TConfirmResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: getWindow(execution).appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n xmlParser: (xml) => {\r\n // procesador que preserva 'value' (lo que ya tenías)\r\n const processStringObjPreserveValue = (\r\n value: string,\r\n key: string,\r\n ):\r\n | TApiaFieldPropsObj\r\n | string\r\n | number\r\n | TFieldScriptEvents\r\n | TFieldServerEvents => {\r\n if (key === 'value' && typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n const parsed = processStringObj(value as any, key);\r\n\r\n return parsed;\r\n };\r\n\r\n // Tomar las opciones por defecto del parser\r\n const baseOptions = getDefaultXmlParserOptions();\r\n\r\n // Reemplazar el procesador de strings por nuestra variante\r\n baseOptions.attrValueProcessors = [\r\n customBooleanProcessor,\r\n processStringObjPreserveValue,\r\n processAjaxEventResponse,\r\n ];\r\n\r\n // Crear el parser con las opciones correctas\r\n const parser = new xml2js.Parser(baseOptions);\r\n\r\n // Usar el post-processor por defecto (realiza el parse y replaceLabelHtmlValues)\r\n let objJS: any = null;\r\n parser.parseString(\r\n xml,\r\n (err: Error | null, result: Record<string, unknown>) => {\r\n if (err) {\r\n console.warn('Error Parsing XML data', err);\r\n objJS = err;\r\n } else {\r\n if (result?.code === '-1' && result.exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n objJS = result;\r\n }\r\n },\r\n );\r\n\r\n return objJS as TConfirmResponse;\r\n },\r\n },\r\n );\r\n if (\r\n confirmResponse?.data?.sysMessages?.message ||\r\n confirmResponse?.data?.sysExceptions?.exception ||\r\n confirmResponse?.data?.exceptions?.exception\r\n ) {\r\n Captcha.reload();\r\n return {\r\n step: undefined,\r\n finishedWithError: true,\r\n error: `Errors found: ${[\r\n ...arrayOrArray(confirmResponse?.data?.sysMessages?.message).map(\r\n (c) => c.text || c.label,\r\n ),\r\n ...arrayOrArray(confirmResponse?.data?.sysExceptions?.exception).map(\r\n (c) => c.text || c.label,\r\n ),\r\n ...arrayOrArray(confirmResponse?.data?.exceptions?.exception).map(\r\n (c) => c.text || c.label,\r\n ),\r\n ]\r\n .filter(Boolean)\r\n .join('\\n')}`,\r\n };\r\n }\r\n if (confirmResponse?.data?.onClose === 'confirmOkOnClose') {\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(\r\n status,\r\n confirmResponse.data.load?.text?.label ?? '',\r\n );\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n const checkConfirmProcess = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'P',\r\n currentTab: 0,\r\n }),\r\n );\r\n parseMessages(execution, (checkConfirmEntity?.data as any).data);\r\n parseMessages(execution, (checkConfirmProcess?.data as any).data);\r\n\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmEntity.data?.form);\r\n }\r\n if (checkConfirmProcess?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmProcess.data?.form);\r\n }\r\n if (confirmResponse?.data?.pathSelection) {\r\n return buildPathSelection(\r\n execution,\r\n status,\r\n confirmResponse.data.load!.form!,\r\n );\r\n }\r\n\r\n if (confirmResponse?.data?.groupSelection === true) {\r\n return buildPoolSelection(\r\n execution,\r\n status,\r\n confirmResponse.data.load!.form!,\r\n );\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_WIZARD',\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\nasync function checkWizard(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkWizardResponse = await post<TCheckWizardResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWizzard',\r\n }),\r\n {\r\n postData: {},\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n allowAfterFinish: true,\r\n },\r\n );\r\n\r\n if (checkWizardResponse?.data?.url) {\r\n getWindow(execution).location.assign(checkWizardResponse?.data?.url);\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: false,\r\n };\r\n } else {\r\n const { location } = getWindow(execution).parent;\r\n if (getWindow(execution).ON_FINISH === '1') {\r\n getWindow(execution).parent?.parent?.close();\r\n } else if (getWindow(execution).ON_FINISH === '2') {\r\n location.reload();\r\n } else if (\r\n (getWindow(execution).frameElement as HTMLIFrameElement)?.src.match(\r\n /frompanel/i,\r\n )\r\n ) {\r\n (getWindow(execution).frameElement as HTMLIFrameElement).src = (\r\n getWindow(execution).frameElement as HTMLIFrameElement\r\n ).src;\r\n } else if (getWindow(execution).ON_FINISH === '5') {\r\n getWindow(execution).location.assign(getWindow(execution).ON_FINISH_URL);\r\n } else {\r\n let tabContainer =\r\n getWindow(execution).parent.document.getElementById('tabContainer');\r\n if (tabContainer == null) {\r\n tabContainer =\r\n getWindow(execution).top!.document.getElementById('tabContainer');\r\n }\r\n\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n\r\n if (tabContainer) {\r\n (tabContainer as any).removeActiveTab();\r\n } else {\r\n execution.notifications.closeTab();\r\n }\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: false,\r\n };\r\n }\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CHECK_WIZARD: checkWizard,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(execution, result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n execution.notifications.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution } from '..';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmEntityResponse } from '../types';\r\nimport { arrayOrArray, Url } from '@apia/util';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { FlowModal, ShowSign, ShowSignSelection, Status } from '../FlowModals';\r\n\r\nexport type ConfirmChecker = (\r\n execution: Execution,\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep = 'CHECK_LOCK' | 'CONFIRM' | 'CHECK_SIGN' | 'SIGN';\r\n\r\nasync function checkSign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n }[];\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1] === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n };\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...execution.getEntity().getConfirmParams(),\r\n ...execution.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmEntityResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: getWindow(execution).appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (confirmResponse?.data?.sysMessages?.message) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n };\r\n }\r\n if (confirmResponse?.data?.load?.text?.label) {\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmEntity.data?.form);\r\n }\r\n\r\n const url = arrayOrArray(confirmResponse.data.actions?.action.param)[1];\r\n\r\n if (url === 'callNavigateClose') {\r\n (getWindow(execution)?.top?.ApiaUtil as any).tabs.currentTab.close(true);\r\n } else {\r\n const c = new Url(url);\r\n\r\n getWindow(execution).location.assign(\r\n makeApiaUrl(execution, {\r\n ajaxUrl: c.base,\r\n action: c.getParameter('action') as string,\r\n }),\r\n );\r\n (getWindow(execution)?.top?.ApiaUtil as any).notifications.notify({\r\n message: confirmResponse?.data?.load?.text?.label,\r\n type: 'success',\r\n });\r\n }\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirmEntity(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const step = result.step as keyof typeof checkers;\r\n const checker = checkers[step];\r\n\r\n if (!checker) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: `Invalid confirm step: ${String(result.step)}`,\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n\r\n const checkerResult = await checker(execution, result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n execution.notifications.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { InitialData } from '../InitialData';\r\nimport { getLabel, labels } from '../../util/labels/labels';\r\nimport { Form } from './FormsExecution/Form';\r\nimport { TFormEventName, TFrmParent } from '../InitialData/types/TApiaForm';\r\nimport { FieldsMapping, defaultFieldsMap } from './FormsExecution/fieldsMap';\r\nimport { Notifications } from '../Notifications';\r\nimport { MessageNotification } from '../Notifications/MessageNotification';\r\nimport { Process } from './Process';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Field } from './FormsExecution/Field';\r\nimport { makeApiaUrl, post, get, parseXml } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport {\r\n arrayOrArray,\r\n EventEmitter,\r\n noNaN,\r\n NotificationType,\r\n postNavigation,\r\n} from '@apia/util';\r\nimport { Observations } from './Observations';\r\nimport { FlowModal, Status } from './FlowModals/FlowModal';\r\nimport { Captcha } from './FormsExecution/fields';\r\nimport { getCurrentTabsString } from '../../util/app/getCurrentTabsString';\r\nimport {\r\n ExecutionState,\r\n FieldError,\r\n TAdmEntityEvent,\r\n TFetchTaskActionResponse,\r\n} from './types';\r\nimport { parseFakeJSON } from '../../util/other/parseFakeJSON';\r\nimport { confirm } from './FlowModals/confirmFlow';\r\nimport { confirmEntity } from './EntityFlowModals/confirmFlow';\r\nimport { getWindow } from '../../util/dom/getWindow';\r\nimport { ShowSignSelection } from './FlowModals';\r\nimport {\r\n TModalConfig,\r\n UploaderModalController,\r\n} from '@apia/uploader-controller';\r\n\r\ninterface TExecutionErrors {\r\n onClose: string;\r\n sysMessages: {\r\n message: {\r\n text: string;\r\n type?: string;\r\n title?: string;\r\n }[];\r\n };\r\n sysExceptions: {\r\n exception: {\r\n label: string;\r\n text: string;\r\n }[];\r\n };\r\n exceptions: {\r\n exception: {\r\n label: string;\r\n text: string;\r\n }[];\r\n };\r\n}\r\n\r\nexport function parseNotificationType(\r\n str: string | undefined,\r\n): NotificationType {\r\n let type: NotificationType = 'warning';\r\n switch (str) {\r\n case '1':\r\n type = 'success';\r\n break;\r\n case '2':\r\n type = 'warning';\r\n break;\r\n case '3':\r\n type = 'error';\r\n break;\r\n case '4':\r\n type = 'modal';\r\n break;\r\n case '5':\r\n type = 'info';\r\n break;\r\n }\r\n return type;\r\n}\r\n\r\nexport type TExecutionConfig = {\r\n canConfirm: boolean;\r\n canGoBack: boolean;\r\n canGoForward: boolean;\r\n canSave: boolean;\r\n canFree: boolean;\r\n canDelegate: boolean;\r\n canClose: boolean;\r\n canShare: boolean;\r\n isEntity?: boolean;\r\n};\r\nexport type TModalSize =\r\n | 'editGrid'\r\n | 'sm'\r\n | 'md'\r\n | 'md-fixed'\r\n | 'lg'\r\n | 'lg-fixed'\r\n | 'xl'\r\n | 'xl-fixed'\r\n | 'xxl'\r\n | 'xxxl'\r\n | 'xxxl-fixed'\r\n | 'flex'\r\n | 'cal'\r\n | 'finder'\r\n | 'fileModal';\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/'/g, \"'\")\r\n .replace(/"/g, '\"')\r\n .replace(/>/g, '>')\r\n .replace(/</g, '<')\r\n .replace(/&/g, '&');\r\n }\r\n return '';\r\n};\r\n\r\nexport type TExecutionEnvironment = {\r\n fieldsMapping?: FieldsMapping;\r\n window: Window;\r\n document: Document;\r\n headers: any;\r\n properties?: {\r\n taskName: string;\r\n processName: string;\r\n };\r\n openUploaderModal?: (execution: UploaderModalController) => unknown;\r\n};\r\n\r\nexport class Execution extends EventEmitter<{\r\n flow:\r\n | 'previous'\r\n | 'confirm'\r\n | 'next'\r\n | 'save'\r\n | 'release'\r\n | 'share'\r\n | 'viewDocs'\r\n | 'print'\r\n | 'delegate';\r\n sendToDesktop: null;\r\n hideFormModal: Form;\r\n showFormAsModal: { form: Form; size?: TModalSize };\r\n renderComponent: {\r\n form: Form;\r\n componentName: string;\r\n el: HTMLElement;\r\n };\r\n adminEntity: TAdmEntityEvent;\r\n}> {\r\n public fieldsMapping: FieldsMapping;\r\n private entity!: Entity;\r\n private process!: Process;\r\n private observations!: Observations;\r\n private executedOnLoadEvents = false;\r\n public executionConfig: TExecutionConfig | null = null;\r\n public lastFieldFocusedId: string | null = null;\r\n private _steps: {\r\n title: string;\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[] = [];\r\n private _currentStep: number = 1;\r\n private _stepCount: number = 1;\r\n public readonly notifications: Notifications;\r\n private lastModalReturn: string[] = [];\r\n private _pendingPromises = new Set<Promise<boolean>>();\r\n\r\n constructor(\r\n public environment: TExecutionEnvironment,\r\n public renderers?: TModalConfig['renderers'],\r\n ) {\r\n super();\r\n\r\n this.fieldsMapping = { ...defaultFieldsMap, ...environment.fieldsMapping };\r\n\r\n this.notifications = new Notifications(this);\r\n\r\n makeObservable(this, { state: observable });\r\n\r\n setTimeout(() => {\r\n this.entity = new Entity(this);\r\n this.process = new Process(this);\r\n this.observations = new Observations(this);\r\n }, 0);\r\n }\r\n\r\n protected formsById = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n protected forms = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n\r\n state: {\r\n executionState: ExecutionState;\r\n locked: number;\r\n hasChangedAnything: boolean;\r\n } = {\r\n executionState: ExecutionState.LOADING,\r\n locked: 0,\r\n hasChangedAnything: false,\r\n };\r\n\r\n addPendingPromise(promise: Promise<boolean>) {\r\n this._pendingPromises.add(promise);\r\n promise.finally(() => {\r\n this._pendingPromises.delete(promise);\r\n });\r\n }\r\n\r\n public getErrorsList() {\r\n const entityErrors: FieldError[] = [];\r\n this.forms.E.forEach((form) => {\r\n entityErrors.push(...form.getErrorsList());\r\n });\r\n\r\n const processErrors: FieldError[] = [];\r\n this.forms.P.forEach((form) => {\r\n processErrors.push(...form.getErrorsList());\r\n });\r\n return [...entityErrors, ...processErrors];\r\n }\r\n\r\n getAllForms() {\r\n return [...this.forms.E.values(), ...this.forms.P.values()];\r\n }\r\n\r\n private hasInitializedFormsTabs: Record<TFrmParent, boolean> = {} as Record<\r\n TFrmParent,\r\n boolean\r\n >;\r\n\r\n initializeFormsTabs(frmParent: TFrmParent, cb: () => unknown) {\r\n if (!this.hasInitializedFormsTabs[frmParent]) {\r\n this.hasInitializedFormsTabs[frmParent] = true;\r\n cb();\r\n }\r\n }\r\n\r\n getFormsByType(type: TFrmParent) {\r\n return [...this.forms[type].values()];\r\n }\r\n getFormByName(formName: string, frmParent?: TFrmParent) {\r\n if (frmParent) {\r\n return this.forms[frmParent].get(formName);\r\n } else {\r\n return this.forms.E.get(formName) || this.forms.P.get(formName);\r\n }\r\n }\r\n getFormById(formId: string | number, frmParent?: TFrmParent) {\r\n if (frmParent) return this.formsById[frmParent].get(String(formId));\r\n return (\r\n this.formsById.E.get(String(formId)) ||\r\n this.formsById.P.get(String(formId))\r\n );\r\n }\r\n get currentStep() {\r\n return this._currentStep;\r\n }\r\n get steps() {\r\n return this._steps;\r\n }\r\n public getEntity() {\r\n this.entity.init();\r\n\r\n return this.entity;\r\n }\r\n public getProcess() {\r\n this.process.init();\r\n\r\n return this.process;\r\n }\r\n public getObservations() {\r\n this.observations.init();\r\n\r\n return this.observations;\r\n }\r\n public getCurrentTask() {\r\n return new Task({ task: { name: 'TODO' } });\r\n }\r\n\r\n private mustRenderForms: string[] = [];\r\n\r\n public get locked() {\r\n return this.state.locked > 0;\r\n }\r\n\r\n public lock() {\r\n this.state.locked++;\r\n let unlocked = false;\r\n return () => {\r\n if (!unlocked) {\r\n unlocked = true;\r\n this.state.locked--;\r\n }\r\n };\r\n }\r\n\r\n public async run(executionConfig: TExecutionConfig) {\r\n const unlock = this.lock();\r\n try {\r\n this._stepCount = noNaN(getWindow(this).STEP_QTY);\r\n this._currentStep = noNaN(getWindow(this).CURRENT_STEP);\r\n this.executionConfig = executionConfig;\r\n this.environment.properties = {\r\n taskName: getWindow(this).CURRENT_TASK_NAME || '',\r\n processName: getWindow(this).CURRENT_PROCESS_NAME || '',\r\n };\r\n\r\n const errXML = unescapeMarkup(getWindow(this).EXEC_ERRORS);\r\n\r\n if (errXML) {\r\n const obj: TExecutionErrors = parseXml(errXML);\r\n arrayOrArray(obj.sysMessages?.message).forEach((c) =>\r\n this.notifications.add(\r\n new MessageNotification({\r\n message: c.text,\r\n title: c.title,\r\n type: parseNotificationType(c.type),\r\n }),\r\n ),\r\n );\r\n [\r\n ...arrayOrArray(obj.exceptions?.exception),\r\n ...arrayOrArray(obj.sysExceptions?.exception),\r\n ].forEach((c) =>\r\n this.notifications.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'error',\r\n stackTrace: c.label,\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n for (let i = 1; i < Number(getWindow(this).STEP_QTY) + 1; i++) {\r\n if (i < this._currentStep) {\r\n this._steps.push({\r\n title: `${getLabel(this, 'lblTraStep').text} ${i}`,\r\n stepNumber: i,\r\n status: 'completed',\r\n });\r\n }\r\n if (i > this._currentStep && i <= this._stepCount) {\r\n this._steps.push({\r\n title: `${getLabel(this, 'lblTraStep').text} ${i}`,\r\n stepNumber: i,\r\n status: 'pending',\r\n });\r\n }\r\n if (i === this._currentStep) {\r\n this._steps.push({\r\n title: `${getLabel(this, 'lblTraStep').text} ${i}`,\r\n stepNumber: i,\r\n status: 'current',\r\n });\r\n }\r\n }\r\n const res = await InitialData.getFormsDefinition(this);\r\n\r\n try {\r\n for await (const formDefinition of res) {\r\n const props = parseFakeJSON(formDefinition.properties);\r\n if (\r\n !props.frmTab &&\r\n !props.frmHidden &&\r\n arrayOrArray(formDefinition.field).every(\r\n (c) => !c.properties?.visibilityHidden,\r\n ) &&\r\n (arrayOrArray(formDefinition.field).length > 0 ||\r\n arrayOrArray(formDefinition.customField).length > 0)\r\n ) {\r\n this.mustRenderForms.push(\r\n formDefinition.frmParent + '_' + formDefinition.formName,\r\n );\r\n }\r\n }\r\n for await (const formDefinition of res) {\r\n const newForm = new Form(this, formDefinition);\r\n await newForm.init();\r\n\r\n if (formDefinition.frmParent === 'E') {\r\n this.forms.E.set(formDefinition.formName, newForm);\r\n this.formsById.E.set(String(formDefinition.id), newForm);\r\n } else {\r\n this.forms.P.set(formDefinition.formName, newForm);\r\n this.formsById.P.set(String(formDefinition.id), newForm);\r\n }\r\n }\r\n\r\n this.state.executionState =\r\n this.mustRenderForms.length === 0\r\n ? ExecutionState.RUNNING\r\n : ExecutionState.RENDERING;\r\n\r\n await this.fireEvents('onLoad');\r\n this.executedOnLoadEvents = true;\r\n if (\r\n this.mustRenderForms.length === 0 &&\r\n this.state.executionState === ExecutionState.RENDERING\r\n ) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n } catch (e) {\r\n this.state.executionState = ExecutionState.FINISHED_WITH_ERROR;\r\n throw e;\r\n }\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n\r\n protected getHiddenForms() {\r\n const hiddenForms = this.getAllForms().filter((form) => {\r\n return form.properties.frmHidden;\r\n });\r\n return hiddenForms;\r\n }\r\n\r\n public markFormAsRendered(frmParent: string, frmName: string) {\r\n this.mustRenderForms = this.mustRenderForms.filter(\r\n (c) => c !== frmParent + '_' + frmName,\r\n );\r\n if (this.mustRenderForms.length === 0 && this.executedOnLoadEvents) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n }\r\n\r\n public async delegate() {\r\n console.warn('Delegate not implemented yet');\r\n }\r\n public async shareSocial() {\r\n console.warn('shareSocial not implemented yet');\r\n }\r\n\r\n flow = {\r\n back: () => {\r\n this.emit('flow', 'previous');\r\n },\r\n confirm: () => {\r\n this.emit('flow', 'confirm');\r\n },\r\n next: () => {\r\n this.emit('flow', 'next');\r\n },\r\n previous: () => {\r\n this.emit('flow', 'previous');\r\n },\r\n save: () => {\r\n this.emit('flow', 'save');\r\n },\r\n release: () => {\r\n this.emit('flow', 'release');\r\n },\r\n delegate: () => {\r\n this.emit('flow', 'delegate');\r\n },\r\n share: () => {\r\n this.emit('flow', 'share');\r\n },\r\n viewDocs: () => {\r\n this.emit('flow', 'viewDocs');\r\n },\r\n print: () => {\r\n this.emit('flow', 'print');\r\n },\r\n };\r\n\r\n sendToDesktop() {\r\n this.emit('sendToDesktop', null);\r\n }\r\n\r\n public async doBack() {\r\n const canGoBack = this.executionConfig?.canGoBack;\r\n if (canGoBack) {\r\n try {\r\n const nextUrl = makeApiaUrl(this, {\r\n action: 'gotoPrevStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async doConfirm(\r\n status?: Status,\r\n ): Promise<boolean | FlowModal<any> | Field> {\r\n if (status && !status?.step && !status?.finishedWithError) {\r\n return false;\r\n } else {\r\n const validationResult = status !== undefined || (await this.validate());\r\n if (validationResult !== true) {\r\n return validationResult;\r\n }\r\n\r\n if (\r\n this.executionConfig?.isEntity &&\r\n !this.entity.validateAssociations()\r\n ) {\r\n return false;\r\n }\r\n\r\n const isValid =\r\n status !== undefined || (await this.fireEvents('onSubmit'));\r\n const canConfirm = this.executionConfig?.canConfirm && isValid === true;\r\n\r\n if (canConfirm) {\r\n const unlock = this.lock();\r\n try {\r\n const result = await (\r\n this.executionConfig?.isEntity ? confirmEntity : confirm\r\n )(\r\n this,\r\n (status || {\r\n step: 'CHECK_LOCK',\r\n }) as any,\r\n );\r\n\r\n if (result instanceof FlowModal) {\r\n return result;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n } finally {\r\n unlock();\r\n }\r\n } else {\r\n return isValid;\r\n }\r\n }\r\n }\r\n\r\n public async doFree() {\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const data = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'release',\r\n currentTab: getCurrentTabsString(this),\r\n }),\r\n {\r\n postData: serverParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (data?.data?.text) {\r\n this.state.executionState = ExecutionState.FINISHED;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n public async doNext(result?: { confirmed: boolean; signed: boolean }) {\r\n const isValid = await this.validate();\r\n if (isValid === true) {\r\n if (!(await this.fireEvents('onSubmit'))) {\r\n return false;\r\n }\r\n }\r\n if (isValid !== true) return isValid;\r\n\r\n const canGoNext = this.executionConfig?.canGoForward && isValid === true;\r\n\r\n if (canGoNext) {\r\n const unlock = this.lock();\r\n try {\r\n const checkLocksRes = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksRes?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n throw new Error('Failed to check WebDAV document locks.');\r\n }\r\n\r\n // Check signable forms\r\n const checkSignableFormsRes = await post<{\r\n hasForms: boolean;\r\n sign: boolean;\r\n }>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n appletToken: getWindow(this).appletToken,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (checkSignableFormsRes?.status !== 200) {\r\n throw new Error('No signable forms available.');\r\n }\r\n const mustShowSignModal = checkSignableFormsRes?.data?.sign;\r\n\r\n if (mustShowSignModal && !result?.signed) {\r\n return new ShowSignSelection(\r\n checkSignableFormsRes?.data,\r\n async () => {\r\n return '' as Status;\r\n },\r\n );\r\n }\r\n\r\n if (mustShowSignModal && (!result?.confirmed || !result?.signed))\r\n return;\r\n\r\n const nextUrl = makeApiaUrl(this, {\r\n action: 'gotoNextStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n return true;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n }\r\n\r\n public async doPrint() {\r\n getWindow(this).print();\r\n }\r\n\r\n public async doSave() {\r\n const unlock = this.lock();\r\n\r\n try {\r\n const response = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n }),\r\n {\r\n postData: {\r\n ...this.observations.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const canClose = response?.data?.load?.canClose;\r\n if (canClose) {\r\n return response;\r\n }\r\n } finally {\r\n unlock();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getStepTitle(step: number) {\r\n if (this._steps) return this._steps[step];\r\n }\r\n\r\n /**\r\n * Ends the current session\r\n */\r\n public kill() {\r\n ((frameElement as any)?.handleDeadSession as any)?.();\r\n this.state.executionState = ExecutionState.FINISHED;\r\n this.notifications.kill();\r\n }\r\n\r\n public async viewDocs() {\r\n const url = `${\r\n getWindow(this).CONTEXT\r\n }/react/generic/docExecutionModal.jsp?isProcessMonitor=${\r\n getWindow(this).IN_MONITOR_PROCESS ?? 'false'\r\n }&isTaskMonitor=${getWindow(this).IN_MONITOR_TASK ?? 'false'}&isTask=true${\r\n getWindow(this).TAB_ID_REQUEST\r\n }&react=true`;\r\n\r\n const result = await get(this, url);\r\n\r\n if (result && result.data !== null) {\r\n const { data } = result;\r\n return data;\r\n }\r\n }\r\n\r\n public setStepTitle(stepNumber: number, stepTitle: string) {\r\n if (this._steps && this._steps[stepNumber - 1])\r\n this._steps[stepNumber - 1].title = stepTitle;\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const [, c] of this.forms.E) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n for await (const [, c] of this.forms.P) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n\r\n return firstInvalid ?? true;\r\n }\r\n\r\n public setLastModalReturn(value: string[]) {\r\n this.lastModalReturn = value;\r\n }\r\n\r\n public getLastModalReturn() {\r\n return this.lastModalReturn;\r\n }\r\n\r\n private async fireEvents(evt: TFormEventName) {\r\n const unlock = this.lock();\r\n let result = true;\r\n\r\n try {\r\n for await (const f of this.forms.E.values()) {\r\n result = result && (await f.fireScriptEvent(evt));\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n for await (const f of this.forms.P.values()) {\r\n result = result && (await f.fireScriptEvent(evt));\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n public async waitForPendingSyncs(): Promise<void> {\r\n if (this._pendingPromises.size === 0) return;\r\n\r\n const pending = Array.from(this._pendingPromises);\r\n\r\n await Promise.allSettled(pending);\r\n }\r\n}\r\n"],"names":["__publicField","ExecutionState","queryString","parseFakeJSON","IProperty","id","_hasInited","__privateAdd","__privateGet","__privateSet","EventEmitter","result","OriginalUploaderApi","shallowEqual","properties","noNaN","d","_execution","_field","TextAreaField","decodeBase64ToUtf8","checkSign","sign","checkLock","defaultConfirm","checkers"],"mappings":";;;;;;;;;;;;;;AAEO,MAAM,SAAA,GAA6B,CAAC,CAAA,EAAQ,CAAA,KAAW;AAC5D,EAAA,IAAI,MAAA,CAAO,EAAA,CAAG,CAAA,EAAG,CAAC,CAAA;AAAG,IAAA,OAAO,IAAA;AAE5B,EAAA,IAAI,CAAC,OAAO,EAAA,CAAG,CAAA,EAAG,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,OAAO,CAAA,EAAG;AAC7C,IAAA,OAAO,KAAA;AAAA;AAGT,EAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpB,MAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,CAAC,KAAK,CAAA,CAAE,MAAA,KAAW,EAAE,MAAA,EAAQ;AAC9C,QAAA,OAAO,KAAA;AAAA;AAET,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACjC,QAAA,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG;AAC1B,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,OAAO,IAAA;AAAA,KACT,MAAA,IAAW,KAAK,CAAA,EAAG;AACjB,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5C,QAAA,IAAI,CAAC,SAAA,CAAU,KAAA,EAAO,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG;AAC7B,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5C,QAAA,IAAI,CAAC,SAAA,CAAU,KAAA,EAAO,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG;AAC7B,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,OAAO,IAAA;AAAA,eACG,CAAA,IAAK,CAAC,CAAA,IAAO,CAAC,KAAK,CAAA,EAAI;AACjC,MAAA,OAAO,KAAA;AAAA;AACT;AAGF,EAAA,OAAO,CAAA,KAAM,CAAA;AACf;;;;;;;;ACjBO,MAAe,YAAA,CAEpB;AAAA,EAGA,YAA4B,KAAA,EAAc;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAF5B,IAAAA,eAAA,CAAA,IAAA,EAAU,OAAA,CAAA;AAGR,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAEb,IAAA,cAAA,CAAsC,IAAA,EAAM,EAAE,KAAA,EAAO,UAAA,EAAY,CAAA;AAAA;AACnE,EAEA,IAAI,IAAA,GAAO;AACT,IAAA,OAAO,KAAK,KAAA,CAAM,IAAA;AAAA;AACpB,EACA,IAAI,EAAA,GAAK;AACP,IAAA,OAAO,KAAK,KAAA,CAAM,EAAA;AAAA;AACpB,EACA,IAAI,MAAA,GAAS;AACX,IAAA,OAAO,KAAK,KAAA,CAAM,MAAA;AAAA;AACpB,EACA,IAAI,OAAA,GAAU;AACZ,IAAA,OAAO,KAAK,KAAA,CAAM,OAAA;AAAA;AACpB,EACA,IAAI,UAAA,GAAa;AACf,IAAA,OAAO,KAAK,KAAA,CAAM,UAAA;AAAA;AACpB,EACA,IAAI,KAAA,GAAQ;AACV,IAAA,OAAO,KAAK,KAAA,CAAM,KAAA;AAAA;AACpB,EACA,IAAI,IAAA,GAAO;AACT,IAAA,OAAO,KAAK,KAAA,CAAM,IAAA;AAAA;AAEtB;;ACnDO,MAAM,4BAA4B,YAAA,CAAa;AAAA,EACpD,KAAA,GAAQ;AACN,IAAA,IAAA,CAAK,MAAM,MAAA,GAAS,KAAA;AAAA;AAExB;;ACNA,MAAM,UAAA,GAAa;AAAA;AAAA,EAEjB,UAAA,EAAY,OAAA;AAAA,EACZ,WAAA,EAAa,QAAA;AAAA,EACb,UAAA,EAAY,OAAA;AAAA,EACZ,UAAA,EAAY,OAAA;AAAA,EACZ,WAAA,EAAa,QAAA;AAAA,EACb,SAAA,EAAW,MAAA;AAAA,EACX,UAAA,EAAY,OAAA;AAAA,EACZ,UAAA,EAAY,OAAA;AAAA,EACZ,SAAA,EAAW,MAAA;AAAA,EACX,aAAA,EAAe,UAAA;AAAA,EACf,WAAA,EAAa,QAAA;AAAA,EACb,aAAA,EAAe,UAAA;AAAA,EACf,SAAA,EAAW,MAAA;AAAA,EACX,UAAA,EAAY,OAAA;AAAA,EACZ,SAAA,EAAW,MAAA;AAAA,EACX,WAAA,EAAa,QAAA;AAAA,EACb,SAAA,EAAW,MAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA;AAAA,EAGd,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,UAAA;AAAA,EACb,iBAAA,EAAmB,eAAA;AAAA,EAEnB,YAAA,EAAc,UAAA;AAAA,EACd,eAAA,EAAiB,aAAA;AAAA,EACjB,aAAA,EAAe,WAAA;AAAA,EACf,eAAA,EAAiB,aAAA;AAAA;AAAA,EAGjB,gBAAA,EAAkB,YAAA;AAAA;AAAA,EAGlB,aAAA,EAAe,MAAA;AAAA,EACf,aAAA,EAAe,MAAA;AAAA,EACf,iBAAA,EAAmB,UAAA;AAAA,EACnB,iBAAA,EAAmB,UAAA;AAAA,EACnB,uBAAA,EAAyB,eAAA;AAAA,EACzB,mBAAA,EAAqB,WAAA;AAAA,EACrB,cAAA,EAAgB,OAAA;AAAA,EAChB,iBAAA,EAAmB,UAAA;AAAA,EACnB,gBAAA,EAAkB,SAAA;AAAA,EAClB,gBAAA,EAAkB,SAAA;AAAA,EAClB,cAAA,EAAgB,OAAA;AAAA,EAChB,aAAA,EAAe,UAAA;AAAA,EACf,aAAA,EAAe,MAAA;AAAA,EACf,mBAAA,EAAqB,YAAA;AAAA,EACrB,kBAAA,EAAoB,WAAA;AAAA,EACpB,cAAA,EAAgB,UAAA;AAAA,EAChB,kBAAA,EAAoB,UAAA;AAAA,EACpB,oBAAA,EAAsB,YAAA;AAAA,EACtB,sBAAA,EAAwB,iBAAA;AAAA,EACxB,0BAAA,EAA4B,kBAAA;AAAA,EAC5B,kBAAA,EAAoB,WAAA;AAAA,EACpB,mBAAA,EAAqB,WAAA;AAAA,EACrB,kBAAA,EAAoB,UAAA;AAAA,EACpB,gBAAA,EAAkB,SAAA;AAAA,EAClB,oBAAA,EAAsB,YAAA;AAAA,EACtB,sBAAA,EAAwB,aAAA;AAAA,EACxB,oBAAA,EAAsB,YAAA;AAAA,EACtB,iBAAA,EAAmB,SAAA;AAAA,EACnB,gBAAA,EAAkB,QAAA;AAAA,EAClB,mBAAA,EAAqB,WAAA;AAAA,EACrB,kBAAA,EAAoB,UAAA;AAAA,EACpB,sBAAA,EAAwB,cAAA;AAAA,EACxB,wBAAA,EAA0B,iBAAA;AAAA,EAC1B,YAAA,EAAc,KAAA;AAAA,EACd,4BAAA,EAA8B,iBAAA;AAAA,EAC9B,8BAAA,EAAgC,mBAAA;AAAA,EAChC,uBAAA,EAAyB,eAAA;AAAA,EACzB,mBAAA,EAAqB,OAAA;AAAA,EACrB,wBAAA,EAA0B,eAAA;AAAA,EAC1B,gCAAA,EAAkC,mBAAA;AAAA,EAClC,8BAAA,EAAgC,iBAAA;AAAA,EAChC,iCAAA,EAAmC,mBAAA;AAAA,EACnC,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,qBAAA,EAAuB,YAAA;AAAA,EACvB,mBAAA,EAAqB,cAAA;AAAA,EACrB,mBAAA,EAAqB,WAAA;AAAA,EACrB,6BAAA,EAA+B,oBAAA;AAAA,EAC/B,8BAAA,EAAgC,qBAAA;AAAA,EAChC,0BAAA,EAA4B,eAAA;AAAA,EAC5B,0BAAA,EAA4B,eAAA;AAAA,EAC5B,wBAAA,EAA0B,eAAA;AAAA,EAC1B,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,uBAAA,EAAyB,cAAA;AAAA,EACzB,sBAAA,EAAwB,aAAA;AAAA,EACxB,yBAAA,EAA2B,gBAAA;AAAA,EAC3B,sBAAA,EAAwB,iBAAA;AAAA,EACxB,qBAAA,EAAuB,aAAA;AAAA,EACvB,yBAAA,EAA2B,gBAAA;AAAA,EAC3B,gBAAA,EAAkB,SAAA;AAAA,EAClB,qBAAA,EAAuB,aAAA;AAAA,EACvB,kBAAA,EAAoB,SAAA;AAAA;AAAA,EAEpB,sBAAA,EAAwB,WAAA;AAAA,EACxB,eAAA,EAAiB,QAAA;AAAA,EACjB,oBAAA,EAAsB,aAAA;AAAA,EACtB,mBAAA,EAAqB,WAAA;AAAA,EACrB,oBAAA,EAAsB,YAAA;AAAA,EACtB,kBAAA,EAAoB,UAAA;AAAA,EACpB,kBAAA,EAAoB,UAAA;AAAA,EACpB,iBAAA,EAAmB,SAAA;AAAA;AAAA,EAEnB,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,6BAAA,EAA+B,SAAA;AAAA,EAC/B,2BAAA,EAA6B,SAAA;AAAA,EAC7B,6BAAA,EAA+B,aAAA;AAAA,EAC/B,6BAAA,EAA+B,oBAAA;AAAA,EAC/B,6BAAA,EAA+B,oBAAA;AAAA,EAC/B,oCAAA,EAAsC,oBAAA;AAAA,EACtC,oCAAA,EAAsC,oBAAA;AAAA,EACtC,oCAAA,EAAsC,eAAA;AAAA,EACtC,+BAAA,EAAiC,wBAAA;AAAA,EACjC,2BAAA,EAA6B,cAAA;AAAA,EAC7B,gCAAA,EAAkC,eAAA;AAAA,EAClC,6BAAA,EAA+B,gBAAA;AAAA,EAC/B,0BAAA,EAA4B,aAAA;AAAA,EAC5B,iCAAA,EAAmC,mBAAA;AAAA,EACnC,+BAAA,EAAiC,wBAAA;AAAA,EACjC,+BAAA,EAAiC,sBAAA;AAAA,EACjC,kCAAA,EAAoC;AACtC,CAAA;;AC5HA,MAAM,SAAA,GAAY;AAAA,EAChB,SAAA,EAAW,QAAA;AAAA,EACX,WAAA,EAAa,UAAA;AAAA,EACb,uBAAA,EAAyB,cAAA;AAAA,EACzB,oBAAA,EAAsB,WAAA;AAAA,EACtB,oBAAA,EAAsB,cAAA;AAAA,EACtB,iBAAA,EAAmB,QAAA;AAAA,EACnB,uBAAA,EAAyB,cAAA;AAAA,EACzB,uBAAA,EAAyB,aAAA;AAAA,EACzB,sBAAA,EAAwB,UAAA;AAAA,EACxB,aAAA,EAAe,cAAA;AAAA,EACf,cAAA,EAAgB,cAAA;AAAA,EAChB,aAAA,EAAe,sBAAA;AAAA,EACf,SAAA,EAAW;AACb,CAAA;;ACXA,MAAM,aAAA,GAAgB;AAAA,EACpB,SAAA,CAAU,uBAAA;AAAA,EACV,SAAA,CAAU,oBAAA;AAAA,EACV,SAAA,CAAU,oBAAA;AAAA,EACV,SAAA,CAAU,iBAAA;AAAA,EACV,SAAA,CAAU,uBAAA;AAAA,EACV,SAAA,CAAU,uBAAA;AAAA,EACV,SAAA,CAAU,sBAAA;AAAA,EACV,SAAA,CAAU,aAAA;AAAA,EACV,SAAA,CAAU,cAAA;AAAA,EACV,SAAA,CAAU;AACZ,CAAA;AAEA,MAAM,cAAA,GAAiB;AAAA,EACrB,UAAA,CAAW,sBAAA;AAAA,EACX,UAAA,CAAW,gBAAA;AAAA,EACX,UAAA,CAAW,iBAAA;AAAA,EACX,UAAA,CAAW,kCAAA;AAAA,EACX,UAAA,CAAW,+BAAA;AAAA,EACX,UAAA,CAAW,+BAAA;AAAA,EACX,UAAA,CAAW,iCAAA;AAAA,EACX,UAAA,CAAW,0BAAA;AAAA,EACX,UAAA,CAAW,oCAAA;AAAA,EACX,UAAA,CAAW,+BAAA;AAAA,EACX,UAAA,CAAW,2BAAA;AAAA,EACX,UAAA,CAAW,oCAAA;AAAA,EACX,UAAA,CAAW,oCAAA;AAAA,EACX,UAAA,CAAW,qBAAA;AAAA,EACX,UAAA,CAAW,gCAAA;AAAA,EACX,UAAA,CAAW,0BAAA;AAAA,EACX,UAAA,CAAW,0BAAA;AAAA,EACX,UAAA,CAAW,8BAAA;AAAA,EACX,UAAA,CAAW,4BAAA;AAAA,EACX,UAAA,CAAW,0BAAA;AAAA,EACX,UAAA,CAAW,uBAAA;AAAA,EACX,UAAA,CAAW,sBAAA;AAAA,EACX,UAAA,CAAW,0BAAA;AAAA,EACX,UAAA,CAAW,6BAAA;AAAA,EACX,UAAA,CAAW,sBAAA;AAAA,EACX,UAAA,CAAW,wBAAA;AAAA,EACX,UAAA,CAAW,sBAAA;AAAA,EACX,UAAA,CAAW,0BAAA;AAAA,EACX,UAAA,CAAW,sBAAA;AAAA,EACX,UAAA,CAAW,uBAAA;AAAA,EACX,UAAA,CAAW,oBAAA;AAAA,EACX,UAAA,CAAW,oBAAA;AAAA,EACX,UAAA,CAAW,iBAAA;AAAA,EACX,UAAA,CAAW,gBAAA;AAAA,EACX,UAAA,CAAW,kBAAA;AAAA,EACX,UAAA,CAAW,kBAAA;AAAA,EACX,UAAA,CAAW,mBAAA;AAAA,EACX,UAAA,CAAW,iBAAA;AAAA,EACX,UAAA,CAAW,iBAAA;AAAA,EACX,UAAA,CAAW,mBAAA;AAAA,EACX,UAAA,CAAW,6BAAA;AAAA,EACX,UAAA,CAAW,2BAAA;AAAA,EACX,UAAA,CAAW,iCAAA;AAAA,EACX,UAAA,CAAW,kBAAA;AAAA,EACX,UAAA,CAAW,6BAAA;AAAA,EACX,UAAA,CAAW;AACb,CAAA;AAEA,MAAM,SAAA,GAAsB,CAAC,GAAG,cAAA,EAAgB,GAAG,aAAa,CAAA;;AC/DhE,MAAM,QAAA,GAAqB;AAAA,EACzB,UAAA,CAAW,aAAA;AAAA,EACX,UAAA,CAAW,aAAA;AAAA,EACX,UAAA,CAAW,gBAAA;AAAA,EACX,UAAA,CAAW,gBAAA;AAAA,EACX,UAAA,CAAW,wBAAA;AAAA,EACX,UAAA,CAAW,oBAAA;AAAA,EACX,UAAA,CAAW;AACb,CAAA;;ACIA,MAAM,UAAA,GAAa,CAAC,MAAA,KAAoD;AACtE,EAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA;AAAU,IAAA,OAAO,EAAC;AAEnD,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAEvC,EAAA,OAAO,IAAA,CAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,CAAA;AACxB,CAAA;AAGA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgC;AACjD,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,IAAI,wBAAA,CAAyB,KAAK,GAAG,CAAA;AAAG,MAAA,OAAO,IAAA;AAC/C,IAAA,IAAI,8BAAA,CAA+B,KAAK,GAAG,CAAA;AAAG,MAAA,OAAO,KAAA;AAAA;AAEvD,EAAA,OAAO,KAAA;AACT,CAAA;AAkBO,MAAM,uBAAA,GAA0B,CACrC,KAAA,KACsB;AAEtB,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,MAAM,OAAA,GAAoB,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAC3C,EAAA,MAAM,MAAA,GAA2B,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACpD,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC1C,IAAA,MAAM,GAAA,GAAM,QAAQ,CAAC,CAAA;AACrB,IAAA,IAAI,SAAA,CAAU,QAAQ,GAAG,CAAA,KAAM,MAAM,QAAA,CAAS,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,EAAI;AACjE,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAAA,KAC/B,MAAA,IAAW,OAAO,MAAA,CAAO,CAAC,MAAM,QAAA,EAAU;AACxC,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA;AAAA,KAC1B,MAAA,IAAW,SAAA,CAAU,OAAA,CAAQ,GAAG,MAAM,EAAA,EAAI;AACxC,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,SAAA,CAAU,MAAA,CAAO,CAAC,CAAW,CAAA;AAAA,KAC/C,MAAA,IAAW,QAAA,CAAS,OAAA,CAAQ,GAAG,MAAM,EAAA,EAAI;AACvC,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,QAAA,CAAU,OAAO,CAAC,CAAA,IAAgB,IAAI,EAAE,CAAA;AAAA;AAC1D;AAEF,EAAA,OAAO,QAAA;AACT,CAAA;AAEO,MAAM,wBAAA,GAA2B,CAAC,IAAA,KAAyB;AAChE,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,MAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,OAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,gBAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,MAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,SAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,QAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,UAAA;AACzB,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,WAAA;AACzB,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,MAAM,yBAAA,GAA4B,CAAC,IAAA,KAAyB;AACjE,EAAA,IAAI,IAAA,KAAS,GAAA;AAAK,IAAA,OAAO,MAAA;AACzB,EAAA,IAAI,IAAA,KAAS,OAAA;AAAS,IAAA,OAAO,OAAA;AAC7B,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,MAAM,wBAAA,GAA2B,CACtC,KAAA,EACA,KAAA,KACgB;AAChB,EAAA,OAAO,KAAA;AACT,CAAA;AACO,SAAS,WAAW,IAAA,EAAc;AACvC,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AACtC,EAAA,OAAO,EAAA,CAAG,OAAO,IAAI,CAAA;AACvB;AAEO,MAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,GAAA,KAMwB;AACxB,EAAA,IAAI,QAAQ,YAAA,EAAc;AACxB,IAAA,OAAO,uBAAA,CAAwB,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA;AAElD,EAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAEzB,EAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAEzB,EAAA,IAAI,QAAQ,SAAA,EAAW;AACrB,IAAA,OAAO,QAAA,CAAS,GAAG,MAAA,CAAO,KAAK,EAAE,UAAA,CAAW,GAAA,EAAK,OAAO,CAAC,CAAA;AAAA;AAE3D,EAAA,IAAI,GAAA,KAAQ,WAAW,OAAO,KAAA,KAAU,YAAY,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAAG;AACvE,IAAA,OAAO,EAAA;AAAA;AAET,EAAA,IAAI,QAAQ,WAAA,IAAe,OAAO,KAAA,KAAU,QAAA,IAAY,UAAU,MAAA,EAAQ;AACxE,IAAA,OAAO,EAAA;AAAA;AAET,EAAA,IAAA,CACG,GAAA,KAAQ,MAAA,IACP,GAAA,KAAQ,MAAA,IACR,GAAA,KAAQ,GAAA,IACR,GAAA,KAAQ,GAAA,IACR,GAAA,KAAQ,QAAA,KACV,OAAO,KAAA,KAAU,QAAA,EACjB;AACA,IAAA,OAAO,aAAa,KAAK,CAAA;AAAA;AAG3B,EAAA,OAAO,MAAM,KAAA,GAAQ,KAAK,CAAA,GAAI,UAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACpD,CAAA;AAEO,SAAS,uBAAuB,CAAA,EAAW;AAChD,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5C,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,EAAO;AACtC,MAAC,CAAA,CAAU,GAAG,CAAA,GAAI,sBAAA,CAAuB,KAAK,CAAA;AAAA,eACrC,OAAO,KAAA,KAAU,YAAY,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,EAAG;AACxD,MAAA,IAAK,CAAA,CAAU,cAAc,QAAA,EAAU;AACrC,QAAC,CAAA,CAAU,GAAG,CAAA,GAAI,UAAA,CAAW,KAAK,CAAA;AAAA,OACpC,MAAO;AACL,QAAC,CAAA,CAAU,GAAG,CAAA,GAAI,UAAA,CAAW,KAAK,CAAA;AAAA;AACpC;AACF;AAEF,EAAA,OAAO,CAAA;AACT;AAmCO,SAAS,sBAAA,CAAuB,OAAe,IAAA,EAAe;AAEnE,EAAA,IAAI,IAAA,KAAS,OAAA;AAAS,IAAA,OAAO,KAAA;AAG7B,EAAA,OAAO,cAAc,KAAK,CAAA;AAC5B;AAEO,SAAS,2BACd,YAAA,EACA;AACA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,IAAe;AAAA,IACrB,SAAA,EAAW,IAAe;AAAA,IAC1B,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,OAAA,EAAS,OAAA;AAAA,IACT,mBAAA,EAAqB;AAAA,MACnB,sBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,iBAAA,EAAmB,CAAC,wBAAwB,CAAA;AAAA,IAC5C,kBAAA,EAAoB,CAAC,yBAAyB;AAAA,GAChD;AACF;AAEO,SAAS,0BAAA,GAAgC;AAC9C,EAAA,OAAO,CAAC,KAAa,MAAA,KAA0B;AAC7C,IAAA,IAAI,KAAA;AAEJ,IAAA,MAAA,CAAO,WAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,KAAmB,MAAA,KAAoC;AACtD,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,OAAA,CAAQ,IAAA,CAAK,0BAA0B,GAAG,CAAA;AAC1C,UAAA,KAAA,GAAQ,GAAA;AAAA,SACV,MAAO;AACL,UAAA,IAAI,MAAA,EAAQ,IAAA,KAAS,IAAA,IAAQ,MAAA,CAAO,UAAA,EAAY;AAC9C,YAAA,MAAM,IAAI,uBAAA,EAAwB;AAAA;AAEpC,UAAA,KAAA,GAAQ,MAAA;AAAA;AACV;AACF,KACF;AAEA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,GAC/B,sBAAA,CAAuB,KAAK,CAAA,GAC7B,KAAA;AAAA;AAEN,IAAA,OAAO,EAAC;AAAA,GACV;AACF;AAEA,SAAS,oBACP,YAAA,EACc;AACd,EAAA,OAAO,CAAC,KAAK,aAAA,KAAkB;AAC7B,IAAA,MAAM,SAAS,IAAI,MAAA,CAAO,MAAA,CAAO,0BAAA,CAAuC,CAAC,CAAA;AACzE,IAAA,OAAO,0BAAA,EAA8B,CAAE,GAAA,EAAe,MAAM,CAAA;AAAA,GAC9D;AACF;AAEO,MAAM,QAAA,GAAW,CACtB,GAAA,EACA,YAAA,KACM;AACN,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,EAAE,eAAe,WAAA,CAAA,EAAc;AAC5D,IAAA,OAAO,GAAA;AAAA;AAGT,EAAA,MAAM,MAAA,GACJ,YAAA,EAAc,SAAA,IAAa,mBAAA,EAAuB;AAEpD,EAAA,OAAO,MAAA,CAAO,KAAK,YAAY,CAAA;AACjC;;ACtQO,SAAS,UAAU,SAAA,EAAsB;AAC9C,EAAA,OAAO,UAAU,WAAA,CAAY,MAAA;AAC/B;;ACFO,IAAK,cAAA,qBAAAC,eAAAA,KAAL;AACL,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AANU,EAAA,OAAAA,eAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA;;AC2BZ,SAAS,eAAA,CACP,SAAA,EACA,IAAA,EACA,OAAA,EACA;AACA,EAAA,MAAM,cAAc,OAAA,CAAQ,IAAA;AAC5B,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,EAAM,SAAA,EAAW,WAAW,OAAA,EAAS,OAAO,CAAA,CAC9D,WAAA,IAAe,CACjB,CAAA;AAEA,EAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,IACtB,IAAI,mBAAA,CAAoB;AAAA,MACtB,SAAS,OAAA,CAAQ,IAAA;AAAA,MACjB,YAAY,OAAA,CAAQ,KAAA;AAAA,MACpB,OAAO,OAAA,CAAQ,KAAA;AAAA,MACf,MAAM,UAAA,IAAc;AAAA,KACrB;AAAA,GACH;AACF;AAEA,SAAS,QAAA,GAAW;AAClB,EAAA,OAAO,OAAO,OAAO,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAA,KAC3B,OAAO,OAAA,KAAY,WAAA,IACnB,OAAA,CAAQ,GAAA,EAAK,WAAA,IACb,OAAA,CAAQ,GAAA,EAAK,OAAA,GACT,CAAA,CAAE,QAAQ,MAAA,CAAO;AAAA,MACf,OAAA,EAAS,OAAA,EAAS,GAAA,EAAK,WAAA,CAAY,UAAA;AAAA,QACjC,QAAQ,GAAA,CAAI,OAAA;AAAA,QACZ;AAAA;AACF,KACD,IACD,CAAA,CAAE;AAAA,GACR;AACF;AAEA,MAAM,mBAAA,GAAsB,CAAC,SAAA,EAAsB,KAAA,KAAiB;AAClE,EAAA,IACE,iBAAiB,uBAAA,IAChB,KAAA,YAAiB,UAAA,IAAc,KAAA,CAAM,WAAW,GAAA,EACjD;AACA,IAAA,SAAA,CAAU,IAAA,EAAK;AACf,IAAA,MAAM,IAAI,uBAAA,EAAwB;AAAA;AAGpC,EAAA,IAAI,YAAA;AACJ,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,IAAI,KAAA,CAAM,OAAA;AAAS,MAAA,YAAA,GAAe,KAAA,CAAM,OAAA;AAAA;AACnC,MAAA,YAAA,GAAe,MAAM,QAAA,EAAS;AAAA,GACrC;AAAO,IAAA,YAAA,GAAe,KAAA;AAEtB,EAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,IACtB,IAAI,mBAAA,CAAoB;AAAA,MACtB,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,YAAA,EAAc,OAAO;AAAA,KACvD;AAAA,GACH;AACF,CAAA;AAEO,SAAS,eAAe,QAAA,EAAkC;AAC/D,EAAA,OAAQ,QAAA,CAAS,OAAA,CAAQ,cAAc,CAAA,CAAa,MAAM,kBAAkB,CAAA;AAC9E;AACO,SAAS,cAAc,QAAA,EAAkC;AAC9D,EAAA,OAAQ,QAAA,CAAS,OAAA,CAAQ,cAAc,CAAA,CAAa,KAAA;AAAA,IAClD;AAAA,GACF;AACF;AACO,SAAS,eAAe,QAAA,EAAkC;AAC/D,EAAA,OAAQ,QAAA,CAAS,OAAA,CAAQ,cAAc,CAAA,CAAa,KAAA;AAAA,IAClD;AAAA,GACF;AACF;AAEO,SAAS,aAAA,CACd,WACA,QAAA,EACA;AACA,EAAA,IAAI,CAAC,QAAA;AAAU,IAAA;AACf,EAAA,MAAM,EAAE,UAAA,EAAY,WAAA,EAAa,aAAA,EAAc,GAAI,QAAA;AACnD,EAAA,YAAA,CAAa,UAAA,EAAY,SAAS,CAAA,CAAE,OAAA;AAAA,IAClC,eAAA,CAAgB,IAAA,CAAK,eAAA,EAAiB,SAAA,EAAW,OAAO;AAAA,GAC1D;AACA,EAAA,YAAA,CAAa,WAAA,EAAa,OAAO,CAAA,CAAE,OAAA;AAAA,IACjC,eAAA,CAAgB,IAAA,CAAK,eAAA,EAAiB,SAAA,EAAW,SAAS;AAAA,GAC5D;AACA,EAAA,YAAA,CAAa,aAAA,EAAe,SAAS,CAAA,CAAE,OAAA;AAAA,IACrC,eAAA,CAAgB,IAAA,CAAK,eAAA,EAAiB,SAAA,EAAW,OAAO;AAAA,GAC1D;AACF;AAEA,eAAe,cAAA,CAIb,SAAA,EACA,MAAA,EACA,YAAA,EACqD;AACrD,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,IAAA,KAAS,MAAA,EAAW,CAE1C,MAAO;AACL,MAAA,MAAM,iBAAiB,MAAM,uBAAA;AAAA,QAC3B,SAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAA,OAAO;AAAA,QACL,GAAG,MAAA;AAAA,QACH,IAAA,EAAM,cAAA;AAAA,QACN,UACE,CAAC,CAAC,gBAAgB,UAAA,IAAc,CAAC,CAAC,cAAA,EAAgB,aAAA;AAAA,QACpD,WAAA,EAAa,CAAC,CAAC,cAAA,EAAgB;AAAA,OACjC;AAAA;AACF,WACO,CAAA,EAAY;AACnB,IAAA,mBAAA;AAAA,MACE,SAAA;AAAA,MACA,CAAA,YAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,MAAM,CAAW;AAAA,KAChD;AACA,IAAA,OAAO,IAAA;AAAA;AAGT,EAAA,OAAO,IAAA;AACT;AAEO,MAAM,gCAAgC,KAAA,CAAM;AAAC;AAE7C,MAAM,uBAAA,GAA0B,OAIrC,SAAA,EACA,QAAA,EACA,YAAA,KACG;AACH,EAAA,IAAI,SAAA,GACF,MAAA;AACF,EAAA,IAAI,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC5B,IAAA,IAAI,OAAO,SAAS,IAAA,KAAS,QAAA;AAC3B,MAAA,SAAA,GAAY,IAAA,CAAK,KAAA;AAAA,QACf,QAAA,CAAS,KAAK,IAAA;AAAK,OACrB;AAAA,SAAA,IACO,OAAO,QAAA,CAAS,IAAA,KAAS,QAAA,IAAY,QAAA,CAAS,IAAA;AACrD,MAAA,SAAA,GAAY,QAAA,CAAS,IAAA;AAAA,GACzB,MAAA,IAAW,aAAA,CAAc,QAAQ,CAAA,EAAG;AAClC,IAAA,IAAI;AACF,MAAA,SAAA,GAAY,QAAA,CAAuB,QAAA,CAAS,IAAA,EAAM,YAAY,CAAA;AAAA,aACvD,CAAA,EAAG;AACV,MAAA,mBAAA;AAAA,QACE,SAAA;AAAA,QACA,CAAA,YAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,MAAM,CAAW;AAAA,OAChD;AAAA;AACF,GACF,MAAA,IAAW,cAAA,CAAe,QAAQ,CAAA,EAAG;AACnC,IAAA,OAAA,CAAQ,KAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA,OAAO,IAAA;AAAA;AAGT,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM;AAAA,MACJ,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,SAAA;AACJ,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,IAAA,IAAQ,UAAA,EAAY;AACpC,MAAA,MAAM,IAAI,uBAAA,EAAwB;AAAA;AAGpC,IAAA,aAAA,CAAc,SAAA,EAAW,EAAE,UAAA,EAAY,aAAA,EAAe,aAAa,CAAA;AAEnE,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAO,EAAE,GAAG,SAAA,EAAW,GAAG,IAAA,EAAM,GAAI,IAAA,EAAsB;AAAA;AAE5D,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAI;AAAA,KACN;AAAA;AAGF,EAAA,OAAO,IAAA;AACT;AAkDA,eAAsB,IAAA,CAKpB,SAAA,EACA,SAAA,EACA,YAAA,EAC0B;AAC1B,EAAA,IACE,UAAU,KAAA,CAAM,cAAA,KAAmB,eAAe,QAAA,IAClD,CAAC,cAAc,gBAAA,EACf;AACA,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA;AAGxE,EAAA,MAAM,QAAA,GACJ,YAAA,EAAc,iBAAA,KAAsB,WAAA,GAChC,WAAA,CAAY,SAAA;AAAA,IACV,YAAA,CAAa,QAAA;AAAA,IACb,YAAA,CAAa;AAAA,MAEf,YAAA,EAAc,QAAA;AAEpB,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAM,QAAA,EAAS,EACpC,IAAA,CAIC,SAAA,EAAW,QAAA,EAAU,EAAE,GAAG,YAAA,EAAc,WAAA,EAAa,OAAA,EAAS,EAAE,GAAG,YAAA,EAAc,WAAA,EAAa,OAAA,EAAS,GAAG,SAAA,CAAU,WAAA,CAAY,OAAA,EAAQ,EAAG,CAAA,CAC5I,KAAA,CAAM,CAAC,CAAA,KAAe;AACrB,IAAA,mBAAA;AAAA,MACE,SAAA;AAAA,MACA,CAAA,YAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,MAAM,CAAW;AAAA,KAChD;AAAA,GACD,CAAA;AAEH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,cAAA,CAAyB,SAAA,EAAW,QAAA,EAAU,YAAY,CAAA;AACzE,IAAA,OAAO,MAAA;AAAA;AAET,EAAA,OAAO,IAAA;AACT;AA8CA,eAAsB,GAAA,CAKpB,SAAA,EACA,SAAA,EACA,YAAA,EAC0B;AAC1B,EAAA,IAAI,SAAA,CAAU,KAAA,CAAM,cAAA,KAAmB,cAAA,CAAe,QAAA,EAAU;AAC9D,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA;AAGxE,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAM,QAAA,EAAS,EACpC,GAAA,CAIC,SAAA,EAAW,EAAE,GAAG,YAAA,EAAc,WAAA,EAAa,OAAA,EAAS,EAAE,GAAG,YAAA,EAAc,WAAA,EAAa,OAAA,EAAS,GAAG,SAAA,CAAU,WAAA,CAAY,OAAA,EAAQ,EAAG,CAAA,CAClI,KAAA,CAAM,CAAC,CAAA,KAAe;AACrB,IAAA,mBAAA;AAAA,MACE,SAAA;AAAA,MACA,CAAA,YAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,MAAM,CAAW;AAAA,KAChD;AAAA,GACD,CAAA;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAyB,SAAA,EAAW,QAAQ,CAAA;AACjE,IAAA,OAAO,MAAA;AAAA;AAET,EAAA,OAAO,IAAA;AACT;AA6BO,SAAS,WAAA,CAAY,WAAsB,KAAA,EAA0B;AAC1E,EAAA,IAAI,kBAAqD,EAAC;AAE1D,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM;AAAA,MACJ,OAAA;AAAA,MACA,WAAA,EAAAC,YAAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA,EAAO,UAAA;AAAA,MACP,GAAG;AAAA,KACL,GAAI,KAAA;AACJ,IAAA,eAAA,GAAkB,EAAE,GAAG,IAAA,EAAK;AAAA;AAG9B,EAAA,MAAM,cAAc,WAAA,CAAY,SAAA;AAAA,IAC9B,eAAA;AAAA,IACA,OAAO,gBAAA,IAAoB;AAAA,MACzB,WAAA,EAAa,QAAA;AAAA,MACb,gBAAA,EAAkB;AAAA;AACpB,GACF;AAEA,EAAA,IAAI,aAAA,GAAgB,KAAA,EAAO,OAAA,IAAW,SAAA,CAAU,SAAS,CAAA,CAAE,gBAAA;AAC3D,EAAA,IAAI,cAAc,OAAA,CAAQ,GAAG,CAAA,KAAM,aAAA,CAAc,SAAS,CAAA,EAAG;AAC3D,IAAA,aAAA,GAAgB,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA;AAEjE,EAAA,IAAI,CAAC,aAAA,CAAc,UAAA,CAAW,GAAG,CAAA,EAAG;AAClC,IAAA,aAAA,GAAgB,IAAI,aAAa,CAAA,CAAA;AAAA;AAGnC,EAAA,MAAM,QAAQ,SAAA,CAAU,SAAS,CAAA,EAAG,cAAA,EAAgB,MAAM,eAAe,CAAA;AACzE,EAAA,MAAM,cAAA,GAAA,CAAkB,KAAA,IAAS,EAAC,EAAG,CAAC,CAAA;AAEtC,EAAA,IAAI,KAAA,GAAA,CACF,KAAA,EAAO,KAAA,GACH,CAAA,OAAA,EAAU,MAAM,KAAK,CAAA,SAAA,EAAY,cAAc,CAAA,CAAA,GAC/C,SAAA,CAAU,SAAS,CAAA,CAAE,cAAA,EACzB,MAAM,CAAC,CAAA;AACT,EAAA,IAAI,OAAO,UAAA,EAAY;AACrB,IAAA,KAAA,GAAQ,EAAA;AAAA;AAGV,EAAA,IAAI,EAAE,OAAA,EAAQ,GAAI,SAAA,CAAU,SAAS,CAAA;AACrC,EAAA,IAAI,OAAA,EAAS,QAAA,CAAS,GAAG,CAAA,EAAG;AAC1B,IAAA,OAAA,IAAW,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA;AAGhD,EAAA,IAAI,SAAA,GAAY,CAAA,UAAA,EAAa,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,CAAA;AACvC,EAAA,IACG,KAAA,EAAO,WAAA,IAAe,KAAA,CAAM,WAAA,CAAY,QAAA,CAAS,YAAY,CAAA,IAC9D,WAAA,EAAa,QAAA,CAAS,YAAY,CAAA,EAClC;AACA,IAAA,SAAA,GAAY,EAAA;AAAA;AAGd,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,OAAA,CAAQ,eAAA,EAAiB,IAAI,CAAA;AACzD,EAAA,aAAA,GAAgB,aAAA,CAAc,KAAA;AAAA,IAC5B,IAAI,MAAA,CAAO,CAAA,SAAA,EAAY,WAAW,CAAA,UAAA,CAAY;AAAA,MAC5C,CAAC,CAAA;AAEL,EAAA,OAAO,CAAA,EACL,WAAA,GAAc,GAAA,GAAM,EACtB,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,EAAI,SAAS,CAAA,EAC1C,CAAC,OAAO,qBAAA,GAAwB,aAAA,GAAgB,EAClD,CAAA,EAAG,KAAA,EAAO,WAAA,GAAc,CAAA,EAAG,KAAA,CAAM,WAAW,CAAA,CAAA,CAAA,GAAM,EAAE,CAAA,EAClD,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,CAAA,GAAM,EACpC,GAAG,KAAK,CAAA,CAAA;AACV;;;;;;;;AC3dO,MAAM,YAAA,CAAiC;AAAA,EAAvC,WAAA,GAAA;AACL,IAAAF,eAAA,CAAA,IAAA,EAAU,WAAA,EAAsD;AAAA,MAC9D,IAAI,EAAC;AAAA,MACL,MAAM;AAAC,KACT,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAU,SAAA,EAAU,IAAA,CAAA;AAEpB,IAAAA,eAAA,CAAA,IAAA,EAAU,WAAA,EAAY,KAAA,CAAA;AAAA;AAAA,EACtB,KAAA,CAAM,SAAS,IAAA,EAAM;AACnB,IAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AAAA;AACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAA,CAA6B,OAAU,IAAA,EAAiB;AACtD,IAAA,IAAA,CAAK,SAAA,CAAU,GAAG,KAAK,CAAA,EAAG,QAAQ,CAAC,OAAA,KAAY,OAAA,CAAQ,IAAI,CAAC,CAAA;AAE5D,IAAA,IAAA,CAAK,SAAA,CAAU,KAAK,KAAK,CAAA,EAAG,QAAQ,CAAC,OAAA,KAAY,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC9D,IAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,GAAI,EAAC;AAAA;AAChC;AAAA;AAAA;AAAA,EAKA,IAAI,SAAA,GAAY;AACd,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA;AACd,EAEA,GAAA,CAA4B,OAAU,EAAA,EAA+B;AACnE,IAAA,IAAA,CAAK,SAAA,CAAU,GAAG,KAAK,CAAA,GAAI,KAAK,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA,EAAG,MAAA;AAAA,MACnD,CAAC,MAAM,CAAA,KAAM;AAAA,KACf;AACA,IAAA,IAAA,CAAK,SAAA,CAAU,KAAK,KAAK,CAAA,GAAI,KAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,EAAG,MAAA;AAAA,MACvD,CAAC,MAAM,CAAA,KAAM;AAAA,KACf;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,EAAA,CAA2B,OAAU,EAAA,EAAuC;AAC1E,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA;AAAG,MAAA,IAAA,CAAK,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA,GAAI,EAAC;AAC3D,IAAA,IAAA,CAAK,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA,CAAE,KAAK,EAAE,CAAA;AAEhC,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,SAAA,CAAU,GAAG,KAAK,CAAA,GAAI,KAAK,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA,CAAE,MAAA;AAAA,QAClD,CAAC,MAAM,CAAA,KAAM;AAAA,OACf;AAAA,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAA,CACE,OACA,EAAA,EACc;AACd,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA;AAAG,MAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,GAAI,EAAC;AAC/D,IAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,CAAE,KAAK,EAAE,CAAA;AAElC,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,SAAA,CAAU,KAAK,KAAK,CAAA,GAAI,KAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA;AAAA,QACtD,CAAC,MAAM,CAAA,KAAM;AAAA,OACf;AAAA,KACF;AAAA;AAEJ;;;;;;;;ACtFO,SAAS,SAAY,IAAA,EAA4C;AACtE,EAAA,OAAO,OAAO,IAAA,KAAS,UAAA;AACzB;AAmBO,MAAM,wBAA4C,YAAA,CAAqB;AAAA,EAG5E,YAAY,YAAA,EAAgC;AAC1C,IAAA,KAAA,EAAM;AAHR,IAAAA,eAAA,CAAA,IAAA,EAAU,SAAQ,EAAC,CAAA;AAKjB,IAAA,IAAA,CAAK,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,IAAI,YAAY,CAAA;AAAA;AAC7C,EAEA,IAAA,CAA6B,OAAU,IAAA,EAAuB;AAC5D,IAAA,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA;AACpB,IAAA,KAAA,CAAM,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA;AACxB,EAEA,EAAA,CAA2B,OAAU,EAAA,EAAuC;AAC1E,IAAA,IAAI,IAAA,CAAK,MAAM,KAAK,CAAA;AAAG,MAAA,EAAA,CAAG,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAE3C,IAAA,OAAO,KAAA,CAAM,EAAA,CAAG,KAAA,EAAO,EAAE,CAAA;AAAA;AAC3B,EAEA,IAAA,CACE,OACA,EAAA,EACc;AACd,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,EAAG;AACrB,MAAA,EAAA,CAAG,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAKpB,MAAA,OAAO,MAAM;AAAA,OAAC;AAAA;AAGhB,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,KAAA,EAAO,EAAE,CAAA;AAAA;AAC7B;AAAA;AAAA;AAAA,EAKA,SAAiC,KAAA,EAAqB;AACpD,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AACzB;AAAA;AAAA;AAAA,EAKA,QAAA,CACE,OACA,IAAA,EACM;AACN,IAAA,MAAM,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA,GAAI,IAAA;AAEjE,IAAA,IAAA,CAAK,IAAA,CAAK,OAAO,UAAU,CAAA;AAAA;AAE/B;;;;;;;;ACxEA,MAAM,UAAA,GAAa,OAAO,YAAY,CAAA;AAwB/B,MAAM,wBAEH,eAAA,CAAwB;AAAA,EAF3B,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAGL,IAAAA,eAAA,CAAA,IAAA,EAAU,oBAAmB,EAAC,CAAA;AAE9B,IAAAA,eAAA,CAAA,IAAA,EAAU,eAAA,EAAgB,GAAA,CAAA;AAkC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,eAAA,CAAA,IAAA,EAAU,gBAAe,EAAC,CAAA;AAC1B,IAAAA,eAAA,CAAA,IAAA,EAAU,yBAAwB,EAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAxBnC,QAAA,CACE,KAAA,EACA,IAAA,EACA,aAAA,EACA;AACA,IAAA,YAAA,CAAa,IAAA,CAAK,gBAAA,CAAiB,KAAK,CAAC,CAAA;AACzC,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,CAAA,GAAI,UAAA,CAAW,MAAM;AAC9C,MAAA,IAAA,CAAK,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,KACvB,EAAG,aAAA,EAAe,MAAA,IAAU,IAAA,CAAK,aAAa,CAAA;AAAA;AAChD,EAgBA,QAAA,CACE,KAAA,EACA,IAAA,EACA,aAAA,EACA;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,qBAAA,CAAsB,KAAK,CAAA,IAAK,eAAe,WAAA,EAAa;AACpE,MAAA,IAAA,CAAK,qBAAA,CAAsB,KAAK,CAAA,GAAI,IAAA;AACpC,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAA,CAAK,qBAAA,CAAsB,KAAK,CAAA,GAAI,KAAA;AAAA,OACtC,EAAG,aAAA,EAAe,MAAA,IAAU,IAAA,CAAK,aAAa,CAAA;AAC9C,MAAA,IAAA,CAAK,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,KACvB,MAAA,IAAW,CAAC,aAAA,EAAe,WAAA,EAAa;AACtC,MAAA,IACE,IAAA,CAAK,aAAa,KAAK,CAAA,KAAM,cAC7B,EAAE,KAAA,IAAS,KAAK,YAAA,CAAA,EAChB;AACA,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,YAAA,CAAa,KAAK,CAAc,CAAA;AACtD,UAAA,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,GAAI,UAAA;AAAA,SAC7B,EAAG,aAAA,EAAe,MAAA,IAAU,IAAA,CAAK,aAAa,CAAA;AAAA;AAEhD,MAAA,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,GAAI,IAAA;AAAA;AAC7B;AACF;AAAA;AAAA;AAAA,EAKA,iBAAA,CACE,KAAA,EACA,IAAA,EACA,aAAA,EACM;AACN,IAAA,MAAM,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA,GAAI,IAAA;AAEjE,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,UAAA,EAAY,aAAa,CAAA;AAAA;AAChD;AAAA;AAAA;AAAA,EAKA,iBAAA,CACE,KAAA,EACA,IAAA,EACA,aAAA,EACM;AACN,IAAA,MAAM,UAAA,GAAa,SAAS,IAAI,CAAA,GAAI,KAAK,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA,GAAI,IAAA;AAEjE,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,UAAA,EAAY,aAAa,CAAA;AAAA;AAElD;;ACxHO,SAAS,QAAA,CACd,SAAA,EACA,KAAA,EACA,SAAA,EAIA;AACA,EAAA,MAAM,QAAA,GAAY,SAAA,CAAU,SAAS,CAAA,CAAU,OAAO,KAAK,CAAA;AAK3D,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,oBAAoB,KAAK,CAAA,CAAA;AAAA,MAC/B,OAAA,EAAS,oBAAoB,KAAK,CAAA;AAAA,KACpC;AAAA;AAGF,EAAA,MAAM,WAAA,GAAc,EAAE,GAAG,QAAA,EAAS;AAElC,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,MAAA,CAAO,OAAA,CAAQ,UAAU,IAAI,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACvD,MAAA,WAAA,CAAY,OAAO,WAAA,CAAY,IAAA,CAAK,WAAW,CAAA,CAAA,EAAI,GAAG,KAAK,KAAK,CAAA;AAAA,KACjE,CAAA;AAAA;AAEH,EAAA,IAAI,WAAW,OAAA,EAAS;AACtB,IAAA,MAAA,CAAO,OAAA,CAAQ,UAAU,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC1D,MAAA,WAAA,CAAY,UAAU,WAAA,CAAY,OAAA,CAAQ,WAAW,CAAA,CAAA,EAAI,GAAG,KAAK,KAAK,CAAA;AAAA,KACvE,CAAA;AAAA;AAGH,EAAA,OAAO,WAAA;AACT;AAEO,MAAM,MAAA,GAAS;AAAA,EACpB,yBAAyB,MAAM,oBAAA;AAAA,EAC/B,wBAAwB,MAAM,0CAAA;AAAA,EAC9B,mBAAmB,MAAM,wBAAA;AAAA,EACzB,oBAAoB,CAAC,SAAA,KACnB,QAAA,CAAS,SAAA,EAAW,aAAa,CAAA,CAAE,IAAA;AAAA,EACrC,sBAAA,EAAwB,CAAC,SAAA,EAAsB,IAAA,KAC7C,SAAS,SAAA,EAAW,YAAA,EAAc,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAK,EAAG,CAAA,CAAE,IAAA;AAAA,EAC9D,gBAAgB,MACd,kEAAA;AAAA,EACF,cAAc,CAAC,SAAA,EAAsB,SAAA,KAClC,MAAA,CAAe,cACZ,oEAAA,GACA,QAAA,CAAS,SAAA,EAAW,iBAAA,EAAmB,EAAE,IAAA,EAAM,EAAE,MAAM,SAAA,EAAU,EAAG,CAAA,CACjE;AACX,CAAA;;ACrDO,MAAM,YAAA,GAAe,CAAC,GAAA,KAAgC;AAC3D,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,IAAI,wBAAA,CAAyB,KAAK,GAAG,CAAA;AAAG,MAAA,OAAO,IAAA;AAC/C,IAAA,IAAI,8BAAA,CAA+B,KAAK,GAAG,CAAA;AAAG,MAAA,OAAO,KAAA;AAAA;AAEvD,EAAA,OAAO,KAAA;AACT,CAAA;;ACHA,MAAM,YAAA,GAIuC;AAAA,EAC3C,CAAC,GAAA,EAAK,KAAA,EAAO,IAAA,KAAS;AACpB,IAAA,IAAI,SAAA,CAAU,QAAQ,GAAG,CAAA,KAAM,MAAM,QAAA,CAAS,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,EAAI;AACjE,MAAA,OAAO,IAAA,EAAK;AAAA,KACd,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,MAAA,OAAO,IAAA,EAAK;AAAA,KACd,MAAA,IAAW,SAAA,CAAU,OAAA,CAAQ,GAAG,MAAM,EAAA,EAAI;AACxC,MAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,YAAA,CAAa,KAAe,CAAA,EAAE;AAAA,KACrD,MAAA,IAAW,QAAA,CAAS,OAAA,CAAQ,GAAG,MAAM,EAAA,EAAI;AACvC,MAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,SAAU,KAAA,IAAoB,EAAA,EAAI,EAAE,CAAA,EAAE;AAAA;AAE7D,IAAA,IAAA,EAAK;AAAA;AAET,CAAA;AAEO,SAASG,gBACd,GAAA,EACG;AACH,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,OAAO,EAAC;AAAA;AAGV,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,OAAO,GAAA;AAAA;AAGT,EAAA,MAAM,MAAM,IAAI,QAAA,CAAS,CAAA,aAAA,EAAgB,GAAG,gBAAgB,CAAA,EAAE;AAE9D,EAAA,MAAM,MAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC9C,IAAA,KAAA,MAAW,KAAK,YAAA,EAAc;AAC5B,MAAA,IAAI,IAAA,GAAO,KAAA;AACX,MAAA,MAAM,CAAA,GAAI,CAAA,CAAE,GAAA,EAAK,KAAA,EAAO,MAAM;AAC5B,QAAA,IAAA,GAAO,IAAA;AAAA,OACR,CAAA;AACD,MAAA,IAAI,CAAC,QAAQ,CAAA,EAAG;AACd,QAAC,GAAA,CAAY,CAAA,CAAE,GAAG,CAAA,GAAI,CAAA,CAAE,KAAA;AAAA,OAC1B,MAAO;AACL,QAAC,GAAA,CAAY,GAAG,CAAA,GAAI,KAAA;AAAA;AACtB;AACF;AAGF,EAAA,OAAO,GAAA;AACT;;;;;;;;ACjDO,MAAM,cAAA,CAAkD;AAAA,EAI7D,YAAY,YAAA,EAAsB;AAHlC,IAAAH,eAAA,CAAA,IAAA,EAAA,YAAA,EAAoB,EAAC,CAAA;AACrB,IAAAA,eAAA,CAAA,IAAA,EAAQ,YAAA,EAA0B,IAAA,CAAA;AAGhC,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAA,CAAK,UAAA,GAAa,YAAA;AAAA;AAEpB,IAAA,cAAA,CAAe,MAAM,EAAE,UAAA,EAAY,UAAA,EAAY,WAAA,EAAa,QAAQ,CAAA;AAAA;AACtE,EAEA,aAAA,GAAgB;AACd,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA;AACd,EAEA,YAAmC,QAAA,EAAuB;AACxD,IAAA,OAAO,IAAA,CAAK,WAAW,QAAQ,CAAA;AAAA;AACjC,EACA,WAAA,CACE,UACA,SAAA,EACA;AACA,IAAA,MAAM,KAAA,GACJ,qBAAqB,QAAA,GACjB,SAAA,CAAU,KAAK,UAAA,CAAW,QAAQ,CAAC,CAAA,GACnC,SAAA;AAEN,IAAA,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,GAAI,KAAA;AAE5B,IAAA,IAAI,aAAa,kBAAA,EAAoB;AACnC,MAAA,IAAA,CAAK,YAAY,0BAAA,EAA2B;AAAA;AAC9C;AACF,EAEA,cAAc,IAAA,EAAY;AACxB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,IAAA,OAAO,IAAA;AAAA;AAEX;;ACxCO,SAAS,YAAY,SAAA,EAAsB;AAChD,EAAA,OAAO,UAAU,WAAA,CAAY,QAAA;AAC/B;;ACAO,SAAS,qBAAqB,SAAA,EAAsB;AACzD,EAAA,MAAM,QAAA,GAAY,SAAA,CAAU,SAAS,CAAA,CAAE,cAAA,EAAwB,QAAA;AAK/D,EAAA,IAAI,QAAA;AACF,IAAA,OAAO,CAAA,EAAG,QAAA,CACP,GAAA,CAAI,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,CAAM,MAAA,GAAS,CAAA,CAAE,EAAA,GAAK,EAAG,CAAA,CACvC,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA,KAAM,QAAA,CAAS,CAAA,CACtC,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,EAAI,WAAA,CAAY,SAAS,CAAA,CAAE,gBAAA,EAAkB,aAAa,CAAC,CAAA,CAAA;AAC3E;;ACXO,MAAM,OAAA,GAAU;AAAA,EACrB,KAAA,EAAO,+BAGT,CAAA;;ACRO,MAAM,UAAA,GAAa;AAAA,EACxB,kBAAA,EAAoB,CAetB,CAAA;;ACbA,MAAMI,WAAA,GAAY;AAAA,EAChB,GAAG,UAAA;AAAA,EACH,GAAG;AACL,CAAA;;ACIO,MAAM,mBAAA,GAAsB,OACjC,SAAA,EACA,QAAA,KACG;AACH,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,QAAA,CAAS,IAAI,CAAA;AACxC,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AACxC,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAA,MAAM,CAAC,SAAA,EAAW,EAAE,CAAA,GAAI,MAAA,CAAO,MAAM,GAAG,CAAA;AACxC,IAAA,MAAM,QAAA,GAAW,SAAA,CAAU,WAAA,CAAY,EAAA,EAAI,SAAgB,CAAA;AAE3D,IAAA,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACvC,MAAA,QAAA,EACI,0BAA0B,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,CAAA,CAAE,EAAE,CAAC,CAAC,CAAA,EACvD,aAAA,CAAc,EAAE,aAAA,EAAe,EAAE,OAAO,CAAA,CAAE,KAAA,IAAS,CAAA;AAAA,KACxD,CAAA;AAGD,IAAA,MAAM,YAAA,GAAe,YAAA,CAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AACzD,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,EAAE,EAAA,EAAAC,KAAG,KAAM;AAC/B,MAAC,QAAA,EAAU,YAAA,CAAaA,GAAE,CAAA,EAAY,OAAA,EAAQ;AAAA,KAC/C,CAAA;AAED,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,QACtB,IAAI,mBAAA,CAAoB;AAAA,UACtB,OAAA,EAAS,gBAAgB,MAAM,CAAA,UAAA;AAAA,SAChC;AAAA,OACH;AAEA,MAAA;AAAA;AAIF,IAAA,MAAM,UAAA,GAAa,YAAA,CAAa,KAAA,CAAM,CAAC,EAAE,KAAK,CAAA;AAC9C,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAA,EAAG;AAE7C,MAAA,MAAM,WAAW,QAAA,EAAU,YAAA,CAAa,UAAA,CAAW,CAAC,EAAE,CAAC,CAAA;AACvD,MAAA,IAAI,QAAA,EAAU;AAEZ,QAAA,IAAI,UAAA,CAAW,CAAC,CAAA,CAAE,cAAA,KAAmB,MAAA,EAAW;AAC9C,UAAA,MAAM,mBAAA,GAAsB,YAAA;AAAA,YAC1B,UAAA,CAAW,CAAC,CAAA,CAAE;AAAA,WAChB;AACA,UAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,mBAAA,CAAoB,CAAC,GAAG,IAAI,CAAA;AACvD,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,IACE,CAAC,UAAA,EAAY,OAAA,EAAS,QAAQ,CAAA,CAAE,QAAA;AAAA,cAC9B,SAAS,UAAA,CAAW;AAAA,aACtB,EACA;AACA,cAAC,QAAA,CAAoB,WAAA;AAAA,gBACnB,eAAA;AAAA,gBACA,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,KAAY;AACrB,kBAAA,MAAM,IAAI,OAAA,CAAQ,CAAA;AAClB,kBAAA,MAAM,IAAI,OAAA,CAAQ,IAAA;AAClB,kBAAA,MAAM,QAAQ,OAAO,CAAA,KAAM,SAAA,GAAY,MAAA,CAAO,CAAC,CAAA,GAAI,CAAA;AACnD,kBAAA,MAAM,QAAQ,OAAO,CAAA,KAAM,SAAA,GAAY,MAAA,CAAO,CAAC,CAAA,GAAI,CAAA;AACnD,kBAAA,OAAO;AAAA,oBACL,KAAA;AAAA,oBACA;AAAA,mBACF;AAAA,iBACD;AAAA,eACH;AAAA;AACF;AACF;AAEF,QAAA,IACE,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,QAAA,CAAS,UAAA,CAAW,SAAS,CAAA,IAC/C,UAAA,CAAW,CAAC,CAAA,CAAE,KAAA,EACd;AACA,UAAA,MAAM,gBACJ,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO,cAAe,EAAC;AAExC,UAAA,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC1C,YAAA,IAAI,KAAA,GAAQ,cAAc,GAAgC,CAAA;AAE1D,YAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,cAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY;AACrC,cAAA,IAAI,UAAA,KAAe,GAAA,IAAO,UAAA,KAAe,MAAA,EAAQ;AAC/C,gBAAA,KAAA,GAAQ,IAAA;AAAA,eACV,MAAA,IAAW,UAAA,KAAe,GAAA,IAAO,UAAA,KAAe,OAAA,EAAS;AACvD,gBAAA,KAAA,GAAQ,KAAA;AAAA;AACV;AAGF,YAAA,QAAA,CAAS,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA,WAChC,CAAA;AACD,UAAA,MAAM,cAAA,GAAiB,YAAA;AAAA,YACrB,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO;AAAA,WACxB;AACA,UAAA,QAAA,CAAS,WAAA,CAAY,iBAAiB,cAAc,CAAA;AAAA;AAEtD,QAAA,IACE,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,QAAA,CAAS,UAAA,CAAW,SAAS,CAAA,IAC/C,UAAA,CAAW,CAAC,CAAA,CAAE,KAAA,EACd;AACA,UAAA,MAAM,SAAA,GAAY,QAAA;AAElB,UAAA,IAAI,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO,QAAA,EAAU;AAClC,YAAA,SAAA,CAAU,kBAAA;AAAA,cACR,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO;AAAA,aACxB;AAAA;AACF;AACF;AAGF,MAAA,IAAI,UAAA,CAAW,CAAC,CAAA,CAAE,CAAA,KAAM,MAAA,EAAW;AACjC,QAAA,MAAM,EAAE,CAAA,EAAE,GAAI,UAAA,CAAW,CAAC,CAAA;AAE1B,QAAA,IAAI,KAAA,GAAa,MAAA;AACjB,QAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAa,CAAA,CAAU,MAAM,GAAA,EAAK;AAEjD,UAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,YAAA,KAAA,GAAQ,CAAA;AAAA,WACV,MAAO;AAIL,YAAA,MAAM,WAAA,GAAc,YAAA,CAAa,CAAA,EAAG,SAAS,CAAA;AAC7C,YAAA,KAAA,GAAQ,WAAA,CAAY,MAAA,CAAO,CAAC,OAAA,EAAS,OAAA,KAAY;AAC/C,cAAA,OAAO,UAAU,OAAA,CAAQ,CAAA;AAAA,eACxB,EAAE,CAAA;AAAA;AACP;AAOF,QAAA,IAAK,QAAA,CAAiB,SAAA,IAAa,KAAA,KAAU,MAAA,EAAW;AACtD,UAAC,QAAA,CAAiB,SAAS,KAAA,EAAO;AAAA,YAChC,KAAA,EAAO,IAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACd,CAAA;AAAA;AACH;AAGF,MAAA,IAAI,UAAA,CAAW,CAAC,CAAA,CAAE,CAAA,KAAM,MAAA,EAAW;AACjC,QAAA,MAAM,SAAA,GAAY,YAAA,CAAa,UAAA,CAAW,CAAC,EAAE,CAAC,CAAA;AAC9C,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC5C,UAAA,IAAI,SAAA,CAAU,CAAC,CAAA,EAAG,CAAA,EAAG;AACnB,YAAA,MAAM,IAAA,GAAO,YAAA,CAAa,SAAA,CAAU,CAAC,GAAG,CAAC,CAAA;AACzC,YAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA,EAAG;AACvC,cAAA,IAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,EAAG;AACd,gBAAA,IAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,EAAG;AACd,kBAAA,IAAI,KAAK,CAAC,CAAA,EAAG,CAAA,CAAE,WAAA,OAAkB,GAAA,EAAK;AACpC,oBAAA,QAAA,CAAS,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,EAAG,GAAG,KAAK,CAAA;AAAA,6BAC7B,IAAA,CAAK,CAAC,GAAG,CAAA,CAAE,WAAA,OAAkB,GAAA,EAAK;AAC3C,oBAAA,QAAA,CAAS,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,EAAG,GAAG,IAAI,CAAA;AAAA,mBACvC,MAAO;AACL,oBAAA,QAAA,CAAS,WAAA,CAAY,KAAK,CAAC,CAAA,EAAG,GAAG,IAAA,CAAK,CAAC,GAAG,CAAC,CAAA;AAAA;AAC7C;AACF;AACF;AACF;AACF;AACF,OACF,MAAA,IAAW,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO;AAC/B,QAAA,MAAM,SAAA,GAAY,UAAA,CAAW,CAAC,CAAA,EAAG,KAAA,EAAO,UAAA;AACxC,QAAA,QAAA,CAAS,UAAA,GAAa,SAAA;AAAA;AACxB;AAIF,IAAA,IACE,IAAA,CAAK,CAAA,KAAM,GAAA,IACX,MAAA,CAAO,QAAA,CAAS,WAAWD,WAAA,CAAU,oBAAoB,CAAC,CAAA,KAAM,MAAA,EAChE;AACA,MAAA,QAAA,CAAS,WAAA,CAAYA,WAAA,CAAU,oBAAA,EAAsB,IAAI,CAAA;AAAA,KAC3D,MAAA,IACE,IAAA,CAAK,CAAA,KAAM,GAAA,IACX,MAAA,CAAO,QAAA,CAAS,WAAA,CAAYA,WAAA,CAAU,oBAAoB,CAAC,CAAA,KAAM,MAAA,EACjE;AACA,MAAA,QAAA,CAAS,WAAA,CAAYA,WAAA,CAAU,oBAAA,EAAsB,KAAK,CAAA;AAAA;AAI5D,IAAA,IACE,IAAA,CAAK,CAAA,KAAM,GAAA,IACX,MAAA,CAAO,QAAA,CAAS,YAAYA,WAAA,CAAU,oBAAoB,CAAC,CAAA,KAAM,MAAA,EACjE;AACA,MAAA,QAAA,CAAS,kBAAA,EAAmB;AAAA,KAC9B,MAAA,IACE,IAAA,CAAK,CAAA,KAAM,GAAA,IACX,MAAA,CAAO,QAAA,CAAS,WAAA,CAAYA,WAAA,CAAU,oBAAoB,CAAC,CAAA,KAAM,MAAA,EACjE;AACA,MAAA,QAAA,CAAS,QAAA,EAAS;AAAA;AACpB;AAGF,EAAA,IAAI,QAAA,CAAS,UAAU,CAAA,EAAG;AACxB,IAAA,SAAA,CAAU,UAAA,EAAW,EAAG,WAAA,CAAY,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA;AAGzD,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,aAAA,CAAc,SAAA,EAAW,SAAS,IAAI,CAAA;AAAA;AAE1C,CAAA;;AChMA,IAAI,OAAA,GAAkC,IAAA;AAE/B,MAAM,mBAAA,GAA4C,OACvD,SAAA,EACA,GAAA,KACG;AACH,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAA,GAAA,CAAW,MAAM,+DAA0B,EAAG,cAAA;AAAA;AAGhD,EAAA,OAAO,OAAA,CAAQ,WAAW,GAAG,CAAA;AAC/B,CAAA;;ACzBO,SAAS,mBAAmB,KAAA,EAAc;AAC/C,EAAA,MAAM,IAAA,GACJ,MAAM,UAAA,CAAW,IAAA,IAChB,MAAc,SAAA,EAAW,IAAA,IAC1B,MAAM,UAAA,CAAW,EAAA;AAEnB,EAAA,OAAO,CAAA,EAAG,MAAM,OAAA,EAAQ,CAAE,WAAW,SAAS,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,IAAI,KAAA,CAAM,UAAA,CAAW,KAAK,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAC5J;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA,IAAAE,YAAA;AAiCA,IAAI,EAAA,GAA2B,IAAA;AAE/B,eAAsB,iBAAiB,SAAA,EAAsB;AAC3D,EAAA,IAAI,CAAC,EAAA,EAAI;AACP,IAAA,MAAM,+DAA2C,CAAE,IAAA;AAAA,MACjD,CAAC,EAAE,aAAA,OAAqB,EAAA,GAAK,IAAI,cAAc,SAAS;AAAA,KAC1D;AAAA;AAEF,EAAA,OAAO,EAAA;AACT;AAEO,MAAe,cASZ,cAAA,CAA2B;AAAA,EAYnC,WAAA,CAAY,EAAE,UAAA,EAAY,GAAG,YAAW,EAAoB;AAC1D,IAAA,KAAA,EAAM;AAZR,IAAAN,eAAA,CAAA,IAAA,EAAU,QAAa,EAAC,CAAA;AAExB,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAEI;AAAA,MACF,YAAY,EAAE,KAAA,EAAO,OAAO,YAAA,EAAc,EAAA,EAAI,eAAe,KAAA;AAAM,KACrE,CAAA;AA2QA,IAAAO,cAAA,CAAA,IAAA,EAAAD,YAAA,EAAa,KAAA,CAAA;AApQX,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAElB,IAAA,cAAA,CAAe,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,UAAA,EAAY,YAAY,CAAA;AAAA;AACpE,EAEA,MAAgB,qBACd,SAAA,EACoB;AACpB,IAAA,MAAM,iBAAiB,EAAC;AACxB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC5C,MAAA,IAAI,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AAC7B,QAAA,cAAA,CAAe,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,OACxC,MAAA,IAAW,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,OAAO,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AACjE,QAAA,MAAM,SAAA,GAAY,SAAA,CAAU,CAAC,CAAA,CAAE,KAAA;AAC/B,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,cAAA,CAAe,IAAA;AAAA,YAAA,CACZ,MAAM,gBAAA,CAAiB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,EACxC,OAAA;AAAA,cACC,IAAA,CAAK,KAAK,UAAA,CAAW,QAAA;AAAA,cACrB,IAAA,CAAK,KAAK,UAAA,CAAW;AAAA,aACvB,CACC,SAAS,SAAS;AAAA,WACvB;AAAA;AACF;AACF;AAEF,IAAA,OAAO,cAAA;AAAA;AACT,EAEU,oBAAA,CACR,OACA,gBAAA,EACkB;AAClB,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,SAAS,EAAE,kBAAA,EAAoB;AACrD,MAAA,GAAA,GAAM,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,WAAA;AAAA,KACvC,MAAO;AACL,MAAA,GAAA,GAAM,IAAA,CAAK,YAAY,KAAA,IAAS,CAAA;AAAA;AAElC,IAAA,OAAO;AAAA,MACL,SAAS,OAAA,CAAQ,KAAA;AAAA,MACjB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAA,EAAS;AAAA,MAC1C,MAAA,EAAQ,gBAAA;AAAA,MACR,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,SAAA;AAAA,MAChC,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,MAC5B,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,MACvB,KAAA,EAAO,GAAA;AAAA,MACP,KAAA;AAAA,MACA,KAAA,EAAO,IAAA;AAAA,MACP,qBAAA,EAAuB,IAAA;AAAA,MACvB,GAAG;AAAA,KACL;AAAA;AACF,EAEA,MAAgB,gBAAgB,SAAA,EAAqC;AACnE,IAAA,MAAM,MAAA,GAAA,CAAU,IAAA,CAAK,UAAA,CAAW,YAAA,IAAgB,EAAC,EAAG,MAAA;AAAA,MAClD,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY;AAAA,KACvB;AAEA,IAAA,IAAI,MAAA,GAAS,IAAA;AAEb,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,MAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,QAAA,IAAI;AACF,UAAA,MAAM,EAAA,GAAM,MAAA,CAAe,KAAA,CAAM,OAAO,CAAA;AAKxC,UAAA,IAAI,OAAO,MAAA,EAAW;AACpB,YAAA,IAAI,mBAAA,CAAoB;AAAA,cACtB,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,WAAW,gBAAA,EAAkB;AAAA,gBACvD,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA;AAAU,eACzB,CAAA,CAAE,IAAA;AAAA,cACH,IAAA,EAAM;AAAA,aACP,CAAA;AACD,YAAA,MAAM,IAAI,KAAA;AAAA,cACR,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,gBAAA,EAAkB;AAAA,gBAC9C,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA;AAAU,eACzB,CAAA,CAAE;AAAA,aACL;AAAA;AAGF,UAAA,MAAM,SAAU,MAAM,mBAAA;AAAA,YACpB,KAAK,IAAA,CAAK,SAAA;AAAA,YACV;AAAA,WACF;AAEA,UAAA,IAAK,OAAe,QAAA,EAAU;AAC5B,YAAC,MAAA,CAAe,QAAA,GAAW,CAAC,KAAA,KACzB,MAAA,CAAe,UAAU,KAAA,EAAO,EAAE,UAAA,EAAY,KAAA,EAAO,CAAA;AAAA;AAG1D,UAAA,MAAA,GAAS,MAAM,EAAA;AAAA,YACb,MAAA;AAAA,YACA,GAAI,MAAM,IAAA,CAAK,oBAAA,CAAqB,MAAM,SAAS;AAAA,WACrD;AAEA,UAAA,IAAI,WAAW,KAAA,EAAO;AACpB,YAAA;AAAA;AACF,iBACO,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,UAAA,IAAA,CAAK,IAAA,CAAK,UAAU,aAAA,CAAc,GAAA;AAAA,YAChC,IAAI,mBAAA,CAAoB;AAAA,cACtB,OAAA,EACE,OAAO,YAAA,CAAa,IAAA,CAAK,KAAK,SAAA,EAAW,KAAA,CAAM,OAAO,CAAA,GACtD,IAAA,GACA,CAAA;AAAA,cACF,IAAA,EAAM;AAAA,aACP;AAAA,WACH;AACA,UAAA,OAAO,KAAA;AAAA;AACT;AACF;AAEF,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,MAAgB,mBAAA,CACd,KAAA,EACA,MAAA,EACkB;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,IAAA;AAAA,QACrB,KAAK,IAAA,CAAK,SAAA;AAAA,QACV,MAAM,WAAA;AAAA,UACJ,KAAK,IAAA,CAAK,SAAA;AAAA,UACV,IAAA,CAAK,oBAAA,CAAqB,KAAA,CAAM,KAAA,EAAO;AAAA,YACrC,MAAA,EAAQ;AAAA,WACT;AAAA,SACH;AAAA,QACA;AAAA,UACE,QAAA,EAAU,MAAA;AAAA,UACV,iBAAA,EAAmB,WAAA;AAAA,UACnB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAA;AAAS;AAC5C,OACF;AAEA,MAAA,IAAI,QAAA,EAAU,MAAM,OAAA,EAAS;AAC3B,QAAA,MAAM,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAS,IAAI,CAAA;AAC5D,QAAA,OAAO,IAAA;AAAA;AACT,aACO,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQ,MAAM,aAAa,CAAA;AAC3B,MAAA,IAAA,CAAK,IAAA,CAAK,UAAU,aAAA,CAAc,GAAA;AAAA,QAChC,IAAI,mBAAA,CAAoB;AAAA,UACtB,OAAA,EAAS,OAAO,aAAa;AAAA,SAC9B;AAAA,OACH;AAAA;AAEF,IAAA,OAAO,KAAA;AAAA;AACT,EAEA,MAAgB,qBAAA,CACd,KAAA,EACA,MAAA,EACkB;AAClB,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,oBAAA,CAAqB,KAAA,CAAM,OAAO,MAAM,CAAA;AACvD,IAAA,IACG,UAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA,CAAe,UAC5C,oBAAA,EACH;AACA,MAAA,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,QAAA,CAAS,MAAA;AAAA,QACtC,MAAM,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,UACrC,GAAG,CAAA;AAAA,UACH,UAAA,EAAY,oBAAA,CAAqB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAAA,UACpD,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAA;AAAS,SAC3C;AAAA,OACH;AAAA,KACF,MAAO;AACL,MAAA,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,QAAA,CAAS,MAAA;AAAA,QACtC,MAAM,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,UACrC,GAAG,CAAA;AAAA,UACH,UAAA,EAAY,oBAAA,CAAqB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAAA,UACpD,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAA;AAAS,SAC3C;AAAA,OACH;AAAA;AAGF,IAAA,OAAO,KAAA;AAAA;AACT,EACA,MAAgB,eAAA,CACd,SAAA,EACA,MAAA,EACkB;AAClB,IAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,UAAA,CAAW,YAAA,EAAc,IAAA;AAAA,MACxC,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY;AAAA,KACvB;AACA,IAAA,MAAM,UAAA,GAAa,KAAK,UAAA,CAAW,UAAA;AACnC,IAAA,IAAI,CAAC,SAAS,UAAA,EAAY;AACxB,MAAA,KAAA,GAAQ;AAAA,QACN,OAAO,UAAA,CAAW,kBAAA;AAAA,QAClB,MAAA,EAAQ,IAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA;AAGF,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAA,CAAK,OAAA,EAAQ,CAAE,SAAA,CAAU,kBAAA,GAAqB,kBAAA;AAAA,QAC5C;AAAA,OACF;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,IAAA,CAAK,mBAAA,CAAoB,KAAA,EAAO,MAAM,CAAA;AAAA,OAC/C,MAAO;AACL,QAAA,OAAO,IAAA,CAAK,qBAAA,CAAsB,KAAA,EAAO,MAAM,CAAA;AAAA;AACjD;AAGF,IAAA,OAAO,IAAA;AAAA;AACT,EACA,MAAM,SAAA,CACJ,SAAA,EACA,MAAA,EACkB;AAClB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,IAAA,EAAK;AAExC,IAAA,IAAI;AACF,MAAA,IAAI,MAAA,GAAS,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAS,CAAA;AACjD,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,mBAAA,EAAoB;AAAA,iBACvC,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,IAAA,CAAK,2CAA2C,CAAC,CAAA;AAAA;AAG3D,QAAA,MAAA,GAAS,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AAAA;AAGvD,MAAA,OAAO,MAAA;AAAA,KACT,SAAE;AACA,MAAA,MAAA,EAAO;AAAA;AACT;AACF,EAEA,OAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA;AACd,EAEU,gBAAgB,SAAA,EAAmB;AAC3C,IAAA,OACE,KAAK,UAAA,CAAW,YAAA,EAAc,KAAK,CAAC,CAAA,KAAM,EAAE,OAAA,KAAY,SAAS,CAAA,IACjE,IAAA,CAAK,WAAW,YAAA,EAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,YAAY,SAAS,CAAA;AAAA;AAErE,EAEU,0BAA0B,SAAA,EAAmB;AACrD,IAAA,OAAO,IAAA,CAAK,WAAW,YAAA,EAAc,IAAA;AAAA,MACnC,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY,aAAa,CAAA,CAAE;AAAA,KACtC;AAAA;AACF,EAEU,4BAA4B,SAAA,EAAmB;AACvD,IAAA,OAAO,IAAA,CAAK,WAAW,YAAA,EAAc,IAAA;AAAA,MACnC,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY,SAAA,IAAa,CAAC,CAAA,CAAE;AAAA,KACvC;AAAA;AACF,EAGA,MAAM,KAAK,IAAA,EAAY;AACrB,IAAA,IAAIE,cAAA,CAAA,IAAA,EAAKF,YAAA,CAAA;AAAY,MAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC9D,IAAAG,cAAA,CAAA,IAAA,EAAKH,YAAA,EAAa,IAAA,CAAA;AAClB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA;AACd,EACA,MAAa,QAAA,GAAqC;AAChD,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,cAAA,GAAiB;AACf,IAAA,IAAA,CAAK,SAAQ,CAAE,mBAAA;AAAA,MACb,KAAK,UAAA,CAAW,EAAA;AAAA,MAChB,KAAK,UAAA,CAAW;AAAA,KAClB;AAAA;AAEJ;AAhBEA,YAAA,GAAA,IAAA,OAAA,EAAA;;ACnUK,MAAM,eAAe,KAAA,CAA6B;AAAA,EACvD,UAAU,SAAA,EAA2C;AACnD,IAAA,OAAO,KAAA,CAAM,UAAU,SAAS,CAAA;AAAA;AAEpC;;;;;;;;ACAO,MAAM,QAAA,GAAN,MAAM,QAAA,SAAgB,KAAA,CAQ3B;AAAA,EAaA,YAAY,UAAA,EAAoC;AAC9C,IAAA,KAAA,CAAM,UAAoC,CAAA;AAR5C,IAAAN,eAAA,CAAA,IAAA,EAAQ,IAAA,EAAa,EAAA,CAAA;AASnB,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,EAAA;AACnB,IAAA,IAAA,CAAK,WAAW,IAAA,GAAO,aAAA;AAEvB,IAAA,QAAA,CAAQ,OAAA,CAAQ,EAAA,CAAG,SAAA,EAAW,MAAM;AAClC,MAAA,IAAA,CAAK,cAAA,EAAe;AAAA,KACrB,CAAA;AAAA;AACH,EAnBA,OAAc,MAAA,GAAS;AACrB,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAAA;AACnC,EAKA,OAAc,gBAAA,GAAmB;AAC/B,IAAA,OAAO,IAAA,CAAK,aAAA;AAAA;AACd,EAYA,MAAM,KAAK,IAAA,EAA2B;AACpC,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAErB,IAAA,IAAA,CAAK,EAAA,GAAK,KAAK,YAAA,EAAa;AAC5B,IAAA,IAAA,CAAK,cAAA,EAAe;AAAA;AACtB,EAEQ,YAAA,GAAe;AACrB,IAAA,OAAO,GAAG,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,SAAS,EAAE,MAAM,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,WAAW,SAAS,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,WAAW,EAAE,CAAA,CAAA;AAAA;AAC7G,EACO,MAAA,GAAS;AACd,IAAA,OAAO,KAAK,KAAA,CAAM,GAAA;AAAA;AACpB,EAEO,cAAA,GAAiB;AACtB,IAAA,IAAA,CAAK,MAAM,GAAA,GAAM,CAAA,EAAG,UAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,OAAO,CAAA,wBAAA,EAA2B,IAAA,CAAK,OAAO,CAAA,GAAA,EAAA,qBAAU,IAAA,EAAK,EAAE,SAAS,CAAA,CAAA;AAAA;AAC7H,EAEO,gBAAA,GAAmB;AACxB,IAAA,OAAO,CAAA,EAAG,UAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,OAAO,CAAA,0BAAA,EAA6B,IAAA,CAAK,KAAA,EAAO,uBAAM,IAAI,IAAA,EAAK,EAAE,OAAA,EAAS,CAAA,UAAA,EAAa,UAAU,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,SAAS,CAAA,CAAA;AAAA;AAC1K,EAEO,KAAA,GAAQ;AACb,IAAA,OAAO,IAAA,CAAK,EAAA;AAAA;AACd,EAEO,SAAS,KAAA,EAAe;AAC7B,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,KAAA;AACnB,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,EAAA;AACrC,IAAA,QAAA,CAAQ,gBAAgB,EAAE,CAAC,IAAA,CAAK,EAAE,GAAG,KAAA,EAAM;AAAA;AAC7C,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,IAAA,CAAK,EAAA,GAAK,KAAK,YAAA,EAAa;AAC5B,IAAA,IAAI,IAAA,CAAK,MAAM,KAAA,KAAU,EAAA,IAAM,CAAC,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAA,EAAU;AAClE,MAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,kBAAA;AAAA,QAC1C,KAAK,IAAA,CAAK;AAAA,OACZ;AACA,MAAA,OAAO,KAAA;AAAA,KACT,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,EAAA;AACrC,MAAA,OAAO,IAAA;AAAA;AACT;AAEJ,CAAA;AAlEEA,eAAA,CATW,QAAA,EASI,SAAA,EAAU,IAAIU,cAAA,EAAgC,CAAA;AAO7DV,eAAA,CAhBW,QAAA,EAgBI,iBAAwC,EAAC,CAAA;AAhBnD,IAAM,OAAA,GAAN;;ACJA,MAAM,gCAAgC,KAAA,CAAM;AAAC;AAEpD,SAAS,QAAQ,EAAA,EAAY;AAC3B,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,UAAA,CAAW,SAAS,EAAE,CAAA;AAAA,GACvB,CAAA;AACH;AAQA,eAAsB,UAAA,CACpB,EAAA,EACA,YAAA,EACA,aAAA,GAAoC;AAAA,EAClC,OAAA,EAAS,CAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA,EACqB;AACrB,EAAA,OAAO,IAAI,OAAA,CAAoB,CAAC,OAAA,EAAS,MAAA,KAAW;AAClD,IAAA,CAAC,YAAY;AACX,MAAA,MAAM,QAAQ,YAAY;AACxB,QAAA,MAAM,GAAA,GAAM,MAAM,EAAA,EAAG;AACrB,QAAA,OAAO,YAAA,CAAa,GAAG,CAAA,GAAI,GAAA,GAAM,IAAA;AAAA,OACnC;AAEA,MAAA,WAAA,MAAiB,CAAA,IAAK,IAAI,KAAA,CAAM,aAAA,CAAc,OAAO,CAAA,EAAG;AACtD,QAAA,MAAM,GAAA,GAAM,MAAM,KAAA,EAAM;AACxB,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,OAAA,CAAQ,GAAG,CAAA;AACX,UAAA;AAAA;AAEF,QAAA,MAAM,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA;AAGrC,MAAA,MAAA,CAAO,IAAI,yBAAyB,CAAA;AAAA,KACtC,GAAG;AAAA,GACJ,CAAA;AACH;;AC5CO,MAAM,YAAA,GAAgC,CAAC,CAAA,EAAQ,CAAA,KAAW;AAC/D,EAAA,IAAI,MAAA,CAAO,EAAA,CAAG,CAAA,EAAG,CAAC,CAAA;AAAG,IAAA,OAAO,IAAA;AAE5B,EAAA,IAAI,CAAC,OAAO,EAAA,CAAG,CAAA,EAAG,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,OAAO,CAAA,EAAG;AAC7C,IAAA,OAAO,KAAA;AAAA;AAGT,EAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpB,MAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,CAAC,KAAK,CAAA,CAAE,MAAA,KAAW,EAAE,MAAA,EAAQ;AAC9C,QAAA,OAAO,KAAA;AAAA;AAET,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACjC,QAAA,IAAI,CAAC,OAAO,EAAA,CAAG,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG;AAC1B,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,OAAO,IAAA;AAAA,KACT,MAAA,IAAW,KAAK,CAAA,EAAG;AACjB,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5C,QAAA,IAAI,CAAC,MAAA,CAAO,EAAA,CAAG,OAAO,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG;AAC7B,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5C,QAAA,IAAI,CAAC,MAAA,CAAO,EAAA,CAAG,OAAO,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG;AAC7B,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,OAAO,IAAA;AAAA,eACG,CAAA,IAAK,CAAC,CAAA,IAAO,CAAC,KAAK,CAAA,EAAI;AACjC,MAAA,OAAO,KAAA;AAAA;AACT;AAGF,EAAA,OAAO,CAAA,KAAM,CAAA;AACf;;ACnCO,SAAS,kBACd,CAAA,EACS;AACT,EAAA,OACE,MAAA,CAAO,EAAE,UAAA,CAAW,QAAQ,KAC5B,MAAA,CAAO,CAAA,CAAE,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAQ,KACtC,MAAA,CAAO,CAAA,CAAE,SAAQ,CAAE,UAAA,CAAW,QAAQ,CAAA,IACtC,MAAA,CAAO,CAAA,CAAE,UAAA,CAAW,WAAW,CAAA;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA,IAAA,kBAAA;AAyBO,MAAM,SAAA,CAAU;AAAA,EACrB,WAAA,CACkB,EAAA,EACA,IAAA,EACA,KAAA,EACA,SAAA,EAChB;AAJgB,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAAA;AAEpB;AAEO,MAAe,2BAMZ,KAAA,CAIR;AAAA,EAMA,WAAA,CAAY;AAAA,IACV,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,EAAiD;AAC/C,IAAA,KAAA,CAAM,UAA6B,CAAA;AAbrC,IAAAO,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAuC,IAAA,CAAA;AACvC,IAAAP,eAAA,CAAA,IAAA,EAAU,0BAAA,EAA6C,IAAA,CAAA;AAEvD,IAAAA,eAAA,CAAA,IAAA,EAAgB,WAAA,CAAA;AAYd,IAAA,IAAA,CAAK,YAAY,IAAI,SAAA,CAAU,KAAA,EAAO,OAAA,EAAS,UAAU,SAAS,CAAA;AAElE,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,KAAA;AAEnB,IAAA,IAAA,CAAK,MAAM,UAAA,GAAa;AAAA,MACtB,KAAA,EAAO,KAAA;AAAA,MACP,YAAA,EAAc,IAAA;AAAA,MACd,aAAA,EAAe;AAAA,KACjB;AAEA,IAAA,cAAA,CAAe,IAAA,EAAM;AAAA,MACnB,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA;AACH,EAEA,MAAM,SAAA,CACJ,SAAA,EACA,OAAA,EACkB;AAClB,IAAA,IAAI,IAAA,CAAK,kBAAA,EAAmB,CAAE,KAAA,EAAO;AACnC,MAAA,OAAO,OAAA,CAAQ,QAAQ,KAAK,CAAA;AAAA;AAG9B,IAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,MAAA,IAAI,KAAK,QAAA,EAAS,KAAMQ,qBAAK,kBAAA,CAAA,IAAsB,CAAC,SAAS,KAAA,EAAO;AAClE,QAAA,OAAO,IAAA;AAAA,OACT,MAAO;AACL,QAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,SAAA,CAAU,SAAS,CAAA;AAC3C,QAAA,IAAI,GAAA,EAAK;AACP,UAAAC,cAAA,CAAA,IAAA,EAAK,kBAAA,EAAqB,KAAK,QAAA,EAAS,CAAA;AACxC,UAAA,OAAO,IAAA;AAAA,SACT,MAAO;AACL,UAAA,OAAO,KAAA;AAAA;AACT;AACF;AAGF,IAAA,OAAO,KAAA,CAAM,UAAU,SAAS,CAAA;AAAA;AAClC,EACA,MAAgB,eAAA,CAAgB;AAAA,IAC9B;AAAA,GACF,EAAqE;AACnE,IAAA,OAAO,KAAA;AAAA;AACT,EACO,kBAAA,GAAqB;AAC1B,IAAA,OAAO,KAAK,KAAA,CAAM,UAAA;AAAA;AACpB,EACO,QAAA,GAAW;AAChB,IAAA,OAAO,KAAK,KAAA,CAAM,KAAA;AAAA;AACpB,EACU,YAAY,QAAA,EAA8B;AAClD,IAAA,OAAO,kBAAkB,IAAI,CAAA,IAAK,aAAa,QAAA,EAAU,IAAA,CAAK,UAAU,CAAA;AAAA;AAC1E,EACO,QAAA,CAAS,UAAqB,OAAA,EAA2B;AAC9D,IAAA,IACE,CAAC,OAAA,EAAS,KAAA,KACT,iBAAA,CAAkB,IAAI,KAAK,YAAA,CAAa,QAAA,EAAU,IAAA,CAAK,QAAA,EAAU,CAAA,CAAA;AAElE,MAAA,OAAO,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAE7B,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,QAAA;AACnB,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,IAAA;AAErC,IAAA,IAAI,OAAA,EAAS,gBAAgB,KAAA,EAAO;AAClC,MAAA,IAAA,CAAK,wBAAA,GAA2B,QAAA;AAChC,MAAA,OAAO,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA;AAG7B,IAAA,OAAO,KAAK,WAAA,CAAY,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC9C,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,IAAI,OAAA,EAAS,gBAAgB,KAAA,EAAO;AAClC,UAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,kBAAA,GAAqB,IAAA;AAAA;AAEjD,QAAA,IAAI,OAAA,EAAS,eAAe,KAAA,EAAO;AACjC,UAAA,OAAO,KAAK,SAAA,CAAU,UAAA,EAAY,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AAAA;AAE7D,QAAA,OAAO,IAAA;AAAA;AAET,MAAA,OAAO,OAAA,CAAQ,QAAQ,KAAK,CAAA;AAAA,KAC7B,CAAA;AAAA;AACH,EAEU,gCACR,KAAA,EACyB;AACzB,IAAA,OAAO;AAAA,MACL,QAAA,EAAU;AAAA,QACR;AAAA,OACF;AAAA,MACA,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf,KACF;AAAA;AACF,EACU,kBAAkB,MAAA,EAAkC;AAC5D,IAAA,OAAO,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,MACtC,SAAS,OAAA,CAAQ,KAAA;AAAA,MACjB,MAAA,EAAQ,oBAAA;AAAA,MACR,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,MAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,SAAA;AAAA,MAChC,KAAA,EAAO,KAAK,SAAA,CAAU,EAAA;AAAA,MACtB,OAAO,IAAA,CAAK,UAAA,CAAW,OAAA,IAAW,IAAA,CAAK,WAAW,KAAA,IAAS,CAAA;AAAA,MAC3D,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,MAAA,EAAQ,IAAA;AAAA,MACR,GAAG;AAAA,KACJ,CAAA;AAAA;AACH,EACU,wBAAwB,CAAA,EAAY;AAC5C,IAAA,IAAI,aAAa,uBAAA,EAAyB;AACxC,MAAA,IAAA,CAAK,KAAA,CAAM,WAAW,KAAA,GAAQ,IAAA;AAAA,KAChC,MAAO;AACL,MAAA,MAAM,CAAA;AAAA;AACR;AACF,EACA,MAAgB,YAAY,QAAA,EAAqB;AAC/C,IAAA,IAAI,aAAa,IAAA,CAAK,wBAAA;AAA0B,MAAA,OAAO,IAAA;AAEvD,IAAA,MAAM,eAAe,YAAY;AAC/B,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,+BAAA,CAAgC,QAAQ,CAAA;AAC9D,QAAA,MAAM,WAAW,MAAM,UAAA;AAAA,UACrB,YAAY;AACV,YAAA,IAAI;AACF,cAAA,MAAM,MAAM,MAAM,IAAA;AAAA,gBAChB,KAAK,IAAA,CAAK,SAAA;AAAA,gBACV,MAAM,KAAK,iBAAA,EAAkB;AAAA,gBAC7B;AAAA,eACF;AACA,cAAA,OAAO,GAAA;AAAA,qBACA,CAAA,EAAG;AACV,cAAA,IAAA,CAAK,IAAA,CAAK,UAAU,aAAA,CAAc,GAAA;AAAA,gBAChC,IAAI,mBAAA,CAAoB,EAAE,SAAS,MAAA,CAAO,CAAC,GAAG;AAAA,eAChD;AACA,cAAA,OAAO,IAAA;AAAA;AACT,WACF;AAAA,UACA,CAACE,OAAAA,KAAW;AACV,YAAA,MAAM,OAAA,GAAU,CAAC,CAACA,OAAAA,EAAQ,IAAA,EAAM,OAAA;AAChC,YAAA,OAAO,OAAA;AAAA,WACT;AAAA,UACA,EAAE,OAAA,EAAS,EAAA,EAAI,OAAA,EAAS,GAAA;AAAI,SAC9B;AAEA,QAAA,MAAM,MAAA,GAAS,QAAA,EAAU,IAAA,EAAM,OAAA,IAAW,KAAA;AAE1C,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,IAAA,CAAK,wBAAA,GAA2B,QAAA;AAChC,UAAA,IAAA,CAAK,KAAA,CAAM,WAAW,KAAA,GAAQ,KAAA;AAC9B,UAAA,OAAO,IAAA;AAAA;AACT,eACO,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,CAAC,CAAA;AACrC,QAAA,IAAA,CAAK,wBAAwB,CAAC,CAAA;AAAA;AAGhC,MAAA,OAAO,KAAA;AAAA,KACT,GAAG;AAEH,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,iBAAA,CAAkB,WAAW,CAAA;AAAA,KACnD,CAAA,MAAQ;AAAA;AAKR,IAAA,OAAO,MAAM,WAAA;AAAA;AACf,EAEU,QAAA,GAAW;AACnB,IAAA,OAAO,IAAA,CAAK,UAAS,KAAM,EAAA;AAAA;AAC7B,EAEU,YAAA,GAAe;AACvB,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,QAAA,EAAS;AAAA;AACzB,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,KAAA,EAAO;AAC/B,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,YAAY,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,EAAI;AAC/C,QAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,iBAAA,EAAkB;AAC9D,QAAA,OAAO,KAAA;AAAA;AACT;AAGF,IAAA,MAAM,OAAA,GACJ,iBAAA,CAAkB,IAAI,CAAA,IACtB,KAAK,YAAA,EAAa,IAClB,CAAC,IAAA,CAAK,WAAW,QAAA,IACjB,IAAA,CAAK,UAAA,CAAW,gBAAA,IAChB,KAAK,UAAA,CAAW,QAAA;AAElB,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,OAAA,GACjC,OACA,MAAA,CAAO,kBAAA,CAAmB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAEjD,IAAA,OAAO,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA;AAAA;AAChC,EAEO,SAAS,GAAA,EAAa;AAC3B,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,GAAA;AAAA;AACvC,EAEU,oBAAA,CACR,OACA,gBAAA,EACkB;AAClB,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,oBAAA,CAAqB,KAAA,EAAO,gBAAgB,CAAA;AAAA,MACrD,KAAA,EAAO,KAAK,SAAA,CAAU;AAAA,KACxB;AAAA;AACF,EAEA,MAAM,KAAK,IAAA,EAA2B;AACpC,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAErB,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB;AAAA,MAC9C,GAAG,IAAA,CAAK,UAAA;AAAA,MACR,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,KAAA,EAAO,KAAK,SAAA,CAAU,EAAA;AAAA,MACtB,OAAA,EAAS,KAAK,SAAA,CAAU,IAAA;AAAA,MACxB,QAAA,EAAU,KAAK,SAAA,CAAU,KAAA;AAAA,MACzB,SAAA,EAAW,KAAK,SAAA,CAAU,SAAA;AAAA,MAC1B,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,KACnB,CAAA;AAED,IAAA,IAAA,CAAK,KAAA,CAAM,QAAQ,YAAA,IAAiB,EAAA;AAAA;AAExC;AAnPE,kBAAA,GAAA,IAAA,OAAA,EAAA;;ACnCK,MAAM,iBAAiB,kBAAA,CAG5B;AAAA,EACA,SAAA,CACE,WACA,OAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3C,EAEU,eAAA,CAAgB;AAAA,IACxB;AAAA,GACF,EAAgF;AAC9E,IAAA,IAAI,KAAA,KAAU,EAAA,IAAM,KAAA,KAAU,MAAA,EAAW;AACvC,MAAA,OAAO,OAAA,CAAQ,QAAQ,KAAK,CAAA;AAAA;AAG9B,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAE3C;;;;;;;;ACzBO,MAAM,WAAA,CAAY;AAAA,EAGvB,WAAA,CACS,WACP,KAAA,EACA;AAFO,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAHT,IAAAX,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAME,IAAA,IAAA,CAAK,KAAA,GAAQ;AAAA,MACX,GAAG,KAAA;AAAA,MACH,UAAA,EAAY,KAAA;AAAA,MACZ,cAAc,KAAA,CAAM,YAAA;AAAA,MACpB,SAAA,EAAW;AAAA,KACb;AACA,IAAA,cAAA,CAAe,IAAA,EAAM,EAAE,KAAA,EAAO,UAAA,EAAY,CAAA;AAAA;AAC5C,EAEA,iBAAA,GAAoB;AAClB,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA;AACb,EAEA,MAAM,iBAAiB,GAAA,EAAa;AAClC,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,WAAA,KAAgB,MAAA,EAAW;AACxC,MAAA,MAAM,SAAS,MAAM,IAAA;AAAA,QACnB,IAAA,CAAK,SAAA;AAAA,QACL,GAAA;AAAA,QACA,EAAE,cAAA,EAAgB,IAAA,EAAM,YAAA,EAAc,IAAA;AAAK,OAC7C;AAEA,MAAA,MAAM,QAAA,GAAW,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ,KAAA;AACvC,MAAA,IAAA,CAAK,KAAA,CAAM,YACT,QAAA,KAAa,MAAA,GAAU,QAAQ,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAA,GAAM,EAAA;AAC9D,MAAA,IAAA,CAAK,KAAA,CAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA;AACtC;AACF,EAEA,KAAA,GAAQ;AACN,IAAA,OAAO,KAAK,KAAA,CAAM,WAAA;AAClB,IAAA,IAAA,CAAK,MAAM,SAAA,GAAY,EAAA;AACvB,IAAA,IAAA,CAAK,MAAM,UAAA,GAAa,KAAA;AAAA;AAC1B,EAEA,iBAAA,GAAoB;AAClB,IAAA,OAAO,KAAK,KAAA,CAAM,WAAA;AAClB,IAAA,IAAA,CAAK,MAAM,SAAA,GAAY,EAAA;AACvB,IAAA,IAAA,CAAK,MAAM,UAAA,GAAa,KAAA;AACxB,IAAA,IAAA,CAAK,MAAM,YAAA,GAAe,KAAA;AAAA;AAC5B,EAEA,aAAa,GAAA,EAAa;AACxB,IAAA,IAAA,CAAK,MAAM,SAAA,GAAY,GAAA;AACvB,IAAA,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,GAAA,KAAQ,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA;AAC7C,EAEA,iBAAA,CAAkB,OAAe,GAAA,EAAa;AAC5C,IAAA,IAAI,IAAA,CAAK,MAAM,UAAA,EAAY;AACzB,MAAA,IAAA,CAAK,IAAA,CAAK,WAAW,GAAA,EAAK;AAAA,QACxB,QAAA,EAAU,EAAE,KAAA,EAAM;AAAA,QAClB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAA,EAAS;AAAA,QAC1C,iBAAA,EAAmB;AAAA,OACpB,CAAA;AAAA;AAGH,IAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,IAAA,CAAK,KAAA,KAAU,EAAA;AACzC,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA;AACb,EAEA,IAAI,MAAA,GAAS;AACX,IAAA,OAAO,KAAK,KAAA,CAAM,EAAA;AAAA;AACpB,EAEA,IAAI,KAAA,GAAQ;AACV,IAAA,OAAO,KAAK,KAAA,CAAM,SAAA;AAAA;AAEtB;;AC9EO,SAAS,cAAc,QAAA,EAAkB;AAC9C,EAAA,OAAO,CAAC,GAAG,QAAA,CAAS,QAAA,CAAS,qBAAqB,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,GAAG,CAAA,EAAG,CAAC,CAAA,MAAO;AAAA,IACtE,EAAA,EAAI,CAAA;AAAA,IACJ,KAAA,EAAO;AAAA,GACT,CAAE,CAAA;AACJ;;;;;;;;ACWO,MAAe,0BAMZ,kBAAA,CAA2D;AAAA,EAMnE,YAAY,KAAA,EAAqD;AAC/D,IAAA,KAAA,CAAM,KAAK,CAAA;AANb,IAAAA,eAAA,CAAA,IAAA,EAAA,cAAA,sBAAmB,GAAA,EAAyB,CAAA;AAC5C,IAAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAqB,IAAA,CAAK,YAAA,EAAa,CAAE,CAAC,CAAA,EAAG,EAAA,CAAA;AAC7C,IAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,KAAA,CAAA;AAChB,IAAAA,eAAA,CAAA,IAAA,EAAA,sBAAA,EAAuC,EAAC,CAAA;AAItC,IAAA,cAAA,CAAe,IAAA,EAAM;AAAA,MACnB,YAAA,EAAc,UAAA;AAAA,MACd,kBAAA,EAAoB,UAAA;AAAA,MACpB,aAAA,EAAe;AAAA,KAChB,CAAA;AAAA;AACH,EAEQ,WAAA,GAAc;AACpB,IAAA,MAAM,UAA0B,EAAC;AACjC,IAAA,MAAM,KAAA,GAAQ,2BAAA;AACd,IAAA,IAAI,KAAA;AAEJ,IAAA,OAAA,CAAQ,KAAA,GAAQ,MAAM,IAAA,CAAK,IAAA,CAAK,WAAW,IAAA,IAAQ,IAAI,OAAO,IAAA,EAAM;AAClE,MAAA,MAAM,GAAA,GAAM,MAAM,CAAC,CAAA;AACnB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,KAAM,MAAA;AAC3B,MAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,KAAA;AAAA;AAGjB,IAAA,IAAA,CAAK,oBAAA,GAAuB,OAAA;AAAA;AAC9B,EAEQ,YAAA,GAAe;AACrB,IAAA,OAAO,YAAA,CAAa,cAAc,IAAA,CAAK,OAAA,GAAU,UAAA,EAAY,KAAA,IAAS,EAAE,CAAC,CAAA;AAAA;AAC3E,EAEA,MAAM,KAAK,IAAA,EAA2B;AACpC,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AACrB,IAAA,IAAI,IAAA,CAAK,YAAA,EAAa,CAAE,MAAA,GAAS,CAAA,EAAG;AAClC,MAAA,IAAA,CAAK,WAAA,EAAY;AACjB,MAAA,IAAA,CAAK,YAAA,EAAa,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AACpC,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,oBAAA,CAAqB,IAAA,CAAK,EAAE,CAAA,IAAK,KAAA;AAC3D,QAAA,IAAA,CAAK,YAAA,CAAa,GAAA;AAAA,UAChB,IAAA,CAAK,EAAA;AAAA,UACL,IAAI,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,YACnC,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ;AAAA,WACD;AAAA,SACH;AAAA,OACD,CAAA;AAED,MAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA,CAAK,YAAA,EAAa,CAAE,CAAC,CAAA,CAAE,EAAA;AAAA;AACnD;AACF,EAEO,kBAAA,GAAqB;AAC1B,IAAA,IAAA,CAAK,eAAA,EAAgB,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACpC,MAAA,CAAA,CAAE,KAAA,EAAM;AAAA,KACT,CAAA;AAAA;AACH,EAEO,kBAAA,GAAqB;AAC1B,IAAA,IAAA,CAAK,eAAA,EAAgB,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACpC,MAAA,CAAA,CAAE,iBAAA,EAAkB;AAAA,KACrB,CAAA;AAAA;AACH,EAEA,MAAa,eAAe,MAAA,EAAgB;AAC1C,IAAA,IAAA,CAAK,kBAAA,GAAqB,MAAA;AAC1B,IAAA,IAAA,CAAK,eAAA,EAAgB;AAAA;AACvB,EAEO,eAAe,EAAA,EAAY;AAChC,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,EAAE,CAAA;AAAA;AACjC,EAEO,qBAAA,GAAwB;AAC7B,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,kBAAkB,CAAA;AAAA;AACtD,EAEO,eAAA,GAAkB;AACvB,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA;AACd,EAEO,kBAAA,GAAqB;AAC1B,IAAA,CAAC,GAAG,IAAA,CAAK,eAAA,EAAgB,CAAE,MAAA,EAAQ,CAAA,CAChC,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,KAAA,CAAM,UAAU,CAAA,CAChC,OAAA,CAAQ,CAAC,CAAA,KAAM;AACd,MAAA,CAAA,CAAE,iBAAA;AAAA,QACA,CAAA,CAAE,KAAA;AAAA,QACF,KAAK,iBAAA,CAAkB;AAAA,UACrB,KAAA,EAAO,IAAA;AAAA,UACP,qBAAA,EAAuB,IAAA;AAAA,UACvB,QAAQ,CAAA,CAAE;AAAA,SACX;AAAA,OACH;AAAA,KACD,CAAA;AACH,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,IAAA;AAAA;AACvC,EAEA,MAAa,eAAA,GAAkB;AAC7B,IAAA,MAAM,SAAS,IAAA,CAAK,kBAAA;AACpB,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAErB,IAAA,MAAM,IAAA,CAAK,cAAA,CAAe,MAAM,CAAA,EAAG,gBAAA;AAAA,MACjC,MAAM,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QACrC,OAAA,EAAS,gCAAA;AAAA,QACT,MAAA,EAAQ,sBAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,EAAA;AAAA,QACjC,SAAA,EAAW,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,SAAA;AAAA,QACrC,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,QACvB,KAAA,EAAO,KAAK,SAAA,CAAU,EAAA;AAAA,QACtB,MAAA;AAAA,QACA,KAAA,EAAO;AAAA,OACR;AAAA,KACH;AAEA,IAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AAAA;AACvB,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,MAAM,YAAA,GAAe,MAAM,KAAA,CAAM,QAAA,EAAS;AAC1C,IAAA,IAAI,OAAA,GAAU,YAAA;AACd,IAAA,MAAM,cACJ,YAAA,IACA,IAAA,CAAK,WAAW,OAAA,IAChB,IAAA,CAAK,UAAS,KACb,CAAC,IAAA,CAAK,UAAA,CAAW,eAChB,CAAC,IAAA,CAAK,WAAW,gBAAA,IACjB,CAAC,KAAK,UAAA,CAAW,QAAA,CAAA;AAErB,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,eAAe,CAAC,GAAG,KAAK,eAAA,EAAgB,CAAE,QAAQ,CAAA;AAExD,MAAA,MAAM,gBAAA,GAAmB,aAAa,IAAA,CAAK,CAAC,MAAM,CAAC,CAAA,CAAE,MAAM,YAAY,CAAA;AAEvE,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,sBAAA;AAAA,UAC1C,KAAK,IAAA,CAAK,SAAA;AAAA,UACV,iBAAiB,KAAA,CAAM;AAAA,SACzB;AACA,QAAA,OAAA,GAAU,KAAA;AAAA,OACZ,MAAO;AACL,QAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,IAAA;AAAA;AACvC;AAEF,IAAA,OAAO,OAAA;AAAA;AACT,EACO,QAAA,CACL,UACA,OAAA,EAQkB;AAClB,IAAA,IAAI,aAAa,EAAA,EAAI;AACnB,MAAA,IAAA,CAAK,kBAAA,EAAmB;AAAA;AAE1B,IAAA,OAAO,KAAA,CAAM,QAAA,CAAS,QAAA,EAAU,OAAO,CAAA;AAAA;AAE3C;;ACjLO,MAAM,eAAe,iBAAA,CAAiD;AAAA,EAC3E,SAAA,CACE,WACA,OAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3C,EAEU,YAAA,GAAwB;AAChC,IAAA,OAAO,CAAC,CAAC,IAAI,SAAA,EAAU,CAAE,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAS,EAAG,WAAW,CAAA,CAClE,eAAA,CAAgB,WAAA;AAAA;AACrB,EACU,gCACR,KAAA,EACyB;AACzB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,+BAAA,CAAgC,KAAK,CAAA;AACxD,IAAA,IAAA,CAAK,SAAU,WAAA,GAAc,MAAA;AAC7B,IAAA,OAAO,IAAA;AAAA;AAEX;;;;;;;;AClBO,MAAM,oBAAoBY,aAAA,CAAoB;AAAA,EAGnD,WAAA,CACS,SAAA,EACP,EAAA,EACO,IAAA,EACP,WAAA,EACA;AACA,IAAA,KAAA,CAAM;AAAA,MACJ,EAAA;AAAA,MACA,aAAa,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,UAAU,SAAA,EAAU;AAAA,MAC9D,OAAA,EAAS;AAAA,QACP,kBAAkB,IAAA,KAAS,GAAA,IAAO,CAAC,CAAC,SAAA,CAAU,SAAS,CAAA,CAAE,SAAA;AAAA,QACzD,OAAA,EAAS,SAAA,CAAU,SAAS,CAAA,CAAE,OAAA;AAAA,QAC9B,gBAAA,EAAkB,SAAA,CAAU,SAAS,CAAA,CAAE,kBAAA;AAAA,QACvC,QAAA,EAAU,SAAA,CAAU,SAAS,CAAA,CAAE,SAAA;AAAA,QAC/B,iBAAA,EACG,SAAA,CAAU,SAAS,CAAA,CACjB,4BAAA,KAAoD,KAAA;AAAA,QACzD,UAAA,EAAY,SAAA,CAAU,SAAS,CAAA,CAAE,UAAA;AAAA,QACjC,KAAA,EAAO,SAAA,CAAU,SAAS,CAAA,CAAE,KAAA;AAAA,QAC5B,WAAA,EAAa,MAAM,SAAA,CAAU,IAAA,EAAK;AAAA,QAClC,MAAA,EAAQ,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA;AAAA,QAC7B,MAAA,EAAQ,CAAC,CAAA,KAAM,SAAA,CAAU,cAAc,GAAA,CAAI,IAAI,mBAAA,CAAoB,CAAC,CAAC,CAAA;AAAA,QACrE,WAAW,MACT,SAAA,CAAU,WAAA,CAAY,iBAAA,GAAoB,KAAK,eAAgB,CAAA;AAAA,QACjE,cAAA,EAAgB,SAAA,CAAU,SAAS,CAAA,CAAE,yBAAA;AAAA,QACrC,QAAA,EAAU,KAAA;AAAA,QACV,cAAA,EAAgB,SAAA,CAAU,SAAS,CAAA,CAAE,cAAA;AAAA,QACrC,gBAAA,EAAkB,SAAA,CAAU,SAAS,CAAA,CAAE,gBAAA;AAAA,QACvC,oBAAA,EAAsB,SAAA,CAAU,SAAS,CAAA,CAAE,oBAAA;AAAA,QAC3C,aAAA,EAAe,SAAA,CAAU,SAAS,CAAA,CAAE;AAAA;AACtC,KACD,CAAA;AA9BM,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AALT,IAAAZ,eAAA,CAAA,IAAA,EAAA,uBAAA,CAAA;AA8EA,IAAAA,eAAA,CAAA,IAAA,EAAU,gCAAA,EAAiC,CACzC,iBAAA,KACG;AACH,MAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA,KACzC,CAAA;AAhDE,IAAA,IAAA,CAAK,qBAAA,GACH,SAAS,GAAA,GACL,SAAA,CAAU,SAAS,CAAA,CAAE,eAAA,GACrB,SAAA,CAAU,SAAS,CAAA,CAAE,eAAA;AAAA;AAC7B,EAEO,8BAAA,GAA0D;AAC/D,IAAA,OAAO;AAAA,MACL,mBAAA,EAAqB,IAAA;AAAA,MACrB,uBAAuB,IAAA,CAAK,qBAAA;AAAA,MAC5B,yBAAyB,IAAA,CAAK;AAAA,KAChC;AAAA;AACF,EAEO,+BAAA,GAA2D;AAChE,IAAA,OAAO;AAAA,MACL,mBAAA,EAAqB,IAAA;AAAA,MACrB,uBAAuB,IAAA,CAAK,qBAAA;AAAA,MAC5B,yBAAyB,IAAA,CAAK;AAAA,KAChC;AAAA;AACF,EAEU,6BACR,iBAAA,EACyB;AACzB,IAAA,OAAO;AAAA,MACL,GAAG,iBAAA;AAAA,MACH,QAAQ,IAAA,CAAK,IAAA;AAAA,MACb,mBAAA,EAAqB,IAAA;AAAA,MACrB,yBAAyB,IAAA,CAAK,IAAA;AAAA,MAC9B,uBAAuB,IAAA,CAAK;AAAA,KAC9B;AAAA;AACF,EAEU,UAAU,iBAAA,EAA4C;AAC9D,IAAA,OAAO,EAAE,GAAG,iBAAA,EAAmB,MAAA,EAAQ,KAAK,IAAA,EAAK;AAAA;AACnD,EAEU,0BACR,iBAAA,EACA;AACA,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAQU,4BACR,iBAAA,EACyB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAEU,8BACR,iBAAA,EACyB;AACzB,IAAA,OAAO;AAAA,MACL,GAAG,iBAAA;AAAA,MACH,UAAU,IAAA,CAAK,IAAA;AAAA,MACf,MAAA,EAAQ,CAAA,qBAAA,EAAwB,IAAA,CAAK,IAAI,CAAA;AAAA,KAC3C;AAAA;AACF,EAEU,kCACR,iBAAA,EACA;AACA,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAEU,4BACR,iBAAA,EACyB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAEU,+BACR,iBAAA,EACyB;AACzB,IAAA,OAAO;AAAA,MACL,GAAG,iBAAA;AAAA,MACH,mBAAA,EAAqB,IAAA;AAAA,MACrB,qBAAA,EAAuB,IAAA,CAAK,qBAAA,EAAuB,QAAA,EAAS;AAAA,MAC5D,yBAAyB,IAAA,CAAK;AAAA,KAChC;AAAA;AACF,EAEU,iCACR,iBAAA,EACyB;AACzB,IAAA,OAAO,EAAE,GAAG,iBAAA,EAAmB,QAAA,EAAU,KAAK,IAAA,EAAK;AAAA;AACrD,EAEU,8BACR,iBAAA,EACyB;AACzB,IAAA,OAAO,EAAE,GAAG,iBAAA,EAAmB,QAAA,EAAU,KAAK,IAAA,EAAK;AAAA;AACrD,EAEU,4BACR,iBAAA,EACyB;AACzB,IAAA,OAAO;AAAA,MACL,GAAG,iBAAA;AAAA,MACH,UAAU,IAAA,CAAK,IAAA;AAAA,MACf,EAAA,EAAI,IAAA,CAAK,qBAAA,EAAuB,QAAA;AAAS,KAC3C;AAAA;AACF,EAEU,6BACR,iBAAA,EACyB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAEU,uCACR,iBAAA,EACyB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAEU,kCACR,iBAAA,EACyB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AACzC,EAEU,4BACR,iBAAA,EACyB;AACzB,IAAA,OAAO,IAAA,CAAK,UAAU,iBAAiB,CAAA;AAAA;AAE3C;;;;;;;;AClKO,MAAM,sBAAsB,WAAA,CAAY;AAAA,EAC7C,WAAA,CACS,SAAA,EACA,IAAA,EACP,WAAA,EACO,KAAA,EACP;AACA,IAAA,KAAA;AAAA,MACE,SAAA;AAAA,MACA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,SAAA,CAAU,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,UAAA,CAAW,KAAA,IAAS,EAAE,CAAA,CAAA;AAAA,MAC7D,IAAA;AAAA,MACA;AAAA,KACF;AAVO,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAYT,IAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AA8FA,IAAAA,eAAA,CAAA,IAAA,EAAA,gCAAA,EAAiC,CAAC;AAAA,MAChC,MAAA;AAAA,MACA,GAAG;AAAA,KACL,KAA+B;AAC7B,MAAA,OAAO;AAAA,QACL,GAAG,UAAA;AAAA,QACH,GAAG,KAAK,iBAAA;AAAkB,OAC5B;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,6BAAA,EAA8B,CAAC,UAAA,KAAwC;AACrE,MAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAU,GAAI,KAAK,iBAAA,EAAkB;AACpD,MAAA,OAAO;AAAA,QACL,GAAG,UAAA;AAAA,QACH,KAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,6BAAA,EAA8B,CAAC;AAAA,MAC7B,QAAA;AAAA,MACA,GAAG;AAAA,KACL,KAA+B;AAC7B,MAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAW,OAAO,KAAA,EAAM,GAAI,KAAK,iBAAA,EAAkB;AAClE,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,SAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF,CAAA;AAcA,IAAAA,eAAA,CAAA,IAAA,EAAA,6BAAA,EAA8B,CAAC;AAAA,MAC7B,EAAA;AAAA,MACA,GAAG;AAAA,KACL,KAAwD;AACtD,MAAA,MAAM,EAAE,WAAA,EAAY,GAAI,IAAA,CAAK,iBAAA,EAAkB;AAC/C,MAAA,OAAO;AAAA,QACL,GAAG,UAAA;AAAA,QACH;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,6BAAA,EAA8B,CAAC;AAAA,MAC7B,MAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAG;AAAA,KACL,KAA+B;AAC7B,MAAA,MAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,GAAG,IAAA,EAAK,GAAI,KAAK,iBAAA,EAAkB;AACxD,MAAA,OAAO;AAAA,QACL,GAAG,iBAAA;AAAA,QACH,GAAG;AAAA,OACL;AAAA,KACF,CAAA;AASA,IAAAA,eAAA,CAAA,IAAA,EAAA,2BAAA,EAA4B,CAAC,EAAE,MAAA,EAAQ,KAAA,EAAM,KAA+B;AAC1E,MAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAa,GAAG,IAAA,EAAK,GAAI,KAAK,iBAAA,EAAkB;AAChE,MAAA,OAAO;AAAA,QACL,MAAA;AAAA,QACA,GAAG,IAAA;AAAA,QACH,KAAA;AAAA,QACA,OAAA,EAAS;AAAA,OACX;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,iCAAA,EAAiE,MAAM;AACrE,MAAA,OAAO;AAAA,QACL,qBACE,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,MAAA,KAAW,IAAI,IAAA,GAAO,MAAA;AAAA,QAChD,eAAA,EACE,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,MAAA,KAAW,CAAA,GAC/B,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,CAAC,CAAA,CAAE,EAAA,GAC3B,MAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,WAAA,EAAa;AAAA,OACf;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,gCAAA,EAAiC,OAAO;AAAA,MACtC,mBAAA,EAAqB,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,MAAA,KAAW,CAAA;AAAA,MACxD,iBAAiB,IAAA,CAAK;AAAA,KACxB,CAAA,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,2BAAA,EAA4B,CAAC;AAAA,MAC3B,MAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAG;AAAA,KACL,KAA+B;AAC7B,MAAA,MAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,GAAG,IAAA,EAAK,GAAI,KAAK,iBAAA,EAAkB;AACxD,MAAA,OAAO;AAAA,QACL,GAAG,iBAAA;AAAA,QACH,GAAG;AAAA,OACL;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,6BAAA,EAA8B,CAAC;AAAA,MAC7B,KAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAG;AAAA,KACL,KAA+B;AAC7B,MAAA,OAAO;AAAA,QACL,GAAG,KAAA,CAAM,2BAAA,CAA4B,iBAAiB,CAAA;AAAA,QACtD,MAAA,EAAQ,MAAA;AAAA,QAER,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,EAAA;AAAA,QAC7B,GAAG,KAAK,iBAAA;AAAkB,OAC5B;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,kCAAA,EAAmC,CACjC,iBAAA,KAC4B;AAC5B,MAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAK,GAAI,KAAK,iBAAA,EAAkB;AACnD,MAAA,OAAO;AAAA,QACL,GAAG,iBAAA;AAAA,QACH,QAAA,EAAU,KAAK,MAAA,EAAO;AAAA,QACtB,YAAA,EAAc,IAAA;AAAA,QACd,GAAG;AAAA,OACL;AAAA,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,gCAAA,EAAiC,CAAC;AAAA,MAChC,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,uBAAA;AAAA,MACA,GAAG;AAAA,KACL,KAAwD;AACtD,MAAA,OAAO;AAAA,QACL,GAAG,KAAA,CAAM,gCAAA,CAAiC,UAAU,CAAA;AAAA,QACpD,WAAA,EAAa,IAAA,CAAK,iBAAA,EAAkB,CAAE;AAAA,OACxC;AAAA,KACF,CAAA;AAqEA,IAAAA,eAAA,CAAA,IAAA,EAAO,qBAAA,EAAsB,CAAC,IAAA,KAA2C;AACvE,MAAA,OAAO;AAAA,QACL,GAAG,mBAAA;AAAA,UACD,IAAA,CAAK,OAAA;AAAA,UACL,IAAA;AAAA,UACA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAA,IAAW;AAAA,SACnC;AAAA,QACA,YAAA,EAAc,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,WAAW,IAAA,CAAK,YAAA;AAAA,QACpD,OAAA,EAAS,KAAK,OAAA,IAAW,IAAA;AAAA,QACzB,OAAA,EAAS,KAAK,OAAA,IAAW;AAAA,OAC3B;AAAA,KACF,CAAA;AAzUE,IAAA,IAAA,CAAK,gBAAgB,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,qBAC3C,IAAA,GACA,MAAA;AAAA;AACN,EAEA,KAAA,GAAQ;AACN,IAAA,OAAO,KAAK,KAAA,CAAM,UAAA,CAAW,WAAW,IAAA,CAAK,KAAA,CAAM,WAAW,KAAA,IAAS,CAAA;AAAA;AACzE,EACA,MAAA,GAAS;AACP,IAAA,OAAO,CAAA,WAAA,EAAc,IAAA,CAAK,KAAA,CAAM,OAAA,EAAQ,CAAE,UAAA,CAAW,SAAS,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,OAAA,EAAQ,CAAE,WAAW,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,EAAO,CAAA,EAC9I,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,kBAAA,GAAqB,cAAc,EAC/D,CAAA,CAAA;AAAA;AACF,EAEU,qBAAqB,IAAA,EAIH;AAC1B,IAAA,OAAO,KAAA,CAAM,qBAAqB,IAAI,CAAA;AAAA;AACxC,EAEU,yBAAyB,KAAA,EAAuB;AACxD,IAAA,MAAM,eAAA,GAAkB,KAAK,KAAA,CAAM,eAAA;AACnC,IAAA,IAAI,eAAA,CAAgB,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,MAAA;AACxC,MAAA,IAAI,gBAAgB,CAAC,CAAA,CAAE,SAAS,KAAA,CAAM,CAAC,EAAE,IAAA,EAAM;AAC7C,QAAA,IAAA,CAAK,KAAA,CAAM,kBAAkB,EAAC;AAAA,OAChC;AAAO,QAAA,OAAO,EAAC;AACjB,IAAA,OAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAAA;AACzB,EAEU,iBAAA,GAAoB;AAC5B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,UAAA,CAAW,EAAA;AAAA,MACvC,SAAA,EAAW,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,UAAA,CAAW,SAAA;AAAA,MAC3C,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,EAAA;AAAA,MAC5B,KAAA,EAAO,KAAK,KAAA,EAAM;AAAA,MAClB,aAAa,IAAA,CAAK,aAAA;AAAA,MAClB,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,UAAA,CAAW;AAAA,KAC1C;AAAA;AACF,EAEA,6BACE,MAAA,EACS;AACT,IAAA,OAAO,CAAC,CAAC,MAAA,EAAQ,OAAA;AAAA;AACnB,EAEA,UAAA,GAAqB;AACnB,IAAA,OAAO,gCAAA;AAAA;AACT,EAEA,mBAAA,GAAsB;AACpB,IAAA,OAAO;AAAA,MACL,QAAA,EAAU;AAAA,QACR,SAAA,EAAW,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAA;AAAA,QACjC,WAAA,EAAa;AAAA,OACf;AAAA,MACA,SAAA,EAAW;AAAA,QACT,QAAA,EAAU,KAAK,MAAA,EAAO;AAAA,QACtB,YAAA,EAAc,IAAA;AAAA,QACd,SAAA,EAAW,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAA;AAAA,QACjC,MAAA,EAAQ,IAAA;AAAA,QACR,GAAG,KAAK,iBAAA;AAAkB;AAC5B,KACF;AAAA;AACF,EAEA,kCACE,iBAAA,EACA;AACA,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,iCAAA,CAAkC,iBAAiB,CAAA;AAAA,MAC5D,cAAA,EAAgB,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAA;AAAA,MAEtC,GAAG,KAAK,iBAAA;AAAkB,KAC5B;AAAA;AACF,EAEA,4BAAA,CAA6B;AAAA,IAC3B,mBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qBAAA;AAAA,IACA,GAAG;AAAA,GACL,EAA4B;AAC1B,IAAA,MAAM;AAAA,MACJ,qBAAA,EAAuB,CAAA;AAAA,MACvB,uBAAA,EAAyB,CAAA;AAAA,MACzB,mBAAA,EAAqB,CAAA;AAAA,MACrB,GAAG;AAAA,KACL,GAAI,KAAA,CAAM,4BAAA,CAA6B,iBAAiB,CAAA;AACxD,IAAA,OAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,cAAA,EAAgB,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAA;AAAA,MACtC,GAAG,KAAK,iBAAA;AAAkB,KAC5B;AAAA;AACF,EAmCA,8BACE,iBAAA,EACyB;AACzB,IAAA,MAAM,EAAE,SAAA,EAAU,GAAI,IAAA,CAAK,iBAAA,EAAkB;AAC7C,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,6BAAA,CAA8B,iBAAiB,CAAA;AAAA,MACxD,QAAA,EAAU,SAAA;AAAA,MACV,cAAA,EAAgB,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,OAAA;AAAA,MACtC,GAAG,KAAK,iBAAA;AAAkB,KAC5B;AAAA;AACF,EAyBA,0BAA0B,UAAA,EAAqC;AAC7D,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,yBAAA,CAA0B,UAAU,CAAA;AAAA,MAC7C,OAAA,EAAS,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE;AAAA,KACrC;AAAA;AACF,EAgFA,4BACE,iBAAA,EACyB;AACzB,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,2BAAA,CAA4B,iBAAiB,CAAA;AAAA,MACtD,GAAI,UAAU,IAAA,CAAK,SAAS,EAAE,YAAA,GAC1B,EAAE,WAAA,EAAa,IAAA,EAAK,GACpB,IAAA;AAAA,MACJ,GAAG,KAAK,iBAAA;AAAkB,KAC5B;AAAA;AACF,EAEA,8BACE,iBAAA,EACyB;AACzB,IAAA,MAAM,MAAA,GAAS,KAAK,MAAA,EAAO;AAC3B,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAK,GAAI,KAAK,iBAAA,EAAkB;AACnD,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,6BAAA,CAA8B,iBAAiB,CAAA;AAAA,MACxD,YAAA,EAAc,IAAA;AAAA,MACd,QAAA,EAAU,MAAA;AAAA,MACV,MAAA;AAAA,MACA,GAAG;AAAA,KACL;AAAA;AACF,EAEA,MAAM,eAAA,CAAgB,MAAA,EAAgB,OAAA,EAAiC;AACrE,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA;AACpC,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA;AAEX,IAAA,IACE,SAAA,CAAU,KAAK,SAAS,CAAA,CAAE,cACzB,MAAM,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAA;AAEtC,MAAA,MAAM,WAAA;AAAA,QACJ,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,kBAAA;AAAA,UACR,OAAO,IAAA,CAAK,aAAA;AAAA,UACZ;AAAA,SACD;AAAA,OACH;AAAA;AACJ,EAEA,MAAM,gBAAA,CAAiB,MAAA,EAAgB,OAAA,EAAiC;AACtE,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA;AACpC,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAK,GAAI,KAAK,iBAAA,EAAkB;AACnD,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA;AAEX,IAAA,IACE,SAAA,CAAU,KAAK,SAAS,CAAA,CAAE,cACzB,MAAM,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAA;AAEtC,MAAA,MAAM,WAAA;AAAA,QACJ,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,UAAA;AAAA,UACR,OAAO,IAAA,CAAK,aAAA;AAAA,UACZ,OAAA,EAAS,kCAAA;AAAA,UACT,OAAA;AAAA,UACA,GAAG;AAAA,SACJ;AAAA,OACH;AAAA;AACJ,EAEA,oBAAA,GAAsC;AACpC,IAAA,OAAO,IAAA;AAAA;AACT,EAeA,MAAM,gBAAA,CACJ,gBAAA,EACA,IAAA,EACkB;AAClB,IAAA,OAAO,MAAM,KAAA,CAAM,gBAAA,CAAiB,gBAAA,EAAkB,IAAI,CAAA;AAAA;AAE9D;;;;;;;;ACpWO,MAAM,aAAa,kBAAA,CAAwC;AAAA,EAA3D,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAA0B,EAAC,CAAA;AAAA;AAAA,EAE3B,MAAM,KAAK,IAAA,EAAY;AACrB,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAErB,IAAA,IAAA,CAAK,WAAW,IAAI,aAAA;AAAA,MAClB,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,SAAA;AAAA,MAC1B;AAAA,QACE,qBAAA,EAAuB,CAAC,IAAA,CAAK,UAAA,CAAW,iBAAA;AAAA,QACxC,wBAAA,EACE,IAAA,CAAK,UAAA,CAAW,kBAAA,KAAuB,MAAA;AAAA,QACzC,mBAAA,EAAqB,CAAC,CAAC,IAAA,CAAK,UAAA,CAAW,mBAAA;AAAA,QACvC,gBAAA,EAAkB,CAAC,CAAC,IAAA,CAAK,UAAA,CAAW,oBAAA;AAAA,QACpC,mBAAA,EAAqB,CAAC,CAAC,IAAA,CAAK,UAAA,CAAW,sBAAA;AAAA,QACvC,gBAAA,EAAkB,KAAK,UAAA,CAAW,aAAA;AAAA,QAClC,SAAA,EAAW,KAAK,UAAA,CAAW,kBAAA;AAAA,QAC3B,cAAA,EAAgB,CAAC,CAAC,IAAA,CAAK,UAAA,CAAW,cAAA;AAAA,QAClC,UAAA,EAAY,KAAK,UAAA,CAAW,cAAA;AAAA,QAC5B,wBAAA,EAA0B,IAAA,CAAK,UAAA,CAAW,kBAAA,KAAuB,KAAA;AAAA,QACjE,WAAA,EAAa,IAAA,CAAK,UAAA,CAAW,WAAA,KAAgB,IAAA;AAAA,QAC7C,YAAA,EAAc,CAAC,IAAA,CAAK,UAAA,CAAW,eAAA;AAAA,QAC/B,eAAA,EAAiB,CAAC,IAAA,CAAK,UAAA,CAAW;AAAA,OACpC;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,cAAA,EAAgB,MAAM;AACrC,MAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,KACjB,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,EAAK;AACnB,IAAA,IAAI,IAAA,CAAK,WAAW,QAAA,EAAU;AAC5B,MAAA,MAAM,KAAA,GAAQG,eAAA,CAAc,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA;AAIpD,MAAA,MAAM,QAAA,GAAW,MAAM,CAAC,CAAA;AACxB,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAA,CAAK,QAAA,CAAS,MAAM,KAAA,GAAQ;AAAA,UAC1B,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,QAAA,EAAU,OAAA,EAAS,QAAA,CAAS,IAAA;AAAK,SAC1D;AACA,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,KAAM,CAAA,KAAM,GAAG,CAAA;AACpE,QAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,UAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAG,IAAI,CAAA,KAAM;AAClC,YAAA,IAAA,CAAK,QAAA,CAAS,kBAAA;AAAA,cACZ,EAAE,GAAG,IAAA,EAAM,OAAA,EAAS,KAAK,IAAA,EAAK;AAAA,cAC9B,QAAA,CAAS,KAAA;AAAA,cACT,OAAO,CAAC;AAAA,aACV;AAAA,WACD,CAAA;AAAA;AACH;AACF;AACF;AACF,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,IACE,IAAA,CAAK,WAAW,QAAA,IAChB,IAAA,CAAK,WAAW,QAAA,IAChB,IAAA,CAAK,WAAW,gBAAA,EAChB;AACA,MAAA,OAAO,IAAA;AAAA,KACT,MAAA,IACE,IAAA,CAAK,UAAA,CAAW,QAAA,IAChB,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA,CAAE,MAAA,IAAU,CAAA,EACnD;AACA,MAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,kBAAA;AAAA,QAC1C,KAAK,IAAA,CAAK;AAAA,OACZ;AACA,MAAA,OAAO,KAAA;AAAA,eACE,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,cAAc,GAAA,EAAK;AACtD,MAAA,MAAM,cAAkC,MAAA,CAAO,OAAA;AAAA,QAC7CA,eAAA,CAAc,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,SAAS,IAAI;AAAA,OAIlD,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAC,MAAA,CAAO,GAAG,CAAA,EAAG,KAAK,CAAC,CAAA;AAE5C,MAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAA,CAAK,QAAA,CAAS,MAAM,eAAA,CAAgB,MAAA,EAAQ,CAAA,CAAE,CAAC,CAAA;AAEpE,MAAA,MAAM,mBACJ,CAAC,IAAA,CAAK,UAAA,CAAW,QAAA,IACjB,CAAC,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,SAC3B,WAAA,CAAY,KAAA,CAAM,CAAC,CAAC,MAAA,EAAQ,SAAS,CAAA,KAAM;AACzC,QAAA,MAAM,cAAA,GAAiB,QAAA,EAAU,GAAA,CAAI,MAAM,CAAA;AAC3C,QAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,UAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,sBAAA;AAAA,YAC1C,KAAK,IAAA,CAAK,SAAA;AAAA,YACV;AAAA,WACF;AAAA;AAEF,QAAA,OAAO,cAAA;AAAA,OACR,CAAA;AACH,MAAA,OAAO,gBAAA;AAAA;AAET,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAa,QAAA,CACX,SAAA,EACA,QAAA,EAGkB;AAClB,IAAA,OAAO,IAAA;AAAA;AACT,EAEO,mBAAmB,GAAA,EAAa;AACrC,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,YAAA,GAAeA,eAAA,CAAc,GAAA,IAAO,EAAE,EAAE,CAAC,CAAA;AAE/C,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,IAAA,CAAK,QAAA,CAAS,MAAM,KAAA,GAAQ;AAAA,UAC1B,CAAC,YAAA,CAAa,KAAK,GAAG;AAAA,YACpB,GAAG,YAAA;AAAA,YACH,SAAS,YAAA,CAAa;AAAA;AACxB,SACF;AAAA,OACF,MAAO;AACL,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA;AAC/B;AACF;AACF,EAEA,MAAa,gBAAA,GAAkC;AAC7C,IAAA,MAAM,KAAK,QAAA,CAAS,gBAAA;AAAA,MAClB,MAAA,CAAO,OAAO,IAAA,CAAK,QAAA,CAAS,MAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAE;AAAA,KAC9C;AAAA;AAEJ;;AC5IO,SAAS,KAAA,CAAM,MAAA,EAAiB,aAAA,GAAgB,CAAA,EAAG;AACxD,EAAA,MAAM,YAAA,GAAe,OAAO,MAAM,CAAA;AAClC,EAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAAG,IAAA,OAAO,aAAA;AAC1D,EAAA,OAAO,YAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA,IAAA,uBAAA;AAQO,MAAM,iBAAA,CAAkB;AAAA,EAM7B,YAAoB,IAAA,EAAY;AAAZ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AALpB,IAAAH,eAAA,CAAA,IAAA,EAAA,OAAA,EAAgC;AAAA,MAC9B,gBAAA,EAAkB,IAAA;AAAA,MAClB,kBAAA,EAAoB;AAAA,KACtB,CAAA;AAOA,IAAAO,cAAA,CAAA,IAAA,EAAA,uBAAA,EAA0B,MAAM;AAAA,KAAC,CAAA;AAJ/B,IAAA,cAAA,CAAe,IAAA,EAAM,EAAE,KAAA,EAAO,UAAA,EAAY,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA;AACZ,EAGQ,IAAA,GAAO;AACb,IAAAC,cAAA,CAAA,IAAA,EAAK,uBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,KAAK,IAAA,CAAK,UAAA;AAE7B,IAAA,MAAM,EAAA,GAAK,UAAA,CAAW,EAAA,CAAG,iBAAA,EAAmB,CAAC,SAAA,KAAc;AACzD,MAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAM,GAAI,KAAK,IAAA,CAAK,UAAA;AAChD,MAAA,MAAM,WAAA,GAAc,KAAA,GAAQ,MAAA,CAAO,WAAW,MAAM,GAAA,GAAM,KAAA;AAC1D,MAAA,MAAM,aAAa,KAAA,GAAQ,MAAA,CAAO,WAAW,CAAA,KAAM,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA;AAEnE,MAAA,WAAA,CAAY,MAAM;AAChB,QAAA,IAAA,CAAK,KAAA,CAAM,gBAAA,GACT,SAAA,CAAU,MAAA,KAAW,CAAA,IACrB,CAAC,EAAE,KAAA,GACC,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,YAAA,EAAa,EAAG,WAAA,CAAY,CAAC,CAAA,KAAM,CAAC,CAAA,IAC5D,WAAA,GACA,UAAU,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,YAAA,EAAa,EAAG,WAAA,CAAY,CAAC,MAAM,CAAC,CAAA,CAAA;AAClE,QAAA,IAAA,CAAK,KAAA,CAAM,qBACT,SAAA,CAAU,MAAA,KAAW,KACrB,CAAC,EAAE,QACC,SAAA,CAAU,IAAA;AAAA,UACR,CAAC,CAAA,KACC,CAAA,CAAE,YAAA,EAAa,EAAG,WAAA,CAAY,CAAC,CAAA,KAC/B,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS;AAAA,SAClC,IAAK,aACL,SAAA,CAAU,IAAA;AAAA,UACR,CAAC,CAAA,KACC,CAAA,CAAE,YAAA,EAAa,EAAG,WAAA,CAAY,CAAC,CAAA,KAC/B,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS;AAAA,SAClC,CAAA;AAAA,OACP,CAAA;AAAA,KACF,CAAA;AACD,IAAAC,cAAA,CAAA,IAAA,EAAK,yBAA0B,MAAM;AACnC,MAAA,EAAA,EAAG;AAAA,KACL,CAAA;AAAA;AACF,EAEA,IAAI,aAAA,GAAgB;AAClB,IAAA,MAAM,EAAE,SAAA,EAAW,eAAA,EAAiB,eAAe,iBAAA,EAAkB,GACnE,KAAK,IAAA,CAAK,UAAA;AACZ,IAAA,OACE,CAAC,SAAA,IAAa,CAAC,eAAA,IAAmB,CAAC,iBAAiB,CAAC,iBAAA;AAAA;AAEzD,EACA,IAAI,aAAA,GAAgB;AAClB,IAAA,MAAM,EAAE,SAAA,EAAW,eAAA,EAAiB,eAAe,iBAAA,EAAkB,GACnE,KAAK,IAAA,CAAK,UAAA;AACZ,IAAA,OACE,CAAC,SAAA,IAAa,CAAC,eAAA,IAAmB,CAAC,iBAAiB,CAAC,iBAAA;AAAA;AAEzD,EACA,IAAI,eAAA,GAAkB;AACpB,IAAA,MAAM,EAAE,SAAA,EAAW,eAAA,EAAiB,eAAA,EAAgB,GAClD,KAAK,IAAA,CAAK,UAAA;AACZ,IAAA,OAAO,CAAC,SAAA,IAAa,CAAC,eAAA,IAAmB,CAAC,eAAA;AAAA;AAC5C,EACA,IAAI,gBAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,gBAAA,IAAoB,IAAA,CAAK,KAAK,KAAA,CAAM,SAAA;AAAA;AACxD,EACA,IAAI,kBAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,kBAAA,IAAsB,IAAA,CAAK,KAAK,KAAA,CAAM,SAAA;AAAA;AAC1D,EACA,IAAI,aAAA,GAAgB;AAClB,IAAA,OAAO,IAAA,CAAK,KAAK,KAAA,CAAM,SAAA;AAAA;AACzB,EACA,IAAI,gBAAA,GAAmB;AACrB,IAAA,OACE,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAA,CAAS,WAAW,EAAE,IAAA,KAAS,CAAA,IACpD,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA;AAEpB,EAEA,MAAM,MAAA,GAAS;AACb,IAAA,IAAA,CAAK,KAAK,MAAA,EAAO;AAAA;AACnB,EAEA,MAAM,QAAA,GAAW;AACf,IAAA,IAAA,CAAK,KAAK,QAAA,EAAS;AAAA;AACrB,EAEA,MAAM,MAAA,GAAS;AACb,IAAA,MAAM,IAAA,CAAK,KAAK,MAAA,EAAO;AAAA;AACzB,EAEA,MAAM,kBAAA,GAAqB;AACzB,IAAA,IAAA,CAAK,KAAK,UAAA,EAAW;AAAA;AAEzB;AAxFE,uBAAA,GAAA,IAAA,OAAA,EAAA;;AChBK,MAAM,iBAAiB,IAAA,CAAK;AAAA,EACjC,QAAA,GAAW;AACT,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA;AAAA;AAExC;;ACHO,MAAM,uBAAuB,IAAA,CAAK;AAAA,EACvC,WAAA,CACS,IAAA,EACA,QAAA,EACA,MAAA,EACA,gBAAA,EACP;AACA,IAAA,KAAA,CAAM,EAAE,OAAA,EAAS,YAAA,EAAc,CAAA;AALxB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,gBAAA,GAAA,gBAAA;AAAA;AAGT,EAEA,IAAW,eAAA,GAAkB;AAC3B,IAAA,OAAO,KAAK,gBAAA,KAAqB,MAAA;AAAA;AAErC;;ACXO,MAAM,mBAAmB,IAAA,CAAsB;AAAA,EACpD,WAAA,CACS,MACP,KAAA,EACA;AACA,IAAA,KAAA,CAAM,KAAK,CAAA;AAHJ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AAIT,EAEA,IAAA,GAAO;AACL,IAAA,IAAA,CAAK,IAAA,CAAK,UAAU,UAAU,CAAA;AAAA;AAChC,EAEA,QAAA,GAAW;AACT,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA;AAAA;AAExC;;;;;;;;ACfO,MAAM,WAAA,CAAY;AAAA,EAAlB,WAAA,GAAA;AACL,IAAAT,eAAA,CAAA,IAAA,EAAQ,UAA8D,EAAC,CAAA;AAAA;AAAA,EAE/D,SAAS,KAAA,EAAe;AAC9B,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AAAG,MAAA,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,GAAI,EAAC;AAC/C,IAAA,OAAO,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA;AAC1B,EAEA,KAAA,GAAQ;AACN,IAAA,IAAA,CAAK,SAAS,EAAC;AAAA;AACjB,EAEA,WAAW,KAAA,EAAe;AACxB,IAAA,OAAO,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA;AAC1B,EAEA,GAAA,CAAI,OAAe,EAAA,EAAqB;AACtC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAE,EAAE,CAAA;AAAA;AAChC,EAEA,GAAA,CAAI,KAAA,EAAe,EAAA,EAAqB,KAAA,EAAmB;AACzD,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAE,EAAE,CAAA,GAAI,KAAA;AAAA;AAC7B,EAEA,IAAA,CAAK,QAAgB,MAAA,EAAgB;AACnC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AACjC,IAAA,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA,CAAK,SAAS,MAAM,CAAA;AAC1C,IAAA,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA;AAAA;AACxB,EAEA,SAAS,KAAA,EAAe;AACtB,IAAA,MAAA,CAAO,KAAK,IAAA,CAAK,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACtC,MAAA,IAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IAAK,KAAA,EAAO;AAC/B,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA;AACvC,KACD,CAAA;AAAA;AAEL;;;;;;;;ACzBO,MAAM,mBAAmB,kBAAA,CAG9B;AAAA,EAGA,WAAA,CAAY,EAAE,KAAA,EAAO,GAAG,YAAW,EAA8B;AAC/D,IAAA,KAAA,CAAM;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAA,EAAY;AAAA,QACV,GAAG,UAAA,CAAW;AAAA,OAChB;AAAA,MACA,OAAO,EAAE,UAAA,EAAY,KAAA,EAAO,SAAA,EAAW,WAAW,cAAA;AAAe,KAClE,CAAA;AATH,IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAY,KAAA,CAAA;AAWV,IAAA,cAAA,CAAe,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAY,CAAA;AAAA;AAChD,EAEA,SAAA,CACE,WACA,OAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3C,EAEU,QAAA,GAAoB;AAC5B,IAAA,OACE,IAAA,CAAK,UAAS,CAAE,SAAA,KAAc,MAAM,IAAA,CAAK,QAAA,GAAW,UAAA,KAAe,EAAA;AAAA;AAEvE,EAEA,MAAa,uBAAuB,KAAA,EAAe;AACjD,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,IAAA,IAAI;AACF,MAAA,IACE,iBAAA,CAAkB,IAAI,CAAA,IACtBa,cAAA,CAAa,KAAA,EAAO,KAAK,QAAA,EAAS,CAAE,SAAS,CAAA,IAC7C,KAAA,KAAU,EAAA;AAEV,QAAA;AACF,MAAA,IAAI,KAAA,KAAU,IAAA,CAAK,QAAA,EAAS,CAAE,SAAA,EAAW;AACvC,QAAA,MAAM,SAAS,MAAM,IAAA;AAAA,UAGnB,KAAK,IAAA,CAAK,SAAA;AAAA,UACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,YAC/B,MAAA,EAAQ,iBAAA;AAAA,YACR,OAAA,EAAS;AAAA,WACV,CAAA;AAAA,UACD;AAAA,YACE,QAAA,EAAU;AAAA,cACR,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,cAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,SAAA;AAAA,cAChC,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,cACvB,KAAA,EAAO,KAAK,SAAA,CAAU,EAAA;AAAA,cACtB,KAAA,EAAO,KAAK,UAAA,CAAW,KAAA;AAAA,cACvB,KAAA,EAAO,KAAK,UAAA,CAAW,KAAA;AAAA,cACvB;AAAA,aACF;AAAA,YACA,iBAAA,EAAmB;AAAA;AACrB,SACF;AAEA,QAAA,IAAI,MAAA,EAAQ,MAAM,SAAA,EAAW;AAC3B,UAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,QAAA,CAAS;AAAA,YACzC,UAAA,EAAY,MAAA,EAAQ,IAAA,EAAM,SAAA,CAAU,KAAA;AAAA,YACpC,SAAA,EAAW,MAAA,EAAQ,IAAA,EAAM,SAAA,CAAU;AAAA,WACpC,CAAA;AACD,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,IAAA,CAAK,UAAU,UAAU,CAAA;AAAA;AAE3B,UAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,SAClB,MAAO;AACL,UAAA,IAAA,CAAK,SAAS,EAAE,SAAA,EAAW,EAAA,EAAI,UAAA,EAAY,IAAI,CAAA;AAC/C,UAAA,IAAA,CAAK,SAAS,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,SAAS,EAAE,iBAAiB,CAAA;AAAA;AAChE;AACF,KACF,SAAE;AACA,MAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA;AACnB;AACF,EAEA,MAAa,2BAA2B,KAAA,EAAe;AACrD,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAEjB,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,MAAM,IAAA;AAAA,QACnB,KAAK,IAAA,CAAK,SAAA;AAAA,QACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,UAC/B,OAAA,EAAS,6BAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,QACD,EAAE,QAAA,EAAU,EAAE,IAAI,KAAA,EAAM,EAAG,mBAAmB,WAAA;AAAY,OAC5D;AAEA,MAAA,IAAI,MAAA,EAAQ,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM;AAC3B,QAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,QAAA,CAAS;AAAA,UACzC,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,UAClC,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC;AAAA,SAClC,CAAA;AACD,QAAA,IAAA,CAAK,KAAK,SAAA,CAAU,kBAAA,CAAmB,MAAA,CAAO,IAAA,CAAK,IAAI,IAAI,CAAA;AAE3D,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,IAAA,CAAK,UAAU,eAAe,CAAA;AAC9B,UAAA,IAAA,CAAK,UAAU,UAAU,CAAA;AAAA;AAC3B;AACF,KACF,SAAE;AACA,MAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA;AACnB;AACF,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,IAAI,IAAA,CAAK,MAAM,UAAA,CAAW,YAAA;AAAc,MAAA,OAAO,KAAA;AAE/C,IAAA,MAAM,UACJ,CAAC,CAAC,KAAK,QAAA,EAAS,CAAE,cAClB,CAAC,IAAA,CAAK,UAAA,CAAW,QAAA,IACjB,KAAK,UAAA,CAAW,WAAA,IAChB,KAAK,UAAA,CAAW,gBAAA,IAChB,KAAK,UAAA,CAAW,QAAA;AAElB,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,kBAAA;AAAA,QAC1C,KAAK,IAAA,CAAK;AAAA,OACZ;AACA,MAAA,OAAO,KAAA;AAAA;AAGT,IAAA,OAAO,IAAA;AAAA;AACT,EACO,QAAA,CAAS,UAAe,OAAA,EAA2B;AACxD,IAAA,IACE,CAAC,OAAA,EAAS,KAAA,KACT,iBAAA,CAAkB,IAAI,KAAKA,cAAA,CAAa,QAAA,EAAU,IAAA,CAAK,QAAA,EAAU,CAAA,CAAA;AAElE,MAAA,OAAO,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAE7B,IAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,QAAA;AACnB,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,IAAA;AAErC,IAAA,IAAI,OAAA,EAAS,gBAAgB,KAAA,EAAO;AAClC,MAAA,IAAA,CAAK,wBAAA,GAA2B,QAAA;AAChC,MAAA,OAAO,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA;AAG7B,IAAA,OAAO,KAAK,WAAA,CAAY,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC9C,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,IAAI,OAAA,EAAS,gBAAgB,KAAA,EAAO;AAClC,UAAA,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,kBAAA,GAAqB,IAAA;AAAA;AAEjD,QAAA,OAAO,IAAA;AAAA;AAET,MAAA,OAAO,OAAA,CAAQ,QAAQ,KAAK,CAAA;AAAA,KAC7B,CAAA;AAAA;AACH,EAEU,gCACR,KAAA,EACyB;AACzB,IAAA,MAAM,YAAA,GAAe,KAAK,UAAA,CAAW,iBAAA;AAErC,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,+BAAA,CAAgC,KAAK,CAAA;AAAA,MAC9C,QAAA,EAAU;AAAA,QACR,KAAA,EAAO,YAAA,GACH,CAAC,IAAA,CAAK,UAAS,CAAE,UAAA,EAAa,IAAA,CAAK,QAAA,EAAS,CAAE,SAAS,CAAA,GACvD,IAAA,CAAK,UAAS,CAAE;AAAA;AACtB,KACF;AAAA;AAEJ;;AC1LO,MAAM,eAAe,kBAAA,CAA0C;AAAC;;;;;;;;AC2CvE,eAAe,YAAA,CAAgB,IAAa,EAAA,EAAwB;AAClE,EAAA,OAAO,EAAA,EAAG;AACZ;AAEA,eAAe,aAAA,CAAc,IAAmB,EAAA,EAA2B;AACzE,EAAA,UAAA,CAAW,IAAI,EAAE,CAAA;AAEjB,EAAA,OAAO,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAC7B;AAEO,MAAM,aAAa,KAAA,CAA4C;AAAA,EA0FpE,YAAY,EAAE,UAAA,EAAY,KAAA,EAAO,GAAG,YAAW,EAAwB;AACrE,IAAA,KAAA,CAAM;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAA,EAAY;AAAA,QACV,WAAA,EAAa,KAAA,CAAM,UAAA,CAAW,OAAA,EAAS,CAAC,CAAA;AAAA,QACxC,OAAA,EAAS,WAAW,UAAA,IAAc,QAAA;AAAA,QAClC,KAAA,EAAO,KAAA;AAAA,QACP,KAAA,EAAO,KAAA,CAAM,UAAA,CAAW,KAAA,EAAO,CAAC,CAAA;AAAA,QAChC,QAAA,EAAU,KAAA;AAAA,UACR,UAAA,CAAW,aAAA;AAAA,UACX,UAAA,CAAW,QAAQ,CAAA,GAAI;AAAA,SACzB;AAAA,QAEA,kBAAA,sBAAwB,GAAA,EAAI;AAAA,QAC5B,mBAAA,sBAAyB,GAAA,EAAI;AAAA,QAC7B,GAAG,UAAA;AAAA,QACH,iBAAA,EAAmB,MAAA,CAAO,UAAA,CAAW,iBAAiB,CAAA,KAAM;AAAA;AAC9D,KACD,CAAA;AA3GH,IAAAb,eAAA,CAAA,IAAA,EAAQ,OAAA,EAAQ,CAAA,CAAA;AAEhB,IAAAA,eAAA,CAAA,IAAA,EAAU,OAAA,EAAQ,IAAI,WAAA,EAAY,CAAA;AAClC,IAAAA,eAAA,CAAA,IAAA,EAAU,OAAA,EAAQ,IAAI,KAAA,EAAM,CAAA;AAC5B,IAAAA,eAAA,CAAA,IAAA,EAAU,gBAA+B,EAAC,CAAA;AAC1C,IAAAA,eAAA,CAAA,IAAA,EAAU,eAAA,CAAA;AACV,IAAAA,eAAA,CAAA,IAAA,EAAU,mBAAA,CAAA;AAEV,IAAAA,eAAA,CAAA,IAAA,EAAmB,eAAA,sBAAoB,GAAA,EAAqB,CAAA;AAC5D,IAAAA,eAAA,CAAA,IAAA,EAAmB,iBAAA,sBAAsB,GAAA,EAAY,CAAA;AACrD,IAAAA,eAAA,CAAA,IAAA,EAAmB,iBAAA,sBAAsB,GAAA,EAAqB,CAAA;AAC9D,IAAAA,eAAA,CAAA,IAAA,EAAmB,oBAAA,sBAAyB,GAAA,EAAY,CAAA;AAExD,IAAAA,eAAA,CAAA,IAAA,EAAU,sBAAA,EAAgD,IAAA,CAAA;AAC1D,IAAAA,eAAA,CAAA,IAAA,EAAmB,mBAAA,CAAA;AACnB,IAAAA,eAAA,CAAA,IAAA,EAAmB,iBAAA,EAAmC,IAAI,eAAA,CAAgB;AAAA,MACxE,YAAA,EAAc,IAAA;AAAA,MACd,cAAA,EAAgB,IAAA;AAAA,MAChB,mBAAA,EAAqB;AAAA,KACtB,CAAA,CAAA;AA0FC,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,IAAI,CAAA;AAEnD,IAAA,MAAM,WAAA,GAAc,aAAa,KAAK,CAAA;AACtC,IAAA,IAAA,CAAK,gBAAgB,WAAA,CAClB,GAAA;AAAA,MAAI,CAAC,OAAA,KACJ,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,GAAA,GAC1B,YAAA,CAAa,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,GAAG,CAAA,GAC9C;AAAA,KACN,CACC,OAAO,OAAO,CAAA;AACjB,IAAA,IAAA,CAAK,oBAAoB,WAAA,CAAY,GAAA;AAAA,MACnC,CAAC,EAAE,UAAA,EAAY,YAAAc,WAAAA,EAAY,GAAG,SAAQ,KAAM;AAC1C,QAAA,OAAO,EAAE,GAAG,OAAA,EAAS,UAAA,EAAYX,eAAA,CAAcW,WAAU,CAAA,EAAE;AAAA;AAC7D,KACF;AAEA,IAAA,IAAA,CAAK,KAAA,CAAM,SAAS,YAAA,CAAa,UAAA,CAAW,WAAW,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACtE,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,OAAO,CAAA,CAAE,QAAA;AAAA,MACT,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,KAAA,EAAO,CAAA,CAAE,QAAA,IAAY,IAAA,CAAK,mBAAmB,CAAC,CAAA;AAAA,MAC9C,MAAA,EAAQ,KAAA;AAAA,MACR,QAAA,EAAU,KAAA;AAAA,MACV,SAAS,CAAA,CAAE;AAAA,KACb,CAAE,CAAA;AACF,IAAA,IAAA,CAAK,MAAM,SAAA,GAAY,KAAA;AACvB,IAAA,IAAA,CAAK,MAAM,WAAA,GAAc,KAAA;AAEzB,IAAA,IAAA,CAAK,UAAA,CAAW,EAAA,CAAG,aAAA,EAAe,CAAC,GAAA,KAAQ;AACzC,MAAA,IAAA,CAAK,WAAY,GAAA,CAAI,QAAA,CAAS,YAAY,CAAA,CAAG,IAAmB,KAAK,CAAA;AAAA,KACtE,CAAA;AAAA;AACH,EAvHA,IAAW,UAAA,GAAa;AACtB,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA;AACd,EAEA,IAAW,WAAA,GAAc;AACvB,IAAA,OAAO,KAAK,UAAA,CAAW,WAAA;AAAA;AACzB,EAEA,IAAW,mBAAA,GAAsB;AAC/B,IAAA,OAAO,IAAA,CAAK,oBAAA;AAAA;AACd;AAAA;AAAA;AAAA,EAKA,IAAW,UAAA,GAAa;AACtB,IAAA,OAAA,CACE,KAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAClB,EAAA,CAAG,EAAE,CAAA,EACJ,KAAA,CAAM,IAAA,CAAK,CAAC,MAAM,CAAA,YAAa,QAAQ,CAAA,EAC3C,QAAA,GAAW,UAAA,CAAW,KAAA;AAAA;AAC1B,EAEA,IAAW,gBAAA,GAAmB;AAC5B,IAAA,OAAO,IAAA,CAAK,iBAAA;AAAA;AACd,EAEA,IAAW,MAAA,GAAS;AAClB,IAAA,OAAO,KAAK,KAAA,CAAM,MAAA;AAAA;AACpB,EAEA,IAAW,OAAA,GAAU;AACnB,IAAA,OAAO,KAAK,UAAA,CAAW,KAAA;AAAA;AACzB,EAEA,IAAW,MAAA,GAAS;AAClB,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,MAAA;AAAA;AACxC,EAEA,IAAW,QAAA,GAAW;AACpB,IAAA,OAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,GAAA,CAC1C,IAAA,CAAK,UAAA,CAAW,WAAA,GAAc,CAAA,IAAK,IAAA,CAAK,UAAA,CAAW,QAAA,GACpD,CAAA;AAAA;AACN,EAEA,IAAW,SAAA,GAAY;AACrB,IAAA,OAAO,KAAK,UAAA,CAAW,KAAA;AAAA;AACzB,EAEA,IAAW,QAAA,GAAW;AACpB,IAAA,OAAO,KAAK,UAAA,CAAW,QAAA;AAAA;AACzB,EAEA,IAAW,eAAA,GAAkB;AAC3B,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,eAAA,CAAgB,SAAS,WAAW,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,GAAA;AAAA,MAAI,CAAC,CAAA,KACnE,CAAA,CAAE,QAAA;AAAS,KACb;AAAA;AACF,EAEA,IAAW,aAAA,GAAgB;AACzB,IAAA,OAAO,IAAA,CAAK,gBAAgB,GAAA,CAAI,CAAC,YAAY,IAAA,CAAK,MAAA,CAAO,OAAO,CAAE,CAAA;AAAA;AACpE,EAEA,IAAW,UAAA,GAAa;AACtB,IAAA,MAAM,QAAA,GAAW,KAAK,UAAA,CAAW,QAAA;AACjC,IAAA,OAAO,OAAO,IAAA,CAAK,UAAA,CAAW,WAAA,GAAc,CAAA,IAAK,UAAU,CAAC,CAAA;AAAA;AAC9D,EAuDQ,mBAAmB,CAAA,EAAwB;AACjD,IAAA,IACE,CAAA,CAAE,OAAA,KAAY,GAAA,IACb,CAAA,CAAE,OAAA,KAAY,GAAA,IAAO,CAAA,CAAE,QAAA,KAAa,GAAA,IACpC,CAAA,CAAE,OAAA,KAAY,GAAA,IAAO,EAAE,QAAA,EACxB;AACA,MAAA,OAAO,OAAA;AAAA;AAGT,IAAA,OAAO,OAAA;AAAA;AACT,EAEU,2BAA2B,SAAA,EAAuB;AAC1D,IAAA,QAAQ,SAAA;AAAW,MACjB,KAAK,SAAA;AACH,QAAA,OAAO,KAAA;AAAA,MACT,KAAK,kBAAA;AACH,QAAA,OAAO,MAAA;AAAA,MACT,KAAK,YAAA;AACH,QAAA,OAAO,QAAA;AAAA,MACT,KAAK,UAAA;AACH,QAAA,OAAO,MAAA;AAAA;AACX;AACF,EAEU,eAAA,CACR,WACA,MAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,gBAAgB,SAAA,EAAW;AAAA,MACtC,UAAA,EAAY,IAAA,CAAK,0BAAA,CAA2B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA,KACJ,CAAA;AAAA;AACH;AAAA;AAAA;AAAA,EAKA,MAAa,MAAA,GAA2B;AACtC,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,SAAS,CAAA,EAAG;AAI/C,QAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAA,EAAW,EAAE,CAAA;AAAA,OAC1C,MAAO;AACL,QAAA,MAAM,GAAA,GAAM,KAAK,SAAA,CAA8B;AAAA,UAC7C,QAAA,EAAU;AAAA,YACR,UAAA,EAAY,KAAA;AAAA,YACZ,YAAA,EAAc,CAAA;AAAA,YACd,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,SAAS;AAAA;AACtD,SACD,CAAA;AAKD,QAAA,MAAM,WAAW,MAAM,GAAA;AACvB,QAAA,IAAI,QAAA,EAAU,MAAM,OAAA,EAAS;AAK3B,UAAA,MAAM,GAAA,GAAM,QAAA,CAAS,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AAE1C,UAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AAC1C,UAAA,IAAA,CAAK,eAAe,WAAA,CACjB,GAAA;AAAA,YAAI,CAAC,OAAA,KACJ,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,GAAA,GAC1B,YAAA,CAAa,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,GAAG,CAAA,GAC9C;AAAA,WACN,CACC,OAAO,OAAO,CAAA;AAAA,SACnB,MAAO;AAKL,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,CAAC,SAAA,CAAU,IAAA,CAAK,KAAK,SAAS,CAAA,CAAE,cAC5B,6CAAA,GACA;AAAA,WACN;AAAA;AAGF,QAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,qBAAA;AAAA,UAC1B,IAAA;AAAA,UACA,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,CAAC,GAAG,CAAA,MAAO;AAAA,YACpC,GAAG,CAAA;AAAA,YACH,GAAG,IAAA,CAAK,YAAA,CAAa,CAAC,EAAE,CAAC;AAAA,WAC3B,CAAE;AAAA,SACJ;AASA,QAAA,OAAO,OACL,IAAA,CAAK,yBAAA,CAA0B,SAAS,CAAA,GACpC,YAAA,GACA,eACJ,YAAY;AACZ,UAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,YAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,YAAA,IAAI,GAAA,EAAK;AACP,cAAA,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAQ,CAAA;AAAA;AAG/D,YAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAS,CAAA;AAEzD,YAAA,IAAI,CAAC,YAAA,IAAgB,CAAA,CAAE,MAAM,GAAA,GAAM,MAAM,OAAA,EAAS;AAChD,cAAA,CAAC,MAAM,UAAU,MAAA,EAAO;AACxB,cAAA,OAAO,KAAA;AAAA,aACT,MAAO;AACL,cAAA,OAAO,IAAA;AAAA;AACT,WACF,EAAG,CAAC,IAAA,CAAK,yBAAA,CAA0B,SAAS,CAAC,CAAA;AAAA,WAC5C,CAAC,CAAA;AAAA;AAGN,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEO,iBAAA,GAAoB;AACzB,IAAA,IAAA,CAAK,sBAAsB,KAAA,EAAM;AACjC,IAAA,IAAA,CAAK,oBAAA,GAAuB,IAAA;AAC5B,IAAA,IAAA,CAAK,OAAA,EAAQ;AAAA;AACf,EAEA,MAAa,aAAA,GAAgB;AAC3B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAEjB,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,MAAM,GAAA,GAAM,KAAK,SAAA,CAA8B;AAAA,QAC7C,QAAA,EAAU;AAAA,UACR,UAAA,EAAY,QAAA;AAAA,UACZ,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,YAAY;AAAA;AACzD,OACD,CAAA;AAMD,MAAA,MAAM,cAAc,CAAC,GAAG,IAAA,CAAK,eAAA,CAAgB,KAAK,IAAI,CAAA;AACtD,MAAA,MAAM,mBAAmB,IAAI,GAAA;AAAA,QAC3B,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,WAAW;AAAA,OAC3C;AAEA,MAAA,IAAA,CAAK,UAAA,CAAW,KAAK,KAAA,EAAM;AAC3B,MAAA,IAAA,CAAK,gBAAgB,cAAA,EAAe;AAEpC,MAAA,IACE,IAAA,CAAK,gBAAgB,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,IAC1C,IAAA,CAAK,WAAA,CAAY,iBAAiB,CAAA,EAClC;AAOA,QAAA,MAAM,GAAA;AACN,QAAA,MAAM,KAAK,mBAAA,EAAoB;AAAA;AAWjC,MAAA,CACE,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,CAAC,CAAA,IACzC,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,CAAA,GAAI,CAAC,CAAA,GAC5C,gBAAgB,IAAI,CAAA;AACvB,MAAA,CACE,KAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,CAAC,CAAA,IACzC,KAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,CAAA,GAAI,CAAC,KAC7C,IAAA,CAAK,eAAA,CAAgB,KAAK,aAAA,CAAc,CAAC,GACzC,cAAA,EAAe;AAUjB,MAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,MAAA,IAAI,GAAA,EAAK;AAIP,QAAA,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAQ,CAAA;AAAA;AAG/D,MAAA,IAAI,CAAA,CAAE,MAAM,GAAA,GAAM,IAAA,EAAM,OAAA,EAAS;AAI/B,QAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,WAAW,CAAA;AACtD,QAAA,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,WAAA,EAAa,gBAAgB,CAAA;AAC3D,QAAA,OAAO,KAAA;AAAA;AAGT,MAAA,OAAO,IAAA;AAAA,KACR,CAAA;AAAA;AACH;AAAA;AAAA;AAAA,EAKA,MAAa,WAAW,KAAA,EAA6C;AACnE,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAKlC,MAAA,IAAI,WAAc,KAAA,EAAO;AACvB,QAAA,KAAA,GAAQ,CAAC,GAAG,IAAA,CAAK,UAAA,CAAW,QAAA,CAAS,WAAW,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5D,UAAA,OAAO,EAAE,QAAA,EAAS;AAAA,SACnB,CAAA;AAAA,OACH,MAAO;AACL,QAAA,IAAA,CAAK,UAAA,CAAW,YAAA,CAAa,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA;AAGlD,MAAA,MAAM,eAAA,GAAkB,aAAa,KAAK,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAEhE,MAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,YAAY,CAAA,EAAG;AAIlD,QAAA,MAAM,IAAA,CAAK,gBAAgB,YAAA,EAAc;AAAA,UACvC,UAAA,EAAY,QAAA;AAAA,UACZ,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,OACH,MAAO;AACL,QAAA,IAAI,QAAA,GAAW,QAAA;AAMf,QAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC7B,UAAA,IAAI,IAAI,QAAA,EAAU;AAChB,YAAA,QAAA,GAAW,CAAA;AAAA;AACb,SACD,CAAA;AAED,QAAA,IAAA,CAAK,KAAA,CAAM,SAAS,QAAQ,CAAA;AAE5B,QAAA,MAAM,GAAA,GAAM,KAAK,SAAA,CAA8B;AAAA,UAC7C,QAAA,EAAU;AAAA,YACR,UAAA,EAAY,QAAA;AAAA,YACZ,KAAA,EAAO,eAAA;AAAA,YACP,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,YAAY;AAAA;AACzD,SACD,CAAA;AAMD,QAAA,MAAM,cAAc,CAAC,GAAG,IAAA,CAAK,eAAA,CAAgB,KAAK,IAAI,CAAA;AACtD,QAAA,MAAM,mBAAmB,IAAI,GAAA;AAAA,UAC3B,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,WAAW;AAAA,SAC3C;AAEA,QAAA,eAAA,CAAgB,OAAA;AAAA,UAAQ,CAAC,MACvB,IAAA,CAAK,UAAA,CAAW,KAAK,aAAA,CAAc,CAAC,EAAE,MAAA;AAAO,SAC/C;AACA,QAAA,KAAA,IAAS,CAAA,GAAI,UAAU,CAAA,GAAI,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAChE,UAAA,IAAA,CAAK,UAAA,CAAW,KAAK,aAAA,CAAc,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM;AACzD,YAAA,IAAI,aAAa,QAAA,EAAU;AACzB,cAAA,CAAA,CAAE,QAAA,EAAS,CAAE,UAAA,CAAW,KAAA,GAAQ,CAAA;AAAA;AAClC,WACD,CAAA;AAAA;AAEH,QAAA,IAAA,CAAK,gBAAgB,cAAA,EAAe;AAEpC,QAAA,IACE,IAAA,CAAK,gBAAgB,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,IAC1C,IAAA,CAAK,WAAA,CAAY,iBAAiB,CAAA,EAClC;AAOA,UAAA,MAAM,GAAA;AACN,UAAA,MAAM,KAAK,mBAAA,EAAoB;AAAA;AAWjC,QAAA,CACE,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,QAAQ,CAAA,IAChD,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,QAAA,GAAW,CAAC,CAAA,GACnD,gBAAgB,IAAI,CAAA;AACvB,QAAA,CACE,KAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,QAAQ,CAAA,IAChD,KAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,QAAA,GAAW,CAAC,KACpD,IAAA,CAAK,eAAA,CAAgB,KAAK,aAAA,CAAc,CAAC,GACzC,cAAA,EAAe;AASjB,QAAA,OAAO,OACL,IAAA,CAAK,yBAAA,CAA0B,YAAY,CAAA,GACvC,YAAA,GACA,eACJ,YAAY;AACZ,UAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,YAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,YAAA,IAAI,GAAA,EAAK;AAIP,cAAA,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAQ,CAAA;AAAA;AAG/D,YAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAS,CAAA;AAEzD,YAAA,IAAI,CAAC,YAAA,IAAgB,CAAA,CAAE,MAAM,GAAA,GAAM,MAAM,OAAA,EAAS;AAIhD,cAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,WAAW,CAAA;AACtD,cAAA,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,WAAA,EAAa,gBAAgB,CAAA;AAE3D,cAAA,OAAO,KAAA;AAAA;AAGT,YAAA,OAAO,IAAA;AAAA,WACT,EAAG,CAAC,IAAA,CAAK,yBAAA,CAA0B,YAAY,CAAC,CAAA;AAAA,WAC/C,CAAC,CAAA;AAAA;AAGN,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,MAAa,gBAAgB,SAAA,EAAyC;AACpE,IAAA,OAAO,KAAA,CAAM,gBAAgB,SAAS,CAAA;AAAA;AACxC,EAEA,MAAa,SAAA,CACX,SAAA,EACA,MAAA,EACkB;AAClB,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,MAAM,CAAA;AAAA,KAC1C,EAAG,QAAQ,KAAK,CAAA;AAAA;AAClB,EAEO,aAAA,GAAgB;AACrB,IAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAO,IAAA,CAAK,iBAAiB,CAAC,CAAA,CAAE,GAAA;AAAA,MAAI,CAAC,CAAA,KACrD,IAAA,CAAK,eAAA,CAAgB,KAAK,IAAA,CAAK,GAAA;AAAA,QAAI,CAAC,CAAA,KACjC,CAAA,CAAE,oBAAoB,CAAA,CAAE,EAAE,EAAe,QAAA;AAAS;AACrD,KACF;AAAA;AACF;AAAA;AAAA;AAAA,EAKO,UAAU,KAAA,EAAe;AAC9B,IAAA,OAAO,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AAC5B,EAEO,cAAA,GAAiB;AACtB,IAAA,OAAO,CAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKO,QAAA,CAAS,OAAe,KAAA,EAA6C;AAC1E,IAAA,OACE,IAAA,CAAK,eAAe,KAAA,EAAO,KAAK,KAChC,IAAA,CAAK,uBAAA,CAAwB,OAAO,KAAK,CAAA;AAAA;AAE7C,EAEO,qBAAA,CACL,OACA,KAAA,EAC6B;AAC7B,IAAA,IAAI,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,KAAK,CAAA,EAAG,IAAA;AAAA,UACrC,CAAC,CAAA,KAAO,CAAA,CAAyB,SAAA,CAAU,EAAA,KAAO;AAAA,SACpD;AAAA,OACF,MAAO;AACL,QAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,GAAA;AAAA,UACpC,CAAC,OAAA,KACC,OAAA,CAAQ,KAAA,CACL,IAAA;AAAA,YACC,CAAC,MACE,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA,EACvB,UAAU,EAAA,KAAO;AAAA,WACzB,EACE,QAAA,CAAS,YAAY,CAAA,CAAG;AAAA,SAChC;AAAA;AACF;AACF;AACF,EAEO,uBAAA,CACL,SACA,KAAA,EAC6B;AAC7B,IAAA,IAAI,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAO,CAAA,EAAG;AACrC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,KAAK,CAAA,EAAG,IAAA;AAAA,UACrC,CAAC,CAAA,KAAO,CAAA,CAAyB,SAAA,CAAU,IAAA,KAAS;AAAA,SACtD;AAAA,OACF,MAAO;AACL,QAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,GAAA;AAAA,UACpC,CAAC,OAAA,KACC,OAAA,CAAQ,KAAA,CACL,IAAA;AAAA,YACC,CAAC,MACE,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA,EACvB,UAAU,IAAA,KAAS;AAAA,WAC3B,EACE,QAAA,CAAS,YAAY,CAAA,CAAG;AAAA,SAChC;AAAA;AACF;AACF;AACF,EAEO,YAAA,CACL,IACA,KAAA,EAC6B;AAC7B,IAAA,IAAI,KAAK,eAAA,CAAgB,GAAA,CAAI,MAAA,CAAO,EAAE,CAAC,CAAA,EAAG;AACxC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAM,QACJ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,KAAA,EAAO,EAAE,CAAA,IACxB,IAAA,CAAK,MAAA,CAAO,KAAK,GAAG,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,UAAA,CAAW,OAAO,EAAE,CAAA;AAExD,QAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,KAAA,EAAO,EAAA,EAAI,KAAK,CAAA;AAE/B,QAAA,OAAO,KAAA;AAAA,OACT,MAAO;AACL,QAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,GAAA;AAAA,UACpC,CAAC,OAAA,KACC,OAAA,CAAQ,KAAA,CACL,IAAA;AAAA,YACC,CAAC,MACE,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA,EAAiB,WAAW,EAAA,KACvD;AAAA,WACJ,EACE,QAAA,CAAS,YAAY,CAAA,CAAG;AAAA,SAChC;AAAA;AACF;AACF;AACF,EAEO,cAAA,CACL,MACA,KAAA,EAC6B;AAC7B,IAAA,IAAI,IAAA,CAAK,kBAAA,CAAmB,GAAA,CAAI,IAAI,CAAA,EAAG;AACrC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,IAAA,KAAS,IAAI,CAAA;AAAA,OACnE,MAAO;AACL,QAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,GAAA;AAAA,UACpC,CAAC,OAAA,KACC,OAAA,CAAQ,KAAA,CACL,IAAA;AAAA,YACC,CAAC,MACE,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA,EAAiB,WACzC,IAAA,KAAS;AAAA,WAChB,EACE,QAAA,CAAS,YAAY,CAAA,CAAG;AAAA,SAChC;AAAA;AACF;AAGF,IAAA,OAAO,MAAA;AAAA;AACT,EAEO,mBAAmB,KAAA,EAAe;AACvC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,IAAA;AAAA,MACzC,CAAC,CAAA,KAEG,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,YAAmB,QAAQ,CAAA,EACpD,QAAA,EAAS,CAAE,WAAW,KAAA,KAAU;AAAA,KACvC;AACA,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,OAAO,GAAA,EAAK,KAAA,CACT,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,YAAa,QAAQ,CAAA,CACnC,GAAA,CAAI,CAAC,CAAA,KAAO,CAAA,CAAe,UAAU,CAAA;AAAA;AAG1C,IAAA,OAAO,IAAA;AAAA;AACT,EAEO,eAAA,GAAkB;AACvB,IAAA,OAAO,IAAA,CAAK,eAAA,CACT,eAAA,EAAgB,CAChB,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,MAAA,CAAO,CAAA,CAAE,QAAA,EAAU,CAAC,CAAA;AAAA;AACzC,EAEA,0BAAA,GAA6B;AAC3B,IAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AAErC,IAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,IAAA,CAAK,CAAC,GAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM;AACtD,MAAA,YAAA,CAAa,GAAA,CAAI,CAAA,CAAE,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,KACvC,CAAA;AAED,IAAA,KAAA,IACM,CAAA,GAAI,CAAA,EACR,CAAA,GAAI,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,KAAA,CAAM,MAAA,IAAU,CAAA,EACvD,CAAA,EAAA,EACA;AACA,MAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM;AAChD,QAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA;AAExB,QAAA,IAAI,IAAA,YAAgB,UAAA,IAAc,IAAA,CAAK,QAAA,CAAS,UAAU,CAAA,EAAG;AAC3D,UAAA,YAAA,CAAa,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,SAAS,CAAC,CAAA;AAC5C,UAAA;AAAA;AACF;AACF;AAGF,IAAA,KAAA,MAAW,UAAU,IAAI,GAAA;AAAA,MACvB,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,SAAS,CAAC;AAAA,KAC1E,EAAG;AACD,MAAA,IAAA,CAAK,eAAA,CAAgB,sBAAA;AAAA,QACnB,MAAA;AAAA,QACA,YAAA,CAAa,IAAI,MAAM;AAAA,OACzB;AAAA;AACF;AACF,EAEA,MAAa,KAAK,IAAA,EAA2B;AAC3C,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAErB,IAAA,MAAM,SAAA,GAAY,IAAI,GAAA,CAAI,QAAQ,CAAA;AAClC,IAAA,IACE,IAAA,CAAK,UAAA,CAAW,QAAA,IACf,CAAC,IAAA,CAAK,WAAW,aAAA,IAChB,CAAC,IAAA,CAAK,UAAA,CAAW,QAAA,IACjB,CAAC,KAAK,UAAA,CAAW,WAAA,IACjB,CAAC,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAA,IAC3B,CAAC,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAA;AAE7B,MAAA,SAAA,CAAU,OAAA;AAAA,QACR,IAAI,cAAA;AAAA,UACF,IAAA;AAAA,UACA,MAAM,EAAA;AAAA,UACN,MAAM;AAAA;AAAC;AACT,OACF;AAEF,IAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AAEtC,IAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,KAAM;AACzB,MAAA,aAAA,CAAc,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,KAC1B,CAAA;AAED,IAAA,KAAA,MAAW,GAAA,IAAO,KAAK,iBAAA,EAAmB;AACxC,MAAA,IAAI,CAAC,GAAA,CAAI,UAAA,CAAW,gBAAA,IAAoB,GAAA,CAAI,cAAc,QAAA,EAAU;AAClE,QAAA,aAAA,CAAc,MAAA,CAAO,IAAI,EAAE,CAAA;AAAA;AAC7B;AAGF,IAAA,KAAA,IAAS,KAAA,GAAQ,GAAG,KAAA,GAAQ,IAAA,CAAK,cAAc,CAAC,CAAA,EAAG,MAAA,IAAU,CAAA,EAAG,KAAA,EAAA,EAAS;AACvE,MAAA,MAAM,IAAA,CAAK,qBAAA;AAAA,QACT,KAAA;AAAA,QACA,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnC,UAAA,OAAO;AAAA,YACL,GAAG,CAAA;AAAA,YACH,GAAG,IAAA,CAAK,aAAA,CAAc,CAAC,EAAE,KAAK;AAAA,WAChC;AAAA,SACD;AAAA,OACH;AAAA;AAGF,IAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,GAAA,EAAK,CAAA,KAAM;AAC9B,MAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,KAAA,IAAS,GAAG,CAAA;AACnC,MAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA,EAAG;AACzB,QAAA,KAAA,GAAQ,GAAG,KAAK,CAAA,EAAA,CAAA;AAAA;AAKlB,MAAA,SAAA,CAAU,OAAA;AAAA,QACR,IAAI,WAAW,IAAA,EAAM;AAAA,UACnB,OAAA,EAAS,GAAA,CAAI,KAAA,IAAS,MAAA,CAAO,CAAC,CAAA;AAAA,UAC9B,SAAS,GAAA,CAAI,KAAA;AAAA,UACb,aAAA,EAAe;AAAA,YACb,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAM;AAAA,YAChC,OAAO,GAAA,CAAI;AAAA,WACb;AAAA,UACA,UAAA,EAAY,EAAE,GAAA,EAAI;AAAA,UAClB,QAAA,EAAU,aAAA,CAAc,GAAA,CAAI,GAAA,CAAI,KAAK;AAAA,SACtC;AAAA,OACH;AAAA,KACD,CAAA;AAED,IAAA,KAAA,MAAW,UAAU,aAAA,EAAe;AAClC,MAAA,IAAA,CAAK,eAAA,CAAgB,sBAAA,CAAuB,MAAA,EAAQ,KAAK,CAAA;AAAA;AAE3D,IAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AAErC,IAAA,WAAA,CAAY,KAAK,IAAA,CAAK,SAAS,EAAE,gBAAA,GAAmB,SAAA,EAAW,CAAC,EAAA,KAAO;AACrE,MAAA,IAAI,EAAA,CAAG,SAAS,QAAA,EAAU;AACxB,QAAA,IAAA,CAAK,MAAM,WAAA,GAAc,KAAA;AAAA;AAC3B,KACD,CAAA;AAAA;AACH,EAEO,iBAAiB,OAAA,EAA2B;AACjD,IAAA,IAAA,CAAK,oBAAA,GAAuB,OAAA;AAC5B,IAAA,OAAA,CAAQ,IAAA,EAAK;AAAA;AACf,EAEA,MAAa,OAAA,GAAU;AACrB,IAAA,OAAO,KAAK,WAAA,CAAY,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AAC7D,EAEA,MAAa,WAAW,KAAA,EAAe;AACrC,IAAA,MAAM,IAAA,CAAK,UAAU,kBAAA,EAAoB;AAAA,MACvC,WAAA,EAAa,KAAA;AAAA,MACb,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAa,SAAS,KAAA,EAA6C;AACjE,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAA,IAAS,IAAA,CAAK,eAAe,CAAA,CAAE,IAAA;AAAA,QAC1D,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI;AAAA,OAChB;AAEA,MAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,UAAU,CAAA,EAAG;AAChD,QAAA,MAAM,IAAA,CAAK,gBAAgB,UAAA,EAAY;AAAA,UACrC,UAAA,EAAY,MAAA;AAAA,UACZ,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,OACH,MAAO;AACL,QAAA,MAAM,cAAc,CAAC,GAAG,IAAA,CAAK,eAAA,CAAgB,KAAK,IAAI,CAAA;AACtD,QAAA,MAAM,GAAA,GAAM,KAAK,SAAA,CAA8B;AAAA,UAC7C,QAAA,EAAU;AAAA,YACR,UAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO,OAAA;AAAA,YACP,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,UAAU;AAAA;AACvD,SACD,CAAA;AAED,QAAA,IAAA,CAAK,QAAA,CAAS,SAAS,MAAM,CAAA;AAS7B,QAAA,OAAO,OACL,IAAA,CAAK,yBAAA,CAA0B,UAAU,CAAA,GACrC,YAAA,GACA,eACJ,MAAM;AACN,UAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,YAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,YAAA,IAAI,GAAA,EAAK;AAIP,cAAA,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAQ,CAAA;AAAA;AAG/D,YAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,eAAA,CAAgB,UAAU,CAAA;AAEzD,YAAA,IACE,CAAC,WAAA,IACD,CAAA,CAAE,MAAM,GAAA,GAAM,MAAM,OAAA,IACpB,CAAE,MAAM,IAAA,CAAK,UAAU,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,EACnD;AACA,cAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,WAAW,CAAA;AACtD,cAAA,OAAO,KAAA;AAAA;AAGT,YAAA,OAAO,IAAA;AAAA,WACT,EAAG,CAAC,IAAA,CAAK,yBAAA,CAA0B,UAAU,CAAC,CAAA;AAAA,WAC7C,CAAC,CAAA;AAAA;AAGN,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,MAAa,OAAO,KAAA,EAA6C;AAC/D,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAA,IAAS,IAAA,CAAK,eAAe,CAAA,CAAE,IAAA;AAAA,QAC1D,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI;AAAA,OAChB;AAEA,MAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,UAAU,CAAA,EAAG;AAChD,QAAA,MAAM,IAAA,CAAK,gBAAgB,UAAA,EAAY;AAAA,UACrC,UAAA,EAAY,MAAA;AAAA,UACZ,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,OACH,MAAO;AACL,QAAA,MAAM,cAAc,CAAC,GAAG,IAAA,CAAK,eAAA,CAAgB,KAAK,IAAI,CAAA;AACtD,QAAA,MAAM,GAAA,GAAM,KAAK,SAAA,CAA8B;AAAA,UAC7C,QAAA,EAAU;AAAA,YACR,UAAA,EAAY,IAAA;AAAA,YACZ,KAAA,EAAO,OAAA;AAAA,YACP,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,UAAU;AAAA;AACvD,SACD,CAAA;AAED,QAAA,IAAA,CAAK,QAAA,CAAS,SAAS,IAAI,CAAA;AAS3B,QAAA,OAAO,OACL,IAAA,CAAK,yBAAA,CAA0B,UAAU,CAAA,GACrC,YAAA,GACA,eACJ,MAAM;AACN,UAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,YAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,YAAA,IAAI,GAAA,EAAK;AAIP,cAAA,mBAAA,CAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAQ,CAAA;AAAA;AAG/D,YAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,eAAA,CAAgB,UAAU,CAAA;AAEzD,YAAA,IACE,CAAC,WAAA,IACD,CAAA,CAAE,MAAM,GAAA,GAAM,MAAM,OAAA,IACpB,CAAE,MAAM,IAAA,CAAK,UAAU,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,EACnD;AACA,cAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,WAAW,CAAA;AACtD,cAAA,OAAO,KAAA;AAAA;AAGT,YAAA,OAAO,IAAA;AAAA,WACT,EAAG,CAAC,IAAA,CAAK,yBAAA,CAA0B,UAAU,CAAC,CAAA;AAAA,WAC7C,CAAC,CAAA;AAAA;AAGN,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEO,sBAAA,CAAuB,WAAmB,OAAA,EAAmB;AAClE,IAAA,IAAA,CAAK,UAAA,CAAW,sBAAA,CAAuB,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3D,EAEO,kBAAA,CAAmB,UAAkB,OAAA,EAAmB;AAC7D,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,kBAAA,CAAmB,IAAI,QAAQ,CAAA;AACpE,IAAA,IAAA,CAAK,WAAW,kBAAA,CAAmB,GAAA,CAAI,QAAA,EAAU,OAAA,IAAW,CAAC,YAAY,CAAA;AACzE,IAAA,IAAA,CAAK,iCAAA,EAAkC;AAAA;AACzC,EAEO,oBAAA,CAAqB,UAAkB,OAAA,EAAmB;AAC/D,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,mBAAA,CAAoB,IAAI,QAAQ,CAAA;AACrE,IAAA,IAAA,CAAK,WAAW,mBAAA,CAAoB,GAAA,CAAI,QAAA,EAAU,OAAA,IAAW,CAAC,YAAY,CAAA;AAC1E,IAAA,IAAA,CAAK,iCAAA,EAAkC;AAAA;AACzC,EAEA,MAAa,QAAA,GAAkC;AAC7C,IAAA,IAAI,OAAA,GAAU,IAAA;AACd,IAAA,IAAI,YAAA,GAA6B,IAAA;AAEjC,IAAA,WAAA,MAAiB,GAAA,IAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM;AACtD,MAAA,WAAA,MAAiB,IAAA,IAAQ,IAAI,KAAA,EAAO;AAClC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG,KAAA;AAC3C,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,QAAA,EAAS;AACpC,UAAA,IAAI,CAAC,MAAA,IAAU,OAAA,IAAW,CAAC,YAAA,EAAc;AACvC,YAAA,OAAA,GAAU,KAAA;AACV,YAAA,YAAA,GAAe,KAAA;AAAA;AACjB;AACF;AACF;AAGF,IAAA,OAAO,OAAA,IAAW,YAAA;AAAA;AACpB,EAEA,MAAgB,mBAAA,GAAsB;AACpC,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,SAAA,CAA8B;AAAA,MACnD,QAAA,EAAU;AAAA,QACR,UAAA,EAAY;AAAA;AACd,KACD,CAAA;AAED,IAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,MAAA,MAAM,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAAA,KACzC,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA;AAGlE,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAgB,qBAAA,CACd,MAAA,EACA,WAAA,EACA;AACA,IAAA,MAAM,QAAA,GAAW,KAAK,UAAA,CAAW,QAAA;AACjC,IAAA,MAAM,MAAA,GAAS,OAAO,QAAA,CAAS,QAAQ,KAClC,IAAA,CAAK,UAAA,CAAW,WAAA,GAAc,CAAA,IAAK,QAAA,GACpC,CAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,KAAK,MAAA,GAAS,MAAA;AAEtD,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,CAAC,SAAS,WAAA,KAAgB;AACjE,QAAA,IAAA,CAAK,OAAA,EAAQ,CAAE,gBAAA,CAAiB,OAAA,CAAQ,IAAI,KAAK,CAAA;AAEjD,QAAA,OAAO;AAAA,UACL,GAAG,OAAA;AAAA,UACH,GAAG,IAAA,CAAK,aAAA,CAAc,WAAW,EAAE,CAAC;AAAA,SACtC;AAAA,OACD,CAAA;AAAA;AAKH,IAAA,MAAM,SAAS,IAAI,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAC3C,IAAA,IACE,IAAA,CAAK,UAAA,CAAW,QAAA,IACf,CAAC,IAAA,CAAK,WAAW,aAAA,IAChB,CAAC,IAAA,CAAK,UAAA,CAAW,QAAA,IACjB,CAAC,KAAK,UAAA,CAAW,WAAA,IACjB,CAAC,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAA,IAC3B,CAAC,IAAA,CAAK,OAAA,EAAQ,CAAE,UAAA,CAAW,QAAA;AAE7B,MAAA,MAAA,CAAO,OAAA;AAAA,QACL,IAAI,cAAA;AAAA,UACF,IAAA;AAAA,UACA,MAAM,OAAO,QAAA,EAAS;AAAA,UACtB,MAAM;AACJ,YAAA,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,WACnC;AAAA,UACA,IAAA,CAAK,UAAA,CAAW,QAAA,GACZ,CAAC,OAAA,KAAY;AACX,YAAA,IAAA,CAAK,iBAAiB,OAAO,CAAA;AAAA,WAC/B,GACA;AAAA;AACN,OACF;AACF,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAEvC,IAAA,WAAA,MAAiB,SAAS,WAAA,EAAa;AAIrC,MAAA,MAAM,UAAA,GAAaX,eAAA;AAAA,QACjB,KAAA,CAAM;AAAA,OACR;AACA,MAAA,KAAA,CAAM,UAAA,GAAa,UAAA;AAEnB,MAAA,MAAM,gBAAA,GACJ,KAAK,IAAA,CAAK,SAAA,CAAU,cAAc,KAAA,CAAM,SAAS,EAAE,KAAK,CAAA;AAE1D,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,MAAM,QAAA,GAAW,IAAI,gBAAA,CAAiB;AAAA,UACpC,GAAG,KAAA;AAAA,UACH,GAAI,KAAA,CAAc,UAAA;AAAA,UAClB;AAAA,SACD,CAAA;AACD,QAAA,MAAM,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,CAAA;AAClC,QAAA,QAAA,CAAS,cAAc,IAAI,CAAA;AAE3B,QAAA,IAAI,oBAAoB,kBAAA,EAAoB;AAC1C,UAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,QAAA,CAAS,SAAA,CAAU,EAAE,CAAA;AAC5C,UAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA;AAAA;AAElD,QAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,QAAA,CAAS,UAAA,CAAW,EAAE,CAAA;AAC/C,QAAA,IAAA,CAAK,kBAAA,CAAmB,GAAA,CAAI,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA;AAEpD,QAAA,IAAI,EAAE,oBAAoB,MAAA,CAAA,EAAS;AACjC,UAAA,IAAA,CAAK,MAAM,GAAA,CAAI,KAAA,EAAO,QAAA,CAAS,UAAA,CAAW,IAAI,QAAQ,CAAA;AAEtD,UAAA,IAAI,KAAA,GAAQ,MAAA;AAAA,YACV,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,KAAA,KAAU,KAAA,CAAM,EAAE,CAAA,EAAG,KAAA,IAAS;AAAA,WAC1D;AACA,UAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA,EAAG;AACzB,YAAA,KAAA,GAAQ,GAAG,KAAK,CAAA,EAAA,CAAA;AAAA;AAGlB,UAAA,MAAA,CAAO,OAAA;AAAA,YACL,IAAI,QAAA,CAAS;AAAA,cACX,OAAA,EAAS,SAAS,UAAA,CAAW,EAAA;AAAA,cAC7B,UAAA,EAAY,EAAE,KAAA,EAAO,QAAA;AAAS,aAC/B;AAAA,WACH;AAAA;AACF,OACF,MAAO;AACL,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,2BAAA,EAA8B,MAAM,SAAS,CAAA,oCAAA;AAAA,SAC/C;AAAA;AACF;AAGF,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAA,CAAK,gBAAgB,cAAA,EAAe;AACpC,MAAA,IAAA,CAAK,eAAA,CAAgB,kBAAA,CAAmB,MAAA,EAAQ,IAAI,CAAA;AAAA;AAGtD,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,MAAgB,WAAA,CACd,EAAA,EACA,KAAA,GAAQ,IAAA,EACI;AACZ,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAM,IAAA,CAAK,MAAM,OAAA,EAAQ;AAAA;AAE3B,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,MAAM,SAAA,GAAY,IAAA;AACvB,MAAA,MAAM,GAAA,GAAM,MAAM,EAAA,EAAG;AACrB,MAAA,OAAO,GAAA;AAAA,KACT,SAAE;AACA,MAAA,IAAA,CAAK,MAAM,SAAA,GAAY,KAAA;AACvB,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAA,CAAK,MAAM,OAAA,EAAQ;AAAA;AACrB;AACF;AACF,EAEU,iCAAA,GAAoC;AAC5C,IAAA,MAAM,EAAE,aAAA,EAAe,kBAAA,EAAoB,mBAAA,EAAqB,QAAA,KAC9D,IAAA,CAAK,UAAA;AACP,IAAA,MAAM,wBAAA,GACH,CAAC,aAAA,IACA,CAAC,GAAG,kBAAA,CAAmB,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA,IACzD,CAAC,CAAC,QAAA,IACD,CAAC,GAAG,mBAAA,CAAoB,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA;AAE7D,IAAA,IAAA,CAAK,UAAA,CAAW,sBAAA;AAAA,MACd,YAAA;AAAA,MACA;AAAA,KACF;AAAA;AACF,EAEU,OAAO,KAAA,EAAe;AAC9B,IAAA,OAAO,KAAK,eAAA,CAAgB,IAAA,CACzB,cAAc,KAAK,CAAA,EAClB,MAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,YAAa,QAAQ,CAAA,CAC1C,GAAA,CAAI,CAAC,CAAA,KAAO,CAAA,CAAe,UAAU,CAAA;AAAA;AAC1C,EAEA,MAAgB,YACd,SAAA,EACe;AACf,IAAA,MAAM,MACJ,OAAO,SAAA,KAAc,QAAA,GAChB,QAAA,CAAS,SAAS,CAAA,GAClB,SAAA;AAEP,IAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AAC1C,IAAA,MAAM,cAGE,WAAA,CAAY,GAAA;AAAA,MAAI,CAAC,KAAA,KACvB,YAAA,CAAc,KAAA,CAAM,UAAA,IAAc,MAAM,GAAK;AAAA,KAC/C;AAEA,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,GAAQ,GAAA,CAAI,KAAA,IAAS,KAAK,UAAA,CAAW,KAAA;AACrD,IAAA,IAAA,CAAK,UAAA,CAAW,WAAA,GAAc,GAAA,CAAI,OAAA,IAAW,KAAK,UAAA,CAAW,WAAA;AAC7D,IAAA,IAAA,CAAK,WAAW,gBAAA,GACd,GAAA,CAAI,UAAA,CAAW,gBAAA,IAAoB,KAAK,UAAA,CAAW,gBAAA;AAErD,IAAA,IAAI,WAAA,CAAY,CAAC,CAAA,CAAE,MAAA,GAAS,KAAK,UAAA,CAAW,IAAA,CAAK,KAAK,MAAA,EAAQ;AAC5D,MAAA,KAAA,IACM,CAAA,GAAI,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,MAAA,EAClC,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,CAAE,MAAA,EACnB,CAAA,EAAA,EACA;AACA,QAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,GAAA,CAAI,CAAC,OAAO,WAAA,KAAgB;AAChE,UAAA,IAAI,KAAA,CAAM,SAAA,KAAc,OAAA,IAAW,KAAA,CAAM,cAAc,QAAA,EAAU;AAC/D,YAAA,MAAM,WAAA,GAAc;AAAA,cAClB,GAAG,KAAA;AAAA,cACH,GAAG,YAAA,CAAa,KAAA,CAAM,GAAG,EAAE,CAAC;AAAA,aAC9B;AACA,YAAA,OAAO,WAAA;AAAA;AAET,UAAA,OAAO;AAAA,YACL,GAAG,KAAA;AAAA,YACH,KAAA,EAAO,CAAA;AAAA,YACP,UAAA,EAAY;AAAA,cACV,UAAA,EAAY,WAAA,CAAY,WAAW,CAAA,CAAE,CAAC,CAAA,EAAG,UAAA;AAAA,cACzC,KAAA,EAAO,WAAA,CAAY,WAAW,CAAA,CAAE,CAAC,CAAA,EAAG;AAAA;AACtC,WACF;AAAA,SACD,CAAA;AAED,QAAA,MAAM,IAAA,CAAK,qBAAA,CAAsB,KAAA,EAAO,iBAAiB,CAAA;AAAA;AAC3D,KACF,MAAA,IAAW,YAAY,CAAC,CAAA,CAAE,SAAS,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ;AACnE,MAAA,MAAM,gBAAgB,IAAI,KAAA;AAAA,QACxB,KAAK,UAAA,CAAW,IAAA,CAAK,KAAK,MAAA,GAAS,WAAA,CAAY,CAAC,CAAA,CAAE;AAAA,OACpD,CACG,IAAA,CAAK,CAAC,CAAA,CACN,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,CAAE,MAAM,CAAA;AAE1C,MAAA,aAAA,CACG,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA,CACpB,OAAA,CAAQ,CAAC,CAAA,KAAM;AACd,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,aAAA,CAAc,CAAC,GAAG,MAAA,EAAO;AAAA,OAC/C,CAAA;AAAA;AAGL,IAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,WAAA,EAAa,UAAA,KAAe;AAC/C,MAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,KAAA,EAAO,QAAA,KAAa;AACvC,QAAA,MAAM,eAAA,GAAkB,YAAY,UAAU,CAAA;AAC9C,QAAA,MAAM,KAAK,eAAA,CAAgB,EAAA;AAE3B,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,EAAA,EAAI,QAAQ,CAAA;AAE5C,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,iBAAkB,KAAA,EACpB,aAAA;AACJ,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAC,KAAA,CAAiB,WAAA;AAAA,cAChB,eAAA;AAAA,cACA,aAAa,cAAc;AAAA,aAC7B;AAAA;AAGF,UAAA,MAAA,CAAO,MAAA;AAAA,YACL,KAAA,CAAM,UAAA;AAAA,YACNA,eAAA,CAAc,MAAM,UAAiB;AAAA,WACvC;AACA,UAAA,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,IAAA,CAAK,UAAA,GAAa,QAAA;AAC3C,UAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,YAAA,KAAA,CAAM,kBAAA,CAAoB,MAAc,QAAQ,CAAA;AAAA,WAClD,MAAA,IAAW,iBAAiB,UAAA,EAAY;AACtC,YAAC,KAAA,CAAqB,QAAA;AAAA,cACpB;AAAA,gBACE,SAAA,EACG,MAAwC,cAAA,IAAkB,EAAA;AAAA,gBAC7D,UAAA,EAAY,MAAM,KAAA,IAAS;AAAA,eAC7B;AAAA,cACA,EAAE,OAAO,IAAA;AAAK,aAChB;AAAA,WACF,MAAA,IAAW,iBAAiB,kBAAA,EAAoB;AAC9C,YAAA,KAAA,CAAM,QAAA,CAAS,MAAM,KAAA,EAAO,EAAE,aAAa,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA;AAAA;AACjE;AACF,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAA,IAAA,CAAK,0BAAA,EAA2B;AAAA;AAClC,EAEA,MAAgB,UACd,QAAA,EACA;AACA,IAAA,OAAO,IAAA;AAAA,MACL,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,MAAM,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QACrC,MAAA,EAAQ,YAAA;AAAA,QACR,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,QACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,QAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW;AAAA,OACjC,CAAA;AAAA,MACD;AAAA,QACE,iBAAA,EAAmB,WAAA;AAAA,QACnB,gBAAA,EAAkB,EAAE,WAAA,EAAa,QAAA,EAAS;AAAA,QAC1C,GAAG;AAAA;AACL,KACF;AAAA;AACF,EAEQ,QAAA,CAAS,MAAgB,SAAA,EAA0B;AACzD,IAAA,IAAI,GAAA,GAAM,QAAA;AAEV,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,CAAC,CAAA;AAErB,MAAA,MAAM,SAAA,GAAY,SAAA,KAAc,IAAA,GAAO,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AAEnD,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,CAAC,CAAA;AACtD,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,SAAS,CAAA;AAG9D,MAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,QAAA,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC5B,UAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,CAAA,CAAE,UAAA,CAAW,KAAM,CAAA;AACzC,UAAA,IAAA,CAAK,KAAA,CAAM,WAAW,SAAS,CAAA;AAC/B,UAAA,CAAA,CAAE,WAAW,KAAA,GAAQ,SAAA;AAAA,SACtB,CAAA;AACD,QAAA,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAO,CAAA,CAAE,UAAA,CAAW,KAAA,GAAQ,CAAE,CAAA;AAE9D,QAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,IAAI,CAAA;AAG7C,QAAA,MAAM,SAAA,GAAY,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,WAAW,CAAA;AAC3D,QAAA,SAAA,CAAU,QAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA;AAClD;AAGF,IAAA,IAAI,MAAM,QAAA,EAAU;AAClB,MAAA,IAAA,CAAK,eAAA,CACF,eAAA,CAAgB,qBAAqB,CAAA,EACpC,cAAA;AAAA,QACA,KAAK,eAAA,CAAgB,IAAA,CAAK,cAAc,GAAG,CAAA,CAAG,SAAS,IAAI;AAAA,OAC7D;AAAA;AACJ;AACF,EAEO,cAAA,GAAiB;AACtB,IAAA,IAAA,CAAK,KAAA,CAAM,WAAA,GAAc,CAAC,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA;AAEzC;;AC1zCO,MAAM,sBAAsB,IAAA,CAAK;AAAA;AAAA;AAAA;AAAA,EAItC,IAAW,UAAA,GAAa;AACtB,IAAA,MAAM,QAAA,GAAW,KAAK,UAAA,CAAW,QAAA;AACjC,IAAA,OAAOY,OAAA;AAAA,MAAA,CACJ,IAAA,CAAK,WAAW,WAAA,GAAc,CAAA,IAAK,WAClC,CAAA,GACA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,MAAA;AAAA,MAC5B;AAAA,KACF;AAAA;AACF,EAEO,MAAA,GAA2B;AAChC,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,IAAI,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAS,CAAA,EAAG;AACzC,QAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,SAAS,CAAA,EAAG;AAI/C,UAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,SAAA,EAAW,EAAE,CAAA;AAAA,SAC1C,MAAO;AACL,UAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,SAAA,CAA8B;AAAA,YACnD,QAAA,EAAU;AAAA,cACR,UAAA,EAAY;AAAA;AACd,WACD,CAAA;AAED,UAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,MAAM,oBAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA;AAG9D,UAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,YAAA,MAAM,IAAA,CAAK,WAAA,CAAY,GAAA,CAAK,IAAA,CAAM,OAAQ,CAAA;AAC1C,YAAA,IAAA,CAAK,WAAW,cAAA,EAAe;AAC/B,YAAA,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA,EAAG,gBAAgB,IAAI,CAAA;AACtD,YAAA,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,EAAE,GAAG,cAAA,EAAe;AAAA;AAGnD,UAAA,OAAO,IAAA;AAAA;AACT;AAGF,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEU,iBAAiB,KAAA,EAGxB;AACD,IAAA,IAAI,QAAQ,KAAA,CAAM,KAAA;AAClB,IAAA,MAAM,MAAA,GAAS,MAAM,MAAA,IAAU,QAAA;AAE/B,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,IAAI,MAAM,IAAA,CAAK,eAAA,CAAgB,YAAY,CAAA,EAAG;AAK5C,QAAA,IAAI,WAAc,KAAA,EAAO;AACvB,UAAA,KAAA,GAAQ,CAAC,GAAG,IAAA,CAAK,UAAA,CAAW,QAAA,CAAS,WAAW,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5D,YAAA,OAAO,EAAE,QAAA,EAAS;AAAA,WACnB,CAAA;AAAA,SACH,MAAO;AACL,UAAA,IAAA,CAAK,UAAA,CAAW,YAAA,CAAa,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA;AAGlD,QAAA,MAAM,kBAAkB,YAAA,CAAa,KAAK,CAAA,CACvC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,EACpB,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,GAAI,KAAK,UAAU,CAAA;AAEjC,QAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,YAAY,CAAA,EAAG;AAIlD,UAAA,MAAM,IAAA,CAAK,gBAAgB,YAAA,EAAc;AAAA,YACvC,UAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,SACH,MAAO;AACL,UAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,SAAA,CAA8B;AAAA,YACnD,QAAA,EAAU;AAAA,cACR,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO;AAAA;AACT,WACD,CAAA;AAED,UAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,MAAM,oBAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA;AAG9D,UAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,YAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,GAAG,YAAA,CAAa,KAAK,CAAC,CAAA;AAChD,YAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AAEzB,YAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAK,IAAA,CAAM,OAAQ,CAAA;AACpC,YAAA,IAAA,CAAK,WAAW,cAAA,EAAe;AAE/B,YAAA,IAAI,cAAA;AAEJ,YAAA,IAAI,WAAA,KAAgB,KAAK,WAAA,EAAa;AACpC,cAAA,cAAA,GACE,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,IAClC,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,QAAA,GAAW,CAAC,CAAA;AAAA,aAC1C,MAAO;AACL,cAAA,cAAA,GAAiB,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA;AAAA;AAGlD,YAAA,cAAA,EAAgB,gBAAgB,IAAI,CAAA;AACpC,YAAA,cAAA,EAAgB,cAAA,EAAe;AAAA;AAGjC,UAAA,OAAO,IAAA;AAAA;AACT;AAGF,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,MAAa,aAAA,GAAgB;AAC3B,IAAA,OAAO,IAAA,CAAK,gBAAA,CAAiB,EAAE,MAAA,EAAQ,iBAAiB,CAAA;AAAA;AAC1D,EAEA,MAAa,WAAW,KAAA,EAA6C;AACnE,IAAA,OAAO,IAAA,CAAK,gBAAA,CAAiB,EAAE,KAAA,EAAO,CAAA;AAAA;AACxC,EAEA,MAAa,SAAS,IAAA,EAAgC;AACpD,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,SAAA,CAA8B;AAAA,QACnD,QAAA,EAAU;AAAA,UACR,UAAA,EAAY,UAAA;AAAA,UACZ,MAAM,IAAA,GAAO;AAAA;AACf,OACD,CAAA;AAED,MAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,MAAM,oBAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA;AAG9D,MAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,QAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAK,IAAA,CAAM,OAAQ,CAAA;AACpC,QAAA,IAAA,CAAK,WAAW,cAAA,EAAe;AAC/B,QAAA,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA,EAAG,gBAAgB,IAAI,CAAA;AAAA;AAGxD,MAAA,OAAO,IAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,MAAa,SAAS,KAAA,EAA6C;AACjE,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,IAAI,MAAM,IAAA,CAAK,eAAA,CAAgB,UAAU,CAAA,EAAG;AAC1C,QAAA,MAAM,UAAU,YAAA,CAAa,KAAA,IAAS,KAAK,eAAe,CAAA,CACvD,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,CACpB,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,GAAI,KAAK,UAAU,CAAA;AAEjC,QAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,UAAU,CAAA,EAAG;AAChD,UAAA,MAAM,IAAA,CAAK,gBAAgB,UAAA,EAAY;AAAA,YACrC,UAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,SACH,MAAO;AACL,UAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,SAAA,CAA8B;AAAA,YACnD,QAAA,EAAU;AAAA,cACR,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO;AAAA;AACT,WACD,CAAA;AAED,UAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,MAAM,oBAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA;AAG9D,UAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,YAAA,MAAM,uBAAA,GAA0B,IAAA,CAAK,UAAA,CAClC,eAAA,EAAgB,CAChB,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,EAAU,CAAA;AAC1B,YAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AAEzB,YAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAK,IAAA,CAAM,OAAQ,CAAA;AAEpC,YAAA,IAAA,CAAK,WAAW,cAAA,EAAe;AAC/B,YAAA,IAAI,WAAA,KAAgB,KAAK,WAAA,EAAa;AACpC,cAAA,IAAA,CAAK,UAAA,CAAW,YAAA;AAAA,gBACd,uBAAA,CAAwB,GAAA,CAAI,CAAC,CAAA,KAAM,IAAI,CAAC;AAAA,eAC1C;AACA,cAAA,IAAA,CAAK,UAAA,CAAW,eAAA,EAAgB,CAAE,CAAC,GAAG,cAAA,EAAe;AAAA,aACvD,MAAO;AACL,cAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,CAAC,GAAG,cAAA,EAAe;AAC7C,cAAA,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,gBAAgB,IAAI,CAAA;AAAA;AACpD;AAGF,UAAA,OAAO,IAAA;AAAA;AACT;AAGF,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,MAAa,OAAO,KAAA,EAA6C;AAC/D,IAAA,OAAO,IAAA,CAAK,YAAY,YAAY;AAClC,MAAA,IAAI,MAAM,IAAA,CAAK,eAAA,CAAgB,UAAU,CAAA,EAAG;AAC1C,QAAA,MAAM,UAAU,YAAA,CAAa,KAAA,IAAS,KAAK,eAAe,CAAA,CACvD,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,CACpB,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,GAAI,KAAK,UAAU,CAAA;AAEjC,QAAA,IAAI,IAAA,CAAK,2BAAA,CAA4B,UAAU,CAAA,EAAG;AAChD,UAAA,MAAM,IAAA,CAAK,gBAAgB,UAAA,EAAY;AAAA,YACrC,UAAA,EAAY,IAAA;AAAA,YACZ,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,SACH,MAAO;AACL,UAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,SAAA,CAA8B;AAAA,YACnD,QAAA,EAAU;AAAA,cACR,UAAA,EAAY,IAAA;AAAA,cACZ,KAAA,EAAO;AAAA;AACT,WACD,CAAA;AAED,UAAA,MAAM,GAAA,GAAA,CAAO,MAAM,GAAA,GAAM,IAAA,EAAM,SAAA;AAC/B,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,MAAM,oBAAoB,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA;AAG9D,UAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,YAAA,MAAM,uBAAA,GAA0B,IAAA,CAAK,UAAA,CAClC,eAAA,EAAgB,CAChB,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,EAAU,CAAA;AAE1B,YAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AACzB,YAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAK,IAAA,CAAM,OAAQ,CAAA;AAEpC,YAAA,IAAA,CAAK,WAAW,cAAA,EAAe;AAC/B,YAAA,IAAI,WAAA,KAAgB,KAAK,WAAA,EAAa;AACpC,cAAA,IAAA,CAAK,UAAA,CAAW,YAAA;AAAA,gBACd,uBAAA,CAAwB,GAAA,CAAI,CAAC,CAAA,KAAM,IAAI,CAAC;AAAA,eAC1C;AACA,cAAA,IAAA,CAAK,UAAA,CAAW,eAAA,EAAgB,CAAE,CAAC,GAAG,cAAA,EAAe;AAAA,aACvD,MAAO;AACL,cAAA,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,CAAA,EAAG,gBAAgB,IAAI,CAAA;AACtD,cAAA,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,EAAE,GAAG,cAAA,EAAe;AAAA;AACnD;AAGF,UAAA,OAAO,IAAA;AAAA;AACT;AAGF,MAAA,OAAO,KAAA;AAAA,KACR,CAAA;AAAA;AAEL;;ACzQO,MAAM,cAAc,KAAA,CAA4B;AAAC;;;;;;;;ACQxD,KAAA,CAAM,OAAO,iBAAiB,CAAA;AAIvB,MAAM,cAAc,iBAAA,CAIzB;AAAA,EAJK,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAKL,IAAAf,eAAA,CAAA,IAAA,EAAQ,WAAA,EAAY,IAAA,CAAA;AAAA;AAAA,EAEpB,SAAA,CACE,WACA,OAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3C,EAEA,MAAa,QAAA,CACX,QAAA,EACA,OAAA,EACkB;AAClB,IAAA,IAAI,IAAA,CAAK,SAAA,CAAU,SAAA,KAAc,GAAA,EAAK;AACpC,MAAA,IAAI,CAAC,KAAK,UAAA,CAAW,MAAA,IAAU,KAAK,aAAA,CAAc,MAAA,CAAO,QAAQ,CAAC,CAAA,EAAG;AACnE,QAAA,IAAI,MAAA,CAAO,QAAQ,CAAA,KAAM,EAAA;AAAI,UAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,IAAA;AAElE,QAAA,OAAO,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,GAAG,OAAO,CAAA;AAAA;AACjD,KACF,MAAA,IAAW,IAAA,CAAK,SAAA,CAAU,SAAA,KAAc,GAAA,EAAK;AAC3C,MAAA,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,EAAG,OAAO,CAAA;AAAA,KAC1C,MAAA,IAAW,IAAA,CAAK,SAAA,CAAU,SAAA,KAAc,GAAA,EAAK;AAC3C,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AAC3C,MAAA,MAAM,SAAS,aAAA,EAAc;AAG7B,MAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,QAAA,MAAM,OAAA,GAAU,SAAS,IAAA,EAAK;AAG9B,QAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,EAAG;AACzB,UAAA,MAAM,SAAS,OAAA,CAAQ,MAAA;AACvB,UAAA,IAAI,EAAA,GAAK,OAAO,OAAO,CAAA;AACvB,UAAA,IAAI,WAAW,EAAA,EAAI;AAEjB,YAAA,EAAA,GAAK,EAAA,GAAK,GAAA;AAAA;AAEZ,UAAA,MAAMgB,EAAAA,GAAI,MAAM,EAAE,CAAA;AAClB,UAAA,IAAI,CAACA,EAAAA,CAAE,OAAA,EAAQ,IAAK,YAAY,EAAA,EAAI;AAClC,YAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,QAAA;AAAA,cACnC,IAAA,CAAK,SAAQ,CAAE,SAAA;AAAA,cACf;AAAA,aACF,CAAE,IAAA;AACF,YAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA;AAEnB,UAAA,OAAO,KAAA,CAAM,QAAA,CAASA,EAAAA,CAAE,OAAA,EAAQ,GAAIA,GAAE,MAAA,CAAO,MAAM,CAAA,GAAI,EAAA,EAAI,OAAO,CAAA;AAAA;AAIpE,QAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,EAAS,KAAA,EAAO,IAAI,CAAA;AACpC,QAAA,IAAI,CAAC,CAAA,CAAE,OAAA,EAAQ,IAAK,YAAY,EAAA,EAAI;AAClC,UAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,QAAA;AAAA,YACnC,IAAA,CAAK,SAAQ,CAAE,SAAA;AAAA,YACf;AAAA,WACF,CAAE,IAAA;AACF,UAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA;AAEnB,QAAA,OAAO,KAAA,CAAM,QAAA,CAAS,CAAA,CAAE,OAAA,EAAQ,GAAI,EAAE,MAAA,CAAO,MAAM,CAAA,GAAI,EAAA,EAAI,OAAO,CAAA;AAAA;AAIpE,MAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,QAAA,MAAM,CAAA,GAAI,MAAM,QAAQ,CAAA;AACxB,QAAA,IAAI,CAAC,CAAA,CAAE,OAAA,EAAQ,EAAG;AAChB,UAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,QAAA;AAAA,YACnC,IAAA,CAAK,SAAQ,CAAE,SAAA;AAAA,YACf;AAAA,WACF,CAAE,IAAA;AACF,UAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA;AAEnB,QAAA,OAAO,KAAA,CAAM,QAAA,CAAS,CAAA,CAAE,OAAA,EAAQ,GAAI,EAAE,MAAA,CAAO,MAAM,CAAA,GAAI,EAAA,EAAI,OAAO,CAAA;AAAA;AAGpE,MAAA,IAAI,oBAAoB,IAAA,EAAM;AAC5B,QAAA,MAAM,CAAA,GAAI,MAAM,QAAQ,CAAA;AACxB,QAAA,IAAI,CAAC,CAAA,CAAE,OAAA,EAAQ,EAAG;AAChB,UAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,QAAA;AAAA,YACnC,IAAA,CAAK,SAAQ,CAAE,SAAA;AAAA,YACf;AAAA,WACF,CAAE,IAAA;AACF,UAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA;AAEnB,QAAA,OAAO,KAAA,CAAM,QAAA,CAAS,CAAA,CAAE,OAAA,EAAQ,GAAI,EAAE,MAAA,CAAO,MAAM,CAAA,GAAI,EAAA,EAAI,OAAO,CAAA;AAAA;AACpE;AAGF,IAAA,OAAO,KAAA;AAAA;AACT,EAEQ,cAAc,KAAA,EAAwB;AAC5C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,EAAA;AACrC,MAAA,OAAO,IAAA;AAAA;AAGT,IAAA,MAAM,QAAQ,IAAI,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW,UAAU,EAAE,CAAA;AAErD,IAAA,IAAI,CAAC,MAAM,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA,IAAK,UAAU,EAAA,EAAI;AAC9C,MAAA,IAAA,CAAK,MAAM,UAAA,CAAW,YAAA,GACpB,KAAK,UAAA,CAAW,aAAA,IAAiB,OAAO,sBAAA,EAAuB;AACjE,MAAA,OAAO,KAAA;AAAA;AAGT,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,IAAgB,CAAC,IAAA,CAAK,SAAA;AAAW,MAAA,OAAO,KAAA;AAElE,IAAA,OAAO,MAAM,QAAA,EAAS;AAAA;AACxB,EAEU,YAAA,GAAwB;AAChC,IAAA,OAAO,CAAC,CAAC,MAAA,CAAO,KAAK,QAAA,EAAU,EAAE,IAAA,EAAK;AAAA;AAE1C;;ACpIO,MAAM,cAAc,KAAA,CAAkD;AAAC;;ACDvE,MAAM,aAAa,KAAA,CAA2B;AAAC;;ACI/C,MAAM,iBAAiB,kBAAA,CAG5B;AAAA,EACA,WAAA,CAAY;AAAA,IACV,aAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,EAA4B;AAC1B,IAAA,KAAA,CAAM;AAAA,MACJ,GAAG;AAAA,QACD,GAAG,UAAA;AAAA,QACH,KAAA,EAAO,YAAA,CAAa,aAAa,CAAA,CAC9B,OAAO,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAA,CACxB,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,KAAK;AAAA,OACvB;AAAA,MACA,UAAA,EAAY;AAAA,QACV,GAAG,UAAA,CAAW,UAAA;AAAA,QACd,aAAA,EAAe,aAAa,aAAa;AAAA;AAC3C,KACD,CAAA;AAAA;AACH,EAEU,QAAA,GAAW;AACnB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAA;AAAA;AACnC,EAEO,QAAA,CACL,UACA,OAAA,EAQkB;AAClB,IAAA,OAAO,KAAA,CAAM,QAAA,CAAS,YAAA,CAAa,QAAQ,GAAG,OAAO,CAAA;AAAA;AACvD,EAEA,MAAa,QAAA,GAA6B;AACxC,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,KAAA,EAAO;AAC/B,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,YAAY,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,EAAI;AAC/C,QAAA,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA,GAAe,MAAA,CAAO,iBAAA,EAAkB;AAC9D,QAAA,OAAO,KAAA;AAAA;AACT;AAGF,IAAA,MAAM,UACJ,CAAC,CAAC,KAAK,QAAA,EAAS,CAAE,CAAC,CAAA,IACnB,CAAC,KAAK,UAAA,CAAW,QAAA,IACjB,KAAK,UAAA,CAAW,WAAA,IAChB,KAAK,UAAA,CAAW,gBAAA,IAChB,KAAK,UAAA,CAAW,QAAA;AAElB,IAAA,IAAA,CAAK,KAAA,CAAM,WAAW,YAAA,GAAe,OAAA,GACjC,OACA,MAAA,CAAO,kBAAA,CAAmB,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAEjD,IAAA,OAAO,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,YAAA;AAAA;AAElC;;AClEO,MAAM,iBAAiB,kBAAA,CAG5B;AAAA,EACU,YAAA,GAAwB;AAChC,IAAA,OAAO,CAAC,CAAC,MAAA,CAAO,KAAK,QAAA,EAAU,EAAE,IAAA,EAAK;AAAA;AAE1C;;ACCO,MAAM,cAAc,kBAAA,CAIzB;AAAA,EACA,WAAA,CAAY,EAAE,aAAA,EAAe,GAAG,YAAW,EAA+B;AACxE,IAAA,KAAA,CAAM;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAA,EAAY,EAAE,GAAG,UAAA,CAAW,YAAY,aAAA;AAAc,KACvD,CAAA;AAAA;AACH,EAEA,MAAM,KAAK,IAAA,EAA2B;AACpC,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAErB,IAAA,MAAM,IAAA,CAAK,UAAU,YAAY,CAAA;AAAA;AACnC,EAEA,SAAA,CACE,WACA,OAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3C,EAEO,aAAa,KAAA,EAAY;AAC9B,IAAA,OAAO,KAAK,UAAA,CAAW,aAAA,GACnB,aAAa,IAAA,CAAK,UAAA,CAAW,aAAa,CAAA,CAAE,IAAA;AAAA,MAC1C,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,OAClB,KAAA,GACH,KAAA;AAAA;AAER;;ACpCO,MAAM,eAAe,kBAAA,CAI1B;AAAA,EACA,WAAA,CAAY,EAAE,aAAA,EAAe,GAAG,YAAW,EAA0B;AACnE,IAAA,KAAA,CAAM;AAAA,MACJ,GAAG,UAAA;AAAA,MACH,UAAA,EAAY;AAAA,QACV,GAAG,UAAA,CAAW,UAAA;AAAA,QACd,aAAA,EAAe,aAAa,aAAa;AAAA;AAC3C,KACD,CAAA;AAAA;AACH,EAEU,eAAA,CAAgB;AAAA,IACxB,UAAA,EAAY,EAAE,aAAA;AAAc,GAC9B,EAA6E;AAC3E,IAAA,OAAO,OAAA,CAAQ,OAAA;AAAA,MACb,MAAA;AAAA,QACE,KAAK,KAAA,CAAM,KAAA,KAAU,KACjB,IAAA,CAAK,KAAA,CAAM,QACV,aAAA,EAAe,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA,EAAG,UACtC,aAAA,GAAgB,CAAC,GAAG,KAAA,IAAS,EAAA;AAAA;AACtC,KACF;AAAA;AACF,EAEU,gCACR,KAAA,EACyB;AACzB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,+BAAA,CAAgC,MAAA,CAAO,KAAK,CAAC,CAAA;AAChE,IAAA,OAAO,IAAA;AAAA;AACT,EAEO,aAAa,KAAA,EAAY;AAC9B,IAAA,OAAO,KAAK,UAAA,CAAW,aAAA,GACnB,aAAa,IAAA,CAAK,UAAA,CAAW,aAAa,CAAA,CAAE,IAAA;AAAA,MAC1C,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,OAClB,KAAA,GACH,KAAA;AAAA;AAER;;AC7CO,MAAM,iBAAiB,iBAAA,CAG5B;AAAA,EACU,YAAA,GAAwB;AAChC,IAAA,OAAO,CAAC,CAAC,MAAA,CAAO,KAAK,QAAA,EAAU,EAAE,IAAA,EAAK;AAAA;AACxC,EAEU,gCACR,KAAA,EACyB;AACzB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,+BAAA,CAAgC,KAAK,CAAA;AACxD,IAAA,IAAA,CAAK,SAAU,WAAA,GAAc,MAAA;AAC7B,IAAA,OAAO,IAAA;AAAA;AAEX;;AChBO,MAAM,cAAc,KAAA,CAA4B;AAAC;;;;;;;;ACgBxD,SAAS,eAAe,IAAA,EAAgC;AACtD,EAAA,OAAO,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AAChC,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,GAAA,CAAI,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA;AAErB,IAAA,IAAI,KAAK,aAAA,EAAe;AACtB,MAAA,GAAA,CAAI,KAAK,GAAG,cAAA,CAAe,aAAa,IAAA,CAAK,aAAa,CAAC,CAAC,CAAA;AAAA;AAE9D,IAAA,OAAO,GAAA;AAAA,GACT,EAAG,EAAkB,CAAA;AACvB;AAEO,MAAM,aAAa,kBAAA,CAIxB;AAAA,EAiCA,WAAA,CAAY,EAAE,aAAA,EAAe,GAAG,OAAM,EAAwB;AAC5D,IAAA,KAAA,CAAM,KAAK,CAAA;AAjCb,IAAAhB,eAAA,CAAA,IAAA,EAAA,YAAA,EAAuB,EAAC,CAAA;AAkCtB,IAAA,IAAA,CAAK,UAAA,CAAW,aAAA,GAAgB,YAAA,CAAa,aAAa,CAAA;AAAA;AAC5D,EAjCQ,eAAA,CACN,QACA,EAAA,EACA;AACA,IAAA,YAAA,CAAa,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC9B,MAAA,MAAM,IAAA,GAAO,OAAO,MAAA,CAAO;AAAA,QACzB,EAAA,EAAI,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,QAClB,YAAA,EAAc;AAAA,UACZ,OAAO,CAAA,CAAE,IAAA;AAAA,UACT,UAAA,EAAY,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA,KAAM,MAAA;AAAA,UAC5D,YAAA,EACE,aAAa,CAAA,CAAE,aAAa,EAAE,MAAA,KAAW,CAAA,IACzC,KAAK,UAAA,CAAW,SAAA;AAAA,UAClB,UAAA,EAAY,IAAA;AAAA,UACZ,MAAM,MAAM;AACV,YAAA,IACG,IAAA,CAAK,UAAA,CAAW,UAAA,IAAc,CAAA,CAAE,aAAA,IAChC,KAAK,UAAA,CAAW,QAAA,IAAY,CAAC,CAAA,CAAE,aAAA,EAChC;AACA,cAAA,OAAO,IAAA;AAAA;AAET,YAAA,OAAO,IAAA;AAAA;AACT;AACF,OACD,CAAA;AAED,MAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,EAAM,CAAA,CAAE,aAAa,CAAA;AAAA,KAC3C,CAAA;AAAA;AACH,EAOU,gCACR,KAAA,EACyB;AACzB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,+BAAA,CAAgC,KAAK,CAAA;AACxD,IAAA,OAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,QAAA,EAAU;AAAA,QACR,GAAG,IAAA,CAAK,QAAA;AAAA,QACR,WAAA,EAAa;AAAA;AACf,KACF;AAAA;AACF,EAEA,SAAA,CACE,WACA,OAAA,EACkB;AAClB,IAAA,OAAO,KAAA,CAAM,SAAA,CAAU,SAAA,EAAW,OAAO,CAAA;AAAA;AAC3C,EAEU,QAAA,GAAoB;AAC5B,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAA;AAAA;AACnC,EAEA,WAAA,CACE,UACA,SAAA,EACA;AACA,IAAA,IAAI,aAAa,eAAA,EAAiB;AAChC,MAAA,IAAA,CAAK,WAAW,iBAAA,EAAkB;AAClC,MAAA,IAAA,CAAK,MAAM,KAAA,GAAQ,cAAA;AAAA,QACjB,aAAa,SAAgB;AAAA,OAC/B;AACA,MAAA,IAAA,CAAK,eAAA;AAAA,QACH,IAAA,CAAK,UAAA;AAAA,QACL;AAAA,OACF;AAAA;AAEF,IAAA,KAAA,CAAM,WAAA,CAAY,UAAU,SAAS,CAAA;AAAA;AACvC,EAEA,MAAM,KAAK,IAAA,EAA2B;AACpC,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAErB,IAAA,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,WAAW,aAAa,CAAA;AAE/D,IAAA,IAAA,CAAK,UAAA,GAAa,IAAI,QAAA,CAAS;AAAA,MAC7B,QAAA,EAAU,CAAC,EAAA,KAAO;AAChB,QAAA,IACE,kBAAkB,IAAI,CAAA,IACtB,IAAA,CAAK,UAAA,CAAW,YAChB,IAAA,CAAK,UAAA,CAAW,QAAA,IAChB,IAAA,CAAK,WAAW,QAAA,IAChB,IAAA,CAAK,aAAA,EAAc,EAAG,WAAW,QAAA,EACjC;AACA,UAAA,OAAO,KAAA;AAAA,SACT,MAAO;AACL,UAAA,MAAM,SAAA,GAAY,CAAC,GAAG,EAAA,CAAG,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAA;AAClD,UAAA,IAAA,CAAK,QAAA,CAAS,SAAA,EAAW,EAAE,WAAA,EAAa,OAAO,CAAA;AAC/C,UAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,YAAA,IAAA,CAAK,SAAS,EAAC,EAAG,EAAE,WAAA,EAAa,OAAO,CAAA;AAAA;AAE1C,UAAA,OAAO,IAAA;AAAA;AACT,OACF;AAAA,MACA,UAAA,EAAY,KAAK,UAAA,CAAW,WAAA;AAAA,MAC5B,uBAAA,EAAyB,CAAC,IAAA,CAAK,UAAA,CAAW;AAAA,KAC3C,CAAA;AAED,IAAA,IAAA,CAAK,WAAA;AAAA,MACH,eAAA;AAAA,MACA,YAAA,CAAa,IAAA,CAAK,UAAA,CAAW,aAAa;AAAA,KAC5C;AAAA;AACF,EAEU,YAAA,GAAe;AACvB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAA;AAAA;AACnC,EAEA,MAAa,QAAA,CACX,QAAA,EACA,OAAA,EAQkB;AAClB,IAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,QAAA,CAAS,UAAU,OAAO,CAAA;AAElD,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAA,CAAK,UAAA,CAAW,gBAAA,CAAiB,IAAI,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA;AAG1E,IAAA,OAAO,GAAA;AAAA;AAEX;;;;;;;;AC5JO,MAAM,uBAAuB,KAAA,CAAgC;AAAA,EAElE,YAAY,UAAA,EAAgE;AAC1E,IAAA,KAAA,CAAM,UAAU,CAAA;AAFlB,IAAAA,eAAA,CAAA,IAAA,EAAQ,kBAAA,CAAA;AAAA;AAGR,EAEA,MAAM,UAAA,GAAa;AACjB,IAAA,MAAM,MAAM,MAAM,GAAA;AAAA,MAChB,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QAC/B,OAAA,EAAS,sCAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACT;AAAA,KACH;AAEA,IAAA,IAAI,GAAA,EAAK,MAAM,OAAA,EAAS;AACtB,MAAA,OAAO,IAAA;AAAA;AAET,IAAA,OAAO,KAAA;AAAA;AACT,EAEA,IAAI,uBAAA,GAA0B;AAC5B,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA;AAC1C,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,KAAA,GAAQ,KAAA,EAAO,QAAQ,eAAe,CAAA;AACtC,IAAA,KAAA,IAAS,EAAA;AAET,IAAA,GAAA,GAAM,KAAA,EAAO,QAAQ,SAAS,CAAA;AAC9B,IAAA,GAAA,IAAO,CAAA;AAEP,IAAA,MAAM,QAAA,GAAW,KAAA,EACb,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA,CACjB,UAAA,CAAW,CAAA,CAAA,CAAA,EAAK,CAAA,CAAE,CAAA,CAClB,UAAA,CAAW,GAAA,EAAK,EAAE,CAAA;AACrB,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAEnC,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA,MACjB,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA,MACjB,QAAA,EAAU,SAAS,CAAC,CAAA;AAAA,MACpB,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA,MACjB,iBAAA,EAAmB,SAAS,CAAC,CAAA;AAAA,MAC7B,cAAA,EAAgB,SAAS,CAAC;AAAA,KAC5B;AAAA;AACF,EAEA,MAAM,KAAK,IAAA,EAA2B;AACpC,IAAA,MAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AACrB,IAAA,IAAA,CAAK,mBAAmB,IAAI,SAAA;AAAA,MAC1B,IAAA,CAAK,uBAAA;AAAA,MACL;AAAA,QACE,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAAA,QACjC,UAAA,EAAY,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AAAA,QACrC,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAAA,QAC/B,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAAA,QACjC,gBAAA,EAAkB,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,IAAI;AAAA,OACnD;AAAA,MACA,WAAA;AAAA,MACA,SAAA,CAAU,IAAA,CAAK,OAAA,EAAQ,CAAE,SAAS;AAAA,KACpC;AACA,IAAA,IAAI,IAAA,CAAK,gBAAA;AAAkB,MAAA,IAAA,CAAK,iBAAiB,QAAA,EAAS;AAAA;AAC5D,EAEA,MAAM,QAAA,CACJ,OAAA,EACA,KAAA,EACA,KAAA,EACA,UACA,KAAA,EACA;AACA,IAAA,MAAM,MAAM,MAAM,GAAA;AAAA,MAChB,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QAC/B,OAAA,EAAS,sCAAA;AAAA,QACT,MAAA,EAAQ,2BAAA;AAAA,QACR,OAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AACA,IAAA,OAAO,KAAK,IAAA,IAAQ,IAAA;AAAA;AACtB,EAEA,MAAM,QAAA,CACJ,KAAA,EACA,OAAA,EACA,WACA,IAAA,EACA;AACA,IAAA,MAAM,MAAM,MAAM,IAAA;AAAA,MAChB,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QAC/B,OAAA,EAAS,sCAAA;AAAA,QACT,MAAA,EAAQ,8BAAA;AAAA,QACR,KAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AACA,IAAA,OAAO,GAAA,EAAK,IAAA,EAAM,aAAA,EAAe,YAAA,IAAgB,EAAC;AAAA;AACpD,EAEA,MAAM,OAAA,CAAQ,OAAA,EAAiB,IAAA,EAAc,SAAA,EAAmB;AAC9D,IAAA,MAAM,GAAA;AAAA,MACJ,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QAC/B,OAAA,EAAS,sCAAA;AAAA,QACT,MAAA,EAAQ,kCAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA;AACF,EACA,MAAM,gBAAA,CAAiB;AAAA,IACrB,MAAA;AAAA,IACA,oBAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF,EAMG;AACD,IAAA,MAAM,GAAA;AAAA,MACJ,KAAK,IAAA,CAAK,SAAA;AAAA,MACV,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW;AAAA,QAC/B,OAAA,EAAS,sCAAA;AAAA,QACT,MAAA,EAAQ,kCAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH,CACG,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,MAAA,IAAI,QAAA,EAAU,MAAM,OAAA,EAAS;AAC3B,QAAA,IAAA,CAAK,kBAAkB,QAAA,CAAS;AAAA,UAC9B,GAAG,KAAK,gBAAA,CAAiB,KAAA;AAAA,UACzB,YAAA,EAAc,MAAA;AAAA,UACd,WAAA,EAAa;AAAA,YACX,IAAA,EAAM,OAAO,IAAI,CAAA;AAAA,YACjB,GAAA,EAAK,KAAA,CAAM,OAAA,EAAS,aAAA,EAAe,CAAA,CAChC,GAAA,CAAI,MAAA,CAAO,SAAS,IAAI,CAAA,EAAG,KAAK,CAAA,CAChC,MAAA,CAAO,eAAe,CAAA;AAAA,YACzB,UAAA,EAAY,MAAA;AAAA,cACV,MAAM,OAAA,EAAS,aAAA,EAAe,CAAA,CAAE,MAAA,CAAO,eAAe;AAAA,aACxD;AAAA,YACA,SAAA,EAAW,OAAO,SAAS,CAAA;AAAA,YAC3B,0BAAA,EAA4B,OAAO,IAAI;AAAA;AACzC,SACD,CAAA;AACD,QAAA,IAAI,oBAAA,EAAsB;AACxB,UAAA,IAAA,CAAK,gBAAA,EAAkB,SAAA;AAAA,YACrB,oBAAA;AAAA,YACA,OAAO,IAAI;AAAA,WACb;AAAA;AACF;AACF,KACD,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,KAAE,CAAA;AAAA;AACnB,EAEA,IAAI,eAAA,GAAkB;AACpB,IAAA,OAAO,IAAA,CAAK,gBAAA;AAAA;AAEhB;;AC3LA,MAAM,cAAA,GAAiB,OAAO,MAAA,CAAO;AAAA;AAAA,EAEnC,UAAA,EAAY,OAAA;AAAA,EACZ,WAAA,EAAa,QAAA;AAAA,EACb,UAAA,EAAY,OAAA;AAAA,EACZ,UAAA,EAAY,OAAA;AAAA,EACZ,WAAA,EAAa,QAAA;AAAA,EACb,SAAA,EAAW,MAAA;AAAA,EACX,UAAA,EAAY,OAAA;AAAA,EACZ,UAAA,EAAY,OAAA;AAAA,EACZ,SAAA,EAAW,MAAA;AAAA,EACX,aAAA,EAAe,UAAA;AAAA,EACf,WAAA,EAAa,QAAA;AAAA,EACb,aAAA,EAAe,UAAA;AAAA,EACf,SAAA,EAAW,MAAA;AAAA,EACX,UAAA,EAAY,OAAA;AAAA,EACZ,SAAA,EAAW,MAAA;AAAA,EACX,WAAA,EAAa,QAAA;AAAA,EACb,SAAA,EAAW,MAAA;AAAA,EACX,YAAA,EAAc,SAAA;AAAA;AAAA,EAGd,aAAA,EAAe,MAAA;AAAA,EACf,aAAA,EAAe,MAAA;AAAA,EACf,iBAAA,EAAmB,UAAA;AAAA,EACnB,iBAAA,EAAmB,UAAA;AAAA,EACnB,uBAAA,EAAyB,eAAA;AAAA,EACzB,mBAAA,EAAqB,WAAA;AAAA,EACrB,cAAA,EAAgB,OAAA;AAAA,EAChB,iBAAA,EAAmB,UAAA;AAAA,EACnB,gBAAA,EAAkB,SAAA;AAAA,EAClB,gBAAA,EAAkB,SAAA;AAAA,EAClB,cAAA,EAAgB,OAAA;AAAA,EAChB,aAAA,EAAe,UAAA;AAAA,EACf,aAAA,EAAe,MAAA;AAAA,EACf,mBAAA,EAAqB,YAAA;AAAA,EACrB,kBAAA,EAAoB,WAAA;AAAA,EACpB,cAAA,EAAgB,UAAA;AAAA,EAChB,kBAAA,EAAoB,UAAA;AAAA,EACpB,oBAAA,EAAsB,YAAA;AAAA,EACtB,sBAAA,EAAwB,iBAAA;AAAA,EACxB,0BAAA,EAA4B,kBAAA;AAAA,EAC5B,kBAAA,EAAoB,WAAA;AAAA,EACpB,mBAAA,EAAqB,WAAA;AAAA,EACrB,kBAAA,EAAoB,UAAA;AAAA,EACpB,gBAAA,EAAkB,SAAA;AAAA,EAClB,oBAAA,EAAsB,YAAA;AAAA,EACtB,sBAAA,EAAwB,aAAA;AAAA,EACxB,oBAAA,EAAsB,YAAA;AAAA,EACtB,iBAAA,EAAmB,SAAA;AAAA,EACnB,gBAAA,EAAkB,QAAA;AAAA,EAClB,mBAAA,EAAqB,WAAA;AAAA,EACrB,kBAAA,EAAoB,UAAA;AAAA,EACpB,sBAAA,EAAwB,cAAA;AAAA,EACxB,wBAAA,EAA0B,iBAAA;AAAA,EAC1B,YAAA,EAAc,KAAA;AAAA,EACd,4BAAA,EAA8B,iBAAA;AAAA,EAC9B,8BAAA,EAAgC,mBAAA;AAAA,EAChC,uBAAA,EAAyB,eAAA;AAAA,EACzB,mBAAA,EAAqB,OAAA;AAAA,EACrB,wBAAA,EAA0B,eAAA;AAAA,EAC1B,gCAAA,EAAkC,mBAAA;AAAA,EAClC,8BAAA,EAAgC,iBAAA;AAAA,EAChC,iCAAA,EAAmC,mBAAA;AAAA,EACnC,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,qBAAA,EAAuB,YAAA;AAAA,EACvB,mBAAA,EAAqB,cAAA;AAAA,EACrB,mBAAA,EAAqB,WAAA;AAAA,EACrB,6BAAA,EAA+B,oBAAA;AAAA,EAC/B,8BAAA,EAAgC,qBAAA;AAAA,EAChC,0BAAA,EAA4B,eAAA;AAAA,EAC5B,0BAAA,EAA4B,eAAA;AAAA,EAC5B,wBAAA,EAA0B,eAAA;AAAA,EAC1B,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,uBAAA,EAAyB,cAAA;AAAA,EACzB,sBAAA,EAAwB,aAAA;AAAA,EACxB,yBAAA,EAA2B,gBAAA;AAAA,EAC3B,sBAAA,EAAwB,iBAAA;AAAA,EACxB,qBAAA,EAAuB,aAAA;AAAA,EACvB,yBAAA,EAA2B,gBAAA;AAAA,EAC3B,gBAAA,EAAkB,SAAA;AAAA,EAClB,qBAAA,EAAuB,aAAA;AAAA,EACvB,kBAAA,EAAoB,SAAA;AAAA;AAAA,EAEpB,sBAAA,EAAwB,WAAA;AAAA,EACxB,eAAA,EAAiB,QAAA;AAAA,EACjB,oBAAA,EAAsB,aAAA;AAAA,EACtB,mBAAA,EAAqB,WAAA;AAAA,EACrB,oBAAA,EAAsB,YAAA;AAAA,EACtB,kBAAA,EAAoB,UAAA;AAAA,EACpB,kBAAA,EAAoB,UAAA;AAAA,EACpB,iBAAA,EAAmB,SAAA;AAAA;AAAA,EAEnB,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,6BAAA,EAA+B,SAAA;AAAA,EAC/B,2BAAA,EAA6B,SAAA;AAAA,EAC7B,6BAAA,EAA+B,aAAA;AAAA,EAC/B,6BAAA,EAA+B,oBAAA;AAAA,EAC/B,6BAAA,EAA+B,oBAAA;AAAA,EAC/B,oCAAA,EAAsC,oBAAA;AAAA,EACtC,oCAAA,EAAsC,oBAAA;AAAA,EACtC,oCAAA,EAAsC,eAAA;AAAA,EACtC,+BAAA,EAAiC,wBAAA;AAAA,EACjC,2BAAA,EAA6B,cAAA;AAAA,EAC7B,gCAAA,EAAkC,eAAA;AAAA,EAClC,6BAAA,EAA+B,gBAAA;AAAA,EAC/B,0BAAA,EAA4B,aAAA;AAAA,EAC5B,iCAAA,EAAmC,mBAAA;AAAA,EACnC,+BAAA,EAAiC,wBAAA;AAAA,EACjC,+BAAA,EAAiC,sBAAA;AAAA,EACjC,kCAAA,EAAoC,qBAAA;AAAA;AAAA,EAGpC,oBAAA,EACE,mFAAA;AAAA;AAAA,EAGF,eAAA,EAAiB,OAAA;AAAA,EACjB,cAAA,EAAgB,MAAA;AAAA,EAEhB,yBAAA,EAA2B,iBAAA;AAAA,EAC3B,mBAAA,EAAqB,WAAA;AAAA,EACrB,YAAA,EAAc,KAAA;AAAA,EACd,sBAAA,EAAwB,cAAA;AAAA,EACxB,mBAAA,EAAqB,WAAA;AAAA,EACrB,mBAAA,EAAqB,WAAA;AAAA,EACrB,qBAAA,EAAuB,aAAA;AAAA,EACvB,cAAA,EAAgB;AAClB,CAAC,CAAA;;AChID,MAAM,aAAA,GAAgB,OAAO,MAAA,CAAO;AAAA,EAClC,oBAAA,EAAsB,WAAA;AAAA,EACtB,uBAAA,EAAyB,cAAA;AAAA,EACzB,oBAAA,EAAsB,cAAA;AAAA,EACtB,iBAAA,EAAmB,QAAA;AAAA,EACnB,uBAAA,EAAyB,aAAA;AAAA,EACzB,sBAAA,EAAwB,UAAA;AAAA,EACxB,uBAAA,EAAyB;AAC3B,CAAC,CAAA;;ACLM,MAAM,SAAA,GAAY;AAAA,EACvB,GAAG,cAAA;AAAA,EACH,GAAG;AACL;;;;;;;;ACJO,MAAM,kBAAA,GAAN,MAAM,kBAAA,CAAkB;AAAA,EA8BrB,WAAA,GAAc;AAItB,IAAAA,eAAA,CAAA,IAAA,EAAQ,SAAA,sBAAc,GAAA,EAAsD,CAAA;AAH1E,IAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA;AACzB,EARA,WAAkB,QAAA,GAA8B;AAC9C,IAAA,IAAI,CAAC,mBAAkB,SAAA,EAAW;AAChC,MAAA,kBAAA,CAAkB,SAAA,GAAY,IAAI,kBAAA,EAAkB;AAAA;AAEtD,IAAA,OAAO,kBAAA,CAAkB,SAAA;AAAA;AAC3B,EAOQ,IAAI,EAAA,EAAY;AACtB,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA,EAAG;AACzB,MAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,EAAA,EAAI,EAAE,CAAA;AAAA;AAEzB,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA;AAAA;AAC5B,EAEO,QAAQ,EAAA,EAAY;AACzB,IAAA,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,CAAE,QAAA,GAAW,IAAA;AAAA;AAC1B,EACO,OAAO,EAAA,EAAY;AACxB,IAAA,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,CAAE,QAAA,GAAW,KAAA;AAAA;AAC1B,EACO,KAAK,EAAA,EAAY;AACtB,IAAA,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,CAAE,MAAA,GAAS,IAAA;AAAA;AACxB,EACO,WAAW,EAAA,EAAY;AAC5B,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,CAAE,QAAA;AAAA;AACxB,EACO,SAAS,EAAA,EAAY;AAC1B,IAAA,OAAO,CAAC,CAAC,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,CAAE,MAAA;AAAA;AACxB,EACO,KAAK,EAAA,EAAY;AACtB,IAAA,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,CAAE,MAAA,GAAS,KAAA;AAAA;AAE1B,CAAA;AA5DEA,eAAA,CADW,oBACJ,SAAA,EAAU,CAAA,CAAA;AACjBA,eAAA,CAFW,oBAEJ,MAAA,EAAO,CAAA,CAAA;AACdA,eAAA,CAHW,oBAGJ,UAAA,EAAW,CAAA,CAAA;AAClBA,eAAA,CAJW,oBAIJ,MAAA,EAAO,CAAA,CAAA;AACdA,eAAA,CALW,oBAKJ,MAAA,EAAO,CAAA,CAAA;AACdA,eAAA,CANW,oBAMJ,SAAA,EAAU,CAAA,CAAA;AACjBA,eAAA,CAPW,oBAOJ,UAAA,EAAW,CAAA,CAAA;AAClBA,eAAA,CARW,oBAQJ,OAAA,EAAQ,CAAA,CAAA;AACfA,eAAA,CATW,oBASJ,OAAA,EAAQ,CAAA,CAAA;AACfA,eAAA,CAVW,oBAUJ,WAAA,EAAY,CAAA,CAAA;AACnBA,eAAA,CAXW,oBAWJ,OAAA,EAAQ,EAAA,CAAA;AACfA,eAAA,CAZW,oBAYJ,cAAA,EAAe,EAAA,CAAA;AAEtBA,eAAA,CAdW,kBAAA,EAcJ,eAAc,kBAAA,CAAkB,OAAA,CAAA;AACvCA,eAAA,CAfW,kBAAA,EAeJ,gBAAe,kBAAA,CAAkB,QAAA,CAAA;AACxCA,eAAA,CAhBW,kBAAA,EAgBJ,YAAW,kBAAA,CAAkB,IAAA,CAAA;AACpCA,eAAA,CAjBW,kBAAA,EAiBJ,YAAW,kBAAA,CAAkB,QAAA,CAAA;AACpCA,eAAA,CAlBW,kBAAA,EAkBJ,eAAc,kBAAA,CAAkB,OAAA,CAAA;AACvCA,eAAA,CAnBW,kBAAA,EAmBJ,YAAW,kBAAA,CAAkB,IAAA,CAAA;AACpCA,eAAA,CApBW,kBAAA,EAoBJ,aAAY,kBAAA,CAAkB,KAAA,CAAA;AACrCA,eAAA,CArBW,kBAAA,EAqBJ,YAAW,kBAAA,CAAkB,IAAA,CAAA;AAEpCA,eAAA,CAvBW,kBAAA,EAuBI,WAAA,CAAA;AAvBV,IAAM,iBAAA,GAAN;;;;;;;;;;;;;;;;;;;;ACFP,IAAAiB,YAAA,EAAAC,QAAA;AAMO,MAAe,SAAA,CAGtB;AAAA,EAIE,WAAA,CAAY,WAAsB,KAAA,EAAmB;AAHrD,IAAAX,cAAA,CAAA,IAAA,EAAAU,YAAA,EAAA,MAAA,CAAA;AACA,IAAAV,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKQ,YAAA,EAAa,SAAA,CAAA;AAClB,IAAAR,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,IAAI,OAAA,GAAU;AACZ,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,UAAA,CAAW,SAAA;AAAA;AAChC,EAEA,IAAI,KAAA,GAAQ;AACV,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,UAAA,CAAW,EAAA;AAAA;AAChC,EAEA,IAAI,IAAA,GAAO;AACT,IAAA,OAAO,IAAI,QAAA,CAASV,cAAA,CAAA,IAAA,EAAKS,eAAYT,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAS,CAAA;AAAA;AAC5D,EAEA,IAAI,KAAA,GAAQ;AACV,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,KAAA,IAAS,CAAA;AAAA;AACzC,EAEA,WAAA,CAAmC,MAAgB,KAAA,EAAgB;AACjE,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAA,CAAY,IAAA,EAAa,KAAK,CAAA;AAAA;AAC5C,EAEA,YAAmC,IAAA,EAAyB;AAC1D,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAA,CAAY,IAAW,CAAA;AAAA;AAC5C,EAEA,QAAA,GAA8B;AAC5B,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA;AAC5C,EACA,QAAA,GAAoB;AAClB,IAAA,OAAO,CAAC,CAACV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,MAAA;AAAA;AAEpC;AAtCED,YAAA,GAAA,IAAA,OAAA,EAAA;AACAC,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACXF,IAAAA,QAAA;AAcA,MAAqB,oBAAoB,SAAA,CAAkC;AAAA,EAGzE,WAAA,CAAY,WAAsB,KAAA,EAAe;AAC/C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAHxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAIE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,cAAA,GAAuB;AACrB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAU,SAAS,CAAA;AAAA;AACjC;AACF,EAEA,QAAA,GAA0B;AACxB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,KAAA,IAAS,EAAA;AAAA;AAEzC,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,UAAA,GAAmB;AACjB,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,KAAA,GAAQ,EAAA;AAAA;AACjC,EAEA,SAAS,KAAA,EAAqB;AAC5B,IAAA,IAAA,CAAK,WAAA,CAAY,SAAS,KAAK,CAAA;AAAA;AAEnC;AA3BEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACfF,IAAA,UAAA,EAAAA,QAAA;AASO,MAAM,aAAA,CAAc;AAAA,EAEzB,YAAY,SAAA,EAAsB;AADlC,IAAAX,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAEE,IAAAE,cAAA,CAAA,IAAA,EAAK,UAAA,EAAa,SAAA,CAAA;AAAA;AACpB,EAEA,IAAI,QAAA,GAAW;AACb,IAAA,OAAOD,qBAAK,UAAA,CAAA,CAAW,KAAA;AAAA;AACzB,EAEA,IAAI,IAAA,GAAO;AACT,IAAA,OAAOA,qBAAK,UAAA,CAAA,CAAW,IAAA;AAAA;AACzB,EACA,IAAI,EAAA,GAAK;AACP,IAAA,OAAOA,qBAAK,UAAA,CAAA,CAAW,EAAA;AAAA;AACzB,EACA,IAAI,SAAA,GAAY;AACd,IAAA,OAAOA,qBAAK,UAAA,CAAA,CAAW,SAAA;AAAA;AAE3B;AAlBE,UAAA,GAAA,IAAA,OAAA,EAAA;AAoBK,MAAM,+BAAqD,SAAA,CAAU;AAAA,EAG1E,WAAA,CAAY,WAAsB,KAAA,EAA2B;AAC3D,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAHxB,IAAAD,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAIE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,IAAI,SAAA,GAAY;AACd,IAAA,OAAO,IAAI,aAAA,CAAcV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAS,CAAA;AAAA;AAChD,EAEA,UAAA,GAAa;AACX,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAS,EAAE,CAAA;AAAA;AACzB,EAEA,QAAA,GAAW;AACT,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,QAAA,EAAS;AAAA;AAC9B,EAEA,SAAS,CAAA,EAAM;AACb,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAS,CAAC,CAAA;AAAA;AACxB,EACU,SAAA,CAAU,GAAM,OAAA,EAA0B;AAClD,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,QAAA,CAAS,CAAA,EAAG,OAAO,CAAA;AAAA;AACjC,EAEA,QAAA,GAAiC;AAC/B,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,SAAA,CAAU,KAAA;AAAA;AAC/B,EAEA,YACE,IAAA,EACS;AACT,IAAA,OAAO,KAAA,CAAM,YAAY,IAAW,CAAA;AAAA;AAExC;AAnCEA,QAAA,GAAA,IAAA,OAAA,EAAA;;AC7BF,MAAqB,oBAAoB,sBAAA,CAAuB;AAAC;;;;;;;;;;;;;;;;;;;;ACFjE,IAAAA,QAAA;AAUA,MAAqB,oBAAoB,sBAAA,CAEvC;AAAA,EAEA,WAAA,CAAY,WAAsB,KAAA,EAAe;AAC/C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,UAAA,GAAa;AACX,IAAA,OAAO,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA;AAAA;AAC1D,EAEA,aAAa,KAAA,EAAe;AAC1B,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAAA;AACvC;AAAA,EAGA,SAAA,CACE,WAAA,EACA,SAAA,EACA,kBAAA,EACM;AACN,IAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,KAAO,IAAA,EAAM;AACtC,MAAA,IACE,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,IAAA;AAAA,QACjD,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,WAErB,kBAAA,EACA;AACA,QAAA,eAAA,GAAkB,IAAA;AAAA,OACpB,MAAO;AACL,QAAA,eAAA,GAAkB,KAAA;AAAA;AAGpB,MAAA,IAAI,kBAAA,IAAuB,CAAC,eAAA,IAAmB,CAAC,kBAAA;AAC9C,QAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,EAAE,IAAA,CAAK;AAAA,UACtD,KAAA,EAAO,WAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACR,CAAA;AAAA;AACL;AACF;AAAA,EAGA,WAAW,YAAA,EAAqC;AAC9C,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAA,GAAgB,YAAA,CAAa,YAAY,CAAA;AAAA;AAClE;AACF,EAEA,aAAa,WAAA,EAAoC;AAC/C,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,MAAA;AAAA,QACjD,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,OACrB;AAAA;AACF;AACF;AAAA,EAGA,kBAAkB,QAAA,EAAyD;AACzE,IAAA,MAAM,GAAA,GAAM,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA;AAC7D,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,GAAA,GAAM,IAAA;AACV,QAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,KAAM;AACjB,UAAA,IAAI,EAAE,QAAA,EAAU;AACd,YAAA,GAAA,GAAM,CAAA;AAAA;AACR,SACD,CAAA;AACD,QAAA,OAAO,GAAA;AAAA,OACT,MAAO;AACL,QAAA,OAAO,aAAa,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA;AACjD;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,eAAA,GAAiC;AAC/B,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,OACE,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,IAAA;AAAA,QACjD,CAAC,MAAM,CAAA,CAAE;AAAA,SACR,KAAA,IAAS,EAAA;AAAA;AAGhB,IAAA,OAAO,IAAA;AAAA;AACT;AAAA,EAGA,YAAA,GAAqB;AACnB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,OAAA;AAAA,QACjD,CAAC,CAAA,KAAO,CAAA,CAAE,QAAA,GAAW;AAAA,OACvB;AAAA;AACF;AAEJ;AA9FEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACbF,IAAAA,QAAA;AAIA,MAAqB,mBAAmB,sBAAA,CAAuB;AAAA,EAE7D,WAAA,CAAY,WAAsB,KAAA,EAAc;AAC9C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,cAAA,GAAmD;AACjD,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,QAAA,EAAS;AAAA;AAC9B,EAEA,SAAS,CAAA,EAAiB;AACxB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAA,CAAU,SAAA,KAAc,GAAA,EAAK;AAC3C,MAAAV,cAAA,CAAA,IAAA,EAAKU,UAAO,QAAA,CAAS,CAAA,EAAG,EAAE,MAAA,EAAQ,SAAS,CAAA;AAAA,KAC7C,MAAO;AACL,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAS,CAAC,CAAA;AAAA;AACxB;AAEJ;AAjBEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACLF,IAAAA,QAAA;AAKA,MAAqB,kBAAkB,sBAAA,CAErC;AAAA,EAEA,WAAA,CAAY,WAAsB,KAAA,EAAa;AAC7C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,SAAS,CAAA,EAAgD;AACvD,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,QAAA,CAAS,YAAA,CAAa,CAAC,CAAC,CAAA;AAAA;AAExC;AATEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACLF,MAAqB,mBAAmB,sBAAA,CAAuB;AAAA,EAC7D,UAAA,GAAmB;AACjB,IAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AACrB,EAEA,SAAS,KAAA,EAAwC;AAE/C,IAAA,IAAI,GAAA;AACJ,IAAA,MAAM,MAAA,GAAS,OAAO,KAA0B,CAAA;AAChD,IAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,MAAA,KAAW,KAAA,EAAO;AACvC,MAAA,GAAA,GAAM,MAAA;AAAA,KACR,MAAO;AACL,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA;AAEF,IAAA,KAAA,CAAM,SAAS,GAAG,CAAA;AAAA;AAEtB;;;;;;;;;;;;;;;;;;;;ACrBA,IAAAA,QAAA;AAQA,MAAqB,mBAAmB,sBAAA,CAAuB;AAAA,EAE7D,WAAA,CAAY,WAAsB,KAAA,EAAc;AAC9C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,UAAA,GAAa;AACX,IAAA,OAAO,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA;AAAA;AAC1D,EAEA,YAAA,GAA4B;AAC1B,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAA,GAAgB,EAAC;AAAA;AAC1C;AACF,EAEA,aAAa,KAAA,EAAe;AAC1B,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAAA;AACvC,EAEA,SAAA,CACE,UAAA,EACA,SAAA,EACA,kBAAA,EACM;AACN,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,MAAM,WAAA,GAAc,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA;AACrE,MAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM;AAChD,QAAA,OAAO,CAAA,CAAE,KAAA,KAAU,UAAA,CAAW,QAAA,EAAS;AAAA,OACxC,CAAA;AAED,MAAA,IAAI,kBAAA,IAAsB,CAAC,iBAAA,EAAmB;AAC5C,QAAA,WAAA,CAAY,IAAA,CAAK;AAAA,UACf,KAAA,EAAO,WAAW,QAAA,EAAS;AAAA,UAC3B,KAAA,EAAO;AAAA,SACR,CAAA;AAAA;AACH;AACF;AACF,EAEA,WAAW,OAAA,EAAgC;AACzC,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,aAAA,GAAgB,OAAA;AAAA;AACzC;AACF,EAEA,aAAa,UAAA,EAAmC;AAC9C,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,MAAA;AAAA,QACjD,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,OACrB;AAAA;AACF;AACF,EAEA,kBAAkB,QAAA,EAAuD;AACvE,IAAA,MAAM,WAAA,GAAc,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA;AAErE,IAAA,MAAM,WAAW,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AACnD,IAAA,IAAI,CAAC,QAAA;AAAU,MAAA,OAAO,IAAA;AACtB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,OAAA,uBAAc,GAAA,EAA2B;AAC/C,MAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,QAAA,EAAU,KAAK,GAAG,QAAQ,CAAA;AAC7C,MAAA,OAAO,OAAA;AAAA,KACT,MAAO;AACL,MAAA,OAAO,QAAA;AAAA;AACT;AACF,EAEA,eAAA,GAA6C;AAC3C,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,MAAM,aAAA,GAAgB,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,aAAa,CAAA;AACvE,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,OAAO,cAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAA,EAAG,KAAA;AAAA;AAChD;AAEF,IAAA,OAAO,IAAA;AAAA;AAEX;AA7EEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACTF,IAAAA,QAAA;AAQA,MAAqB,sBAAsB,sBAAA,CAAiC;AAAA,EAE1E,WAAA,CAAY,WAAsB,KAAA,EAAiB;AACjD,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,SAAA,CACE,WAAA,EACA,SAAA,EACA,kBAAA,EACM;AACN,IAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,KAAO,IAAA,EAAM;AACtC,MAAA,IACE,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,IAAA;AAAA,QACjD,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,WAErB,kBAAA,EACA;AACA,QAAA,eAAA,GAAkB,IAAA;AAAA,OACpB,MAAO;AACL,QAAA,eAAA,GAAkB,KAAA;AAAA;AAGpB,MAAA,IAAI,kBAAA,IAAuB,CAAC,eAAA,IAAmB,CAAC,kBAAA;AAC9C,QAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,EAAE,IAAA,CAAK;AAAA,UACtD,KAAA,EAAO,WAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACR,CAAA;AAAA;AACL;AACF,EACA,SAAS,KAAA,EAAuB;AAC9B,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAS,KAAK,CAAA;AAAA;AAC5B;AACF,EACA,YAAA,GAAqB;AACnB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,OAAA;AAAA,QACjD,CAAC,CAAA,KAAO,CAAA,CAAE,QAAA,GAAW;AAAA,OACvB;AAAA;AACF;AACF,EACA,kBAAkB,QAAA,EAAyD;AACzE,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,MAAM,QAAA,GAAW,YAAA;AAAA,QACfV,cAAA,CAAA,IAAA,EAAKU,UAAO,UAAA,CAAW;AAAA,OACzB,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAE1B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,MAAM,OAAA,uBAAc,GAAA,EAA2B;AAC/C,UAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,CAAE,KAAK,CAAA,EAAG,CAAC,CAAC,CAAA;AACvD,UAAA,OAAO,OAAA;AAAA;AAGT,QAAA,OAAO,QAAA;AAAA;AACT;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,UAAA,GAAa;AACX,IAAA,OAAO,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA;AAAA;AAC1D,EAEA,WAAW,YAAA,EAAqC;AAC9C,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAA,GAAgB,YAAA,CAAa,YAAY,CAAA;AAAA;AAClE;AACF,EACA,aAAa,WAAA,EAAoC;AAC/C,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,YAAA,CAAaV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,aAAa,CAAA,CAAE,MAAA;AAAA,QACjD,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU;AAAA,OACrB;AAAA;AACF;AAEJ;AA9EEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACPF,MAAqB,oBAAoB,sBAAA,CAAuB;AAAC;;ACAjE,MAAqB,kBAAkB,sBAAA,CAAuB;AAAC;;;;;;;;;;;;;;;;;;;;ACF/D,IAAAA,QAAA;AAYA,MAAqB,mBAAmB,SAAA,CAAiC;AAAA,EAEvE,WAAA,CAAY,WAAsB,KAAA,EAAc;AAC9C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,UAAA,GAAmB;AACjB,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,+BAAA;AAAA,OACjE;AAAA;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,QAAA,GAAiB;AACf,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,qBAAA;AAAA,KACjE;AAAA;AACF,EAEA,QAAA,GAAiB;AACf,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,+BAAA;AAAA,OACjE;AAAA;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,QAAA,GAAiB;AACf,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,EAAA,EAAI;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,+BAAA;AAAA,OACjE;AAAA;AAEF,IAAA,OAAO,IAAA;AAAA;AAEX;AAtCEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACbF,IAAAA,QAAA;AASA,MAAqB,kBAAkB,SAAA,CAAgC;AAAA,EAErE,WAAA,CAAY,WAAsB,KAAA,EAAa;AAC7C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,QAAA,GAAiB;AACf,IAAA,IAAIV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAA,EAAW;AACpC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,qBAAA;AAAA,OACjE;AAAA;AACF;AAEJ;AAbEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACVF,IAAAA,QAAA;AASA,MAAqB,kBAAkB,SAAA,CAAgC;AAAA,EAErE,WAAA,CAAY,WAAsB,KAAA,EAAc;AAC9C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,QAAA,GAAiB;AACf,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,qBAAA;AAAA,KACjE;AAAA;AACF,EACA,SAAS,KAAA,EAAqB;AAC5B,IAAA,IAAA,CAAK,WAAA,CAAY,SAAS,KAAK,CAAA;AAAA;AAEnC;AAdEA,QAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACVF,IAAAA,QAAA;AAGO,MAAM,oBAAA,CAAqB;AAAA,EAEhC,YAAY,KAAA,EAAwB;AADpC,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAEE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,UAAU,IAAA,EAAc;AACtB,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAU,IAAI,CAAA;AAAA;AAC5B,EACA,YAAY,IAAA,EAAmB;AAC7B,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAA,CAAY,IAAI,CAAA;AAAA;AACrC,EACA,QAAA,GAAiB;AACf,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA;AAC3C,EACA,QAAA,GAAoB;AAClB,IAAA,OAAO,KAAA;AAAA;AACT,EACA,eAAe,OAAA,EAAiB;AAC9B,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,cAAA,CAAe,OAAO,CAAA;AAAA;AAC3C,EACA,QAAA,CAAS,OAAA,EAAiB,KAAA,GAAQ,CAAA,EAAG;AACnC,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,QAAA,CAAS,OAAA,EAAS,KAAK,CAAA;AAAA;AAC5C,EACA,WAAA,CACE,MACA,KAAA,EACM;AACN,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAA,CAAY,IAAA,EAAM,KAAK,CAAA;AAAA;AACrC,EACA,cAAA,CAAe,SAAiB,KAAA,EAAe;AAC7C,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,cAAA,CAAe,OAAA,EAAS,KAAK,CAAA;AAAA;AAClD,EACA,QAAA,CAAS,OAAA,EAAiB,KAAA,EAAY,KAAA,GAAQ,CAAA,EAAG;AAC/C,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,QAAA,CAAS,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA;AAErD;AAnCEA,QAAA,GAAA,IAAA,OAAA,EAAA;;AC4CK,MAAM,cAAA,GAAkC,CAC7C,SAAA,EACA,KAAA,KACG;AACH,EAAA,IAAI,iBAAiB,eAAA,EAAiB;AACpC,IAAA,OAAO,IAAI,qBAAqB,KAAK,CAAA;AAAA,GACvC,MAAO;AACL,IAAA,MAAM,EAAE,SAAA,EAAU,GAAI,KAAA,CAAM,UAAA;AAC5B,IAAA,IAAI,QAAA,GAAmC,IAAA;AAEvC,IAAA,IAAI,iBAAiB,UAAA,EAAY;AAC/B,MAAA,OAAO,IAAI,eAAA,CAAgB,SAAA,EAAW,KAAmB,CAAA;AAAA;AAG3D,IAAA,QAAQ,SAAA;AAAW,MACjB,KAAK,cAAA,CAAe,UAAA;AAClB,QAAA,QAAA,GAAW,IAAI,UAAA,CAAW,SAAA,EAAW,KAAc,CAAA;AACnD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,aAAA;AAClB,QAAA,QAAA,GAAW,IAAI,aAAA,CAAc,SAAA,EAAW,KAAiB,CAAA;AACzD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,WAAA;AAClB,QAAA,QAAA,GAAW,IAAI,WAAA,CAAY,SAAA,EAAW,KAAe,CAAA;AACrD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,UAAA;AAClB,QAAA,QAAA,GAAW,IAAI,UAAA,CAAW,SAAA,EAAW,KAAc,CAAA;AACnD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,UAAA;AAClB,QAAA,QAAA,GAAW,IAAI,UAAA,CAAW,SAAA,EAAW,KAAiB,CAAA;AACtD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,WAAA;AAClB,QAAA,QAAA,GAAW,IAAI,WAAA,CAAY,SAAA,EAAW,KAAe,CAAA;AACrD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,aAAA;AAClB,QAAA,QAAA,GAAW,IAAI,aAAA,CAAc,SAAA,EAAW,KAAiB,CAAA;AACzD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,WAAA;AAClB,QAAA,QAAA,GAAW,IAAI,WAAA,CAAY,SAAA,EAAW,KAAe,CAAA;AACrD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,SAAA;AAClB,QAAA,QAAA,GAAW,IAAIC,SAAA,CAAc,SAAA,EAAW,KAAiB,CAAA;AACzD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,SAAA;AAClB,QAAA,QAAA,GAAW,IAAI,SAAA,CAAU,SAAA,EAAW,KAAa,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,UAAA;AAClB,QAAA,QAAA,GAAW,IAAI,UAAA,CAAW,SAAA,EAAW,KAAc,CAAA;AACnD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,SAAA;AAClB,QAAA,QAAA,GAAW,IAAI,SAAA,CAAU,SAAA,EAAW,KAAa,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,UAAA;AAClB,QAAA,QAAA,GAAW,IAAI,SAAA,CAAU,SAAA,EAAW,KAAc,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,UAAA;AAClB,QAAA,QAAA,GAAW,IAAI,SAAA,CAAU,SAAA,EAAW,KAAc,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,SAAA;AAClB,QAAA,QAAA,GAAW,IAAI,iBAAA,CAAkB,SAAA,EAAW,KAAa,CAAA;AACzD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,YAAA;AAClB,QAAA,QAAA,GAAW,IAAI,YAAA,CAAa,SAAA,EAAW,KAAgB,CAAA;AACvD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,SAAA;AAClB,QAAA,QAAA,GAAW,IAAI,SAAA,CAAU,SAAA,EAAW,KAAa,CAAA;AACjD,QAAA;AAAA,MACF,KAAK,cAAA,CAAe,WAAA;AAClB,QAAA,QAAA,GAAW,IAAI,WAAA,CAAY,SAAA,EAAW,KAAe,CAAA;AACrD,QAAA;AAEA;AAGJ,IAAA,OAAO,QAAA;AAAA;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;AC3HA,IAAAF,YAAA,EAAAC,QAAA,EAAA,MAAA;AASA,MAAqB,kBAAkB,SAAA,CAAU;AAAA,EAI/C,WAAA,CAAY,WAAsB,KAAA,EAAa;AAC7C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAJxB,IAAAX,cAAA,CAAA,IAAA,EAAAU,YAAA,EAAA,MAAA,CAAA;AACA,IAAAV,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAQA,IAAAX,cAAA,CAAA,IAAA,EAAA,MAAA,EAAS,IAAI,KAAA,EAAM,CAAA;AAJjB,IAAAE,cAAA,CAAA,IAAA,EAAKQ,YAAA,EAAa,SAAA,CAAA;AAClB,IAAAR,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAIA,MAAM,MAAA,GAAgC;AACpC,IAAA,IAAI;AACF,MAAA,MAAMV,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAC1B,MAAA,MAAM,MAAA,GAAS,MAAMA,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,MAAA,EAAO;AAExC,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,IAAA,CAAK,MAAA,CAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAU,CAAA;AAAA;AAG3C,MAAA,OAAO,EAAC;AAAA,KACV,SAAE;AACA,MAAAV,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAAA;AACtB;AACF,EAEA,SAAA,GAAY;AACV,IAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA;AACrC,EAEA,SAAA,GAAY;AACV,IAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA;AACrC,EAEA,MAAM,SAAS,KAAA,EAAe;AAC5B,IAAA,IAAI;AACF,MAAA,MAAMA,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAE1B,MAAA,MAAM,GAAA,GAAMA,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,kBAAA,CAAmB,KAAK,CAAA;AAEhD,MAAA,IAAI,CAAC,GAAA,EAAK;AACR,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,IAAA,EAAO,KAAK,CAAA,UAAA,CAAY,CAAA;AAAA;AAG1C,MAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,KAAM;AACjB,QAAA,IAAI,CAAA,YAAa,kBAAA;AAAoB,UAAA,CAAA,CAAE,MAAM,KAAA,GAAQ,EAAA;AAAA,OACtD,CAAA;AAAA,KACH,SAAE;AACA,MAAAV,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAAA;AACtB;AACF,EAEA,SAAA,GAAuB;AACrB,IAAAA,cAAA,CAAA,IAAA,EAAKU,UAAO,iBAAA,EAAkB;AAC9B,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAM,aAAA,GAAgB;AACpB,IAAA,IAAI;AACF,MAAA,MAAMV,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAC1B,MAAA,MAAMA,cAAA,CAAA,IAAA,EAAKU,UAAO,aAAA,EAAc;AAAA,KAClC,SAAE;AACA,MAAAV,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAAA;AACtB;AACF,EAEA,MAAM,UAAA,GAAa;AACjB,IAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA;AACrC,EAEA,UAAA,GAAa;AACX,IAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA;AACrC,EAEA,MAAM,UAAU,KAAA,EAAe;AAC7B,IAAA,IAAI;AACF,MAAA,MAAMA,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAC1B,MAAAA,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,KAAK,CAAA;AAAA,KAC9B,SAAE;AACA,MAAAV,cAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAAA;AACtB;AACF,EAEA,QAAQ,KAAA,EAAe;AACrB,IAAA,SAAA,CAAUA,cAAA,CAAA,IAAA,EAAKS,aAAU,CAAA,CAAE,aAAA;AAAA,MACzB,IAAI,YAAY,iBAAA,EAAmB;AAAA,QACjC,MAAA,EAAQ,EAAE,KAAA,EAAO,IAAA,EAAMT,qBAAKU,QAAA,CAAA;AAAO,OACpC;AAAA,KACH;AAAA;AACF,EAEA,mBAAmB,gBAAA,EAA4B;AAC7C,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAChB,eAAA,EAAgB,CAChB,GAAA;AAAA,MACC,CAAC,GAAA,KACC,GAAA,CAAI,QAAA,EAAS,IACZ,gBAAA,GAAmB,CAACH,OAAA,CAAMP,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAU,CAAA,GAAI,CAAA;AAAA,KACzD;AAAA;AACJ,EAEA,aAAA,GAAgB;AACd,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CACT,aAAA,EAAc,CACd,GAAA;AAAA,MAAI,CAAC,CAAA,KACJ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,cAAA,CAAeV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,OAAA,EAAQ,CAAE,SAAA,EAAW,CAAC,CAAC;AAAA,KACjE;AAAA;AACJ,EAEA,UAAU,SAAA,EAAmB;AAC3B,IAAA,MAAM,MAAA,GAASV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAA,CAAU,SAAS,CAAA;AAC9C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAO,YAAA,CAAa,MAAM,CAAA,CAAE,GAAA;AAAA,QAAI,CAAC,MAC/B,cAAA,CAAeV,cAAA,CAAA,IAAA,EAAKU,UAAO,OAAA,EAAQ,CAAE,WAAW,CAAE;AAAA,OACpD;AAAA;AAEF,IAAA,OAAO,EAAC;AAAA;AACV,EAEA,cAAA,GAAiB;AACf,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,cAAA,EAAe;AAAA;AACpC,EAEA,QAAA,CAAS,WAAmB,UAAA,EAAqB;AAC/C,IAAA,MAAM,MAAA,GAASV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,QAAA,CAAS,WAAW,UAAU,CAAA;AAEzD,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAO,eAAe,MAAA,GAClB,cAAA;AAAA,QACEV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,OAAA,EAAQ,CAAE,SAAA;AAAA,QACtB,YAAA,CAAa,MAAM,CAAA,CAAE,CAAC;AAAA,OACxB,GACA,aAAa,MAAM,CAAA,CAChB,IAAI,CAAC,CAAA,KAAM,eAAeV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,SAAQ,CAAE,SAAA,EAAW,CAAC,CAAC,CAAA,CAC7D,OAAO,CAAC,CAAA,KAAuB,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA;AAGlD,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,YAAA,GAAe;AACb,IAAA,OAAOV,qBAAKU,QAAA,CAAA,CAAO,SAAA;AAAA;AACrB,EAEA,WAAA,GAAc;AACZ,IAAA,OAAOV,qBAAKU,QAAA,CAAA,CAAO,QAAA;AAAA;AACrB,EAEA,OAAO,KAAA,EAAe;AACpB,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CACT,kBAAA,CAAmB,KAAK,GACvB,GAAA,CAAI,CAAC,CAAA,KAAM,cAAA,CAAeV,qBAAKU,QAAA,CAAA,CAAO,OAAA,EAAQ,CAAE,SAAA,EAAW,CAAC,CAAE,CAAA;AAAA;AACpE,EAEA,YAAA,GAA+B;AAC7B,IAAA,MAAM,QAAA,GAAWV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,eAAA,EAAgB;AAC7C,IAAA,MAAM,YAA4B,EAAC;AACnC,IAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,KAAM;AACtB,MAAA,MAAM,MAAoB,EAAC;AAC3B,MAAA,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,MAAM,cAAA,CAAeV,cAAA,CAAA,IAAA,EAAKU,UAAO,OAAA,EAAQ,CAAE,WAAW,CAAC,CAAA;AAC7D,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA;AACd,OACD,CAAA;AACD,MAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAAA,KACnB,CAAA;AACD,IAAA,OAAO,SAAA;AAAA;AACT,EAEA,IAAI,EAAA,GAAK;AACP,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,UAAA,CAAW,EAAA;AAAA;AAChC,EAEA,OAAA,GAAU;AACR,IAAA,OAAOV,cAAA,CAAA,IAAA,EAAKU,UAAO,UAAA,CAAW,KAAA;AAAA;AAChC,EAEA,IAAI,SAAA,GAAY;AACd,IAAA,OAAOV,qBAAKU,QAAA,CAAA,CAAO,MAAA;AAAA;AACrB,EAEA,sBAAA,CAAuB,WAAmB,OAAA,EAAmB;AAC3D,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,sBAAA,CAAuB,SAAA,EAAW,OAAO,CAAA;AAAA;AACvD,EAEA,kBAAA,CAAmB,OAAe,OAAA,EAAmB;AACnD,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,kBAAA,CAAmB,KAAA,EAAO,OAAO,CAAA;AAAA;AAC/C,EAEA,oBAAA,CAAqB,UAAkB,OAAA,EAAmB;AACxD,IAAAV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,oBAAA,CAAqB,QAAA,EAAU,OAAO,CAAA;AAAA;AAEtD;AAjMED,YAAA,GAAA,IAAA,OAAA,EAAA;AACAC,QAAA,GAAA,IAAA,OAAA,EAAA;AAQA,MAAA,GAAA,IAAA,OAAA,EAAA;;ACdF,MAAqB,qBAAqB,SAAA,CAAmC;AAAC;;;;;;;;;;;;;;;;;;;;ACL9E,IAAAA,QAAA;AAKA,MAAqB,0BAA0B,sBAAA,CAAuB;AAAA,EAEpE,WAAA,CAAY,WAAsB,KAAA,EAAa;AAC7C,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAAW,QAAA,EAAA,MAAA,CAAA;AAGE,IAAAT,cAAA,CAAA,IAAA,EAAKS,QAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,SAAS,EAAA,EAAoC;AAC3C,IAAA,QAAA;AAAA,MACE,MAAM;AACJ,QAAAV,cAAA,CAAA,IAAA,EAAKU,UAAO,QAAA,EAAS;AAAA,OACvB;AAAA,MACA,MAAM;AACJ,QAAA,EAAA,CAAGV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,QAAA,EAAU,CAAA;AAAA,OAC3B;AAAA,MACA,EAAE,iBAAiB,KAAA;AAAM,KAC3B;AAAA;AACF,EAEA,QAAA,GAAiB;AACf,IAAA,IAAIV,qBAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,MAAMV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,WAAW,SAAA,EAAW;AACjE,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,4BAAA,EAA+BV,cAAA,CAAA,IAAA,EAAKU,QAAA,CAAA,CAAO,UAAA,CAAW,SAAS,CAAA,+BAAA;AAAA,OACjE;AAAA;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAM,gBAAA,GAAkC;AACtC,IAAA,MAAMV,cAAA,CAAA,IAAA,EAAKU,UAAO,gBAAA,EAAiB;AAAA;AAEvC;AA9BEA,QAAA,GAAA,IAAA,OAAA,EAAA;;ACJF,MAAqB,sBAAsB,SAAA,CAAU;AAAC;;;;;;;;;;;;;;;;;;;;ACFtD,IAAA,MAAA;AAIA,MAAqB,wBAAwB,sBAAA,CAAuB;AAAA,EAElE,WAAA,CAAY,WAAsB,KAAA,EAAmB;AACnD,IAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAFxB,IAAAX,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAGE,IAAAE,cAAA,CAAA,IAAA,EAAK,MAAA,EAAS,KAAA,CAAA;AAAA;AAChB,EAEA,cAAA,GAA6B;AAC3B,IAAA,OAAOD,cAAA,CAAA,IAAA,EAAK,QAAO,QAAA,EAAS;AAAA;AAC9B,EAEA,SAAS,CAAA,EAAc;AACrB,IAAAA,cAAA,CAAA,IAAA,EAAK,MAAA,CAAA,CAAO,SAAS,CAAC,CAAA;AAAA;AACxB,EACA,MAAa,uBAAuB,KAAA,EAAe;AACjD,IAAA,MAAMA,cAAA,CAAA,IAAA,EAAK,MAAA,CAAA,CAAO,sBAAA,CAAuB,KAAK,CAAA;AAAA;AAElD;AAhBE,MAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACLF,IAAA,KAAA,EAAAS,YAAA;AAWO,MAAM,QAAA,CAA8B;AAAA,EAGzC,WAAA,CAAY,WAAsB,IAAA,EAAY;AAF9C,IAAAV,cAAA,CAAA,IAAA,EAAA,KAAA,EAAA,MAAA,CAAA;AACA,IAAAA,cAAA,CAAA,IAAA,EAAAU,YAAA,EAAA,MAAA,CAAA;AAEE,IAAAR,cAAA,CAAA,IAAA,EAAK,KAAA,EAAQ,IAAA,CAAA;AACb,IAAAA,cAAA,CAAA,IAAA,EAAKQ,YAAA,EAAa,SAAA,CAAA;AAAA;AACpB,EAEA,YAAA,GAAuB;AACrB,IAAA,OAAOT,cAAA,CAAA,IAAA,EAAK,OAAM,UAAA,CAAW,SAAA;AAAA;AAC/B,EAEA,QAAA,GAA0B;AACxB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,OAAM,UAAA,CAAW,EAAA;AAAA;AAC/B,EAEA,WAAA,GAAsB;AACpB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,OAAM,UAAA,CAAW,QAAA;AAAA;AAC/B,EACA,YAAA,GAAuB;AACrB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,OAAM,UAAA,CAAW,SAAA;AAAA;AAC/B,EACA,QAAA,GAAiB;AACf,IAAAA,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,WAAA,CAAY,cAAA,EAAgB,KAAK,CAAA;AAAA;AAC9C,EACA,SAAA,GAAkB;AAChB,IAAAA,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,WAAA,CAAY,cAAA,EAAgB,IAAI,CAAA;AAAA;AAC7C,EACA,YACE,IAAA,EACS;AACT,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,WAAA,CAAY,IAAW,CAAA;AAAA;AAC3C,EACA,WAAA,CACE,MACA,KAAA,EACM;AACN,IAAA,IAAI,SAAS,UAAA,EAAY;AACvB,MAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAAA;AAE5D,IAAAA,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,WAAA,CAAY,IAAA,EAAM,KAAY,CAAA;AAAA;AAC3C,EACA,mBAAmB,OAAA,EAAiB;AAClC,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,2BAAA,CAA4B,OAAO,CAAA;AAAA;AACvD,EACA,QAAA,CAAS,KAAsB,KAAA,EAAwC;AACrE,IAAA,MAAM,KAAA,GAAQA,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,QAAA,CAAS,KAAe,KAAK,CAAA;AAEtD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,cAAA,CAAeA,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,EAAY,KAA2B,CAAA;AAAA;AAGpE,IAAA,OAAO,MAAA;AAAA;AACT,EACA,aAAa,KAAA,EAAe;AAC1B,IAAA,MAAM,KAAA,GAAQT,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,YAAA,CAAa,KAAK,CAAA;AAE3C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,cAAA,CAAeA,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,EAAY,KAAc,CAAA;AAAA;AAGvD,IAAA,OAAO,MAAA;AAAA;AACT,EACA,eAAe,IAAA,EAA4B;AACzC,IAAA,OAAO,YAAA,CAAaT,qBAAK,KAAA,CAAA,CAAM,cAAA,CAAe,IAAI,CAAC,CAAA,CAChD,IAAI,CAAC,CAAA,KAAM,eAAeA,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,EAAY,CAAC,CAAC,CAAA,CAC7C,OAAO,CAAC,CAAA,KAAuB,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA;AAC9C,EACA,YAAA,GAA6B;AAC3B,IAAA,OAAOT,qBAAK,KAAA,CAAA,CAAM,SAAA,CACf,GAAA,CAAI,CAAC,MAAM,cAAA,CAAeA,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,EAAY,CAAC,CAAC,CAAA,CAC7C,MAAA,CAAO,CAAC,CAAA,KAAuB,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA;AAC9C,EACA,SAAA,CAAU,qBAA8B,eAAA,EAAgC;AACtE,IAAA,IAAA,CAAK,YAAA,EAAa,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACjC,MAAA,IAAI,eAAA,IAAmB,aAAa,SAAA,EAAW;AAC7C,QAAA,CAAA,CAAE,SAAA,EAAU;AAAA;AAGd,MAAA,IAAI,aAAa,sBAAA,EAAwB;AACvC,QAAA,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY,UAAU,KAAK,mBAAA,EAAqB;AACrD,UAAA,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA;AACf;AACF,KACD,CAAA;AAAA;AACH,EAEA,SAAA,GAAY;AACV,IAAAT,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,CAAW,IAAA,CAAK,eAAA,EAAiBT,cAAA,CAAA,IAAA,EAAK,KAAA,CAAK,CAAA;AAAA;AAClD,EAEA,WAAA,CAAY,OAAmB,QAAA,EAAU;AACvC,IAAAA,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,CAAW,KAAK,iBAAA,EAAmB,EAAE,MAAMT,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA,EAAO,MAAM,CAAA;AAAA;AACpE,EAEA,eAAA,CAAgB,eAAuB,EAAA,EAAiB;AACtD,IAAAA,cAAA,CAAA,IAAA,EAAKS,YAAA,CAAA,CAAW,KAAK,iBAAA,EAAmB;AAAA,MACtC,MAAMT,cAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAAA,MACX,aAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA;AAEL;AArGE,KAAA,GAAA,IAAA,OAAA,EAAA;AACAS,YAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACbF,IAAA,UAAA;AAcO,MAAM,aAAA,CAAwC;AAAA,EAGnD,YAAY,SAAA,EAAsB;AAFlC,IAAAV,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAGE,IAAAE,cAAA,CAAA,IAAA,EAAK,UAAA,EAAa,SAAA,CAAA;AAAA;AACpB,EAEA,WAAW,MAAA,EAAiC;AAC1C,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA;AACrD,EACA,aAAa,MAAA,EAAiC;AAC5C,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA;AACrD,EACA,OAAA,CAAQ,QAAgB,IAAA,EAAoB;AAC1C,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA;AACrD,EACA,YAAY,KAAA,EAAqB;AAC/B,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA;AACrD,EACA,WAAA,CACE,KAAA,EACA,MAAA,EACA,WAAA,EACM;AACN,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA;AACrD,EAEA,aAAA,CAAc,SAAiB,OAAA,EAAuC;AACpE,IAAA,MAAM,IAAA,GAAOD,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,aAAA,CAAc,SAAS,OAAO,CAAA;AAC3D,IAAA,IAAI,IAAA;AAAM,MAAA,OAAO,IAAI,QAAA,CAASA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,EAAY,IAAI,CAAA;AACnD,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,SAAA,CACE,OAAA,EACA,MAAA,EACA,UAAA,EACA,OACA,MAAA,EACA;AACA,IAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,aAAA,EAAe;AAAA,MAClC,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA;AACH,EAEA,aAAA,GAAgB;AAAA;AAAC,EAEjB,kBAAkB,MAAA,EAAgB;AAChC,IAAA,MAAM,EAAA,GAAK,OAAO,MAAM,CAAA;AAExB,IAAA,QAAQ,EAAA;AAAI,MACV,KAAK,iBAAA,CAAkB,OAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,OAAA,EAAQ;AAC7B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,IAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,IAAA,EAAK;AAC1B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,QAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,IAAA,EAAK;AAC1B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,IAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,IAAA,EAAK;AAC1B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,OAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,OAAA,EAAQ;AAC7B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,QAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,QAAA,EAAS;AAC9B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,KAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,KAAA,EAAM;AAC3B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,SAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,QAAA,EAAS;AAC9B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,KAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,KAAA,EAAM;AAC3B,QAAA;AAAA,MACF,KAAK,iBAAA,CAAkB,YAAA;AACrB,QAAAA,cAAA,CAAA,IAAA,EAAK,YAAW,aAAA,EAAc;AAC9B,QAAA;AAAA;AACJ;AACF,EAEA,oBAAoB,EAAA,EAAkB;AACpC,IAAA,iBAAA,CAAkB,QAAA,CAAS,QAAQ,EAAE,CAAA;AAAA;AACvC,EAEA,mBAAmB,EAAA,EAAkB;AACnC,IAAA,iBAAA,CAAkB,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA;AACtC,EAEA,WAAA,GAA2B;AACzB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CACT,WAAA,EAAY,CACZ,GAAA,CAAI,CAAC,CAAA,KAAM,IAAI,QAAA,CAASA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,EAAY,CAAC,CAAC,CAAA;AAAA;AAChD,EACA,kBAAkB,IAAA,EAA8B;AAC9C,IAAA,OAAOA,qBAAK,UAAA,CAAA,CAAW,WAAA,GAAc,MAAA,CAAmB,CAAC,KAAK,CAAA,KAAM;AAClE,MAAA,IAAI,CAAA,CAAE,UAAA,CAAW,SAAA,KAAc,IAAA,EAAM;AACnC,QAAA,GAAA,CAAI,KAAK,IAAI,QAAA,CAASA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,EAAY,CAAC,CAAC,CAAA;AAAA;AAE3C,MAAA,OAAO,GAAA;AAAA,KACT,EAAG,EAAE,CAAA;AAAA;AACP,EAEA,WAAA,CACE,SACA,KAAA,EACuC;AACvC,IAAA,MAAM,SAAuB,EAAC;AAC9B,IAAA,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAA,CAAE,OAAA;AAAA,MAAQ,CAAC,CAAA,KACvC,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAe;AAAA,KAC7C;AACA,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,sBAAA,GAAwC;AACtC,IAAA,OAAO,SAAA,CAAUA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAU,CAAA,CAAE,SAAA;AAAA;AACpC,EAEA,qBAAA,GAAuC;AACrC,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,WAAA,CAAY,UAAA,EAAY,WAAA,IAAe,EAAA;AAAA;AAChE,EACA,cAAA,GAAgC;AAC9B,IAAA,OAAOA,qBAAK,UAAA,CAAA,CAAW,WAAA;AAAA;AACzB,EAEA,kBAAA,GAAoC;AAClC,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,WAAA,CAAY,UAAA,EAAY,QAAA,IAAY,EAAA;AAAA;AAC7D,EAEA,cAAc,OAAA,EAAmC;AAC/C,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA;AACrC,IAAA,IAAI,GAAA;AAAK,MAAA,OAAO,GAAA;AAChB,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,OAAA,CAAQ,SAAiB,OAAA,EAAoC;AAC3D,IAAA,IAAI,OAAA,KAAY,GAAA;AAAK,MAAA,OAAO,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,OAAO,CAAA;AAC/D,IAAA,IAAI,OAAA,KAAY,GAAA;AAAK,MAAA,OAAO,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,OAAO,CAAA;AAC/D,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,GAAG,CAAA;AAC5C,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAO,IAAA;AAAA;AAET,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,GAAG,CAAA;AAC7C,IAAA,OAAO,KAAA;AAAA;AACT,EAEA,kBAAA,GAAqB;AACnB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,YAAW,kBAAA,EAAmB;AAAA;AAC5C,EAEA,cAAA,GAAiB;AACf,IAAA,OAAO,KAAK,kBAAA,EAAmB;AAAA;AACjC,EAEA,mBAAA,GAAsB;AACpB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,kBAAA,EAAmB,EAAG,MAAM,CAAC,CAAA;AAAA;AACtD,EAEA,iBAAA,GAAoB;AAClB,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,kBAAA,EAAmB,CAAE,CAAC,CAAA;AAAA;AAC/C,EAEA,aAAA,GAAgB;AACd,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,kBAAA,EAAmB,CAAE,CAAC,CAAA;AAAA;AAC/C,EAEA,eAAe,OAAA,EAAmC;AAChD,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA;AACrC,IAAA,IAAI,GAAA;AAAK,MAAA,OAAO,GAAA;AAChB,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,WAAA,GAA6B;AAC3B,IAAA,IAAI;AACF,MAAA,OAAO,SAAA,CAAUA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAU,CAAA,CAAE,iBAAA;AAAA,aAC3B,CAAA,EAAY;AACnB,MAAA,IAAI,aAAa,KAAA,EAAO;AACtB,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,kBAAA,EAAqB,CAAA,CAAE,OAAO,CAAA,CAAE,CAAA;AAAA;AAChD;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,iBAAiB,EAAA,EAAkB;AACjC,IAAA,iBAAA,CAAkB,QAAA,CAAS,KAAK,EAAE,CAAA;AAAA;AACpC,EAEA,uBAAuB,EAAA,EAAY;AACjC,IAAA,OAAO,iBAAA,CAAkB,QAAA,CAAS,UAAA,CAAW,EAAE,CAAA;AAAA;AACjD,EACA,qBAAqB,EAAA,EAAY;AAC/B,IAAA,OAAO,iBAAA,CAAkB,QAAA,CAAS,QAAA,CAAS,EAAE,CAAA;AAAA;AAC/C,EAEA,QAAA,GAAW;AACT,IAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAK,IAAA,EAAK;AAAA;AAC5B,EAEA,mBAAmB,KAAA,EAAiB;AAClC,IAAA,SAAA,CAAUA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAU,CAAA,CAAE,eAAA,GAAkB,KAAA;AAAA;AAC/C,EAEA,YAAA,CAAa,YAAoB,SAAA,EAAyB;AACxD,IAAAA,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,YAAA,CAAa,UAAA,EAAY,SAAS,CAAA;AAAA;AACpD,EAEA,iBAAiB,EAAA,EAAkB;AACjC,IAAA,iBAAA,CAAkB,QAAA,CAAS,KAAK,EAAE,CAAA;AAAA;AACpC,EAEA,aAAA,CAAc,SAAiB,MAAA,EAAiB;AAC9C,IAAA,IAAA,CAAK,SAAA,CAAU,SAAS,MAAM,CAAA;AAAA;AAChC,EACA,UAAU,KAAA,EAAuB;AAC/B,IAAA,IAAI,MAAA,CAAO,cAAA;AACT,MAAC,OAAO,cAAA,CAAuB,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAU,CAAA,KAAc;AACvE,QAAA,IAAI,YAAA,CAAa,KAAK,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA;AAAG,UAAA,GAAA,CAAI,IAAA,EAAK;AAAA,OAC/C,CAAA;AAAA;AAEP;AAjOE,UAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfF,IAAA,UAAA;AAuCO,MAAM,eAAA,CAAgB;AAAA,EAW3B,WAAA,CACS,WACS,UAAA,EAChB;AAFO,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AACS,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAZlB,IAAAD,cAAA,CAAA,IAAA,EAAA,UAAA,EAAa,KAAA,CAAA;AACb,IAAAP,eAAA,CAAA,IAAA,EAAQ,QAAa,EAAC,CAAA;AACtB,IAAAA,eAAA,CAAA,IAAA,EAAQ,QAAA,EAAgC;AAAA,MACtC,SAAA,EAAW,KAAA;AAAA,MACX,YAAY,EAAC;AAAA,MACb,YAAY,EAAC;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAA,EAAW;AAAA,KACb,CAAA;AAME,IAAA,IAAI,WAAW,sBAAA,EAAwB;AACrC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,mCAAA,EAAsC,UAAA,CAAW,IAAI,CAAA,EAAA,EAAK,WAAW,sBAAsB,CAAA;AAAA,OAC7F;AAAA;AAGF,IAAA,cAAA,CAA0C,IAAA,EAAM;AAAA,MAC9C,MAAA,EAAQ,UAAA;AAAA,MACR,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,IAAA,CAAK,gBAAA,CAAiB,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA;AAC9C,EAEA,IAAW,KAAA,GAA6C;AACtD,IAAA,OAAO,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA;AACzB,EAEO,aAAA,GAAmB;AACxB,IAAA,OAAO,KAAK,KAAA,CAAM,UAAA;AAAA;AACpB,EAEO,cAAA,GAAiB;AACtB,IAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,EAAY,KAAK,IAAI,CAAA;AAAA;AAChD,EAEA,MAAM,KAAK,IAAA,EAAY;AACrB,IAAA,IAAIQ,cAAA,CAAA,IAAA,EAAK,UAAA,CAAA;AAAY,MAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC9D,IAAAC,cAAA,CAAA,IAAA,EAAK,UAAA,EAAa,IAAA,CAAA;AAClB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA;AACd,EAEQ,iBAAiB,CAAA,EAAwB;AAC/C,IAAA,IAAI,EAAE,UAAA,EAAY;AAChB,MAAA,IAAI;AACF,QAAA,IAAA,CAAK,MAAA,CAAO,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,EAAE,UAAU,CAAA;AAAA,eACzC,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA;AACjB;AAGF,IAAA,YAAA,CAAa,CAAA,CAAE,SAAS,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACvC,MAAA,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,CAAA,CAAE,IAAI,CAAA,GAAI,YAAA;AAAA,QAC/B,IAAA,CAAK,KAAA,CAAMW,oBAAA,CAAmB,CAAA,CAAE,MAAM,CAAC;AAAA,OACzC;AAAA,KACD,CAAA;AACD,IAAA,YAAA,CAAa,CAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACtC,MAAA,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,CAAA,CAAE,IAAI,IAAI,CAAA,CAAE,KAAA;AAAA,KACpC,CAAA;AAAA;AACH,EAEA,MAAa,cAEX,GAAA,EAA8C;AAC9C,IAAA,IAAI,OAAA,GAAU,IAAA;AACd,IAAA,MAAM,kBAA4B,EAAC;AAEnC,IAAA,MAAM,QAAA,GAAW,KAAK,aAAA,EAAe,KAAA;AAErC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,KAAA,MAAW,SAAA,IAAa,YAAA,CAAa,QAAA,CAAS,SAAS,CAAA,EAAG;AACxD,QAAA,IAAI,SAAA,CAAU,SAAS,QAAA,EAAU;AAC/B,UAAA,OAAA,GAAU,KAAA;AACV,UAAA,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,QAAA,CAAS,MAAA;AAAA,YACjC,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,cAC1B,SAAS,OAAA,CAAQ,KAAA;AAAA,cACjB,MAAA,EAAQ,QAAA;AAAA,cACR,KAAA,EAAO,IAAA;AAAA,cAEP,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,cACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,cAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW;AAAA,aACjC;AAAA,WACH;AAAA,SACF,MAAA,IAAW,SAAA,CAAU,IAAA,KAAS,MAAA,EAAQ;AACpC,UAAA,eAAA,CAAgB,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA;AACxC;AACF;AAGF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,IAAI,IAAK,WAAA,EAAa;AACpB,QAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,CAAK,WAAW,CAAA;AAExC,QAAA,mBAAA;AAAA,UACE,IAAA,CAAK,SAAA;AAAA,UACL;AAAA,SACF;AAAA;AAGF,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAAA;AAGhC,MAAA,WAAA,MAAiB,SAAS,eAAA,EAAiB;AACzC,QAAA,MAAM,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA;AAG5B,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAExB,MAAA,OAAO,GAAA,CAAK,eAAe,KAAA,EAAO,MAAA;AAAA;AACpC;AACF,EAEU,qBAAqB,SAAA,EAAoC;AACjE,IAAA,MAAM,iBAAiB,EAAC;AACxB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC5C,MAAA,IAAI,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AAC7B,QAAA,cAAA,CAAe,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,OACxC,MAAA,IAAW,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,OAAO,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AACjE,QAAA,MAAM,SAAA,GAAY,SAAA,CAAU,CAAC,CAAA,CAAE,KAAA;AAC/B,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,cAAA,CAAe,IAAA;AAAA,YACb,IAAI,aAAA,CAAc,IAAA,CAAK,SAAS,CAAA,CAC7B,OAAA;AAAA,cACC,IAAA,CAAK,KAAK,UAAA,CAAW,QAAA;AAAA,cACrB,IAAA,CAAK,KAAK,UAAA,CAAW;AAAA,aACvB,CACC,SAAS,SAAS;AAAA,WACvB;AAAA;AACF;AACF;AAEF,IAAA,OAAO,cAAA;AAAA;AACT,EACA,MAAgB,iBAAiB,KAAA,EAAyC;AACxE,IAAA,IAAI,MAAA,GAAS,IAAA;AAEb,IAAA,WAAA,MAAiB,MAAA,IAAU,YAAA,CAAa,KAAA,CAAM,MAAM,CAAA,EAAG;AACrD,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAQlC,MAAA,IAAI;AACF,QAAA,MAAM,EAAA,GAAM,MAAA,CAAe,GAAA,CAAI,OAAO,CAAA;AAItC,QAAA,MAAA,GACE,UACC,MAAM,EAAA;AAAA,UACL,IAAA;AAAA,UACA,GAAG,IAAA,CAAK,oBAAA,CAAqB,YAAA,CAAa,GAAA,CAAI,SAAS,CAAC;AAAA,SAC1D;AAAA,eACK,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,QAAA,IAAA,CAAK,IAAA,CAAK,UAAU,aAAA,CAAc,GAAA;AAAA,UAChC,IAAI,mBAAA,CAAoB;AAAA,YACtB,SAAS,MAAA,CAAO,YAAA,CAAa,IAAA,CAAK,SAAA,EAAW,IAAI,OAAO,CAAA;AAAA,YACxD,IAAA,EAAM;AAAA,WACP;AAAA,SACH;AACA,QAAA,OAAO,KAAA;AAAA;AACT;AAGF,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,MAAM,UAAU,OAAA,EAAiB;AAC/B,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,CAAE,IAAA;AAAA,QAChD,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS;AAAA,OACpB;AACA,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAI,KAAA,CAAM,gBAAA,GAAmB,OAAO,CAAA;AAAA;AAG5C,MAAA,MAAM,gBACJ,CAAC,KAAA,CAAM,UAAW,MAAM,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAErD,MAAA,IAAI,aAAA,IAAiB,MAAM,YAAA,EAAc;AACvC,QAAA,OAAA,CAEI,MAAM,IAAA,CAAK,aAAA;AAAA,UAAA,CACR,MAAM,IAAA,CAAK,WAAA,CAAY,WAAA,EAAa,OAAO,CAAA,GAAI;AAAA,YAEjD,OAAA,IAAW,KAAA;AAAA;AAIlB,MAAA,OAAO,aAAA,IAAiB,CAAC,KAAA,CAAM,YAAA;AAAA,KACjC,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,YAAY,OAAA,EAAiB;AAC3B,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,OAAO,CAAA;AAAA;AACvC,EAEA,MAAc,WAAA,CAAY,MAAA,EAAgB,IAAA,EAAW;AACnD,IAAA,OAAO,IAAA;AAAA,MACL,IAAA,CAAK,SAAA;AAAA,MACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,QAC1B,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,MAAA,EAAQ,eAAA;AAAA,QACR,MAAA;AAAA,QAEA,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,QACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,QAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW;AAAA,OACjC,CAAA;AAAA,MACD;AAAA,QACE,QAAA,EACE,OAAO,IAAA,KAAS,QAAA,GACZ;AAAA,UACE,OAAA,EAAS,sBAAsB,IAAI;AAAA,SACrC,GACA,IAAA;AAAA,QACN,iBAAA,EAAmB;AAAA;AACrB,KACF;AAAA;AACF,EAEA,MAAM,cAAA,CAAe,OAAA,EAAiB,KAAA,EAAe;AACnD,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,OAAA,CAEI,MAAM,IAAA,CAAK,aAAA;AAAA,QAAA,CAEP,MAAM,IAAA,CAAK,WAAA;AAAA,UACT,UAAA;AAAA,UACA,KAAK,SAAA,CAAU;AAAA,YACb,OAAA;AAAA,YACA,KAAA,EAAO,IAAA;AAAA,YACP;AAAA,WACD;AAAA,SACH,GACC;AAAA,UAEJ,OAAA,IAAW,KAAA;AAAA,KAElB,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,eAAe,OAAA,EAAiB;AAC9B,IAAA,OAAO,KAAK,MAAA,CAAO,UAAA,CAAW,OAAO,CAAA,EAAG,KAAK,EAAE,CAAA;AAAA;AACjD,EAEA,QAAA,CAAS,OAAA,EAAiB,KAAA,GAAgB,CAAA,EAAG;AAC3C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,OAAO,IAAI,KAAK,CAAA;AAAA;AAChD,EAEA,UAAU,OAAA,EAAiB;AACzB,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,OAAO,CAAA;AAAA;AACvC,EAEA,MAAM,WAAA,CAAY,OAAA,EAAiB,KAAA,EAAe;AAChD,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,OAAA,CAEI,MAAM,IAAA,CAAK,aAAA;AAAA,QAAA,CAEP,MAAM,IAAA;AAAA,UACJ,IAAA,CAAK,SAAA;AAAA,UACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,YAC1B,SAAS,OAAA,CAAQ,KAAA;AAAA,YACjB,MAAA,EAAQ,eAAA;AAAA,YACR,MAAA,EAAQ,aAAA;AAAA,YAER,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,YACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,YAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW;AAAA,WACjC,CAAA;AAAA,UACD;AAAA,YACE,QAAA,EAAU;AAAA,cACR,OAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,iBAAA,EAAmB;AAAA;AACrB,SACF,GACC;AAAA,UAEJ,OAAA,IAAW,KAAA;AAAA,KAElB,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,MAAM,QAAA,CAAS,OAAA,EAAiB,KAAA,EAAY,KAAA,EAAe;AACzD,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,OAAA,CAEI,MAAM,IAAA,CAAK,aAAA;AAAA,QAAA,CAEP,MAAM,IAAA,CAAK,WAAA;AAAA,UACT,UAAA;AAAA,UACA,KAAK,SAAA,CAAU;AAAA,YACb,KAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA,WACD;AAAA,SACH,GACC;AAAA,UAEJ,OAAA,IAAW,KAAA;AAAA,KAElB,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,MAAM,WAAA,CAAY,OAAA,EAAiB,KAAA,EAAY;AAC7C,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,OAAA,CAEI,MAAM,IAAA,CAAK,aAAA;AAAA,QAAA,CAEP,MAAM,IAAA,CAAK,WAAA;AAAA,UACT,aAAA;AAAA,UACA,KAAK,SAAA,CAAU;AAAA,YACb,OAAA;AAAA,YACA;AAAA,WACD;AAAA,SACH,GACC;AAAA,UAEJ,OAAA,IAAW,KAAA;AAAA,KAElB,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,MAAM,YAEJ,OAAA,EAAc;AACd,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,aAAA;AAAA,QAAA,CAEd,MAAM,IAAA,CAAK,WAAA;AAAA,UACT,SAAA;AAAA,UACA,OAAO,OAAA,KAAY,QAAA,IAAY,UAC3B,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,GACtB;AAAA,SACN,GACC;AAAA,OACL;AAAA,KACF,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,MAAM,QAAA,CAAS,OAAA,EAAiB,KAAA,EAAe;AAC7C,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,aAAA;AAAA,QAAA,CACrB,MAAM,KAAK,WAAA,CAAY,UAAA,EAAY,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA,GAAI;AAAA,OAC5D;AAEA,MAAA,IAAI,MAAM,GAAA,EAAK;AACb,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AAAA;AAChC,KACF,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEA,MAAM,MAAA,CACJ,OAAA,EACA,IAAA,EACA,OAAA,EAIA;AACA,IAAA,IAAA,CAAK,OAAO,SAAA,GAAY,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,MAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,IAAI,CAAA;AAE5B,MAAA,MAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,MAAA,IAAU,EAAE,CAAA,CAAE,OAAA;AAAA,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,MACxD,QAAA,CAAS,MAAA,CAAO,KAAK,KAAK;AAAA,OAC5B;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,IAAA;AAAA,QAC3B,MAAM,WAAA,CAAY,IAAA,CAAK,SAAA,EAAW;AAAA,UAChC,SAAS,OAAA,CAAQ,KAAA;AAAA,UACjB,MAAA,EAAQ,eAAA;AAAA,UACR,MAAA,EAAQ,QAAA;AAAA,UAER,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,UACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,EAAA;AAAA,UAC5B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,SAAA;AAAA,UAChC,OAAA;AAAA,UACA,cAAc,IAAA,CAAK;AAAA,SACpB,CAAA;AAAA,QACD,QAAA;AAAA,QACA;AAAA,UACE,QAAQ,OAAA,EAAS,MAAA;AAAA,UACjB,gBAAA,CAAiB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAG;AACpC,YAAA,MAAM,OAAA,GACJ,KAAK,KAAA,CAAA,CAAQ,QAAA,IAAY,MAAM,KAAA,IAAS,CAAA,CAAA,GAAM,GAAA,GAAM,GAAG,CAAA,GAAI,GAAA;AAC7D,YAAA,OAAA,EAAS,mBAAmB,OAAO,CAAA;AAAA;AACrC;AACF,OACF;AAEA,MAAA,MAAM,SACJ,MAAM,uBAAA;AAAA,QACJ,IAAA,CAAK,SAAA;AAAA,QACL;AAAA,OACF;AAEF,MAAA,OAAO,MAAM,IAAA,CAAK,aAAA;AAAA,QAChB;AAAA,OACF;AAAA,KACF,SAAE;AACA,MAAA,IAAA,CAAK,OAAO,SAAA,GAAY,KAAA;AAAA;AAC1B;AACF,EAEO,QAAA,CACL,MACA,KAAA,EACA;AACA,IAAA,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA,GAAI,KAAA;AAAA;AAExB;AAtcE,UAAA,GAAA,IAAA,OAAA,EAAA;;ACtCK,MAAM,2BAA2B,YAAA,CAEtC;AAAA,EACA,YACkB,KAAA,EAChB;AACA,IAAA,KAAA,CAAM,KAAK,CAAA;AAFK,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAIpB;;;;;;;;ACCO,MAAM,aAAA,CAAc;AAAA,EAOzB,YAAmB,SAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AANnB,IAAApB,eAAA,CAAA,IAAA,EAAQ,SAAA,EAAU,IAAI,YAAA,EAInB,CAAA;AAUH,IAAAA,eAAA,CAAA,IAAA,EAAU,iBAAgC,EAAC,CAAA;AA+B3C,IAAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAK,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,IAAA,CAAK,KAAK,OAAO,CAAA,CAAA;AAtCpC,IAAA,cAAA,CAA+C,IAAA,EAAM;AAAA,MACnD,aAAA,EAAe,UAAA;AAAA,MACf,GAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA;AACH,EAIA,IAAI,YAAA,EAA4B;AAC9B,IAAA,IAAA,CAAK,aAAA,CAAc,KAAK,YAAY,CAAA;AACpC,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,cAAA,EAAgB,YAAY,CAAA;AAAA;AAChD,EAEA,QAAA,GAAW;AACT,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,EAAY,IAAI,CAAA;AAAA;AACpC,EAEA,MAAA,GAAS;AACP,IAAA,OAAO,IAAA,CAAK,aAAA;AAAA;AACd,EAEA,QAAQ,EAAA,EAAqB;AAC3B,IAAA,OAAO,KAAK,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAAA;AACnD,EAEA,IAAA,GAAO;AACL,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAA;AAAA;AAChC,EAEA,OAAO,YAAA,EAA8C;AACnD,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAA,CAAK,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,KAAM;AACpD,MAAA,IAAI,OAAO,YAAA,KAAiB,QAAA,IAAY,OAAO,YAAA,KAAiB,QAAA;AAC9D,QAAA,OAAO,EAAE,EAAA,KAAO,YAAA;AAClB,MAAA,OAAO,CAAA,KAAM,YAAA;AAAA,KACd,CAAA;AAAA;AAIL;;;;;;;;AC9BO,MAAM,aAAa,cAAA,CAAoC;AAAA,EAiD5D,WAAA,CACS,WACP,UAAA,EACA;AACA,IAAA,MAAM,KAAA,GAAQG,eAAA,CAAmC,UAAA,CAAW,UAAU,CAAA;AACtE,IAAA,KAAA,CAAM,KAAK,CAAA;AAJJ,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAjDT,IAAAH,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAQ,EAAE,gBAAgB,KAAA,EAAM,CAAA;AAChC,IAAAA,eAAA,CAAA,IAAA,EAAU,mBAAA,sBAAsD,GAAA,EAAI,CAAA;AACpE,IAAAA,eAAA,CAAA,IAAA,EAAU,YAAA,sBAAiB,GAAA,EAYzB,CAAA;AACF,IAAAA,eAAA,CAAA,IAAA,EAAU,cAAA,sBAAmB,GAAA,EAY3B,CAAA;AACF,IAAAA,eAAA,CAAA,IAAA,EAAU,qBAAA,sBAA0B,GAAA,EAOlC,CAAA;AACF,IAAAA,eAAA,CAAA,IAAA,EAAU,uBAAA,sBAA4B,GAAA,EAOpC,CAAA;AACF,IAAAA,eAAA,CAAA,IAAA,EAAU,cAAA,sBAAmB,GAAA,EAAkB,CAAA;AAC/C,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAwB,EAAC,CAAA;AAyKzB,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAA,sBAAoB,GAAA,EAA6B,CAAA;AACzD,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAA,sBAAoB,GAAA,EAA6B,CAAA;AACzD,IAAAA,eAAA,CAAA,IAAA,EAAQ,iBAAA,sBAAsB,GAAA,EAA6B,CAAA;AAC3D,IAAAA,eAAA,CAAA,IAAA,EAAQ,oBAA6B,EAAC,CAAA;AApKpC,IAAA,cAAA,CAA8B,IAAA,EAAM;AAAA,MAClC,KAAA,EAAO,UAAA;AAAA,MACP,SAAA,EAAW,QAAA;AAAA,MACX,gBAAA,EAAkB;AAAA,KACnB,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAElB,IAAA,IAAA,CAAK,MAAA,GAAS,aAAa,UAAA,CAAW,KAAK,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AAC1D,MAAA,IAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAG,QAAA,OAAO,EAAA;AACtB,MAAA,IAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAG,QAAA,OAAO,CAAA;AAEtB,MAAA,IAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAG,QAAA,OAAO,EAAA;AACtB,MAAA,IAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAG,QAAA,OAAO,CAAA;AAEtB,MAAA,OAAO,CAAA;AAAA,KACR,CAAA;AAED,IAAA,IAAA,CAAK,KAAA,CAAM,cAAA,GAAiB,IAAA,CAAK,UAAA,CAAW,YAAA;AAAA;AAC9C,EAEA,IAAI,SAAA,GAAY;AACd,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA;AAAA;AACrC,EAEA,IAAI,gBAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAK,iBAAA;AAAA;AACd,EAEA,MAAM,kBAAA,GAAqB;AACzB,IAAA,IAAA,CAAK,UAAA,CAAW,YAAA,GAAe,CAAC,IAAA,CAAK,UAAA,CAAW,YAAA;AAChD,IAAA,KAAK,IAAA;AAAA,MACH,IAAA,CAAK,SAAA;AAAA,MACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,QAC1B,OAAA,EAAS,gCAAA;AAAA,QACT,MAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,QACvB,SAAA,EAAW,KAAK,UAAA,CAAW,SAAA;AAAA,QAC3B,QAAA,EAAU,KAAK,UAAA,CAAW,YAAA;AAAA,QAC1B,KAAA,EAAO;AAAA,OACR;AAAA,KACH;AAAA;AACF,EACA,QAAA,GAAW;AACT,IAAA,IAAA,CAAK,WAAW,YAAA,GAAe,KAAA;AAAA;AACjC,EAEA,QAAA,CAAS,OAAe,KAAA,EAAgB;AACtC,IAAA,MAAM,QACJ,IAAA,CAAK,YAAA,CAAa,OAAO,KAAK,CAAA,IAC9B,KAAK,cAAA,CAAe,KAAA,EAAO,KAAK,CAAA,IAChC,IAAA,CAAK,sBAAsB,KAAA,EAAO,KAAK,KACvC,IAAA,CAAK,uBAAA,CAAwB,OAAO,KAAK,CAAA;AAE3C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA;AAAA;AAGT,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO,EAAG;AAC9C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,QAAA,CAAS,KAAA,EAAO,KAAK,CAAA;AACvC,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAO,GAAA;AAAA;AACT;AAGF,IAAA,OAAO,MAAA;AAAA;AACT,EACA,qBAAA,CAAsB,OAAwB,KAAA,EAAgB;AAC5D,IAAA,MAAM,QAAQ,IAAA,CAAK,mBAAA,CAAoB,GAAA,CAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AACxD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA;AAAA;AAGT,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO,EAAG;AAC9C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,qBAAA,CAAsB,KAAA,EAAO,KAAK,CAAA;AACpD,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAO,GAAA;AAAA;AACT;AAGF,IAAA,OAAO,MAAA;AAAA;AACT,EACA,uBAAA,CAAwB,SAAiB,KAAA,EAAgB;AACvD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAI,OAAO,CAAA;AACpD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA;AAAA;AAGT,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO,EAAG;AAC9C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,uBAAA,CAAwB,OAAA,EAAS,KAAK,CAAA;AACxD,MAAA,OAAO,GAAA;AAAA;AAGT,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,YAAA,CAAa,IAAqB,KAAA,EAAgB;AAChD,IAAA,MAAM,QAAQ,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAC,CAAA;AAC5C,IAAA,IAAI,KAAA;AAAO,MAAA,OAAO,KAAA;AAElB,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO,EAAG;AAC9C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,YAAA,CAAa,EAAA,EAAI,KAAK,CAAA;AACxC,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAO,GAAA;AAAA;AACT;AAGF,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,cAAA,CAAe,MAAc,KAAA,EAA6C;AACxE,IAAA,MAAM,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,MAAA,CAAO,IAAI,CAAC,CAAA;AAChD,IAAA,IAAI,KAAA;AAAO,MAAA,OAAO,KAAA;AAElB,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO,EAAG;AAC9C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAC5C,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAO,GAAA;AAAA;AACT;AAGF,IAAA,OAAO,MAAA;AAAA;AACT,EAEU,eAAA,GAAkB;AAC1B,IAAA,OAAO,IAAA,CAAK,UAAU,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,WAAA,CAAY,kBAAkB,CAAC,CAAA;AAAA;AACvE,EACA,MAAM,cAAA,GAAiB;AACrB,IAAA,KAAK,IAAA;AAAA,MACH,IAAA,CAAK,SAAA;AAAA,MACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,QAC1B,OAAA,EAAS,gCAAA;AAAA,QACT,MAAA,EAAQ,gBAAA;AAAA,QACR,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,QACvB,SAAA,EAAW,KAAK,UAAA,CAAW,SAAA;AAAA,QAC3B,IAAA,EAAM,CAAC,IAAA,CAAK,KAAA,CAAM,cAAA;AAAA,QAClB,KAAA,EAAO;AAAA,OACR;AAAA,KACH,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ;AACd,MAAA,IAAI,GAAA,EAAK,IAAA,IAAQ,GAAA,CAAI,IAAA,CAAK,OAAA,EAAS;AACjC,QAAA,IAAA,CAAK,KAAA,CAAM,cAAA,GAAiB,CAAC,IAAA,CAAK,KAAA,CAAM,cAAA;AAAA;AAC1C,KACD,CAAA;AAAA;AACH,EAEA,MAAM,SAAA,GAAkD;AACtD,IAAA,MAAM,MAAM,MAAM,GAAA;AAAA,MAChB,IAAA,CAAK,SAAA;AAAA,MACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,QAC1B,OAAA,EAAS,gCAAA;AAAA,QACT,MAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAO,KAAK,UAAA,CAAW,EAAA;AAAA,QACvB,SAAA,EAAW,KAAK,UAAA,CAAW,SAAA;AAAA,QAC3B,KAAA,EAAO;AAAA,OACR;AAAA,KACH;AACA,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,OAAO,GAAA,CAAI,IAAA;AAAA;AACb;AACF,EAOA,0BAA0B,KAAA,EAAe;AACvC,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA;AAAA;AACrC,EAEA,0BAA0B,KAAA,EAAe;AACvC,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA;AAAA;AACrC,EAEA,4BAA4B,OAAA,EAAiB;AAC3C,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAO,CAAA;AAAA;AACzC,EAEO,gBAAA,CAAiB,KAAA,EAAe,QAAA,GAAmB,CAAA,EAAG;AAC3D,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,KAAA,GAAQ,GAAA,GAAM,QAAQ,CAAA;AAAA;AACnD,EAEO,mBAAA,CAAoB,KAAA,EAAe,QAAA,GAAmB,CAAA,EAAG;AAC9D,IAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,gBAAA,CAAiB,MAAA;AAAA,MAC5C,CAAC,CAAA,KAAM,CAAA,KAAM,KAAA,GAAQ,GAAA,GAAM;AAAA,KAC7B;AACA,IAAA,IAAI,KAAK,gBAAA,CAAiB,MAAA,GAAS,KAAK,eAAA,EAAgB,CAAE,WAAW,CAAA,EAAG;AACtE,MAAA,IAAA,CAAK,SAAA,CAAU,kBAAA;AAAA,QACb,KAAK,UAAA,CAAW,SAAA;AAAA,QAChB,KAAK,UAAA,CAAW;AAAA,OAClB;AAAA;AACF;AACF,EAEA,MAAM,IAAA,GAAO;AACX,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA;AAE1D,IAAA,WAAA,MAAiB,KAAA,IAAS,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAG;AACnD,MAAA,IAAA,CAAK,iBAAiB,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,IAAO,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA;AAAA;AAEhE,IAAA,WAAA,MAAiB,mBAAmB,SAAA,EAAW;AAC7C,MAAA,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,eAAA,CAAgB,EAAA,GAAK,IAAO,CAAA;AAAA;AAEzD,IAAA,WAAA,MAAiB,mBAAmB,SAAA,EAAW;AAC7C,MAAA,MAAM,EAAA,GAAK,IAAI,eAAA,CAAgB,IAAA,CAAK,WAAW,eAAe,CAAA;AAC9D,MAAA,MAAM,EAAA,CAAG,KAAK,IAAI,CAAA;AAClB,MAAA,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,eAAA,CAAgB,EAAA,EAAI,EAAE,CAAA;AACjD,MAAA,YAAA,CAAa,gBAAgB,KAAA,CAAM,KAAA,CAAM,SAAS,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM;AACjE,QAAA,IAAA,CAAK,aAAA,CAAc,IAAI,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,EAAE,CAAA;AAC3D,QAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,CAAA,CAAE,OAAA,EAAS,EAAE,CAAA;AACtC,QAAA,IAAA,CAAK,aAAA,CAAc,IAAI,MAAA,CAAO,QAAA,CAAS,OAAO,eAAA,CAAgB,EAAE,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,OACvE,CAAA;AAAA;AAGH,IAAA,WAAA,MAAiB,KAAA,IAAS,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAG;AAInD,MAAA,KAAA,CAAM,UAAA,GAAaG,eAAA,CAAc,KAAA,CAAM,UAAiB,CAAA;AAExD,MAAA,MAAM,mBACJ,IAAA,CAAK,SAAA,CAAU,cAAc,KAAA,CAAM,SAAS,EAAE,KAAK,CAAA;AAErD,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,MAAM,QAAA,GAAW,IAAI,gBAAA,CAAiB,KAAK,CAAA;AAC3C,QAAA,MAAM,QAAA,CAAS,KAAK,IAAI,CAAA;AAExB,QAAA,IAAA,CAAK,UAAA,CAAW,GAAA;AAAA,UACd,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,EAAE,CAAA;AAAA,UAC7B;AAAA,SACF;AACA,QAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,UAAA,IAAA,CAAK,YAAA,CAAa,GAAA;AAAA,YAChB,MAAA,CAAO,QAAA,CAAS,UAAA,EAAY,IAAI,CAAA;AAAA,YAChC;AAAA,WACF;AAAA;AAEF,QAAA,IAAK,MAAgD,OAAA,EAAS;AAC5D,UAAA,IAAA,CAAK,mBAAA,CAAoB,GAAA;AAAA,YACvB,MAAA,CAAQ,MAAgD,KAAK,CAAA;AAAA,YAC7D;AAAA,WACF;AACA,UAAA,IAAA,CAAK,qBAAA,CAAsB,GAAA;AAAA,YACxB,KAAA,CAAgD,OAAA;AAAA,YACjD;AAAA,WACF;AAAA;AAGF,QAAA,IAAI,oBAAoB,IAAA,EAAM;AAC5B,UAAA,IAAA,CAAK,aAAa,GAAA,CAAI,MAAA,CAAO,SAAS,UAAA,CAAW,EAAE,GAAG,QAAQ,CAAA;AAAA;AAChE,OACF,MAAO;AACL,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,2BAAA,EAA8B,MAAM,SAAS,CAAA,oCAAA;AAAA,SAC/C;AAAA;AACF;AACF;AACF,EAEA,MAAgB,qBACd,SAAA,EACoB;AACpB,IAAA,MAAM,iBAAiB,EAAC;AACxB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC5C,MAAA,IAAI,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AAC7B,QAAA,cAAA,CAAe,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,OACxC,MAAA,IAAW,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,OAAO,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AACjE,QAAA,MAAM,SAAA,GAAY,SAAA,CAAU,CAAC,CAAA,CAAE,KAAA;AAC/B,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,cAAA,CAAe,IAAA;AAAA,YAAA,CACZ,MAAM,gBAAA,CAAiB,IAAA,CAAK,SAAS,GACnC,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,QAAA,EAAU,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,CAC3D,SAAS,SAAS;AAAA,WACvB;AAAA;AACF;AACF;AAEF,IAAA,OAAO,cAAA;AAAA;AACT,EAEA,MAAa,gBAAgB,SAAA,EAA6C;AACxE,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,MAAM,QAAA,GAAW,UAAU,IAAA,CAAK,SAAS,EACvC,CAAA,gBAAA,EAAmB,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,CAC9C,CAAA;AACA,MAAA,MAAM,cAAc,QAAA,GAChB,QAAA,CAAS,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,GACjC,MAAA;AACJ,MAAA,MAAM,iBACJ,QAAA,KACC,CAAC,WAAA,IAAe,WAAA,KAAgB,SAAS,QAAA,GAAW,UAAA,CAAA;AACvD,MAAA,SAAA,GACE,mBACC,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,YAAY,UAAA,GAAa,QAAA,CAAA;AAAA;AAGxD,IAAA,MAAM,MAAA,GAAA,CAAU,IAAA,CAAK,UAAA,CAAW,YAAA,IAAgB,EAAC,EAAG,MAAA;AAAA,MAClD,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY;AAAA,KACvB;AACA,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,IAAA,EAAK;AAEnC,MAAA,IAAI;AACF,QAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,UAAA,IAAI;AACF,YAAA,MAAM,KAAM,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAU,MAAM,OAAO,CAAA;AAI3D,YAAA,MAAM,SAAS,MAAM,EAAA;AAAA,cACnB,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAAA,cACjC,GAAI,MAAM,IAAA,CAAK,oBAAA,CAAqB,MAAM,SAAS;AAAA,aACrD;AACA,YAAA,IAAI,CAAC,MAAA,EAAQ;AACX,cAAA,OAAO,KAAA;AAAA;AACT,mBACO,CAAA,EAAG;AACV,YAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,YAAA,IAAA,CAAK,UAAU,aAAA,CAAc,GAAA;AAAA,cAC3B,IAAI,mBAAA,CAAoB;AAAA,gBACtB,SAAS,MAAA,CAAO,YAAA,CAAa,KAAK,SAAA,EAAW,KAAA,CAAM,OAAO,CAAA,GAAI,CAAA;AAAA,gBAC9D,IAAA,EAAM;AAAA,eACP;AAAA,aACH;AACA,YAAA,OAAO,KAAA;AAAA;AACT;AACF,OACF,SAAE;AACA,QAAA,MAAA,EAAO;AAAA;AACT;AAEF,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAM,QAAA,GAAkC;AACtC,IAAA,IAAI,OAAA,GAAU,IAAA;AACd,IAAA,IAAI,YAAA,GAA6B,IAAA;AAEjC,IAAA,IAAI,IAAA,CAAK,WAAW,SAAA,EAAW;AAC7B,MAAA,OAAO,IAAA;AAAA;AAGT,IAAA,WAAA,MAAiB,KAAA,IAAS,KAAK,SAAA,EAAW;AACxC,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,SAAA,KAAc,MAAA,EAAQ;AACzC,QAAA,MAAM,MAAA,GAAS,MAAO,KAAA,CAAe,QAAA,EAAS;AAC9C,QAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,CAAC,YAAA,EAAc;AACpC,UAAA,YAAA,GAAe,MAAA;AACf,UAAA,OAAA,GAAU,KAAA;AAAA,SACZ,MAAO;AACL,UAAA,OAAA,GAAU,WAAW,MAAA,KAAW,IAAA;AAAA;AAClC,OACF,MAAA,IAAW,iBAAiB,KAAA,EAAO;AACjC,QAAA,OAAA,GAAW,MAAM,KAAA,CAAM,QAAA,EAAS,IAAM,OAAA;AACtC,QAAA,IAAI,CAAC,OAAA,IAAW,CAAC,YAAA,EAAc;AAC7B,UAAA,YAAA,GAAe,KAAA;AAAA;AACjB;AACF;AAGF,IAAA,OAAO,OAAA,IAAW,YAAA;AAAA;AACpB,EAEA,YACE,QAAA,EACwB;AACxB,IAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,MAAA,OAAO,IAAA,CAAK,UAAA,CAAW,QAAA,IAAY,IAAA,CAAK,UAAA,CAAW,QAAA;AAAA;AAErD,IAAA,OAAO,KAAA,CAAM,YAAY,QAAQ,CAAA;AAAA;AACnC,EAEO,aAAA,GAA8B;AACnC,IAAA,MAAM,SAAuB,EAAC;AAC9B,IAAA,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC5B,MAAA,IAAI,aAAa,kBAAA,EAAoB;AACnC,QAAA,MAAM,WAAA,GAAc,CAAA,CAAE,KAAA,CAAM,UAAA,CAAW,YAAA;AACvC,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,MAAA,CAAO,IAAA,CAAK;AAAA,YACV,IAAI,CAAA,EAAG,CAAA,CAAE,OAAA,EAAQ,CAAE,WAAW,SAAS,CAAA,CAAA,EAAI,CAAA,CAAE,OAAA,GAAU,UAAA,CAAW,EAAE,CAAA,CAAA,EAAI,CAAA,CAAE,WAAW,EAAE,CAAA,CAAA;AAAA,YACvF,YAAA,EAAc,WAAA;AAAA,YACd,KAAA,EAAO,EAAE,SAAA,CAAU,KAAA;AAAA,YACnB,KAAA,EAAO,mBAAmB,CAAC;AAAA,WAC5B,CAAA;AAAA;AACH;AACF,KACD,CAAA;AACD,IAAA,OAAO,MAAA;AAAA;AAEX;;ACldA,SAAS,mBAAmB,YAAA,EAAsB;AAChD,EAAA,MAAM,YAAA,GAAe,KAAK,YAAY,CAAA;AACtC,EAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,CAAK,YAAA,EAAc,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,CAAW,CAAC,CAAC,CAAA;AACxE,EAAA,OAAO,IAAI,WAAA,CAAY,OAAO,CAAA,CAAE,OAAO,KAAK,CAAA;AAC9C;AAEA,eAAe,oBACb,OAAA,EAC2B;AAC3B,EAAA,IAAI,OAAA,CAAQ,QAAQ,GAAA,EAAK;AACvB,IAAA,MAAM,WAAY,MAAM,QAAA;AAAA,MACtB,kBAAA,CAAmB,OAAA,CAAQ,OAAA,CAAQ,GAAG;AAAA,KACxC;AACA,IAAA,OAAO,QAAA;AAAA;AAET,EAAA,OAAO,IAAA;AACT;AAEA,eAAsB,oBAAoB,SAAA,EAAsB;AAC9D,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,GAAG,WAAA,CAAY,SAAS,CAAA,CAAE,iBAAiB,gBAAgB;AAAA,GAC7D;AACA,EAAA,MAAM,QAAqB,EAAC;AAE5B,EAAA,WAAA,MAAiB,QAAQ,QAAA,EAAU;AACjC,IAAA,MAAM,GAAA,GAAM,MAAM,mBAAA,CAAoB,IAAmB,CAAA;AACzD,IAAA,IAAI,GAAA;AAAK,MAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAGzB,EAAA,OAAO,KAAA;AACT;;AChCO,MAAM,WAAA,CAAY;AAAA,EACvB,OAAc,mBAAmB,SAAA,EAAsB;AACrD,IAAA,OAAO,oBAAoB,SAAS,CAAA;AAAA;AAExC;;ACoCO,MAAM,gBAAA,GAAkC,OAAO,MAAA,CAAO;AAAA,EAC3D,MAAM,MAAM,QAAA;AAAA,EACZ,QAAQ,MAAM,MAAA;AAAA,EACd,SAAS,MAAM,OAAA;AAAA,EACf,OAAO,MAAM,QAAA;AAAA,EACb,QAAQ,MAAM,MAAA;AAAA,EACd,MAAM,MAAM,IAAA;AAAA,EACZ,IAAA,EAAM,CAAC,GAAA,KAAQ;AACb,IAAA,MAAM,UAAA,GAAa,GAAA;AAEnB,IAAA,IAAI,UAAA,EAAY,YAAY,KAAA,EAAO;AACjC,MAAA,OAAO,aAAA;AAAA;AAGT,IAAA,OAAO,IAAA;AAAA,GACT;AAAA,EACA,QAAQ,MAAM,MAAA;AAAA,EACd,MAAM,MAAM,IAAA;AAAA,EACZ,OAAO,MAAM,KAAA;AAAA,EACb,KAAA,EAAO,CAAC,GAAA,KAAQ;AACd,IAAA,MAAM,UAAA,GAAa,GAAA;AAEnB,IAAA,IAAI,WAAW,KAAA,EAAO;AACpB,MAAA,OAAO,UAAA;AAAA;AAGT,IAAA,OAAO,KAAA;AAAA,GACT;AAAA,EACA,KAAA,EAAO,CAAC,GAAA,KAAQ;AACd,IAAA,MAAM,UAAA,GACJ,GAAA;AACF,IAAA,MAAM,KAAA,GAAQ,WAAW,UAAA,EAAY,KAAA;AACrC,IAAA,IAAI,SAAS,MAAA,CAAO,KAAK,EAAE,OAAA,CAAQ,gBAAgB,MAAM,EAAA,EAAI;AAC3D,MAAA,OAAO,cAAA;AAAA;AAGT,IAAA,OAAO,KAAA;AAAA,GACT;AAAA,EACA,UAAU,MAAM,QAAA;AAAA,EAChB,UAAU,MAAM,QAAA;AAAA,EAChB,OAAO,MAAM,KAAA;AAAA,EACb,QAAQ,MAAM,MAAA;AAAA,EACd,OAAO,MAAM,KAAA;AAAA,EACb,MAAM,MACJ;AACJ,CAAC,CAAA;;;;;;;;AC/EM,MAAM,OAAA,CAAQ;AAAA,EAKnB,YAAmB,SAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAJnB,IAAAH,eAAA,CAAA,IAAA,EAAA,OAAA,EAAyB,IAAA,CAAA;AAEzB,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AAsBA,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAA,EAAY,KAAA,CAAA;AAnBlB,IAAA,cAAA,CAAe,IAAA,EAAM;AAAA,MACnB,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EAAa,MAAA;AAAA,MACb,IAAA,EAAM;AAAA,KACP,CAAA;AAED,IAAA,IAAA,CAAK,WAAW,IAAI,WAAA;AAAA,MAClB,IAAA,CAAK,SAAA;AAAA,MACL,iBAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CACrB;AAAA,KACL;AAAA;AACF,EAEA,IAAI,IAAA,GAAO;AACT,IAAA,IAAI,IAAA,CAAK,KAAA;AAAO,MAAA,OAAO,IAAA,CAAK,MAAM,UAAA,CAAW,KAAA;AAAA;AAC/C,EAIA,MAAM,IAAA,GAAO;AACX,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,MAAA,MAAM,MAAM,MAAM,IAAA;AAAA,QAChB,IAAA,CAAK,SAAA;AAAA,QACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,gBAAA;AAAA,UACR,MAAA,EAAQ;AAAA,SACT;AAAA,OACH;AACA,MAAA,IAAI,CAAC,GAAA,EAAK,IAAA,EAAM,WAAA,EAAa;AAC3B,QAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA;AAGpD,MAAA,IAAA,CAAK,SAAS,IAAA,EAAK;AACnB,MAAA,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,cAAA,EAAgB,MAAM;AACrC,QAAA,IAAA,CAAK,SAAA,CAAU,MAAM,kBAAA,GAAqB,IAAA;AAAA,OAC3C,CAAA;AAED,MAAA,MAAM,UAAA,GAAuB,IAAA,CAAK,KAAA,CAAM,GAAA,EAAK,MAAM,WAAW,CAAA;AAC9D,MAAA,MAAM,QAAA,GAAW,YAAA,CAAa,UAAA,CAAW,QAAA,EAAU,OAAO,CAAA,CAAE,IAAA;AAAA,QAC1D,CAAC,MAAM,CAAA,CAAE;AAAA,OACX,EAAG,KAAA;AACH,MAAA,MAAM,gBACJ,YAAA,CAAa,UAAA,CAAW,SAAS,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA,EAC5D,SAAS,YAAA,CAAa,UAAA,EAAY,UAAU,OAAO,CAAA,CAAE,CAAC,CAAA,EAAG,KAAA;AAE/D,MAAA,IAAA,CAAK,KAAA,GAAQ,UAAA;AACb,MAAA,IAAI,QAAA;AAAU,QAAA,IAAA,CAAK,KAAA,CAAM,SAAS,KAAA,GAAQ,QAAA;AAC1C,MAAA,IAAI,aAAA;AAAe,QAAA,IAAA,CAAK,KAAA,CAAM,SAAS,KAAA,GAAQ,aAAA;AAAA;AACjD;AACF,EAEA,gBAAA,GAAmB;AACjB,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,IAAA,CAAK,KAAA,EAAO,QAAA,EAAU,KAAA;AAAA,MACjC,MAAA,EAAQ,IAAA,CAAK,KAAA,EAAO,QAAA,EAAU;AAAA,KAChC;AAAA;AACF,EAEA,YAAY,WAAA,EAAqB;AAC/B,IAAA,IAAI,KAAK,KAAA,EAAO,QAAA;AAAU,MAAA,IAAA,CAAK,KAAA,CAAM,SAAS,KAAA,GAAQ,WAAA;AAAA;AAE1D;;;;;;;;;;;;;;;;;;;;AC/EA,IAAA,KAAA;AAAO,MAAM,IAAA,CAAK;AAAA,EAEhB,YAAY,IAAA,EAAW;AADvB,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,EAAA,MAAA,CAAA;AAEE,IAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,IAAA,CAAK,IAAA,CAAA;AAAA;AACpB,EACA,YAAY,WAAA,EAAqB;AAC/B;AACF,EACA,IAAI,IAAA,GAAO;AACT,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAAA;AAEhB;AAVE,KAAA,GAAA,IAAA,OAAA,EAAA;;;;;;;;ACeK,MAAM,MAAA,CAAO;AAAA,EAUlB,YAAmB,SAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AATnB,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAwB,IAAA,CAAA;AAExB,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAA8B,IAAI,eAAA,CAAgB;AAAA,MAChD,YAAA,EAAc,IAAA;AAAA,MACd,WAAA,EAAa,IAAA;AAAA,MACb,cAAA,EAAgB;AAAA,KACjB,CAAA,CAAA;AAqBD,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAA,EAAY,KAAA,CAAA;AAyGpB,IAAAA,eAAA,CAAA,IAAA,EAAU,kBAAiB,YAAY;AACrC,MAAA,MAAM,MAAM,MAAM,IAAA;AAAA,QAChB,IAAA,CAAK,SAAA;AAAA,QACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,gBAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAW;AAAA,SACZ;AAAA,OACH;AACA,MAAA,IAAI,IAAA,CAAK,KAAA;AACP,QAAA,IAAI,GAAA,EAAK,MAAM,QAAA,EAAU;AACvB,UAAA,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,YAAA,CAAa,GAAA,CAAI,KAAK,QAAQ,CAAA;AAAA,SACxD,MAAO;AACL,UAAA,IAAA,CAAK,KAAA,CAAM,aAAa,EAAC;AAAA;AAC3B,KACJ,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAU,aAAY,YAAY;AAChC,MAAA,MAAM,MAAM,MAAM,IAAA;AAAA,QAChB,IAAA,CAAK,SAAA;AAAA,QACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,WAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAW;AAAA,SACZ;AAAA,OACH;AACA,MAAA,IAAI,IAAA,CAAK,OAAO,YAAA,EAAc;AAC5B,QAAA,IAAI,GAAA,EAAK,MAAM,IAAA,EAAM;AACnB,UAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,YAAA,CAAa,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,SACtD,MAAO;AACL,UAAA,IAAA,CAAK,KAAA,CAAM,eAAe,EAAC;AAAA;AAC7B;AACF,KACF,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAU,oBAAmB,YAAY;AACvC,MAAA,MAAM,MAAM,MAAM,IAAA;AAAA,QAChB,IAAA,CAAK,SAAA;AAAA,QACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,iBAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAW;AAAA,SACZ;AAAA,OACH;AACA,MAAA,IAAI,KAAK,KAAA,EAAO;AACd,QAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,YAAA,CAAa,GAAA,EAAK,MAAM,UAAU,CAAA;AAC5D,QAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,aAAa,GAAA,EAAK,IAAA,EAAM,UAAU,CAAC,CAAA;AAC/D,QAAA,MAAM,SAAA,GAAY;AAAA,UAChB,OAAA,EAAS;AAAA,YACP;AAAA,cACE,OAAA,EAAS,MAAA;AAAA,cACT,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,SAAA,EAAW,eAAe,CAAA,CAAE,IAAA;AAAA,cACnD,SAAA,EAAW;AAAA,aACb;AAAA,YACA;AAAA,cACE,OAAA,EAAS,SAAA;AAAA,cACT,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,SAAA,EAAW,uBAAuB,CAAA,CAAE,IAAA;AAAA,cAC3D,SAAA,EAAW;AAAA;AACb,WACF;AAAA,UACA,IAAA;AAAA,UACA,SAAS;AAAC,SACZ;AACA,QAAA,IAAA,CAAK,UAAA,CAAW,MAAM,SAAS,CAAA;AAAA;AACjC,KACF,CAAA;AA5LE,IAAA,cAAA,CAAe,IAAA,EAAM;AAAA,MACnB,KAAA,EAAO,UAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACP,CAAA;AAED,IAAA,IAAA,CAAK,WAAW,IAAI,WAAA;AAAA,MAClB,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CACrB;AAAA,KACL;AAAA;AACF,EAEA,IAAI,IAAA,GAAO;AACT,IAAA,IAAI,IAAA,CAAK,KAAA;AAAO,MAAA,OAAO,IAAA,CAAK,MAAM,UAAA,CAAW,KAAA;AAAA;AAC/C,EAIA,MAAM,IAAA,GAAO;AACX,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,MAAA,MAAM,MAAM,MAAM,IAAA;AAAA,QAChB,IAAA,CAAK,SAAA;AAAA,QACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,eAAA;AAAA,UACR,MAAA,EAAQ;AAAA,SACT;AAAA,OACH;AACA,MAAA,IAAI,CAAC,GAAA,EAAK,IAAA,EAAM,UAAA,EAAY;AAC1B,QAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA;AAEnD,MAAA,IAAA,CAAK,SAAS,IAAA,EAAK;AACnB,MAAA,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,cAAA,EAAgB,MAAM;AACrC,QAAA,IAAA,CAAK,SAAA,CAAU,MAAM,kBAAA,GAAqB,IAAA;AAAA,OAC3C,CAAA;AAED,MAAA,MAAM,UAAA,GAAsB,IAAA,CAAK,KAAA,CAAM,GAAA,EAAK,MAAM,UAAU,CAAA;AAC5D,MAAA,MAAM,WAAA,GAAc,YAAA,CAAa,UAAA,CAAW,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA;AAAA,QAC1D,CAAC,MAAM,CAAA,CAAE;AAAA,OACX,EAAG,KAAA;AACH,MAAA,IAAA,CAAK,KAAA,GAAQ,UAAA;AACb,MAAA,IAAA,CAAK,KAAA,CAAM,eAAe,EAAC;AAC3B,MAAA,IAAA,CAAK,KAAA,CAAM,aAAa,EAAC;AACzB,MAAA,IAAA,CAAK,KAAA,CAAM,MAAM,IAAA,GAAO,IAAA;AAExB,MAAA,IAAI,WAAA,IAAe,KAAK,KAAA,CAAM,MAAA;AAC5B,QAAA,IAAA,CAAK,KAAA,CAAM,OAAO,KAAA,GAAQ,WAAA;AAE5B,MAAA,IAAI,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,oBAAA,EAAsB;AAClD,QAAA,MAAM,KAAK,cAAA,EAAe;AAAA;AAE5B,MAAA,IAAI,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,sBAAA,EAAwB;AACpD,QAAA,MAAM,KAAK,SAAA,EAAU;AAAA;AAEvB,MAAA,IAAI,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,CAAE,yBAAA,EAA2B;AACvD,QAAA,MAAM,KAAK,gBAAA,EAAiB;AAAA;AAC9B;AACF;AACF,EAEO,cAAA,GAAiB;AACtB,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,QAAA,EAAU,CAAA;AAC5B,IAAA,IAAA,CAAK,KAAA,CAAO,aAAa,IAAA,CAAK;AAAA,MAC5B,MAAA,EAAQ,EAAA;AAAA,MACR,QAAA,EAAU,EAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,EAAE,CAAA;AACtB,IAAA,GAAA,CAAI,KAAA,CAAM;AAAA,MACR,EAAA,EAAI,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,MACrB,KAAA,EAAO,CAAC,EAAE,OAAA,EAAS,QAAO,EAAG,EAAE,OAAA,EAAS,SAAA,EAAW,CAAA;AAAA,MACnD,UAAA,EAAY;AAAA,KACb,CAAA;AACD,IAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAC/B,IAAA,IAAA,CAAK,WAAW,YAAA,CAAa;AAAA,MAC3B,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,CAAE;AAAA,KACvC,CAAA;AAAA;AACH,EAEO,gBAAA,GAAmB;AACxB,IAAA,MAAM,MAAA,GAAc;AAAA,MAClB,SAAA,EAAW,IAAA,CAAK,KAAA,EAAO,MAAA,CAAO,KAAA,IAAS;AAAA,KACzC;AAEA,IAAA,IAAI,IAAA,CAAK,KAAA,EAAO,UAAA,EAAY,IAAA,EAAM,KAAA,EAAO;AACvC,MAAA,MAAA,CAAO,SAAA,GAAY,IAAA,CAAK,KAAA,EAAO,UAAA,CAAW,KAAK,KAAA,IAAS,EAAA;AAAA;AAG1D,IAAA,IAAI,IAAA,CAAK,OAAO,UAAA,EAAY;AAC1B,MAAA,MAAA,CAAO,KAAA,GAAQ,KAAK,KAAA,EAAO,UAAA,CAAW,IAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAErD,MAAA,IAAA,CAAK,KAAA,EAAO,UAAA,CACT,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA,CACvB,OAAA,CAAQ,CAAC,CAAA,KAAM;AACd,QAAA,MAAA,CAAO,CAAA,OAAA,EAAU,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA,GAAI,IAAA;AAAA,OAC5B,CAAA;AAEH,MAAA,MAAA,CAAO,2BAA2B,CAAA,GAAI,MAAA;AAAA;AAGxC,IAAA,IAAI,IAAA,CAAK,OAAO,YAAA,EAAc;AAC5B,MAAA,MAAA,CAAO,6BAA6B,CAAA,GAAI,MAAA;AACxC,MAAA,MAAA,CAAO,MAAA,GAAS,KAAK,KAAA,EAAO,YAAA,CAAa,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAE5D,MAAA,IAAA,CAAK,KAAA,EAAO,YAAA,CACT,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,SAAS,CAAA,CACzB,OAAA,CAAQ,CAAC,CAAA,KAAM;AACd,QAAA,MAAA,CAAO,CAAA,gBAAA,EAAmB,CAAA,CAAE,MAAM,CAAA,CAAE,CAAA,GAAI,IAAA;AAAA,OACzC,CAAA;AAAA;AAGL,IAAA,IAAI,IAAA,CAAK,OAAO,YAAA,EAAc;AAC5B,MAAA,MAAA,CAAO,2BAA2B,CAAA,GAAI,MAAA;AACtC,MAAA,MAAA,CAAO,MAAA,GAAS,KAAK,KAAA,EAAO,YAAA,CAAa,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAC5D,MAAA,MAAA,CAAO,QAAA,GAAW,KAAK,KAAA,EAAO,YAAA,CAAa,IAAI,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAChE,MAAA,MAAA,CAAO,WAAA,GAAc,KAAK,KAAA,EAAO,YAAA,CAAa,IAAI,CAAC,CAAA,KAAM,EAAE,WAAW,CAAA;AAAA;AAGxE,IAAA,OAAO,MAAA;AAAA;AACT,EAqEQ,UAAU,GAAA,EAAoB;AACpC,IAAA,OAAO,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,KAAM;AACpB,MAAA,MAAM,MAAA,GAAoB;AAAA,QACxB,IAAI,CAAA,CAAE,MAAA;AAAA,QACN,KAAA,EAAO;AAAA,UACL;AAAA,YACE,OAAA,EAAS,MAAA;AAAA,YACT,SAAS,CAAA,CAAE;AAAA,WACb;AAAA,UACA;AAAA,YACE,OAAA,EAAS,SAAA;AAAA,YACT,SAAS,CAAA,CAAE;AAAA;AACb;AACF,OACF;AACA,MAAA,OAAO,MAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEO,iBAAA,GAAoB;AACzB,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,QAAA,CAAS,WAAW,CAAA;AACzD,IAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,YAAY,CAAA,CAAE,GAAA,IAAO,QAAA,EAAS;AAEzD,IAAA,CAAC,GAAG,YAAA,CAAa,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC1C,MAAA,IAAA,CAAK,KAAA,CAAO,YAAA,GACV,IAAA,CAAK,KAAA,EAAO,aAAa,MAAA,CAAO,CAAC,CAAA,EAAG,GAAA,KAAQ,GAAA,CAAI,QAAA,EAAS,KAAM,GAAG,KAClE,EAAC;AACH,MAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA;AAAA,KACnC,CAAA;AACD,IAAA,IAAI,OAAA;AAAS,MAAA,IAAA,CAAK,UAAA,CAAW,YAAA,CAAa,CAAC,OAAA,GAAU,CAAC,CAAC,CAAA;AAAA;AACzD,EAEO,iBAAiB,EAAA,EAAY;AAClC,IAAA,IAAI,KAAK,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,MAAA;AAAA,QAChD,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW;AAAA,OACtB;AAAA;AACF;AACF,EAEO,oBAAA,GAAuB;AAC5B,IAAA,IAAI,IAAA,CAAK,KAAA,EAAO,YAAA,CAAa,MAAA,KAAW,CAAA;AAAG,MAAA,OAAO,IAAA;AAClD,IAAA,IAAI,KAAK,KAAA,EAAO;AACd,MAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,MAAA;AAAA,QAClD,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAA,IAAY,CAAC,CAAA,CAAE;AAAA,OAC3B;AACA,MAAA,IAAI,mBAAA,CAAoB,SAAS,CAAA,EAAG;AAClC,QAAA,mBAAA,CAAoB,OAAA,CAAQ,CAAC,CAAA,EAAG,GAAA,KAAQ;AACtC,UAAA,CAAA,CAAE,mBAAA,GAAsB,EAAA;AACxB,UAAA,CAAA,CAAE,gBAAA,GAAmB,EAAA;AACrB,UAAA,CAAA,CAAE,WAAA,GAAc,MAAA;AAEhB,UAAA,IAAI,GAAA,KAAQ,CAAA;AAAG,YAAA,CAAA,CAAE,WAAA,GAAc,IAAA;AAE/B,UAAA,IAAI,EAAE,QAAA,KAAa,EAAA;AACjB,YAAA,CAAA,CAAE,gBAAA,GAAmB,MAAA,CAAO,kBAAA,CAAmB,IAAA,CAAK,SAAS,CAAA;AAE/D,UAAA,IAAI,EAAE,WAAA,KAAgB,EAAA;AACpB,YAAA,CAAA,CAAE,mBAAA,GAAsB,MAAA,CAAO,kBAAA,CAAmB,IAAA,CAAK,SAAS,CAAA;AAAA,SACnE,CAAA;AACD,QAAA,OAAO,KAAA;AAAA;AACT;AAEF,IAAA,OAAO,IAAA;AAAA;AAEX;;;;;;;;ACnRO,MAAM,YAAA,CAAa;AAAA,EAUxB,YAAmB,SAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AATnB,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAuB;AAAA,MACrB,cAAA,EAAgB;AAAA,QACd,YAAA,EAAc,EAAA;AAAA,QACd,WAAA,EAAa,KAAA;AAAA,QACb,cAAA,EAAgB,KAAA;AAAA,QAChB,WAAA,EAAa;AAAA,OACf;AAAA,MACA,cAAc;AAAC,KACjB,CAAA;AAQA,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAA,EAAY,KAAA,CAAA;AANlB,IAAA,cAAA,CAAe,IAAA,EAAM;AAAA,MACnB,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EAAa;AAAA,KACd,CAAA;AAAA;AACH,EAIA,MAAM,IAAA,GAAO;AACX,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,MAAA,IAAA,CAAK,KAAA,GAAQ;AAAA,QACX,cAAA,EAAgB;AAAA,UACd,YAAA,EAAc,EAAA;AAAA,UACd,WAAA,EAAa,KAAA;AAAA,UACb,cAAA,EAAgB,KAAA;AAAA,UAChB,WAAA,EAAa;AAAA,SACf;AAAA,QACA,cAAc;AAAC,OACjB;AAEA,MAAA,MAAM,MAAM,MAAM,IAAA;AAAA,QAGhB,IAAA,CAAK,SAAA;AAAA,QACL,WAAA,CAAY,KAAK,SAAA,EAAW;AAAA,UAC1B,MAAA,EAAQ,qBAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,QAAQ,CAAC,SAAA,CAAU,KAAK,SAAS,CAAA,CAAE,YAAY,IAAA,GAAO;AAAA,SACvD;AAAA,OACH;AACA,MAAA,IAAI,CAAC,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ;AACtB,QAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA;AAGnD,MAAA,MAAM,UAAA,GAGF,IAAA,CAAK,KAAA,CAAM,GAAA,EAAK,MAAM,MAAM,CAAA;AAEhC,MAAA,IAAA,CAAK,KAAA,CAAM,YAAA,GAAe,YAAA,CAAa,UAAA,CAAW,YAAY,CAAA;AAE9D,MAAA,MAAM,cAAA,GAAiB;AAAA,QACrB,YAAA,EAAc,WAAW,cAAA,EAAgB,OAAA;AAAA,QACzC,WAAA,EAAa,WAAW,cAAA,EAAgB,SAAA;AAAA,QACxC,cAAA,EAAgB,KAAA;AAAA,QAChB,WAAA,EAAa;AAAA,OACf;AACA,MAAA,IAAA,CAAK,MAAM,cAAA,GAAiB,cAAA;AAC5B,MAAA,IAAA,CAAK,sBAAA,EAAuB;AAAA;AAC9B;AACF,EAEA,gBAAA,GAAmB;AACjB,IAAA,MAAM,MAAA,GAAkC;AAAA,MACtC,UAAA,EAAY,IAAA,CAAK,KAAA,CAAM,cAAA,EAAgB,YAAA;AAAA,MACvC,aACE,IAAA,CAAK,KAAA,CAAM,cAAA,EAAgB,WAAA,KAAgB,OAAO,IAAA,GAAO,MAAA;AAAA,MAC3D,gBACE,IAAA,CAAK,KAAA,CAAM,cAAA,EAAgB,cAAA,KAAmB,OAAO,IAAA,GAAO,MAAA;AAAA,MAC9D,aACE,IAAA,CAAK,KAAA,CAAM,cAAA,EAAgB,WAAA,KAAgB,OAAO,IAAA,GAAO;AAAA,KAC7D;AAEA,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,YAAA,IAAgB,EAAC;AACxC,IAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,MAAA,IAAI,CAAC,CAAA,IAAK,CAAC,CAAA,CAAE,IAAA;AAAM,QAAA;AACnB,MAAA,MAAA,CAAO,EAAE,IAAI,CAAA,GAAI,CAAA,CAAE,OAAA,KAAY,OAAO,IAAA,GAAO,MAAA;AAAA;AAG/C,IAAA,OAAO,MAAA;AAAA;AACT,EAEA,YAAY,WAAA,EAAqB;AAC/B;AACF,EAEO,sBAAA,GAAyB;AAC9B,IAAA,MAAM,SAAA,GAAY,KAAK,KAAA,CAAM,YAAA,EAAc,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY,IAAI,CAAA;AACzE,IAAA,OAAO,SAAA;AAAA;AAEX;;AChFO,MAAe,SAAA,CAA6C;AAEnE;;AClBO,MAAM,0BAA0B,SAAA,CAGpC;AAAA,EACD,WAAA,CACS,aACA,OAAA,EAIP;AACA,IAAA,KAAA,EAAM;AANC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AAOX;;;;;;;;ACZA,MAAM,YAAA,GAAe;AAAA,EACnB,iBAAiB,EAAC;AAAA,EAClB,iBAAA,EAAmB;AACrB,CAAA;AAEO,MAAM,0BAA0B,SAAA,CAGpC;AAAA,EAMD,WAAA,CACS,aACA,OAAA,EAIP;AACA,IAAA,KAAA,EAAM;AANC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAPT,IAAAA,eAAA,CAAA,IAAA,EAAO,OAAA,CAAA;AAaL,IAAA,cAAA,CAA2C,IAAA,EAAM,EAAE,KAAA,EAAO,UAAA,EAAY,CAAA;AACtE,IAAA,IAAA,CAAK,KAAA,GAAQ,YAAA;AAAA;AACf,EACA,kBAAkB,QAAA,EAAwB;AACxC,IAAA,IAAA,CAAK,KAAA,CAAM,kBAAkB,IAAA,CAAK,kBAAA;AAAA,MAChC,QAAA;AAAA,MACA,KAAK,KAAA,CAAM;AAAA,KACb;AAAA;AACF,EACA,UAAA,GAAa;AACX,IAAA,IAAA,CAAK,KAAA,CAAM,kBAAkB,EAAC;AAAA;AAChC,EACA,oBAAoB,wBAAA,EAAqD;AACvE,IAAA,IAAA,CAAK,MAAM,iBAAA,GAAoB,wBAAA;AAAA;AACjC,EACA,kBAAA,CACE,SACA,OAAA,EACgB;AAChB,IAAA,IAAI,cAAc,EAAC;AACnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,MAAA,WAAA,GAAc,OAAA,CAAQ,MAAA;AAAA,QACpB,CAAC,EAAA,KACC,EAAA,CAAG,EAAA,KAAO,OAAA,CAAQ,EAAA,IAAM,EAAA,CAAG,IAAA,KAAS,OAAA,CAAQ,IAAA,IAAQ,EAAA,CAAG,IAAA,KAAS;AAAA,OACpE;AAAA;AAEF,IAAA,IAAI,OAAA,CAAQ,SAAS,IAAA,EAAM;AACzB,MAAA,WAAA,CAAY,KAAK,OAAO,CAAA;AAAA;AAE1B,IAAA,OAAO,eAAe,EAAC;AAAA;AAE3B;;ACvDO,MAAM,0BAA0B,SAAA,CAGpC;AAAA,EACD,WAAA,CACS,aACA,OAAA,EAIP;AACA,IAAA,KAAA,EAAM;AANC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AAOX;;ACbO,MAAM,2BAA2B,SAAA,CAErC;AAAA,EACD,WAAA,CACS,aACA,OAAA,EACP;AACA,IAAA,KAAA,EAAM;AAHC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AAIX;;ACTO,MAAM,iBAAiB,SAAA,CAE3B;AAAA,EACD,WAAA,CACS,aACA,OAAA,EACP;AACA,IAAA,KAAA,EAAM;AAHC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AAIX;;ACyBA,SAAS,kBAAA,CACP,SAAA,EACA,MAAA,EACA,QAAA,EACA;AACA,EAAA,OAAO,IAAI,iBAAA,CAAkB,QAAA,EAAU,OAAO,MAAA,KAAW;AACvD,IAAA,IAAI,OAAO,SAAA,EAAW;AACpB,MAAA,MAAM,MAAA,GAAS,UAAU,IAAA,EAAK;AAC9B,MAAA,MAAM,iBAAA,GAAoB,MAAM,KAAA,CAAM,IAAA;AAAA,QAQpC,YAAY,SAAA,EAAW;AAAA,UACrB,MAAA,EAAQ,aAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,WAAA,EAAa;AAAA,SACd,CAAA;AAAA,QACD,MAAA,CAAO;AAAA,OACT;AACA,MAAA,MAAM,SAAA,GAAY,uBAAA;AAAA,QAChB;AAAA,OACF;AACA,MAAA,IAAI,SAAA;AAAW,QAAA,MAAA,EAAO;AACtB,MAAA,IACE,SAAA,EAAW,SAAS,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,KAAM,kBAAA,IACzC,SAAA,EAAW,OAAA,KAAY,kBAAA,EACvB;AACA,QAAA,IAAI,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS;AAClC,UAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,YACtB,IAAI,mBAAA,CAAoB;AAAA,cACtB,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,OAAA;AAAA,cAChC,IAAA,EAAM;AAAA,aACP;AAAA,WACH;AAAA;AAEF,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAe;AAAA,OAC3C,MAAO;AACL,QAAA,IAAI,SAAA,EAAW,aAAa,OAAA,EAAS;AACnC,UAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,YACtB,IAAI,mBAAA,CAAoB;AAAA,cACtB,OAAA,EAAS,SAAA,EAAW,WAAA,EAAa,OAAA,EAAS,IAAA;AAAA,cAC1C,IAAA,EAAM;AAAA,aACP;AAAA,WACH;AAAA;AAEF,QAAA,MAAM,MAAM,wBAAwB,CAAA;AAAA;AACtC;AAEF,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,IAAA,EAAK;AAAA,GAC9D,CAAA;AACH;AAEA,SAAS,kBAAA,CACP,SAAA,EACA,MAAA,EACA,IAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,IAAI,iBAAA,CAAkB,IAAA,EAAM,eAAgB,MAAA,EAAQ;AAChE,IAAA,IAAI,OAAO,SAAA,EAAW;AACpB,MAAA,MAAM,MAAA,GAAS,UAAU,IAAA,EAAK;AAC9B,MAAA,MAAM,mBAAA,GAAsB,MAAM,KAAA,CAAM,IAAA;AAAA,QACtC,YAAY,SAAA,EAAW;AAAA,UACrB,MAAA,EAAQ,aAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,QACD,MAAA,CAAO;AAAA,OACT;AACA,MAAA,MAAM,SAAA,GAAY,uBAAA;AAAA,QAChB;AAAA,OACF;AACA,MAAA,IAAI,SAAA;AAAW,QAAA,MAAA,EAAO;AACtB,MAAA,IAAI,WAAW,cAAA,EAAgB;AAC7B,QAAA,OAAO,kBAAA,CAAmB,SAAA,EAAW,MAAA,EAAQ,SAAA,CAAU,KAAM,IAAK,CAAA;AAAA,OACpE,MAAA,IAAW,SAAA,EAAW,OAAA,EAAS,MAAA,EAAQ,SAAS,mBAAA,EAAqB;AACnE,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAe;AAAA,OAC3C,MAAA,IAAW,SAAA,CAAU,WAAA,EAAa,OAAA,EAAS,IAAA,EAAM;AAC/C,QAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,UACtB,IAAI,mBAAA,CAAoB;AAAA,YACtB,OAAA,EAAS,SAAA,CAAU,WAAA,CAAY,OAAA,CAAQ,IAAA;AAAA,YACvC,IAAA,EAAM;AAAA,WACP;AAAA,SACH;AACA,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,IAAA,EAAK;AAAA,OAC/D,MAAA,IAAW,SAAA,CAAU,IAAA,EAAM,QAAA,EAAU;AACnC,QAAA,SAAA,CAAU,KAAA,CAAM,iBAAiB,cAAA,CAAe,QAAA;AAChD,QAAA,OAAO,oBAAoB,MAAA,EAAQ,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,WAAW,EAAE,CAAA;AAAA;AAExE,MAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,IAAA,EAAK;AAAA,KAC/D,MAAO;AACL,MAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,IAAA,EAAK;AAAA;AAC/D,GACD,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAEA,eAAeqB,WAAA,CACb,WACA,MAAA,EACqC;AACrC,EAAA,MAAM,6BAA6B,MAAM,IAAA;AAAA,IAIvC,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ,kBAAA;AAAA,MACR,MAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa,EAAA;AAAA,MACb,qBAAA,EAAuB;AAAA,KACxB,CAAA;AAAA,IACD;AAAA,MACE,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,4BAA4B,IAAA,EAAM,IAAA;AAE5D,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,OAAO,IAAI,iBAAA;AAAA,MACT,0BAAA,EAA4B,IAAA;AAAA,MAC5B,OAAO,MAAA,KAAW;AAChB,QAAA,IAAI,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,MAAA,EAAQ;AACrC,UAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAO;AAAA,SACnC,MAAA,IAAW,MAAA,CAAO,SAAA,IAAa,CAAC,OAAO,MAAA,EAAQ;AAC7C,UAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAEtC,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,KAAA,EAAM;AAAA;AAChE,KACF;AAAA,GACF,MAAO;AACL,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAExC;AACA,eAAeC,MAAA,CACb,WACA,MAAA,EACqC;AACrC,EAAA,MAAM,eAAe,MAAM,IAAA;AAAA,IAOzB,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ;AAAA;AAAA,KAET,CAAA;AAAA,IACD;AAAA,MACE,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AAEA,EAAA,MAAM,iBAAA,GACJ,cAAc,IAAA,EAAM,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,KAAM,iBAAA;AAErD,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,OAAO,IAAI,QAAA,CAAS,YAAA,EAAc,IAAA,EAAM,OAAO,MAAA,KAAW;AACxD,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAEtC,MAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,KAAA,EAAM;AAAA,KAC/D,CAAA;AAAA,GACH,MAAO;AACL,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAExC;AAEA,eAAeC,WAAA,CACb,WACA,MAAA,EACiB;AACjB,EAAA,MAAM,qBAAqB,MAAM,IAAA;AAAA,IAO/B,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ,2BAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD;AAAA,MACE,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AACA,EAAA,IACE,oBAAoB,IAAA,EAAM,OAAA,EAAS,QAAQ,KAAA,CAAM,CAAC,MAClD,2BAAA,EACA;AACA,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA;AAGF,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAA,EAAM;AAAA,GACR;AACF;AAEA,eAAeC,gBAAA,CACb,WACA,MAAA,EACkC;AAClC,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,GAAG,SAAA,CAAU,SAAA,EAAU,CAAE,gBAAA,EAAiB;AAAA,IAC1C,GAAG,SAAA,CAAU,UAAA,EAAW,CAAE,gBAAA,EAAiB;AAAA,IAC3C,GAAG,SAAA,CAAU,eAAA,EAAgB,CAAE,gBAAA,EAAiB;AAAA,IAChD,GAAG,QAAQ,gBAAA;AAAiB,GAC9B;AAEA,EAAA,MAAM,kBAAkB,MAAM,IAAA;AAAA,IAC5B,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,KAAA,EAAO,IAAA;AAAA,MACP,WAAA,EAAa,SAAA,CAAU,SAAS,CAAA,CAAE;AAAA,KACnC,CAAA;AAAA,IACD;AAAA,MACE,QAAA,EAAU,gBAAA;AAAA,MACV,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA,OACf;AAAA,MACA,SAAA,EAAW,CAAC,GAAA,KAAQ;AAElB,QAAA,MAAM,6BAAA,GAAgC,CACpC,KAAA,EACA,GAAA,KAMwB;AACxB,UAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AAChD,YAAA,OAAO,KAAA;AAAA;AAGT,UAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,KAAA,EAAc,GAAG,CAAA;AAEjD,UAAA,OAAO,MAAA;AAAA,SACT;AAGA,QAAA,MAAM,cAAc,0BAAA,EAA2B;AAG/C,QAAA,WAAA,CAAY,mBAAA,GAAsB;AAAA,UAChC,sBAAA;AAAA,UACA,6BAAA;AAAA,UACA;AAAA,SACF;AAGA,QAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA;AAG5C,QAAA,IAAI,KAAA,GAAa,IAAA;AACjB,QAAA,MAAA,CAAO,WAAA;AAAA,UACL,GAAA;AAAA,UACA,CAAC,KAAmB,MAAA,KAAoC;AACtD,YAAA,IAAI,GAAA,EAAK;AACP,cAAA,OAAA,CAAQ,IAAA,CAAK,0BAA0B,GAAG,CAAA;AAC1C,cAAA,KAAA,GAAQ,GAAA;AAAA,aACV,MAAO;AACL,cAAA,IAAI,MAAA,EAAQ,IAAA,KAAS,IAAA,IAAQ,MAAA,CAAO,UAAA,EAAY;AAC9C,gBAAA,MAAM,IAAI,uBAAA,EAAwB;AAAA;AAEpC,cAAA,KAAA,GAAQ,MAAA;AAAA;AACV;AACF,SACF;AAEA,QAAA,OAAO,KAAA;AAAA;AACT;AACF,GACF;AACA,EAAA,IACE,eAAA,EAAiB,IAAA,EAAM,WAAA,EAAa,OAAA,IACpC,eAAA,EAAiB,IAAA,EAAM,aAAA,EAAe,SAAA,IACtC,eAAA,EAAiB,IAAA,EAAM,UAAA,EAAY,SAAA,EACnC;AACA,IAAA,OAAA,CAAQ,MAAA,EAAO;AACf,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAA;AAAA,MACN,iBAAA,EAAmB,IAAA;AAAA,MACnB,OAAO,CAAA,cAAA,EAAiB;AAAA,QACtB,GAAG,YAAA,CAAa,eAAA,EAAiB,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA,CAAE,GAAA;AAAA,UAC3D,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE;AAAA,SACrB;AAAA,QACA,GAAG,YAAA,CAAa,eAAA,EAAiB,IAAA,EAAM,aAAA,EAAe,SAAS,CAAA,CAAE,GAAA;AAAA,UAC/D,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE;AAAA,SACrB;AAAA,QACA,GAAG,YAAA,CAAa,eAAA,EAAiB,IAAA,EAAM,UAAA,EAAY,SAAS,CAAA,CAAE,GAAA;AAAA,UAC5D,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE;AAAA;AACrB,QAEC,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,KACf;AAAA;AAEF,EAAA,IAAI,eAAA,EAAiB,IAAA,EAAM,OAAA,KAAY,kBAAA,EAAoB;AACzD,IAAA,SAAA,CAAU,KAAA,CAAM,iBAAiB,cAAA,CAAe,QAAA;AAChD,IAAA,OAAO,mBAAA;AAAA,MACL,MAAA;AAAA,MACA,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,KAAA,IAAS;AAAA,KAC5C;AAAA;AAEF,EAAA,MAAM,qBAAqB,MAAM,IAAA;AAAA,IAG/B,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,OAAA,EAAS,gCAAA;AAAA,MACT,MAAA,EAAQ,uBAAA;AAAA,MACR,SAAA,EAAW,GAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACb;AAAA,GACH;AACA,EAAA,MAAM,sBAAsB,MAAM,IAAA;AAAA,IAGhC,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,OAAA,EAAS,gCAAA;AAAA,MACT,MAAA,EAAQ,uBAAA;AAAA,MACR,SAAA,EAAW,GAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACb;AAAA,GACH;AACA,EAAA,aAAA,CAAc,SAAA,EAAA,CAAY,kBAAA,EAAoB,IAAA,EAAa,IAAI,CAAA;AAC/D,EAAA,aAAA,CAAc,SAAA,EAAA,CAAY,mBAAA,EAAqB,IAAA,EAAa,IAAI,CAAA;AAEhE,EAAA,IAAI,kBAAA,EAAoB,MAAM,IAAA,EAAM;AAClC,IAAA,mBAAA,CAAoB,SAAA,EAAW,kBAAA,CAAmB,IAAA,EAAM,IAAI,CAAA;AAAA;AAE9D,EAAA,IAAI,mBAAA,EAAqB,MAAM,IAAA,EAAM;AACnC,IAAA,mBAAA,CAAoB,SAAA,EAAW,mBAAA,CAAoB,IAAA,EAAM,IAAI,CAAA;AAAA;AAE/D,EAAA,IAAI,eAAA,EAAiB,MAAM,aAAA,EAAe;AACxC,IAAA,OAAO,kBAAA;AAAA,MACL,SAAA;AAAA,MACA,MAAA;AAAA,MACA,eAAA,CAAgB,KAAK,IAAA,CAAM;AAAA,KAC7B;AAAA;AAGF,EAAA,IAAI,eAAA,EAAiB,IAAA,EAAM,cAAA,KAAmB,IAAA,EAAM;AAClD,IAAA,OAAO,kBAAA;AAAA,MACL,SAAA;AAAA,MACA,MAAA;AAAA,MACA,eAAA,CAAgB,KAAK,IAAA,CAAM;AAAA,KAC7B;AAAA;AAGF,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAA,EAAM;AAAA,GACR;AACF;AACA,eAAe,mBAAA,CACb,QACA,OAAA,EACkC;AAClC,EAAA,OAAO,IAAI,kBAAA,CAAmB,OAAA,EAAS,OAAO,MAAA,KAAW;AACvD,IAAA,IAAI,OAAO,SAAA,EAAW;AACpB,MAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAe;AAAA;AAE3C,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,IAAA,EAAK;AAAA,GAC9D,CAAA;AACH;AACA,eAAe,WAAA,CACb,WACA,MAAA,EACiB;AACjB,EAAA,MAAM,sBAAsB,MAAM,IAAA;AAAA,IAChC,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD;AAAA,MACE,UAAU,EAAC;AAAA,MACX,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA,OACf;AAAA,MACA,gBAAA,EAAkB;AAAA;AACpB,GACF;AAEA,EAAA,IAAI,mBAAA,EAAqB,MAAM,GAAA,EAAK;AAClC,IAAA,SAAA,CAAU,SAAS,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,mBAAA,EAAqB,MAAM,GAAG,CAAA;AAEnE,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,iBAAA,EAAmB;AAAA,KACrB;AAAA,GACF,MAAO;AACL,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA;AAC1C,IAAA,IAAI,SAAA,CAAU,SAAS,CAAA,CAAE,SAAA,KAAc,GAAA,EAAK;AAC1C,MAAA,SAAA,CAAU,SAAS,CAAA,CAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAM;AAAA,KAC7C,MAAA,IAAW,SAAA,CAAU,SAAS,CAAA,CAAE,cAAc,GAAA,EAAK;AACjD,MAAA,QAAA,CAAS,MAAA,EAAO;AAAA,KAClB,MAAA,IACG,SAAA,CAAU,SAAS,CAAA,CAAE,cAAoC,GAAA,CAAI,KAAA;AAAA,MAC5D;AAAA,KACF,EACA;AACA,MAAC,SAAA,CAAU,SAAS,CAAA,CAAE,YAAA,CAAmC,MACvD,SAAA,CAAU,SAAS,EAAE,YAAA,CACrB,GAAA;AAAA,KACJ,MAAA,IAAW,SAAA,CAAU,SAAS,CAAA,CAAE,cAAc,GAAA,EAAK;AACjD,MAAA,SAAA,CAAU,SAAS,CAAA,CAAE,QAAA,CAAS,OAAO,SAAA,CAAU,SAAS,EAAE,aAAa,CAAA;AAAA,KACzE,MAAO;AACL,MAAA,IAAI,eACF,SAAA,CAAU,SAAS,EAAE,MAAA,CAAO,QAAA,CAAS,eAAe,cAAc,CAAA;AACpE,MAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,QAAA,YAAA,GACE,UAAU,SAAS,CAAA,CAAE,GAAA,CAAK,QAAA,CAAS,eAAe,cAAc,CAAA;AAAA;AAGpE,MAAA,SAAA,CAAU,KAAA,CAAM,iBAAiB,cAAA,CAAe,QAAA;AAEhD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAC,aAAqB,eAAA,EAAgB;AAAA,OACxC,MAAO;AACL,QAAA,SAAA,CAAU,cAAc,QAAA,EAAS;AAAA;AACnC;AAGF,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,iBAAA,EAAmB;AAAA,KACrB;AAAA;AAEJ;AAEA,MAAMC,UAAA,GAAgD;AAAA,EACpD,UAAA,EAAYF,WAAA;AAAA,EACZ,UAAA,EAAYF,WAAA;AAAA,EACZ,YAAA,EAAc,WAAA;AAAA,EACd,OAAA,EAASG,gBAAA;AAAA,EACT,IAAA,EAAMF;AACR,CAAA;AAEA,eAAsB,OAAA,CACpB,WACA,MAAA,EACmC;AACnC,EAAA,IAAI,MAAA,GAAiB,MAAA;AAErB,EAAA,OAAO,OAAO,IAAA,EAAM;AAClB,IAAA,MAAM,OAAA,GAAUG,UAAA,CAAS,MAAA,CAAO,IAAI,CAAA;AAEpC,IAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,SAAA,EAAW,MAAM,CAAA;AACrD,IAAA,IAAI,yBAAyB,SAAA,EAAW;AACtC,MAAA,OAAO,aAAA;AAAA;AAGT,IAAA,MAAA,GAAS,aAAA;AAET,IAAA,IAAI,OAAO,KAAA,EAAO;AAChB,MAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,QACtB,IAAI,oBAAoB,EAAE,OAAA,EAAS,OAAO,KAAA,EAAO,IAAA,EAAM,SAAS;AAAA,OAClE;AAAA;AAGF,IAAA,IAAI,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,iBAAA,EAAmB;AAC5C,MAAA,OAAO,KAAA;AAAA;AACT;AAGF,EAAA,OAAO,IAAA;AACT;;ACrgBA,eAAe,SAAA,CACb,WACA,MAAA,EACqC;AACrC,EAAA,MAAM,6BAA6B,MAAM,IAAA;AAAA,IAIvC,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ,kBAAA;AAAA,MACR,MAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa,EAAA;AAAA,MACb,qBAAA,EAAuB;AAAA,KACxB,CAAA;AAAA,IACD;AAAA,MACE,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,4BAA4B,IAAA,EAAM,IAAA;AAE5D,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,OAAO,IAAI,iBAAA;AAAA,MACT,0BAAA,EAA4B,IAAA;AAAA,MAC5B,OAAO,MAAA,KAAW;AAChB,QAAA,IAAI,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,MAAA,EAAQ;AACrC,UAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAO;AAAA,SACnC,MAAA,IAAW,MAAA,CAAO,SAAA,IAAa,CAAC,OAAO,MAAA,EAAQ;AAC7C,UAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAEtC,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,KAAA,EAAM;AAAA;AAChE,KACF;AAAA,GACF,MAAO;AACL,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAExC;AACA,eAAe,IAAA,CACb,WACA,MAAA,EACqC;AACrC,EAAA,MAAM,eAAe,MAAM,IAAA;AAAA,IAOzB,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ;AAAA;AAAA,KAET,CAAA;AAAA,IACD;AAAA,MACE,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AAEA,EAAA,MAAM,iBAAA,GACJ,cAAc,IAAA,EAAM,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,KAAM,iBAAA;AAErD,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,OAAO,IAAI,QAAA,CAAS,YAAA,EAAc,IAAA,EAAM,OAAO,MAAA,KAAW;AACxD,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAEtC,MAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAW,mBAAmB,KAAA,EAAM;AAAA,KAC/D,CAAA;AAAA,GACH,MAAO;AACL,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA;AAExC;AAEA,eAAe,SAAA,CACb,WACA,MAAA,EACiB;AACjB,EAAA,MAAM,qBAAqB,MAAM,IAAA;AAAA,IAO/B,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ,2BAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD;AAAA,MACE,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AACA,EAAA,IACE,oBAAoB,IAAA,EAAM,OAAA,EAAS,QAAQ,KAAA,CAAM,CAAC,MAClD,2BAAA,EACA;AACA,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA;AAGF,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAA,EAAM;AAAA,GACR;AACF;AAEA,eAAe,cAAA,CACb,WACA,MAAA,EACkC;AAClC,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,GAAG,SAAA,CAAU,SAAA,EAAU,CAAE,gBAAA,EAAiB;AAAA,IAC1C,GAAG,SAAA,CAAU,eAAA,EAAgB,CAAE,gBAAA,EAAiB;AAAA,IAChD,GAAG,QAAQ,gBAAA;AAAiB,GAC9B;AACA,EAAA,MAAM,kBAAkB,MAAM,IAAA;AAAA,IAC5B,SAAA;AAAA,IACA,YAAY,SAAA,EAAW;AAAA,MACrB,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,KAAA,EAAO,IAAA;AAAA,MACP,WAAA,EAAa,SAAA,CAAU,SAAS,CAAA,CAAE;AAAA,KACnC,CAAA;AAAA,IACD;AAAA,MACE,QAAA,EAAU,gBAAA;AAAA,MACV,iBAAA,EAAmB,WAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AACA,EAAA,IAAI,eAAA,EAAiB,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS;AAC/C,IAAA,OAAA,CAAQ,MAAA,EAAO;AAEf,IAAA,OAAO;AAAA,MACL,IAAA,EAAM;AAAA,KACR;AAAA;AAEF,EAAA,IAAI,eAAA,EAAiB,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO;AAC5C,IAAA,MAAM,qBAAqB,MAAM,IAAA;AAAA,MAG/B,SAAA;AAAA,MACA,YAAY,SAAA,EAAW;AAAA,QACrB,OAAA,EAAS,gCAAA;AAAA,QACT,MAAA,EAAQ,uBAAA;AAAA,QACR,SAAA,EAAW,GAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACb;AAAA,KACH;AACA,IAAA,IAAI,kBAAA,EAAoB,MAAM,IAAA,EAAM;AAClC,MAAA,mBAAA,CAAoB,SAAA,EAAW,kBAAA,CAAmB,IAAA,EAAM,IAAI,CAAA;AAAA;AAG9D,IAAA,MAAM,GAAA,GAAM,aAAa,eAAA,CAAgB,IAAA,CAAK,SAAS,MAAA,CAAO,KAAK,EAAE,CAAC,CAAA;AAEtE,IAAA,IAAI,QAAQ,mBAAA,EAAqB;AAC/B,MAAA,CAAC,SAAA,CAAU,SAAS,CAAA,EAAG,GAAA,EAAK,UAAiB,IAAA,CAAK,UAAA,CAAW,MAAM,IAAI,CAAA;AAAA,KACzE,MAAO;AACL,MAAA,MAAM,CAAA,GAAI,IAAI,GAAA,CAAI,GAAG,CAAA;AAErB,MAAA,SAAA,CAAU,SAAS,EAAE,QAAA,CAAS,MAAA;AAAA,QAC5B,YAAY,SAAA,EAAW;AAAA,UACrB,SAAS,CAAA,CAAE,IAAA;AAAA,UACX,MAAA,EAAQ,CAAA,CAAE,YAAA,CAAa,QAAQ;AAAA,SAChC;AAAA,OACH;AACA,MAAA,CAAC,UAAU,SAAS,CAAA,EAAG,GAAA,EAAK,QAAA,EAAiB,cAAc,MAAA,CAAO;AAAA,QAChE,OAAA,EAAS,eAAA,EAAiB,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,KAAA;AAAA,QAC5C,IAAA,EAAM;AAAA,OACP,CAAA;AAAA;AACH;AAGF,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,IAAA,EAAM;AAAA,GACR;AACF;AAEA,MAAM,QAAA,GAAgD;AAAA,EACpD,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,eAAsB,aAAA,CACpB,WACA,MAAA,EACmC;AACnC,EAAA,IAAI,MAAA,GAAiB,MAAA;AAErB,EAAA,OAAO,OAAO,IAAA,EAAM;AAClB,IAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,IAAA,MAAM,OAAA,GAAU,SAAS,IAAI,CAAA;AAE7B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,QACtB,IAAI,mBAAA,CAAoB;AAAA,UACtB,OAAA,EAAS,CAAA,sBAAA,EAAyB,MAAA,CAAO,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA;AAAA,UACrD,IAAA,EAAM;AAAA,SACP;AAAA,OACH;AACA,MAAA,OAAO,KAAA;AAAA;AAGT,IAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,SAAA,EAAW,MAAM,CAAA;AACrD,IAAA,IAAI,yBAAyB,SAAA,EAAW;AACtC,MAAA,OAAO,aAAA;AAAA;AAGT,IAAA,MAAA,GAAS,aAAA;AAET,IAAA,IAAI,OAAO,KAAA,EAAO;AAChB,MAAA,SAAA,CAAU,aAAA,CAAc,GAAA;AAAA,QACtB,IAAI,oBAAoB,EAAE,OAAA,EAAS,OAAO,KAAA,EAAO,IAAA,EAAM,SAAS;AAAA,OAClE;AAAA;AAGF,IAAA,IAAI,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,iBAAA,EAAmB;AAC5C,MAAA,OAAO,KAAA;AAAA;AACT;AAGF,EAAA,OAAO,IAAA;AACT;;;;;;;;ACnMO,SAAS,sBACd,GAAA,EACkB;AAClB,EAAA,IAAI,IAAA,GAAyB,SAAA;AAC7B,EAAA,QAAQ,GAAA;AAAK,IACX,KAAK,GAAA;AACH,MAAA,IAAA,GAAO,SAAA;AACP,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,IAAA,GAAO,SAAA;AACP,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,IAAA,GAAO,OAAA;AACP,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,IAAA,GAAO,OAAA;AACP,MAAA;AAAA,IACF,KAAK,GAAA;AACH,MAAA,IAAA,GAAO,MAAA;AACP,MAAA;AAAA;AAEJ,EAAA,OAAO,IAAA;AACT;AA6BO,MAAM,cAAA,GAAiB,CAAC,GAAA,KAAwB;AACrD,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AACvC,IAAA,OAAO,IACJ,OAAA,CAAQ,SAAA,EAAW,GAAG,CAAA,CACtB,OAAA,CAAQ,WAAW,GAAG,CAAA,CACtB,QAAQ,OAAA,EAAS,GAAG,EACpB,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA,CACpB,OAAA,CAAQ,UAAU,GAAG,CAAA;AAAA;AAE1B,EAAA,OAAO,EAAA;AACT,CAAA;AAcO,MAAM,kBAAkBf,cAAA,CAoB5B;AAAA,EAmBD,WAAA,CACS,aACA,SAAA,EACP;AACA,IAAA,KAAA,EAAM;AAHC,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AApBT,IAAA,aAAA,CAAA,IAAA,EAAO,eAAA,CAAA;AACP,IAAA,aAAA,CAAA,IAAA,EAAQ,QAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,SAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,cAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,sBAAA,EAAuB,KAAA,CAAA;AAC/B,IAAA,aAAA,CAAA,IAAA,EAAO,iBAAA,EAA2C,IAAA,CAAA;AAClD,IAAA,aAAA,CAAA,IAAA,EAAO,oBAAA,EAAoC,IAAA,CAAA;AAC3C,IAAA,aAAA,CAAA,IAAA,EAAQ,UAIF,EAAC,CAAA;AACP,IAAA,aAAA,CAAA,IAAA,EAAQ,cAAA,EAAuB,CAAA,CAAA;AAC/B,IAAA,aAAA,CAAA,IAAA,EAAQ,YAAA,EAAqB,CAAA,CAAA;AAC7B,IAAA,aAAA,CAAA,IAAA,EAAgB,eAAA,CAAA;AAChB,IAAA,aAAA,CAAA,IAAA,EAAQ,mBAA4B,EAAC,CAAA;AACrC,IAAA,aAAA,CAAA,IAAA,EAAQ,kBAAA,sBAAuB,GAAA,EAAsB,CAAA;AAqBrD,IAAA,aAAA,CAAA,IAAA,EAAU,WAAA,EAAY;AAAA,MACpB,CAAA,sBAAO,GAAA,EAAkB;AAAA,MACzB,CAAA,sBAAO,GAAA;AAAkB,KAC3B,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAU,OAAA,EAAQ;AAAA,MAChB,CAAA,sBAAO,GAAA,EAAkB;AAAA,MACzB,CAAA,sBAAO,GAAA;AAAkB,KAC3B,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,EAII;AAAA,MACF,gBAAgB,cAAA,CAAe,OAAA;AAAA,MAC/B,MAAA,EAAQ,CAAA;AAAA,MACR,kBAAA,EAAoB;AAAA,KACtB,CAAA;AA0BA,IAAA,aAAA,CAAA,IAAA,EAAQ,2BAAuD,EAAC,CAAA;AAsDhE,IAAA,aAAA,CAAA,IAAA,EAAQ,mBAA4B,EAAC,CAAA;AA2JrC,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,EAAO;AAAA,MACL,MAAM,MAAM;AACV,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,OAC9B;AAAA,MACA,SAAS,MAAM;AACb,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,OAC7B;AAAA,MACA,MAAM,MAAM;AACV,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA,OAC1B;AAAA,MACA,UAAU,MAAM;AACd,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,OAC9B;AAAA,MACA,MAAM,MAAM;AACV,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA,OAC1B;AAAA,MACA,SAAS,MAAM;AACb,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,OAC7B;AAAA,MACA,UAAU,MAAM;AACd,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,OAC9B;AAAA,MACA,OAAO,MAAM;AACX,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA,OAC3B;AAAA,MACA,UAAU,MAAM;AACd,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,OAC9B;AAAA,MACA,OAAO,MAAM;AACX,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA;AAC3B,KACF,CAAA;AAxSE,IAAA,IAAA,CAAK,gBAAgB,EAAE,GAAG,gBAAA,EAAkB,GAAG,YAAY,aAAA,EAAc;AAEzE,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,aAAA,CAAc,IAAI,CAAA;AAE3C,IAAA,cAAA,CAAe,IAAA,EAAM,EAAE,KAAA,EAAO,UAAA,EAAY,CAAA;AAE1C,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,CAAO,IAAI,CAAA;AAC7B,MAAA,IAAA,CAAK,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAI,CAAA;AAC/B,MAAA,IAAA,CAAK,YAAA,GAAe,IAAI,YAAA,CAAa,IAAI,CAAA;AAAA,OACxC,CAAC,CAAA;AAAA;AACN,EAqBA,kBAAkB,OAAA,EAA2B;AAC3C,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO,CAAA;AACjC,IAAA,OAAA,CAAQ,QAAQ,MAAM;AACpB,MAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,OAAO,CAAA;AAAA,KACrC,CAAA;AAAA;AACH,EAEO,aAAA,GAAgB;AACrB,IAAA,MAAM,eAA6B,EAAC;AACpC,IAAA,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC7B,MAAA,YAAA,CAAa,IAAA,CAAK,GAAG,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,KAC1C,CAAA;AAED,IAAA,MAAM,gBAA8B,EAAC;AACrC,IAAA,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC7B,MAAA,aAAA,CAAc,IAAA,CAAK,GAAG,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,KAC3C,CAAA;AACD,IAAA,OAAO,CAAC,GAAG,YAAA,EAAc,GAAG,aAAa,CAAA;AAAA;AAC3C,EAEA,WAAA,GAAc;AACZ,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,MAAA,EAAO,EAAG,GAAG,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA;AAAA;AAC5D,EAOA,mBAAA,CAAoB,WAAuB,EAAA,EAAmB;AAC5D,IAAA,IAAI,CAAC,IAAA,CAAK,uBAAA,CAAwB,SAAS,CAAA,EAAG;AAC5C,MAAA,IAAA,CAAK,uBAAA,CAAwB,SAAS,CAAA,GAAI,IAAA;AAC1C,MAAA,EAAA,EAAG;AAAA;AACL;AACF,EAEA,eAAe,IAAA,EAAkB;AAC/B,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,MAAM,IAAI,CAAA,CAAE,QAAQ,CAAA;AAAA;AACtC,EACA,aAAA,CAAc,UAAkB,SAAA,EAAwB;AACtD,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA,CAAE,IAAI,QAAQ,CAAA;AAAA,KAC3C,MAAO;AACL,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,GAAA,CAAI,QAAQ,KAAK,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAAA;AAChE;AACF,EACA,WAAA,CAAY,QAAyB,SAAA,EAAwB;AAC3D,IAAA,IAAI,SAAA;AAAW,MAAA,OAAO,KAAK,SAAA,CAAU,SAAS,EAAE,GAAA,CAAI,MAAA,CAAO,MAAM,CAAC,CAAA;AAClE,IAAA,OACE,IAAA,CAAK,SAAA,CAAU,CAAA,CAAE,GAAA,CAAI,OAAO,MAAM,CAAC,CAAA,IACnC,IAAA,CAAK,SAAA,CAAU,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA;AAEvC,EACA,IAAI,WAAA,GAAc;AAChB,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA;AACd,EACA,IAAI,KAAA,GAAQ;AACV,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA;AACd,EACO,SAAA,GAAY;AACjB,IAAA,IAAA,CAAK,OAAO,IAAA,EAAK;AAEjB,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA;AACd,EACO,UAAA,GAAa;AAClB,IAAA,IAAA,CAAK,QAAQ,IAAA,EAAK;AAElB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA;AACd,EACO,eAAA,GAAkB;AACvB,IAAA,IAAA,CAAK,aAAa,IAAA,EAAK;AAEvB,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA;AACd,EACO,cAAA,GAAiB;AACtB,IAAA,OAAO,IAAI,KAAK,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,IAAU,CAAA;AAAA;AAC5C,EAIA,IAAW,MAAA,GAAS;AAClB,IAAA,OAAO,IAAA,CAAK,MAAM,MAAA,GAAS,CAAA;AAAA;AAC7B,EAEO,IAAA,GAAO;AACZ,IAAA,IAAA,CAAK,KAAA,CAAM,MAAA,EAAA;AACX,IAAA,IAAI,QAAA,GAAW,KAAA;AACf,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,QAAA,GAAW,IAAA;AACX,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA,EAAA;AAAA;AACb,KACF;AAAA;AACF,EAEA,MAAa,IAAI,eAAA,EAAmC;AAClD,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,EAAK;AACzB,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,UAAA,GAAaK,OAAA,CAAM,SAAA,CAAU,IAAI,EAAE,QAAQ,CAAA;AAChD,MAAA,IAAA,CAAK,YAAA,GAAeA,OAAA,CAAM,SAAA,CAAU,IAAI,EAAE,YAAY,CAAA;AACtD,MAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AACvB,MAAA,IAAA,CAAK,YAAY,UAAA,GAAa;AAAA,QAC5B,QAAA,EAAU,SAAA,CAAU,IAAI,CAAA,CAAE,iBAAA,IAAqB,EAAA;AAAA,QAC/C,WAAA,EAAa,SAAA,CAAU,IAAI,CAAA,CAAE,oBAAA,IAAwB;AAAA,OACvD;AAEA,MAAA,MAAM,MAAA,GAAS,cAAA,CAAe,SAAA,CAAU,IAAI,EAAE,WAAW,CAAA;AAEzD,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,GAAA,GAAwB,SAAS,MAAM,CAAA;AAC7C,QAAA,YAAA,CAAa,GAAA,CAAI,WAAA,EAAa,OAAO,CAAA,CAAE,OAAA;AAAA,UAAQ,CAAC,CAAA,KAC9C,IAAA,CAAK,aAAA,CAAc,GAAA;AAAA,YACjB,IAAI,mBAAA,CAAoB;AAAA,cACtB,SAAS,CAAA,CAAE,IAAA;AAAA,cACX,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,IAAA,EAAM,qBAAA,CAAsB,CAAA,CAAE,IAAI;AAAA,aACnC;AAAA;AACH,SACF;AACA,QAAA;AAAA,UACE,GAAG,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,SAAS,CAAA;AAAA,UACzC,GAAG,YAAA,CAAa,GAAA,CAAI,aAAA,EAAe,SAAS;AAAA,SAC9C,CAAE,OAAA;AAAA,UAAQ,CAAC,CAAA,KACT,IAAA,CAAK,aAAA,CAAc,GAAA;AAAA,YACjB,IAAI,mBAAA,CAAoB;AAAA,cACtB,SAAS,CAAA,CAAE,IAAA;AAAA,cACX,IAAA,EAAM,OAAA;AAAA,cACN,YAAY,CAAA,CAAE;AAAA,aACf;AAAA;AACH,SACF;AAAA;AAGF,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA,CAAE,QAAQ,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC7D,QAAA,IAAI,CAAA,GAAI,KAAK,YAAA,EAAc;AACzB,UAAA,IAAA,CAAK,OAAO,IAAA,CAAK;AAAA,YACf,KAAA,EAAO,GAAG,QAAA,CAAS,IAAA,EAAM,YAAY,CAAA,CAAE,IAAI,IAAI,CAAC,CAAA,CAAA;AAAA,YAChD,UAAA,EAAY,CAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA;AAEH,QAAA,IAAI,CAAA,GAAI,IAAA,CAAK,YAAA,IAAgB,CAAA,IAAK,KAAK,UAAA,EAAY;AACjD,UAAA,IAAA,CAAK,OAAO,IAAA,CAAK;AAAA,YACf,KAAA,EAAO,GAAG,QAAA,CAAS,IAAA,EAAM,YAAY,CAAA,CAAE,IAAI,IAAI,CAAC,CAAA,CAAA;AAAA,YAChD,UAAA,EAAY,CAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA;AAEH,QAAA,IAAI,CAAA,KAAM,KAAK,YAAA,EAAc;AAC3B,UAAA,IAAA,CAAK,OAAO,IAAA,CAAK;AAAA,YACf,KAAA,EAAO,GAAG,QAAA,CAAS,IAAA,EAAM,YAAY,CAAA,CAAE,IAAI,IAAI,CAAC,CAAA,CAAA;AAAA,YAChD,UAAA,EAAY,CAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA;AACH;AAEF,MAAA,MAAM,GAAA,GAAM,MAAM,WAAA,CAAY,kBAAA,CAAmB,IAAI,CAAA;AAErD,MAAA,IAAI;AACF,QAAA,WAAA,MAAiB,kBAAkB,GAAA,EAAK;AACtC,UAAA,MAAM,KAAA,GAAQZ,eAAA,CAAc,cAAA,CAAe,UAAU,CAAA;AACrD,UAAA,IACE,CAAC,MAAM,MAAA,IACP,CAAC,MAAM,SAAA,IACP,YAAA,CAAa,cAAA,CAAe,KAAK,CAAA,CAAE,KAAA;AAAA,YACjC,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,UAAA,EAAY;AAAA,WACxB,KACC,YAAA,CAAa,cAAA,CAAe,KAAK,CAAA,CAAE,MAAA,GAAS,CAAA,IAC3C,YAAA,CAAa,cAAA,CAAe,WAAW,CAAA,CAAE,MAAA,GAAS,CAAA,CAAA,EACpD;AACA,YAAA,IAAA,CAAK,eAAA,CAAgB,IAAA;AAAA,cACnB,cAAA,CAAe,SAAA,GAAY,GAAA,GAAM,cAAA,CAAe;AAAA,aAClD;AAAA;AACF;AAEF,QAAA,WAAA,MAAiB,kBAAkB,GAAA,EAAK;AACtC,UAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,IAAA,EAAM,cAAc,CAAA;AAC7C,UAAA,MAAM,QAAQ,IAAA,EAAK;AAEnB,UAAA,IAAI,cAAA,CAAe,cAAc,GAAA,EAAK;AACpC,YAAA,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,GAAA,CAAI,cAAA,CAAe,UAAU,OAAO,CAAA;AACjD,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA,CAAI,OAAO,cAAA,CAAe,EAAE,GAAG,OAAO,CAAA;AAAA,WACzD,MAAO;AACL,YAAA,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,GAAA,CAAI,cAAA,CAAe,UAAU,OAAO,CAAA;AACjD,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA,CAAI,OAAO,cAAA,CAAe,EAAE,GAAG,OAAO,CAAA;AAAA;AACzD;AAGF,QAAA,IAAA,CAAK,KAAA,CAAM,iBACT,IAAA,CAAK,eAAA,CAAgB,WAAW,CAAA,GAC5B,cAAA,CAAe,UACf,cAAA,CAAe,SAAA;AAErB,QAAA,MAAM,IAAA,CAAK,WAAW,QAAQ,CAAA;AAC9B,QAAA,IAAA,CAAK,oBAAA,GAAuB,IAAA;AAC5B,QAAA,IACE,IAAA,CAAK,gBAAgB,MAAA,KAAW,CAAA,IAChC,KAAK,KAAA,CAAM,cAAA,KAAmB,eAAe,SAAA,EAC7C;AACA,UAAA,IAAA,CAAK,KAAA,CAAM,iBAAiB,cAAA,CAAe,OAAA;AAAA;AAC7C,eACO,CAAA,EAAG;AACV,QAAA,IAAA,CAAK,KAAA,CAAM,iBAAiB,cAAA,CAAe,mBAAA;AAC3C,QAAA,MAAM,CAAA;AAAA;AACR,KACF,SAAE;AACA,MAAA,MAAA,EAAO;AAAA;AACT;AACF,EAEU,cAAA,GAAiB;AACzB,IAAA,MAAM,cAAc,IAAA,CAAK,WAAA,EAAY,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS;AACtD,MAAA,OAAO,KAAK,UAAA,CAAW,SAAA;AAAA,KACxB,CAAA;AACD,IAAA,OAAO,WAAA;AAAA;AACT,EAEO,kBAAA,CAAmB,WAAmB,OAAA,EAAiB;AAC5D,IAAA,IAAA,CAAK,eAAA,GAAkB,KAAK,eAAA,CAAgB,MAAA;AAAA,MAC1C,CAAC,CAAA,KAAM,CAAA,KAAM,SAAA,GAAY,GAAA,GAAM;AAAA,KACjC;AACA,IAAA,IAAI,IAAA,CAAK,eAAA,CAAgB,MAAA,KAAW,CAAA,IAAK,KAAK,oBAAA,EAAsB;AAClE,MAAA,IAAA,CAAK,KAAA,CAAM,iBAAiB,cAAA,CAAe,OAAA;AAAA;AAC7C;AACF,EAEA,MAAa,QAAA,GAAW;AACtB,IAAA,OAAA,CAAQ,KAAK,8BAA8B,CAAA;AAAA;AAC7C,EACA,MAAa,WAAA,GAAc;AACzB,IAAA,OAAA,CAAQ,KAAK,iCAAiC,CAAA;AAAA;AAChD,EAmCA,aAAA,GAAgB;AACd,IAAA,IAAA,CAAK,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA;AACjC,EAEA,MAAa,MAAA,GAAS;AACpB,IAAA,MAAM,SAAA,GAAY,KAAK,eAAA,EAAiB,SAAA;AACxC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,YAAY,IAAA,EAAM;AAAA,UAChC,MAAA,EAAQ,cAAA;AAAA,UACR,KAAA,EAAO,IAAA;AAAA,UACP,KAAA,EAAO,IAAA;AAAA,UACP,UAAA,EAAY,qBAAqB,IAAI,CAAA;AAAA,UACrC,SAAA,EAAW;AAAA,SACZ,CAAA;AAED,QAAA,MAAM,YAAA,GAAe;AAAA,UACnB,GAAG,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAiB;AAAA,UACjC,GAAG,IAAA,CAAK,YAAA,CAAa,gBAAA;AAAiB,SACxC;AACA,QAAA,cAAA,CAAe,SAAS,YAAY,CAAA;AAAA,eAC7B,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,KAAK,CAAA;AACnD,QAAA,IAAA,CAAK,aAAA,CAAc,GAAA;AAAA,UACjB,IAAI,mBAAA,CAAoB;AAAA,YACtB,IAAA,EAAM,OAAA;AAAA,YACN,OAAA,EAAS,OAAO,uBAAA;AAAwB,WACzC;AAAA,SACH;AACA,QAAA,OAAO,KAAA;AAAA;AACT;AACF;AACF,EAEA,MAAa,UACX,MAAA,EAC2C;AAC3C,IAAA,IAAI,UAAU,CAAC,MAAA,EAAQ,IAAA,IAAQ,CAAC,QAAQ,iBAAA,EAAmB;AACzD,MAAA,OAAO,KAAA;AAAA,KACT,MAAO;AACL,MAAA,MAAM,gBAAA,GAAmB,MAAA,KAAW,MAAA,IAAc,MAAM,KAAK,QAAA,EAAS;AACtE,MAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,QAAA,OAAO,gBAAA;AAAA;AAGT,MAAA,IACE,KAAK,eAAA,EAAiB,QAAA,IACtB,CAAC,IAAA,CAAK,MAAA,CAAO,sBAAqB,EAClC;AACA,QAAA,OAAO,KAAA;AAAA;AAGT,MAAA,MAAM,UACJ,MAAA,KAAW,MAAA,IAAc,MAAM,IAAA,CAAK,WAAW,UAAU,CAAA;AAC3D,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,eAAA,EAAiB,UAAA,IAAc,OAAA,KAAY,IAAA;AAEnE,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAM,MAAA,GAAS,KAAK,IAAA,EAAK;AACzB,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAA,CACb,IAAA,CAAK,eAAA,EAAiB,WAAW,aAAA,GAAgB,OAAA;AAAA,YAEjD,IAAA;AAAA,YACC,MAAA,IAAU;AAAA,cACT,IAAA,EAAM;AAAA;AACR,WACF;AAEA,UAAA,IAAI,kBAAkB,SAAA,EAAW;AAC/B,YAAA,OAAO,MAAA;AAAA;AAGT,UAAA,OAAO,MAAA;AAAA,iBACA,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,KAAK,CAAA;AACnD,UAAA,IAAA,CAAK,aAAA,CAAc,GAAA;AAAA,YACjB,IAAI,mBAAA,CAAoB;AAAA,cACtB,IAAA,EAAM,OAAA;AAAA,cACN,OAAA,EAAS,OAAO,uBAAA;AAAwB,aACzC;AAAA,WACH;AACA,UAAA,OAAO,KAAA;AAAA,SACT,SAAE;AACA,UAAA,MAAA,EAAO;AAAA;AACT,OACF,MAAO;AACL,QAAA,OAAO,OAAA;AAAA;AACT;AACF;AACF,EAEA,MAAa,MAAA,GAAS;AACpB,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,GAAG,IAAA,CAAK,MAAA,CAAO,gBAAA,EAAiB;AAAA,MAChC,GAAG,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAiB;AAAA,MACjC,GAAG,IAAA,CAAK,YAAA,CAAa,gBAAA,EAAiB;AAAA,MACtC,GAAG,QAAQ,gBAAA;AAAiB,KAC9B;AACA,IAAA,MAAM,OAAO,MAAM,IAAA;AAAA,MACjB,IAAA;AAAA,MACA,YAAY,IAAA,EAAM;AAAA,QAChB,MAAA,EAAQ,SAAA;AAAA,QACR,UAAA,EAAY,qBAAqB,IAAI;AAAA,OACtC,CAAA;AAAA,MACD;AAAA,QACE,QAAA,EAAU,YAAA;AAAA,QACV,iBAAA,EAAmB,WAAA;AAAA,QACnB,gBAAA,EAAkB;AAAA,UAChB,WAAA,EAAa;AAAA;AACf;AACF,KACF;AAEA,IAAA,IAAI,IAAA,EAAM,MAAM,IAAA,EAAM;AACpB,MAAA,IAAA,CAAK,KAAA,CAAM,iBAAiB,cAAA,CAAe,QAAA;AAAA;AAG7C,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,MAAa,OAAO,MAAA,EAAkD;AACpE,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,QAAA,EAAS;AACpC,IAAA,IAAI,YAAY,IAAA,EAAM;AACpB,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,EAAI;AACxC,QAAA,OAAO,KAAA;AAAA;AACT;AAEF,IAAA,IAAI,OAAA,KAAY,IAAA;AAAM,MAAA,OAAO,OAAA;AAE7B,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,eAAA,EAAiB,YAAA,IAAgB,OAAA,KAAY,IAAA;AAEpE,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAM,MAAA,GAAS,KAAK,IAAA,EAAK;AACzB,MAAA,IAAI;AACF,QAAA,MAAM,gBAAgB,MAAM,IAAA;AAAA,UAC1B,IAAA;AAAA,UACA,YAAY,IAAA,EAAM;AAAA,YAChB,MAAA,EAAQ,2BAAA;AAAA,YACR,MAAA,EAAQ;AAAA,WACT,CAAA;AAAA,UACD;AAAA,YACE,iBAAA,EAAmB,WAAA;AAAA,YACnB,gBAAA,EAAkB;AAAA,cAChB,WAAA,EAAa;AAAA;AACf;AACF,SACF;AACA,QAAA,IACE,eAAe,IAAA,EAAM,OAAA,EAAS,QAAQ,KAAA,CAAM,CAAC,MAC7C,2BAAA,EACA;AACA,UAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAAA;AAI1D,QAAA,MAAM,wBAAwB,MAAM,IAAA;AAAA,UAIlC,IAAA;AAAA,UACA,YAAY,IAAA,EAAM;AAAA,YAChB,MAAA,EAAQ,kBAAA;AAAA,YACR,MAAA,EAAQ,IAAA;AAAA,YACR,WAAA,EAAa,SAAA,CAAU,IAAI,CAAA,CAAE;AAAA,WAC9B,CAAA;AAAA,UACD;AAAA,YACE,iBAAA,EAAmB,WAAA;AAAA,YACnB,gBAAA,EAAkB;AAAA,cAChB,WAAA,EAAa;AAAA;AACf;AACF,SACF;AACA,QAAA,IAAI,qBAAA,EAAuB,WAAW,GAAA,EAAK;AACzC,UAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA;AAEhD,QAAA,MAAM,iBAAA,GAAoB,uBAAuB,IAAA,EAAM,IAAA;AAEvD,QAAA,IAAI,iBAAA,IAAqB,CAAC,MAAA,EAAQ,MAAA,EAAQ;AACxC,UAAA,OAAO,IAAI,iBAAA;AAAA,YACT,qBAAA,EAAuB,IAAA;AAAA,YACvB,YAAY;AACV,cAAA,OAAO,EAAA;AAAA;AACT,WACF;AAAA;AAGF,QAAA,IAAI,iBAAA,KAAsB,CAAC,MAAA,EAAQ,SAAA,IAAa,CAAC,MAAA,EAAQ,MAAA,CAAA;AACvD,UAAA;AAEF,QAAA,MAAM,OAAA,GAAU,YAAY,IAAA,EAAM;AAAA,UAChC,MAAA,EAAQ,cAAA;AAAA,UACR,KAAA,EAAO,IAAA;AAAA,UACP,KAAA,EAAO,IAAA;AAAA,UACP,UAAA,EAAY,qBAAqB,IAAI,CAAA;AAAA,UACrC,SAAA,EAAW;AAAA,SACZ,CAAA;AAED,QAAA,MAAM,YAAA,GAAe;AAAA,UACnB,GAAG,IAAA,CAAK,MAAA,CAAO,gBAAA,EAAiB;AAAA,UAChC,GAAG,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAiB;AAAA,UACjC,GAAG,IAAA,CAAK,YAAA,CAAa,gBAAA,EAAiB;AAAA,UACtC,GAAG,QAAQ,gBAAA;AAAiB,SAC9B;AACA,QAAA,cAAA,CAAe,SAAS,YAAY,CAAA;AACpC,QAAA,OAAO,IAAA;AAAA,eACA,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,KAAK,CAAA;AACnD,QAAA,IAAA,CAAK,aAAA,CAAc,GAAA;AAAA,UACjB,IAAI,mBAAA,CAAoB;AAAA,YACtB,IAAA,EAAM,OAAA;AAAA,YACN,OAAA,EAAS,OAAO,uBAAA;AAAwB,WACzC;AAAA,SACH;AACA,QAAA,OAAO,KAAA;AAAA,OACT,SAAE;AACA,QAAA,MAAA,EAAO;AAAA;AACT;AACF;AACF,EAEA,MAAa,OAAA,GAAU;AACrB,IAAA,SAAA,CAAU,IAAI,EAAE,KAAA,EAAM;AAAA;AACxB,EAEA,MAAa,MAAA,GAAS;AACpB,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,EAAK;AAEzB,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAM,IAAA;AAAA,QACrB,IAAA;AAAA,QACA,YAAY,IAAA,EAAM;AAAA,UAChB,MAAA,EAAQ,UAAA;AAAA,UACR,KAAA,EAAO,IAAA;AAAA,UACP,KAAA,EAAO,IAAA;AAAA,UACP,UAAA,EAAY,qBAAqB,IAAI;AAAA,SACtC,CAAA;AAAA,QACD;AAAA,UACE,QAAA,EAAU;AAAA,YACR,GAAG,IAAA,CAAK,YAAA,CAAa,gBAAA,EAAiB;AAAA,YACtC,GAAG,IAAA,CAAK,OAAA,CAAQ,gBAAA;AAAiB,WACnC;AAAA,UACA,iBAAA,EAAmB,WAAA;AAAA,UACnB,gBAAA,EAAkB;AAAA,YAChB,WAAA,EAAa;AAAA;AACf;AACF,OACF;AAEA,MAAA,MAAM,QAAA,GAAW,QAAA,EAAU,IAAA,EAAM,IAAA,EAAM,QAAA;AACvC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,QAAA;AAAA;AACT,KACF,SAAE;AACA,MAAA,MAAA,EAAO;AAAA;AAGT,IAAA,OAAO,KAAA;AAAA;AACT,EAEO,aAAa,IAAA,EAAc;AAChC,IAAA,IAAI,IAAA,CAAK,MAAA;AAAQ,MAAA,OAAO,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA;AAC1C;AAAA;AAAA;AAAA,EAKO,IAAA,GAAO;AACZ,IAAE,cAAsB,iBAAA,IAA4B;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,iBAAiB,cAAA,CAAe,QAAA;AAC3C,IAAA,IAAA,CAAK,cAAc,IAAA,EAAK;AAAA;AAC1B,EAEA,MAAa,QAAA,GAAW;AACtB,IAAA,MAAM,GAAA,GAAM,GACV,SAAA,CAAU,IAAI,EAAE,OAClB,CAAA,sDAAA,EACE,SAAA,CAAU,IAAI,CAAA,CAAE,kBAAA,IAAsB,OACxC,CAAA,eAAA,EAAkB,SAAA,CAAU,IAAI,CAAA,CAAE,eAAA,IAAmB,OAAO,CAAA,YAAA,EAC1D,SAAA,CAAU,IAAI,CAAA,CAAE,cAClB,CAAA,WAAA,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,IAAA,EAAM,GAAG,CAAA;AAElC,IAAA,IAAI,MAAA,IAAU,MAAA,CAAO,IAAA,KAAS,IAAA,EAAM;AAClC,MAAA,MAAM,EAAE,MAAK,GAAI,MAAA;AACjB,MAAA,OAAO,IAAA;AAAA;AACT;AACF,EAEO,YAAA,CAAa,YAAoB,SAAA,EAAmB;AACzD,IAAA,IAAI,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,MAAA,CAAO,aAAa,CAAC,CAAA;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,UAAA,GAAa,CAAC,CAAA,CAAE,KAAA,GAAQ,SAAA;AAAA;AACxC,EAEA,MAAa,QAAA,GAAkC;AAC7C,IAAA,IAAI,YAAA,GAA6B,IAAA;AAEjC,IAAA,WAAA,MAAiB,GAAG,CAAC,CAAA,IAAK,IAAA,CAAK,MAAM,CAAA,EAAG;AACtC,MAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,QAAA,EAAS;AAChC,MAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,CAAC,YAAA,EAAc;AACpC,QAAA,YAAA,GAAe,MAAA;AAAA;AACjB;AAEF,IAAA,WAAA,MAAiB,GAAG,CAAC,CAAA,IAAK,IAAA,CAAK,MAAM,CAAA,EAAG;AACtC,MAAA,MAAM,MAAA,GAAS,MAAM,CAAA,CAAE,QAAA,EAAS;AAChC,MAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,CAAC,YAAA,EAAc;AACpC,QAAA,YAAA,GAAe,MAAA;AAAA;AACjB;AAGF,IAAA,OAAO,YAAA,IAAgB,IAAA;AAAA;AACzB,EAEO,mBAAmB,KAAA,EAAiB;AACzC,IAAA,IAAA,CAAK,eAAA,GAAkB,KAAA;AAAA;AACzB,EAEO,kBAAA,GAAqB;AAC1B,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA;AACd,EAEA,MAAc,WAAW,GAAA,EAAqB;AAC5C,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,EAAK;AACzB,IAAA,IAAI,MAAA,GAAS,IAAA;AAEb,IAAA,IAAI;AACF,MAAA,WAAA,MAAiB,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,QAAO,EAAG;AAC3C,QAAA,MAAA,GAAS,MAAA,IAAW,MAAM,CAAA,CAAE,eAAA,CAAgB,GAAG,CAAA;AAC/C,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,OAAO,KAAA;AAAA;AACT;AAEF,MAAA,WAAA,MAAiB,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,QAAO,EAAG;AAC3C,QAAA,MAAA,GAAS,MAAA,IAAW,MAAM,CAAA,CAAE,eAAA,CAAgB,GAAG,CAAA;AAC/C,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,OAAO,KAAA;AAAA;AACT;AAGF,MAAA,OAAO,IAAA;AAAA,KACT,SAAE;AACA,MAAA,MAAA,EAAO;AAAA;AACT;AACF,EACA,MAAa,mBAAA,GAAqC;AAChD,IAAA,IAAI,IAAA,CAAK,iBAAiB,IAAA,KAAS,CAAA;AAAG,MAAA;AAEtC,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,gBAAgB,CAAA;AAEhD,IAAA,MAAM,OAAA,CAAQ,WAAW,OAAO,CAAA;AAAA;AAEpC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/util/comparators/deepEqual.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/main/Execution/FormsExecution/constants/fieldProps.ts","../src/main/Execution/FormsExecution/constants/formProps.ts","../src/main/Execution/FormsExecution/constants/props/booleanProps.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/xml/parseXml.ts","../src/util/dom/getWindow.ts","../src/main/Execution/types.ts","../src/util/api/apiaApi.ts","../src/util/events/EventEmitter.ts","../src/util/events/StatefulEmitter.ts","../src/util/events/BouncingEmitter.ts","../src/util/labels/labels.ts","../src/util/dataTypes/parseBoolean.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/FormsExecution/WithProperties.ts","../src/util/dom/getDocument.ts","../src/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.ts","../src/programming/utils/asynCreateApiaField.ts","../src/main/Execution/FormsExecution/util/util.ts","../src/main/Execution/FormsExecution/Field.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/util/isFieldShowAsText.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.ts","../src/main/Execution/FormsExecution/fields/Checkbox/index.ts","../src/main/Execution/FormsExecution/TranslatableField/Translation.ts","../src/main/Execution/FormsExecution/TranslatableField/util.ts","../src/main/Execution/FormsExecution/TranslatableField/index.ts","../src/main/Execution/FormsExecution/fields/Editor/index.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/Uploader/FormsUploader.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/fields/Grid/GridFooterHandler.ts","../src/main/Execution/FormsExecution/fields/Grid/GridCell.ts","../src/main/Execution/FormsExecution/fields/Grid/AdditionalCell.ts","../src/main/Execution/FormsExecution/fields/Grid/HeaderCell.ts","../src/main/Execution/FormsExecution/fields/Grid/FieldsCache.ts","../src/main/Execution/FormsExecution/fields/ModalInput/index.ts","../src/main/Execution/FormsExecution/fields/Hidden/index.ts","../src/main/Execution/FormsExecution/fields/Grid/index.ts","../src/main/Execution/FormsExecution/fields/GridPaginated/index.ts","../src/main/Execution/FormsExecution/fields/Image/index.ts","../src/main/Execution/FormsExecution/fields/Input/index.ts","../src/main/Execution/FormsExecution/fields/Label/index.ts","../src/main/Execution/FormsExecution/fields/Link/index.ts","../src/main/Execution/FormsExecution/fields/Multiple/index.ts","../src/main/Execution/FormsExecution/fields/Password/index.ts","../src/main/Execution/FormsExecution/fields/Radio/index.ts","../src/main/Execution/FormsExecution/fields/Select/index.ts","../src/main/Execution/FormsExecution/fields/Textarea/index.ts","../src/main/Execution/FormsExecution/fields/Title/index.ts","../src/main/Execution/FormsExecution/fields/Tree/index.ts","../src/main/Execution/FormsExecution/fields/Scheduler/index.ts","../src/programming/constants/FieldConstants.ts","../src/programming/constants/FormConstants.ts","../src/programming/constants/IProperty.ts","../src/programming/ActionController/index.ts","../src/programming/ApiaField.ts","../src/programming/fields/ButtonField.ts","../src/programming/ApiaFieldWithAttribute.ts","../src/programming/fields/EditorField.ts","../src/programming/fields/SelectField.ts","../src/programming/fields/InputField.ts","../src/programming/fields/TreeField.ts","../src/programming/fields/CheckField.ts","../src/programming/fields/RadioField.ts","../src/programming/fields/MultipleField.ts","../src/programming/fields/HiddenField.ts","../src/programming/fields/AreaField.ts","../src/programming/fields/ImageField.ts","../src/programming/fields/LinkField.ts","../src/programming/fields/TextField.ts","../src/programming/fields/CustomComponentField.ts","../src/programming/utils/createApiaField.ts","../src/programming/fields/GridField.ts","../src/programming/fields/CaptchaField.ts","../src/programming/fields/FileUploaderField.ts","../src/programming/fields/PasswordField.ts","../src/programming/fields/ModalInput.ts","../src/programming/ApiaForm.tsx","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/Notifications/StatusNotification.ts","../src/main/Notifications/index.ts","../src/main/Execution/FormsExecution/Form.ts","../src/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/main/Execution/FormsExecution/fieldsMap.ts","../src/main/Execution/Process/index.ts","../src/main/Execution/Task.ts","../src/main/Execution/Entity/index.ts","../src/main/Execution/Observations/index.ts","../src/main/Execution/FlowModals/FlowModal.ts","../src/main/Execution/FlowModals/ShowPoolSelection.ts","../src/main/Execution/FlowModals/ShowPathSelection.ts","../src/main/Execution/FlowModals/ShowSignSelection.ts","../src/main/Execution/FlowModals/ShowConfirmMessage.ts","../src/main/Execution/FlowModals/ShowSign.ts","../src/main/Execution/FlowModals/confirmFlow.ts","../src/main/Execution/EntityFlowModals/confirmFlow.ts","../src/main/Execution/index.ts"],"sourcesContent":["export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const deepEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!deepEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!deepEqual(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!deepEqual(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\n\r\nexport type NotificationIcon = string;\r\n\r\nexport type NotificationType =\r\n | 'info'\r\n | 'error'\r\n | 'success'\r\n | 'warning'\r\n | 'modal';\r\n\r\nexport type NotificationDefinition = {\r\n icon?: NotificationIcon;\r\n id?: string | number;\r\n isOpen?: boolean;\r\n message: string;\r\n stackTrace?: string;\r\n title?: string;\r\n type?: NotificationType;\r\n};\r\n\r\nexport abstract class Notification<\r\n State extends NotificationDefinition = NotificationDefinition,\r\n> {\r\n protected state: State;\r\n\r\n constructor(public readonly props: State) {\r\n this.state = props;\r\n\r\n makeObservable<Notification, 'state'>(this, { state: observable });\r\n }\r\n\r\n get icon() {\r\n return this.state.icon;\r\n }\r\n get id() {\r\n return this.state.id;\r\n }\r\n get isOpen() {\r\n return this.state.isOpen;\r\n }\r\n get message() {\r\n return this.state.message;\r\n }\r\n get stackTrace() {\r\n return this.state.stackTrace;\r\n }\r\n get title() {\r\n return this.state.title;\r\n }\r\n get type() {\r\n return this.state.type;\r\n }\r\n}\r\n","import { Notification } from './Notification';\r\n\r\nexport class MessageNotification extends Notification {\r\n close() {\r\n this.state.isOpen = false;\r\n }\r\n}\r\n","const fieldProps = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n} as const;\r\n\r\nexport default fieldProps;\r\n","const formProps = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default formProps;\r\n","import fieldProps from '../fieldProps';\r\nimport formProps from '../formProps';\r\n\r\nconst FormBoolProps = [\r\n formProps.PROPERTY_FORM_INVISIBLE,\r\n formProps.PROPERTY_FORM_HIDDEN,\r\n formProps.PROPERTY_FORM_CLOSED,\r\n formProps.PROPERTY_FORM_TAB,\r\n formProps.PROPERTY_FORM_HIGHLIGHT,\r\n formProps.PROPERTY_FORM_DONT_FIRE,\r\n formProps.PROPERTY_FORM_READONLY,\r\n formProps.SIGNABLE_FORM,\r\n formProps.MARKED_TO_SIGN,\r\n formProps.REQUIRED_SIGN,\r\n];\r\n\r\nconst FieldBoolProps = [\r\n fieldProps.PROPERTY_ALLOW_EDITION,\r\n fieldProps.PROPERTY_CHECKED,\r\n fieldProps.PROPERTY_DISABLED,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\r\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\r\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\r\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\r\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\r\n fieldProps.PROPERTY_FILE_PREVIEW,\r\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\r\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\r\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\r\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\r\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\r\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\r\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\r\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\r\n fieldProps.PROPERTY_HIDE_GRID_BTN,\r\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\r\n fieldProps.PROPERTY_INPUT_AS_TEXT,\r\n fieldProps.PROPERTY_MODAL_DISABLED,\r\n fieldProps.PROPERTY_MULTISELECT,\r\n fieldProps.PROPERTY_NO_DOWNLOAD,\r\n fieldProps.PROPERTY_NO_ERASE,\r\n fieldProps.PROPERTY_NO_LOCK,\r\n fieldProps.PROPERTY_NO_MODIFY,\r\n fieldProps.PROPERTY_NOT_PRINT,\r\n fieldProps.PROPERTY_PAGED_GRID,\r\n fieldProps.PROPERTY_READONLY,\r\n fieldProps.PROPERTY_REQUIRED,\r\n fieldProps.PROPERTY_SEL_PARENT,\r\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\r\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\r\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\r\n fieldProps.PROPERTY_TRANSIENT,\r\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\r\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\r\n];\r\n\r\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\r\nexport default BoolProps;\r\n","import fieldProps from '../fieldProps';\r\n\r\nconst NumProps: string[] = [\r\n fieldProps.PROPERTY_SIZE,\r\n fieldProps.PROPERTY_ROWS,\r\n fieldProps.PROPERTY_COLSPAN,\r\n fieldProps.PROPERTY_ROWSPAN,\r\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\r\n fieldProps.PROPERTY_GRID_HEIGHT,\r\n fieldProps.PROPERTY_MAX_REG_GRID,\r\n];\r\n\r\nexport default NumProps;\r\n","import xml2js, { ParserOptions } from 'xml2js';\r\nimport he from 'he';\r\nimport { parseBooleans, parseNumbers } from 'xml2js/lib/processors';\r\nimport {\r\n TApiaFieldPropsObj,\r\n TFieldScriptEvents,\r\n TFieldServerEvents,\r\n TMap,\r\n} from '@apia/util';\r\nimport BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { InvalidSessionException } from '../api/apiaApi';\r\n\r\n// get JS object from string\r\nconst jsonDecode = (string: string): TMap<string | boolean | number> => {\r\n if (!string || typeof string !== 'string') return {};\r\n // remove eol enters\r\n const str = string.replace(/\\n|\\r/g, '');\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return eval(`(${str})`);\r\n};\r\n\r\n// get boolean value from string values\r\nconst parseBool = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n\r\ntype TFieldProps = TMap<string | boolean | number>;\r\ntype TFieldValueProps = (string | boolean | number)[];\r\ntype TFieldParsedProps = TMap<string | boolean | number>;\r\n\r\ntype XMLParser<T = Record<string, unknown>> = (\r\n xml: XMLDocument | string,\r\n behaveConfig?: TParseXmlBehavior<T>,\r\n) => T;\r\n\r\nexport type TParseXmlBehavior<T> = {\r\n avoidTrimXml?: boolean;\r\n avoidNormalize?: boolean;\r\n xmlParser?: XMLParser<T>;\r\n};\r\n\r\n// parse XML properties of Field element\r\nexport const parseFieldPropertiesObj = (\r\n props: TFieldProps,\r\n): TFieldParsedProps => {\r\n // default values for missing props can go here below in response.\r\n const response: TFieldParsedProps = {};\r\n const objKeys: string[] = Object.keys(props);\r\n const objVal: TFieldValueProps = Object.values(props);\r\n for (let i = 0; i < objKeys.length; i += 1) {\r\n const key = objKeys[i];\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n response[key] = objVal[i] || '';\r\n } else if (typeof objVal[i] === 'number') {\r\n response[key] = objVal[i];\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n response[key] = parseBool(objVal[i] as string);\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n response[key] = parseInt((objVal[i] as string) || '', 10);\r\n }\r\n }\r\n return response;\r\n};\r\n\r\nexport const processAjaxEventTagNames = (name: string): string => {\r\n if (name === 'a') return 'form';\r\n if (name === 'b') return 'field';\r\n if (name === 'g') return 'possibleValues';\r\n if (name === 'h') return 'item';\r\n if (name === 'z') return 'focusTo';\r\n if (name === 'r') return 'reload';\r\n if (name === 'p') return 'proccess';\r\n if (name === 'd') return 'valueAttr';\r\n return name;\r\n};\r\n\r\nexport const processAjaxEventAttrNames = (name: string): string => {\r\n if (name === 't') return 'text';\r\n if (name === 'label') return 'LABEL';\r\n return name;\r\n};\r\n\r\nexport const processAjaxEventResponse = <T>(\r\n value: T,\r\n _name: string,\r\n): boolean | T => {\r\n return value;\r\n};\r\nexport function htmlToText(html: string) {\r\n const safe = html.replace(/</g, '<');\r\n return he.decode(safe);\r\n}\r\n\r\nexport const processStringObj = (\r\n value: string,\r\n key: string,\r\n):\r\n | TApiaFieldPropsObj\r\n | string\r\n | number\r\n | TFieldScriptEvents\r\n | TFieldServerEvents => {\r\n if (key === 'properties') {\r\n return parseFieldPropertiesObj(jsonDecode(value)) as TApiaFieldPropsObj;\r\n }\r\n if (key === 'scriptEvents') {\r\n return JSON.parse(value) as TFieldScriptEvents;\r\n }\r\n if (key === 'serverEvents') {\r\n return JSON.parse(value) as TFieldServerEvents;\r\n }\r\n if (key === 'gridXml') {\r\n return parseXml(he.decode(value).replaceAll('&', '&'));\r\n }\r\n if (key === 'value' && typeof value === 'number' && Number.isNaN(value)) {\r\n return '';\r\n }\r\n if (key === 'valueType' && typeof value === 'string' && value === 'null') {\r\n return '';\r\n }\r\n if (\r\n (key === 'cols' ||\r\n key === 'rows' ||\r\n key === 'x' ||\r\n key === 'y' ||\r\n key === 'length') &&\r\n typeof value === 'string'\r\n ) {\r\n return parseNumbers(value);\r\n }\r\n\r\n return value.match?.(/[&]/) ? htmlToText(value) : value;\r\n};\r\n\r\nexport function replaceLabelHtmlValues(o: object) {\r\n for (const [key, value] of Object.entries(o)) {\r\n if (typeof value === 'object' && value) {\r\n (o as any)[key] = replaceLabelHtmlValues(value);\r\n } else if (typeof value === 'string' && value.match(/&/)) {\r\n if ((o as any).fieldType === 'editor') {\r\n (o as any)[key] = htmlToText(value);\r\n } else {\r\n (o as any)[key] = htmlToText(value);\r\n }\r\n }\r\n }\r\n return o;\r\n}\r\nexport const asyncGetJSObjfromXML = async <T>(xml: string): Promise<T> => {\r\n const parser = new xml2js.Parser({\r\n trim: true,\r\n normalize: true,\r\n explicitRoot: false,\r\n mergeAttrs: true,\r\n explicitArray: false,\r\n charkey: 'label',\r\n attrValueProcessors: [\r\n parseBooleans,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n ],\r\n tagNameProcessors: [processAjaxEventTagNames],\r\n attrNameProcessors: [processAjaxEventAttrNames],\r\n } as ParserOptions);\r\n\r\n const result = await new Promise<T>((resolve, reject) => {\r\n parser.parseString(xml, (err: Error | null, innerResult: T) => {\r\n if (err) reject(err);\r\n else {\r\n resolve(\r\n typeof innerResult === 'object' && innerResult\r\n ? (replaceLabelHtmlValues(innerResult) as any)\r\n : innerResult,\r\n );\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n};\r\n\r\n// Wrapper que respeta parseBooleans salvo para el atributo 'value'\r\nexport function customBooleanProcessor(value: string, name?: string) {\r\n // si el atributo es 'value', devolvemos el string tal cual\r\n if (name === 'value') return value;\r\n\r\n // para todos los demás atributos, seguimos usando parseBooleans\r\n return parseBooleans(value);\r\n}\r\n\r\nexport function getDefaultXmlParserOptions(\r\n behaveConfig?: TParseXmlBehavior<any>,\r\n) {\r\n return {\r\n trim: !behaveConfig?.avoidTrimXml,\r\n normalize: !behaveConfig?.avoidNormalize,\r\n explicitRoot: false,\r\n mergeAttrs: true,\r\n explicitArray: false,\r\n charkey: 'label',\r\n attrValueProcessors: [\r\n customBooleanProcessor,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n ],\r\n tagNameProcessors: [processAjaxEventTagNames],\r\n attrNameProcessors: [processAjaxEventAttrNames],\r\n } as ParserOptions;\r\n}\r\n\r\nexport function getDefaultXmlPostProcessor<T>() {\r\n return (xml: string, parser: xml2js.Parser) => {\r\n let objJS;\r\n\r\n parser.parseString(\r\n xml,\r\n (err: Error | null, result: Record<string, unknown>) => {\r\n if (err) {\r\n console.warn('Error Parsing XML data', err);\r\n objJS = err;\r\n } else {\r\n if (result?.code === '-1' && result.exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n objJS = result;\r\n }\r\n },\r\n ) as T;\r\n\r\n if (objJS) {\r\n return typeof objJS === 'object' && objJS\r\n ? (replaceLabelHtmlValues(objJS) as any)\r\n : objJS;\r\n }\r\n return {} as T;\r\n };\r\n}\r\n\r\nfunction getDefaultXmlParser<T>(\r\n behaveConfig?: TParseXmlBehavior<T>,\r\n): XMLParser<T> {\r\n return (xml, _behaveConfig) => {\r\n const parser = new xml2js.Parser(getDefaultXmlParserOptions(behaveConfig));\r\n return getDefaultXmlPostProcessor<T>()(xml as string, parser);\r\n };\r\n}\r\n\r\nexport const parseXml = <T = Record<string, unknown>>(\r\n xml: XMLDocument | string,\r\n behaveConfig?: TParseXmlBehavior<T>,\r\n): T => {\r\n if (typeof xml === 'object' && !(xml instanceof XMLDocument)) {\r\n return xml;\r\n }\r\n\r\n const parser: XMLParser<T> =\r\n behaveConfig?.xmlParser ?? getDefaultXmlParser<T>();\r\n\r\n return parser(xml, behaveConfig);\r\n};\r\n","import type { Execution } from '../../main/Execution';\r\n\r\nexport function getWindow(execution: Execution) {\r\n return execution.environment.window;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\n\r\nexport enum ExecutionState {\r\n RUNNING,\r\n LOADING,\r\n FINISHED,\r\n RENDERING,\r\n CONFIRMING,\r\n FINISHED_WITH_ERROR,\r\n}\r\n\r\nexport type TOnClose =\r\n | 'clearEvalPath'\r\n | 'confirmOkOnClose'\r\n | 'confirmOkOnCloseSplash'\r\n | 'confirmOkOnSaveSplash'\r\n | 'releaseOkOnClose'\r\n | null;\r\n\r\nexport type TErrMessage = {\r\n message: {\r\n text: string;\r\n label?: string;\r\n };\r\n};\r\nexport type TFetchTaskActionResponse = {\r\n onClose?: TOnClose;\r\n sysMessages?: TErrMessage;\r\n sysExceptions?: TErrMessage;\r\n type?: string;\r\n actions?: {\r\n action: {\r\n param: string[];\r\n toDo: string;\r\n };\r\n };\r\n load?: {\r\n canClose: boolean;\r\n type: string;\r\n text: {\r\n label: string;\r\n closeAll: boolean;\r\n addClass?: string;\r\n title?: string;\r\n };\r\n };\r\n text?: {\r\n title?: string;\r\n label?: string;\r\n };\r\n};\r\n\r\nexport type TConfirmResponse = {\r\n onClose: string;\r\n pathSelection?: boolean | null;\r\n groupSelection?: boolean | null;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n};\r\n\r\n/*\r\n{\r\n \"onClose\": \"\",\r\n \"load\": {\r\n \"canClose\": false,\r\n \"type\": \"text\",\r\n \"text\": {\r\n \"closeAll\": false,\r\n \"title\": \"\",\r\n \"addClass\": \"success\",\r\n \"text\": \"Operación completa. Cargando el listado.\"\r\n }\r\n },\r\n \"actions\": {\r\n \"action\": {\r\n \"toDo\": \"linkTimed\",\r\n \"param\": [\r\n {\r\n \"text\": \"1000\"\r\n },\r\n {\r\n \"text\": \"/apia.execution.EntInstanceListAction.run?action=list&tabId=174949147885442422&tokenId=1749490825179\"\r\n }\r\n ]\r\n }\r\n },\r\n \"canClose\": false,\r\n \"type\": \"text\",\r\n \"text\": {\r\n \"closeAll\": false,\r\n \"title\": \"\",\r\n \"addClass\": \"success\",\r\n \"text\": \"Operación completa. Cargando el listado.\"\r\n }\r\n}\r\n*/\r\n\r\nexport type TConfirmEntityResponse = {\r\n onClose: string;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label?: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: string[];\r\n };\r\n };\r\n};\r\n\r\nexport type FieldError = {\r\n id: string;\r\n errorMessage: string;\r\n title: string;\r\n focus: string;\r\n};\r\n\r\nexport type TAdmEntityEvent = {\r\n entName: string;\r\n entNum?: number;\r\n parameters?: Record<string, string>;\r\n width?: number;\r\n height?: number;\r\n};\r\n","import { AxiosError, type AxiosResponse } from 'axios';\r\nimport { MessageNotification } from '../../main/Notifications/MessageNotification';\r\nimport {\r\n IApiaApiPostConfig,\r\n IApiaApiRequestConfig,\r\n TApiaApiAxiosResponse,\r\n TApiaApiResult,\r\n TApiaMessage,\r\n TApiaSystemMessageObj,\r\n} from './types';\r\nimport { NotificationType } from '../../main/Notifications/Notification';\r\nimport { parseXml } from '../xml/parseXml';\r\nimport type { IStringifyOptions } from 'qs';\r\nimport QueryString from 'qs';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { getWindow } from '../dom/getWindow';\r\nimport { type Execution } from '../../main/Execution';\r\nimport { ExecutionState } from '../../main/Execution/types';\r\n\r\ndeclare global {\r\n interface Window {\r\n [key: string]: string;\r\n }\r\n\r\n interface Document {\r\n headers: any;\r\n }\r\n}\r\n\r\nfunction dispatchMessage(\r\n execution: Execution,\r\n type: NotificationType,\r\n message: TApiaMessage,\r\n) {\r\n const definedType = message.type;\r\n const actualType = [null, 'success', 'warning', 'error', 'modal'][\r\n definedType || 0\r\n ] as NotificationType;\r\n\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: message.text!,\r\n stackTrace: message.label,\r\n title: message.title,\r\n type: actualType || type,\r\n }),\r\n );\r\n}\r\n\r\nfunction getAxios() {\r\n return import('axios').then((r) =>\r\n typeof process !== 'undefined' &&\r\n process.env?.APIA_SERVER &&\r\n process.env?.CONTEXT\r\n ? r.default.create({\r\n baseURL: process?.env?.APIA_SERVER.replaceAll(\r\n process.env.CONTEXT as string,\r\n '',\r\n ),\r\n })\r\n : r.default,\r\n );\r\n}\r\n\r\nconst handleWrongResponse = (execution: Execution, error: Error) => {\r\n if (\r\n error instanceof InvalidSessionException ||\r\n (error instanceof AxiosError && error.status === 403)\r\n ) {\r\n execution.kill();\r\n throw new InvalidSessionException();\r\n }\r\n\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n execution.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: errorMessage.replaceAll('AxiosError', 'Error'),\r\n }),\r\n );\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nexport function parseMessages(\r\n execution: Execution,\r\n response: TApiaSystemMessageObj,\r\n) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n arrayOrArray(exceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'error'),\r\n );\r\n arrayOrArray(sysMessages?.message).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'warning'),\r\n );\r\n arrayOrArray(sysExceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'error'),\r\n );\r\n}\r\n\r\nasync function handleResponse<\r\n ResponseType extends Record<string, unknown>,\r\n PostDataType = unknown,\r\n>(\r\n execution: Execution,\r\n result: AxiosResponse<string> | void,\r\n behaveConfig?: IApiaApiPostConfig<PostDataType, ResponseType>,\r\n): Promise<TApiaApiAxiosResponse<ResponseType> | null> {\r\n try {\r\n if (!result || result.data === undefined) {\r\n //\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<ResponseType>(\r\n execution,\r\n result,\r\n behaveConfig,\r\n );\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class InvalidSessionException extends Error {}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n ResponseType extends Record<string, unknown>,\r\n PostDataType = unknown,\r\n>(\r\n execution: Execution,\r\n response: AxiosResponse<string>,\r\n behaveConfig?: IApiaApiPostConfig<PostDataType, ResponseType>,\r\n) => {\r\n let parsedObj: TApiaSystemMessageObj<ResponseType> | void | undefined =\r\n undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<ResponseType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n try {\r\n parsedObj = parseXml<ResponseType>(response.data, behaveConfig);\r\n } catch (e) {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n }\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n\r\n parseMessages(execution, { exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n return { ...parsedObj, ...load, ...(rest as ResponseType) };\r\n }\r\n return {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n ...(rest as ResponseType),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nexport async function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n execution: Execution,\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiPostConfig<DataType, LoadType>,\r\n): TApiaApiResult<LoadType> {\r\n if (\r\n execution.state.executionState === ExecutionState.FINISHED &&\r\n !behaveConfig?.allowAfterFinish\r\n ) {\r\n throw new Error('Cannot perform requests after execution has finished');\r\n }\r\n\r\n const postData =\r\n behaveConfig?.postDataTreatment === 'stringify'\r\n ? QueryString.stringify(\r\n behaveConfig.postData,\r\n behaveConfig.stringifyOptions,\r\n )\r\n : behaveConfig?.postData;\r\n\r\n const response = await (await getAxios())\r\n .post<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(actualUrl, postData, { ...behaveConfig?.axiosConfig, headers: { ...behaveConfig?.axiosConfig?.headers, ...execution.environment.headers } })\r\n .catch((e: unknown) => {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(execution, response, behaveConfig);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nexport async function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n execution: Execution,\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiRequestConfig,\r\n): TApiaApiResult<LoadType> {\r\n if (execution.state.executionState === ExecutionState.FINISHED) {\r\n throw new Error('Cannot perform requests after execution has finished');\r\n }\r\n\r\n const response = await (await getAxios())\r\n .get<\r\n T,\r\n AxiosResponse<string>,\r\n D\r\n >(actualUrl, { ...behaveConfig?.axiosConfig, headers: { ...behaveConfig?.axiosConfig?.headers, ...execution.environment.headers } })\r\n .catch((e: unknown) => {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(execution, response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport type MakeApiaUrlProps = {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n};\r\n\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * getWindow(execution).URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(execution: Execution, props?: MakeApiaUrlProps) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? getWindow(execution).URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = getWindow(execution)?.TAB_ID_REQUEST?.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : getWindow(execution).TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = getWindow(execution);\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replace(/^\\/?(.+?)\\/?$/, '$1');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n","import { Callback, Callbacks, Map, UnSubscriber } from './types';\r\n\r\nexport type { Callback, Map, UnSubscriber } from './types';\r\n\r\n/**\r\n * @public\r\n *\r\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\r\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\r\n *\r\n * @typeParam Events - An extension of `Map` where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class EventEmitter<Events extends Map> {\r\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\r\n on: {} as Callbacks<Events>,\r\n once: {} as Callbacks<Events>,\r\n };\r\n protected enabled = true;\r\n\r\n protected debugMode = false;\r\n debug(enable = true) {\r\n this.debugMode = enable;\r\n }\r\n\r\n /**\r\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\r\n *\r\n * @param event - The event name to emit.\r\n * @param data - The data associated with the event. Its type is dependent on the event name.\r\n */\r\n emit<K extends keyof Events>(event: K, data: Events[K]) {\r\n this.callbacks.on[event]?.forEach((current) => current(data));\r\n\r\n this.callbacks.once[event]?.forEach((current) => current(data));\r\n this.callbacks.once[event] = [];\r\n }\r\n\r\n /**\r\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\r\n */\r\n get isEnabled() {\r\n return this.enabled;\r\n }\r\n\r\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\r\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\r\n *\r\n * @param event - The event name to listen to.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\r\n this.callbacks.on[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.on[event] = this.callbacks.on[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\r\n *\r\n * @param event - The event name to listen to for a single occurrence.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\r\n this.callbacks.once[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.once[event] = this.callbacks.once[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n}\r\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype Setter<T> = (prevState: T) => T;\r\n\r\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\r\n return typeof data === 'function';\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\ntype EmitterState<Events extends Map> = {\r\n [K in keyof Events]: Events[K];\r\n};\r\n\r\n/**\r\n * Extends EventEmitter to manage and emit events with state persistence.\r\n * This class allows emitting and listening to typed events while also keeping\r\n * a state that can be accessed synchronously for each event.\r\n *\r\n * @param initialState - If given will be passed to subscriptions\r\n *\r\n * @template Events - A mapping of event names to their associated data types.\r\n * @extends EventEmitter<Events>\r\n */\r\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\r\n protected state = {} as EmitterState<Events>;\r\n\r\n constructor(initialState?: Partial<Events>) {\r\n super();\r\n\r\n this.state = Object.assign({}, initialState) as Events;\r\n }\r\n\r\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\r\n this.state[event] = data;\r\n super.emit(event, data);\r\n }\r\n\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (this.state[event]) cb(this.state[event]);\r\n\r\n return super.on(event, cb);\r\n }\r\n\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (this.state[event]) {\r\n cb(this.state[event]);\r\n\r\n /**\r\n * Given that the information has already been sent, the subscription is not necessary\r\n */\r\n return () => {};\r\n }\r\n\r\n return super.once(event, cb);\r\n }\r\n\r\n /**\r\n * Retrieves the stored state for a given event\r\n */\r\n getState<K extends keyof Events>(event: K): Events[K] {\r\n return this.state[event];\r\n }\r\n\r\n /**\r\n * Just an alias for emit, with the advantage that can be called with a callback as second parameter in which case behaves exactly as react's setState.\r\n */\r\n setState<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.emit(event, actualData);\r\n }\r\n}\r\n","import { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { getWindow } from '../dom/getWindow';\r\n\r\nexport function getLabel(\r\n execution: Execution,\r\n label: string,\r\n replacers?: Partial<{\r\n text: Record<string, string>;\r\n tooltip: Record<string, string>;\r\n }>,\r\n) {\r\n const original = (getWindow(execution) as any).labels[label] as {\r\n text: string;\r\n tooltip: string;\r\n };\r\n\r\n if (!original) {\r\n return {\r\n text: `LblNotPrealoded: ${label}`,\r\n tooltip: `LblNotPrealoded: ${label}`,\r\n };\r\n }\r\n\r\n const labelObject = { ...original };\r\n\r\n if (replacers?.text) {\r\n Object.entries(replacers.text).forEach(([key, value]) => {\r\n labelObject.text = labelObject.text.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n if (replacers?.tooltip) {\r\n Object.entries(replacers.tooltip).forEach(([key, value]) => {\r\n labelObject.tooltip = labelObject.tooltip.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n\r\n return labelObject;\r\n}\r\n\r\nexport const labels = {\r\n errorConfirmationFailed: () => 'Error al confirmar',\r\n errorRegexNotValidated: () => 'La expresión regular no fue validada.',\r\n errorCouldNotSync: () => 'No se pudo sincronizar',\r\n errorFieldRequired: (execution: Execution) =>\r\n getLabel(execution, 'msgReqField').text,\r\n errorTranslateRequired: (execution: Execution, lang: string) =>\r\n getLabel(execution, 'lblReqLang', { text: { TOK1: lang } }).text,\r\n errorLoadForms: () =>\r\n 'Error al inicializar los formularios, contacte al administrador.',\r\n errorOnEvent: (execution: Execution, eventName: string) =>\r\n (window as any).SERVER_MODE\r\n ? 'Error al ejecutar la clase de negocios, contacte al administrador.'\r\n : getLabel(execution, 'msgErrorOnEvent', { text: { TOK1: eventName } })\r\n .text,\r\n};\r\n","// get boolean value from string values\r\nexport const parseBoolean = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst valueParsers: ((\r\n key: string,\r\n value: unknown,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n return next();\r\n } else if (typeof value === 'number') {\r\n return next();\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n return { key, value: parseBoolean(value as string) };\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n return { key, value: parseInt((value as string) || '', 10) };\r\n }\r\n next();\r\n },\r\n];\r\n\r\nexport function parseFakeJSON<T extends Record<string, unknown>>(\r\n str: string,\r\n): T {\r\n if (!str) {\r\n return {} as T;\r\n }\r\n\r\n if (typeof str === 'object') {\r\n return str as T;\r\n }\r\n\r\n const res = new Function(`const form = ${str}; return form;`)() as T;\r\n\r\n const ret: T = {} as T;\r\n\r\n for (const [key, value] of Object.entries(res)) {\r\n for (const p of valueParsers) {\r\n let next = false;\r\n const t = p(key, value, () => {\r\n next = true;\r\n });\r\n if (!next && t) {\r\n (ret as any)[t.key] = t.value;\r\n } else {\r\n (ret as any)[key] = value;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { SetStateAction } from '../../../util/events/types';\r\nimport type { Grid } from './fields';\r\n\r\nexport class WithProperties<Props extends Record<string, any>> {\r\n properties: Props = {} as Props;\r\n private parentGrid: null | Grid = null;\r\n\r\n constructor(initialState?: Props) {\r\n if (initialState) {\r\n this.properties = initialState;\r\n }\r\n makeObservable(this, { properties: observable, setProperty: action });\r\n }\r\n\r\n getParentGrid() {\r\n return this.parentGrid;\r\n }\r\n\r\n getProperty<K extends keyof Props>(propName: K): Props[K] {\r\n return this.properties[propName];\r\n }\r\n setProperty<K extends keyof Props>(\r\n propName: K,\r\n propValue: SetStateAction<Props[K]>,\r\n ) {\r\n const value =\r\n propValue instanceof Function\r\n ? propValue(this.properties[propName])\r\n : propValue;\r\n\r\n this.properties[propName] = value;\r\n\r\n if (propName === 'visibilityHidden') {\r\n this.parentGrid?.refreshColumnsVisibilities();\r\n }\r\n }\r\n\r\n setParentGrid(grid: Grid) {\r\n this.parentGrid = grid;\r\n return this;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\n\r\nexport function getDocument(execution: Execution) {\r\n return execution.environment.document;\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { getDocument } from '../dom/getDocument';\r\nimport { getWindow } from '../dom/getWindow';\r\n\r\nexport function getCurrentTabsString(execution: Execution) {\r\n const tabsList = (getWindow(execution).tabsController as any)?.tabsList as {\r\n id: string;\r\n state: { isOpen: boolean };\r\n }[];\r\n\r\n if (tabsList)\r\n return `${tabsList\r\n .map((c) => (c.state.isOpen ? c.id : -1))\r\n .filter((c) => !(typeof c === 'number'))\r\n .join(',')}~${getDocument(execution).scrollingElement?.scrollTop ?? 0}`;\r\n}\r\n","import type { Execution } from '../..';\r\nimport { getCurrentTabsString } from '../../../../util/app/getCurrentTabsString';\r\nimport { getWindow } from '../../../../util/dom/getWindow';\r\n\r\nexport const actions = {\r\n forms: 'apia.execution.FormAction.run',\r\n formSubmit: (execution: Execution) =>\r\n `${getWindow(execution).CONTEXT}/apia.execution.FormAction.run?action=fireFieldEvent¤tTab=${getCurrentTabsString(execution)}${getWindow(execution).TAB_ID_REQUEST}`,\r\n};\r\n","export const eventTypes = {\r\n EVENT_FLD_ONCHANGE: 1,\r\n EVENT_FLD_ONCLICK: 4,\r\n EVENT_FLD_POPULATE: 5,\r\n EVENT_FLD_ONMODALRETURN: 37,\r\n EVENT_FLD_ONMODALCHANGE: 36,\r\n\r\n // Grid Events\r\n EVENT_FLD_GRID_ADD: 60,\r\n EVENT_FLD_GRID_DEL: 61,\r\n EVENT_FLD_GRID_SORT: 62,\r\n EVENT_FLD_GRID_COLUMN_SELECT: 65,\r\n\r\n // Print Events\r\n EVENT_FRM_ONBEFORE_PRINT: 63,\r\n EVENT_FRM_ONAFTER_PRINT: 64,\r\n};\r\n","import fieldProps from './fieldProps';\r\nimport formProps from './formProps';\r\n\r\nconst IProperty = {\r\n ...fieldProps,\r\n ...formProps,\r\n} as const;\r\n\r\nexport default IProperty;\r\n","import IProperty from '../constants/IProperty';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { Field } from '../Field';\r\nimport { File, Grid, Select } from '../fields';\r\nimport { parseMessages } from '../../../../util/api/apiaApi';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TApiaTreeProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type { Execution } from '../../index';\r\n\r\nexport const setAjaxFormResponse = async (\r\n execution: Execution,\r\n response: TFieldAjaxEventResponsePayload,\r\n) => {\r\n const forms = arrayOrArray(response.form);\r\n for (let i = 0; i < forms.length; i += 1) {\r\n const formId = forms[i].i;\r\n const form = forms[i];\r\n const [frmParent, id] = formId.split('_');\r\n const apiaForm = execution.getFormById(id, frmParent as 'E');\r\n\r\n arrayOrArray(form.cusCmp).forEach((c) => {\r\n apiaForm\r\n ?.getCustomComponentByFldId(Number.parseInt(String(c.id)))\r\n ?.processResult({ processResult: { state: c.state } });\r\n });\r\n\r\n /** Refresh the updated grids */\r\n const changedGrids = arrayOrArray(form.changedGrids.grdId);\r\n changedGrids.forEach(({ id }) => {\r\n (apiaForm?.getFieldById(id) as Grid)?.refresh();\r\n });\r\n\r\n if (!apiaForm) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: `Form with id ${formId} not found`,\r\n }),\r\n );\r\n\r\n continue;\r\n }\r\n\r\n // Iterate each field element in form element\r\n const ajaxFields = arrayOrArray(forms[i].field);\r\n for (let f = 0; f < ajaxFields.length; f += 1) {\r\n // got id of field to alter\r\n const apiField = apiaForm?.getFieldById(ajaxFields[f].i) as Field<any>;\r\n if (apiField) {\r\n // set field possible VALUES for select/multi and radio\r\n if (ajaxFields[f].possibleValues !== undefined) {\r\n const possibleValuesItems = arrayOrArray(\r\n ajaxFields[f].possibleValues,\r\n );\r\n const items = arrayOrArray(possibleValuesItems[0]?.item);\r\n if (items) {\r\n if (\r\n ['multiple', 'radio', 'select'].includes(\r\n apiField.definition.fieldType,\r\n )\r\n ) {\r\n (apiField as Select).setProperty(\r\n 'possibleValue',\r\n items.map((current) => {\r\n const v = current.v;\r\n const l = current.text;\r\n const value = typeof v === 'boolean' ? String(v) : v;\r\n const label = typeof l === 'boolean' ? String(l) : l;\r\n return {\r\n value,\r\n label,\r\n };\r\n }),\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n ['tree'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const propertiesObj: TApiaTreeProperties =\r\n ajaxFields[f]?.field?.properties || ({} as TApiaTreeProperties);\r\n\r\n Object.keys(propertiesObj).forEach((key) => {\r\n let value = propertiesObj[key as keyof TApiaTreeProperties];\r\n\r\n if (typeof value === 'string') {\r\n const lowerValue = value.toLowerCase();\r\n if (lowerValue === 't' || lowerValue === 'true') {\r\n value = true;\r\n } else if (lowerValue === 'f' || lowerValue === 'false') {\r\n value = false;\r\n }\r\n }\r\n\r\n apiField.setProperty(key, value);\r\n });\r\n const possibleValues = arrayOrArray(\r\n ajaxFields[f]?.field?.possibleValue,\r\n );\r\n apiField.setProperty('possibleValue', possibleValues);\r\n }\r\n if (\r\n ['file'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const fileField = apiField as File;\r\n\r\n if (ajaxFields[f]?.field?.file_prp) {\r\n fileField.loadFromDefinition(\r\n ajaxFields[f]?.field?.file_prp as string,\r\n );\r\n }\r\n }\r\n }\r\n // set VALUE to fldId\r\n if (ajaxFields[f].c !== undefined) {\r\n const { c } = ajaxFields[f];\r\n\r\n let value: any = undefined;\r\n if (typeof c !== 'object' || (c as any).k !== 't') {\r\n // <c k=\"t\" Se usa para marcar campo sin cambios ??????\r\n if (typeof c === 'string') {\r\n value = c;\r\n } else {\r\n /**\r\n * Este procedimiento se usa para concatenar los distintos índices de textarea, editor, etc\r\n */\r\n const valuesArray = arrayOrArray(c?.valueAttr);\r\n value = valuesArray.reduce((reduced, current) => {\r\n return reduced + current.v;\r\n }, '');\r\n }\r\n }\r\n\r\n /**\r\n * Si ponemos que apiField es instanceof FieldWithAttribute generamos una dependencia\r\n * circular que rompe la compilación !!!\r\n */\r\n if ((apiField as any).attribute && value !== undefined) {\r\n (apiField as any).setValue(value, {\r\n force: true,\r\n synchronize: false,\r\n });\r\n }\r\n }\r\n // set PROPERTIES to fldId\r\n if (ajaxFields[f].e !== undefined) {\r\n const ajaxProps = arrayOrArray(ajaxFields[f].e);\r\n for (let c = 0; c < ajaxProps.length; c += 1) {\r\n if (ajaxProps[c]?.f) {\r\n const prop = arrayOrArray(ajaxProps[c]?.f);\r\n for (let p = 0; p < prop.length; p += 1) {\r\n if (prop[p]?.i) {\r\n if (prop[p]?.i) {\r\n if (prop[p]?.v.toLowerCase() === 'f') {\r\n apiField.setProperty(prop[p]?.i, false);\r\n } else if (prop[p]?.v.toLowerCase() === 't') {\r\n apiField.setProperty(prop[p]?.i, true);\r\n } else {\r\n apiField.setProperty(prop[p]?.i, prop[p]?.v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else if (ajaxFields[f]?.field) {\r\n const ajaxProps = ajaxFields[f]?.field?.properties;\r\n apiField.properties = ajaxProps;\r\n }\r\n }\r\n\r\n // Formulario invisible\r\n if (\r\n form.v === 't' &&\r\n String(apiaForm.properties[IProperty.PROPERTY_FORM_HIDDEN]) !== 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, true);\r\n } else if (\r\n form.v === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_HIDDEN)) === 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, false);\r\n }\r\n\r\n // Formulario cerrado\r\n if (\r\n form.c === 't' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) !== 'true'\r\n ) {\r\n apiaForm.toggleFormCollapse();\r\n } else if (\r\n form.c === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) === 'true'\r\n ) {\r\n apiaForm.openForm();\r\n }\r\n }\r\n\r\n if (response.proccess?.p) {\r\n execution.getProcess()?.setPriority(response.proccess.p);\r\n }\r\n\r\n if (response.data) {\r\n parseMessages(execution, response.data);\r\n }\r\n};\r\n","import type { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\nimport { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TCreateNewField = (\r\n execution: Execution,\r\n field: Field | FieldWithAttribute | CustomComponent,\r\n) => IApiaField | null;\r\n\r\nexport type TAsyncCreateNewField = (\r\n execution: Execution,\r\n field: Field | FieldWithAttribute | CustomComponent,\r\n) => Promise<IApiaField | null>;\r\n\r\nlet creator: TCreateNewField | null = null;\r\n\r\nexport const asyncCreateNewField: TAsyncCreateNewField = async (\r\n execution,\r\n fld,\r\n) => {\r\n if (!creator) {\r\n creator = (await import('./createApiaField')).createNewField;\r\n }\r\n\r\n return creator(execution, fld);\r\n};\r\n","import { Field } from '../Field';\r\n\r\nexport function getFocusIdentifier(field: Field) {\r\n const name =\r\n field.properties.name ||\r\n (field as any).attribute?.name ||\r\n field.definition.id;\r\n\r\n return `${field.getForm().definition.frmParent}_${field.getForm().definition.formName}_${name}${field.definition.index ? `_${field.definition.index}` : ''}`;\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { getLabel, labels } from '../../../util/labels/labels';\r\nimport type {\r\n TApiaFieldBaseDefinition,\r\n TFieldServerEvent,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport type { Form } from './Form';\r\nimport { WithProperties } from './WithProperties';\r\nimport { actions } from './constants/actions';\r\nimport { eventTypes } from './constants/eventTypes';\r\nimport { setAjaxFormResponse } from './events/setAjaxFormResponse';\r\nimport type {\r\n FieldValidationState,\r\n FireEventParameters,\r\n TFieldAjaxEventResponsePayload,\r\n} from './types';\r\nimport type { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type { ApiaFunctions, IApiaField } from '../../../programming';\r\nimport { getCurrentTabsString } from '../../../util/app/getCurrentTabsString';\r\nimport { asyncCreateNewField } from '../../../programming/utils/asynCreateApiaField';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport { getFocusIdentifier } from './util/util';\r\n\r\nexport type TFncParams = {\r\n type: 'V' | 'P' | 'E';\r\n value?: string;\r\n attId?: string | number;\r\n};\r\n\r\nlet af: ApiaFunctions | null = null;\r\n\r\nexport async function getApiaFunctions(execution: Execution) {\r\n if (!af) {\r\n await import('../../../programming/ApiaFunctions').then(\r\n ({ ApiaFunctions }) => (af = new ApiaFunctions(execution)),\r\n );\r\n }\r\n return af!;\r\n}\r\n\r\nexport abstract class Field<\r\n FieldProps extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n } = {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n },\r\n> extends WithProperties<FieldProps> {\r\n protected form: Form = {} as Form;\r\n\r\n definition: State['definition'];\r\n state: Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n } = {\r\n validation: { dirty: false, errorMessage: '', synchronizing: false },\r\n } as Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n };\r\n\r\n constructor({ properties, ...definition }: FieldDefinition) {\r\n super();\r\n\r\n this.properties = properties;\r\n this.definition = definition;\r\n\r\n makeObservable(this, { state: observable, definition: observable });\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions(this.form.execution))\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n let idx: any;\r\n if (getWindow(this.form.execution).IS_EDIT_GRID_MODAL) {\r\n idx = getWindow(this.form.execution).MODAL_INDEX;\r\n } else {\r\n idx = this.definition?.index || 0;\r\n }\r\n return {\r\n ajaxUrl: actions.forms,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n action: 'fireFieldEvent',\r\n frmParent: this.form.definition.frmParent,\r\n frmId: this.form.definition.id,\r\n fldId: this.definition.id,\r\n index: idx,\r\n evtId,\r\n nuevo: true,\r\n preventAsXmlParameter: true,\r\n ...additionalParams,\r\n };\r\n }\r\n\r\n protected async fireScriptEvent(eventName: string): Promise<boolean> {\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n\r\n let result = true;\r\n\r\n if (events.length > 0) {\r\n for (const event of events) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: IApiaField,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n\r\n if (fn === undefined) {\r\n new MessageNotification({\r\n message: getLabel(this.form.execution, 'msgFunction404', {\r\n text: { TOK1: eventName },\r\n }).text,\r\n type: 'error',\r\n });\r\n throw new Error(\r\n getLabel(this.form.execution, 'msgFunction404', {\r\n text: { TOK1: eventName },\r\n }).text,\r\n );\r\n }\r\n\r\n const evtSrc = (await asyncCreateNewField(\r\n this.form.execution,\r\n this,\r\n ))!;\r\n\r\n if ((evtSrc as any).setValue) {\r\n (evtSrc as any).setValue = (value: any) =>\r\n (evtSrc as any)._setValue(value, { fireEvents: false });\r\n }\r\n\r\n result = await fn(\r\n evtSrc,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n\r\n if (result === false) {\r\n break;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message:\r\n labels.errorOnEvent(this.form.execution, event.fncName) +\r\n ', ' +\r\n e,\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n protected async fireAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n const response = await post<TFieldAjaxEventResponsePayload>(\r\n this.form.execution,\r\n await makeApiaUrl(\r\n this.form.execution,\r\n this.getServerEventParams(event.evtId, {\r\n isAjax: true,\r\n }),\r\n ),\r\n {\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n if (response?.data?.success) {\r\n await setAjaxFormResponse(this.form.execution, response.data);\r\n return true;\r\n }\r\n } catch (rejectedValue) {\r\n console.error(rejectedValue);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: String(rejectedValue),\r\n }),\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n protected async fireNoAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const p = this.getServerEventParams(event.evtId, params);\r\n if (\r\n (getWindow(this.form.execution).config as any).execution\r\n .reloadOnNoAjaxEvents\r\n ) {\r\n getWindow(this.form.execution).location.assign(\r\n await makeApiaUrl(this.form.execution, {\r\n ...p,\r\n currentTab: getCurrentTabsString(this.form.execution),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n getWindow(this.form.execution).location.assign(\r\n await makeApiaUrl(this.form.execution, {\r\n ...p,\r\n currentTab: getCurrentTabsString(this.form.execution),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n }\r\n protected async fireServerEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let event = this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n this.getForm().execution.lastFieldFocusedId = getFocusIdentifier(\r\n this as any,\r\n );\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n async fireEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const unlock = this.form.execution.lock();\r\n\r\n try {\r\n let result = await this.fireScriptEvent(eventName);\r\n if (result) {\r\n try {\r\n await this.form.execution.waitForPendingSyncs();\r\n } catch (e) {\r\n console.warn('waitForPendingSyncs failed or timed out', e);\r\n }\r\n\r\n result = await this.fireServerEvent(eventName, params);\r\n }\r\n\r\n return result;\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n\r\n getForm() {\r\n return this.form;\r\n }\r\n\r\n protected hasEventsOfType(eventName: string) {\r\n return (\r\n this.definition.serverEvents?.find((c) => c.evtName === eventName) ||\r\n this.definition.scriptEvents?.find((c) => c.evtName === eventName)\r\n );\r\n }\r\n\r\n protected hasServerAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && c.isAjax,\r\n );\r\n }\r\n\r\n protected hasServerNoAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && !c.isAjax,\r\n );\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n public async validate(): Promise<boolean | Field> {\r\n return true;\r\n }\r\n\r\n markAsRendered() {\r\n this.getForm().markFieldAsRendered(\r\n this.definition.id,\r\n this.definition.index,\r\n );\r\n }\r\n}\r\n","import { TApiaButtonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport type ButtonEvents = 'onClick';\r\n\r\nexport class Button extends Field<TApiaButtonProperties> {\r\n fireEvent(eventName: ButtonEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\nimport { TApiaCaptchaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\n\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaCaptchaDefinition } from '../../../../InitialData/types/fields/TApiaCaptchaDefinition';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\n\r\nexport class Captcha extends Field<\r\n TApiaCaptchaProperties,\r\n TApiaCaptchaDefinition,\r\n {\r\n definition: Omit<TApiaCaptchaDefinition, 'properties'>;\r\n value: string;\r\n url: string;\r\n }\r\n> {\r\n private static emitter = new EventEmitter<{ confirm: null }>();\r\n public static reload() {\r\n this.emitter.emit('confirm', null);\r\n }\r\n\r\n private id: string = '';\r\n\r\n private static confirmParams: Record<string, string> = {};\r\n public static getConfirmParams() {\r\n return this.confirmParams;\r\n }\r\n\r\n constructor(definition: TApiaCaptchaProperties) {\r\n super(definition as TApiaCaptchaDefinition);\r\n this.state.value = '';\r\n this.properties.name = '__captcha__';\r\n\r\n Captcha.emitter.on('confirm', () => {\r\n this.generateImgUrl();\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.id = this.getCaptchaId();\r\n this.generateImgUrl();\r\n }\r\n\r\n private getCaptchaId() {\r\n return `${getWindow(this.form.execution).TAB_ID}${this.form.definition.frmParent}_${this.form.definition.id}`;\r\n }\r\n public getUrl() {\r\n return this.state.url;\r\n }\r\n\r\n public generateImgUrl() {\r\n this.state.url = `${getWindow(this.form.execution).CONTEXT}/captchaImg?captchaName=${this.getId()}&t=${new Date().getTime()}`;\r\n }\r\n\r\n public generateVoiceUrl() {\r\n return `${getWindow(this.form.execution).CONTEXT}/captchaAudio?captchaName=${this.getId()}&t=${new Date().getTime()}&langCode=${getWindow(this.form.execution).LANG_CODE}`;\r\n }\r\n\r\n public getId() {\r\n return this.id;\r\n }\r\n\r\n public setValue(value: string) {\r\n this.state.value = value;\r\n this.state.validation.errorMessage = '';\r\n Captcha.confirmParams = { [this.id]: value };\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n this.id = this.getCaptchaId();\r\n if (this.state.value === '' && !this.getForm().definition.readOnly) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired(\r\n this.form.execution,\r\n );\r\n return false;\r\n } else {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n }\r\n}\r\n","export type RetryConfiguration = {\r\n retries: number;\r\n timeout: number;\r\n};\r\n\r\nexport class TooMuchRetriesException extends Error {}\r\n\r\nfunction timeout(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n\r\n/**\r\n * Ejecuta el callback provisto y verifica el resultado contra el método checkSuccess. En caso de que checkSuccess devuelva false, reintenta en el timeout especificado, siempre que las restricciones de configuration.retries lo permita.\r\n *\r\n * En caso de fallar demasiadas veces, eleva una excepción de tipo TooMuchRetriesException\r\n *\r\n */\r\nexport async function asyncRetry<ReturnType>(\r\n cb: () => Promise<ReturnType>,\r\n checkSuccess: (value: ReturnType) => boolean,\r\n configuration: RetryConfiguration = {\r\n retries: 3,\r\n timeout: 300,\r\n },\r\n): Promise<ReturnType> {\r\n return new Promise<ReturnType>((resolve, reject) => {\r\n (async () => {\r\n const tryIt = async () => {\r\n const res = await cb();\r\n return checkSuccess(res) ? res : null;\r\n };\r\n\r\n for await (const _ of new Array(configuration.retries)) {\r\n const res = await tryIt();\r\n if (res) {\r\n resolve(res);\r\n return;\r\n }\r\n await timeout(configuration.timeout);\r\n }\r\n\r\n reject(new TooMuchRetriesException());\r\n })();\r\n });\r\n}\r\n","export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!Object.is(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!Object.is(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!Object.is(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { isTrue } from '@apia/util';\r\nimport type { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\nexport function isFieldShowAsText(\r\n f: Pick<FieldWithAttribute<any, any, any>, 'properties' | 'getForm'>,\r\n): boolean {\r\n return (\r\n isTrue(f.properties.disabled) ||\r\n isTrue(f.getForm().definition.readonly) ||\r\n isTrue(f.getForm().definition.readOnly) ||\r\n isTrue(f.properties.inputAsText)\r\n );\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttributeState, SetValueOptions } from './types';\r\nimport { Field } from './Field';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { IApiaApiPostConfig } from '../../../util/api/types';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TooMuchRetriesException,\r\n asyncRetry,\r\n} from '../../../util/other/asyncRetry';\r\nimport {\r\n TApiaFieldValueType,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { actions } from './constants/actions';\r\nimport { shallowEqual } from '../../../util/comparators/shallowEqual';\r\nimport { TApiaFieldWithAttributeProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { Form } from './Form';\r\nimport { isFieldShowAsText } from './util/isFieldShowAsText';\r\nexport type TFireEventOptions = {\r\n force?: boolean;\r\n};\r\n\r\nexport class Attribute {\r\n constructor(\r\n public readonly id: string,\r\n public readonly name: string,\r\n public readonly title: string,\r\n public readonly valueType: TApiaFieldValueType,\r\n ) {}\r\n}\r\n\r\nexport abstract class FieldWithAttribute<\r\n FieldProps extends\r\n TApiaFieldWithAttributeProperties = TApiaFieldWithAttributeProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n FieldWithAttributeState<FieldDefinition, FieldProps, ValueType>\r\n> {\r\n #lastOnChangeValue: ValueType | null = null;\r\n protected lastSynchronizationValue: ValueType | null = null;\r\n\r\n public readonly attribute: Attribute;\r\n\r\n constructor({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(definition as FieldDefinition);\r\n\r\n this.attribute = new Attribute(attId, attName, attLabel, valueType);\r\n\r\n this.state.value = value;\r\n\r\n this.state.validation = {\r\n dirty: false,\r\n errorMessage: null,\r\n synchronizing: false,\r\n };\r\n\r\n makeObservable(this, {\r\n attribute: observable,\r\n });\r\n }\r\n\r\n async fireEvent(\r\n eventName: string,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n if (this.getValidationState().dirty) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (eventName === 'onChange') {\r\n if (this.getValue() === this.#lastOnChangeValue && !options?.force) {\r\n return true;\r\n } else {\r\n const res = await super.fireEvent(eventName);\r\n if (res) {\r\n this.#lastOnChangeValue = this.getValue();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return super.fireEvent(eventName);\r\n }\r\n protected async getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>): Promise<ValueType> {\r\n return value;\r\n }\r\n public getValidationState() {\r\n return this.state.validation;\r\n }\r\n public getValue() {\r\n return this.state.value;\r\n }\r\n protected canSetValue(newValue: ValueType): boolean {\r\n return isFieldShowAsText(this) || shallowEqual(newValue, this.getValue());\r\n }\r\n public setValue(newValue: ValueType, options?: SetValueOptions) {\r\n if (\r\n !options?.force &&\r\n (isFieldShowAsText(this) || shallowEqual(newValue, this.getValue()))\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n if (options?.markAsDirty !== false) {\r\n this.form.execution.state.hasChangedAnything = true;\r\n }\r\n if (options?.fireEvents !== false) {\r\n return this.fireEvent('onChange', { force: options?.force });\r\n }\r\n return true;\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ValueType,\r\n ): IApiaApiPostConfig<any> {\r\n return {\r\n postData: {\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n };\r\n }\r\n protected getSynchronizeUrl(params?: Record<string, unknown>) {\r\n return makeApiaUrl(this.form.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'processFieldSubmit',\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attId: this.attribute.id,\r\n index: this.definition.multIdx ?? this.definition.index ?? 0,\r\n timestamp: Date.now(),\r\n isAjax: true,\r\n ...params,\r\n });\r\n }\r\n protected processSynchronizeError(e: unknown) {\r\n if (e instanceof TooMuchRetriesException) {\r\n this.state.validation.dirty = true;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n protected async synchronize(newValue: ValueType) {\r\n if (newValue === this.lastSynchronizationValue) return true;\r\n\r\n const syncPromise = (async () => {\r\n try {\r\n const postData = this.getSynchronizePostConfiguration(newValue);\r\n const response = await asyncRetry(\r\n async () => {\r\n try {\r\n const res = await post<{ success: boolean }>(\r\n this.form.execution,\r\n await this.getSynchronizeUrl(),\r\n postData,\r\n );\r\n return res;\r\n } catch (e) {\r\n this.form.execution.notifications.add(\r\n new MessageNotification({ message: String(e) }),\r\n );\r\n return null;\r\n }\r\n },\r\n (result) => {\r\n const success = !!result?.data?.success;\r\n return success;\r\n },\r\n { retries: 10, timeout: 500 },\r\n );\r\n\r\n const result = response?.data?.success || false;\r\n\r\n if (result) {\r\n this.lastSynchronizationValue = newValue;\r\n this.state.validation.dirty = false;\r\n return true;\r\n }\r\n } catch (e) {\r\n console.error('synchronize error:', e);\r\n this.processSynchronizeError(e);\r\n }\r\n\r\n return false;\r\n })();\r\n\r\n try {\r\n this.form.execution.addPendingPromise(syncPromise);\r\n } catch {\r\n //\r\n }\r\n\r\n // esperamos el resultado real de la sincronización\r\n return await syncPromise;\r\n }\r\n\r\n protected hasValue() {\r\n return this.getValue() !== '';\r\n }\r\n\r\n protected isValidValue() {\r\n return !!this.getValue();\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid =\r\n isFieldShowAsText(this) ||\r\n this.isValidValue() ||\r\n !this.properties.required ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired(this.form.execution);\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n\r\n public setError(err: string) {\r\n this.state.validation.errorMessage = err;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n return {\r\n ...super.getServerEventParams(evtId, additionalParams),\r\n attId: this.attribute.id,\r\n };\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n const initialValue = await this.getInitialValue({\r\n ...this.definition,\r\n properties: this.properties,\r\n attId: this.attribute.id,\r\n attName: this.attribute.name,\r\n attLabel: this.attribute.title,\r\n valueType: this.attribute.valueType,\r\n value: this.state.value,\r\n });\r\n\r\n this.state.value = initialValue ?? ('' as ValueType);\r\n }\r\n}\r\n","import { toBoolean } from '@apia/util';\r\nimport { TApiaCheckboxProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\n\r\ntype CheckboxEvents = 'onClick';\r\n\r\nexport class Checkbox extends FieldWithAttribute<\r\n TApiaCheckboxProperties,\r\n boolean\r\n> {\r\n fireEvent(\r\n eventName: CheckboxEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaCheckboxProperties>): Promise<boolean> {\r\n if (value === '' || value === undefined) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n return Promise.resolve(toBoolean(value));\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { TTranslationState } from './types';\r\nimport { post } from '../../../../util';\r\nimport type { Execution } from '../..';\r\n\r\nexport class Translation {\r\n state: TTranslationState;\r\n\r\n constructor(\r\n public execution: Execution,\r\n state: Pick<TTranslationState, 'id' | 'label' | 'isTranslated'>,\r\n ) {\r\n this.state = {\r\n ...state,\r\n hasChanged: false,\r\n isTranslated: state.isTranslated,\r\n tempValue: '',\r\n };\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n cancelTranslation() {\r\n this.reset();\r\n }\r\n\r\n async readTranslations(url: string) {\r\n if (this.state.remoteValue === undefined) {\r\n const result = await post<{ values: { value: string } }>(\r\n this.execution,\r\n url,\r\n { avoidNormalize: true, avoidTrimXml: true },\r\n );\r\n\r\n const newValue = result?.data?.values?.value;\r\n this.state.tempValue =\r\n newValue !== 'null' ? (result?.data?.values?.value ?? '') : '';\r\n this.state.remoteValue = this.state.tempValue;\r\n }\r\n }\r\n\r\n reset() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n }\r\n\r\n deleteTranslation() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n this.state.isTranslated = false;\r\n }\r\n\r\n setTempValue(str: string) {\r\n this.state.tempValue = str;\r\n this.state.hasChanged = str !== this.state.remoteValue;\r\n }\r\n\r\n submitTranslation(value: string, url: string) {\r\n if (this.state.hasChanged) {\r\n post(this.execution, url, {\r\n postData: { value },\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n postDataTreatment: 'stringify',\r\n });\r\n }\r\n\r\n this.state.isTranslated = this.value !== '';\r\n this.reset();\r\n }\r\n\r\n get langId() {\r\n return this.state.id;\r\n }\r\n\r\n get value() {\r\n return this.state.tempValue;\r\n }\r\n}\r\n","export function parseFakeJSON(fakeJSON: string) {\r\n return [...fakeJSON.matchAll(/(\\d+): '?([^']+)'?/g)].map(([, k, v]) => ({\r\n id: k,\r\n label: v,\r\n }));\r\n}\r\n","import { TApiaFieldWithAttributeBaseProps } from '../../../InitialData/types/TApiaField';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Form } from '../Form';\r\nimport { TApiaTranslatableFieldProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { Translation } from './Translation';\r\nimport { parseFakeJSON } from './util';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { Comparator } from '../../../../util/comparators/shallowEqual';\r\n\r\ninterface InitialTradMap {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport abstract class TranslatableField<\r\n FieldProps extends\r\n TApiaTranslatableFieldProperties = TApiaTranslatableFieldProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends FieldWithAttribute<FieldProps, ValueType, FieldDefinition> {\r\n translations = new Map<string, Translation>();\r\n selectedLanguageId = this.getLanguages()[0]?.id;\r\n isTradLoading = false;\r\n definitionTradParsed: InitialTradMap = {};\r\n\r\n constructor(props: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(props);\r\n makeObservable(this, {\r\n translations: observable,\r\n selectedLanguageId: observable,\r\n isTradLoading: observable,\r\n });\r\n }\r\n\r\n private extractTrad() {\r\n const tradMap: InitialTradMap = {};\r\n const regex = /(\\d+)\\s*:\\s*(true|false)/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(this.definition.trad ?? '{}')) !== null) {\r\n const key = match[1];\r\n const value = match[2] === 'true';\r\n tradMap[key] = value;\r\n }\r\n\r\n this.definitionTradParsed = tradMap;\r\n }\r\n\r\n private getLanguages() {\r\n return arrayOrArray(parseFakeJSON(this.getForm().definition?.langs ?? ''));\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n if (this.getLanguages().length > 0) {\r\n this.extractTrad();\r\n this.getLanguages().forEach((lang) => {\r\n const isTranslated = this.definitionTradParsed[lang.id] ?? false;\r\n this.translations.set(\r\n lang.id,\r\n new Translation(this.form.execution, {\r\n id: lang.id,\r\n label: lang.label,\r\n isTranslated: isTranslated,\r\n }),\r\n );\r\n });\r\n\r\n this.selectedLanguageId = this.getLanguages()[0].id;\r\n }\r\n }\r\n\r\n public cancelTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.reset();\r\n });\r\n }\r\n\r\n public deleteTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.deleteTranslation();\r\n });\r\n }\r\n\r\n public async changeLanguage(langId: string) {\r\n this.selectedLanguageId = langId;\r\n this.syncTranslation();\r\n }\r\n\r\n public getTranslation(id: string) {\r\n return this.translations.get(id);\r\n }\r\n\r\n public getCurrentTranslation() {\r\n return this.translations.get(this.selectedLanguageId);\r\n }\r\n\r\n public getTranslations() {\r\n return this.translations;\r\n }\r\n\r\n public submitTranslations() {\r\n [...this.getTranslations().values()]\r\n .filter((c) => c.state.hasChanged)\r\n .forEach((c) => {\r\n c.submitTranslation(\r\n c.value,\r\n this.getSynchronizeUrl({\r\n react: true,\r\n preventAsXmlParameter: true,\r\n langId: c.langId,\r\n }),\r\n );\r\n });\r\n this.state.validation.errorMessage = null;\r\n }\r\n\r\n public async syncTranslation() {\r\n const langId = this.selectedLanguageId;\r\n this.isTradLoading = true;\r\n\r\n await this.getTranslation(langId)?.readTranslations(\r\n await makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'getFieldTranslations',\r\n frmId: this.getForm().definition.id,\r\n frmParent: this.getForm().definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n langId,\r\n react: true,\r\n }),\r\n );\r\n\r\n this.isTradLoading = false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n const isSuperValid = await super.validate();\r\n let isValid = isSuperValid;\r\n const canValidate =\r\n isSuperValid &&\r\n this.properties.reqTrad &&\r\n this.hasValue() &&\r\n (!this.properties.inputAsText ||\r\n !this.properties.visibilityHidden ||\r\n !this.properties.disabled);\r\n\r\n if (canValidate) {\r\n const translations = [...this.getTranslations().values()];\r\n\r\n const tradNotValidated = translations.find((c) => !c.state.isTranslated);\r\n\r\n if (tradNotValidated) {\r\n this.state.validation.errorMessage = labels.errorTranslateRequired(\r\n this.form.execution,\r\n tradNotValidated.state.label,\r\n );\r\n isValid = false;\r\n } else {\r\n this.state.validation.errorMessage = null;\r\n }\r\n }\r\n return isValid;\r\n }\r\n public setValue(\r\n newValue: ValueType,\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n if (newValue === '') {\r\n this.deleteTranslations();\r\n }\r\n return super.setValue(newValue, options);\r\n }\r\n}\r\n","import { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaEditorProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TFireEventOptions } from '../../FieldWithAttribute';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport type EditorEvents = 'onChange';\r\n\r\nexport class Editor extends TranslatableField<TApiaEditorProperties, string> {\r\n fireEvent(\r\n eventName: EditorEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected isValidValue(): boolean {\r\n return !!new DOMParser().parseFromString(this.getValue(), 'text/html')\r\n .documentElement.textContent;\r\n }\r\n protected getSynchronizePostConfiguration(\r\n value: string,\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n conf.postData!.clearValues = 'true';\r\n return conf;\r\n }\r\n}\r\n","import {\r\n UploaderApi as OriginalUploaderApi,\r\n TModalConfig,\r\n} from '@apia/uploader-controller';\r\nimport { type Execution } from '..';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\n\r\nexport class UploaderApi extends OriginalUploaderApi {\r\n docTypePermittedObjId;\r\n\r\n constructor(\r\n public execution: Execution,\r\n id: string,\r\n public type: 'E' | 'P',\r\n modalConfig: TModalConfig,\r\n ) {\r\n super({\r\n id,\r\n modalConfig: { ...modalConfig, renderers: execution.renderers },\r\n context: {\r\n allowTranslation: type === 'E' && !!getWindow(execution).DOC_LANGS,\r\n CONTEXT: getWindow(execution).CONTEXT,\r\n currentUserLogin: getWindow(execution).CURRENT_USER_LOGIN,\r\n docLangs: getWindow(execution).DOC_LANGS,\r\n everyoneCanUpdate:\r\n (getWindow(execution)\r\n .DOCUMENT_EVERYONE_PERMISSION as any as boolean) !== false,\r\n IN_MONITOR: getWindow(execution).IN_MONITOR as any,\r\n ITHit: getWindow(execution).ITHit,\r\n killSession: () => execution.kill(),\r\n labels: getWindow(execution).labels as any,\r\n notify: (n) => execution.notifications.add(new MessageNotification(n)),\r\n openModal: () =>\r\n execution.environment.openUploaderModal?.(this.modalController!),\r\n ownerCanUpdate: getWindow(execution).DOCUMENT_OWNER_PRIVILEGES as any,\r\n readonly: false,\r\n TAB_ID_REQUEST: getWindow(execution).TAB_ID_REQUEST,\r\n URL_REQUEST_AJAX: getWindow(execution).URL_REQUEST_AJAX,\r\n WEBDAV_INSTALLER_URL: getWindow(execution).WEBDAV_INSTALLER_URL,\r\n WEBDAV_SERVER: getWindow(execution).WEBDAV_SERVER as any,\r\n },\r\n });\r\n this.docTypePermittedObjId =\r\n type === 'E'\r\n ? getWindow(execution).docTypePerEntId\r\n : getWindow(execution).docTypePerProId;\r\n }\r\n\r\n public getLoadFileSystemStructureTree(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n docTypePermittedObjType: this.type,\r\n };\r\n }\r\n\r\n public getLoadFilesForFolderParameters(): Record<string, unknown> {\r\n return {\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n docTypePermittedObjType: this.type,\r\n };\r\n }\r\n\r\n protected getAjaxUploadStartParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n prefix: this.type,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjType: this.type,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n };\r\n }\r\n\r\n protected addPrefix(defaultParameters: Record<string, unknown>) {\r\n return { ...defaultParameters, prefix: this.type };\r\n }\r\n\r\n protected getDocumentInfoParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ) {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getCheckLockDocumentParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ) => {\r\n return this.addPrefix(defaultParameters);\r\n };\r\n\r\n protected getReloadMetadataParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getSaveDroppedFilesParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n elemType: this.type,\r\n elemId: `prmDocumentContainter${this.type}`,\r\n };\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ) {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getMarkFileToSignParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getProcessDroppedFilesPostdata(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId?.toString(),\r\n docTypePermittedObjType: this.type,\r\n };\r\n }\r\n\r\n protected getProcessDroppedFilesParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return { ...defaultParameters, elemType: this.type };\r\n }\r\n\r\n protected getConfirmDropModalParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return { ...defaultParameters, elemType: this.type };\r\n }\r\n\r\n protected getConfirmDropModalPostdata(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...defaultParameters,\r\n elemType: this.type,\r\n pe: this.docTypePermittedObjId?.toString(),\r\n };\r\n }\r\n\r\n protected getCheckWebDavLockParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getDownloadMultipleDocumentsParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getLoadCurrentDocumentsParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n\r\n protected getDeleteDocumentParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return this.addPrefix(defaultParameters);\r\n }\r\n}\r\n","import { downloadUrl } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../util';\r\nimport { File as ExeFile } from '../FormsExecution/fields';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport {\r\n parseFileDefinition,\r\n TFileUploaded,\r\n TModalConfig,\r\n TSaveDroppedFilesConf,\r\n TUploaderFileInfo,\r\n UploaderModalController,\r\n} from '@apia/uploader-controller';\r\n\r\nexport class FormsUploader extends UploaderApi {\r\n constructor(\r\n public execution: Execution,\r\n public type: 'E' | 'P',\r\n modalConfig: TModalConfig,\r\n public field: ExeFile,\r\n ) {\r\n super(\r\n execution,\r\n `${type}_${field.attribute.id}_${field.definition.index ?? ''}`,\r\n type,\r\n modalConfig,\r\n );\r\n this.isEditionMode = getWindow(this.execution).IS_EDIT_GRID_MODAL\r\n ? true\r\n : undefined;\r\n }\r\n isEditionMode;\r\n index() {\r\n return this.field.definition.multIdx ?? this.field.definition.index ?? 0;\r\n }\r\n elemId() {\r\n return `dropUpprDiv${this.field.getForm().definition.frmParent}_${this.field.getForm().definition.id}_${this.field.definition.id}_${this.index()}${\r\n getWindow(this.execution).IS_EDIT_GRID_MODAL ? '_true_Mdl' : ''\r\n }`;\r\n }\r\n\r\n protected buildModalController(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n }): UploaderModalController {\r\n return super.buildModalController(conf);\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n const inProgressFiles = this.state.inProgressFiles;\r\n if (inProgressFiles.length === 1 && files.length)\r\n if (inProgressFiles[0].name !== files[0].name) {\r\n this.state.inProgressFiles = [];\r\n } else return [];\r\n return files.slice(0, 1);\r\n }\r\n\r\n protected getFormParameters() {\r\n return {\r\n frmId: this.field.getForm().definition.id,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n attId: this.field.attribute.id,\r\n index: this.index(),\r\n editionMode: this.isEditionMode,\r\n prefix: this.field.getForm().definition.frmParent,\r\n };\r\n }\r\n\r\n evaluateDeleteDocumentResult(\r\n result: undefined | { success: boolean },\r\n ): boolean {\r\n return !!result?.success;\r\n }\r\n\r\n getAjaxUrl(): string {\r\n return '/apia.execution.FormAction.run';\r\n }\r\n\r\n getAllowedTypesData() {\r\n return {\r\n postData: {\r\n docTypeId: this.field.properties.docType,\r\n forDropElem: true,\r\n },\r\n queryData: {\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n docTypeId: this.field.properties.docType,\r\n frmOut: true,\r\n ...this.getFormParameters(),\r\n },\r\n };\r\n }\r\n\r\n getAjaxUploadFileStatusParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ) {\r\n return {\r\n ...super.getAjaxUploadFileStatusParameters(defaultParameters),\r\n forceDocTypeId: this.field.properties.docType,\r\n\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getAjaxUploadStartParameters({\r\n useDocTypePermitted,\r\n docTypePermittedObjType,\r\n docTypePermittedObjId,\r\n ...defaultParameters\r\n }: Record<string, unknown>) {\r\n const {\r\n docTypePermittedObjId: a,\r\n docTypePermittedObjType: b,\r\n useDocTypePermitted: c,\r\n ...rest\r\n } = super.getAjaxUploadStartParameters(defaultParameters);\r\n return {\r\n ...rest,\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getCheckLockDocumentParameters = ({\r\n prefix,\r\n ...parameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...parameters,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getCheckSignatureParameters = (parameters: Record<string, unknown>) => {\r\n const { frmId, frmParent } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n frmId,\r\n frmParent,\r\n };\r\n };\r\n\r\n getClearTempFilesParameters = ({\r\n elemType,\r\n ...rest\r\n }: Record<string, unknown>) => {\r\n const { frmId, frmParent, index, attId } = this.getFormParameters();\r\n return {\r\n ...rest,\r\n frmParent,\r\n frmId,\r\n attId,\r\n index,\r\n };\r\n };\r\n\r\n getConfirmDropModalParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n const { frmParent } = this.getFormParameters();\r\n return {\r\n ...super.getConfirmDropModalParameters(defaultParameters),\r\n elemType: frmParent,\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getConfirmDropModalPostdata = ({\r\n pe,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n const { editionMode } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n editionMode,\r\n };\r\n };\r\n\r\n getDeleteDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getDocumentInfoParameters(parameters: Record<string, unknown>) {\r\n return {\r\n ...super.getDocumentInfoParameters(parameters),\r\n ajaxUrl: getWindow(this.execution).URL_REQUEST_AJAX,\r\n };\r\n }\r\n\r\n getEditDocumentParameters = ({ action, docId }: Record<string, unknown>) => {\r\n const { prefix, editionMode, ...rest } = this.getFormParameters();\r\n return {\r\n action,\r\n ...rest,\r\n docId,\r\n ajaxUrl: 'apia.execution.FormAction.run',\r\n };\r\n };\r\n\r\n getLoadFilesForFolderParameters: () => Record<string, unknown> = () => {\r\n return {\r\n useDocTypePermitted:\r\n this.state.allowedTypes.length === 1 ? true : undefined,\r\n docTypeForcedId:\r\n this.state.allowedTypes.length === 1\r\n ? this.state.allowedTypes[0].id\r\n : undefined,\r\n txtCantDoc: 0,\r\n loadFolders: true,\r\n };\r\n };\r\n\r\n getLoadFileSystemStructureTree = () => ({\r\n useDocTypePermitted: this.state.allowedTypes.length === 1,\r\n docTypeForcedId: this.docTypePermittedObjId,\r\n });\r\n\r\n getLockDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getMarkFileToSignParameters = ({\r\n docId,\r\n prefix,\r\n ...defaultParameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...super.getMarkFileToSignParameters(defaultParameters),\r\n action: 'sign',\r\n\r\n fldId: this.field.definition.id,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getProcessDroppedFilesParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...defaultParameters,\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n ...rest,\r\n };\r\n };\r\n\r\n getProcessDroppedFilesPostdata = ({\r\n useDocTypePermitted,\r\n docTypePermittedObjId,\r\n docTypePermittedObjType,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n return {\r\n ...super.getProcessDroppedFilesParameters(parameters),\r\n editionMode: this.getFormParameters().editionMode,\r\n };\r\n };\r\n\r\n getReloadMetadataParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return {\r\n ...super.getReloadMetadataParameters(defaultParameters),\r\n ...(getWindow(this.execution).IS_EDIT_GRID\r\n ? { editionMode: true }\r\n : null),\r\n ...this.getFormParameters(),\r\n };\r\n }\r\n\r\n getSaveDroppedFilesParameters(\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n const elemId = this.elemId();\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...super.getSaveDroppedFilesParameters(defaultParameters),\r\n fromFormElem: true,\r\n elemType: elemId,\r\n elemId,\r\n ...rest,\r\n };\r\n }\r\n\r\n async downloadVersion(fileId: string, version?: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n if (!file) return;\r\n\r\n if (\r\n getWindow(this.execution).IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n makeApiaUrl(this.execution, {\r\n action: 'downloadDocument',\r\n docId: file.downloadDocId,\r\n version,\r\n }),\r\n );\r\n }\r\n\r\n async downloadDocument(fileId: string, version?: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n const { prefix, ...rest } = this.getFormParameters();\r\n if (!file) return;\r\n\r\n if (\r\n getWindow(this.execution).IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n makeApiaUrl(this.execution, {\r\n action: 'download',\r\n docId: file.downloadDocId,\r\n ajaxUrl: '/page/generic/downloadAttDoc.jsp',\r\n version,\r\n ...rest,\r\n }),\r\n );\r\n }\r\n\r\n loadCurrentDocuments(): Promise<void> {\r\n return null as any as Promise<void>;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(\r\n this.context,\r\n file,\r\n this.field.properties.reqSign || false,\r\n ),\r\n markedToSign: this.field.properties.reqSign || file.markedToSign,\r\n canEdit: file.canEdit ?? true,\r\n canRead: file.canRead ?? true,\r\n };\r\n };\r\n\r\n async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf | undefined,\r\n ): Promise<boolean> {\r\n return await super.saveDroppedFiles(unprocessedFiles, conf);\r\n }\r\n}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FormsUploader } from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { TModalConfig, TUploaderFileInfo } from '@apia/uploader-controller';\r\n\r\nexport class File extends FieldWithAttribute<TApiaFileProperties> {\r\n uploader: FormsUploader = {} as FormsUploader;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FormsUploader(\r\n this.form.execution,\r\n this.getForm().definition.frmParent,\r\n {\r\n allowDocumentsMonitor: !this.properties.fileNotShowDocMon,\r\n allowPickFromDirectories:\r\n this.properties.fileShwFoldTreeBtn !== undefined,\r\n collapseDirectories: !!this.properties.fileCollapseFldStrc,\r\n collapseMetadata: !!this.properties.fileCollapseMetadata,\r\n collapsePermissions: !!this.properties.fileCollapsePermission,\r\n defaultDirectory: this.properties.fileDefFolder,\r\n monitorId: this.properties.documentMonitorCus,\r\n oneClickUpload: !!this.properties.oneClickUpload,\r\n rootFolder: this.properties.fileRootFolder,\r\n showDirectoriesStructure: this.properties.fileShwFoldTreeStr === false,\r\n showExpDate: this.properties.fileExpDate === true,\r\n showMetadata: !this.properties.hideDocMetadata,\r\n showPermissions: !this.properties.hideDocPermissions,\r\n } as TModalConfig,\r\n this,\r\n );\r\n\r\n this.uploader.on('fileUploaded', () => {\r\n this.setError('');\r\n });\r\n\r\n this.uploader.init();\r\n if (this.definition.file_prp) {\r\n const files = parseFakeJSON(this.definition.file_prp) as Record<\r\n number,\r\n TUploaderFileInfo\r\n >;\r\n const mainFile = files[0];\r\n if (mainFile) {\r\n this.uploader.state.files = {\r\n [mainFile.docId]: { ...mainFile, docName: mainFile.name },\r\n };\r\n const otherEntries = Object.entries(files).filter(([k]) => k !== '0');\r\n if (otherEntries.length) {\r\n otherEntries.forEach(([k, file]) => {\r\n this.uploader.setTranslationFile(\r\n { ...file, docName: file.name },\r\n mainFile.docId,\r\n Number(k),\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (\r\n this.properties.disabled ||\r\n this.properties.noModify ||\r\n this.properties.visibilityHidden\r\n ) {\r\n return true;\r\n } else if (\r\n this.properties.required &&\r\n Object.values(this.uploader.state.files).length == 0\r\n ) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired(\r\n this.form.execution,\r\n );\r\n return false;\r\n } else if (this.getForm().definition.frmParent !== 'P') {\r\n const langEntries: [number, string][] = Object.entries(\r\n parseFakeJSON(this.form.definition.langs || '{}') as Record<\r\n number,\r\n string\r\n >,\r\n ).map(([key, value]) => [Number(key), value]);\r\n\r\n const innerMap = [...this.uploader.state.translatedFiles.values()][0];\r\n\r\n const translationValid =\r\n !this.properties.required ||\r\n !this.getForm().definition.langs ||\r\n langEntries.every(([langId, langLabel]) => {\r\n const hasTranslation = innerMap?.has(langId);\r\n if (!hasTranslation) {\r\n this.state.validation.errorMessage = labels.errorTranslateRequired(\r\n this.form.execution,\r\n langLabel,\r\n );\r\n }\r\n return hasTranslation;\r\n });\r\n return translationValid;\r\n }\r\n return true;\r\n }\r\n\r\n public async setValue(\r\n _newValue: any,\r\n _options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n return true;\r\n }\r\n\r\n public loadFromDefinition(def: string) {\r\n if (def) {\r\n const uploadedFile = parseFakeJSON(def ?? '')[0] as TUploaderFileInfo;\r\n\r\n if (uploadedFile) {\r\n this.uploader.state.files = {\r\n [uploadedFile.docId]: {\r\n ...uploadedFile,\r\n docName: uploadedFile.name,\r\n },\r\n };\r\n } else {\r\n this.uploader.state.files = {};\r\n }\r\n }\r\n }\r\n\r\n public async downloadDocument(): Promise<void> {\r\n await this.uploader.downloadDocument(\r\n Object.values(this.uploader.state.files)[0].docId,\r\n );\r\n }\r\n}\r\n","export function noNaN(number: unknown, defaultReturn = 0) {\r\n const returnNumber = Number(number);\r\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\r\n return returnNumber;\r\n}\r\n","import { makeObservable, observable, runInAction } from 'mobx';\r\nimport { Grid } from '.';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n };\r\n\r\n constructor(private grid: Grid) {\r\n makeObservable(this, { state: observable });\r\n this.init();\r\n }\r\n\r\n #unsubscribeTableEvents = () => {};\r\n private init() {\r\n this.#unsubscribeTableEvents();\r\n\r\n const controller = this.grid.controller;\r\n\r\n const u2 = controller.on('selectionChange', (selection) => {\r\n const { paged, currentPage, pages } = this.grid.properties;\r\n const isFirstPage = paged ? String(currentPage) === '1' : false;\r\n const isLastPage = paged ? String(currentPage) === String(pages) : false;\r\n\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.getContainer()?.getRowIndex(c) === 0) &&\r\n isFirstPage\r\n : selection.find((c) => c.getContainer()?.getRowIndex(c) === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ) && isLastPage\r\n : selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ));\r\n });\r\n });\r\n this.#unsubscribeTableEvents = () => {\r\n u2();\r\n };\r\n }\r\n\r\n get showAddButton() {\r\n const { gridQuery, hideGridButtons, hideAddButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return (\r\n !gridQuery && !hideGridButtons && !hideAddButton && !hideIncludeButton\r\n );\r\n }\r\n get showDelButton() {\r\n const { gridQuery, hideGridButtons, hideDelButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return (\r\n !gridQuery && !hideGridButtons && !hideDelButton && !hideIncludeButton\r\n );\r\n }\r\n get showSortButtons() {\r\n const { gridQuery, hideGridButtons, hideOrderButton } =\r\n this.grid.properties;\r\n return !gridQuery && !hideGridButtons && !hideOrderButton;\r\n }\r\n get isSortUpDisabled() {\r\n return this.state.isSortUpDisabled || this.grid.state.isLoading;\r\n }\r\n get isSortDownDisabled() {\r\n return this.state.isSortDownDisabled || this.grid.state.isLoading;\r\n }\r\n get isAddDisabled() {\r\n return this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getState('selection').size === 0 ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n async sortUp() {\r\n this.grid.sortUp();\r\n }\r\n\r\n async sortDown() {\r\n this.grid.sortDown();\r\n }\r\n\r\n async addRow() {\r\n await this.grid.addRow();\r\n }\r\n\r\n async deleteSelectedRows() {\r\n this.grid.deleteRows();\r\n }\r\n}\r\n","import { Cell } from '@apia/table2-controller';\r\nimport type { Field } from '../../Field';\r\n\r\nexport class GridCell extends Cell {\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import { Cell } from '@apia/table2-controller';\r\nimport type { GridEditionModal } from './GridEditionModal';\r\nimport type { Grid } from '.';\r\n\r\nexport class AdditionalCell extends Cell {\r\n constructor(\r\n public grid: Grid,\r\n public getIndex: () => number,\r\n public remove: () => unknown,\r\n public openEditionModal?: (handler: GridEditionModal) => unknown,\r\n ) {\r\n super({ colName: 'additional' });\r\n }\r\n\r\n public get hasEditionModal() {\r\n return this.openEditionModal !== undefined;\r\n }\r\n}\r\n","import { Cell, type CellState } from '@apia/table2-controller';\r\nimport type { Grid } from '.';\r\nimport { Field } from '../../Field';\r\n\r\ntype HeaderCellState = CellState;\r\n\r\nexport class HeaderCell extends Cell<HeaderCellState> {\r\n constructor(\r\n public grid: Grid,\r\n state: CellState,\r\n ) {\r\n super(state);\r\n }\r\n\r\n sort() {\r\n this.grid.fireEvent('gridSort');\r\n }\r\n\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import type { Field } from '../../Field';\r\n\r\n/**\r\n * Esta clase se encarga de recordar los campos que ya fueron accedidos,\r\n * optimizando el tiempo de acceso en grillas de gran tamaño.\r\n */\r\nexport class FieldsCache {\r\n private cached: Record<number, Record<number | string, Field<any>>> = {};\r\n\r\n private getIndex(index: number) {\r\n if (!this.cached[index]) this.cached[index] = {};\r\n return this.cached[index];\r\n }\r\n\r\n clear() {\r\n this.cached = {};\r\n }\r\n\r\n clearIndex(index: number) {\r\n delete this.cached[index];\r\n }\r\n\r\n get(index: number, id: number | string) {\r\n return this.getIndex(index)[id];\r\n }\r\n\r\n set(index: number, id: number | string, field: Field<any>) {\r\n this.getIndex(index)[id] = field;\r\n }\r\n\r\n swap(index1: number, index2: number) {\r\n const row1 = this.getIndex(index1);\r\n this.cached[index1] = this.getIndex(index2);\r\n this.cached[index2] = row1;\r\n }\r\n\r\n truncate(index: number) {\r\n Object.keys(this.cached).forEach((c) => {\r\n if (Number.parseInt(c) >= index) {\r\n delete this.cached[Number.parseInt(c)];\r\n }\r\n });\r\n }\r\n}\r\n","import { shallowEqual } from '@apia/util';\r\nimport { makeApiaUrl, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaModalInputDefinition } from '../../../../InitialData/types/fields/TApiaModalInputDefinition';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\nimport { isFieldShowAsText } from '../../util/isFieldShowAsText';\r\nimport { SetValueOptions } from '../../types';\r\nimport { makeObservable, observable } from 'mobx';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\ntype ModalInputValue = { showValue: string; storeValue?: string };\r\n\r\nexport class ModalInput extends FieldWithAttribute<\r\n TApiaInputProperties,\r\n ModalInputValue\r\n> {\r\n isLoading = false;\r\n\r\n constructor({ value, ...definition }: TApiaModalInputDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n },\r\n value: { storeValue: value, showValue: definition.qry_show_value },\r\n });\r\n\r\n makeObservable(this, { isLoading: observable });\r\n }\r\n\r\n fireEvent(\r\n eventName: InputEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected hasValue(): boolean {\r\n return (\r\n this.getValue().showValue !== '' && this.getValue().storeValue !== ''\r\n );\r\n }\r\n\r\n public async setValueFromInputWrite(value: string) {\r\n this.isLoading = true;\r\n try {\r\n if (\r\n isFieldShowAsText(this) ||\r\n shallowEqual(value, this.getValue().showValue) ||\r\n value === ''\r\n )\r\n return;\r\n if (value !== this.getValue().showValue) {\r\n const result = await post<{\r\n ret_value: { show_value: string; value: string };\r\n }>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n action: 'checkModalValue',\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n }),\r\n {\r\n postData: {\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n qryId: this.definition.qryId,\r\n index: this.definition.index,\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n\r\n if (result?.data?.ret_value) {\r\n const setValueResult = await this.setValue({\r\n storeValue: result?.data?.ret_value.value,\r\n showValue: result?.data?.ret_value.show_value,\r\n });\r\n if (setValueResult) {\r\n this.fireEvent('onChange');\r\n }\r\n this.setError('');\r\n } else {\r\n this.setValue({ showValue: '', storeValue: '' });\r\n this.setError(getWindow(this.form.execution).MSG_VAL_NOT_FOUND);\r\n }\r\n }\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n public async setValueFromModalSelection(rowId: string) {\r\n this.isLoading = true;\r\n\r\n try {\r\n const result = await post<{ row: { cell: string[] } }>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.query.ModalAction.run',\r\n action: 'getValues',\r\n }),\r\n { postData: { id: rowId }, postDataTreatment: 'stringify' },\r\n );\r\n\r\n if (result?.data?.row?.cell) {\r\n const setValueResult = await this.setValue({\r\n storeValue: result.data.row.cell[0],\r\n showValue: result.data.row.cell[1],\r\n });\r\n this.form.execution.setLastModalReturn(result.data.row.cell);\r\n\r\n if (setValueResult) {\r\n this.fireEvent('onModalReturn');\r\n this.fireEvent('onChange');\r\n }\r\n }\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n const isValid =\r\n !!this.getValue().storeValue ||\r\n !this.properties.required ||\r\n this.properties.inputAsText ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n if (!isValid) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired(\r\n this.form.execution,\r\n );\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n public setValue(newValue: any, options?: SetValueOptions) {\r\n if (\r\n !options?.force &&\r\n (isFieldShowAsText(this) || shallowEqual(newValue, this.getValue()))\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n if (options?.markAsDirty !== false) {\r\n this.form.execution.state.hasChangedAnything = true;\r\n }\r\n return true;\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ModalInputValue,\r\n ): IApiaApiPostConfig<any> {\r\n const storeIdValue = this.properties.storeMdlQryResult;\r\n\r\n return {\r\n ...super.getSynchronizePostConfiguration(value),\r\n postData: {\r\n value: storeIdValue\r\n ? [this.getValue().storeValue!, this.getValue().showValue]\r\n : this.getValue().storeValue,\r\n },\r\n };\r\n }\r\n}\r\n","import { TApiaHiddenProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Hidden extends FieldWithAttribute<TApiaHiddenProperties> {}\r\n","import { makeApiaUrl, parseXml, post } from '../../../../../util';\r\n\r\nimport type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport type {\r\n IApiaDataGridColumn,\r\n TApiaGridDefinition,\r\n TApiaGridField,\r\n} from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { actions } from '../../constants/actions';\r\nimport type {\r\n FieldState,\r\n GridActionResponse,\r\n GridColumn,\r\n GridDefinition,\r\n GridEvents,\r\n GridProps,\r\n GridState,\r\n} from './types';\r\nimport { GridEditionModal } from './GridEditionModal';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport {\r\n FocusControllerPlugin,\r\n Row,\r\n TableController,\r\n} from '@apia/table2-controller';\r\nimport type { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport type { Form } from '../../Form';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { GridFooterHandler } from './GridFooterHandler';\r\nimport { GridCell } from './GridCell';\r\nimport { arrayOrArray, Mutex } from '@apia/util';\r\nimport type { FireEventParameters } from '../../types';\r\nimport { AdditionalCell } from './AdditionalCell';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { File } from '../File';\r\nimport { HeaderCell } from './HeaderCell';\r\nimport { TApiaFieldCommonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldsCache } from './FieldsCache';\r\nimport { ModalInput } from '../ModalInput';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { getDocument } from '../../../../../util/dom/getDocument';\r\nimport { Hidden } from '../Hidden';\r\nimport type { Select } from '../Select';\r\n\r\nasync function inlineCaller<T>(cb: () => T, _t: number): Promise<T> {\r\n return cb();\r\n}\r\n\r\nasync function inlineTimeout(cb: () => unknown, _t: number): Promise<true> {\r\n setTimeout(cb, _t);\r\n\r\n return Promise.resolve(true);\r\n}\r\n\r\nexport class Grid extends Field<GridProps, GridDefinition, GridState> {\r\n private rowId = 0;\r\n\r\n protected cache = new FieldsCache();\r\n protected mutex = new Mutex();\r\n protected newRowStates: FieldState[][] = [];\r\n protected initialStates: FieldState[][];\r\n protected fieldsDefinitions: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n\r\n protected readonly managedAttIds = new Set<string | number>();\r\n protected readonly managedAttNames = new Set<string>();\r\n protected readonly managedFieldIds = new Set<string | number>();\r\n protected readonly managedFieldsNames = new Set<string>();\r\n\r\n protected _editionModalHandler: GridEditionModal | null = null;\r\n protected readonly _footerController: GridFooterHandler;\r\n protected readonly tableController: TableController = new TableController({\r\n allowEdition: true,\r\n allowSelection: true,\r\n isSelectionMultiple: true,\r\n });\r\n\r\n public get controller() {\r\n return this.tableController;\r\n }\r\n\r\n public get currentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n public get editionModalHandler() {\r\n return this._editionModalHandler;\r\n }\r\n\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n return (\r\n this.controller.body.rows\r\n .at(-1)\r\n ?.cells.find((c) => c instanceof GridCell) as GridCell\r\n ).getField().definition.index!;\r\n }\r\n\r\n public get footerController() {\r\n return this._footerController;\r\n }\r\n\r\n public get header() {\r\n return this.state.header;\r\n }\r\n\r\n public get isPaged() {\r\n return this.properties.paged;\r\n }\r\n\r\n public get length() {\r\n return this.tableController.body.rows.length;\r\n }\r\n\r\n public get minIndex() {\r\n return Number.isFinite(this.properties.pageSize)\r\n ? (this.properties.currentPage - 1) * this.properties.pageSize\r\n : 0;\r\n }\r\n\r\n public get pageCount() {\r\n return this.properties.pages;\r\n }\r\n\r\n public get pageSize() {\r\n return this.properties.pageSize;\r\n }\r\n\r\n public get selectedIndices() {\r\n return [...this.tableController.getState('selection').values()].map((c) =>\r\n c.getIndex(),\r\n );\r\n }\r\n\r\n public get selectedItems() {\r\n return this.selectedIndices.map((current) => this.getRow(current)!);\r\n }\r\n\r\n public get startIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(\r\n properties.pagedGridSize,\r\n properties.paged ? 5 : Infinity,\r\n ),\r\n\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n hideDocInfoButton: String(properties.hideDocInfoButton) === 'true',\r\n },\r\n });\r\n this._footerController = new GridFooterHandler(this);\r\n\r\n const fieldsArray = arrayOrArray(field);\r\n this.initialStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n this.fieldsDefinitions = fieldsArray.map(\r\n ({ fieldValue, properties, ...current }) => {\r\n return { ...current, properties: parseFakeJSON(properties) };\r\n },\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n fldId: c.fldId,\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || this.resolveHeaderWidth(c),\r\n hidden: false,\r\n required: false,\r\n fldType: c.fldType,\r\n }));\r\n this.state.isLoading = false;\r\n this.state.isMaximized = false;\r\n\r\n this.controller.on('columnClick', (col) => {\r\n this.sortColumn((col.getState('properties')!.col as GridColumn).fldId);\r\n });\r\n }\r\n\r\n private resolveHeaderWidth(c: IApiaDataGridColumn) {\r\n if (\r\n c.fldType === '9' ||\r\n (c.fldType === '1' && c.dataType === 'D') ||\r\n (c.fldType === '1' && c.hasQuery)\r\n ) {\r\n return '200px';\r\n }\r\n\r\n return '150px';\r\n }\r\n\r\n protected getGridActionFromEventName(eventName: GridEvents) {\r\n switch (eventName) {\r\n case 'gridAdd':\r\n return 'add';\r\n case 'gridColumnSelect':\r\n return undefined;\r\n case 'gridDelete':\r\n return 'delete';\r\n case 'gridSort':\r\n return undefined;\r\n }\r\n }\r\n\r\n protected fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireServerEvent(eventName, {\r\n gridAction: this.getGridActionFromEventName(eventName),\r\n ...params,\r\n });\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n public async addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n addRowsCount: 1,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridAdd'),\r\n },\r\n });\r\n\r\n /**\r\n * Cuando no tengo la definición de la nueva fila, debo obtenerla.\r\n */\r\n const response = await res;\r\n if (response?.data?.gridXml) {\r\n /**\r\n * Si la definición vuelve del server, la establezco en una variable\r\n * local y la uso en el futuro, cada vez que se crea una nueva fila.\r\n */\r\n const xml = parseXml(response.data.gridXml) as TApiaGridDefinition;\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n this.newRowStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n } else {\r\n /**\r\n * En caso de error, tiro excepción con o sin mensaje, pero la excepción\r\n * es necesaria para detener el flujo actual.\r\n */\r\n throw new Error(\r\n !getWindow(this.form.execution).SERVER_MODE\r\n ? 'Something went wrong on the add row action.'\r\n : '',\r\n );\r\n }\r\n\r\n const addedRow = await this.addRowFromDefinitions(\r\n true,\r\n this.fieldsDefinitions.map((c, i) => ({\r\n ...c,\r\n ...this.newRowStates[i][0],\r\n })),\r\n );\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de agregar la fila en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridAdd')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptResult = await this.fireScriptEvent('gridAdd');\r\n\r\n if (!scriptResult || !(await res)?.data?.success) {\r\n (await addedRow).remove();\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }, !this.hasServerAjaxEventsOfType('gridAdd'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public closeEditionModal() {\r\n this._editionModalHandler?.close();\r\n this._editionModalHandler = null;\r\n this.refresh();\r\n }\r\n\r\n public async deleteAllRows() {\r\n this.cache.clear();\r\n\r\n return this.asyncAction(async () => {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n fireEvents: this.hasServerAjaxEventsOfType('gridDelete'),\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n this.controller.body.clear();\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.getIndex();\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index).sort((a, b) => b - a);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n let minIndex = Infinity;\r\n\r\n /**\r\n * Busco el mínimo índice de forma de poder restablecer la selección\r\n * luego de eliminar las filas.\r\n */\r\n deletingIndices.forEach((i) => {\r\n if (i < minIndex) {\r\n minIndex = i;\r\n }\r\n });\r\n\r\n this.cache.truncate(minIndex);\r\n\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridDelete'),\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n deletingIndices.forEach((c) =>\r\n this.controller.body.getRowByIndex(c).remove(),\r\n );\r\n for (let i = minIndex; i < this.controller.body.rows.length; i++) {\r\n this.controller.body.getRowByIndex(i).cells.forEach((c) => {\r\n if (c instanceof GridCell) {\r\n c.getField().definition.index = i;\r\n }\r\n });\r\n }\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridDelete')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptResult = await this.fireScriptEvent('gridAdd');\r\n\r\n if (!scriptResult || !(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridDelete'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async fireScriptEvent(eventName: GridEvents): Promise<boolean> {\r\n return super.fireScriptEvent(eventName);\r\n }\r\n\r\n public async fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters & { mutex: boolean },\r\n ): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n return super.fireEvent(eventName, params);\r\n }, params?.mutex);\r\n }\r\n\r\n public getAllColumns() {\r\n return [...Object.values(this.fieldsDefinitions)].map((f) =>\r\n this.tableController.body.rows.map((c) =>\r\n (c.getCellByColumnName(f.id) as GridCell).getField(),\r\n ),\r\n );\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n\r\n public getCurrentPage() {\r\n return 0;\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getField(field: string, index?: number): Field | Field[] | undefined {\r\n return (\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeName(field, index)\r\n );\r\n }\r\n\r\n public getFieldByAttributeId(\r\n attId: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getRowByFieldIndex(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.id === attId,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as FieldWithAttribute)\r\n ?.attribute.id === attId,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByAttributeName(\r\n attName: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getRowByFieldIndex(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.name === attName,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as FieldWithAttribute)\r\n ?.attribute.name === attName,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldById(\r\n id: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldIds.has(String(id))) {\r\n if (index !== undefined) {\r\n const found =\r\n this.cache.get(index, id) ||\r\n this.getRow(index)?.find((c) => c.definition.id === id);\r\n\r\n this.cache.set(index, id, found);\r\n\r\n return found;\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as Field)?.definition.id ===\r\n id,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByName(\r\n name: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find((c) => c.properties.name === name);\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as Field)?.properties\r\n .name === name,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public getRowByFieldIndex(index: number) {\r\n const row = this.tableController.body.rows.find(\r\n (c) =>\r\n (\r\n c.cells.find((current) => current instanceof GridCell) as GridCell\r\n )?.getField().definition.index === index,\r\n );\r\n if (row) {\r\n return row?.cells\r\n .filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getSelectedRows() {\r\n return this.tableController\r\n .getSelectedRows()\r\n .map((c) => this.getRow(c.getIndex()));\r\n }\r\n\r\n refreshColumnsVisibilities() {\r\n const shownColumns = new Set<string>();\r\n\r\n this.tableController.head.rows[0]?.cells.forEach((c) => {\r\n shownColumns.add(c.getState('colName'));\r\n });\r\n\r\n for (\r\n let i = 0;\r\n i < this.tableController.head.rows[0]?.cells.length || 0;\r\n i++\r\n ) {\r\n for (const row of this.tableController.head.rows) {\r\n const cell = row.cells[i];\r\n\r\n if (cell instanceof HeaderCell && cell.getState('isHidden')) {\r\n shownColumns.delete(cell.getState('colName'));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (const column of new Set(\r\n this.tableController.head.rows[0].cells.map((c) => c.getState('colName')),\r\n )) {\r\n this.tableController.toggleColumnVisibility(\r\n column,\r\n shownColumns.has(column),\r\n );\r\n }\r\n }\r\n\r\n public async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.state.isMaximized =\r\n localStorage.getItem(`${this.definition.id}__isMaximized`) === 'true';\r\n const headerRow = new Row('header');\r\n if (\r\n this.properties.gridForm ||\r\n (!this.properties.hideDelButton &&\r\n !this.properties.readonly &&\r\n !this.properties.inputAsText &&\r\n !this.getForm().definition.readOnly &&\r\n !this.getForm().definition.readonly)\r\n )\r\n headerRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => -1,\r\n () => {},\r\n ),\r\n );\r\n\r\n const hiddenColumns = new Set<string>();\r\n\r\n this.header.forEach((c) => {\r\n hiddenColumns.add(c.fldId);\r\n });\r\n\r\n for (const def of this.fieldsDefinitions) {\r\n if (!def.properties.visibilityHidden && def.fieldType !== 'hidden') {\r\n hiddenColumns.delete(def.id);\r\n }\r\n }\r\n\r\n for (let index = 0; index < this.initialStates[0]?.length || 0; index++) {\r\n await this.addRowFromDefinitions(\r\n false,\r\n this.fieldsDefinitions.map((c, i) => {\r\n return {\r\n ...c,\r\n ...this.initialStates[i][index],\r\n };\r\n }),\r\n );\r\n }\r\n\r\n this.header.forEach((col, i) => {\r\n let width = String(col.width || 200);\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n // if (hiddenColumns.has(col.fldId)) {\r\n // return;\r\n // }\r\n headerRow.addCell(\r\n new HeaderCell(this, {\r\n colName: col.fldId || String(i),\r\n content: col.label,\r\n domProperties: {\r\n style: { width, maxWidth: width },\r\n title: col.title,\r\n },\r\n properties: { col },\r\n isHidden: hiddenColumns.has(col.fldId),\r\n }),\r\n );\r\n });\r\n\r\n for (const column of hiddenColumns) {\r\n this.tableController.toggleColumnVisibility(column, false);\r\n }\r\n this.controller.head.addRow(headerRow);\r\n\r\n getDocument(this.form.execution).addEventListener?.('keydown', (ev) => {\r\n if (ev.code === 'Escape') {\r\n this.state.isMaximized = false;\r\n }\r\n });\r\n }\r\n\r\n public openEditionModal(handler: GridEditionModal) {\r\n this._editionModalHandler = handler;\r\n handler.open();\r\n }\r\n\r\n public async refresh() {\r\n return this.asyncAction(this.actualRefreshAction.bind(this));\r\n }\r\n\r\n public async sortColumn(fldId: string) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField: fldId,\r\n mutex: true,\r\n });\r\n return true;\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => b - a,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridSort'),\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'down');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptEvent = await this.fireScriptEvent('gridSort');\r\n\r\n if (\r\n !scriptEvent ||\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => a - b,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n fireEvents: this.hasServerAjaxEventsOfType('gridSort'),\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'up');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n const scriptEvent = await this.fireScriptEvent('gridSort');\r\n\r\n if (\r\n !scriptEvent ||\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.controller.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n public toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const row of this.tableController.body.rows) {\r\n for await (const cell of row.cells) {\r\n const field = cell.getState('properties')?.field;\r\n if (field instanceof Field) {\r\n const result = await field.validate();\r\n if (!result && isValid && !firstInvalid) {\r\n isValid = false;\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n\r\n protected async actualRefreshAction() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n });\r\n\r\n if (res?.data?.gridXml) {\r\n await this.rebuildGrid(res.data.gridXml);\r\n } else {\r\n throw new Error(\"The server didn't return a valid XML response.\");\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected async addRowFromDefinitions(\r\n select: boolean,\r\n definitions?: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {\r\n const pageSize = this.properties.pageSize;\r\n const offset = Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0; // When pageSize is Infinity, we treat it as a single page\r\n const index = this.tableController.body.rows.length + offset;\r\n\r\n if (!definitions) {\r\n definitions = this.fieldsDefinitions.map((current, columnIndex) => {\r\n this.getForm().addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.initialStates[columnIndex][0],\r\n };\r\n });\r\n }\r\n\r\n // Check if pageSize is finite\r\n\r\n const newRow = new Row(String(this.rowId++));\r\n if (\r\n this.properties.gridForm ||\r\n (!this.properties.hideDelButton &&\r\n !this.properties.readonly &&\r\n !this.properties.inputAsText &&\r\n !this.getForm().definition.readOnly &&\r\n !this.getForm().definition.readonly)\r\n )\r\n newRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => newRow.getIndex(),\r\n () => {\r\n this.deleteRows(newRow.getIndex());\r\n },\r\n this.properties.gridForm\r\n ? (handler) => {\r\n this.openEditionModal(handler);\r\n }\r\n : undefined,\r\n ),\r\n );\r\n this.tableController.body.addRow(newRow);\r\n\r\n for await (const field of definitions) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n const fieldProps = parseFakeJSON<TApiaFieldCommonProperties>(\r\n field.properties as any,\r\n );\r\n field.properties = fieldProps;\r\n\r\n const fieldConstructor =\r\n this.form.execution.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor({\r\n ...field,\r\n ...(field as any).fieldValue,\r\n index,\r\n });\r\n await newField.init(this.getForm());\r\n newField.setParentGrid(this);\r\n\r\n if (newField instanceof FieldWithAttribute) {\r\n this.managedAttIds.add(newField.attribute.id);\r\n this.managedAttNames.add(newField.attribute.name);\r\n }\r\n this.managedFieldIds.add(newField.definition.id);\r\n this.managedFieldsNames.add(newField.properties.name);\r\n\r\n if (!(newField instanceof Hidden)) {\r\n this.cache.set(index, newField.definition.id, newField);\r\n\r\n let width = String(\r\n this.header.find((c) => c.fldId === field.id)?.width || 250,\r\n );\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n\r\n newRow.addCell(\r\n new GridCell({\r\n colName: newField.definition.id,\r\n properties: { field: newField },\r\n }),\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n\r\n if (select) {\r\n this.tableController.clearSelection();\r\n this.tableController.toggleRowSelection(newRow, true);\r\n }\r\n\r\n return newRow;\r\n }\r\n\r\n protected async asyncAction<T>(\r\n cb: () => Promise<T>,\r\n mutex = true,\r\n ): Promise<T> {\r\n if (mutex) {\r\n await this.mutex.acquire();\r\n }\r\n try {\r\n this.state.isLoading = true;\r\n const res = await cb();\r\n return res;\r\n } finally {\r\n this.state.isLoading = false;\r\n if (mutex) {\r\n this.mutex.release();\r\n }\r\n }\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const { hideDelButton, shownDeleteButtons, shownEditionButtons, gridForm } =\r\n this.properties;\r\n const mustShowAdditionalColumn =\r\n (!hideDelButton &&\r\n [...shownDeleteButtons.values()].some((c) => c !== false)) ||\r\n (!!gridForm &&\r\n [...shownEditionButtons.values()].some((c) => c !== false));\r\n\r\n this.controller.toggleColumnVisibility(\r\n 'additional',\r\n mustShowAdditionalColumn,\r\n );\r\n }\r\n\r\n protected getRow(index: number) {\r\n return this.tableController.body\r\n .getRowByIndex(index)\r\n ?.cells.filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n protected async rebuildGrid(\r\n xmlString: string | TApiaGridDefinition,\r\n ): Promise<void> {\r\n const xml =\r\n typeof xmlString === 'string'\r\n ? (parseXml(xmlString) as TApiaGridDefinition)\r\n : (xmlString as TApiaGridDefinition);\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray: (\r\n | NonNullable<TApiaGridField['row']>\r\n | NonNullable<TApiaGridField['fieldValue']>\r\n )[][] = fieldsArray.map((field) =>\r\n arrayOrArray((field.fieldValue || field.row)!),\r\n );\r\n\r\n this.properties.pages = xml.pages || this.properties.pages;\r\n this.properties.currentPage = xml.curPage || this.properties.currentPage;\r\n this.properties.visibilityHidden =\r\n xml.properties.visibilityHidden ?? this.properties.visibilityHidden;\r\n\r\n if (statesArray[0].length > this.controller.body.rows.length) {\r\n for (\r\n let i = this.controller.body.rows.length;\r\n i < statesArray[0].length;\r\n i++\r\n ) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i,\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i]?.properties,\r\n value: statesArray[columnIndex][i]?.value,\r\n },\r\n };\r\n });\r\n\r\n await this.addRowFromDefinitions(false, parsedFieldGroups);\r\n }\r\n } else if (statesArray[0].length < this.controller.body.rows.length) {\r\n const removeIndices = new Array(\r\n this.controller.body.rows.length - statesArray[0].length,\r\n )\r\n .fill(0)\r\n .map((_, i) => i + statesArray[0].length);\r\n\r\n removeIndices\r\n .sort((a, b) => b - a)\r\n .forEach((i) => {\r\n this.controller.body.getRowByIndex(i)?.remove();\r\n });\r\n }\r\n\r\n statesArray.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const field = this.getFieldById(id, rowIndex) as Field | undefined;\r\n\r\n if (field) {\r\n const possibleValues = (state as TApiaGridField['row'])\r\n ?.possibleValue;\r\n if (possibleValues) {\r\n (field as Select).setProperty(\r\n 'possibleValue',\r\n arrayOrArray(possibleValues),\r\n );\r\n }\r\n\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = this.startIndex + rowIndex;\r\n if (field instanceof File) {\r\n field.loadFromDefinition((state as any).file_prp); // Apia trae esta prop para los files\r\n } else if (field instanceof ModalInput) {\r\n (field as ModalInput).setValue(\r\n {\r\n showValue:\r\n (state as TApiaGridField['fieldValue'])!.qry_show_value || '',\r\n storeValue: state.value || '',\r\n },\r\n { force: true },\r\n );\r\n } else if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false, force: true });\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.refreshColumnsVisibilities();\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n postData: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n this.form.execution,\r\n await makeApiaUrl(this.form.execution, {\r\n action: 'gridAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n ...postData,\r\n },\r\n );\r\n }\r\n\r\n private swapRows(rows: number[], direction: 'up' | 'down') {\r\n let min = Infinity;\r\n\r\n for (const i of rows) {\r\n min = Math.min(min, i);\r\n\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n\r\n const aRow = this.tableController.body.getRowByIndex(i);\r\n const bRow = this.tableController.body.getRowByIndex(swapIndex);\r\n\r\n // Solamente se ejecuta el swap si ambas filas existen\r\n if (aRow && bRow) {\r\n this.getRow(i).forEach((c) => {\r\n this.cache.clearIndex(c.definition.index!);\r\n this.cache.clearIndex(swapIndex);\r\n c.definition.index = swapIndex;\r\n });\r\n this.getRow(swapIndex).forEach((c) => (c.definition.index = i));\r\n\r\n this.tableController.body.swapRows(aRow, bRow);\r\n\r\n // Forzamos el estado de selección a refrescarse para que se actualicen los botones de subir y bajar\r\n const selection = this.tableController.getState('selection');\r\n selection.forEach((c) => c.toggleSelection(true));\r\n }\r\n }\r\n\r\n if (min < Infinity) {\r\n this.tableController\r\n .getPluginOfType(FocusControllerPlugin)\r\n ?.scrollIntoView(\r\n this.tableController.body.getRowByIndex(min)!.getState('id'),\r\n );\r\n }\r\n }\r\n\r\n public toggleMaximize() {\r\n this.state.isMaximized = !this.state.isMaximized;\r\n localStorage.setItem(\r\n `${this.definition.id}__isMaximized`,\r\n String(this.state.isMaximized),\r\n );\r\n }\r\n}\r\n","import { arrayOrArray, noNaN } from '@apia/util';\r\nimport { parseXml } from '../../../../../util';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { Grid } from '../Grid';\r\nimport type { GridActionResponse } from '../Grid/types';\r\nimport { Row } from '@apia/table2-controller';\r\n\r\nexport class GridPaginated extends Grid {\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN(\r\n (this.properties.currentPage - 1) * pageSize -\r\n 1 +\r\n this.controller.body.rows.length,\r\n 0,\r\n );\r\n }\r\n\r\n public addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridAdd')) {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n protected actualDeleteRows(props: {\r\n index?: number | number[];\r\n action?: string;\r\n }) {\r\n let index = props.index;\r\n const action = props.action ?? 'delete';\r\n\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridDelete')) {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.getIndex();\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index)\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: action,\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: action,\r\n rowId: deletingIndices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const minIndex = Math.min(...arrayOrArray(index));\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n\r\n let newSelectedRow: Row | undefined;\r\n\r\n if (currentPage === this.currentPage) {\r\n newSelectedRow =\r\n this.controller.body.rows[minIndex] ||\r\n this.controller.body.rows[minIndex - 1];\r\n } else {\r\n newSelectedRow = this.controller.body.rows.at(-1);\r\n }\r\n\r\n newSelectedRow?.toggleSelection(true);\r\n newSelectedRow?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async deleteAllRows() {\r\n return this.actualDeleteRows({ action: 'deleteAllRows' });\r\n }\r\n\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.actualDeleteRows({ index });\r\n }\r\n\r\n public async gotoPage(page: number): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page: page - 1,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices)\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.getIndex());\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c + 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows[0]?.scrollIntoView();\r\n this.controller.body.rows[0]?.toggleSelection(true);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices)\r\n .sort((a, b) => a - b)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: indices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.getIndex());\r\n\r\n const currentPage = this.currentPage;\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c - 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","import { TApiaImageProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Image extends Field<TApiaImageProperties> {}\r\n","import dayjs from 'dayjs';\r\nimport { getLabel, labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaInputDefinition } from '../../../../InitialData/types/fields/TApiaInputDefinition';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { SetValueOptions } from '../../types';\r\nimport { getDateFormat } from '@apia/util';\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport { TFireEventOptions } from '../../FieldWithAttribute';\r\n\r\n// Enable format-aware strict parsing so invalid dates (e.g., \"31/02/2025\") are rejected instead of auto-rolling to \"03/03/2025\".\r\ndayjs.extend(customParseFormat);\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\n\r\nexport class Input extends TranslatableField<\r\n TApiaInputProperties,\r\n string,\r\n TApiaInputDefinition\r\n> {\r\n private validDate = true;\r\n\r\n fireEvent(\r\n eventName: InputEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n public async setValue(\r\n newValue: string | Date | number,\r\n options?: SetValueOptions,\r\n ): Promise<boolean> {\r\n if (this.attribute.valueType === 'S') {\r\n if (!this.definition.regExp || this.validateRegex(String(newValue))) {\r\n if (String(newValue) !== '') this.state.validation.errorMessage = null;\r\n\r\n return super.setValue(String(newValue), options);\r\n }\r\n } else if (this.attribute.valueType === 'N') {\r\n super.setValue(String(newValue), options);\r\n } else if (this.attribute.valueType === 'D') {\r\n this.validDate = true;\r\n const inFmt = getDateFormat(options?.format);\r\n const outFmt = getDateFormat();\r\n\r\n // If it's a numeric timestamp string (e.g. \"1700000000000\" or \"1700000000\")\r\n if (typeof newValue === 'string') {\r\n const trimmed = newValue.trim();\r\n\r\n // Pure digits → treat as timestamp (seconds or milliseconds)\r\n if (/^\\d+$/.test(trimmed)) {\r\n const digits = trimmed.length;\r\n let ms = Number(trimmed);\r\n if (digits === 10) {\r\n // seconds -> ms\r\n ms = ms * 1000;\r\n }\r\n const d = dayjs(ms);\r\n if (!d.isValid() && trimmed !== '') {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n\r\n // Non-numeric string -> parse using provided input format (strict)\r\n const d = dayjs(trimmed, inFmt, true);\r\n if (!d.isValid() && trimmed !== '') {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n\r\n // If it's a numeric (number) -> treat as timestamp (ms)\r\n if (typeof newValue === 'number') {\r\n const d = dayjs(newValue);\r\n if (!d.isValid()) {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n\r\n if (newValue instanceof Date) {\r\n const d = dayjs(newValue);\r\n if (!d.isValid()) {\r\n this.state.validation.errorMessage = getLabel(\r\n this.getForm().execution,\r\n 'msgInvalidDate',\r\n ).text;\r\n this.validDate = false;\r\n }\r\n return super.setValue(d.isValid() ? d.format(outFmt) : '', options);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private validateRegex(value: string): boolean {\r\n if (!value) {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n\r\n const regex = new RegExp(this.definition.regExp ?? '');\r\n\r\n if (!regex.test(String(value)) && value !== '') {\r\n this.state.validation.errorMessage =\r\n this.properties.regExpMessage || labels.errorRegexNotValidated();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage && !this.validDate) return false;\r\n\r\n return super.validate();\r\n }\r\n\r\n protected isValidValue(): boolean {\r\n return !!String(this.getValue()).trim();\r\n }\r\n}\r\n","import { TApiaLabelProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaLabelDefinition } from '../../../../InitialData/types/fields/TApiaLabelDefinition';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Label extends Field<TApiaLabelProperties, TApiaLabelDefinition> {}\r\n","import { TApiaLinkProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Link extends Field<TApiaLinkProperties> {}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaMultipleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaMultipleDefinition } from '../../../../InitialData/types/fields/TApiaMultipleDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\n\r\nexport class Multiple extends FieldWithAttribute<\r\n TApiaMultipleProperties,\r\n string[]\r\n> {\r\n constructor({\r\n possibleValue,\r\n value,\r\n ...definition\r\n }: TApiaMultipleDefinition) {\r\n super({\r\n ...{\r\n ...definition,\r\n value: arrayOrArray(possibleValue)\r\n .filter((c) => c.selected)\r\n .map((c) => c.value),\r\n },\r\n properties: {\r\n ...definition.properties,\r\n possibleValue: arrayOrArray(possibleValue),\r\n },\r\n });\r\n }\r\n\r\n protected hasValue() {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n public setValue(\r\n newValue: string[],\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n return super.setValue(arrayOrArray(newValue), options);\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid =\r\n !!this.getValue()[0] ||\r\n !this.properties.required ||\r\n this.properties.inputAsText ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired(this.form.execution);\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n}\r\n","import { TApiaPasswordProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Password extends FieldWithAttribute<\r\n TApiaPasswordProperties,\r\n string\r\n> {\r\n protected isValidValue(): boolean {\r\n return !!String(this.getValue()).trim();\r\n }\r\n}\r\n","import { TApiaRadioProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaRadioButtonDefinition } from '../../../../InitialData/types/fields/TApiaRadioButtonDefinition';\r\nimport { Form } from '../../Form';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\ntype RadioEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Radio extends FieldWithAttribute<\r\n TApiaRadioProperties,\r\n number | string,\r\n TApiaRadioButtonDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaRadioButtonDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n await this.fireEvent('onPopulate');\r\n }\r\n\r\n fireEvent(\r\n eventName: RadioEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n public getTextValue(value: any) {\r\n return this.properties.possibleValue\r\n ? arrayOrArray(this.properties.possibleValue).find(\r\n (c) => c.value === value,\r\n )?.label\r\n : value;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { TApiaSelectProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaSelectDefinition } from '../../../../InitialData/types/fields/TApiaSelectDefinition';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\n\r\nexport class Select extends FieldWithAttribute<\r\n TApiaSelectProperties,\r\n string,\r\n TApiaSelectDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaSelectDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n possibleValue: arrayOrArray(possibleValue),\r\n },\r\n });\r\n }\r\n\r\n protected getInitialValue({\r\n properties: { possibleValue },\r\n }: TApiaFieldWithAttributeBaseProps<TApiaSelectProperties>): Promise<string> {\r\n return Promise.resolve(\r\n String(\r\n this.state.value !== ''\r\n ? this.state.value\r\n : (possibleValue?.find((c) => c.selected)?.value ??\r\n (possibleValue?.[0]?.value || '')),\r\n ),\r\n );\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: any,\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(String(value));\r\n return conf;\r\n }\r\n\r\n public getTextValue(value: any) {\r\n return this.properties.possibleValue\r\n ? arrayOrArray(this.properties.possibleValue).find(\r\n (c) => c.value === value,\r\n )?.label\r\n : value;\r\n }\r\n}\r\n","import { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaTextareaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class Textarea extends TranslatableField<\r\n TApiaTextareaProperties,\r\n string\r\n> {\r\n protected isValidValue(): boolean {\r\n return !!String(this.getValue()).trim();\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: string,\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n conf.postData!.clearValues = 'true';\r\n return conf;\r\n }\r\n}\r\n","import { TApiaTitleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Title extends Field<TApiaTitleProperties> {}\r\n","import type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport type { TApiaTreeProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type {\r\n TApiaTreeDefinition,\r\n TApiaTreePossibleValue,\r\n} from '../../../../InitialData/types/fields/TApiaTreeDefinition';\r\nimport {\r\n FieldWithAttribute,\r\n TFireEventOptions,\r\n} from '../../FieldWithAttribute';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { IMobXChildKeeper, MobXTree } from '@apia/tree2-controller';\r\nimport { Form } from '../../Form';\r\nimport { isFieldShowAsText } from '../../util/isFieldShowAsText';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\n\r\nexport type TTreeValue = string | number;\r\ntype TreeEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nfunction getValuesArray(tree: TApiaTreePossibleValue[]) {\r\n return tree.reduce((acc, curr) => {\r\n if (curr.selected) {\r\n acc.push(curr.value);\r\n }\r\n if (curr.possibleValue) {\r\n acc.push(...getValuesArray(arrayOrArray(curr.possibleValue)));\r\n }\r\n return acc;\r\n }, [] as TTreeValue[]);\r\n}\r\n\r\nexport class Tree extends FieldWithAttribute<\r\n TApiaTreeProperties,\r\n TTreeValue[],\r\n TApiaTreeDefinition\r\n> {\r\n controller: MobXTree = {} as MobXTree;\r\n\r\n private parseTreeValues(\r\n parent: IMobXChildKeeper,\r\n pv: TApiaTreePossibleValue | TApiaTreePossibleValue[] | undefined,\r\n ) {\r\n arrayOrArray(pv).forEach((c) => {\r\n const node = parent.create({\r\n id: String(c.value),\r\n initialState: {\r\n label: c.text,\r\n isSelected: this.state.value.find((s) => s === c.value) !== undefined,\r\n isSelectable:\r\n arrayOrArray(c.possibleValue).length === 0 ||\r\n this.properties.selParent,\r\n isExpanded: true,\r\n icon: () => {\r\n if (\r\n (this.properties.parentIcon && c.possibleValue) ||\r\n (this.properties.leafIcon && !c.possibleValue)\r\n ) {\r\n return null;\r\n }\r\n return null;\r\n },\r\n },\r\n });\r\n\r\n this.parseTreeValues(node, c.possibleValue);\r\n });\r\n }\r\n\r\n constructor({ possibleValue, ...props }: TApiaTreeDefinition) {\r\n super(props);\r\n this.properties.possibleValue = arrayOrArray(possibleValue);\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: TTreeValue[],\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n return {\r\n ...conf,\r\n postData: {\r\n ...conf.postData,\r\n clearValues: true,\r\n },\r\n };\r\n }\r\n\r\n fireEvent(\r\n eventName: TreeEvents,\r\n options?: TFireEventOptions,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, options);\r\n }\r\n\r\n protected hasValue(): boolean {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n setProperty<K extends keyof TApiaTreeProperties>(\r\n propName: K,\r\n propValue: TApiaTreeProperties[K],\r\n ) {\r\n if (propName === 'possibleValue') {\r\n this.controller.removeAllChildren();\r\n this.state.value = getValuesArray(\r\n arrayOrArray(propValue as any) as TApiaTreePossibleValue[],\r\n );\r\n this.parseTreeValues(\r\n this.controller,\r\n propValue as TApiaTreeProperties['possibleValue'],\r\n );\r\n }\r\n super.setProperty(propName, propValue);\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.state.value = getValuesArray(this.properties.possibleValue);\r\n\r\n this.controller = new MobXTree({\r\n onSelect: (ev) => {\r\n if (\r\n isFieldShowAsText(this) ||\r\n this.properties.disabled ||\r\n this.properties.readOnly ||\r\n this.properties.readonly ||\r\n this.getParentGrid()?.properties.readonly\r\n ) {\r\n return false;\r\n } else {\r\n const selection = [...ev.values()].map((c) => c.id);\r\n this.setValue(selection, { markAsDirty: false });\r\n if (selection.length === 0) {\r\n this.setValue([], { markAsDirty: false });\r\n }\r\n return true;\r\n }\r\n },\r\n isMultiple: this.properties.multiselect,\r\n toggleNodesOnLabelClick: !this.properties.selParent,\r\n });\r\n\r\n this.setProperty(\r\n 'possibleValue',\r\n arrayOrArray(this.properties.possibleValue),\r\n );\r\n }\r\n\r\n protected isValidValue() {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n public async setValue(\r\n newValue: TTreeValue[],\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n const res = await super.setValue(newValue, options);\r\n\r\n if (res) {\r\n this.controller.setSelectedNodes(new Set(newValue.map((c) => String(c))));\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n","import {\r\n Scheduler,\r\n TScheduleResult,\r\n TSchInfoResult,\r\n TTskSchDay,\r\n} from '@apia/scheduler-controller';\r\nimport { TApiaSchedulerProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { get, makeApiaUrl, post } from '../../../../../util';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport dayjs from 'dayjs';\r\nimport { getDateFormat } from '@apia/util';\r\n\r\nexport class SchedulerField extends Field<TApiaSchedulerProperties> {\r\n private _schedController: Scheduler | undefined = undefined;\r\n constructor(definition: TApiaFieldBaseDefinition<TApiaSchedulerProperties>) {\r\n super(definition);\r\n }\r\n\r\n async deleteDate() {\r\n const res = await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'clearExecutionSchedulerSelectedDay',\r\n }),\r\n );\r\n\r\n if (res?.data?.success) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get parsedInitialProperties() {\r\n const value = String(this.properties.value);\r\n let start = 0;\r\n let end = 0;\r\n start = value?.indexOf('loadSchedExec');\r\n start += 14;\r\n\r\n end = value?.indexOf(';</div>');\r\n end -= 1;\r\n\r\n const strParts = value\r\n ?.slice(start, end)\r\n .replaceAll(`'`, ``)\r\n .replaceAll(' ', '');\r\n const arrParts = strParts.split(',');\r\n\r\n return {\r\n schId: arrParts[1],\r\n proId: arrParts[2],\r\n proVerId: arrParts[3],\r\n tskId: arrParts[4],\r\n showDisponibility: arrParts[5],\r\n showAttributes: arrParts[6],\r\n };\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this._schedController = new Scheduler(\r\n this.parsedInitialProperties,\r\n {\r\n loadWeek: this.loadWeek.bind(this),\r\n deleteDate: this.deleteDate.bind(this),\r\n markDay: this.markDay.bind(this),\r\n loadInfo: this.loadInfo.bind(this),\r\n selectDayHandler: this.selectDayHandler.bind(this),\r\n },\r\n 'Scheduler',\r\n getWindow(this.getForm().execution),\r\n );\r\n if (this._schedController) this._schedController.loadWeek();\r\n }\r\n\r\n async loadWeek(\r\n weekDay: string,\r\n schId: string,\r\n proId: string,\r\n proVerId: string,\r\n tskId: string,\r\n ) {\r\n const res = await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'getExecutionSchedulerWeek',\r\n weekDay,\r\n schId,\r\n proId,\r\n proVerId,\r\n tskId,\r\n }),\r\n );\r\n return res?.data ?? null;\r\n }\r\n\r\n async loadInfo(\r\n schId: string,\r\n weekDay: string,\r\n dayNumber: number,\r\n hour: string,\r\n ) {\r\n const res = await post<TSchInfoResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'getExecutionSchedulerDayInfo',\r\n schId,\r\n weekDay,\r\n dayNumber,\r\n hour,\r\n }),\r\n );\r\n return res?.data?.pro_instances?.pro_instance ?? [];\r\n }\r\n\r\n async markDay(weekDay: string, hour: string, dayNumber: number) {\r\n await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'setExecutionSchedulerSelectedDay',\r\n weekDay,\r\n hour,\r\n dayNumber,\r\n }),\r\n );\r\n }\r\n async selectDayHandler({\r\n cellId,\r\n currentDayDefinition,\r\n dayNumber,\r\n hour,\r\n weekDay,\r\n }: {\r\n cellId: string;\r\n weekDay: string;\r\n dayNumber: number;\r\n hour: string;\r\n currentDayDefinition: TTskSchDay;\r\n }) {\r\n await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'setExecutionSchedulerSelectedDay',\r\n weekDay,\r\n hour,\r\n dayNumber,\r\n }),\r\n )\r\n .then((response) => {\r\n if (response?.data?.success) {\r\n this._schedController?.setState({\r\n ...this._schedController.state,\r\n selectedCell: cellId,\r\n selectedDay: {\r\n hour: String(hour),\r\n day: dayjs(weekDay, getDateFormat())\r\n .add(Number(dayNumber) - 1, 'day')\r\n .format(getDateFormat()),\r\n mondayWeek: String(\r\n dayjs(weekDay, getDateFormat()).format(getDateFormat()),\r\n ),\r\n dayNumber: Number(dayNumber),\r\n morningOrAfternoonSelected: Number(hour),\r\n },\r\n });\r\n if (currentDayDefinition) {\r\n this._schedController?.syncStage(\r\n currentDayDefinition,\r\n Number(hour),\r\n );\r\n }\r\n }\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n get schedController() {\r\n return this._schedController;\r\n }\r\n}\r\n","const FieldConstants = Object.freeze({\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n\r\n // Mensajes de error\r\n WRONG_ATT_TYPE_ERROR:\r\n 'Component does not support attributes of type <TOK>. Contact system administrator',\r\n\r\n // Keys almacenadas en los campos\r\n STORE_KEY_FIELD: 'field',\r\n STORE_KEY_FORM: 'form',\r\n\r\n PROPERTY_ARIA_DESCRIPTION: 'ariaDescription',\r\n PROPERTY_ARIA_LABEL: 'ariaLabel',\r\n PROPERTY_ALT: 'alt',\r\n PROPERTY_AUTO_COMPLETE: 'autoComplete',\r\n PROPERTY_AUTO_FOCUS: 'autoFocus',\r\n PROPERTY_INPUT_TYPE: 'inputType',\r\n PROPERTY_PLACE_HOLDER: 'placeHolder',\r\n PROPERTY_TITLE: 'title',\r\n});\r\n\r\nexport default FieldConstants;\r\n","const FormConstants = Object.freeze({\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n});\r\n\r\nexport default FormConstants;\r\n","import FieldConstants from './FieldConstants';\r\nimport FormConstants from './FormConstants';\r\n\r\nexport const IProperty = {\r\n ...FieldConstants,\r\n ...FormConstants,\r\n} as const;\r\n","import { makeAutoObservable } from 'mobx';\r\n\r\nexport class ActionsController {\r\n static CONFIRM = 0;\r\n static NEXT = 1;\r\n static PREVIOUS = 2;\r\n static SIGN = 3;\r\n static SAVE = 4;\r\n static RELEASE = 5;\r\n static DELEGATE = 6;\r\n static SHARE = 7;\r\n static PRINT = 8;\r\n static VIEW_DOCS = 9;\r\n static CLOSE = 10;\r\n static SEND_TO_DESK = 11;\r\n\r\n static BTN_CONFIRM = ActionsController.CONFIRM;\r\n static BTN_DELEGATE = ActionsController.DELEGATE;\r\n static BTN_NEXT = ActionsController.NEXT;\r\n static BTN_PERV = ActionsController.PREVIOUS;\r\n static BTN_RELEASE = ActionsController.RELEASE;\r\n static BTN_SAVE = ActionsController.SAVE;\r\n static BTN_SHARE = ActionsController.SHARE;\r\n static BTN_SIGN = ActionsController.SIGN;\r\n\r\n private static _instance: ActionsController;\r\n public static get instance(): ActionsController {\r\n if (!ActionsController._instance) {\r\n ActionsController._instance = new ActionsController();\r\n }\r\n return ActionsController._instance;\r\n }\r\n private constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n private buttons = new Map<number, { disabled?: boolean; hidden?: boolean }>();\r\n\r\n private get(id: number) {\r\n if (!this.buttons.has(id)) {\r\n this.buttons.set(id, {});\r\n }\r\n return this.buttons.get(id)!;\r\n }\r\n\r\n public disable(id: number) {\r\n this.get(id).disabled = true;\r\n }\r\n public enable(id: number) {\r\n this.get(id).disabled = false;\r\n }\r\n public hide(id: number) {\r\n this.get(id).hidden = true;\r\n }\r\n public isDisabled(id: number) {\r\n return !!this.get(id).disabled;\r\n }\r\n public isHidden(id: number) {\r\n return !!this.get(id).hidden;\r\n }\r\n public show(id: number) {\r\n this.get(id).hidden = false;\r\n }\r\n}\r\n","import type { Execution } from '../main/Execution';\r\nimport { Field } from '../main/Execution/FormsExecution/Field';\r\nimport { ApiaForm } from './ApiaForm';\r\nimport FieldConstants from './constants/FieldConstants';\r\nimport type { IApiaField } from './types';\r\n\r\nexport abstract class ApiaField<\r\n Props extends typeof FieldConstants = typeof FieldConstants,\r\n> implements IApiaField<Props>\r\n{\r\n #execution: Execution;\r\n #field: Field<any>;\r\n\r\n constructor(execution: Execution, field: Field<any>) {\r\n this.#execution = execution;\r\n this.#field = field;\r\n }\r\n\r\n get fldType() {\r\n return this.#field.definition.fieldType;\r\n }\r\n\r\n get fldId() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n get form() {\r\n return new ApiaForm(this.#execution, this.#field.getForm());\r\n }\r\n\r\n get index() {\r\n return this.#field.definition.index || 0;\r\n }\r\n\r\n setProperty<K extends keyof Props>(name: Props[K], value: unknown) {\r\n this.#field.setProperty(name as any, value);\r\n }\r\n\r\n getProperty<K extends keyof Props>(name: Props[K]): unknown {\r\n return this.#field.getProperty(name as any);\r\n }\r\n\r\n setFocus(): IApiaField | null {\r\n throw new Error('Method not implemented. ');\r\n }\r\n isInGrid(): boolean {\r\n return !!this.#field.properties.inGrid;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Button } from '../../main/Execution/FormsExecution/fields';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface TTextFieldProperties extends TApiaFieldCommonProperties {\r\n value?: string;\r\n}\r\nexport interface IButtonField extends IApiaField {\r\n fireClickEvent(): void;\r\n getValue(): string | null;\r\n}\r\n\r\nexport default class ButtonField extends ApiaField implements IButtonField {\r\n #field: Button;\r\n\r\n constructor(execution: Execution, field: Button) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n fireClickEvent(): void {\r\n if (this.#field.definition.id) {\r\n this.#field.fireEvent('onClick');\r\n }\r\n }\r\n\r\n getValue(): string | null {\r\n if (this.#field.definition.id) {\r\n return this.#field.properties.value ?? '';\r\n }\r\n return null;\r\n }\r\n\r\n clearValue(): void {\r\n this.#field.properties.value = '';\r\n }\r\n\r\n setValue(value: string): void {\r\n this.setProperty('value', value);\r\n }\r\n}\r\n","import type { Execution } from '../main/Execution';\r\nimport type {\r\n Attribute,\r\n FieldWithAttribute,\r\n} from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { SetValueOptions } from '../main/Execution/FormsExecution/types';\r\nimport type { TApiaFieldWithAttributeProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaField } from './ApiaField';\r\n\r\nexport class ApiaAttribute {\r\n #attribute: Attribute;\r\n constructor(attribute: Attribute) {\r\n this.#attribute = attribute;\r\n }\r\n\r\n get attLabel() {\r\n return this.#attribute.title;\r\n }\r\n\r\n get name() {\r\n return this.#attribute.name;\r\n }\r\n get id() {\r\n return this.#attribute.id;\r\n }\r\n get valueType() {\r\n return this.#attribute.valueType;\r\n }\r\n}\r\n\r\nexport class ApiaFieldWithAttribute<T = string | boolean> extends ApiaField {\r\n #field: FieldWithAttribute;\r\n\r\n constructor(execution: Execution, field: FieldWithAttribute) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n get attribute() {\r\n return new ApiaAttribute(this.#field.attribute);\r\n }\r\n\r\n clearValue() {\r\n this.#field.setValue('');\r\n }\r\n\r\n getValue() {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: T) {\r\n this.#field.setValue(v);\r\n }\r\n protected _setValue(v: T, options: SetValueOptions) {\r\n this.#field.setValue(v, options);\r\n }\r\n\r\n getLabel(): string | null | void {\r\n return this.#field.attribute.title;\r\n }\r\n\r\n getProperty<K extends keyof TApiaFieldWithAttributeProperties>(\r\n name: TApiaFieldWithAttributeProperties[K],\r\n ): unknown {\r\n return super.getProperty(name as any);\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class EditorField extends ApiaFieldWithAttribute {}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Select } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport type TOptionsAsArray = PossibleValue[];\r\n\r\nexport default class SelectField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Select;\r\n constructor(execution: Execution, field: Select) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions() {\r\n return arrayOrArray(this.#field.properties.possibleValue);\r\n }\r\n\r\n getTextValue(value: string) {\r\n return this.#field.getTextValue(value);\r\n }\r\n\r\n // adds a option to the select field\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n label: showValue,\r\n });\r\n }\r\n }\r\n\r\n // overwrite all options in select field\r\n setOptions(optionsArray: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = arrayOrArray(optionsArray);\r\n }\r\n }\r\n\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n\r\n // get selected option either as array or object key/value\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n const arr = arrayOrArray(this.#field.properties.possibleValue);\r\n if (this.#field.definition.id) {\r\n if (asObject) {\r\n let obj = null;\r\n arr.forEach((c) => {\r\n if (c.selected) {\r\n obj = c;\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return arrayOrArray(arr.find((c) => c.selected));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedText(): string | null {\r\n if (this.#field.definition.id) {\r\n return (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.selected,\r\n )?.label ?? ''\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // // remove all select options\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Input } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class InputField extends ApiaFieldWithAttribute {\r\n #field: Input;\r\n constructor(execution: Execution, field: Input) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): number | string | boolean | null {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: string): void {\r\n if (this.#field.attribute.valueType === 'D') {\r\n this.#field.setValue(v, { format: 'd/m/Y' });\r\n } else {\r\n this.#field.setValue(v);\r\n }\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { Tree } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport default class TreeField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Tree;\r\n constructor(execution: Execution, field: Tree) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n setValue(v: string | number | (string | number)[]): void {\r\n this.#field.setValue(arrayOrArray(v));\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { isTrue } from '@apia/util';\r\n\r\nexport default class CheckField extends ApiaFieldWithAttribute {\r\n clearValue(): void {\r\n this.setValue(false);\r\n }\r\n\r\n setValue(value: string | boolean | number): void {\r\n // accepts 1/0 or true/false as values\r\n let val;\r\n const isBool = isTrue(value as unknown as string);\r\n if (isBool === true || isBool === false) {\r\n val = isBool;\r\n } else {\r\n throw new Error(\r\n 'Apia JSApi Error: The function setValue for a Checkbox field only accepts boolean or string type for value parameter.',\r\n );\r\n }\r\n super.setValue(val);\r\n }\r\n}\r\n","import { PossibleValue } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Radio } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class RadioField extends ApiaFieldWithAttribute {\r\n #field: Radio;\r\n constructor(execution: Execution, field: Radio) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions() {\r\n return arrayOrArray(this.#field.properties.possibleValue);\r\n }\r\n\r\n clearOptions(): void | null {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = [];\r\n }\r\n }\r\n\r\n getTextValue(value: string) {\r\n return this.#field.getTextValue(value);\r\n }\r\n\r\n addOption(\r\n radioValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n const isValueIsRepeated = radioValues.some((c) => {\r\n return c.value === radioValue.toString();\r\n });\r\n\r\n if (allowRepeatedValue || !isValueIsRepeated) {\r\n radioValues.push({\r\n value: radioValue.toString(),\r\n label: showValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setOptions(options: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = options;\r\n }\r\n }\r\n\r\n removeOption(radioValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== radioValue,\r\n );\r\n }\r\n }\r\n\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue | null {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n const selected = radioValues.find((c) => c.selected);\r\n if (!selected) return null;\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n options.set(String(selected?.value), selected);\r\n return options;\r\n } else {\r\n return selected;\r\n }\r\n }\r\n\r\n getSelectedText(): string | undefined | null {\r\n if (this.#field.definition.id) {\r\n const possibleValue = arrayOrArray(this.#field.properties.possibleValue);\r\n if (possibleValue) {\r\n return possibleValue.find((c) => c.selected)?.label;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Multiple } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class MultipleField extends ApiaFieldWithAttribute<string[]> {\r\n #field: Multiple;\r\n constructor(execution: Execution, field: Multiple) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n label: showValue,\r\n });\r\n }\r\n }\r\n setValue(value: string[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.setValue(value);\r\n }\r\n }\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const selected = arrayOrArray(\r\n this.#field.properties.possibleValue,\r\n ).filter((c) => c.selected);\r\n\r\n if (selected) {\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n selected.forEach((c) => options.set(String(c.value), c));\r\n return options;\r\n }\r\n\r\n return selected;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getOptions() {\r\n return arrayOrArray(this.#field.properties.possibleValue);\r\n }\r\n\r\n setOptions(optionsArray: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = arrayOrArray(optionsArray);\r\n }\r\n }\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class HiddenField extends ApiaFieldWithAttribute {}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class AreaField extends ApiaFieldWithAttribute {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Image } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IImageField extends IApiaField {\r\n getValue(): null;\r\n setValue(): null;\r\n getLabel(): void;\r\n clearValue(): null;\r\n}\r\n\r\nexport default class ImageField extends ApiaField implements IImageField {\r\n #field: Image;\r\n constructor(execution: Execution, field: Image) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n\r\n getValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Link } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ILinkField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class LinkField extends ApiaField implements ILinkField {\r\n #field: Link;\r\n constructor(execution: Execution, field: Link) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n if (this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ITextField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class TextField extends ApiaField implements ITextField {\r\n #field: Field;\r\n constructor(execution: Execution, field: Field) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n setValue(value: string): void {\r\n this.setProperty('value', value);\r\n }\r\n\r\n getValue(): any {\r\n return this.#field.properties.value;\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport class CustomComponentField {\r\n #field: CustomComponent;\r\n constructor(field: CustomComponent) {\r\n this.#field = field;\r\n }\r\n\r\n fireEvent(name: string) {\r\n this.#field.fireEvent(name);\r\n }\r\n getProperty(name: string): any {\r\n return this.#field.getProperty(name);\r\n }\r\n setFocus(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isInGrid(): boolean {\r\n return false;\r\n }\r\n getStringValue(attName: string) {\r\n return this.#field.getStringValue(attName);\r\n }\r\n getValue(attName: string, index = 0) {\r\n return this.#field.getValue(attName, index);\r\n }\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: any,\r\n ): void {\r\n this.#field.setProperty(name, value);\r\n }\r\n setStringValue(attName: string, value: string) {\r\n return this.#field.setStringValue(attName, value);\r\n }\r\n setValue(attName: string, value: any, index = 0) {\r\n return this.#field.setValue(attName, value, index);\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { ModalInput } from '../../main/Execution/FormsExecution/fields';\r\nimport type {\r\n Button,\r\n Captcha,\r\n Checkbox,\r\n Editor,\r\n File,\r\n Grid,\r\n Hidden,\r\n Image,\r\n Input,\r\n Label,\r\n Link,\r\n Multiple,\r\n Password,\r\n Radio,\r\n Select,\r\n Textarea,\r\n Title,\r\n Tree,\r\n} from '../../main/Execution/FormsExecution/fields';\r\nimport FieldConstants from '../constants/FieldConstants';\r\nimport {\r\n ButtonField,\r\n CaptchaField,\r\n CheckField,\r\n EditorField,\r\n FileUploaderField,\r\n HiddenField,\r\n ImageField,\r\n InputField,\r\n LinkField,\r\n ModalInputField,\r\n MultipleField,\r\n PasswordField,\r\n RadioField,\r\n SelectField,\r\n TextAreaField,\r\n TextField,\r\n TreeField,\r\n} from '../fields';\r\nimport { CustomComponentField } from '../fields/CustomComponentField';\r\nimport GridField from '../fields/GridField';\r\nimport type { IApiaField } from '../types';\r\nimport type { TCreateNewField } from './asynCreateApiaField';\r\n\r\nexport const createNewField: TCreateNewField = (\r\n execution: Execution,\r\n field,\r\n) => {\r\n if (field instanceof CustomComponent) {\r\n return new CustomComponentField(field) as any;\r\n } else {\r\n const { fieldType } = field.definition;\r\n let newField: IApiaField<any> | null = null;\r\n\r\n if (field instanceof ModalInput) {\r\n return new ModalInputField(execution, field as ModalInput);\r\n }\r\n\r\n switch (fieldType) {\r\n case FieldConstants.TYPE_INPUT:\r\n newField = new InputField(execution, field as Input);\r\n break;\r\n case FieldConstants.TYPE_PASSWORD:\r\n newField = new PasswordField(execution, field as Password);\r\n break;\r\n case FieldConstants.TYPE_SELECT:\r\n newField = new SelectField(execution, field as Select);\r\n break;\r\n case FieldConstants.TYPE_RADIO:\r\n newField = new RadioField(execution, field as Radio);\r\n break;\r\n case FieldConstants.TYPE_CHECK:\r\n newField = new CheckField(execution, field as Checkbox);\r\n break;\r\n case FieldConstants.TYPE_BUTTON:\r\n newField = new ButtonField(execution, field as Button);\r\n break;\r\n case FieldConstants.TYPE_MULTIPLE:\r\n newField = new MultipleField(execution, field as Multiple);\r\n break;\r\n case FieldConstants.TYPE_HIDDEN:\r\n newField = new HiddenField(execution, field as Hidden);\r\n break;\r\n case FieldConstants.TYPE_AREA:\r\n newField = new TextAreaField(execution, field as Textarea);\r\n break;\r\n case FieldConstants.TYPE_GRID:\r\n newField = new GridField(execution, field as Grid);\r\n break;\r\n case FieldConstants.TYPE_IMAGE:\r\n newField = new ImageField(execution, field as Image);\r\n break;\r\n case FieldConstants.TYPE_HREF:\r\n newField = new LinkField(execution, field as Link);\r\n break;\r\n case FieldConstants.TYPE_LABEL:\r\n newField = new TextField(execution, field as Label);\r\n break;\r\n case FieldConstants.TYPE_TITLE:\r\n newField = new TextField(execution, field as Title);\r\n break;\r\n case FieldConstants.TYPE_FILE:\r\n newField = new FileUploaderField(execution, field as File);\r\n break;\r\n case FieldConstants.TYPE_CAPTCHA:\r\n newField = new CaptchaField(execution, field as Captcha);\r\n break;\r\n case FieldConstants.TYPE_TREE:\r\n newField = new TreeField(execution, field as Tree);\r\n break;\r\n case FieldConstants.TYPE_EDITOR:\r\n newField = new EditorField(execution, field as Editor);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return newField;\r\n }\r\n};\r\n","import { ApiaField } from '../ApiaField';\r\nimport { arrayOrArray, Mutex, noNaN } from '@apia/util';\r\nimport { createNewField } from '../utils/createApiaField';\r\nimport { Grid } from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\nimport { getWindow } from '../../util/dom/getWindow';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport default class GridField extends ApiaField {\r\n #execution: Execution;\r\n #field: Grid;\r\n\r\n constructor(execution: Execution, field: Grid) {\r\n super(execution, field);\r\n this.#execution = execution;\r\n this.#field = field;\r\n }\r\n\r\n #mutex = new Mutex();\r\n\r\n async addRow(): Promise<IApiaField[]> {\r\n try {\r\n await this.#mutex.acquire();\r\n const result = await this.#field.addRow();\r\n\r\n if (result) {\r\n return this.getRow(this.#field.finalIndex)!;\r\n }\r\n\r\n return [];\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n clearGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n clearPage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async clearRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n\r\n const row = this.#field.getRowByFieldIndex(index);\r\n\r\n if (!row) {\r\n throw new Error(`Row ${index} not found`);\r\n }\r\n\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n closeForm(): GridField {\r\n this.#field.closeEditionModal();\r\n return this;\r\n }\r\n\r\n async deleteAllRows() {\r\n try {\r\n await this.#mutex.acquire();\r\n await this.#field.deleteAllRows();\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n async deleteGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n deletePage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async deleteRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n this.#field.deleteRows(index);\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n editRow(index: number) {\r\n getWindow(this.#execution).dispatchEvent(\r\n new CustomEvent('openGridEdition', {\r\n detail: { index, grid: this.#field },\r\n }),\r\n );\r\n }\r\n\r\n getSelectedIndexes(useAbsoluteIndex?: boolean) {\r\n return this.#field.controller\r\n .getSelectedRows()\r\n .map(\r\n (row) =>\r\n row.getIndex() +\r\n (useAbsoluteIndex ? +noNaN(this.#field.startIndex) : 0),\r\n );\r\n }\r\n\r\n getAllColumns() {\r\n return this.#field\r\n .getAllColumns()\r\n .map((c) =>\r\n c.map((f) => createNewField(this.#field.getForm().execution, f)),\r\n );\r\n }\r\n\r\n getColumn(fieldName: string) {\r\n const fields = this.#field.getColumn(fieldName);\r\n if (fields) {\r\n return arrayOrArray(fields).map((c) =>\r\n createNewField(this.#field.getForm().execution, c!),\r\n );\r\n }\r\n return [];\r\n }\r\n\r\n getCurrentPage() {\r\n return this.#field.getCurrentPage();\r\n }\r\n\r\n getField(fieldName: string, fieldIndex?: number) {\r\n const fields = this.#field.getField(fieldName, fieldIndex);\r\n\r\n if (fields) {\r\n return fieldIndex !== undefined\r\n ? createNewField(\r\n this.#field.getForm().execution,\r\n arrayOrArray(fields)[0]!,\r\n )\r\n : arrayOrArray(fields)\r\n .map((c) => createNewField(this.#field.getForm().execution, c))\r\n .filter((c): c is IApiaField => Boolean(c));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getPageCount() {\r\n return this.#field.pageCount;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field\r\n .getRowByFieldIndex(index)\r\n ?.map((c) => createNewField(this.#field.getForm().execution, c)!);\r\n }\r\n\r\n getSelection(): IApiaField[][] {\r\n const selected = this.#field.getSelectedRows();\r\n const returnObj: IApiaField[][] = [];\r\n selected.forEach((r) => {\r\n const row: IApiaField[] = [];\r\n r.forEach((c) => {\r\n const fld = createNewField(this.#field.getForm().execution, c);\r\n if (fld) {\r\n row.push(fld);\r\n }\r\n });\r\n returnObj.push(row);\r\n });\r\n return returnObj;\r\n }\r\n\r\n get id() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n isPaged() {\r\n return this.#field.properties.paged;\r\n }\r\n\r\n get rowsCount() {\r\n return this.#field.length;\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.#field.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n toggleDeleteButton(index: number, isShown?: boolean) {\r\n this.#field.toggleDeleteButton(index, isShown);\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n this.#field.toggleEditFormButton(rowIndex, isShown);\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TCaptchaField = IApiaField;\r\n\r\nexport default class CaptchaField extends ApiaField implements TCaptchaField {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { File } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { reaction } from 'mobx';\r\n\r\nexport default class FileUploaderField extends ApiaFieldWithAttribute {\r\n #field: File;\r\n constructor(execution: Execution, field: File) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n onChange(cb: (newValue: unknown) => unknown) {\r\n reaction(\r\n () => {\r\n this.#field.getValue();\r\n },\r\n () => {\r\n cb(this.#field.getValue());\r\n },\r\n { fireImmediately: false },\r\n );\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id && this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n async downloadDocument(): Promise<void> {\r\n await this.#field.downloadDocument();\r\n }\r\n\r\n getValue() {\r\n return this.#field.uploader?.filesArray?.[0]?.docName ?? '';\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\n\r\nexport default class PasswordField extends ApiaField {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { ModalInput } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class ModalInputField extends ApiaFieldWithAttribute {\r\n #field: ModalInput;\r\n constructor(execution: Execution, field: ModalInput) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): any | null {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: any): void {\r\n this.#field.setValue(v);\r\n }\r\n public async setValueFromInputWrite(value: string) {\r\n await this.#field.setValueFromInputWrite(value);\r\n }\r\n}\r\n","import { DataGridField as GridField } from './fields';\r\nimport type { IApiaField, IApiaForm } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from './ApiaFieldWithAttribute';\r\nimport { createNewField } from './utils/createApiaField';\r\nimport type { Form } from '../main/Execution/FormsExecution/Form';\r\nimport type { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { Field } from '../main/Execution/FormsExecution/Field';\r\nimport type { Execution, TModalSize } from '../main/Execution';\r\nimport FormConstants from './constants/FormConstants';\r\n\r\nexport class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n #execution: Execution;\r\n constructor(execution: Execution, form: Form) {\r\n this.#form = form;\r\n this.#execution = execution;\r\n }\r\n\r\n getFrmParent(): string {\r\n return this.#form.definition.frmParent;\r\n }\r\n\r\n getFrmId(): string | null {\r\n return this.#form.definition.id;\r\n }\r\n\r\n getFormName(): string {\r\n return this.#form.definition.formName;\r\n }\r\n getFormTitle(): string {\r\n return this.#form.definition.formTitle;\r\n }\r\n openForm(): void {\r\n this.#form.setProperty('prpFrmClosed', false);\r\n }\r\n closeForm(): void {\r\n this.#form.setProperty('prpFrmClosed', true);\r\n }\r\n getProperty<K extends keyof typeof FormConstants>(\r\n name: (typeof FormConstants)[K],\r\n ): unknown {\r\n return this.#form.getProperty(name as any);\r\n }\r\n setProperty<K extends keyof typeof FormConstants>(\r\n name: (typeof FormConstants)[K],\r\n value: unknown,\r\n ): void {\r\n if (name === 'readOnly') {\r\n throw new Error('Cannot update readonly property on forms');\r\n }\r\n this.#form.setProperty(name, value as any);\r\n }\r\n getCustomComponent(attName: string) {\r\n return this.#form.getCustomComponentByAttName(attName);\r\n }\r\n getField(fld: string | number, index?: number): IApiaField | undefined {\r\n const field = this.#form.getField(fld as string, index);\r\n\r\n if (field) {\r\n return createNewField(this.#execution, field as FieldWithAttribute)!;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(fldId: string) {\r\n const field = this.#form.getFieldById(fldId);\r\n\r\n if (field) {\r\n return createNewField(this.#execution, field as Field);\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldColumn(name: string): IApiaField[] {\r\n return arrayOrArray(this.#form.getFieldByName(name))\r\n .map((c) => createNewField(this.#execution, c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n getAllFields(): IApiaField[] {\r\n return this.#form.allFields\r\n .map((c) => createNewField(this.#execution, c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n clearForm(clearReadonlyFields: boolean, deleteGridsRows: boolean): void {\r\n this.getAllFields().forEach((c) => {\r\n if (deleteGridsRows && c instanceof GridField) {\r\n c.clearGrid();\r\n }\r\n\r\n if (c instanceof ApiaFieldWithAttribute) {\r\n if (!c.getProperty('readonly') || clearReadonlyFields) {\r\n c.setValue('');\r\n }\r\n }\r\n });\r\n }\r\n\r\n hideModal() {\r\n this.#execution.emit('hideFormModal', this.#form);\r\n }\r\n\r\n showAsModal(size: TModalSize = 'finder') {\r\n this.#execution.emit('showFormAsModal', { form: this.#form, size });\r\n }\r\n\r\n renderComponent(componentName: string, el: HTMLElement) {\r\n this.#execution.emit('renderComponent', {\r\n form: this.#form,\r\n componentName,\r\n el,\r\n });\r\n }\r\n}\r\n","import { ActionsController } from './ActionController';\r\nimport type { IApiaField, IApiaForm, IApiaFunctions } from './types';\r\nimport { ApiaForm } from './ApiaForm';\r\nimport type { TFrmParent } from '../main/InitialData/types/TApiaForm';\r\nimport { Execution } from '../main/Execution';\r\nimport { getWindow } from '../util/dom/getWindow';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\ndeclare global {\r\n interface Window {\r\n lastModalReturn: string[];\r\n }\r\n}\r\n\r\nexport class ApiaFunctions implements IApiaFunctions {\r\n #execution: Execution;\r\n\r\n constructor(execution: Execution) {\r\n this.#execution = execution;\r\n }\r\n\r\n toJSNumber(_value: string): number | string {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n toApiaNumber(_value: number): number | string {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n openTab(_title: string, _url: string): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n showMessage(_text: string): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n showConfirm(\r\n _text: string,\r\n _title: string,\r\n _callbackFn: (win: boolean) => unknown,\r\n ): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n\r\n getFormByType(frmName: string, frmType: TFrmParent): IApiaForm | null {\r\n const form = this.#execution.getFormByName(frmName, frmType);\r\n if (form) return new ApiaForm(this.#execution, form);\r\n return null;\r\n }\r\n\r\n admEntity(\r\n entName: string,\r\n entNum?: number,\r\n parameters?: Record<string, string>,\r\n width?: number,\r\n height?: number,\r\n ) {\r\n this.#execution.emit('adminEntity', {\r\n entName,\r\n entNum,\r\n parameters,\r\n width,\r\n height,\r\n });\r\n }\r\n\r\n clearMessages() {}\r\n\r\n clickActionButton(button: number) {\r\n const id = Number(button);\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n this.#execution.flow.confirm();\r\n break;\r\n case ActionsController.NEXT:\r\n this.#execution.flow.next();\r\n break;\r\n case ActionsController.PREVIOUS:\r\n this.#execution.flow.back();\r\n break;\r\n case ActionsController.SAVE:\r\n this.#execution.flow.save();\r\n break;\r\n case ActionsController.RELEASE:\r\n this.#execution.flow.release();\r\n break;\r\n case ActionsController.DELEGATE:\r\n this.#execution.flow.delegate();\r\n break;\r\n case ActionsController.SHARE:\r\n this.#execution.flow.share();\r\n break;\r\n case ActionsController.VIEW_DOCS:\r\n this.#execution.flow.viewDocs();\r\n break;\r\n case ActionsController.PRINT:\r\n this.#execution.flow.print();\r\n break;\r\n case ActionsController.SEND_TO_DESK:\r\n this.#execution.sendToDesktop();\r\n break;\r\n }\r\n }\r\n\r\n disableActionButton(id: number): void {\r\n ActionsController.instance.disable(id);\r\n }\r\n\r\n enableActionButton(id: number): void {\r\n ActionsController.instance.enable(id);\r\n }\r\n\r\n getAllForms(): IApiaForm[] {\r\n return this.#execution\r\n .getAllForms()\r\n .map((c) => new ApiaForm(this.#execution, c));\r\n }\r\n getAllFormsByType(type: 'P' | 'E'): IApiaForm[] {\r\n return this.#execution.getAllForms().reduce<ApiaForm[]>((acc, c) => {\r\n if (c.definition.frmParent === type) {\r\n acc.push(new ApiaForm(this.#execution, c));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getAttField(\r\n attType: 'P' | 'E',\r\n attId: string,\r\n ): IApiaField | IApiaField[] | undefined {\r\n const fields: IApiaField[] = [];\r\n this.getAllFormsByType(attType).forEach((c) =>\r\n fields.push(c.getField(attId) as IApiaField),\r\n );\r\n return fields;\r\n }\r\n\r\n getCurrentLanguageCode(): string | null {\r\n return getWindow(this.#execution).LANG_CODE;\r\n }\r\n\r\n getCurrentProcessName(): string | null {\r\n return this.#execution.environment.properties?.processName ?? '';\r\n }\r\n getCurrentStep(): number | null {\r\n return this.#execution.currentStep;\r\n }\r\n\r\n getCurrentTaskName(): string | null {\r\n return this.#execution.environment.properties?.taskName ?? '';\r\n }\r\n\r\n getEntityForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'E');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getForm(frmName: string, frmType?: string): IApiaForm | null {\r\n if (frmType === 'E') return this.getFormByType(frmName, frmType);\r\n if (frmType === 'P') return this.getFormByType(frmName, frmType);\r\n const eFrm = this.getFormByType(frmName, 'E');\r\n if (eFrm) {\r\n return eFrm;\r\n }\r\n const pForm = this.getFormByType(frmName, 'P');\r\n return pForm;\r\n }\r\n\r\n getLastModalReturn() {\r\n return this.#execution.getLastModalReturn();\r\n }\r\n\r\n getModalReturn() {\r\n return this.getLastModalReturn();\r\n }\r\n\r\n getModalSelectedRow() {\r\n return this.#execution.getLastModalReturn()?.slice(2);\r\n }\r\n\r\n getModalShowValue() {\r\n return this.#execution.getLastModalReturn()[1];\r\n }\r\n\r\n getModalValue() {\r\n return this.#execution.getLastModalReturn()[0];\r\n }\r\n\r\n getProcessForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'P');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getRootPath(): string | null {\r\n try {\r\n return getWindow(this.#execution).APIA_ROOT_CONTEXT;\r\n } catch (e: unknown) {\r\n if (e instanceof Error) {\r\n console.error(`Apia JSApi Error: ${e.message}`);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hideActionButton(id: number): void {\r\n ActionsController.instance.hide(id);\r\n }\r\n\r\n isActionButtonDisabled(id: number) {\r\n return ActionsController.instance.isDisabled(id);\r\n }\r\n isActionButtonHidden(id: number) {\r\n return ActionsController.instance.isHidden(id);\r\n }\r\n\r\n saveTask() {\r\n this.#execution.flow.save();\r\n }\r\n\r\n setLastModalReturn(value: string[]) {\r\n getWindow(this.#execution).lastModalReturn = value;\r\n }\r\n\r\n setStepTitle(stepNumber: number, stepTitle: string): void {\r\n this.#execution.setStepTitle(stepNumber, stepTitle);\r\n }\r\n\r\n showActionButton(id: number): void {\r\n ActionsController.instance.show(id);\r\n }\r\n\r\n viewAdmEntity(entName: string, entNum?: number) {\r\n this.admEntity(entName, entNum, { viewMode: 'true' });\r\n }\r\n changeTab(index: number[]): void {\r\n if (window.tabsController)\r\n (window.tabsController as any).tabsList.forEach((tab: any, i: number) => {\r\n if (arrayOrArray(index).includes(i)) tab.open();\r\n });\r\n }\r\n}\r\n","import { computed, makeObservable, observable, toJS } from 'mobx';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { actions } from '../constants/actions';\r\nimport { parseXml, post } from '../../../../util';\r\nimport type { Form } from '../Form';\r\nimport { setAjaxFormResponse } from '../events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { ResponseSysMessages } from '../../../../util/api/types';\r\nimport {\r\n ComponentEvent,\r\n TCusCmpStateRequest,\r\n TCustomComponentDefaultResponse,\r\n TCustomComponentDefinition,\r\n} from '../../../InitialData/types/TApiaForm';\r\nimport {\r\n arrayOrArray,\r\n decodeBase64ToUtf8,\r\n DeepReadonly,\r\n encodeStrToBase64Utf8,\r\n} from '@apia/util';\r\nimport { TFncParams } from '../Field';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { ApiaForm, ApiaFunctions } from '../../../../programming';\r\nimport { getWindow } from '../../../../util/dom/getWindow';\r\nimport type { Execution } from '../..';\r\nimport axios, { AxiosRequestConfig } from 'axios';\r\nimport { parseSuccessfulResponse } from '../../../../util/api/apiaApi';\r\n\r\nexport type TCustomComponentState = {\r\n isLoading: boolean;\r\n\r\n attributes: Record<string, any[]>;\r\n properties: Record<string, any>;\r\n additional: any;\r\n\r\n component: any;\r\n};\r\n\r\nexport class CustomComponent {\r\n #hasInited = false;\r\n private form: Form = {} as Form;\r\n private _state: TCustomComponentState = {\r\n isLoading: false,\r\n attributes: {},\r\n properties: {},\r\n additional: {},\r\n component: null,\r\n };\r\n\r\n constructor(\r\n public execution: Execution,\r\n public readonly definition: TCustomComponentDefinition,\r\n ) {\r\n if (definition.error_while_processing) {\r\n throw new Error(\r\n `Cannot initialize custom component ${definition.name}: ${definition.error_while_processing}`,\r\n );\r\n }\r\n\r\n makeObservable<CustomComponent, '_state'>(this, {\r\n _state: observable,\r\n state: computed,\r\n });\r\n this.parseStateObject(definition.state.state);\r\n }\r\n\r\n public get state(): DeepReadonly<TCustomComponentState> {\r\n return toJS(this._state);\r\n }\r\n\r\n public getAdditional<T>() {\r\n return this.state.additional as DeepReadonly<T>;\r\n }\r\n\r\n public getCurrentForm() {\r\n return new ApiaForm(this.execution!, this.form);\r\n }\r\n\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n\r\n private parseStateObject(o: TCusCmpStateRequest) {\r\n if (o.additional) {\r\n try {\r\n this._state.additional = JSON.parse(o.additional);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(\r\n JSON.parse(decodeBase64ToUtf8(c.values)),\r\n );\r\n });\r\n arrayOrArray(o.property).forEach((c) => {\r\n this._state.properties[c.name] = c.value;\r\n });\r\n }\r\n\r\n public async processResult<\r\n Result extends Record<string, unknown> = Record<string, unknown>,\r\n >(res?: TCustomComponentDefaultResponse | null) {\r\n let proceed = true;\r\n const scheduledEvents: string[] = [];\r\n\r\n const newState = res?.processResult?.state;\r\n\r\n if (newState) {\r\n for (const directive of arrayOrArray(newState.directive)) {\r\n if (directive.type === 'RELOAD') {\r\n proceed = false;\r\n getWindow(this.execution).location.assign(\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'reload',\r\n nuevo: true,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n );\r\n } else if (directive.type === 'FIRE') {\r\n scheduledEvents.push(directive.content);\r\n }\r\n }\r\n }\r\n\r\n if (proceed) {\r\n if (res!.ajaxUpdated) {\r\n const result = parseXml(res!.ajaxUpdated);\r\n\r\n setAjaxFormResponse(\r\n this.execution,\r\n result as TFieldAjaxEventResponsePayload & ResponseSysMessages,\r\n );\r\n }\r\n\r\n if (newState) {\r\n this.parseStateObject(newState);\r\n }\r\n\r\n for await (const event of scheduledEvents) {\r\n await this.fireEvent(event);\r\n }\r\n\r\n this._state.isLoading = false;\r\n\r\n return res!.processResult?.state?.result as Result & { success: boolean };\r\n }\r\n }\r\n\r\n protected getScriptEventParams(fncParams: TFncParams[]): unknown[] {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n new ApiaFunctions(this.execution)\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n protected async fireScriptEvents(event: ComponentEvent): Promise<boolean> {\r\n let result = true;\r\n\r\n for await (const script of arrayOrArray(event.script)) {\r\n const def = JSON.parse(script.text) as {\r\n fncName: string;\r\n fncParams: {\r\n type: 'P' | 'E';\r\n attId: number;\r\n }[];\r\n };\r\n\r\n try {\r\n const fn = (window as any)[def.fncName] as (\r\n src: CustomComponent | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n result =\r\n result &&\r\n (await fn(\r\n this,\r\n ...this.getScriptEventParams(arrayOrArray(def.fncParams)),\r\n ));\r\n } catch (e) {\r\n console.error(e);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(this.execution, def.fncName),\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async fireEvent(evtName: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const event = arrayOrArray(this.definition.event).find(\r\n (c) => c.name === evtName,\r\n );\r\n if (!event) {\r\n throw new Error('Unknown event ' + evtName);\r\n }\r\n\r\n const scriptsResult =\r\n !event.script || (await this.fireScriptEvents(event));\r\n\r\n if (scriptsResult && event.serverEvents) {\r\n return (\r\n (\r\n await this.processResult(\r\n (await this.postMessage('fireEvent', evtName))?.data,\r\n )\r\n )?.success || false\r\n );\r\n }\r\n\r\n return scriptsResult && !event.serverEvents;\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getProperty(prpName: string) {\r\n return this._state.properties[prpName];\r\n }\r\n\r\n private async postMessage(method: string, body: any) {\r\n return post<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData:\r\n typeof body === 'string'\r\n ? {\r\n payload: encodeStrToBase64Utf8(body),\r\n }\r\n : body,\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n }\r\n\r\n async setStringValue(attName: string, value: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n attName,\r\n clear: true,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getStringValue(attName: string) {\r\n return this._state.attributes[attName]?.join('');\r\n }\r\n\r\n getValue(attName: string, index: number = 0) {\r\n return this._state.attributes[attName]?.[index];\r\n }\r\n\r\n getValues(attName: string) {\r\n return this._state.attributes[attName];\r\n }\r\n\r\n async removeIndex(attName: string, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await post<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method: 'removeIndex',\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData: {\r\n attName,\r\n index,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setValue(attName: string, value: any, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n index,\r\n attName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setProperty(prpName: string, value: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return (\r\n (\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setProperty',\r\n JSON.stringify({\r\n prpName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n )\r\n )?.success || false\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async sendMessage<\r\n T extends Record<string, unknown> = Record<string, unknown>,\r\n >(payload: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n return await this.processResult<T>(\r\n (\r\n await this.postMessage(\r\n 'message',\r\n typeof payload === 'object' && payload\r\n ? JSON.stringify(payload)\r\n : payload,\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async download(attName: string, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const data = await this.processResult<{ url: string }>(\r\n (await this.postMessage('download', { attName, index }))?.data,\r\n );\r\n\r\n if (data?.url) {\r\n window.open(data.url, '_blank');\r\n }\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async upload(\r\n attName: string,\r\n file: File,\r\n options?: {\r\n onUploadProgress?: (percent: number) => unknown;\r\n params?: Record<string, any>;\r\n } & Pick<AxiosRequestConfig<any>, 'signal'>,\r\n ) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n Object.entries(options?.params || {}).forEach(([key, value]) =>\r\n formData.append(key, value),\r\n );\r\n\r\n const response = await axios.post<string>(\r\n await makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method: 'upload',\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attName,\r\n originalName: file.name,\r\n }),\r\n formData,\r\n {\r\n signal: options?.signal,\r\n onUploadProgress({ total, progress }) {\r\n const percent =\r\n Math.round(((progress || 0) / (total || 1)) * 100 * 100) / 100;\r\n options?.onUploadProgress?.(percent);\r\n },\r\n },\r\n );\r\n\r\n const result =\r\n await parseSuccessfulResponse<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n response,\r\n );\r\n\r\n return await this.processResult<{ index: number; fileName: string }>(\r\n result,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n public setState<K extends keyof TCustomComponentState>(\r\n prop: K,\r\n value: TCustomComponentState[K],\r\n ) {\r\n this._state[prop] = value;\r\n }\r\n}\r\n","import { Notification, NotificationDefinition } from './Notification';\r\n\r\nexport class StatusNotification extends Notification<\r\n NotificationDefinition & { blocking: boolean }\r\n> {\r\n constructor(\r\n public readonly props: NotificationDefinition & { blocking: boolean },\r\n ) {\r\n super(props);\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { Notification } from './Notification';\r\nimport { EventEmitter } from '../../util';\r\nimport type { CustomComponent } from '../Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { Field } from '../Execution/FormsExecution/Field';\r\nimport type { Execution } from '../Execution';\r\n\r\nexport type FocusTarget = {\r\n element: Field | CustomComponent;\r\n};\r\n\r\nexport class Notifications {\r\n private emitter = new EventEmitter<{\r\n closeTab: null;\r\n kill: null;\r\n notification: Notification;\r\n }>();\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable<Notifications, 'notifications'>(this, {\r\n notifications: observable,\r\n add: action,\r\n remove: action,\r\n });\r\n }\r\n\r\n protected notifications: Notification[] = [];\r\n\r\n add(notification: Notification) {\r\n this.notifications.push(notification);\r\n this.emitter.emit('notification', notification);\r\n }\r\n\r\n closeTab() {\r\n this.emitter.emit('closeTab', null);\r\n }\r\n\r\n getAll() {\r\n return this.notifications;\r\n }\r\n\r\n getById(id: string | number) {\r\n return this.notifications.find((c) => c.id === id);\r\n }\r\n\r\n kill() {\r\n this.emitter.emit('kill', null);\r\n }\r\n\r\n remove(notification: string | number | Notification) {\r\n this.notifications = this.notifications.filter((c) => {\r\n if (typeof notification === 'string' || typeof notification === 'number')\r\n return c.id !== notification;\r\n return c !== notification;\r\n });\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n}\r\n","import type {\r\n TApiaForm,\r\n TApiaFormProperties,\r\n TFormEventName,\r\n} from '../../InitialData/types/TApiaForm';\r\nimport type { Execution } from '..';\r\nimport type { TSignaturesData } from './types';\r\nimport { Field, getApiaFunctions, TFncParams } from './Field';\r\nimport type {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { computed, makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\r\nimport { Grid } from './fields';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaForm } from '../../../programming/ApiaForm';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldError } from '../types';\r\nimport { getFocusIdentifier } from './util/util';\r\n\r\nexport class Form extends WithProperties<TApiaFormProperties> {\r\n fields: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n state = { isMarkedToSign: false };\r\n protected _customComponents: Map<string, CustomComponent> = new Map();\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n TApiaFieldCommonProperties,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsGroups = new Map<string, Grid>();\r\n definition: TApiaForm = {} as TApiaForm;\r\n\r\n constructor(\r\n public execution: Execution,\r\n definition: TApiaForm,\r\n ) {\r\n const props = parseFakeJSON<TApiaFormProperties>(definition.properties);\r\n super(props);\r\n makeObservable<Form, 'state'>(this, {\r\n state: observable,\r\n allFields: computed,\r\n customComponents: computed,\r\n });\r\n\r\n this.definition = definition;\r\n\r\n this.fields = arrayOrArray(definition.field).sort((a, b) => {\r\n if (a.y < b.y) return -1;\r\n if (a.y > b.y) return 1;\r\n\r\n if (a.x < b.x) return -1;\r\n if (a.x > b.x) return 1;\r\n\r\n return 0;\r\n });\r\n\r\n this.state.isMarkedToSign = this.definition.markedToSign;\r\n }\r\n\r\n get allFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n get customComponents() {\r\n return this._customComponents;\r\n }\r\n\r\n async toggleFormCollapse() {\r\n this.properties.prpFrmClosed = !this.properties.prpFrmClosed;\r\n void post<{ success: boolean }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'closeForm',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n collapse: this.properties.prpFrmClosed,\r\n react: true,\r\n }),\r\n );\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getField(field: string, index?: number) {\r\n const found =\r\n this.getFieldById(field, index) ||\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeId(field, index) ||\r\n this.getFieldByAttributeName(field, index);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getField(field, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n const found = this.fieldsByAttributeId.get(String(attId));\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeId(attId, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n const found = this.fieldsByAttributeName.get(attName);\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeName(attName, index);\r\n return res;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldById(id: string | number, index?: number) {\r\n const found = this.fieldsById.get(String(id));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldById(id, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldByName(name: string, index?: number): Field | Field[] | undefined {\r\n const found = this.fieldsByName.get(String(name));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByName(name, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected getHiddenFields() {\r\n return this.allFields.filter((c) => c.getProperty('visibilityHidden'));\r\n }\r\n async markFormToSign() {\r\n void post<{ success: boolean }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'markFormToSign',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n sign: !this.state.isMarkedToSign,\r\n react: true,\r\n }),\r\n ).then((res) => {\r\n if (res?.data && res.data.success) {\r\n this.state.isMarkedToSign = !this.state.isMarkedToSign;\r\n }\r\n });\r\n }\r\n\r\n async viewSigns(): Promise<TSignaturesData | undefined> {\r\n const res = await get<TSignaturesData>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'viewSigns',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n react: true,\r\n }),\r\n );\r\n if (res?.data) {\r\n return res.data;\r\n }\r\n }\r\n\r\n private cucCmpByAttId = new Map<number, CustomComponent>();\r\n private cucCmpByFldId = new Map<number, CustomComponent>();\r\n private cucCmpByAttName = new Map<string, CustomComponent>();\r\n private mustRenderFields: string[] = [];\r\n\r\n getCustomComponentByFldId(fldId: number) {\r\n return this.cucCmpByFldId.get(fldId);\r\n }\r\n\r\n getCustomComponentByAttId(attId: number) {\r\n return this.cucCmpByAttId.get(attId);\r\n }\r\n\r\n getCustomComponentByAttName(attName: string) {\r\n return this.cucCmpByAttName.get(attName);\r\n }\r\n\r\n public addFieldToRender(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields.push(fldId + '_' + fldIndex);\r\n }\r\n\r\n public markFieldAsRendered(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields = this.mustRenderFields.filter(\r\n (c) => c !== fldId + '_' + fldIndex,\r\n );\r\n if (this.mustRenderFields.length - this.getHiddenFields().length === 0) {\r\n this.execution.markFormAsRendered(\r\n this.definition.frmParent,\r\n this.definition.formName,\r\n );\r\n }\r\n }\r\n\r\n async init() {\r\n const cusFields = arrayOrArray(this.definition.customField);\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n this.mustRenderFields.push(field.id + '_' + (field.index ?? 0));\r\n }\r\n for await (const customComponent of cusFields) {\r\n this.mustRenderFields.push(customComponent.id + '_' + 0);\r\n }\r\n for await (const customComponent of cusFields) {\r\n const cc = new CustomComponent(this.execution, customComponent);\r\n await cc.init(this);\r\n this._customComponents.set(customComponent.id, cc);\r\n arrayOrArray(customComponent.state.state.attribute).forEach((a) => {\r\n this.cucCmpByAttId.set(Number.parseInt(String(a.attId)), cc);\r\n this.cucCmpByAttName.set(a.attName, cc);\r\n this.cucCmpByFldId.set(Number.parseInt(String(customComponent.id)), cc);\r\n });\r\n }\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n this.execution.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor(field);\r\n await newField.init(this);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties?.name) {\r\n this.fieldsByName.set(\r\n String(newField.properties?.name),\r\n newField as Field<any>,\r\n );\r\n }\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n\r\n if (newField instanceof Grid) {\r\n this.fieldsGroups.set(String(newField.definition.id), newField);\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions(this.execution))\r\n .getForm(this.definition.formName, this.definition.frmParent)!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n public async fireScriptEvent(eventName: TFormEventName): Promise<boolean> {\r\n if (eventName === 'onLoad') {\r\n const mapEvent = getWindow(this.execution)[\r\n `LOAD_RELOAD_MAP_${this.definition.frmParent}`\r\n ] as any as Record<string, string>;\r\n const mappedEvent = mapEvent\r\n ? mapEvent[this.definition.formName]\r\n : undefined;\r\n const actualMapEvent =\r\n mapEvent &&\r\n (!mappedEvent || mappedEvent === 'load' ? 'onLoad' : 'onReload');\r\n eventName =\r\n actualMapEvent ||\r\n (getWindow(this.execution).IS_RELOAD ? 'onReload' : 'onLoad');\r\n }\r\n\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (events.length > 0) {\r\n const unlock = this.execution.lock();\r\n\r\n try {\r\n for (const event of events) {\r\n try {\r\n const fn = (getWindow(this.execution) as any)[event.fncName] as (\r\n src: ApiaForm,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n new ApiaForm(this.execution, this)!,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n if (!result) {\r\n return false;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(this.execution, event.fncName) + e,\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n if (this.properties.frmHidden) {\r\n return true;\r\n }\r\n\r\n for await (const field of this.allFields) {\r\n if (field.definition.fieldType === 'grid') {\r\n const result = await (field as Grid).validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n isValid = false;\r\n } else {\r\n isValid = isValid && result === true;\r\n }\r\n } else if (field instanceof Field) {\r\n isValid = (await field.validate()) && isValid;\r\n if (!isValid && !firstInvalid) {\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n\r\n getProperty<K extends keyof TApiaFormProperties>(\r\n propName: K | 'readOnly',\r\n ): TApiaFormProperties[K] {\r\n if (propName === 'readOnly') {\r\n return this.definition.readOnly || this.definition.readonly;\r\n }\r\n return super.getProperty(propName);\r\n }\r\n\r\n public getErrorsList(): FieldError[] {\r\n const errors: FieldError[] = [];\r\n this.allFields.forEach((f) => {\r\n if (f instanceof FieldWithAttribute) {\r\n const fieldErrors = f.state.validation.errorMessage;\r\n if (fieldErrors) {\r\n errors.push({\r\n id: `${f.getForm().definition.frmParent}_${f.getForm().definition.id}_${f.definition.id}`,\r\n errorMessage: fieldErrors,\r\n title: f.attribute.title,\r\n focus: getFocusIdentifier(f),\r\n });\r\n }\r\n }\r\n });\r\n return errors;\r\n }\r\n}\r\n","import { getDocument } from '../../../util/dom/getDocument';\r\nimport { parseXml } from '../../../util/xml/parseXml';\r\nimport type { Execution } from '../../Execution';\r\nimport { TApiaForm } from '../types/TApiaForm';\r\n\r\nfunction decodeBase64ToUtf8(base64String: string) {\r\n const binaryString = atob(base64String);\r\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\r\n return new TextDecoder('utf-8').decode(bytes);\r\n}\r\n\r\nasync function getFormXMLDataAsObj(\r\n formDiv: HTMLElement,\r\n): Promise<TApiaForm | null> {\r\n if (formDiv.dataset.xml) {\r\n const formData = (await parseXml(\r\n decodeBase64ToUtf8(formDiv.dataset.xml),\r\n )) as TApiaForm;\r\n return formData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function readFormsDefinition(execution: Execution) {\r\n const elements = [\r\n ...getDocument(execution).querySelectorAll('.formContainer'),\r\n ];\r\n const forms: TApiaForm[] = [];\r\n\r\n for await (const form of elements) {\r\n const def = await getFormXMLDataAsObj(form as HTMLElement);\r\n if (def) forms.push(def);\r\n }\r\n\r\n return forms;\r\n}\r\n","import type { Execution } from '../Execution';\r\nimport { readFormsDefinition } from './bootstrap/readFormsDefinition';\r\n\r\nexport class InitialData {\r\n public static getFormsDefinition(execution: Execution) {\r\n return readFormsDefinition(execution);\r\n }\r\n}\r\n","import {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Field } from './Field';\r\nimport { TranslatableField } from './TranslatableField';\r\nimport { Button } from './fields/Button';\r\nimport { Captcha } from './fields/Captcha';\r\nimport { Checkbox } from './fields/Checkbox';\r\nimport { Editor } from './fields/Editor';\r\nimport { File } from './fields/File';\r\nimport { Grid } from './fields/Grid';\r\nimport { GridPaginated } from './fields/GridPaginated';\r\nimport { Hidden } from './fields/Hidden';\r\nimport { Image } from './fields/Image';\r\nimport { Input } from './fields/Input';\r\nimport { Label } from './fields/Label';\r\nimport { Link } from './fields/Link';\r\nimport { ModalInput } from './fields/ModalInput';\r\nimport { Multiple } from './fields/Multiple';\r\nimport { Password } from './fields/Password';\r\nimport { Radio } from './fields/Radio';\r\nimport { Select } from './fields/Select';\r\nimport { Textarea } from './fields/Textarea';\r\nimport { Title } from './fields/Title';\r\nimport { Tree } from './fields/Tree';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { GridProps } from './fields/Grid/types';\r\nimport { SchedulerField } from './fields/Scheduler';\r\nimport { TApiaLabelProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport type FieldConstructor = new (\r\n definition: any,\r\n) =>\r\n | Field<any, any, any>\r\n | FieldWithAttribute<any, any, any>\r\n | TranslatableField<any, any, any>;\r\n\r\nexport type FieldsMapping = Record<\r\n string,\r\n (definition: any) => FieldConstructor\r\n>;\r\n\r\nexport const defaultFieldsMap: FieldsMapping = Object.freeze({\r\n area: () => Textarea,\r\n button: () => Button,\r\n captcha: () => Captcha,\r\n check: () => Checkbox,\r\n editor: () => Editor,\r\n file: () => File,\r\n grid: (def) => {\r\n const definition = def as TApiaFieldBaseDefinition<GridProps>;\r\n\r\n if (definition?.properties?.paged) {\r\n return GridPaginated;\r\n }\r\n\r\n return Grid;\r\n },\r\n hidden: () => Hidden,\r\n href: () => Link,\r\n image: () => Image,\r\n input: (def) => {\r\n const definition = def as TApiaFieldWithAttributeBaseProps<any>;\r\n\r\n if (definition.qryId) {\r\n return ModalInput;\r\n }\r\n\r\n return Input;\r\n },\r\n label: (def) => {\r\n const definition =\r\n def as TApiaFieldWithAttributeBaseProps<TApiaLabelProperties>;\r\n const value = definition.properties?.value;\r\n if (value && String(value).indexOf('schedContainer') !== -1) {\r\n return SchedulerField;\r\n }\r\n\r\n return Label;\r\n },\r\n multiple: () => Multiple,\r\n password: () => Password,\r\n radio: () => Radio,\r\n select: () => Select,\r\n title: () => Title,\r\n tree: () =>\r\n Tree as new (definition: any) => FieldWithAttribute<any, any, any>,\r\n});\r\n","import { action, computed, makeObservable, observable } from 'mobx';\r\nimport { TProcess } from './types';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { UploaderApi } from '../Uploader';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport { TModalConfig } from '@apia/uploader-controller';\r\n\r\nexport class Process {\r\n state: TProcess | null = null;\r\n\r\n uploader: UploaderApi;\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n name: computed,\r\n });\r\n\r\n this.uploader = new UploaderApi(\r\n this.execution,\r\n 'ProcessUploader',\r\n 'P',\r\n getWindow(this.execution)\r\n .processDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n const res = await post<{ processData: string }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getProcessData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.processData) {\r\n throw new Error('Cannot retrieve the process data');\r\n }\r\n\r\n this.uploader.init();\r\n this.uploader.on('fileUploaded', () => {\r\n this.execution.state.hasChangedAnything = true;\r\n });\r\n\r\n const parsedData: TProcess = JSON.parse(res?.data?.processData);\r\n const calValue = arrayOrArray(parsedData.calendar?.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n const priorityValue =\r\n arrayOrArray(parsedData.priority.options).find((c) => c.selected)\r\n ?.value ?? arrayOrArray(parsedData?.priority?.options)[0]?.value;\r\n\r\n this.state = parsedData;\r\n if (calValue) this.state.calendar.value = calValue;\r\n if (priorityValue) this.state.priority.value = priorityValue;\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n cmbProPri: this.state?.priority?.value,\r\n selCal: this.state?.calendar?.value,\r\n };\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n if (this.state?.priority) this.state.priority.value = newPriority;\r\n }\r\n}\r\n","export class Task {\r\n #name: string;\r\n constructor(task: any) {\r\n this.#name = task.name;\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n get name() {\r\n return this.#name;\r\n }\r\n}\r\n","import { computed, makeObservable, observable } from 'mobx';\r\nimport { Association, PoolId, TCategory, TEntity } from './type';\r\nimport { getLabel, makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray, uniqueId } from '@apia/util';\r\nimport { UploaderApi } from '../Uploader';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport {\r\n Row,\r\n TableController,\r\n TBuildRow,\r\n TBuildTable,\r\n} from '@apia/table2-controller';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport { TModalConfig } from '@apia/uploader-controller';\r\n\r\nexport class Entity {\r\n state: TEntity | null = null;\r\n\r\n uploader: UploaderApi;\r\n controller: TableController = new TableController({\r\n allowEdition: true,\r\n allowResize: true,\r\n allowSelection: true,\r\n });\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n name: computed,\r\n });\r\n\r\n this.uploader = new UploaderApi(\r\n execution,\r\n 'EntityUploader',\r\n 'E',\r\n getWindow(this.execution)\r\n .entityDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n const res = await post<{ entityData: string }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getEntityData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.entityData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n this.uploader.init();\r\n this.uploader.on('fileUploaded', () => {\r\n this.execution.state.hasChangedAnything = true;\r\n });\r\n\r\n const parsedData: TEntity = JSON.parse(res?.data?.entityData);\r\n const statusValue = arrayOrArray(parsedData.status.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n this.state = parsedData;\r\n this.state.visibilities = [];\r\n this.state.categories = [];\r\n this.state.image.file = null;\r\n\r\n if (statusValue && this.state.status)\r\n this.state.status.value = statusValue;\r\n\r\n if (getWindow(this.execution).LBL_CATEGORIES_LABEL) {\r\n await this.loadCategories();\r\n }\r\n if (getWindow(this.execution).LBL_VISIBILITIES_LABEL) {\r\n await this.loadPools();\r\n }\r\n if (getWindow(this.execution).LBL_ENTITIES_ASSOCIATIONS) {\r\n await this.loadAssociations();\r\n }\r\n }\r\n }\r\n\r\n public addAssociation() {\r\n const id = String(uniqueId());\r\n this.state!.associations.push({\r\n asocId: id,\r\n asocName: '',\r\n asocRelName: '',\r\n });\r\n const row = new Row(id);\r\n row.build({\r\n id: String(uniqueId()),\r\n cells: [{ colName: 'name' }, { colName: 'relName' }],\r\n isSelected: true,\r\n });\r\n this.controller.body.addRow(row);\r\n this.controller.setSelection([\r\n this.controller.body.getState('rows').length,\r\n ]);\r\n }\r\n\r\n public getConfirmParams() {\r\n const result: any = {\r\n busEntSta: this.state?.status.value ?? '',\r\n };\r\n\r\n if (this.state?.identifier?.body?.value) {\r\n result.txtEntNum = this.state?.identifier.body.value ?? '';\r\n }\r\n\r\n if (this.state?.categories) {\r\n result.catId = this.state?.categories.map((c) => c.id);\r\n\r\n this.state?.categories\r\n .filter((c) => c.checked)\r\n .forEach((c) => {\r\n result[`chkCat_${c.id}`] = 'on';\r\n });\r\n\r\n result['hidTemplateWithCategories'] = 'true';\r\n }\r\n\r\n if (this.state?.visibilities) {\r\n result['hidTemplateWithVisibilities'] = 'true';\r\n result.poolId = this.state?.visibilities.map((c) => c.poolId);\r\n\r\n this.state?.visibilities\r\n .filter((c) => c.canUpdate)\r\n .forEach((v) => {\r\n result[`chkVisPoolUpdate${v.poolId}`] = 'on';\r\n });\r\n }\r\n\r\n if (this.state?.associations) {\r\n result['hidTemplateWithAsociation'] = 'true';\r\n result.asocId = this.state?.associations.map((c) => c.asocId);\r\n result.asocName = this.state?.associations.map((c) => c.asocName);\r\n result.asocRelName = this.state?.associations.map((c) => c.asocRelName);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected loadCategories = async () => {\r\n const res = await post<{ category: TCategory[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadCategories',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state)\r\n if (res?.data?.category) {\r\n this.state.categories = arrayOrArray(res.data.category);\r\n } else {\r\n this.state.categories = [];\r\n }\r\n };\r\n\r\n protected loadPools = async () => {\r\n const res = await post<{ pool: PoolId[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadPools',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state?.visibilities) {\r\n if (res?.data?.pool) {\r\n this.state.visibilities = arrayOrArray(res.data.pool);\r\n } else {\r\n this.state.visibilities = [];\r\n }\r\n }\r\n };\r\n\r\n protected loadAssociations = async () => {\r\n const res = await post<{ asociation: Association[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadAsociations',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state) {\r\n this.state.associations = arrayOrArray(res?.data?.asociation);\r\n const rows = this.parseRows(arrayOrArray(res?.data?.asociation));\r\n const tableJson = {\r\n columns: [\r\n {\r\n colName: 'name',\r\n content: getLabel(this.execution, 'lblBusEntInst').text,\r\n className: 'header',\r\n },\r\n {\r\n colName: 'relName',\r\n content: getLabel(this.execution, 'lblBusEntInstAsocName').text,\r\n className: 'header',\r\n },\r\n ],\r\n rows,\r\n filters: [],\r\n } as TBuildTable;\r\n this.controller.build(tableJson);\r\n }\r\n };\r\n\r\n private parseRows(row: Association[]) {\r\n return row.map((r) => {\r\n const newRow: TBuildRow = {\r\n id: r.asocId,\r\n cells: [\r\n {\r\n colName: 'name',\r\n content: r.asocName,\r\n },\r\n {\r\n colName: 'relName',\r\n content: r.asocRelName,\r\n },\r\n ],\r\n };\r\n return newRow;\r\n });\r\n }\r\n\r\n public deleteAssociation() {\r\n const selectedRows = this.controller.getState('selection');\r\n const lastIdx = Array.from(selectedRows).pop()?.getIndex();\r\n\r\n [...selectedRows.values()].forEach((row) => {\r\n this.state!.associations =\r\n this.state?.associations.filter((_, idx) => row.getIndex() !== idx) ??\r\n [];\r\n this.controller.body.removeRow(row);\r\n });\r\n if (lastIdx) this.controller.setSelection([lastIdx - 1]);\r\n }\r\n\r\n public deleteVisibility(id: string) {\r\n if (this.state) {\r\n this.state.visibilities = this.state.visibilities.filter(\r\n (c) => c.poolId !== id,\r\n );\r\n }\r\n }\r\n\r\n public validateAssociations() {\r\n if (this.state?.associations.length === 0) return true;\r\n if (this.state) {\r\n const invalidAssociations = this.state.associations.filter(\r\n (c) => !c.asocName || !c.asocRelName,\r\n );\r\n if (invalidAssociations.length > 0) {\r\n invalidAssociations.forEach((c, idx) => {\r\n c.errorRelNameMessage = '';\r\n c.errorNameMessage = '';\r\n c.focusTarget = undefined;\r\n\r\n if (idx === 0) c.focusTarget = true;\r\n\r\n if (c.asocName === '')\r\n c.errorNameMessage = labels.errorFieldRequired(this.execution);\r\n\r\n if (c.asocRelName === '')\r\n c.errorRelNameMessage = labels.errorFieldRequired(this.execution);\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { TObservation, TObservations } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport type { Execution } from '..';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\n\r\nexport class Observations {\r\n state: TObservations = {\r\n newObservation: {\r\n commentValue: '',\r\n chkAddAlert: false,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n },\r\n observations: [],\r\n };\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n });\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n this.state = {\r\n newObservation: {\r\n commentValue: '',\r\n chkAddAlert: false,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n },\r\n observations: [],\r\n };\r\n\r\n const res = await post<{\r\n obData: string;\r\n }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getObservationsData',\r\n isAjax: true,\r\n isTask: !getWindow(this.execution).isMonitor ? true : false,\r\n }),\r\n );\r\n if (!res?.data?.obData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n\r\n const parsedData: {\r\n observations: TObservation[];\r\n newCommentData: { comment: string; isChecked: boolean };\r\n } = JSON.parse(res?.data?.obData);\r\n\r\n this.state.observations = arrayOrArray(parsedData.observations);\r\n\r\n const newObservation = {\r\n commentValue: parsedData.newCommentData?.comment,\r\n chkAddAlert: parsedData.newCommentData?.isChecked,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n };\r\n this.state.newObservation = newObservation;\r\n this.areObservationsChecked();\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n const params: Record<string, unknown> = {\r\n txtComment: this.state.newObservation?.commentValue,\r\n chkAddAlert:\r\n this.state.newObservation?.chkAddAlert === true ? 'on' : undefined,\r\n chkAddAllAlert:\r\n this.state.newObservation?.chkAddAllAlert === true ? 'on' : undefined,\r\n chkRemAlert:\r\n this.state.newObservation?.chkRemAlert === true ? 'on' : undefined,\r\n };\r\n\r\n const obs = this.state.observations ?? [];\r\n for (const o of obs) {\r\n if (!o || !o.name) continue;\r\n params[o.name] = o.checked === true ? 'on' : undefined;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n\r\n public areObservationsChecked() {\r\n const isChecked = this.state.observations?.some((o) => o.checked === true);\r\n return isChecked;\r\n }\r\n}\r\n","import type { Execution } from '..';\r\n\r\nexport type ConfirmChecker = (\r\n execution: Execution,\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep =\r\n | 'CHECK_LOCK'\r\n | 'CONFIRM'\r\n | 'CHECK_SIGN'\r\n | 'CHECK_WIZARD'\r\n | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowPoolSelection extends FlowModal<{\r\n confirmed: boolean;\r\n group: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n group: string;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { TFetchConfirmPathResponse, TItemTreeObj } from './types';\r\nconst initialState = {\r\n disabledParents: [],\r\n groupSelectionObj: null,\r\n};\r\n\r\nexport class ShowPathSelection extends FlowModal<{\r\n confirmed: boolean;\r\n path: string;\r\n}> {\r\n public state: {\r\n disabledParents: TItemTreeObj | TItemTreeObj[] | null;\r\n groupSelectionObj: TFetchConfirmPathResponse | null;\r\n };\r\n\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n path: string;\r\n }) => Promise<Status | FlowModal<any>>,\r\n ) {\r\n super();\r\n makeObservable<ShowPathSelection, 'state'>(this, { state: observable });\r\n this.state = initialState;\r\n }\r\n setDisabledParent(treeItem: TItemTreeObj) {\r\n this.state.disabledParents = this.updateDisabledList(\r\n treeItem,\r\n this.state.disabledParents as TItemTreeObj[],\r\n );\r\n }\r\n clearPaths() {\r\n this.state.disabledParents = [];\r\n }\r\n showGroupsSelection(fetchConfirmPathResponse: TFetchConfirmPathResponse) {\r\n this.state.groupSelectionObj = fetchConfirmPathResponse;\r\n }\r\n updateDisabledList(\r\n itemObj: TItemTreeObj,\r\n itemArr: TItemTreeObj[],\r\n ): TItemTreeObj[] {\r\n let filteredArr = [] as TItemTreeObj[];\r\n if (Array.isArray(itemArr)) {\r\n filteredArr = itemArr.filter(\r\n (el) =>\r\n el.id !== itemObj.id && el.name !== itemObj.name && el.isOn !== false,\r\n );\r\n }\r\n if (itemObj.isOn === true) {\r\n filteredArr.push(itemObj);\r\n }\r\n return filteredArr || [];\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import xml2js from 'xml2js';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { ShowPoolSelection } from './ShowPoolSelection';\r\nimport { ShowPathSelection } from './ShowPathSelection';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution } from '..';\r\nimport { TCheckWizardResponse, TFetchConfirmPathResponse } from './types';\r\nimport {\r\n arrayOrArray,\r\n parseXMLRequestResponse,\r\n TApiaFieldPropsObj,\r\n TApiaLoadForm,\r\n TFieldScriptEvents,\r\n TFieldServerEvents,\r\n} from '@apia/util';\r\nimport axios from 'axios';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { ExecutionState, TConfirmResponse } from '../types';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport {\r\n InvalidSessionException,\r\n parseMessages,\r\n} from '../../../util/api/apiaApi';\r\nimport {\r\n customBooleanProcessor,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n getDefaultXmlParserOptions,\r\n} from '../../../util/xml/parseXml';\r\n\r\nfunction buildPoolSelection(\r\n execution: Execution,\r\n status: Status,\r\n poolForm: TApiaLoadForm['form'],\r\n) {\r\n return new ShowPoolSelection(poolForm, async (result) => {\r\n if (result.confirmed) {\r\n const unLock = execution.lock();\r\n const confirmPoolResult = await axios.post<{\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl(execution, {\r\n action: 'confirmPool',\r\n isAjax: true,\r\n appletToken: 'null',\r\n }),\r\n result.group,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n confirmPoolResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes) unLock();\r\n if (\r\n parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose' ||\r\n parsedRes?.onClose === 'confirmOkOnClose'\r\n ) {\r\n if (parsedRes?.load?.text?.content) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes?.load?.text?.content,\r\n type: 'success',\r\n }),\r\n );\r\n }\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else {\r\n if (parsedRes?.sysMessages?.message) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes?.sysMessages?.message?.text,\r\n type: 'warning',\r\n }),\r\n );\r\n }\r\n throw Error('Failed to confirm pool');\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nfunction buildPathSelection(\r\n execution: Execution,\r\n status: Status,\r\n form: TApiaLoadForm['form'],\r\n) {\r\n const modal = new ShowPathSelection(form, async function (result) {\r\n if (result.confirmed) {\r\n const unLock = execution.lock();\r\n const pathSelectionResult = await axios.post<TFetchConfirmPathResponse>(\r\n makeApiaUrl(execution, {\r\n action: 'confirmPath',\r\n isAjax: true,\r\n asXML: true,\r\n }),\r\n result.path,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n pathSelectionResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes) unLock();\r\n if (parsedRes?.groupSelection) {\r\n return buildPoolSelection(execution, status, parsedRes.load!.form!);\r\n } else if (parsedRes?.actions?.action?.toDo === 'functionTimedCall') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else if (parsedRes.sysMessages?.message?.text) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes.sysMessages.message.text,\r\n type: 'warning',\r\n }),\r\n );\r\n return { ...status, step: undefined, finishedWithError: true };\r\n } else if (parsedRes.load?.canClose) {\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(status, parsedRes.load?.text?.content ?? '');\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n } else {\r\n return { ...status, step: undefined, finishedWithError: true };\r\n }\r\n });\r\n return modal;\r\n}\r\n\r\nasync function checkSign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n }[];\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1] === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n };\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...execution.getEntity().getConfirmParams(),\r\n ...execution.getProcess().getConfirmParams(),\r\n ...execution.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n\r\n const confirmResponse = await post<TConfirmResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: getWindow(execution).appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n xmlParser: (xml) => {\r\n // procesador que preserva 'value' (lo que ya tenías)\r\n const processStringObjPreserveValue = (\r\n value: string,\r\n key: string,\r\n ):\r\n | TApiaFieldPropsObj\r\n | string\r\n | number\r\n | TFieldScriptEvents\r\n | TFieldServerEvents => {\r\n if (key === 'value' && typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n const parsed = processStringObj(value as any, key);\r\n\r\n return parsed;\r\n };\r\n\r\n // Tomar las opciones por defecto del parser\r\n const baseOptions = getDefaultXmlParserOptions();\r\n\r\n // Reemplazar el procesador de strings por nuestra variante\r\n baseOptions.attrValueProcessors = [\r\n customBooleanProcessor,\r\n processStringObjPreserveValue,\r\n processAjaxEventResponse,\r\n ];\r\n\r\n // Crear el parser con las opciones correctas\r\n const parser = new xml2js.Parser(baseOptions);\r\n\r\n // Usar el post-processor por defecto (realiza el parse y replaceLabelHtmlValues)\r\n let objJS: any = null;\r\n parser.parseString(\r\n xml,\r\n (err: Error | null, result: Record<string, unknown>) => {\r\n if (err) {\r\n console.warn('Error Parsing XML data', err);\r\n objJS = err;\r\n } else {\r\n if (result?.code === '-1' && result.exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n objJS = result;\r\n }\r\n },\r\n );\r\n\r\n return objJS as TConfirmResponse;\r\n },\r\n },\r\n );\r\n if (\r\n confirmResponse?.data?.sysMessages?.message ||\r\n confirmResponse?.data?.sysExceptions?.exception ||\r\n confirmResponse?.data?.exceptions?.exception\r\n ) {\r\n Captcha.reload();\r\n return {\r\n step: undefined,\r\n finishedWithError: true,\r\n error: `Errors found: ${[\r\n ...arrayOrArray(confirmResponse?.data?.sysMessages?.message).map(\r\n (c) => c.text || c.label,\r\n ),\r\n ...arrayOrArray(confirmResponse?.data?.sysExceptions?.exception).map(\r\n (c) => c.text || c.label,\r\n ),\r\n ...arrayOrArray(confirmResponse?.data?.exceptions?.exception).map(\r\n (c) => c.text || c.label,\r\n ),\r\n ]\r\n .filter(Boolean)\r\n .join('\\n')}`,\r\n };\r\n }\r\n if (confirmResponse?.data?.onClose === 'confirmOkOnClose') {\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(\r\n status,\r\n confirmResponse.data.load?.text?.label ?? '',\r\n );\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n const checkConfirmProcess = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'P',\r\n currentTab: 0,\r\n }),\r\n );\r\n parseMessages(execution, (checkConfirmEntity?.data as any).data);\r\n parseMessages(execution, (checkConfirmProcess?.data as any).data);\r\n\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmEntity.data?.form);\r\n }\r\n if (checkConfirmProcess?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmProcess.data?.form);\r\n }\r\n if (confirmResponse?.data?.pathSelection) {\r\n return buildPathSelection(\r\n execution,\r\n status,\r\n confirmResponse.data.load!.form!,\r\n );\r\n }\r\n\r\n if (confirmResponse?.data?.groupSelection === true) {\r\n return buildPoolSelection(\r\n execution,\r\n status,\r\n confirmResponse.data.load!.form!,\r\n );\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_WIZARD',\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\nasync function checkWizard(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkWizardResponse = await post<TCheckWizardResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWizzard',\r\n }),\r\n {\r\n postData: {},\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n allowAfterFinish: true,\r\n },\r\n );\r\n\r\n if (checkWizardResponse?.data?.url) {\r\n getWindow(execution).location.assign(checkWizardResponse?.data?.url);\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: false,\r\n };\r\n } else {\r\n const { location } = getWindow(execution).parent;\r\n if (getWindow(execution).ON_FINISH === '1') {\r\n getWindow(execution).parent?.parent?.close();\r\n } else if (getWindow(execution).ON_FINISH === '2') {\r\n location.reload();\r\n } else if (\r\n (getWindow(execution).frameElement as HTMLIFrameElement)?.src.match(\r\n /frompanel/i,\r\n )\r\n ) {\r\n (getWindow(execution).frameElement as HTMLIFrameElement).src = (\r\n getWindow(execution).frameElement as HTMLIFrameElement\r\n ).src;\r\n } else if (getWindow(execution).ON_FINISH === '5') {\r\n getWindow(execution).location.assign(getWindow(execution).ON_FINISH_URL);\r\n } else {\r\n let tabContainer =\r\n getWindow(execution).parent.document.getElementById('tabContainer');\r\n if (tabContainer == null) {\r\n tabContainer =\r\n getWindow(execution).top!.document.getElementById('tabContainer');\r\n }\r\n\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n\r\n if (tabContainer) {\r\n (tabContainer as any).removeActiveTab();\r\n } else {\r\n execution.notifications.closeTab();\r\n }\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: false,\r\n };\r\n }\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CHECK_WIZARD: checkWizard,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(execution, result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n execution.notifications.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution } from '..';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmEntityResponse } from '../types';\r\nimport { arrayOrArray, Url } from '@apia/util';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { FlowModal, ShowSign, ShowSignSelection, Status } from '../FlowModals';\r\n\r\nexport type ConfirmChecker = (\r\n execution: Execution,\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep = 'CHECK_LOCK' | 'CONFIRM' | 'CHECK_SIGN' | 'SIGN';\r\n\r\nasync function checkSign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n }[];\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1] === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n };\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...execution.getEntity().getConfirmParams(),\r\n ...execution.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmEntityResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: getWindow(execution).appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (confirmResponse?.data?.sysMessages?.message) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n };\r\n }\r\n if (confirmResponse?.data?.load?.text?.label) {\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmEntity.data?.form);\r\n }\r\n\r\n const url = arrayOrArray(confirmResponse.data.actions?.action.param)[1];\r\n\r\n if (url === 'callNavigateClose') {\r\n (getWindow(execution)?.top?.ApiaUtil as any).tabs.currentTab.close(true);\r\n } else {\r\n const c = new Url(url);\r\n\r\n getWindow(execution).location.assign(\r\n makeApiaUrl(execution, {\r\n ajaxUrl: c.base,\r\n action: c.getParameter('action') as string,\r\n }),\r\n );\r\n (getWindow(execution)?.top?.ApiaUtil as any).notifications.notify({\r\n message: confirmResponse?.data?.load?.text?.label,\r\n type: 'success',\r\n });\r\n }\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirmEntity(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const step = result.step as keyof typeof checkers;\r\n const checker = checkers[step];\r\n\r\n if (!checker) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: `Invalid confirm step: ${String(result.step)}`,\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n\r\n const checkerResult = await checker(execution, result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n execution.notifications.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { InitialData } from '../InitialData';\r\nimport { getLabel, labels } from '../../util/labels/labels';\r\nimport { Form } from './FormsExecution/Form';\r\nimport { TFormEventName, TFrmParent } from '../InitialData/types/TApiaForm';\r\nimport { FieldsMapping, defaultFieldsMap } from './FormsExecution/fieldsMap';\r\nimport { Notifications } from '../Notifications';\r\nimport { MessageNotification } from '../Notifications/MessageNotification';\r\nimport { Process } from './Process';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Field } from './FormsExecution/Field';\r\nimport { makeApiaUrl, post, get, parseXml } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport {\r\n arrayOrArray,\r\n EventEmitter,\r\n noNaN,\r\n NotificationType,\r\n postNavigation,\r\n} from '@apia/util';\r\nimport { Observations } from './Observations';\r\nimport { FlowModal, Status } from './FlowModals/FlowModal';\r\nimport { Captcha } from './FormsExecution/fields';\r\nimport { getCurrentTabsString } from '../../util/app/getCurrentTabsString';\r\nimport {\r\n ExecutionState,\r\n FieldError,\r\n TAdmEntityEvent,\r\n TFetchTaskActionResponse,\r\n} from './types';\r\nimport { parseFakeJSON } from '../../util/other/parseFakeJSON';\r\nimport { confirm } from './FlowModals/confirmFlow';\r\nimport { confirmEntity } from './EntityFlowModals/confirmFlow';\r\nimport { getWindow } from '../../util/dom/getWindow';\r\nimport { ShowSignSelection } from './FlowModals';\r\nimport {\r\n TModalConfig,\r\n UploaderModalController,\r\n} from '@apia/uploader-controller';\r\n\r\ninterface TExecutionErrors {\r\n onClose: string;\r\n sysMessages: {\r\n message: {\r\n text: string;\r\n type?: string;\r\n title?: string;\r\n }[];\r\n };\r\n sysExceptions: {\r\n exception: {\r\n label: string;\r\n text: string;\r\n }[];\r\n };\r\n exceptions: {\r\n exception: {\r\n label: string;\r\n text: string;\r\n }[];\r\n };\r\n}\r\n\r\nexport function parseNotificationType(\r\n str: string | undefined,\r\n): NotificationType {\r\n let type: NotificationType = 'warning';\r\n switch (str) {\r\n case '1':\r\n type = 'success';\r\n break;\r\n case '2':\r\n type = 'warning';\r\n break;\r\n case '3':\r\n type = 'error';\r\n break;\r\n case '4':\r\n type = 'modal';\r\n break;\r\n case '5':\r\n type = 'info';\r\n break;\r\n }\r\n return type;\r\n}\r\n\r\nexport type TExecutionConfig = {\r\n canConfirm: boolean;\r\n canGoBack: boolean;\r\n canGoForward: boolean;\r\n canSave: boolean;\r\n canFree: boolean;\r\n canDelegate: boolean;\r\n canClose: boolean;\r\n canShare: boolean;\r\n isEntity?: boolean;\r\n};\r\nexport type TModalSize =\r\n | 'editGrid'\r\n | 'sm'\r\n | 'md'\r\n | 'md-fixed'\r\n | 'lg'\r\n | 'lg-fixed'\r\n | 'xl'\r\n | 'xl-fixed'\r\n | 'xxl'\r\n | 'xxxl'\r\n | 'xxxl-fixed'\r\n | 'flex'\r\n | 'cal'\r\n | 'finder'\r\n | 'fileModal';\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/'/g, \"'\")\r\n .replace(/"/g, '\"')\r\n .replace(/>/g, '>')\r\n .replace(/</g, '<')\r\n .replace(/&/g, '&');\r\n }\r\n return '';\r\n};\r\n\r\nexport type TExecutionEnvironment = {\r\n fieldsMapping?: FieldsMapping;\r\n window: Window;\r\n document: Document;\r\n headers: any;\r\n properties?: {\r\n taskName: string;\r\n processName: string;\r\n };\r\n openUploaderModal?: (execution: UploaderModalController) => unknown;\r\n};\r\n\r\nexport class Execution extends EventEmitter<{\r\n flow:\r\n | 'previous'\r\n | 'confirm'\r\n | 'next'\r\n | 'save'\r\n | 'release'\r\n | 'share'\r\n | 'viewDocs'\r\n | 'print'\r\n | 'delegate';\r\n sendToDesktop: null;\r\n hideFormModal: Form;\r\n showFormAsModal: { form: Form; size?: TModalSize };\r\n renderComponent: {\r\n form: Form;\r\n componentName: string;\r\n el: HTMLElement;\r\n };\r\n adminEntity: TAdmEntityEvent;\r\n}> {\r\n public fieldsMapping: FieldsMapping;\r\n private entity!: Entity;\r\n private process!: Process;\r\n private observations!: Observations;\r\n private executedOnLoadEvents = false;\r\n public executionConfig: TExecutionConfig | null = null;\r\n public lastFieldFocusedId: string | null = null;\r\n private _steps: {\r\n title: string;\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[] = [];\r\n private _currentStep: number = 1;\r\n private _stepCount: number = 1;\r\n public readonly notifications: Notifications;\r\n private lastModalReturn: string[] = [];\r\n private _pendingPromises = new Set<Promise<boolean>>();\r\n\r\n constructor(\r\n public environment: TExecutionEnvironment,\r\n public renderers?: TModalConfig['renderers'],\r\n ) {\r\n super();\r\n\r\n this.fieldsMapping = { ...defaultFieldsMap, ...environment.fieldsMapping };\r\n\r\n this.notifications = new Notifications(this);\r\n\r\n makeObservable(this, { state: observable });\r\n\r\n setTimeout(() => {\r\n this.entity = new Entity(this);\r\n this.process = new Process(this);\r\n this.observations = new Observations(this);\r\n }, 0);\r\n }\r\n\r\n protected formsById = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n protected forms = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n\r\n state: {\r\n executionState: ExecutionState;\r\n locked: number;\r\n hasChangedAnything: boolean;\r\n } = {\r\n executionState: ExecutionState.LOADING,\r\n locked: 0,\r\n hasChangedAnything: false,\r\n };\r\n\r\n addPendingPromise(promise: Promise<boolean>) {\r\n this._pendingPromises.add(promise);\r\n promise.finally(() => {\r\n this._pendingPromises.delete(promise);\r\n });\r\n }\r\n\r\n public getErrorsList() {\r\n const entityErrors: FieldError[] = [];\r\n this.forms.E.forEach((form) => {\r\n entityErrors.push(...form.getErrorsList());\r\n });\r\n\r\n const processErrors: FieldError[] = [];\r\n this.forms.P.forEach((form) => {\r\n processErrors.push(...form.getErrorsList());\r\n });\r\n return [...entityErrors, ...processErrors];\r\n }\r\n\r\n getAllForms() {\r\n return [...this.forms.E.values(), ...this.forms.P.values()];\r\n }\r\n\r\n private hasInitializedFormsTabs: Record<TFrmParent, boolean> = {} as Record<\r\n TFrmParent,\r\n boolean\r\n >;\r\n\r\n initializeFormsTabs(frmParent: TFrmParent, cb: () => unknown) {\r\n if (!this.hasInitializedFormsTabs[frmParent]) {\r\n this.hasInitializedFormsTabs[frmParent] = true;\r\n cb();\r\n }\r\n }\r\n\r\n getFormsByType(type: TFrmParent) {\r\n return [...this.forms[type].values()];\r\n }\r\n getFormByName(formName: string, frmParent?: TFrmParent) {\r\n if (frmParent) {\r\n return this.forms[frmParent].get(formName);\r\n } else {\r\n return this.forms.E.get(formName) || this.forms.P.get(formName);\r\n }\r\n }\r\n getFormById(formId: string | number, frmParent?: TFrmParent) {\r\n if (frmParent) return this.formsById[frmParent].get(String(formId));\r\n return (\r\n this.formsById.E.get(String(formId)) ||\r\n this.formsById.P.get(String(formId))\r\n );\r\n }\r\n get currentStep() {\r\n return this._currentStep;\r\n }\r\n get steps() {\r\n return this._steps;\r\n }\r\n public getEntity() {\r\n this.entity.init();\r\n\r\n return this.entity;\r\n }\r\n public getProcess() {\r\n this.process.init();\r\n\r\n return this.process;\r\n }\r\n public getObservations() {\r\n this.observations.init();\r\n\r\n return this.observations;\r\n }\r\n public getCurrentTask() {\r\n return new Task({ task: { name: 'TODO' } });\r\n }\r\n\r\n private mustRenderForms: string[] = [];\r\n\r\n public get locked() {\r\n return this.state.locked > 0;\r\n }\r\n\r\n public lock() {\r\n this.state.locked++;\r\n let unlocked = false;\r\n return () => {\r\n if (!unlocked) {\r\n unlocked = true;\r\n this.state.locked--;\r\n }\r\n };\r\n }\r\n\r\n public async run(executionConfig: TExecutionConfig) {\r\n const unlock = this.lock();\r\n try {\r\n this._stepCount = noNaN(getWindow(this).STEP_QTY);\r\n this._currentStep = noNaN(getWindow(this).CURRENT_STEP);\r\n this.executionConfig = executionConfig;\r\n this.environment.properties = {\r\n taskName: getWindow(this).CURRENT_TASK_NAME || '',\r\n processName: getWindow(this).CURRENT_PROCESS_NAME || '',\r\n };\r\n\r\n const errXML = unescapeMarkup(getWindow(this).EXEC_ERRORS);\r\n\r\n if (errXML) {\r\n const obj: TExecutionErrors = parseXml(errXML);\r\n arrayOrArray(obj.sysMessages?.message).forEach((c) =>\r\n this.notifications.add(\r\n new MessageNotification({\r\n message: c.text,\r\n title: c.title,\r\n type: parseNotificationType(c.type),\r\n }),\r\n ),\r\n );\r\n [\r\n ...arrayOrArray(obj.exceptions?.exception),\r\n ...arrayOrArray(obj.sysExceptions?.exception),\r\n ].forEach((c) =>\r\n this.notifications.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'error',\r\n stackTrace: c.label,\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n for (let i = 1; i < Number(getWindow(this).STEP_QTY) + 1; i++) {\r\n if (i < this._currentStep) {\r\n this._steps.push({\r\n title: `${getLabel(this, 'lblTraStep').text} ${i}`,\r\n stepNumber: i,\r\n status: 'completed',\r\n });\r\n }\r\n if (i > this._currentStep && i <= this._stepCount) {\r\n this._steps.push({\r\n title: `${getLabel(this, 'lblTraStep').text} ${i}`,\r\n stepNumber: i,\r\n status: 'pending',\r\n });\r\n }\r\n if (i === this._currentStep) {\r\n this._steps.push({\r\n title: `${getLabel(this, 'lblTraStep').text} ${i}`,\r\n stepNumber: i,\r\n status: 'current',\r\n });\r\n }\r\n }\r\n const res = await InitialData.getFormsDefinition(this);\r\n\r\n try {\r\n for await (const formDefinition of res) {\r\n const props = parseFakeJSON(formDefinition.properties);\r\n if (\r\n !props.frmTab &&\r\n !props.frmHidden &&\r\n arrayOrArray(formDefinition.field).every(\r\n (c) => !c.properties?.visibilityHidden,\r\n ) &&\r\n (arrayOrArray(formDefinition.field).length > 0 ||\r\n arrayOrArray(formDefinition.customField).length > 0)\r\n ) {\r\n this.mustRenderForms.push(\r\n formDefinition.frmParent + '_' + formDefinition.formName,\r\n );\r\n }\r\n }\r\n for await (const formDefinition of res) {\r\n const newForm = new Form(this, formDefinition);\r\n await newForm.init();\r\n\r\n if (formDefinition.frmParent === 'E') {\r\n this.forms.E.set(formDefinition.formName, newForm);\r\n this.formsById.E.set(String(formDefinition.id), newForm);\r\n } else {\r\n this.forms.P.set(formDefinition.formName, newForm);\r\n this.formsById.P.set(String(formDefinition.id), newForm);\r\n }\r\n }\r\n\r\n this.state.executionState =\r\n this.mustRenderForms.length === 0\r\n ? ExecutionState.RUNNING\r\n : ExecutionState.RENDERING;\r\n\r\n await this.fireEvents('onLoad');\r\n this.executedOnLoadEvents = true;\r\n if (\r\n this.mustRenderForms.length === 0 &&\r\n this.state.executionState === ExecutionState.RENDERING\r\n ) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n } catch (e) {\r\n this.state.executionState = ExecutionState.FINISHED_WITH_ERROR;\r\n throw e;\r\n }\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n\r\n protected getHiddenForms() {\r\n const hiddenForms = this.getAllForms().filter((form) => {\r\n return form.properties.frmHidden;\r\n });\r\n return hiddenForms;\r\n }\r\n\r\n public markFormAsRendered(frmParent: string, frmName: string) {\r\n this.mustRenderForms = this.mustRenderForms.filter(\r\n (c) => c !== frmParent + '_' + frmName,\r\n );\r\n if (this.mustRenderForms.length === 0 && this.executedOnLoadEvents) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n }\r\n\r\n public async delegate() {\r\n console.warn('Delegate not implemented yet');\r\n }\r\n public async shareSocial() {\r\n console.warn('shareSocial not implemented yet');\r\n }\r\n\r\n flow = {\r\n back: () => {\r\n this.emit('flow', 'previous');\r\n },\r\n confirm: () => {\r\n this.emit('flow', 'confirm');\r\n },\r\n next: () => {\r\n this.emit('flow', 'next');\r\n },\r\n previous: () => {\r\n this.emit('flow', 'previous');\r\n },\r\n save: () => {\r\n this.emit('flow', 'save');\r\n },\r\n release: () => {\r\n this.emit('flow', 'release');\r\n },\r\n delegate: () => {\r\n this.emit('flow', 'delegate');\r\n },\r\n share: () => {\r\n this.emit('flow', 'share');\r\n },\r\n viewDocs: () => {\r\n this.emit('flow', 'viewDocs');\r\n },\r\n print: () => {\r\n this.emit('flow', 'print');\r\n },\r\n };\r\n\r\n sendToDesktop() {\r\n this.emit('sendToDesktop', null);\r\n }\r\n\r\n public async doBack() {\r\n const canGoBack = this.executionConfig?.canGoBack;\r\n if (canGoBack) {\r\n try {\r\n const nextUrl = makeApiaUrl(this, {\r\n action: 'gotoPrevStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async doConfirm(\r\n status?: Status,\r\n ): Promise<boolean | FlowModal<any> | Field> {\r\n if (status && !status?.step && !status?.finishedWithError) {\r\n return false;\r\n } else {\r\n const validationResult = status !== undefined || (await this.validate());\r\n if (validationResult !== true) {\r\n return validationResult;\r\n }\r\n\r\n if (\r\n this.executionConfig?.isEntity &&\r\n !this.entity.validateAssociations()\r\n ) {\r\n return false;\r\n }\r\n\r\n const isValid =\r\n status !== undefined || (await this.fireEvents('onSubmit'));\r\n const canConfirm = this.executionConfig?.canConfirm && isValid === true;\r\n\r\n if (canConfirm) {\r\n const unlock = this.lock();\r\n try {\r\n const result = await (\r\n this.executionConfig?.isEntity ? confirmEntity : confirm\r\n )(\r\n this,\r\n (status || {\r\n step: 'CHECK_LOCK',\r\n }) as any,\r\n );\r\n\r\n if (result instanceof FlowModal) {\r\n return result;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n } finally {\r\n unlock();\r\n }\r\n } else {\r\n return isValid;\r\n }\r\n }\r\n }\r\n\r\n public async doFree() {\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const data = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'release',\r\n currentTab: getCurrentTabsString(this),\r\n }),\r\n {\r\n postData: serverParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (data?.data?.text) {\r\n this.state.executionState = ExecutionState.FINISHED;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n public async doNext(result?: { confirmed: boolean; signed: boolean }) {\r\n const isValid = await this.validate();\r\n if (isValid === true) {\r\n if (!(await this.fireEvents('onSubmit'))) {\r\n return false;\r\n }\r\n }\r\n if (isValid !== true) return isValid;\r\n\r\n const canGoNext = this.executionConfig?.canGoForward && isValid === true;\r\n\r\n if (canGoNext) {\r\n const unlock = this.lock();\r\n try {\r\n const checkLocksRes = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksRes?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n throw new Error('Failed to check WebDAV document locks.');\r\n }\r\n\r\n // Check signable forms\r\n const checkSignableFormsRes = await post<{\r\n hasForms: boolean;\r\n sign: boolean;\r\n }>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n appletToken: getWindow(this).appletToken,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (checkSignableFormsRes?.status !== 200) {\r\n throw new Error('No signable forms available.');\r\n }\r\n const mustShowSignModal = checkSignableFormsRes?.data?.sign;\r\n\r\n if (mustShowSignModal && !result?.signed) {\r\n return new ShowSignSelection(\r\n checkSignableFormsRes?.data,\r\n async () => {\r\n return '' as Status;\r\n },\r\n );\r\n }\r\n\r\n if (mustShowSignModal && (!result?.confirmed || !result?.signed))\r\n return;\r\n\r\n const nextUrl = makeApiaUrl(this, {\r\n action: 'gotoNextStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n return true;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n }\r\n\r\n public async doPrint() {\r\n getWindow(this).print();\r\n }\r\n\r\n public async doSave() {\r\n const unlock = this.lock();\r\n\r\n try {\r\n const response = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n }),\r\n {\r\n postData: {\r\n ...this.observations.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const canClose = response?.data?.load?.canClose;\r\n if (canClose) {\r\n return response;\r\n }\r\n } finally {\r\n unlock();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getStepTitle(step: number) {\r\n if (this._steps) return this._steps[step];\r\n }\r\n\r\n /**\r\n * Ends the current session\r\n */\r\n public kill() {\r\n ((frameElement as any)?.handleDeadSession as any)?.();\r\n this.state.executionState = ExecutionState.FINISHED;\r\n this.notifications.kill();\r\n }\r\n\r\n public async viewDocs() {\r\n const url = `${\r\n getWindow(this).CONTEXT\r\n }/react/generic/docExecutionModal.jsp?isProcessMonitor=${\r\n getWindow(this).IN_MONITOR_PROCESS ?? 'false'\r\n }&isTaskMonitor=${getWindow(this).IN_MONITOR_TASK ?? 'false'}&isTask=true${\r\n getWindow(this).TAB_ID_REQUEST\r\n }&react=true`;\r\n\r\n const result = await get(this, url);\r\n\r\n if (result && result.data !== null) {\r\n const { data } = result;\r\n return data;\r\n }\r\n }\r\n\r\n public setStepTitle(stepNumber: number, stepTitle: string) {\r\n if (this._steps && this._steps[stepNumber - 1])\r\n this._steps[stepNumber - 1].title = stepTitle;\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const [, c] of this.forms.E) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n for await (const [, c] of this.forms.P) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n\r\n return firstInvalid ?? true;\r\n }\r\n\r\n public setLastModalReturn(value: string[]) {\r\n this.lastModalReturn = value;\r\n }\r\n\r\n public getLastModalReturn() {\r\n return this.lastModalReturn;\r\n }\r\n\r\n private async fireEvents(evt: TFormEventName) {\r\n const unlock = this.lock();\r\n let result = true;\r\n\r\n try {\r\n for await (const f of this.forms.E.values()) {\r\n result = result && (await f.fireScriptEvent(evt));\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n for await (const f of this.forms.P.values()) {\r\n result = result && (await f.fireScriptEvent(evt));\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n public async waitForPendingSyncs(): Promise<void> {\r\n if (this._pendingPromises.size === 0) return;\r\n\r\n const pending = Array.from(this._pendingPromises);\r\n\r\n await Promise.allSettled(pending);\r\n }\r\n}\r\n"],"names":["__publicField","ExecutionState","queryString","parseFakeJSON","IProperty","id","_hasInited","__privateAdd","__privateGet","__privateSet","EventEmitter","result","OriginalUploaderApi","shallowEqual","properties","noNaN","d","_execution","_field","TextAreaField","decodeBase64ToUtf8","checkSign","sign","checkLock","defaultConfirm","checkers"],"mappings":"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"}
|